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 import gettext
00031 from PyQt4.QtCore import *
00032 from PyQt4.QtGui import *
00033 from PyQt4.uic import *
00034 
00035 from Koo import Rpc
00036 
00037 from Koo.Common import Common
00038 from Koo.Common.Settings import *
00039 import copy
00040 
00041 from Koo.Screen.Screen import Screen
00042 from Koo.Model.Group import RecordGroup
00043 
00044 (PreferencesDialogUi, PreferencesDialogBase) = loadUiType( Common.uiPath('preferences.ui') )
00045 
00046 class PreferencesDialog(QDialog, PreferencesDialogUi):
00047         def __init__(self, parent=None):
00048                 QDialog.__init__(self, parent)
00049                 PreferencesDialogUi.__init__(self)
00050                 self.setupUi( self )
00051 
00052                 self.connect( self.pushAccept, SIGNAL('clicked()'), self.slotAccept )
00053 
00054                 self.setWindowTitle( _('User Preferences') )
00055                 QApplication.setOverrideCursor( Qt.WaitCursor )
00056                 QTimer.singleShot( 0, self.initGui )
00057 
00058         def initGui(self):
00059                 actionId = Rpc.session.execute('/object', 'execute', 'res.users', 'action_get', {})
00060                 action = Rpc.session.execute('/object', 'execute', 'ir.actions.act_window', 'read', [actionId], False, Rpc.session.context)[0]
00061 
00062                 viewIds=[]
00063                 if action.get('views', []):
00064                         viewIds=[x[0] for x in action['views']]
00065                 elif action.get('view_id', False):
00066                         viewIds=[action['view_id'][0]]
00067 
00068                 self.group = RecordGroup('res.users')
00069                 self.group.load( [Rpc.session.uid] )
00070                 self.screen.setRecordGroup( self.group )
00071                 self.screen.setupViews( ['form'], [viewIds[0]] )
00072                 self.screen.display( Rpc.session.uid )
00073 
00074                 
00075                 self.adjustSize()
00076                 if self.parent():
00077                         rect = self.parent().geometry()
00078                 else:
00079                         rect = QApplication.desktop().availableGeometry( self )
00080                 self.move( rect.x() + (rect.width() / 2) - (self.width() / 2), 
00081                                 rect.y() + (rect.height() / 2) - (self.height() / 2) )
00082 
00083                 QApplication.restoreOverrideCursor()
00084 
00085         def slotAccept(self):
00086                 if not self.screen.currentRecord().validate():
00087                         return
00088 
00089                 if self.screen.currentRecord().fieldExists( 'context_lang' ):
00090                         Settings.setValue( 'client.language', self.screen.currentRecord().value( 'context_lang' ) )
00091                         Settings.saveToFile()
00092 
00093                 Rpc.session.execute('/object', 'execute', 'res.users', 'write', [Rpc.session.uid], self.screen.get())
00094                 Rpc.session.reloadContext()
00095                 self.accept()