SF.net SVN: fclient: [28] trunk/fclient/config.py
Status: Pre-Alpha
Brought to you by:
jurner
From: <jU...@us...> - 2007-11-01 14:55:17
|
Revision: 28 http://fclient.svn.sourceforge.net/fclient/?rev=28&view=rev Author: jUrner Date: 2007-11-01 07:55:22 -0700 (Thu, 01 Nov 2007) Log Message: ----------- added global config module Added Paths: ----------- trunk/fclient/config.py Added: trunk/fclient/config.py =================================================================== --- trunk/fclient/config.py (rev 0) +++ trunk/fclient/config.py 2007-11-01 14:55:22 UTC (rev 28) @@ -0,0 +1,131 @@ +"""Some app wide globals + +""" + +import os +import thread + +from PyQt4 import QtCore +from fclient_lib.qt4ex import assistant, language, settingsbase, resources + +_ = os.path.join +#*********************************************************************** +# +#*********************************************************************** +OrgName = 'Juergen Urner' +AppName = 'fclient' + +TranslationPrefixes = ('fclient_', ) + +BaseDir = os.path.dirname(os.path.abspath(__file__)) +DocDir = os.path.join(BaseDir, 'doc') +LanguageDir = os.path.join(BaseDir, 'lang') +ResourceDir = os.path.join(BaseDir, 'res') + +AssistantProfile = _(DocDir, 'assistant.adp') +DocPages = { #TODO: just sample code here + "Index": _(DocDir, 'index.html'), + "DlgPreferences": _(DocDir, 'dialogs', 'preferences.html'), + } + +#***************************************************************************** +# +#***************************************************************************** +class Config(object): + + def __init__(self, parent): + """ + @ivar assistant: app global user docs management + @ivar defaultDownloadsDir: default directory for downloads + @ivar fcpClient: app global FcpClient + @ivar language: app global language management + @ivar nodeHello: NodeHello message as returned from the client as soon as a connection + is established + @ivar resources: app global resource management + @ivar settings: global settings + + """ + + #TODO: assistant can not handle locale dependend docs yet + self.assistant = assistant.Assistant(parent, profile=AssistantProfile, pages=DocPages) + self.defaultDownloadsDir = os.path.join(BaseDir, 'downloads') + self.fcpClient = None + self.language = language.Language([LanguageDir, ], translationPrefixes=TranslationPrefixes) + self.nodeHello = None + self.resources = resources.Resources([ResourceDir, ], ) + self.settings = settingsbase.Settings(OrgName, AppName) + + self._pollTimer = QtCore.QTimer() + self._connectMethod = None + self._connectTimer = QtCore.QTimer() + QtCore.QObject.connect( + self._connectTimer, + QtCore.SIGNAL('timeout()'), + self.handleFcpConnect + ) + + + def connectFcpNode(self, eventConnectedHandler): + """Establishes a connection to the freenet node + @param eventConnectedHandler: handler to handle the EventClientConnected of the client + @note: the clients EventClientConnected gets automatically connected in the call. So no + need to connect once more. + @note: make shure not to access the 'fcpClient' or 'nodeHello' attrs of the config before + the handler gets called. + """ + if self.fcpClient is None: + # some magic here to determine the client version to use + from fclient_lib.fcp.fcp2_0 import FcpClient + self.fcpClient = FcpClient( + connectionName='', + verbosity=FcpClient.Verbosity.Debug, + ) + self.fcpClient.EventClientDisconnected += self.handleFcpClientDisconnected + QtCore.QObject.connect( + self._pollTimer, + QtCore.SIGNAL('timeout()'), + self.fcpClient.next + ) + self._connectMethod = self.fcpClient.connect() + self.fcpClient.EventClientConnected += eventConnectedHandler + self._connectTimer.start(100) + + else: + cb(self.fcpClient.EventClientConnected, self.nodeHello) + + + def handleFcpConnect(self): + """Handles establishing of the node connection""" + self._connectTimer.stop() + try: + result = self._connectMethod.next() + if result is not None: + self.nodeHello = result + self._pollTimer.start(100) + + except StopIteration: + return + self._connectTimer.start() + + + def handleFcpClientDisconnected(self, params): + """Handles client disconneting""" + self.fcpClient = None + self.nodeHello = None + + + + + + + + + + + + + + + + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |