fclient-commit Mailing List for fclient (Page 13)
Status: Pre-Alpha
Brought to you by:
jurner
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(23) |
Nov
(54) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(17) |
Feb
(209) |
Mar
(63) |
Apr
(31) |
May
(7) |
Jun
(39) |
Jul
(390) |
Aug
(122) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
From: <jU...@us...> - 2008-07-19 06:35:57
|
Revision: 670 http://fclient.svn.sourceforge.net/fclient/?rev=670&view=rev Author: jUrner Date: 2008-07-19 06:36:05 +0000 (Sat, 19 Jul 2008) Log Message: ----------- add icon keyword Modified Paths: -------------- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py Modified: trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py =================================================================== --- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-18 03:01:14 UTC (rev 669) +++ trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-19 06:36:05 UTC (rev 670) @@ -35,6 +35,7 @@ text=None, group=None, trigger=None, + icon=None, isCheckable=False, isChecked=False, isEnabled=True, @@ -54,6 +55,8 @@ act.setObjectName(name) act.setCheckable(isCheckable) + if icon is not None: + act.setIcon(icon) if isCheckable: act.setChecked(isChecked) act.setEnabled(isEnabled) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 03:01:05
|
Revision: 669 http://fclient.svn.sourceforge.net/fclient/?rev=669&view=rev Author: jUrner Date: 2008-07-18 03:01:14 +0000 (Fri, 18 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewLogger.py Modified: trunk/fclient/src/fclient/Ui_ViewLogger.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-18 03:00:26 UTC (rev 668) +++ trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-18 03:01:14 UTC (rev 669) @@ -9,7 +9,6 @@ from PyQt4 import QtCore, QtGui from . import config -from . import Ui_View from .lib import fcp2 from .tpls.Ui_ViewLoggerWidgetTpl import Ui_ViewLoggerWidget @@ -116,10 +115,10 @@ ) -class LoggerViewObject(Ui_View.ViewObject): +class LoggerViewObject(config.ViewObject): def __init__(self, parent): - Ui_View.ViewObject. __init__(self, parent) + config.ViewObject. __init__(self, parent) self.name=parent.objectName() self.displayName=self.trUtf8('Logger') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 03:00:17
|
Revision: 668 http://fclient.svn.sourceforge.net/fclient/?rev=668&view=rev Author: jUrner Date: 2008-07-18 03:00:26 +0000 (Fri, 18 Jul 2008) Log Message: ----------- setExclusive(False) for non grouped actions Modified Paths: -------------- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py Modified: trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py =================================================================== --- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-18 02:58:41 UTC (rev 667) +++ trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-18 03:00:26 UTC (rev 668) @@ -45,6 +45,7 @@ self._dummyGroups.append(group) #TODO: is this necessary? act = Action(text, group, userData=userData) group.addAction(act) + group.setExclusive(False) if trigger is not None: self.parent().connect(group, QtCore.SIGNAL('triggered(QAction*)'), trigger) else: @@ -52,8 +53,8 @@ group.addAction(act) act.setObjectName(name) + act.setCheckable(isCheckable) if isCheckable: - act.setCheckable(True) act.setChecked(isChecked) act.setEnabled(isEnabled) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 02:58:32
|
Revision: 667 http://fclient.svn.sourceforge.net/fclient/?rev=667&view=rev Author: jUrner Date: 2008-07-18 02:58:41 +0000 (Fri, 18 Jul 2008) Log Message: ----------- ViewObject is now in config Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewConnection.py Modified: trunk/fclient/src/fclient/Ui_ViewConnection.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-18 02:58:19 UTC (rev 666) +++ trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-18 02:58:41 UTC (rev 667) @@ -7,7 +7,6 @@ from . import config from .lib import fcp2 -from . import Ui_View from .tpls.Ui_ViewConnectionWidgetTpl import Ui_ViewConnectionWidget #********************************************************************************** @@ -57,10 +56,10 @@ ('ConnectionPort', 'UInt', fcp2.Client.DefaultFcpPort, config.SettingScopeUser), ) -class ConnectionViewObject(Ui_View.ViewObject): +class ConnectionViewObject(config.ViewObject): def __init__(self, parent): - Ui_View.ViewObject. __init__(self, parent) + config.ViewObject. __init__(self, parent) self.name=parent.objectName() self.displayName=self.trUtf8('Connection') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 02:58:11
|
Revision: 666 http://fclient.svn.sourceforge.net/fclient/?rev=666&view=rev Author: jUrner Date: 2008-07-18 02:58:19 +0000 (Fri, 18 Jul 2008) Log Message: ----------- ViewObject is now in config Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewBrowser.py Modified: trunk/fclient/src/fclient/Ui_ViewBrowser.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-18 02:57:21 UTC (rev 665) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-18 02:58:19 UTC (rev 666) @@ -12,7 +12,6 @@ from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork from . import config -from . import Ui_View from .lib import fcp2 from .tpls.Ui_ViewBrowserWidgetTpl import Ui_ViewBrowserWidget @@ -114,10 +113,10 @@ ) -class BrowserViewObject(Ui_View.ViewObject): +class BrowserViewObject(config.ViewObject): def __init__(self, parent): - Ui_View.ViewObject. __init__(self, parent) + config.ViewObject. __init__(self, parent) self.name=parent.objectName() self.displayName=self.trUtf8('Browser') @@ -157,8 +156,8 @@ QtWebKit.QWebPage.__init__(self, parent) def acceptNavigationRequest(self, frame, request, type): - print frame, request, type - print request.url() + #print frame, request, type + #print request.url() # have to on query here: "?forcedownload" for dl. "?force=abcdef" for app exec on the link This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 02:57:12
|
Revision: 665 http://fclient.svn.sourceforge.net/fclient/?rev=665&view=rev Author: jUrner Date: 2008-07-18 02:57:21 +0000 (Fri, 18 Jul 2008) Log Message: ----------- View itsself is a view ++ action to show / hide top tabs Modified Paths: -------------- trunk/fclient/src/fclient/Ui_View.py Modified: trunk/fclient/src/fclient/Ui_View.py =================================================================== --- trunk/fclient/src/fclient/Ui_View.py 2008-07-18 02:53:20 UTC (rev 664) +++ trunk/fclient/src/fclient/Ui_View.py 2008-07-18 02:57:21 UTC (rev 665) @@ -21,14 +21,61 @@ #********************************************************************************** # #********************************************************************************** +class Actions(config.ActionsBase): + + def __init__(self, parent): + config.ActionsBase.__init__(self, parent) + + self.action( + name='ActionShowTopTabBar', + text=self.trUtf8('Show top &tabs'), + trigger=parent.onActionShowTabsTop, + isCheckable=True, + isChecked=True, + ) + + +class GlobalFeedback(config.GlobalFeedbackBase): + """wrapper for global statusbar widgets, menus""" + + def __init__(self, parent, idFeedbackParent): + config.GlobalFeedbackBase.__init__(self, parent, idFeedbackParent) + + print self.menuBar + # menus + self.menus = [] + if self.menuBar is not None: + menu = QtGui.QMenu(parent.fcViewObject.displayName, self.menuBar) + parent.populateMenu(menu) + self.menus.append(menu) + self.menuBar.addViewMenu(menu) + + def setVisible(self, flag): + for menu in self.menus: + menu.children()[0].setVisible(flag) + + + class Settings(config.SettingsBase): _key_ = config.IdViewWidget _settings_ = ( ('LastViewTop', 'String', '', config.SettingScopePrivate), ('LastViewBottom', 'String', '', config.SettingScopePrivate), ('SplitterPos', 'ByteArray', QtCore.QByteArray(), config.SettingScopePrivate), + ('ShowTopTabBar', 'Bool', True, config.SettingScopePrivate), + ) + +class ViewObject(config.ViewObject): + + def __init__(self, parent): + config.ViewObject. __init__(self, parent) + + self.name=parent.objectName() + self.displayName=self.trUtf8('View') + self.icon=QtGui.QIcon() + #*********************************************************************** # #*********************************************************************** @@ -39,7 +86,7 @@ IdTabBottom = 'tabBottom' - def __init__(self, parent): + def __init__(self, parent, idFeedbackParent=config.IdMainWindow): QtGui.QWidget.__init__(self, parent) self._isCreated = False @@ -48,18 +95,27 @@ self.setupUi(self) config.ObjectRegistry.register(self) - self.fclientSettings = Settings().restore() + self.fcActions = Actions(self) + self.fcSettings = Settings().restore() + self.fcViewObject = ViewObject(self) + self.fcGlobalFeedback = GlobalFeedback(self, idFeedbackParent) # setup tab widgets - tabTop = self.controlById(self.IdTabTop) - tabTop.removeTab(0) - tabBottom = self.controlById(self.IdTabBottom) - tabBottom.removeTab(0) + tabWidgetTop = self.controlById(self.IdTabTop) + tabWidgetTop.removeTab(0) + tabWidgetBottom = self.controlById(self.IdTabBottom) + tabWidgetBottom.removeTab(0) # setup splitter splitter = self.controlById(self.IdSplitter) - splitter.restoreState(self.fclientSettings.value('SplitterPos')) - self.connect(splitter, QtCore.SIGNAL('splitterMoved(int, int)'), self.handleSplitterMoved) + splitter.restoreState(self.fcSettings.value('SplitterPos')) + self.connect(splitter, QtCore.SIGNAL('splitterMoved(int, int)'), self.onSplitterMoved) + + # setup actions + showTopTabBar = self.fcSettings.value('ShowTopTabBar') + self.fcActions['ActionShowTopTabBar'].setChecked(showTopTabBar) + tabWidgetTop.tabBar().setVisible(showTopTabBar) + def controlById(self, idControl): @@ -67,18 +123,18 @@ def _addViews(self, toTop, *views): - tab = self.controlById(self.IdTabTop) if toTop else self.controlById(self.IdTabBottom) + tabWidget = self.controlById(self.IdTabTop) if toTop else self.controlById(self.IdTabBottom) for view in views: name = view.fcViewObject.name if not name: raise ValueError('view must have a name') if name in self.views: raise ValueError('view with that name is already present: %s' % name) - view.setParent(tab) - i = tab.addTab(view, view.fcViewObject.icon, view.fcViewObject.displayName) - self.views[name] = (tab, view) + view.setParent(tabWidget) + i = tabWidget.addTab(view, view.fcViewObject.icon, view.fcViewObject.displayName) + self.views[name] = (tabWidget, view) - tab.tabBar().setVisible(tab.count() > 1) + #tab.tabBar().setVisible(tab.count() > 1) def addBottomViews(self, *views): @@ -89,13 +145,12 @@ return self._addViews(True, *views) - def viewFromName(self, name): - result = self.views.get(name, None) - if result is not None: - return result[1] - return None - + def populateMenu(self, menu): + menu.addAction(self.fcActions['ActionShowTopTabBar']) + return menu + + def setCurrentView(self, name): result = self.views.get(name, None) if result is not None: @@ -103,6 +158,24 @@ tab.setCurrentWidget(view) return True return False + + + def viewFromName(self, name): + result = self.views.get(name, None) + if result is not None: + return result[1] + return None + + ######################################################### + ## + ######################################################### + def hideEvent(self, event): + self.fcGlobalFeedback.setVisible(False) + + + def showEvent(self, event): + self.fcGlobalFeedback.setVisible(True) + ######################################################### ## @@ -118,36 +191,42 @@ self._isCreated = True # restore current views - tabTop = self.controlById(self.IdTabTop) - lastName = self.fclientSettings.value('LastViewTop') + tabWidgetTop = self.controlById(self.IdTabTop) + lastName = self.fcSettings.value('LastViewTop') self.setCurrentView(lastName) - tabBottom = self.controlById(self.IdTabBottom) - lastName = self.fclientSettings.value('LastViewBottom') + tabWidgetBottom = self.controlById(self.IdTabBottom) + lastName = self.fcSettings.value('LastViewBottom') self.setCurrentView(lastName) # finally connect... not to overwrite settings - self.connect(tabTop, QtCore.SIGNAL('currentChanged(int)'), self.handleTabTopCurrentChanged) - self.connect(tabBottom, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBottomCurrentChanged) + self.connect(tabWidgetTop, QtCore.SIGNAL('currentChanged(int)'), self.onTabTopCurrentChanged) + self.connect(tabWidgetBottom, QtCore.SIGNAL('currentChanged(int)'), self.onTabBottomCurrentChanged) ######################################################### ## ######################################################### - def handleSplitterMoved(self, pos, index): + def onActionShowTabsTop(self, action): + tabWidgetTop = self.controlById(self.IdTabTop) + tabWidgetTop.tabBar().setVisible(action.isChecked()) + self.fcSettings.setValues(ShowTopTabBar=action.isChecked()) + + + def onSplitterMoved(self, pos, index): splitter = self.controlById(self.IdSplitter) - self.fclientSettings.setValues(SplitterPos=splitter.saveState()) + self.fcSettings.setValues(SplitterPos=splitter.saveState()) - def handleTabTopCurrentChanged(self, index): - tab = self.controlById(self.IdTabTop) - view = tab.currentWidget() - self.fclientSettings.setValues(LastViewTop=view.fcViewObject.name) + def onTabTopCurrentChanged(self, index): + tabWidget = self.controlById(self.IdTabTop) + view = tabWidget.currentWidget() + self.fcSettings.setValues(LastViewTop=view.fcViewObject.name) - def handleTabBottomCurrentChanged(self, index): + def onTabBottomCurrentChanged(self, index): tab = self.controlById(self.IdTabBottom) view = tab.currentWidget() - self.fclientSettings.setValues(LastViewBottom=view.fcViewObject.name) + self.fcSettings.setValues(LastViewBottom=view.fcViewObject.name) #********************************************************************************** # @@ -155,7 +234,7 @@ #NOTE: to self. no need to register views to config.ObjectRegistry. they are just # opaque objects private to ViewWidget class View(object): - """base class for views handled by L{ViewWidget}""" + """base class for views ond by L{ViewWidget}""" def __init__(self): raise NotImplemetedError() @@ -181,19 +260,7 @@ @return: (str) id """ raise NotImplemetedError() - -class ViewObject(QtCore.QObject): - """base class for view objects""" - - def __init__(self, parent): - QtCore.QObject.__init__(self, parent) - - self.name = '' #unique name of the view - self.displayName = '' # name as shown t the user - self.icon = None # QIcon associated to the view - - #********************************************************************************** # #********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-18 02:53:10
|
Revision: 664 http://fclient.svn.sourceforge.net/fclient/?rev=664&view=rev Author: jUrner Date: 2008-07-18 02:53:20 +0000 (Fri, 18 Jul 2008) Log Message: ----------- config seems to be a good place for ViewObject() Modified Paths: -------------- trunk/fclient/src/fclient/config.py Modified: trunk/fclient/src/fclient/config.py =================================================================== --- trunk/fclient/src/fclient/config.py 2008-07-17 16:07:27 UTC (rev 663) +++ trunk/fclient/src/fclient/config.py 2008-07-18 02:53:20 UTC (rev 664) @@ -127,5 +127,13 @@ pass +class ViewObject(QtCore.QObject): + """base class for view objects""" + def __init__(self, parent): + QtCore.QObject.__init__(self, parent) + + self.name = '' #unique name of the view + self.displayName = '' # name as shown t the user + self.icon = None # QIcon associated to the view \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 16:08:05
|
Revision: 663 http://fclient.svn.sourceforge.net/fclient/?rev=663&view=rev Author: jUrner Date: 2008-07-17 16:07:27 +0000 (Thu, 17 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewLogger.py Modified: trunk/fclient/src/fclient/Ui_ViewLogger.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-17 16:06:23 UTC (rev 662) +++ trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-17 16:07:27 UTC (rev 663) @@ -27,12 +27,12 @@ self.action( name='ActionLoggerClear', text=self.trUtf8('C&lear'), - trigger=parent.handleActionLoggerClear, + trigger=parent.onActionLoggerClear, ) groupVerbosity = self.group( name='GroupVerbosity', - trigger=parent.handleGroupVerbosityTriggered, + trigger=parent.onGroupVerbosityTriggered, isExclusive=True, ) self.action( @@ -79,7 +79,7 @@ # menus self.menus = [] if self.menuBar is not None: - menu = QtGui.QMenu(parent.fclientViewObject.displayName, self.menuBar) + menu = QtGui.QMenu(parent.fcViewObject.displayName, self.menuBar) parent.populateMenu(menu) self.menus.append(menu) self.menuBar.addViewMenu(menu) @@ -154,29 +154,29 @@ self.setupUi(self) config.ObjectRegistry.register(self) - self.fclientActions = Actions(self) - self.fclientSettings = Settings(self).restore() - self.fclientViewObject = LoggerViewObject(self) - self.fclientGlobalFeedback = GlobalFeedback(self, idFeedbackParent) + self.fcActions = Actions(self) + self.fcSettings = Settings(self).restore() + self.fcViewObject = LoggerViewObject(self) + self.fcGlobalFeedback = GlobalFeedback(self, idFeedbackParent) # setup editbox #NOTE: do not move to showEvent(). we want to be up and alive as soon as possible to catch logs ed = self.controlById(self.IdEdLogger) - ed.document().setMaximumBlockCount(self.fclientSettings.value('MaxLines')) + ed.document().setMaximumBlockCount(self.fcSettings.value('MaxLines')) ed.contextMenuEvent = self.loggerContextMenuEvent - self.connect(ed, QtCore.SIGNAL('textChanged()'), self.handleLoggerTextChanged) + self.connect(ed, QtCore.SIGNAL('textChanged()'), self.onLoggerTextChanged) # setup logger self.loggingHandler = MyLoggingHandler(self.addRecord) logging.getLogger('').addHandler(self.loggingHandler) # setup actions - verbosity = self.fclientSettings.value('Verbosity').title() - action = self.fclientActions.get(self.fclientActions.PrefixVerbosity + verbosity, None) + verbosity = self.fcSettings.value('Verbosity').title() + action = self.fcActions.get(self.fcActions.PrefixVerbosity + verbosity, None) if action is None: - verbosity = self.fclientSettings.restoreDefaults('Verbosity')['Verbosity'] - action = self.fclientActions.get(self.fclientActions.PrefixVerbosity + verbosity, None) + verbosity = self.fcSettings.restoreDefaults('Verbosity')['Verbosity'] + action = self.fcActions.get(self.fcActions.PrefixVerbosity + verbosity, None) if action is None: raise ValueError('default verbosity action "%s" not found. WTF?' % self.actions.PrefixVerbosity + verbosity) action.trigger() @@ -189,7 +189,7 @@ ed = self.controlById(self.IdEdLogger) fmt = ed.currentCharFormat() - colorFg = self.fclientSettings.value(self.fclientSettings.PrefixVerbosityColorFg + record.levelname) + colorFg = self.fcSettings.value(self.fcSettings.PrefixVerbosityColorFg + record.levelname) fmt.setForeground(QtGui.QBrush(colorFg)) ed.setCurrentCharFormat(fmt) @@ -202,9 +202,9 @@ def populateMenu(self, menu): - menu.addAction(self.fclientActions['ActionLoggerClear']) + menu.addAction(self.fcActions['ActionLoggerClear']) subMenu = menu.addMenu(self.trUtf8('Verbosity')) - subMenu.addActions(self.fclientActions['GroupVerbosity'].actions()) + subMenu.addActions(self.fcActions['GroupVerbosity'].actions()) return menu ######################################### @@ -234,31 +234,31 @@ def hideEvent(self, event): - self.fclientGlobalFeedback.setVisible(False) + self.fcGlobalFeedback.setVisible(False) def showEvent(self, event): - self.fclientGlobalFeedback.setVisible(True) + self.fcGlobalFeedback.setVisible(True) if self._isCreated: return self._isCreated = True ######################################### - ## event handlers + ## event onrs ######################################### - def handleActionLoggerClear(self, action): + def onActionLoggerClear(self, action): self.controlById(self.IdEdLogger).clear() - def handleGroupVerbosityTriggered(self, action): - nameVerbosity = action.objectName()[len(self.fclientActions.PrefixVerbosity):] - self.fclientSettings.setValues(Verbosity=nameVerbosity) + def onGroupVerbosityTriggered(self, action): + nameVerbosity = action.objectName()[len(self.fcActions.PrefixVerbosity):] + self.fcSettings.setValues(Verbosity=nameVerbosity) logging.getLogger().setLevel(action.userData()) - def handleLoggerTextChanged(self): + def onLoggerTextChanged(self): ed = self.controlById(self.IdEdLogger) - self.fclientActions['ActionLoggerClear'].setEnabled(not ed.document().isEmpty()) + self.fcActions['ActionLoggerClear'].setEnabled(not ed.document().isEmpty()) #********************************************************************************** # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 16:06:24
|
Revision: 662 http://fclient.svn.sourceforge.net/fclient/?rev=662&view=rev Author: jUrner Date: 2008-07-17 16:06:23 +0000 (Thu, 17 Jul 2008) Log Message: ----------- naming ++ this and that Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewConnection.py Modified: trunk/fclient/src/fclient/Ui_ViewConnection.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-17 16:04:41 UTC (rev 661) +++ trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-17 16:06:23 UTC (rev 662) @@ -27,7 +27,7 @@ # menus self.menus = [] if self.menuBar is not None: - menu = QtGui.QMenu(parent.fclientViewObject.displayName, self.menuBar) + menu = QtGui.QMenu(parent.fcViewObject.displayName, self.menuBar) parent.populateMenu(menu) self.menus.append(menu) self.menuBar.addViewMenu(menu) @@ -75,17 +75,17 @@ def __init__(self,parent): QtCore.QTimer.__init__(self, parent) self.fcpIterConnect = None - self.connect(self, QtCore.SIGNAL('timeout()'), self.handleNext) + self.connect(self, QtCore.SIGNAL('timeout()'), self.onNext) def start(self, settings): self.fcpIterConnect = config.fcpClient.iterConnect( duration=settings.value('ConnectionTimerMaxDuration'), timeout=0 ) - if not self.handleNext(): + if not self.onNext(): QtCore.QTimer.start(self, settings.value('ConnectionTimerTimeout')) - def handleNext(self): + def onNext(self): try: result = self.fcpIterConnect.next() except StopIteration: @@ -105,12 +105,12 @@ def __init__(self,parent): QtCore.QTimer.__init__(self, parent) - self.connect(self, QtCore.SIGNAL('timeout()'), self.handleNext) + self.connect(self, QtCore.SIGNAL('timeout()'), self.onNext) def start(self, settings): QtCore.QTimer.start(self, settings.value('PollTimerTimeout')) - def handleNext(self): + def onNext(self): if config.fcpClient.isConnected(): result = config.fcpClient.next() @@ -130,20 +130,20 @@ self._isCreated = False self._connectionTimer = ConnectionTimer(self) self._pollTimer = PollTimer(self) - self._fcpEventHandlers = ( - (config.fcpClient.events.ClientConnected, self.handleFcpClientConected), - (config.fcpClient.events.ClientDisconnected, self.handleFcpClientDisconected), + self._fcpEventonrs = ( + (config.fcpClient.events.ClientConnected, self.onFcpClientConected), + (config.fcpClient.events.ClientDisconnected, self.onFcpClientDisconected), ) - config.fcpClient.events += self._fcpEventHandlers + config.fcpClient.events += self._fcpEventonrs self._mainWindowMenus = () self.setupUi(self) config.ObjectRegistry.register(self) - self.fclientSettings = Settings().restore() - self.fclientActions = Actions(self) - self.fclientViewObject = ConnectionViewObject(self) - self.fclientGlobalFeedback = GlobalFeedback(self, idFeedbackParent) + self.fcSettings = Settings().restore() + self.fcActions = Actions(self) + self.fcViewObject = ConnectionViewObject(self) + self.fcGlobalFeedback = GlobalFeedback(self, idFeedbackParent) @@ -161,7 +161,7 @@ ## view methods ######################################### def viewClose(self): - config.fcpClient.events -= self._fcpEventHandlers + config.fcpClient.events -= self._fcpEventonrs ######################################### ## overwritten events @@ -170,31 +170,31 @@ self.viewClose() def hideEvent(self, event): - self.fclientGlobalFeedback.setVisible(False) + self.fcGlobalFeedback.setVisible(False) def showEvent(self, event): - self.fclientGlobalFeedback.setVisible(True) + self.fcGlobalFeedback.setVisible(True) if self._isCreated: return self._isCreated = True # setup host / port boxes edHost = self.controlById(self.IdEdConnectionHost) - edHost.setText(self.fclientSettings.value('ConnectionHost')) + edHost.setText(self.fcSettings.value('ConnectionHost')) spinPort = self.controlById(self.IdSpinConnectionPort) spinPort.setRange(0, 0xFFFF) #TODO: no idea if port range (0, 0xFFFF) this is reasonable - spinPort.setValue(self.fclientSettings.value('ConnectionPort')) + spinPort.setValue(self.fcSettings.value('ConnectionPort')) # setup Connect button and AutoConnect checkbox - doAutoConnect = self.fclientSettings.value('AutoConnect') + doAutoConnect = self.fcSettings.value('AutoConnect') ck = self.controlById(self.IdckAutoConnect) ck.setChecked(doAutoConnect) - self.connect(ck, QtCore.SIGNAL('stateChanged(int)'), self.handleCkAutoConnectStateChanged) + self.connect(ck, QtCore.SIGNAL('stateChanged(int)'), self.onCkAutoConnectStateChanged) bt = self.controlById(self.IdBtConnect) - self.connect(bt, QtCore.SIGNAL('clicked(bool)'), self.handleBtConnectClicked) + self.connect(bt, QtCore.SIGNAL('clicked(bool)'), self.onBtConnectClicked) if doAutoConnect: self.controlById(self.IdBtConnect).click() @@ -208,15 +208,15 @@ ######################################### - ## event handlers + ## event onrs ######################################### - def handleBtConnectClicked(self, isChecked): + def onBtConnectClicked(self, isChecked): bt = self.controlById(self.IdBtConnect) bt.setText(self.trUtf8('Disconnect') if isChecked else self.trUtf8('Connect')) if isChecked: if config.fcpClient.isConnected(): config.fcpClient.close() - self._connectionTimer.start(self.fclientSettings) + self._connectionTimer.start(self.fcSettings) else: self._connectionTimer.stop() if config.fcpClient.isConnected(): @@ -224,19 +224,19 @@ config.fcpClient.close() - def handleCkAutoConnectStateChanged(self, state): - self.fclientSettings.setValues(AutoConnect=state == QtCore.Qt.Checked) + def onCkAutoConnectStateChanged(self, state): + self.fcSettings.setValues(AutoConnect=state == QtCore.Qt.Checked) ######################################### - ## fcp event handlers + ## fcp event onrs ######################################### - def handleFcpClientDisconected(self, event, msg): + def onFcpClientDisconected(self, event, msg): bt = self.controlById(self.IdBtConnect) if bt.isChecked(): bt.click() - def handleFcpClientConected(self, event, msg): - self._pollTimer.start(self.fclientSettings) + def onFcpClientConected(self, event, msg): + self._pollTimer.start(self.fcSettings) #********************************************************************************** # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 16:04:39
|
Revision: 661 http://fclient.svn.sourceforge.net/fclient/?rev=661&view=rev Author: jUrner Date: 2008-07-17 16:04:41 +0000 (Thu, 17 Jul 2008) Log Message: ----------- naming ++ this and that Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewBrowser.py Modified: trunk/fclient/src/fclient/Ui_ViewBrowser.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-17 15:58:56 UTC (rev 660) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-17 16:04:41 UTC (rev 661) @@ -19,6 +19,22 @@ #********************************************************************************** # #********************************************************************************** +def htmlPage(title, *contents): + p = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> + <head> + <title>%s</title> + </head> + <body> + %s + </body> +</html> +''' % (title, ''.join([str(i) for i in contents])) + return p + +#********************************************************************************** +# +#********************************************************************************** class Actions(config.ActionsBase): def __init__(self, parent): @@ -27,7 +43,7 @@ self.action( name='ActionCloseCurrentBrowser', text=self.trUtf8('&Close tab'), - trigger=parent.handleActionCloseCurrentBrowser, + trigger=parent.onActionCloseCurrentBrowser, #isEnabled=False, ) self.action( # context menu only @@ -40,7 +56,7 @@ self.action( name='ActionGoToFProxy', text=self.trUtf8('F&Proxy homepage'), - trigger=parent.handleActionGoToFProxy, + trigger=parent.onActionGoToFProxy, isEnabled=True, ) @@ -53,7 +69,7 @@ # menus self.menus = [] if self.menuBar is not None: - menu = QtGui.QMenu(parent.fclientViewObject.displayName, self.menuBar) + menu = QtGui.QMenu(parent.fcViewObject.displayName, self.menuBar) parent.populateMenu(menu) self.menus.append(menu) self.menuBar.addViewMenu(menu) @@ -136,12 +152,17 @@ #********************************************************************************** # #********************************************************************************** -##class Page(QtWebKit.QWebPage): -## def __init__(self, parent): -## QtWebKit.QWebPage.__init__(self, parent) -## -## def acceptNavigationRequest(self, frame, request, type): -## return True +class Page(QtWebKit.QWebPage): + def __init__(self, parent): + QtWebKit.QWebPage.__init__(self, parent) + + def acceptNavigationRequest(self, frame, request, type): + print frame, request, type + print request.url() + + # have to on query here: "?forcedownload" for dl. "?force=abcdef" for app exec on the link + + return True class Browser(QtWebKit.QWebView): @@ -157,24 +178,24 @@ self.tabWidget = tabWidget self.lastProgress = 0 self.lastStatusMessage = self.trUtf8('Waiting') - + #TODO: set start page, otherwise the view is never updated settings = self.settings() settings.setAttribute(settings.PluginsEnabled, False) #settings.setAttribute(settings.AutoLoadImages, False) - #page = Page(self) - #self.setPage(page) - page = self.page() + page = Page(self) + self.setPage(page) + #page = self.page() #page.setLinkDelegationPolicy(page.DelegateAllLinks) - self.connect(self, QtCore.SIGNAL('loadStarted()'), self.handleLoadStarted) - self.connect(self, QtCore.SIGNAL('loadProgress(int)'), self.handleLoadProgress) - self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.handleLoadFinished) - self.connect(self, QtCore.SIGNAL('statusBarMessage(const QString &)'), self.handleStatusBarMessage) - self.connect(self, QtCore.SIGNAL('urlChanged(const QUrl &)'), self.handleUrlChanged) - self.connect(self, QtCore.SIGNAL('titleChanged(const QString &)'), self.handleTitleChanged) - self.connect(self, QtCore.SIGNAL('iconChanged()'), self.handleIconChanged) + self.connect(self, QtCore.SIGNAL('loadStarted()'), self.onLoadStarted) + self.connect(self, QtCore.SIGNAL('loadProgress(int)'), self.onLoadProgress) + self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.onLoadFinished) + self.connect(self, QtCore.SIGNAL('statusBarMessage(const QString &)'), self.onStatusBarMessage) + self.connect(self, QtCore.SIGNAL('urlChanged(const QUrl &)'), self.onUrlChanged) + self.connect(self, QtCore.SIGNAL('titleChanged(const QString &)'), self.onTitleChanged) + self.connect(self, QtCore.SIGNAL('iconChanged()'), self.onIconChanged) self.setStatusMessage(self.lastStatusMessage) self.setProgress(self.lastProgress) @@ -240,37 +261,59 @@ self.globalFeedback.setProgress(percent) - def handleLoadStarted(self): + def onLoadStarted(self): self.setProgress(0) self.setStatusMessage(self.trUtf8('Loading')) - def handleLoadProgress(self, percent): + def onLoadProgress(self, percent): self.setProgress(percent) - def handleLoadFinished(self, flag): + def onLoadFinished(self, ok): self.setProgress(100) - self.setStatusMessage(self.trUtf8('Complete')) + if ok: + self.setStatusMessage(self.trUtf8('Complete')) + else: + self.setStatusMessage(self.trUtf8('Error')) + self.setProgress(0) + # something went wrong. most likely fProxy can not be reached + # + # no access to the Dom, so we dump some html for feedback + #TODO: loadFinished() never arrives, so the status bar gets stuck a x percent + #TODO: there are more reasons why the request may have failed. we don't get any info + page = htmlPage( + self.trUtf8('Error'), + '<h3>%s</h3>' % self.trUtf8('Request failed'), + self.trUtf8('''most likely fProxy can not be reached. check your if fProxy is running + and check your node config if host and port are ok. hint: this browser can currently + not deal with ipv6 addresses'''), + + '''<br><div style="margin-top: 2em; font-style: italic; text-indent: 1em"> + congratulations. you validatet. is it still "we are stuck at 90%"? how could you ever be certain? try it. + </div>''' + ) + self.setHtml(page) + + - - def handleStatusBarMessage(self, text): + def onStatusBarMessage(self, text): if not text.isEmpty(): self.setStatusMessage(text) - def handleUrlChanged(self, url): + def onUrlChanged(self, url): if self.navBar is not None and self.isCurrentBrowser(): self.navBar.setText(url.toString()) - def handleIconChanged(self): + def onIconChanged(self): i = self.tabIndex() if i > -1: self.tabWidget.setTabIcon(i, self.icon) - def handleTitleChanged(self, text): + def onTitleChanged(self, text): # add title to tab if self.tabWidget is not None: i = self.tabIndex() @@ -315,29 +358,29 @@ self.setupUi(self) config.ObjectRegistry.register(self) - self.fclientActions = Actions(self) - self.fclientSettings = Settings() - self.fclientViewObject = BrowserViewObject(self) - self.fclientGlobalFeedback = GlobalFeedback(self, idFeedbackParent) + self.fcActions = Actions(self) + self.fcSettings = Settings() + self.fcViewObject = BrowserViewObject(self) + self.fcGlobalFeedback = GlobalFeedback(self, idFeedbackParent) self.fproxyHost = None self.fproxyPort = None - self.fcpEventHandlers = ( - (config.fcpClient.events.ConfigData, self.handleFcpConfigData), + self.fcpEventonrs = ( + (config.fcpClient.events.ConfigData, self.onFcpConfigData), ) - config.fcpClient.events += self.fcpEventHandlers + config.fcpClient.events += self.fcpEventonrs navBar = self.controlById(self.IdEdNavBar) - self.connect(navBar, QtCore.SIGNAL('returnPressed()'), self.handleNavBarReturnPressed) + self.connect(navBar, QtCore.SIGNAL('returnPressed()'), self.onNavBarReturnPressed) # setup tab bar tabWidget = self.controlById(self.IdTabBrowsers) tabWidget.clear() tabWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.connect(tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBrowsersCurrentChanged) - self.connect(tabWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.handleTabBrowsersContextMenuEvent) + self.connect(tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.onTabBrowsersCurrentChanged) + self.connect(tabWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.onTabBrowsersContextMenuEvent) self.newTab(tabText=self.trUtf8('Waiting for fproxy')) @@ -354,9 +397,9 @@ browser = Browser(self, tabWidget=self.controlById(self.IdTabBrowsers), navBar=self.controlById(self.IdEdNavBar), - globalFeedback=self.fclientGlobalFeedback, - browserSettings=self.fclientSettings, - browserActions=self.fclientActions, + globalFeedback=self.fcGlobalFeedback, + browserSettings=self.fcSettings, + browserActions=self.fcActions, ) tabWidget.addTab(browser, tabText) return browser @@ -366,6 +409,7 @@ """loads a page in the current tab @param url: (QUrl) to load. can be a string as well. if '', fproxys homepage is loaded + @return: (bool) True if a browser is available for display, False otherwise """ if self.fproxyHost is None or url is None: return @@ -377,25 +421,40 @@ url.setScheme('http') tabWidget = self.controlById(self.IdTabBrowsers) browser = tabWidget.currentWidget() - if browser is not None: - browser.load(url) + if browser is None: + browser = self.newTab(self.trUtf8('Loading')) + browser.load(url) + + + def setHtml(self, html, baseUrl=None): + """sets the contents of the current browser to the html passed + @arg html: (QString) + @arg baseUrl: (QUrl) if specified, base url to interpret resources relative to + """ + tabWidget = self.controlById(self.IdTabBrowsers) + browser = tabWidget.currentWidget() + if browser is None: + browser = self.newTab(self.trUtf8('Loading')) + baseUrl = QtCore.QUrl() if baseUrl is None else baseUrl + browser.setHtml(html, baseUrl) + #TODO: rework. we need more then one menu def populateMenu(self, menu): - menu.addAction(self.fclientActions['ActionGoToFProxy']) - menu.addAction(self.fclientActions['ActionCloseCurrentBrowser']) + menu.addAction(self.fcActions['ActionGoToFProxy']) + menu.addAction(self.fcActions['ActionCloseCurrentBrowser']) return menu ######################################### ## overwritten events ######################################### def hideEvent(self, event): - self.fclientGlobalFeedback.setVisible(False) + self.fcGlobalFeedback.setVisible(False) def showEvent(self, event): - self.fclientGlobalFeedback.setVisible(True) + self.fcGlobalFeedback.setVisible(True) if self._isCreated: return @@ -407,47 +466,57 @@ ######################################### - ## fcp event handlers + ## fcp event onrs ######################################### #TODO: browser should be disabled untill config data has arrived. #disable navbar, tool buttons, actions. on second thought.. we'll see. - def handleFcpConfigData(self, event, msg): + def onFcpConfigData(self, event, msg): self.fproxyHost = None self.fproxyPort = None #TODO: give feedback in case fproxy is disabled - if msg.get('current.fproxy.enabled'): - fproxyHosts = msg.get('current.fproxy.bindTo') - fproxyPort = msg.get('current.fproxy.port') - if fproxyHosts: - #TODO: ups, looks like we can not deal with ipv6 addrs - ##self.fproxyHost = fproxyHosts[1] - self.fproxyHost = fproxyHosts[0] - self.fproxyPort = fproxyPort - + if not msg.get('current.fproxy.enabled'): + page = htmlPage( + self.trUtf8('Error'), + '<h3>%s</h3>' % self.trUtf8('fProxy is disabled'), + self.trUtf8('''fProxy must be enabled and running to browse freenet. check your node config.'''), + ) + self.setHtml(page) + return + + fproxyHosts = msg.get('current.fproxy.bindTo') + if fproxyHosts: + #TODO: ups, looks like we can not deal with ipv6 addrs + # do an in depth scan to see wich host might be usable ;-) + for host in fproxyHosts: + if ':'not in host: #TODO: more here + break + self.fproxyHost = host + self.fproxyPort = msg.get('current.fproxy.port') + + # auto load some page if we are starting up if not self._initialConfigDataArrived: self._initialConfigDataArrived = True navBar = self.controlById(self.IdEdNavBar) text = navBar.text() if text.isEmpty(): - self.fclientActions['ActionGoToFProxy'].trigger() + self.fcActions['ActionGoToFProxy'].trigger() else: self.load(text) - ######################################### ## ######################################### - def handleActionCloseCurrentBrowser(self, action): + def onActionCloseCurrentBrowser(self, action): tabWidget = self.controlById(self.IdTabBrowsers) tabWidget.removeTab(tabWidget.currentIndex()) - def handleTabBrowsersContextMenuEvent(self, pt): + def onTabBrowsersContextMenuEvent(self, pt): menu = QtGui.QMenu() - actCloseBrowserUnderMouse = self.fclientActions['ActionCloseBrowserUnderMouse'] + actCloseBrowserUnderMouse = self.fcActions['ActionCloseBrowserUnderMouse'] menu.addAction(actCloseBrowserUnderMouse) tab = self.controlById(self.IdTabBrowsers) @@ -461,7 +530,7 @@ tab.removeTab(i) - def handleTabBrowsersCurrentChanged(self, index): + def onTabBrowsersCurrentChanged(self, index): browser = self.controlById(self.IdTabBrowsers).currentWidget() if browser is None: return @@ -478,7 +547,7 @@ ed = self.controlById(self.IdEdNavBar).setText(browser.url().toString()) - def handleNavBarReturnPressed(self): + def onNavBarReturnPressed(self): ed = self.controlById(self.IdEdNavBar) tabWidget = self.controlById(self.IdTabBrowsers) if not tabWidget.count(): @@ -487,9 +556,9 @@ self.load(ed.text()) - def handleActionGoToFProxy(self, action): + def onActionGoToFProxy(self, action): if self.fproxyHost is None: - #TODO: handle + #TODO: on return url = QtCore.QUrl() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 15:59:50
|
Revision: 660 http://fclient.svn.sourceforge.net/fclient/?rev=660&view=rev Author: jUrner Date: 2008-07-17 15:58:56 +0000 (Thu, 17 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/Ui_View.py Modified: trunk/fclient/src/fclient/Ui_View.py =================================================================== --- trunk/fclient/src/fclient/Ui_View.py 2008-07-17 15:56:53 UTC (rev 659) +++ trunk/fclient/src/fclient/Ui_View.py 2008-07-17 15:58:56 UTC (rev 660) @@ -69,13 +69,13 @@ def _addViews(self, toTop, *views): tab = self.controlById(self.IdTabTop) if toTop else self.controlById(self.IdTabBottom) for view in views: - name = view.fclientViewObject.name + name = view.fcViewObject.name if not name: raise ValueError('view must have a name') if name in self.views: raise ValueError('view with that name is already present: %s' % name) view.setParent(tab) - i = tab.addTab(view, view.fclientViewObject.icon, view.fclientViewObject.displayName) + i = tab.addTab(view, view.fcViewObject.icon, view.fcViewObject.displayName) self.views[name] = (tab, view) tab.tabBar().setVisible(tab.count() > 1) @@ -141,13 +141,13 @@ def handleTabTopCurrentChanged(self, index): tab = self.controlById(self.IdTabTop) view = tab.currentWidget() - self.fclientSettings.setValues(LastViewTop=view.fclientViewObject.name) + self.fclientSettings.setValues(LastViewTop=view.fcViewObject.name) def handleTabBottomCurrentChanged(self, index): tab = self.controlById(self.IdTabBottom) view = tab.currentWidget() - self.fclientSettings.setValues(LastViewBottom=view.fclientViewObject.name) + self.fclientSettings.setValues(LastViewBottom=view.fcViewObject.name) #********************************************************************************** # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 15:57:24
|
Revision: 659 http://fclient.svn.sourceforge.net/fclient/?rev=659&view=rev Author: jUrner Date: 2008-07-17 15:56:53 +0000 (Thu, 17 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/Ui_MainWindow.py Modified: trunk/fclient/src/fclient/Ui_MainWindow.py =================================================================== --- trunk/fclient/src/fclient/Ui_MainWindow.py 2008-07-17 01:00:29 UTC (rev 658) +++ trunk/fclient/src/fclient/Ui_MainWindow.py 2008-07-17 15:56:53 UTC (rev 659) @@ -34,22 +34,22 @@ self.action( name='ActionPreferences', text=self.trUtf8('&Preferences...'), - trigger=parent.handleActPreferencesTriggered, + trigger=parent.onActPreferencesTriggered, ) self.action( name='ActionExit', text=self.trUtf8('E&xit'), - trigger=parent.handleActExitTriggered, + trigger=parent.onActExitTriggered, ) self.action( name='ActionAbout', text=self.trUtf8('A&bout...'), - trigger=parent.handleActAboutTriggered, + trigger=parent.onActAboutTriggered, ) self.action( name='ActionHelp', text=self.trUtf8('&Help...'), - trigger=parent.handleActHelpTriggered, + trigger=parent.onActHelpTriggered, ) #********************************************************************************** @@ -119,20 +119,20 @@ self._isCreated = True ################################################## - ## event handlers + ## event onrs ################################################## - def handleActPreferencesTriggered(self): + def onActPreferencesTriggered(self): dlg = Ui_Prefs.PrefsDlg(self) if dlg.exec_() == dlg.Accepted: pass - def handleActExitTriggered(self): + def onActExitTriggered(self): self.close() - def handleActHelpTriggered(self): + def onActHelpTriggered(self): pass - def handleActAboutTriggered(self): + def onActAboutTriggered(self): dlg = dlgabout.DlgAbout( self, ##state=self.guiSettings['DlgAboutState'], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 01:00:21
|
Revision: 658 http://fclient.svn.sourceforge.net/fclient/?rev=658&view=rev Author: jUrner Date: 2008-07-17 01:00:29 +0000 (Thu, 17 Jul 2008) Log Message: ----------- some more params Modified Paths: -------------- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py Modified: trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py =================================================================== --- trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-17 01:00:03 UTC (rev 657) +++ trunk/fclient/src/fclient/lib/qt4ex/lib/actions.py 2008-07-17 01:00:29 UTC (rev 658) @@ -61,13 +61,14 @@ return act - def group(self, parent=None, name=None, trigger=None, isExclusive=False): + def group(self, parent=None, name=None, trigger=None, isExclusive=False, isEnabled=True): if parent is None: parent = self.parent() group = QtGui.QActionGroup(parent) group.setObjectName(name) if trigger is not None: self.parent().connect(group, QtCore.SIGNAL('triggered(QAction*)'), trigger) + group.setEnabled(isEnabled) group.setExclusive(isExclusive) self._registerAction(name, group) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-17 00:59:56
|
Revision: 657 http://fclient.svn.sourceforge.net/fclient/?rev=657&view=rev Author: jUrner Date: 2008-07-17 01:00:03 +0000 (Thu, 17 Jul 2008) Log Message: ----------- massive comb over Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewBrowser.py Modified: trunk/fclient/src/fclient/Ui_ViewBrowser.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-16 21:16:35 UTC (rev 656) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-17 01:00:03 UTC (rev 657) @@ -26,21 +26,22 @@ self.action( name='ActionCloseCurrentBrowser', - text=self.trUtf8('&Close'), + text=self.trUtf8('&Close tab'), trigger=parent.handleActionCloseCurrentBrowser, - isEnabled=False, + #isEnabled=False, ) - self.action( + self.action( # context menu only name='ActionCloseBrowserUnderMouse', - text=self.trUtf8('&Close'), + text=self.trUtf8('&Close tab'), trigger=None, - isEnabled=False, + #isEnabled=False, ) + self.action( - name='ActionHomePage', - text=self.trUtf8('&Home page'), - trigger=parent.handleActionHomePage, - isEnabled=False, + name='ActionGoToFProxy', + text=self.trUtf8('F&Proxy homepage'), + trigger=parent.handleActionGoToFProxy, + isEnabled=True, ) class GlobalFeedback(config.GlobalFeedbackBase): @@ -135,26 +136,38 @@ #********************************************************************************** # #********************************************************************************** -#TODO: except from but ugly code. opening links is a bit strange currently. have -# to check policy +##class Page(QtWebKit.QWebPage): +## def __init__(self, parent): +## QtWebKit.QWebPage.__init__(self, parent) +## +## def acceptNavigationRequest(self, frame, request, type): +## return True + + class Browser(QtWebKit.QWebView): - def __init__(self, browserWidget): - QtWebKit.QWebView.__init__(self, browserWidget) + def __init__(self, parent, tabWidget=None, navBar=None, globalFeedback=None, browserSettings=None, browserActions=None): + QtWebKit.QWebView.__init__(self, parent) + self.browserActions = browserActions + self.browserSettings = browserSettings + self.globalFeedback = globalFeedback + self.navBar = navBar + self.tabWidget = tabWidget + self.lastProgress = 0 + self.lastStatusMessage = self.trUtf8('Waiting') - #self.nm = NetworkAccessManager(self) - #self.page().setNetworkAccessManager(self.nm) - - - self.browserWidget = browserWidget - #TODO: set start page, otherwise the view is never updated settings = self.settings() settings.setAttribute(settings.PluginsEnabled, False) #settings.setAttribute(settings.AutoLoadImages, False) + #page = Page(self) + #self.setPage(page) + page = self.page() + #page.setLinkDelegationPolicy(page.DelegateAllLinks) + self.connect(self, QtCore.SIGNAL('loadStarted()'), self.handleLoadStarted) self.connect(self, QtCore.SIGNAL('loadProgress(int)'), self.handleLoadProgress) self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.handleLoadFinished) @@ -162,61 +175,71 @@ self.connect(self, QtCore.SIGNAL('urlChanged(const QUrl &)'), self.handleUrlChanged) self.connect(self, QtCore.SIGNAL('titleChanged(const QString &)'), self.handleTitleChanged) self.connect(self, QtCore.SIGNAL('iconChanged()'), self.handleIconChanged) - - self.lastProgress = 0 - self.lastStatusMessage = self.trUtf8('Waiting') + self.setStatusMessage(self.lastStatusMessage) self.setProgress(self.lastProgress) - - + + + def createWindow(self, typeWindow=QtWebKit.QWebPage.WebBrowserWindow): + + if typeWindow == QtWebKit.QWebPage.WebBrowserWindow: + if self.tabWidget is None: + return self + + browser = self.__class__(self.tabWidget, + tabWidget=self.tabWidget, + navBar=self.navBar, + globalFeedback=self.globalFeedback, + browserSettings=self.browserSettings, + browserActions=self.browserActions, + ) + self.tabWidget.addTab(browser, self.trUtf8('Loading')) + n = self.tabWidget.count() + self.tabWidget.tabBar().setVisible(n) + return browser + + def load(self, url): if self.isCurrentBrowser(): - ed = self.browserWidget.controlById(self.browserWidget.IdEdNavBar) - ed.setText(url.toString()) + if self.navBar is not None: + self.navBar.setText(url.toString()) QtWebKit.QWebView.load(self, url) - - # - # page = QtWebKit.QWebPage(self) - # self.setPage(page) - # QtWebKit.QWebView.load(self, url) - + def showEvent(self, event): self.setProgress(self.lastProgress) self.setStatusMessage(self.lastStatusMessage) - ed = self.browserWidget.controlById(self.browserWidget.IdEdNavBar) - ed.setText(self.url().toString()) + if self.navBar is not None: + self.navBar.setText(self.url().toString()) - + def hideEvent(self, event): pass def isCurrentBrowser(self): - tab = self.browserWidget.controlById(self.browserWidget.IdTabBrowsers) - return tab.currentWidget() == self + if self.tabWidget is not None: + return self.tabWidget.currentWidget() == self + return False + def tabIndex(self): - tab = self.browserWidget.controlById(self.browserWidget.IdTabBrowsers) - return tab.indexOf(self) + if self.tabWidget is not None: + return self.tabWidget.indexOf(self) + return -1 def setStatusMessage(self, text): self.lastStatusMessage = text - if self.isCurrentBrowser(): - self.browserWidget.fclientGlobalFeedback.setStatusMessage(text) + if self.globalFeedback is not None and self.isCurrentBrowser(): + self.globalFeedback.setStatusMessage(text) def setProgress(self, percent): self.lastProgress = percent - if self.isCurrentBrowser(): - self.browserWidget.fclientGlobalFeedback.setProgress(percent) + if self.globalFeedback is not None and self.isCurrentBrowser(): + self.globalFeedback.setProgress(percent) - - def createWindow(self, typeWindow): - if typeWindow == QtWebKit.QWebPage.WebBrowserWindow: - return self.browserWidget.newBrowser() - - + def handleLoadStarted(self): self.setProgress(0) self.setStatusMessage(self.trUtf8('Loading')) @@ -237,35 +260,34 @@ def handleUrlChanged(self, url): - if self.isCurrentBrowser(): - ed = self.browserWidget.controlById(self.browserWidget.IdEdNavBar) - ed.setText(url.toString()) + if self.navBar is not None and self.isCurrentBrowser(): + self.navBar.setText(url.toString()) def handleIconChanged(self): i = self.tabIndex() if i > -1: - tab.setTabIcon(i, self.icon) + self.tabWidget.setTabIcon(i, self.icon) def handleTitleChanged(self, text): # add title to tab - tab = self.browserWidget.controlById(self.browserWidget.IdTabBrowsers) - i = tab.indexOf(self) - if i > -1: - # truncate text if necessary - maxText = self.browserWidget.fclientSettings.value('MaxTabText') - - ellipsis = self.trUtf8('..') - if text.count() > maxText and text.count() > ellipsis.count()*2: - n = maxText - ellipsis.count() - if n < 0: - n = 0 - text.truncate(n) - text.append(ellipsis) - if text.isEmpty(): - text = self.trUtf8('<untitled>') - tab.setTabText(i, text) + if self.tabWidget is not None: + i = self.tabIndex() + if i > -1: + # truncate text if necessary + maxText = self.browserSettings.value('MaxTabText') + + ellipsis = self.trUtf8('..') + if text.count() > maxText and text.count() > ellipsis.count() * 2: #TODO: * 2 ??? + n = maxText - ellipsis.count() + if n < 0: + n = 0 + text.truncate(n) + text.append(ellipsis) + if text.isEmpty(): + text = self.trUtf8('<untitled>') + self.tabWidget.setTabText(i, text) #*********************************************************************** @@ -307,56 +329,61 @@ ) config.fcpClient.events += self.fcpEventHandlers - ed = self.controlById(self.IdEdNavBar) - self.connect(ed, QtCore.SIGNAL('returnPressed()'), self.handleNavBarReturnPressed) + navBar = self.controlById(self.IdEdNavBar) + self.connect(navBar, QtCore.SIGNAL('returnPressed()'), self.handleNavBarReturnPressed) # setup tab bar - tab = self.controlById(self.IdTabBrowsers) - tab.clear() - tab.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.connect(tab, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBrowsersCurrentChanged) - self.connect(tab, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.handleTabBrowsersContextMenuEvent) + tabWidget = self.controlById(self.IdTabBrowsers) + tabWidget.clear() + tabWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + self.connect(tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBrowsersCurrentChanged) + self.connect(tabWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.handleTabBrowsersContextMenuEvent) + + self.newTab(tabText=self.trUtf8('Waiting for fproxy')) - ######################################### ## methods ######################################### def controlById(self, idControl): return getattr(self, idControl) - + - def newBrowser(self): - tab = self.controlById(self.IdTabBrowsers) - #TODO: addTab seems to reparent browser - browser = Browser(self) - tab.addTab(browser, self.trUtf8('Loading')) - tab.tabBar().setVisible(tab.count()) - self.fclientActions['ActionCloseCurrentBrowser'].setEnabled(tab.count() > 1) - self.fclientActions['ActionCloseBrowserUnderMouse'].setEnabled(tab.count() > 1) + def newTab(self, tabText=''): + """creates a new tab""" + tabWidget = self.controlById(self.IdTabBrowsers) + browser = Browser(self, + tabWidget=self.controlById(self.IdTabBrowsers), + navBar=self.controlById(self.IdEdNavBar), + globalFeedback=self.fclientGlobalFeedback, + browserSettings=self.fclientSettings, + browserActions=self.fclientActions, + ) + tabWidget.addTab(browser, tabText) return browser - - + def load(self, url): - # url: can be QString or QUrl - if self.fproxyHost is None: - #TODO: handle + """loads a page in the current tab + + @param url: (QUrl) to load. can be a string as well. if '', fproxys homepage is loaded + """ + if self.fproxyHost is None or url is None: return - + + # enforce fproxy. we don't want to surf the web url = QtCore.QUrl(url) url.setHost(self.fproxyHost) url.setPort(self.fproxyPort) url.setScheme('http') - - tab = self.controlById(self.IdTabBrowsers) - browser = tab.currentWidget() - if browser is None: - return - - browser.load(url) + tabWidget = self.controlById(self.IdTabBrowsers) + browser = tabWidget.currentWidget() + if browser is not None: + browser.load(url) + #TODO: rework. we need more then one menu def populateMenu(self, menu): + menu.addAction(self.fclientActions['ActionGoToFProxy']) menu.addAction(self.fclientActions['ActionCloseCurrentBrowser']) return menu @@ -378,31 +405,33 @@ def closeEvent(self): self.viewClose() + ######################################### ## fcp event handlers ######################################### + #TODO: browser should be disabled untill config data has arrived. + #disable navbar, tool buttons, actions. on second thought.. we'll see. def handleFcpConfigData(self, event, msg): self.fproxyHost = None self.fproxyPort = None + + #TODO: give feedback in case fproxy is disabled if msg.get('current.fproxy.enabled'): fproxyHosts = msg.get('current.fproxy.bindTo') fproxyPort = msg.get('current.fproxy.port') if fproxyHosts: + #TODO: ups, looks like we can not deal with ipv6 addrs + ##self.fproxyHost = fproxyHosts[1] self.fproxyHost = fproxyHosts[0] self.fproxyPort = fproxyPort - - - #TODO: just a sketch. when to create the initial browser? what if the user has already entered an url - # what to do if fproxy is disabled? + if not self._initialConfigDataArrived: self._initialConfigDataArrived = True - - self.newBrowser() - ed = self.controlById(self.IdEdNavBar) - text = ed.text() + navBar = self.controlById(self.IdEdNavBar) + text = navBar.text() if text.isEmpty(): - self.fclientActions['ActionHomePage'].trigger() + self.fclientActions['ActionGoToFProxy'].trigger() else: self.load(text) @@ -411,11 +440,9 @@ ## ######################################### def handleActionCloseCurrentBrowser(self, action): - tab = self.controlById(self.IdTabBrowsers) - tab.removeTab(tab.currentIndex()) - self.fclientActions['ActionCloseCurrentBrowser'].setEnabled(tab.count() > 1) - self.fclientActions['ActionCloseBrowserUnderMouse'].setEnabled(tab.count() > 1) - + tabWidget = self.controlById(self.IdTabBrowsers) + tabWidget.removeTab(tabWidget.currentIndex()) + def handleTabBrowsersContextMenuEvent(self, pt): menu = QtGui.QMenu() @@ -432,11 +459,8 @@ i = tab.tabBar().tabAt(pt) if i > -1: tab.removeTab(i) - self.fclientActions['ActionCloseCurrentBrowser'].setEnabled(tab.count() > 1) - self.fclientActions['ActionCloseBrowserUnderMouse'].setEnabled(tab.count() > 1) - + - def handleTabBrowsersCurrentChanged(self, index): browser = self.controlById(self.IdTabBrowsers).currentWidget() if browser is None: @@ -456,26 +480,25 @@ def handleNavBarReturnPressed(self): ed = self.controlById(self.IdEdNavBar) + tabWidget = self.controlById(self.IdTabBrowsers) + if not tabWidget.count(): + self.newTab(tabText=self.trUtf8('')) + self.load(ed.text()) - def handleActionHomePage(self, action): + def handleActionGoToFProxy(self, action): if self.fproxyHost is None: #TODO: handle return url = QtCore.QUrl() - url.setHost(self.fproxyHost) - url.setPort(self.fproxyPort) - url.setScheme('http') - tab = self.controlById(self.IdTabBrowsers) - browser = tab.currentWidget() - if browser is not None: - browser.load(url) + tabWidget = self.controlById(self.IdTabBrowsers) + if not tabWidget.count(): + self.newTab(tabText=self.trUtf8('Waiting for fproxy')) + self.load(url) - - #********************************************************************************** # #********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:58:25
|
Revision: 648 http://fclient.svn.sourceforge.net/fclient/?rev=648&view=rev Author: jUrner Date: 2008-07-15 16:58:09 -0700 (Tue, 15 Jul 2008) Log Message: ----------- what a diff pt II Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewLogger.py Modified: trunk/fclient/src/fclient/Ui_ViewLogger.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-15 23:57:40 UTC (rev 647) +++ trunk/fclient/src/fclient/Ui_ViewLogger.py 2008-07-15 23:58:09 UTC (rev 648) @@ -3,15 +3,15 @@ if __name__ == '__main__': # see --> http://bugs.python.org/issue1510172 . works only current dir and below import os; __path__ = [os.path.dirname(__file__)] +import sys import logging -import sys -logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) from PyQt4 import QtCore, QtGui - from . import config from . import Ui_View +from .lib import fcp2 +from .lib.qt4ex.lib import actions from .tpls.Ui_ViewLoggerWidgetTpl import Ui_ViewLoggerWidget #********************************************************************************** @@ -19,81 +19,134 @@ #********************************************************************************** class Settings(config.SettingsBase): + PrefixVerbosityColorFg = 'ColorFgVerbosity' + _key_ = config.IdViewLoggerWidget _settings_ = ( ('MaxLines', 'UInt', 1000, config.SettingScopeUser), + ('Verbosity', 'PyString', 'Info', config.SettingScopePrivate), + + #TODO: Chatty does not seem to work. check in fcp2.client + ('ColorFgVerbosityCRITICAL', 'QColor', QtGui.QColor('red'), config.SettingScopeUser), + ('ColorFgVerbosityERROR', 'QColor', QtGui.QColor('red'), config.SettingScopeUser), + ('ColorFgVerbosityWARNING', 'QColor', QtGui.QColor('red'), config.SettingScopeUser), + ('ColorFgVerbosityINFO', 'QColor', QtGui.QColor('black'), config.SettingScopeUser), + ('ColorFgVerbosityMESSAGE', 'QColor', QtGui.QColor('blue'), config.SettingScopeUser), + ('ColorFgVerbosityDEBUG', 'QColor', QtGui.QColor('slategray'), config.SettingScopeUser), + ('ColorFgVerbosityCHATTY', 'QColor', QtGui.QColor('lightslategray'), config.SettingScopeUser), ) -#*********************************************************************** -# -#*********************************************************************** -#TODO: more here... -class TextEditActionClear(QtGui.QAction): - def __init__(self, ed): - QtGui.QAction.__init__(self, ed) - self.setText(self.trUtf8('Clear')) - ##self.setShortcut(self.trUtf8("del")) - self.connect(self, QtCore.SIGNAL('triggered(bool)'), self.handleTriggered) - self.connect(ed, QtCore.SIGNAL('textChanged()'), self.handleEdTextChanged) + +#TODO: for uniformity reasons (...) move ActionsBase to config, no? +class Actions(actions.ActionsBase): + + PrefixVerbosity = 'ActionVerbosity' + + def __init__(self, parent): + actions.ActionsBase.__init__(self, parent) - self.ed = ed - self.handleEdTextChanged() - - def handleEdTextChanged(self): - self.setEnabled(not self.ed.document().isEmpty()) - - def handleTriggered(self, isChecked): - self.ed.clear() + # for ease of use verbosities are mapped to verbosity actions like this: PrefixVerbosity + Verbosity + self.action( + name='ActionLoggerClear', + text=self.trUtf8('C&lear'), + trigger=parent.handleActionLoggerClear, + ) + + groupVerbosity = self.group( + name='GroupVerbosity', + trigger=parent.handleGroupVerbosityTriggered, + isExclusive=True, + ) + self.action( + name='ActionVerbosityInfo', + text=self.trUtf8('Info'), + group=groupVerbosity, + trigger=None, + isCheckable=True, + userData=fcp2.ConstDebugVerbosity.Info, + ) + self.action( + name='ActionVerbosityMessage', + text=self.trUtf8('Message'), + group=groupVerbosity, + trigger=None, + isCheckable=True, + userData=fcp2.ConstDebugVerbosity.Message, + ) + self.action( + name='ActionVerbosityDebug', + text=self.trUtf8('Debug'), + group=groupVerbosity, + trigger=None, + isCheckable=True, + userData=fcp2.ConstDebugVerbosity.Debug, + ) + self.action( + name='ActionVerbosityChatty', + text=self.trUtf8('Chatty'), + group=groupVerbosity, + trigger=None, + isCheckable=True, + userData=fcp2.ConstDebugVerbosity.Chatty, + ) #*********************************************************************** # #*********************************************************************** class MyLoggingHandler(logging.Handler): - def __init__(self, myLogf, *args, **kwargs): + def __init__(self, cb, *args, **kwargs): logging.Handler.__init__(self, *args, **kwargs) - self.myLogf = myLogf + self.cb = cb def emit(self, record): - self.myLogf( - '%s:%s:%s' % (record.levelname, record.name, record.getMessage()) - ) + self.cb(record) #*********************************************************************** # #*********************************************************************** class ViewLoggerWidget(QtGui.QWidget, Ui_ViewLoggerWidget): - IdEddLogger = 'edLogger' - + IdEdLogger = 'edLogger' - def __init__(self, parent, level=logging.NOTSET): + + def __init__(self, parent): QtGui.QWidget.__init__(self, parent) - self._acts = [] self._isCreated = False - self._mainWindowMenus = [] + self._mainWindowMenus = {} #TODO: wrap along with toolbars to a handy class MainWindowStuff - self.settings = Settings() - self.setupUi(self) config.ObjectRegistry.register(self) - #NOTE: do not move to showEvent(). we want to be up and alive as soon as possible - # to catch logs - self.settings.restore() - ed = self.controlById(self.IdEddLogger) + self.actions = Actions(self) + self.settings = Settings(self).restore() + + # setup editbox + #NOTE: do not move to showEvent(). we want to be up and alive as soon as possible to catch logs + ed = self.controlById(self.IdEdLogger) ed.document().setMaximumBlockCount(self.settings.value('MaxLines')) - ed.contextMenuEvent = self.edLoggerContextMenuEvent + ed.contextMenuEvent = self.loggerContextMenuEvent + self.connect(ed, QtCore.SIGNAL('textChanged()'), self.handleLoggerTextChanged) - self.loggingHandler = MyLoggingHandler(self.addMessage) + # setup logger + self.loggingHandler = MyLoggingHandler(self.addRecord) logging.getLogger('').addHandler(self.loggingHandler) + + # setup actions + verbosity = self.settings.value('Verbosity').title() + action = self.actions.get(self.actions.PrefixVerbosity + verbosity, None) + if action is None: + verbosity = self.settings.restoreDefaults('Verbosity')['Verbosity'] + action = self.actions.get(self.actions.PrefixVerbosity + verbosity, None) + if action is None: + raise ValueError('default verbosity action "%s" not found. WTF?' % self.actions.PrefixVerbosity + verbosity) + action.trigger() # atatch menus to main window if present. have to do it in __init__ to reserve order menuBarWrap = config.ObjectRegistry.get(config.IdMainWindowMenuBarWrap, None) if menuBarWrap is not None: menu = QtGui.QMenu(self.viewDisplayName(), menuBarWrap.menuBar()) - for act in self.acts(): - menu.addAction(act) + self.populateMenu(menu) self._mainWindowMenus = ( menuBarWrap.addViewMenu(menu), ) @@ -101,22 +154,29 @@ ######################################### ## methods ######################################### - def acts(self): - if not self._acts: - self._acts = ( - TextEditActionClear(self.controlById(self.IdEddLogger)), - ) - return self._acts + def addRecord(self, record): + """adds a logging record""" + + ed = self.controlById(self.IdEdLogger) + fmt = ed.currentCharFormat() + colorFg = self.settings.value(self.settings.PrefixVerbosityColorFg + record.levelname) + fmt.setForeground(QtGui.QBrush(colorFg)) + ed.setCurrentCharFormat(fmt) + + text = '%s:%s:%s' % (record.levelname, record.name, record.getMessage()) + ed.appendPlainText(text) - def addMessage(self, text): - ed = self.controlById(self.IdEddLogger) - ed.append(text) - - def controlById(self, idControl): return getattr(self, idControl) + + def populateMenu(self, menu): + menu.addAction(self.actions['ActionLoggerClear']) + subMenu = menu.addMenu(self.trUtf8('Verbosity')) + subMenu.addActions(self.actions['GroupVerbosity'].actions()) + return menu + ######################################### ##view methods ######################################### @@ -140,20 +200,36 @@ ######################################### ## overwritten events ######################################### - def edLoggerContextMenuEvent(self, event): + def loggerContextMenuEvent(self, event): """customize context menu of the logger QTextEdit""" - ed = self.controlById(self.IdEddLogger) + ed = self.controlById(self.IdEdLogger) menu = ed.createStandardContextMenu() - for act in self.acts(): - menu.addAction(act) + self.populateMenu(menu) menu.exec_(event.globalPos()) + def showEvent(self, event): if self._isCreated: return self._isCreated = True + + ######################################### + ## event handlers + ######################################### + def handleActionLoggerClear(self, action): + self.controlById(self.IdEdLogger).clear() - + + def handleGroupVerbosityTriggered(self, action): + nameVerbosity = action.objectName()[len(self.actions.PrefixVerbosity):] + self.settings.setValues(Verbosity=nameVerbosity) + logging.getLogger().setLevel(action.userData()) + + + def handleLoggerTextChanged(self): + ed = self.controlById(self.IdEdLogger) + self.actions['ActionLoggerClear'].setEnabled(not ed.document().isEmpty()) + #********************************************************************************** # #********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:57:33
|
Revision: 647 http://fclient.svn.sourceforge.net/fclient/?rev=647&view=rev Author: jUrner Date: 2008-07-15 16:57:40 -0700 (Tue, 15 Jul 2008) Log Message: ----------- what a diff Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewConnection.py Modified: trunk/fclient/src/fclient/Ui_ViewConnection.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-15 23:57:01 UTC (rev 646) +++ trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-15 23:57:40 UTC (rev 647) @@ -17,6 +17,7 @@ _settings_ = ( ('ConnectionTimerTimeout', 'UInt', 800, config.SettingScopeExpert), ('ConnectionTimerMaxDuration', 'UInt', 20, config.SettingScopeExpert), + ('PollTimerTimeout', 'UInt', 200, config.SettingScopeExpert), ('AutoConnect', 'Bool', False, config.SettingScopeUser), ('ConnectionName', 'String', '', config.SettingScopeUser), #TODO: we need a python ansi string @@ -31,27 +32,46 @@ def __init__(self,parent): QtCore.QTimer.__init__(self, parent) - self.iterConnect = None - self.nodeHello = None + self.fcpIterConnect = None self.connect(self, QtCore.SIGNAL('timeout()'), self.handleNext) def start(self, settings): - self.iterConnect = config.fcpClient.iterConnect( + self.fcpIterConnect = config.fcpClient.iterConnect( duration=settings.value('ConnectionTimerMaxDuration'), timeout=0 ) - QtCore.QTimer.start(self, settings.value('ConnectionTimerTimeout')) + if not self.handleNext(): + QtCore.QTimer.start(self, settings.value('ConnectionTimerTimeout')) def handleNext(self): try: - result = self.iterConnect.next() + result = self.fcpIterConnect.next() except StopIteration: self.stop() else: if result is not None: self.stop() - self.nodeHello = result + # 1st thing todo after connect is to query the config from the node so all + # listeners right away so not everyone has to query it so. needs more details + # or joins the gui later.. feel free to query again + config.fcpClient.getConfig() + return True + return False + + +class PollTimer(QtCore.QTimer): + + def __init__(self,parent): + QtCore.QTimer.__init__(self, parent) + self.connect(self, QtCore.SIGNAL('timeout()'), self.handleNext) + def start(self, settings): + QtCore.QTimer.start(self, settings.value('PollTimerTimeout')) + + def handleNext(self): + if config.fcpClient.isConnected(): + result = config.fcpClient.next() + #*********************************************************************** # #*********************************************************************** @@ -65,24 +85,25 @@ def __init__(self, parent, cfg=None): QtGui.QWidget.__init__(self, parent) - self._acts = [] self._isCreated = False self._connectionTimer = ConnectionTimer(self) - self._eventHandlers = ( + self._pollTimer = PollTimer(self) + self._fcpEventHandlers = ( + (config.fcpClient.events.ClientConnected, self.handleFcpClientConected), (config.fcpClient.events.ClientDisconnected, self.handleFcpClientDisconected), ) + config.fcpClient.events += self._fcpEventHandlers self._mainWindowMenus = () self.settings = Settings() self.setupUi(self) config.ObjectRegistry.register(self) - + # atatch menus to main window if present. have to do it in __init__ to reserve order menuBarWrap = config.ObjectRegistry.get(config.IdMainWindowMenuBarWrap, None) if menuBarWrap is not None: menu = QtGui.QMenu(self.viewDisplayName(), menuBarWrap.menuBar()) - for act in self.acts(): - menu.addAction(act) + self.populateMenu(menu) self._mainWindowMenus = ( menuBarWrap.addViewMenu(menu), ) @@ -90,26 +111,18 @@ ######################################### ## methods ######################################### - def close(self): - config.fcpClient.events -= self._eventHandlers - def controlById(self, idControl): return getattr(self, idControl) + - def displayName(self): - return self.trUft8('Connection') + def populateMenu(self, menu): + return menu - def acts(self): - if not self._acts: - self._acts = ( - ) - return self._acts - ######################################### ## view methods ######################################### def viewClose(self): - self.close() + config.fcpClient.events -= self._fcpEventHandlers def viewDisplayName(self): return self.trUtf8('Connection') @@ -128,7 +141,7 @@ ## overwritten events ######################################### def closeEvent(self, event): - self.close() + self.viewClose() def showEvent(self, event): if self._isCreated: @@ -137,8 +150,7 @@ self.settings.restore() - config.fcpClient.events += self._eventHandlers - + # setup host / port boxes edHost = self.controlById(self.IdEdConnectionHost) edHost.setText(self.settings.value('ConnectionHost')) @@ -157,10 +169,7 @@ self.connect(bt, QtCore.SIGNAL('clicked(bool)'), self.handleBtConnectClicked) if doAutoConnect: self.controlById(self.IdBtConnect).click() - - - - + ######################################## ## overwritten methods ######################################### @@ -183,6 +192,7 @@ else: self._connectionTimer.stop() if config.fcpClient.isConnected(): + self._pollTimer.stop() config.fcpClient.close() @@ -197,6 +207,9 @@ if bt.isChecked(): bt.click() + def handleFcpClientConected(self, event, msg): + self._pollTimer.start(self.settings) + #********************************************************************************** # #********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:56:53
|
Revision: 646 http://fclient.svn.sourceforge.net/fclient/?rev=646&view=rev Author: jUrner Date: 2008-07-15 16:57:01 -0700 (Tue, 15 Jul 2008) Log Message: ----------- basic browser impl Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewBrowser.py Modified: trunk/fclient/src/fclient/Ui_ViewBrowser.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-15 23:56:30 UTC (rev 645) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-15 23:57:01 UTC (rev 646) @@ -1,18 +1,20 @@ - - + from __future__ import absolute_import if __name__ == '__main__': # see --> http://bugs.python.org/issue1510172 . works only current dir and below import os; __path__ = [os.path.dirname(__file__)] import logging +import posixpath +#import re import sys logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) -from PyQt4 import QtCore, QtGui +from PyQt4 import QtCore, QtGui, QtWebKit - from . import config from . import Ui_View +from .lib import fcp2 +from .lib.qt4ex.lib import actions from .tpls.Ui_ViewBrowserWidgetTpl import Ui_ViewBrowserWidget #********************************************************************************** @@ -22,53 +24,106 @@ _key_ = config.IdViewBrowserWidget _settings_ = ( ) - + + +#TODO: for uniformity reasons (...) move ActionsBase to config, no? +class Actions(actions.ActionsBase): + pass + +#********************************************************************************** +# +#********************************************************************************** +class Browser(QtWebKit.QWebView): + + + def __init__(self, parent): + QtWebKit.QWebView.__init__(self, parent) + + #TODO: set start page, otherwise the view is never updated + settings = self.settings() + settings.setAttribute(settings.PluginsEnabled, False) + #settings.setAttribute(settings.AutoLoadImages, False) + #*********************************************************************** # #*********************************************************************** class ViewBrowserWidget(QtGui.QWidget, Ui_ViewBrowserWidget): + IdTabBrowsers = 'tabBrowsers' + IdFrameTools = 'frameTools' + IdFrameNavBar = 'frameNavBar' + IdEdNavBar = 'edNavBar' + + + def __init__(self, parent, keyHome=None): + QtGui.QWidget.__init__(self, parent) - def __init__(self, parent): - QtGui.QWidget.__init__(self, parent) - self._acts = [] self._isCreated = False self._mainWindowMenus = [] self.settings = Settings() + self.fProxyHost = None + self._fproxyPort = None + self.setupUi(self) config.ObjectRegistry.register(self) - + self._fcpEventHandlers = ( + (config.fcpClient.events.ConfigData, self.handleFcpConfigData), + ) + config.fcpClient.events += self._fcpEventHandlers + # atatch menus to main window if present. have to do it in __init__ to reserve order menuBarWrap = config.ObjectRegistry.get(config.IdMainWindowMenuBarWrap, None) if menuBarWrap is not None: menu = QtGui.QMenu(self.viewDisplayName(), menuBarWrap.menuBar()) - for act in self.acts(): - print act - menu.addAction(act) + self.populateMenu(menu) self._mainWindowMenus = ( menuBarWrap.addViewMenu(menu), ) - + + ed = self.controlById(self.IdEdNavBar) + self.connect(ed, QtCore.SIGNAL('returnPressed()'), self.handleNavBarReturnPressed) + + # setup tab bar + tab = self.controlById(self.IdTabBrowsers) + tab.clear() + browser = Browser(tab) + tab.addTab(browser, self.trUtf8('Empty')) + tab.tabBar().setVisible(tab.count()) + ######################################### ## methods ######################################### - def acts(self): - if not self._acts: - self._acts = ( - ) - return self._acts - - def controlById(self, idControl): return getattr(self, idControl) + + def load(self, key): + if self.fproxyHost is None: + #TODO: handle + return + + url = QtCore.QUrl(key) + url.setHost(self.fproxyHost) + url.setPort(self.fproxyPort) + url.setScheme('http') + + self.controlById(self.IdEdNavBar).setText(url.toString()) + + tab = self.controlById(self.IdTabBrowsers) + browser = tab.currentWidget() + browser.load(url) + + + def populateMenu(self, menu): + return menu + ######################################### ##view methods ######################################### def viewClose(self): - pass + onfig.fcpClient.events -= self._fcpEventHandlers def viewDisplayName(self): return self.trUtf8('Browser') @@ -76,6 +131,7 @@ def viewHandleCurrentChanged(self, isCurrent): for menu in self._mainWindowMenus: menu.children()[0].setVisible(isCurrent) + def viewIcon(self): return QtGui.QIcon() @@ -90,18 +146,58 @@ if self._isCreated: return self._isCreated = True + ed = self.controlById(self.IdEdNavBar) + #ed.setText('USK@7H66rhYmxIFgMyw5Dl11JazXGHPhp7dSN7WMa1pbtEo,jQHUQUPTkeRcjmjgrc7t5cDRdDkK3uKkrSzuw5CO9uk,AQACAAE/ENTRY.POINT/36/') + ed.setText('USK@zQyF2O1o8B4y40w7Twz8y2I9haW3d2DTlxjTHPu7zc8,h2mhQNNE9aQvF~2yKAmKV1uorr7141-QOroBf5hrlbw,AQACAAE/AnotherIndex/67/') + + def closeEvent(self): + self.viewClose() + + ######################################### + ## fcp event handlers + ######################################### + def handleFcpConfigData(self, event, msg): + self.fproxyHost = None + self.fproxyPort = None + if msg.get('current.fproxy.enabled'): + fproxyHosts = msg.get('current.fproxy.bindTo') + fproxyPort = msg.get('current.fproxy.port') + if fproxyHosts: + self.fproxyHost = fproxyHosts[0] + self.fproxyPort = fproxyPort + + ######################################### + ## + ######################################### + def handleNavBarReturnPressed(self): + ed = self.controlById(self.IdEdNavBar) + self.load(ed.text()) + #********************************************************************************** # #********************************************************************************** if __name__ == '__main__': import sys - from . import Ui_ViewLogger + from .Ui_ViewLogger import ViewLoggerWidget + from .Ui_MainWindow import MainWindow + from .Ui_View import ViewWidget + from .Ui_ViewConnection import ViewConnectionWidget app = QtGui.QApplication(sys.argv) - w = ViewBrowserWidget(None) - - w.show() + + mainWindow = MainWindow() + viewWidget = ViewWidget(mainWindow) + mainWindow.setCentralWidget(viewWidget) + + browserWidget = ViewBrowserWidget(mainWindow) + viewWidget.addTopViews( + ViewConnectionWidget(mainWindow), + browserWidget, + ) + viewWidget.addBottomViews(ViewLoggerWidget(mainWindow)) + + mainWindow.show() res = app.exec_() sys.exit(res) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:56:42
|
Revision: 645 http://fclient.svn.sourceforge.net/fclient/?rev=645&view=rev Author: jUrner Date: 2008-07-15 16:56:30 -0700 (Tue, 15 Jul 2008) Log Message: ----------- this and that Modified Paths: -------------- trunk/fclient/src/fclient/Ui_View.py Modified: trunk/fclient/src/fclient/Ui_View.py =================================================================== --- trunk/fclient/src/fclient/Ui_View.py 2008-07-15 23:55:23 UTC (rev 644) +++ trunk/fclient/src/fclient/Ui_View.py 2008-07-15 23:56:30 UTC (rev 645) @@ -55,12 +55,11 @@ tabTop.removeTab(0) tabBottom = self.controlById(self.IdTabBottom) tabBottom.removeTab(0) - self.connect(tabTop, QtCore.SIGNAL('currentChanged(int)'), self.handleTabTopCurrentChanged) - self.connect(tabBottom, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBottomCurrentChanged) - + # setup splitter splitter = self.controlById(self.IdSplitter) splitter.restoreState(self.settings.value('SplitterPos')) + self.connect(splitter, QtCore.SIGNAL('splitterMoved(int, int)'), self.handleSplitterMoved) def controlById(self, idControl): @@ -78,7 +77,9 @@ view.setParent(tab) i = tab.addTab(view, view.viewIcon(), view.viewDisplayName()) self.views[name] = (tab, view) - + + tab.tabBar().setVisible(tab.count() > 1) + def addBottomViews(self, *views): return self._addViews(False, *views) @@ -94,17 +95,19 @@ return result[1] return None - #TODO: ... - #def setCurrentView(self, view): - # index, tab, view = view - + def setCurrentView(self, name): + result = self.views.get(name, None) + if result is not None: + tab, view = result + tab.setCurrentWidget(view) + return True + return False + ######################################################### ## ######################################################### def closeEvent(self, event): - splitter = self.controlById(self.IdSplitter) - self.settings.setValues(SplitterPos=splitter.saveState()) for tab, view in self.views.values(): view.viewClose() @@ -115,24 +118,31 @@ self._isCreated = True # restore current views - tabs = ( - (self.controlById(self.IdTabTop), 'LastViewTop'), - (self.controlById(self.IdTabBottom), 'LastViewBottom'), - ) - for tab, nameSetting in tabs: - lastName = self.settings.value(nameSetting) - if lastName: - lastView = self.viewFromName(lastName) - if lastView is not None: - tab.setCurrentWidget(lastView) - + tabTop = self.controlById(self.IdTabTop) + lastName = self.settings.value('LastViewTop') + self.setCurrentView(lastName) + + tabBottom = self.controlById(self.IdTabBottom) + lastName = self.settings.value('LastViewBottom') + self.setCurrentView(lastName) + # inform views about their current status for tab, view in self.views.values(): view.viewHandleCurrentChanged(tab.currentWidget() == view) + + # finally connect... not to overwrite settings + self.connect(tabTop, QtCore.SIGNAL('currentChanged(int)'), self.handleTabTopCurrentChanged) + self.connect(tabBottom, QtCore.SIGNAL('currentChanged(int)'), self.handleTabBottomCurrentChanged) + ######################################################### ## ######################################################### + def handleSplitterMoved(self, pos, index): + splitter = self.controlById(self.IdSplitter) + self.settings.setValues(SplitterPos=splitter.saveState()) + + def _handleTabCurrentChanged(self, index, isTop=True): lastName = self.settings.value('LastViewTop' if isTop else 'LastViewBottom') if lastName: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:55:30
|
Revision: 644 http://fclient.svn.sourceforge.net/fclient/?rev=644&view=rev Author: jUrner Date: 2008-07-15 16:55:23 -0700 (Tue, 15 Jul 2008) Log Message: ----------- whitespace Modified Paths: -------------- trunk/fclient/src/fclient/Ui_MainWindow.py Modified: trunk/fclient/src/fclient/Ui_MainWindow.py =================================================================== --- trunk/fclient/src/fclient/Ui_MainWindow.py 2008-07-15 23:54:47 UTC (rev 643) +++ trunk/fclient/src/fclient/Ui_MainWindow.py 2008-07-15 23:55:23 UTC (rev 644) @@ -77,6 +77,7 @@ def closeEvent(self, event): self.settings.setValues(Geometry=self.saveGeometry()) + def showEvent(self, event): if self._isCreated: return This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:54:39
|
Revision: 643 http://fclient.svn.sourceforge.net/fclient/?rev=643&view=rev Author: jUrner Date: 2008-07-15 16:54:47 -0700 (Tue, 15 Jul 2008) Log Message: ----------- browser is now webkit Modified Paths: -------------- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py Modified: trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-15 23:54:40 UTC (rev 642) +++ trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-15 23:54:47 UTC (rev 643) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui' # -# Created: Sun Jul 13 14:59:28 2008 +# Created: Sun Jul 13 20:33:16 2008 # by: PyQt4 UI code generator 4.3.3 # # WARNING! All changes made in this file will be lost! @@ -12,13 +12,73 @@ class Ui_ViewBrowserWidget(object): def setupUi(self, ViewBrowserWidget): ViewBrowserWidget.setObjectName("ViewBrowserWidget") - ViewBrowserWidget.resize(QtCore.QSize(QtCore.QRect(0,0,533,356).size()).expandedTo(ViewBrowserWidget.minimumSizeHint())) + ViewBrowserWidget.resize(QtCore.QSize(QtCore.QRect(0,0,570,516).size()).expandedTo(ViewBrowserWidget.minimumSizeHint())) + self.gridlayout = QtGui.QGridLayout(ViewBrowserWidget) + self.gridlayout.setObjectName("gridlayout") + + self.hboxlayout = QtGui.QHBoxLayout() + self.hboxlayout.setObjectName("hboxlayout") + + self.frameTools = QtGui.QFrame(ViewBrowserWidget) + self.frameTools.setFrameShape(QtGui.QFrame.NoFrame) + self.frameTools.setFrameShadow(QtGui.QFrame.Raised) + self.frameTools.setObjectName("frameTools") + + self.gridlayout1 = QtGui.QGridLayout(self.frameTools) + self.gridlayout1.setMargin(0) + self.gridlayout1.setSpacing(0) + self.gridlayout1.setObjectName("gridlayout1") + + self.toolButton = QtGui.QToolButton(self.frameTools) + self.toolButton.setObjectName("toolButton") + self.gridlayout1.addWidget(self.toolButton,0,0,1,1) + + self.toolButton_2 = QtGui.QToolButton(self.frameTools) + self.toolButton_2.setObjectName("toolButton_2") + self.gridlayout1.addWidget(self.toolButton_2,0,1,1,1) + + self.toolButton_3 = QtGui.QToolButton(self.frameTools) + self.toolButton_3.setObjectName("toolButton_3") + self.gridlayout1.addWidget(self.toolButton_3,0,2,1,1) + self.hboxlayout.addWidget(self.frameTools) + + self.frameNavBar = QtGui.QFrame(ViewBrowserWidget) + self.frameNavBar.setMinimumSize(QtCore.QSize(0,0)) + self.frameNavBar.setFrameShape(QtGui.QFrame.NoFrame) + self.frameNavBar.setFrameShadow(QtGui.QFrame.Plain) + self.frameNavBar.setLineWidth(0) + self.frameNavBar.setObjectName("frameNavBar") + + self.gridlayout2 = QtGui.QGridLayout(self.frameNavBar) + self.gridlayout2.setMargin(0) + self.gridlayout2.setSpacing(0) + self.gridlayout2.setObjectName("gridlayout2") + + self.edNavBar = QtGui.QLineEdit(self.frameNavBar) + self.edNavBar.setObjectName("edNavBar") + self.gridlayout2.addWidget(self.edNavBar,0,0,1,1) + self.hboxlayout.addWidget(self.frameNavBar) + self.gridlayout.addLayout(self.hboxlayout,0,0,1,1) + + self.tabBrowsers = QtGui.QTabWidget(ViewBrowserWidget) + self.tabBrowsers.setObjectName("tabBrowsers") + + self.tab = QtGui.QWidget() + self.tab.setObjectName("tab") + self.tabBrowsers.addTab(self.tab,"") + self.gridlayout.addWidget(self.tabBrowsers,1,0,1,1) + self.retranslateUi(ViewBrowserWidget) + self.tabBrowsers.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(ViewBrowserWidget) def retranslateUi(self, ViewBrowserWidget): ViewBrowserWidget.setWindowTitle(QtGui.QApplication.translate("ViewBrowserWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) + self.toolButton.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) + self.toolButton_2.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) + self.toolButton_3.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) + self.tabBrowsers.setTabText(self.tabBrowsers.indexOf(self.tab), QtGui.QApplication.translate("ViewBrowserWidget", "Tab 1", None, QtGui.QApplication.UnicodeUTF8)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:54:33
|
Revision: 642 http://fclient.svn.sourceforge.net/fclient/?rev=642&view=rev Author: jUrner Date: 2008-07-15 16:54:40 -0700 (Tue, 15 Jul 2008) Log Message: ----------- browser is now webkit Modified Paths: -------------- trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui Modified: trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui 2008-07-15 23:54:12 UTC (rev 641) +++ trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui 2008-07-15 23:54:40 UTC (rev 642) @@ -5,13 +5,124 @@ <rect> <x>0</x> <y>0</y> - <width>533</width> - <height>356</height> + <width>570</width> + <height>516</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <layout class="QHBoxLayout" > + <item> + <widget class="QFrame" name="frameTools" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <property name="horizontalSpacing" > + <number>0</number> + </property> + <property name="verticalSpacing" > + <number>0</number> + </property> + <item row="0" column="0" > + <widget class="QToolButton" name="toolButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QToolButton" name="toolButton_2" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QToolButton" name="toolButton_3" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QFrame" name="frameNavBar" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="lineWidth" > + <number>0</number> + </property> + <layout class="QGridLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <property name="horizontalSpacing" > + <number>0</number> + </property> + <property name="verticalSpacing" > + <number>0</number> + </property> + <item row="0" column="0" > + <widget class="QLineEdit" name="edNavBar" /> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" > + <widget class="QTabWidget" name="tabBrowsers" > + <property name="currentIndex" > + <number>0</number> + </property> + <widget class="QWidget" name="tab" > + <attribute name="title" > + <string>Tab 1</string> + </attribute> + </widget> + </widget> + </item> + </layout> </widget> <resources/> <connections/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:54:03
|
Revision: 641 http://fclient.svn.sourceforge.net/fclient/?rev=641&view=rev Author: jUrner Date: 2008-07-15 16:54:12 -0700 (Tue, 15 Jul 2008) Log Message: ----------- qt4.4 has QPlainTextEdit for logging Modified Paths: -------------- trunk/fclient/src/fclient/tpls/ViewLoggerWidgetTpl.ui Modified: trunk/fclient/src/fclient/tpls/ViewLoggerWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/ViewLoggerWidgetTpl.ui 2008-07-15 23:54:02 UTC (rev 640) +++ trunk/fclient/src/fclient/tpls/ViewLoggerWidgetTpl.ui 2008-07-15 23:54:12 UTC (rev 641) @@ -12,24 +12,15 @@ <property name="windowTitle" > <string>Form</string> </property> - <layout class="QGridLayout" > + <layout class="QGridLayout" name="gridLayout" > <item row="0" column="0" > - <widget class="QTextEdit" name="edLogger" > - <property name="undoRedoEnabled" > - <bool>false</bool> - </property> + <widget class="QPlainTextEdit" name="edLogger" > <property name="lineWrapMode" > - <enum>QTextEdit::NoWrap</enum> + <enum>QPlainTextEdit::NoWrap</enum> </property> <property name="readOnly" > <bool>true</bool> </property> - <property name="acceptRichText" > - <bool>false</bool> - </property> - <property name="textInteractionFlags" > - <set>Qt::NoTextInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> </widget> </item> </layout> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:53:57
|
Revision: 640 http://fclient.svn.sourceforge.net/fclient/?rev=640&view=rev Author: jUrner Date: 2008-07-15 16:54:02 -0700 (Tue, 15 Jul 2008) Log Message: ----------- qt4.4 has QPlainTextEdit for logging Modified Paths: -------------- trunk/fclient/src/fclient/tpls/Ui_ViewLoggerWidgetTpl.py Modified: trunk/fclient/src/fclient/tpls/Ui_ViewLoggerWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_ViewLoggerWidgetTpl.py 2008-07-15 23:53:25 UTC (rev 639) +++ trunk/fclient/src/fclient/tpls/Ui_ViewLoggerWidgetTpl.py 2008-07-15 23:54:02 UTC (rev 640) @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/ViewLoggerWidgetTpl.ui' # -# Created: Tue Jul 8 17:48:36 2008 -# by: PyQt4 UI code generator 4.3.3 +# Created: Tue Jul 15 16:03:24 2008 +# by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -12,19 +12,14 @@ class Ui_ViewLoggerWidget(object): def setupUi(self, ViewLoggerWidget): ViewLoggerWidget.setObjectName("ViewLoggerWidget") - ViewLoggerWidget.resize(QtCore.QSize(QtCore.QRect(0,0,550,471).size()).expandedTo(ViewLoggerWidget.minimumSizeHint())) - - self.gridlayout = QtGui.QGridLayout(ViewLoggerWidget) - self.gridlayout.setObjectName("gridlayout") - - self.edLogger = QtGui.QTextEdit(ViewLoggerWidget) - self.edLogger.setUndoRedoEnabled(False) - self.edLogger.setLineWrapMode(QtGui.QTextEdit.NoWrap) + ViewLoggerWidget.resize(550, 471) + self.gridLayout = QtGui.QGridLayout(ViewLoggerWidget) + self.gridLayout.setObjectName("gridLayout") + self.edLogger = QtGui.QPlainTextEdit(ViewLoggerWidget) + self.edLogger.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap) self.edLogger.setReadOnly(True) - self.edLogger.setAcceptRichText(False) - self.edLogger.setTextInteractionFlags(QtCore.Qt.NoTextInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse) self.edLogger.setObjectName("edLogger") - self.gridlayout.addWidget(self.edLogger,0,0,1,1) + self.gridLayout.addWidget(self.edLogger, 0, 0, 1, 1) self.retranslateUi(ViewLoggerWidget) QtCore.QMetaObject.connectSlotsByName(ViewLoggerWidget) @@ -33,7 +28,6 @@ ViewLoggerWidget.setWindowTitle(QtGui.QApplication.translate("ViewLoggerWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) - if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) @@ -42,3 +36,4 @@ ui.setupUi(ViewLoggerWidget) ViewLoggerWidget.show() sys.exit(app.exec_()) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:53:15
|
Revision: 639 http://fclient.svn.sourceforge.net/fclient/?rev=639&view=rev Author: jUrner Date: 2008-07-15 16:53:25 -0700 (Tue, 15 Jul 2008) Log Message: ----------- ... Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/test/test_client.py Modified: trunk/fclient/src/fclient/lib/fcp2/test/test_client.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/test/test_client.py 2008-07-15 23:52:11 UTC (rev 638) +++ trunk/fclient/src/fclient/lib/fcp2/test/test_client.py 2008-07-15 23:53:25 UTC (rev 639) @@ -332,6 +332,7 @@ #NOTE: currently ClientDisconnected() is triggered even if the client was not connected def test_close_disconnected_client(self): + self.connectClient() self.client.close() self.assertHasNextEvent( self.client.events.ClientDisconnected, @@ -569,9 +570,8 @@ self.assertHasNextEvent(None) self.assertHasNextMessage(None) self.failIf(self.ioOpen()) - self.closeClient() + - def test_iterIterConnect_VersionMissmatch_Build(self): for n, nodeHello in enumerate(self.client.iterConnect(duration=0.2, timeout=0.1)): self.sendResponseMessage( @@ -599,9 +599,7 @@ self.assertHasNextEvent(None) self.assertHasNextMessage(None) self.failIf(self.ioOpen()) - self.closeClient() - - + #*********************************************************************************** # #*********************************************************************************** @@ -621,8 +619,7 @@ self.assertHasNextEvent(None) self.assertHasNextMessage(None) self.failIf(self.ioOpen()) - self.closeClient() - + #*********************************************************************************** # #*********************************************************************************** @@ -645,8 +642,7 @@ self.assertHasNextEvent(None) self.assertHasNextMessage(None) self.failIf(self.ioOpen()) - self.closeClient() - + #*********************************************************************************** # #*********************************************************************************** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-15 23:52:04
|
Revision: 638 http://fclient.svn.sourceforge.net/fclient/?rev=638&view=rev Author: jUrner Date: 2008-07-15 16:52:11 -0700 (Tue, 15 Jul 2008) Log Message: ----------- verbosity Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/test/test_all.py Modified: trunk/fclient/src/fclient/lib/fcp2/test/test_all.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/test/test_all.py 2008-07-15 23:51:52 UTC (rev 637) +++ trunk/fclient/src/fclient/lib/fcp2/test/test_all.py 2008-07-15 23:52:11 UTC (rev 638) @@ -14,5 +14,5 @@ if filename.startswith('test_') and file != SelfName: mod = __import__(filename) suite = getattr(mod, 'suite') - unittest.TextTestRunner(verbosity=2).run(suite()) + unittest.TextTestRunner(verbosity=1).run(suite()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |