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 from PyQt4.uic import *
00029 from PyQt4.QtGui import *
00030 from PyQt4.QtCore import *
00031 
00032 from Koo.Common import Common
00033 
00034 from Koo.Screen.Screen import Screen
00035 from Koo.Model.Group import RecordGroup
00036 
00037 (ScreenDialogUi, ScreenDialogBase) = loadUiType( Common.uiPath('screen_dialog.ui') ) 
00038 
00039 class ScreenDialog( QDialog, ScreenDialogUi ):
00040         def __init__(self, parent):
00041                 QWidget.__init__( self, parent )
00042                 ScreenDialogUi.__init__( self )
00043                 self.setupUi( self )
00044 
00045                 self.setMinimumWidth( 800 )
00046                 self.setMinimumHeight( 600 )
00047 
00048                 self.connect( self.pushOk, SIGNAL("clicked()"), self.accepted )
00049                 self.connect( self.pushCancel, SIGNAL("clicked()"), self.rejected )
00050                 self.group = None
00051                 self.record = None
00052                 self.recordId = None
00053                 self._recordAdded = False
00054                 self._context = {}
00055                 self._domain = []
00056 
00057         def setup(self, model, id=None):
00058                 if self.group:
00059                         return
00060                 self.group = RecordGroup( model, context=self._context )
00061                 self.group.setDomain( self._domain )
00062                 self.screen.setRecordGroup( self.group )
00063                 self.screen.setViewTypes( ['form'] )
00064                 if id:
00065                         self._recordAdded = False 
00066                         self.screen.load([id])
00067                 else:
00068                         self._recordAdded = True
00069                         self.screen.new()
00070                 self.screen.display()
00071                 self.layout().insertWidget( 0, self.screen  )
00072                 self.screen.show()
00073 
00074         def setAttributes(self, attrs):
00075                 if ('string' in attrs) and attrs['string']:
00076                         self.setWindowTitle( self.windowTitle() + ' - ' + attrs['string'])
00077 
00078         def setContext(self, context):
00079                 self._context = context
00080 
00081         def setDomain(self, domain):
00082                 self._domain = domain
00083 
00084         def rejected( self ):
00085                 if self._recordAdded:
00086                         self.screen.remove()
00087                 self.reject()
00088 
00089         def accepted( self ):
00090                 self.screen.currentView().store()
00091 
00092                 if self.screen.save():
00093                         self.record = self.screen.currentRecord().name()
00094                         self.recordId = self.screen.currentRecord().id
00095                         self.accept()
00096