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
00031
00032
00033 from xml.etree.ElementTree import parse, SubElement
00034
00035 import sys, os
00036
00037 if os.name == 'nt':
00038 sys.path.append('.')
00039
00040 from distutils.sysconfig import get_python_lib
00041 terp_path = "/".join([get_python_lib(), 'Koo'])
00042 sys.path.append(terp_path)
00043
00044 from Koo.Common.Settings import Settings
00045 from Koo.Common import CommandLine
00046 from Koo.Common import Localization
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 Settings.loadFromFile()
00061 Settings.loadFromRegistry()
00062 Localization.initializeTranslations(Settings.value('client.language'))
00063
00064 arguments = CommandLine.parseArguments(sys.argv)
00065
00066 Localization.initializeTranslations(Settings.value('client.language'))
00067
00068
00069 imports={}
00070
00071 from PyQt4.QtCore import *
00072 from PyQt4.QtGui import *
00073 from Koo.Common import Notifier, Common
00074 from Koo.Common import DBus
00075
00076
00077 Notifier.errorHandler = Common.error
00078 Notifier.warningHandler = Common.warning
00079 Notifier.concurrencyErrorHandler = Common.concurrencyError
00080
00081
00082
00083
00084
00085 if Common.isKdeAvailable:
00086 from PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs
00087 from PyKDE4.kdeui import KApplication
00088
00089 appName = "Koo"
00090 catalog = ""
00091 programName = ki18n ("Koo")
00092 version = "1.0"
00093 description = ki18n ("KDE OpenObject Client")
00094 license = KAboutData.License_GPL
00095 copyright = ki18n ("(c) 2009 Albert Cervera i Areny")
00096 text = ki18n ("none")
00097 homePage = "www.nan-tic.com"
00098 bugEmail = "albert@nan-tic.com"
00099
00100 aboutData = KAboutData (appName, catalog, programName, version, description,
00101 license, copyright, text, homePage, bugEmail)
00102
00103 KCmdLineArgs.init (arguments, aboutData)
00104
00105 app = KApplication ()
00106 else:
00107 app = QApplication( arguments )
00108
00109 app.setApplicationName( 'Koo POS' )
00110 app.setOrganizationDomain( 'www.NaN-tic.com' )
00111 app.setOrganizationName( 'NaN' )
00112
00113 try:
00114 f = open( Settings.value('koo.stylesheet'), 'r' )
00115 try:
00116 app.setStyleSheet( f.read() )
00117 finally:
00118 f.close()
00119 except:
00120 pass
00121
00122 Localization.initializeQtTranslations(Settings.value('client.language'))
00123
00124
00125 from Koo.Dialogs.KooMainWindow import *
00126 from Koo.Dialogs.WindowService import *
00127 import Koo.Actions
00128
00129 mainWindow = QMainWindow(None, Qt.CustomizeWindowHint)
00130
00131 from Koo.Common import Api
00132
00133 class KooApi(Api.KooApi):
00134 def execute(self, actionId, data={}, type=None, context={}):
00135 Koo.Actions.execute( actionId, data, type, context )
00136
00137 def executeReport(self, name, data={}, context={}):
00138 return Koo.Actions.executeReport( name, data, context )
00139
00140 def executeAction(self, action, data={}, context={}):
00141 Koo.Actions.executeAction( action, data, context )
00142
00143 def executeKeyword(self, keyword, data={}, context={}):
00144 return Koo.Actions.executeKeyword( keyword, data, context )
00145
00146 def createWindow(self, view_ids, model, res_id=False, domain=None,
00147 view_type='form', window=None, context=None, mode=None, name=False, autoReload=False,
00148 target='current'):
00149 WindowService.createWindow( view_ids, model, res_id, domain,
00150 view_type, window, context, mode, name, autoReload, target )
00151
00152 def windowCreated(self, window, target):
00153 mainWindow.setCentralWidget( window )
00154 window.setParent( mainWindow )
00155 window.show()
00156
00157 Api.instance = KooApi()
00158
00159 mainWindow.showFullScreen()
00160
00161 if Settings.value('koo.pos_mode'):
00162 import Koo.Pos
00163 app.installEventFilter( Koo.Pos.PosEventFilter(mainWindow) )
00164
00165 if Settings.value('koo.enter_as_tab'):
00166 from Koo.Common import EnterEventFilter
00167 app.installEventFilter( EnterEventFilter.EnterEventFilter(mainWindow) )
00168
00169 from Koo.Common import ArrowsEventFilter
00170 app.installEventFilter( ArrowsEventFilter.ArrowsEventFilter(mainWindow) )
00171
00172 from Koo.Common import WhatsThisEventFilter
00173 app.installEventFilter( WhatsThisEventFilter.WhatsThisEventFilter(mainWindow) )
00174
00175
00176 if not Settings.value( 'login.url'):
00177 sys.exit( "Error: No connection parameters given." )
00178 if not Settings.value( 'login.db'):
00179 sys.exit( "Error: No database given." )
00180
00181 Rpc.session.login( Settings.value('login.url'), Settings.value('login.db') )
00182
00183 if not Rpc.session.logged():
00184 sys.exit( "Error: Invalid credentials." )
00185
00186 id = Rpc.session.execute('/object', 'execute', 'res.users', 'read', [Rpc.session.uid], ['action_id','name'], Rpc.session.context)
00187
00188
00189
00190 menuId = id[0]['action_id'][0]
00191
00192 Api.instance.execute(menuId)
00193
00194 app.exec_()
00195