00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 from Koo.Common import Api
00031 from Koo.Common import Common
00032 from Koo.Common import Debug
00033 from FormWidget import *
00034 from TreeWidget import *
00035 from WebWidget import *
00036 
00037 from Koo import Rpc
00038 
00039 
00040 def createWindow(view_ids, model, res_id=False, domain=None,
00041                 view_type='form', window=None, context=None, mode=None, name=False, autoReload=False, target='current'):
00042 
00043         if context is None:
00044                 context = {}
00045         context.update(Rpc.session.context)
00046 
00047         if view_type=='form':
00048                 QApplication.setOverrideCursor( Qt.WaitCursor )
00049                 mode = (mode or 'form,tree').split(',')
00050                 try:
00051                         widget = FormWidget(model, res_id, domain, view_type=mode,
00052                                         view_ids = (view_ids or []), 
00053                                         context=context, name=name )
00054                 except Rpc.RpcException, e:
00055                         QApplication.restoreOverrideCursor()
00056                         return
00057                 if target == 'new':
00058                         widget.setStatusBarVisible( False )
00059                 widget.setAutoReload( autoReload )
00060                 QApplication.restoreOverrideCursor()
00061                 Api.instance.windowCreated( widget, target )
00062         elif view_type=='tree':
00063                 QApplication.setOverrideCursor( Qt.WaitCursor )
00064                 try:
00065                         if view_ids and view_ids[0]:
00066                                 view_base =  Rpc.session.execute('/object', 'execute',
00067                                                 'ir.ui.view', 'read', [view_ids[0]],
00068                                                 ['model', 'type'], context)[0]
00069                                 model = view_base['model']
00070                                 view = Rpc.session.execute('/object', 'execute',
00071                                                 view_base['model'], 'fields_view_get', view_ids[0],
00072                                                 view_base['type'],context)
00073                         else:
00074                                 view = Rpc.session.execute('/object', 'execute', model,
00075                                                 'fields_view_get', False, view_type, context)
00076                         win = TreeWidget(view, model, domain, context, name=name)
00077                 except Rpc.RpcException, e:
00078                         QApplication.restoreOverrideCursor()
00079                         return
00080                 QApplication.restoreOverrideCursor()
00081                 Api.instance.windowCreated( win, target )
00082         else:
00083                 Debug.error( 'unknown view type: ' + view_type )
00084 
00085 def createWebWindow(url, title):
00086         url = url or ''
00087         if QApplication.keyboardModifiers() & Qt.ControlModifier:
00088                 QDesktopServices.openUrl( QUrl( url ) )
00089                 return
00090         QApplication.setOverrideCursor( Qt.WaitCursor )
00091         widget = WebWidget()
00092         widget.setTitle( title or _('Web') )
00093         widget.setUrl( QUrl( url ) )
00094         QApplication.restoreOverrideCursor()
00095         Api.instance.windowCreated(widget, 'current')