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.
|