fclient-commit Mailing List for fclient (Page 10)
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-25 17:45:23
|
Revision: 745 http://fclient.svn.sourceforge.net/fclient/?rev=745&view=rev Author: jUrner Date: 2008-07-25 17:45:32 +0000 (Fri, 25 Jul 2008) Log Message: ----------- reworked browser toolbutton handling 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-25 17:44:42 UTC (rev 744) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-25 17:45:32 UTC (rev 745) @@ -150,7 +150,7 @@ def __init__(self, parent, idGlobalFeedback): config.GlobalFeedbackBase.__init__(self, parent, idGlobalFeedback) - + # menus self.menus = [] if self.menuBar is not None and hasattr(parent, 'fcViewObject'): @@ -223,6 +223,7 @@ ('BackIsClose', 'Bool', False, config.SettingScopeUser), #TODO: not implemented ('HomePage', 'String', QtCore.QString(), config.SettingScopeUser), ('IconSize', 'UInt', 32, config.SettingScopeUser), + ('IconTheme', 'String', QtCore.QString('crystal'), config.SettingScopeUser), ('AutoLoadImages', 'Bool', True, config.SettingScopeUser), #TODO: not yet implemented ('MaxTabText', 'UInt', 20, config.SettingScopeUser), #NOTE: make shure Max >= Min and Max and Min > 0 ('MinTabText', 'UInt', 7, config.SettingScopeUser), @@ -238,15 +239,21 @@ settings = browser.settings() settings.setAttribute(settings.AutoLoadImages, autoLoadImages) config.SettingsBase.setValues(self, **kws) + + #backIsClose = kws.get('BackIsClose', None) + #if backIsClose is not None: + # self.parent()._adjustBackIsClose() - - + class BrowserWidgetActions(config.ActionsBase): def __init__(self, parent): config.ActionsBase.__init__(self, parent) + iconSize = parent.fcSettings.value('IconSize') + iconTheme = parent.fcSettings.value('IconTheme') + self.action( name='ActionCloseCurrentTab', text=self.trUtf8('Close ¤t tab'), @@ -292,6 +299,79 @@ text=self.trUtf8('Zoom out'), trigger=parent.onZoomOut, ) + + # dummy actions to replace default browser actions + self.action( + name='ActionBack', + text=self.trUtf8('Back'), + trigger=None, + isEnabled=False, + icon=config.resources.getIcon('back', iconSize, iconTheme=iconTheme), + userData=(None, None), + ) + self.action( + name='ActionForward', + text=self.trUtf8('Forward'), + trigger=None, + isEnabled=False, + icon=config.resources.getIcon('forward', iconSize, iconTheme=iconTheme), + userData=(None, None), + ) + self.action( + name='ActionReload', + text=self.trUtf8('Reload'), + trigger=None, + isEnabled=False, + icon=config.resources.getIcon('reload_page', iconSize, iconTheme=iconTheme), + userData=(None, None), + ) + self.action( + name='ActionStop', + text=self.trUtf8('Stop'), + trigger=None, + isEnabled=False, + icon=config.resources.getIcon('stop', iconSize, iconTheme=iconTheme), + userData=(None, None), + ) + + self.action( + name='ActionBackIsClose', + text=self.trUtf8('Back is close'), + icon=config.resources.getIcon('button_cancel', iconSize, iconTheme=iconTheme), + trigger=None, + ) + + def intertwineBrowserActions(self, browser=None): + """intertwines Browser actions with BrowserWidget actions + @note: call everytime the current browser changes + """ + actions = ( + ('ActionBack', QtWebKit.QWebPage.Back), + ('ActionForward', QtWebKit.QWebPage.Forward), + ('ActionReload', QtWebKit.QWebPage.Reload), + ('ActionStop', QtWebKit.QWebPage.Stop), + ) + for actionName, pageAction in actions: + myPageAction = self[actionName] + newPageAction = None if browser is None else browser.pageAction(pageAction) + oldPageAction, cb = myPageAction.userData() + + if oldPageAction is not None: + myPageAction.disconnect(oldPageAction, QtCore.SIGNAL('changed()'), cb) + oldPageAction.disconnect(myPageAction, QtCore.SIGNAL('triggered()'), oldPageAction.trigger) + + if newPageAction is None: + myPageAction.setUserData((None, None)) + myPageAction.setEnabled(False) + else: + def onActionChanged(browser=browser, myPageAction=myPageAction, browserPageAction=newPageAction): + myPageAction.setEnabled(browserPageAction.isEnabled()) + + myPageAction.setEnabled(newPageAction.isEnabled()) + myPageAction.setUserData((newPageAction, onActionChanged)) + myPageAction.connect(newPageAction, QtCore.SIGNAL('changed()'), onActionChanged) + newPageAction.connect(myPageAction, QtCore.SIGNAL('triggered()'), newPageAction.trigger) + class LastBrowserState(object): """records the last known state browser""" @@ -323,7 +403,7 @@ IdEdAddressBar = 'edAddressBar' IdBtBack = 'btBack' - IdBtFwd = 'btFwd' + IdBtForward = 'btForward' IdBtReload = 'btReload' IdBtStop = 'btStop' @@ -337,8 +417,8 @@ self._initialConfigDataArrived = False + self.fcSettings = BrowserWidgetSettings(self).restore() self.fcActions = BrowserWidgetActions(self) - self.fcSettings = BrowserWidgetSettings(self).restore() self.fcViewObject = BrowserWidgetViewObject(self) self.fcGlobalFeedback = BrowserWidgetGlobalFeedback(self, idGlobalFeedback) @@ -353,6 +433,12 @@ addressbar = self.controlById(self.IdEdAddressBar) self.connect(addressbar, QtCore.SIGNAL('returnPressed()'), self.onNavBarReturnPressed) + # setup tool buttons + self.controlById(self.IdBtBack).setDefaultAction(self.fcActions['ActionBack']) + self.controlById(self.IdBtForward).setDefaultAction(self.fcActions['ActionForward']) + self.controlById(self.IdBtReload).setDefaultAction(self.fcActions['ActionReload']) + self.controlById(self.IdBtStop).setDefaultAction(self.fcActions['ActionStop']) + # fire up a new broser to make a start self.newBrowser(title=self.trUtf8('Waiting for fproxy')) self.fcActions['ActionGoToHomePage'].trigger() @@ -360,13 +446,7 @@ ######################################### ## private methods ######################################### - def _adjustTabDependendActions(self): - tabWidget = self.controlById(self.IdTabBrowsers) - self.fcActions['ActionCloseCurrentTab'].setEnabled(tabWidget.count()) - self.fcActions['ActionCloseAllTabs'].setEnabled(tabWidget.count()) - self.fcActions['ActionZoomIn'].setEnabled(tabWidget.count()) - self.fcActions['ActionZoomOut'].setEnabled(tabWidget.count()) - + #NOTE: to reduce flicker set min size to max size def _adjustTabText(self, qString): maxTabText = self.fcSettings.value('MaxTabText') minTabText = self.fcSettings.value('MinTabText') @@ -494,9 +574,7 @@ page = browser.page() settings = browser.settings() title = QtCore.QString(title) - iconSize = self.fcSettings.value('IconSize') - iconTheme = config.settings.value('IconTheme') - + # attatch browser state information lastBrowserState = LastBrowserState( icon=browser.icon(), @@ -534,15 +612,6 @@ act = browser.pageAction(page.OpenFrameInNewWindow) act.setText(self.trUtf8('Open frame in new tab')) - act = browser.pageAction(page.Back) - act.setIcon(config.resources.getIcon('back', iconSize, iconTheme=iconTheme)) - act = browser.pageAction(page.Forward) - act.setIcon(config.resources.getIcon('forward', iconSize, iconTheme=iconTheme)) - act = browser.pageAction(page.Reload) - act.setIcon(config.resources.getIcon('reload_page', iconSize, iconTheme=iconTheme)) - act = browser.pageAction(page.Stop) - act.setIcon(config.resources.getIcon('stop', iconSize, iconTheme=iconTheme)) - # customize page page.setLinkDelegationPolicy(page.DelegateAllLinks) @@ -744,17 +813,18 @@ addressbar.setText(lastBrowserState.url.toString()) def onCloseAllTabs(self, action): + # have to do it by hand to reset [BackIsClose] tabWidget = self.controlById(self.IdTabBrowsers) tabWidget.clear() - self._adjustTabDependendActions() - + self.fcActions.intertwineBrowserActions(self.currentBrowser()) + def onCloseCurrentTab(self, action): tabWidget = self.controlById(self.IdTabBrowsers) i = tabWidget.currentIndex() if i > -1: tabWidget.removeTab(i) - self._adjustTabDependendActions() - + self.fcActions.intertwineBrowserActions(self.currentBrowser()) + #TODO: open in new tab option? def onGoToFProxy(self, action): url = QtCore.QUrl() @@ -787,6 +857,12 @@ def onPageLinkHovered(self, link, title, textContent): self.fcGlobalFeedback.setFeedback(QtCore.QString(link)) + def onPageActionBackChanged(self): + act = self.sender() + browser = self.currentBrowser() + if browser is not None and act is browser.pageAction(browser.page().Back): + self._adjustBackIsClose() + def onTabContextMenuEvent(self, pt): menu = QtGui.QMenu() tabWidget = self.controlById(self.IdTabBrowsers) @@ -794,7 +870,6 @@ pt2 = tabWidget.tabBar().mapFromGlobal(pt) i = tabWidget.tabBar().tabAt(pt2) # setup menu - self._adjustTabDependendActions() actCloseBrowserUnderMouse = self.fcActions['ActionCloseBrowserUnderMouse'] actCloseBrowserUnderMouse.setEnabled(i >-1) menu.addAction(actCloseBrowserUnderMouse) @@ -802,27 +877,21 @@ act = menu.exec_(pt) if act == actCloseBrowserUnderMouse: tabWidget.removeTab(i) - self._adjustTabDependendActions() - + self.fcActions.intertwineBrowserActions(self.currentBrowser()) + def onTabCurrentChanged(self, i): tabWidget = self.controlById(self.IdTabBrowsers) browser = tabWidget.widget(i) + + self.fcActions.intertwineBrowserActions(browser) if browser is not None: - page = browser.page() lastBrowserState = browser.userData() - addressbar = self.controlById(self.IdEdAddressBar) - + addressBar = self.controlById(self.IdEdAddressBar) + # update status info - addressbar.setText(lastBrowserState.url.toString()) + addressBar.setText(lastBrowserState.url.toString()) self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) self.fcGlobalFeedback.setProgress(lastBrowserState.progress) - - # adjust actions on addressbar - self.controlById(self.IdBtBack).setDefaultAction(browser.pageAction(page.Back)) - self.controlById(self.IdBtFwd).setDefaultAction(browser.pageAction(page.Forward)) - self.controlById(self.IdBtReload).setDefaultAction(browser.pageAction(page.Reload)) - self.controlById(self.IdBtStop).setDefaultAction(browser.pageAction(page.Stop)) - self.controlById(self.IdBtBack).setDefaultAction(browser.pageAction(page.Back)) #TODO: enable/disable, but no view gives non feedback on max/min zoom def onZoomIn(self, action): @@ -841,7 +910,6 @@ print browser.textSizeMultiplier() if browser.textSizeMultiplier() >= oldMultiplier: menu.addAction(self.fcActions['ActionZoomOut']).setEnabled(False) - #********************************************************************************** # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 17:44:35
|
Revision: 744 http://fclient.svn.sourceforge.net/fclient/?rev=744&view=rev Author: jUrner Date: 2008-07-25 17:44:42 +0000 (Fri, 25 Jul 2008) Log Message: ----------- icon for browser back is close Added Paths: ----------- trunk/fclient/src/fclient/res/icons/crystal/32x32/button_cancel.png Property changes on: trunk/fclient/src/fclient/res/icons/crystal/32x32/button_cancel.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 17:43:29
|
Revision: 743 http://fclient.svn.sourceforge.net/fclient/?rev=743&view=rev Author: jUrner Date: 2008-07-25 17:43:38 +0000 (Fri, 25 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui Modified: trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-25 17:42:58 UTC (rev 742) +++ trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-25 17:43:38 UTC (rev 743) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui' # -# Created: Thu Jul 24 09:24:50 2008 +# Created: Fri Jul 25 19:05:55 2008 # by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -33,9 +33,9 @@ self.btBack = QtGui.QToolButton(self.frameTools) self.btBack.setObjectName("btBack") self.gridLayout_2.addWidget(self.btBack, 0, 0, 1, 1) - self.btFwd = QtGui.QToolButton(self.frameTools) - self.btFwd.setObjectName("btFwd") - self.gridLayout_2.addWidget(self.btFwd, 0, 1, 1, 1) + self.btForward = QtGui.QToolButton(self.frameTools) + self.btForward.setObjectName("btForward") + self.gridLayout_2.addWidget(self.btForward, 0, 1, 1, 1) self.btReload = QtGui.QToolButton(self.frameTools) self.btReload.setObjectName("btReload") self.gridLayout_2.addWidget(self.btReload, 0, 3, 1, 1) @@ -75,7 +75,7 @@ def retranslateUi(self, ViewBrowserWidget): ViewBrowserWidget.setWindowTitle(QtGui.QApplication.translate("ViewBrowserWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.btBack.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Back", None, QtGui.QApplication.UnicodeUTF8)) - self.btFwd.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Forward", None, QtGui.QApplication.UnicodeUTF8)) + self.btForward.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Forward", None, QtGui.QApplication.UnicodeUTF8)) self.btReload.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Reload", None, QtGui.QApplication.UnicodeUTF8)) self.btStop.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Stop", None, QtGui.QApplication.UnicodeUTF8)) self.tabBrowsers.setTabText(self.tabBrowsers.indexOf(self.tab), QtGui.QApplication.translate("ViewBrowserWidget", "Tab 1", None, QtGui.QApplication.UnicodeUTF8)) Modified: trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui 2008-07-25 17:42:58 UTC (rev 742) +++ trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui 2008-07-25 17:43:38 UTC (rev 743) @@ -49,7 +49,7 @@ </widget> </item> <item row="0" column="1" > - <widget class="QToolButton" name="btFwd" > + <widget class="QToolButton" name="btForward" > <property name="text" > <string>Forward</string> </property> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 17:42:48
|
Revision: 742 http://fclient.svn.sourceforge.net/fclient/?rev=742&view=rev Author: jUrner Date: 2008-07-25 17:42:58 +0000 (Fri, 25 Jul 2008) Log Message: ----------- typo Modified Paths: -------------- trunk/fclient/src/fclient/lib/qt4ex/dlgpreferences.py Modified: trunk/fclient/src/fclient/lib/qt4ex/dlgpreferences.py =================================================================== --- trunk/fclient/src/fclient/lib/qt4ex/dlgpreferences.py 2008-07-25 08:09:24 UTC (rev 741) +++ trunk/fclient/src/fclient/lib/qt4ex/dlgpreferences.py 2008-07-25 17:42:58 UTC (rev 742) @@ -111,25 +111,25 @@ def doApply(self): """Should apply changes made - @return: True on success, False otherisde + @return: True on success, False otherwise """ return True def doCancel(self): """Should cancel all changes made - @return: True on success, False otherisde + @return: True on success, False otherwise """ return True def doOk(self): """Should apply changes - @return: True on success, False otherisde + @return: True on success, False otherwise """ return True def doRestoreDefaults(self): """Should restore defaults - @return: True on success, False otherisde + @return: True on success, False otherwise """ return True This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 08:09:15
|
Revision: 741 http://fclient.svn.sourceforge.net/fclient/?rev=741&view=rev Author: jUrner Date: 2008-07-25 08:09:24 +0000 (Fri, 25 Jul 2008) Log Message: ----------- beatify 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-25 08:06:56 UTC (rev 740) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-25 08:09:24 UTC (rev 741) @@ -367,6 +367,29 @@ self.fcActions['ActionZoomIn'].setEnabled(tabWidget.count()) self.fcActions['ActionZoomOut'].setEnabled(tabWidget.count()) + def _adjustTabText(self, qString): + maxTabText = self.fcSettings.value('MaxTabText') + minTabText = self.fcSettings.value('MinTabText') + ellipsis = self.trUtf8('..') + + if minTabText < self.ForcedMinBrowserTabText: + minTabText = self.ForcedMinBrowserTabText + self.fcSettings.setValues(MinTabText=minTabText) + if maxTabText < self.ForcedMinBrowserTabText: + maxTabText = self.ForcedMinBrowserTabText + self.fcSettings.setValues(MaxTabText=maxTabText) + if minTabText > maxTabText: + minTabText = maxTabText + self.fcSettings.setValues(MinTabText=maxTabText) + + if qString.count() < minTabText: + qString = qString.append('\x20' * (minTabText - qString.count())) + else: + if maxTabText < self.ForcedMinBrowserTabText: + maxTabText = sminTabText + qString = qtools.truncateString(maxTabText, qString, ellipsis) + return qString + def _downloadImageToDisk(self, hitTestResult): px = hitTestResult.pixmap() if px.isNull(): @@ -425,29 +448,6 @@ return True return False - def _adjustTabText(self, qString): - maxTabText = self.fcSettings.value('MaxTabText') - minTabText = self.fcSettings.value('MinTabText') - ellipsis = self.trUtf8('..') - - if minTabText < self.ForcedMinBrowserTabText: - minTabText = self.ForcedMinBrowserTabText - self.fcSettings.setValues(MinTabText=minTabText) - if maxTabText < self.ForcedMinBrowserTabText: - maxTabText = self.ForcedMinBrowserTabText - self.fcSettings.setValues(MaxTabText=maxTabText) - if minTabText > maxTabText: - minTabText = maxTabText - self.fcSettings.setValues(MinTabText=maxTabText) - - if qString.count() < minTabText: - qString = qString.append('\x20' * (minTabText - qString.count())) - else: - if maxTabText < self.ForcedMinBrowserTabText: - maxTabText = sminTabText - qString = qtools.truncateString(maxTabText, qString, ellipsis) - return qString - ######################################### ## methods ######################################### @@ -459,6 +459,34 @@ tabWidget = self.controlById(self.IdTabBrowsers) return tabWidget.currentWidget() + def load(self, url, force=False, browser=None): + """loads an url in the current browser. if there is no current browser, a new browser is created + @param force: (bool) if True, a new browser is opend if there is no browser available + @param browser: browser to load the url in or None to use the current browser + @return: (bool) + """ + browser = self.currentBrowser() if browser is None else browser + tabWidget = self.controlById(self.IdTabBrowsers) + addressBar = self.controlById(self.IdEdAddressBar) + url = QtCore.QUrl(url) + + # check if we have a browser at hand + if force and browser is None: + browser = self.newBrowser() + if browser is None: + return False + + # load url + url.setScheme('http') + url.setHost(config.settings.value('FproxyConnectionHost')) + url.setPort(config.settings.value('FproxyConnectionPort')) + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Loading'))) + addressBar.setText(url.toString()) + lastBrowserState = browser.userData() + lastBrowserState.url = url + browser.load(url) + return True + def newBrowser(self, title=''): """opens a browser in a new tab""" tabWidget = self.controlById(self.IdTabBrowsers) @@ -526,34 +554,6 @@ self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) return browser - def load(self, url, force=False, browser=None): - """loads an url in the current browser. if there is no current browser, a new browser is created - @param force: (bool) if True, a new browser is opend if there is no browser available - @param browser: browser to load the url in or None to use the current browser - @return: (bool) - """ - browser = self.currentBrowser() if browser is None else browser - tabWidget = self.controlById(self.IdTabBrowsers) - addressBar = self.controlById(self.IdEdAddressBar) - url = QtCore.QUrl(url) - - # check if we have a browser at hand - if force and browser is None: - browser = self.newBrowser() - if browser is None: - return False - - # load url - url.setScheme('http') - url.setHost(config.settings.value('FproxyConnectionHost')) - url.setPort(config.settings.value('FproxyConnectionPort')) - tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Loading'))) - addressBar.setText(url.toString()) - lastBrowserState = browser.userData() - lastBrowserState.url = url - browser.load(url) - return True - #TODO: rework. we need more then one menu def populateMenu(self, menu): menu.addAction(self.fcActions['ActionGoToFProxy']) @@ -568,15 +568,15 @@ ######################################### ## overwritten events ######################################### + def closeEvent(self): + self.viewClose() + def hideEvent(self, event): self.fcGlobalFeedback.setVisible(False) def showEvent(self, event): self.fcGlobalFeedback.setVisible(True) - def closeEvent(self): - self.viewClose() - def viewClose(self): pass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 08:06:47
|
Revision: 740 http://fclient.svn.sourceforge.net/fclient/?rev=740&view=rev Author: jUrner Date: 2008-07-25 08:06:56 +0000 (Fri, 25 Jul 2008) Log Message: ----------- add AutoLoadImages browser setting Modified Paths: -------------- trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py trunk/fclient/src/fclient/Ui_ViewBrowser.py trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py Modified: trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py =================================================================== --- trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py 2008-07-25 08:06:22 UTC (rev 739) +++ trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py 2008-07-25 08:06:56 UTC (rev 740) @@ -21,6 +21,7 @@ IdCkOpenLinksInNewTab = 'ckOpenLinksInNewTab' IdCkOpenHomePageOnNewTabCreated = 'ckOpenHomePageOnNewTabCreated' IdCkBackIsClose = 'ckBackIsClose' + IdCkAutoLoadImages = 'ckAutoLoadImages' def __init__(self, parent): QtGui.QWidget.__init__(self, parent) @@ -40,6 +41,8 @@ ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('OpenHomePageOnNewTabCreated') else QtCore.Qt.Unchecked) ck = self.controlById(self.IdCkBackIsClose) ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('BackIsClose') else QtCore.Qt.Unchecked) + ck = self.controlById(self.IdCkAutoLoadImages) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('AutoLoadImages') else QtCore.Qt.Unchecked) def controlById(self, idControl): return getattr(self, idControl) @@ -56,6 +59,7 @@ OpenLinksInNewTab=self.controlById(self.IdCkOpenLinksInNewTab).checkState() == QtCore.Qt.Checked, OpenHomePageOnNewTabCreated=self.controlById(self.IdCkOpenHomePageOnNewTabCreated).checkState() == QtCore.Qt.Checked, BackIsClose=self.controlById(self.IdCkBackIsClose).checkState() == QtCore.Qt.Checked, + AutoLoadImages=self.controlById(self.IdCkAutoLoadImages).checkState() == QtCore.Qt.Checked, ) @@ -88,9 +92,10 @@ def doApply(self): self._widget.apply() + return True def doOk(self): - self._widget.apply() + return True #*********************************************************************** Modified: trunk/fclient/src/fclient/Ui_ViewBrowser.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-25 08:06:22 UTC (rev 739) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-25 08:06:56 UTC (rev 740) @@ -15,6 +15,7 @@ # x. zoom in/out # x. page actions: CopyImageToClipboard, # x. when mouse pointer is over an opend image a magnifier cursor appears. no idea how this is handled +# x. open new tab on tab bar double click #****************************************************************************************** """ @@ -222,10 +223,24 @@ ('BackIsClose', 'Bool', False, config.SettingScopeUser), #TODO: not implemented ('HomePage', 'String', QtCore.QString(), config.SettingScopeUser), ('IconSize', 'UInt', 32, config.SettingScopeUser), - ('LoadImages', 'Bool', True, config.SettingScopeUser), #TODO: not yet implemented + ('AutoLoadImages', 'Bool', True, config.SettingScopeUser), #TODO: not yet implemented ('MaxTabText', 'UInt', 20, config.SettingScopeUser), #NOTE: make shure Max >= Min and Max and Min > 0 ('MinTabText', 'UInt', 7, config.SettingScopeUser), ) + + def setValues(self, **kws): + autoLoadImages = kws.get('AutoLoadImages', None) + if autoLoadImages is not None: + browserWidget = self.parent() + tabWidget = browserWidget.controlById(browserWidget.IdTabBrowsers) + for i in xrange(tabWidget.count()): + browser = tabWidget.widget(i) + settings = browser.settings() + settings.setAttribute(settings.AutoLoadImages, autoLoadImages) + config.SettingsBase.setValues(self, **kws) + + + class BrowserWidgetActions(config.ActionsBase): @@ -322,10 +337,6 @@ self._initialConfigDataArrived = False - #XXX ? - #self.fproxyHost = None - #self.fproxyPort = None - self.fcActions = BrowserWidgetActions(self) self.fcSettings = BrowserWidgetSettings(self).restore() self.fcViewObject = BrowserWidgetViewObject(self) @@ -474,6 +485,7 @@ settings.setAttribute(settings.JavascriptCanOpenWindows, False) settings.setAttribute(settings.JavascriptCanAccessClipboard, False) settings.setAttribute(settings.PluginsEnabled, False) + settings.setAttribute(settings.AutoLoadImages, self.fcSettings.value('AutoLoadImages')) # connect browser signals self.connect(browser, QtCore.SIGNAL('loadStarted()'), self.onBrowserLoadStarted) Modified: trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui 2008-07-25 08:06:22 UTC (rev 739) +++ trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui 2008-07-25 08:06:56 UTC (rev 740) @@ -67,10 +67,6 @@ </widget> </item> </layout> - <zorder>ckOpenLinksInNewTab</zorder> - <zorder>ckOpenBookmarksInNewTab</zorder> - <zorder>ckOpenAddressBarInNewTab</zorder> - <zorder>groupBox_2</zorder> </widget> </item> <item> @@ -99,6 +95,13 @@ </property> </widget> </item> + <item row="2" column="0" > + <widget class="QCheckBox" name="ckAutoLoadImages" > + <property name="text" > + <string>Auto load images</string> + </property> + </widget> + </item> </layout> </widget> </item> Modified: trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py 2008-07-25 08:06:22 UTC (rev 739) +++ trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py 2008-07-25 08:06:56 UTC (rev 740) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui' # -# Created: Thu Jul 24 12:03:27 2008 +# Created: Fri Jul 25 10:02:49 2008 # by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -61,6 +61,9 @@ self.ckBackIsClose = QtGui.QCheckBox(self.groupBox_2) self.ckBackIsClose.setObjectName("ckBackIsClose") self.gridLayout_2.addWidget(self.ckBackIsClose, 1, 0, 1, 1) + self.ckAutoLoadImages = QtGui.QCheckBox(self.groupBox_2) + self.ckAutoLoadImages.setObjectName("ckAutoLoadImages") + self.gridLayout_2.addWidget(self.ckAutoLoadImages, 2, 0, 1, 1) self.horizontalLayout.addWidget(self.groupBox_2) self.gridLayout_3.addLayout(self.horizontalLayout, 1, 0, 1, 1) spacerItem = QtGui.QSpacerItem(20, 297, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) @@ -79,6 +82,7 @@ self.groupBox_2.setTitle(QtGui.QApplication.translate("PrefsBrowserWidget", "Others", None, QtGui.QApplication.UnicodeUTF8)) self.ckOpenHomePageOnNewTabCreated.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Open home page when a new tab is created", None, QtGui.QApplication.UnicodeUTF8)) self.ckBackIsClose.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Back is close", None, QtGui.QApplication.UnicodeUTF8)) + self.ckAutoLoadImages.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Auto load images", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 08:06:14
|
Revision: 739 http://fclient.svn.sourceforge.net/fclient/?rev=739&view=rev Author: jUrner Date: 2008-07-25 08:06:22 +0000 (Fri, 25 Jul 2008) Log Message: ----------- some notes Modified Paths: -------------- trunk/fclient/src/fclient/lib/qt4ex/lib/settings.py Modified: trunk/fclient/src/fclient/lib/qt4ex/lib/settings.py =================================================================== --- trunk/fclient/src/fclient/lib/qt4ex/lib/settings.py 2008-07-25 07:14:51 UTC (rev 738) +++ trunk/fclient/src/fclient/lib/qt4ex/lib/settings.py 2008-07-25 08:06:22 UTC (rev 739) @@ -192,6 +192,8 @@ """restores default values for settings @param names: names to restore defaults for or no name to restore defaults of all settings @return: (dict) name --> value of restored values + @note: this method calls L{setValues}, so it is save to overwrite L{setValues} only to intercept + setting of values """ names = names if names else self._settingsOrder d = dict([(name, self.default(name)) for name in names]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:14:43
|
Revision: 738 http://fclient.svn.sourceforge.net/fclient/?rev=738&view=rev Author: jUrner Date: 2008-07-25 07:14:51 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes Modified Paths: -------------- trunk/fclient/src/fclient/Ui_ViewDownloads.py Modified: trunk/fclient/src/fclient/Ui_ViewDownloads.py =================================================================== --- trunk/fclient/src/fclient/Ui_ViewDownloads.py 2008-07-25 07:14:19 UTC (rev 737) +++ trunk/fclient/src/fclient/Ui_ViewDownloads.py 2008-07-25 07:14:51 UTC (rev 738) @@ -27,6 +27,7 @@ if __name__ == '__main__': # see --> http://bugs.python.org/issue1510172 . works only current dir and below import os; __path__ = [os.path.dirname(__file__)] +import os from PyQt4 import QtCore, QtGui from . import config @@ -56,7 +57,7 @@ QtGui.QItemDelegate.__init__(self, parent) def paint(self, painter, option, index): - if index.column() != self.parent().HeaderIndexProgressBar: + if index.column() != self.parent().HeaderIndexProgress: return QtGui.QItemDelegate.paint(self, painter, option, index) application = QtGui.QApplication.instance() @@ -78,7 +79,10 @@ # Set the progress and text values of the style option. progressBarOption.progress = progress - progressBarOption.text = '%s%%' % round(progress * 100 / required, 2) + if required: + progressBarOption.text = '%s%%' % round(progress * 100 / required, 2) + else: + progressBarOption.text = '0%' # Draw the progress bar onto the view. application.style().drawControl(QtGui.QStyle.CE_ProgressBar, progressBarOption, painter) @@ -88,10 +92,11 @@ #********************************************************************************** class TreeItem(QtGui.QTreeWidgetItem): - def __init__(self, fcpRequest, *params): + def __init__(self, fcpIdentifier, *params): QtGui.QTreeWidgetItem.__init__(self, *params) - self.fcpRequest = fcpRequest - + self.fcpIdentifier = fcpIdentifier + + #********************************************************************************** # #********************************************************************************** @@ -116,7 +121,7 @@ HeaderIndexName = 0 HeaderIndexFoo = 1 - HeaderIndexProgressBar = 2 + HeaderIndexProgress = 2 def __init__(self, parent, idGlobalFeedback=config.IdMainWindow): QtGui.QWidget.__init__(self, parent) @@ -129,23 +134,28 @@ self.fcpEvents = ( (config.fcpClient.events.ConfigData, self.onFcpConfigData), (config.fcpClient.events.RequestCompleted, self.onFcpRequestCompleted), - (config.fcpClient.events.RequestProgress, self.onFcpRequestProgress), (config.fcpClient.events.RequestFailed, self.onFcpRequestFailed), (config.fcpClient.events.RequestModified, self.onFcpRequestModified), + (config.fcpClient.events.RequestProgress, self.onFcpRequestProgress), + (config.fcpClient.events.RequestStarted, self.onFcpRequestStarted), ) config.fcpClient.events += self.fcpEvents + self.fcHeadeLabels = {} + self.fcpRequests = {} + + #XXX + self.foo = False - self.fcRequests = Requests() + + def retranslateUi(self, parent): self.fcHeadeLabels = { self.HeaderIndexName: self.trUtf8('Name'), self.HeaderIndexFoo: self.trUtf8('Foo'), - self.HeaderIndexProgressBar: self.trUtf8('Progress'), + self.HeaderIndexProgress: self.trUtf8('Progress'), } - self.tree.setHeaderLabels([i[1] for i in sorted(self.fcHeadeLabels.items())]) - self.tree.setItemDelegate(DownloadTreeDelegate(self)) - + def closeEvent(self): self.viewClose() @@ -154,12 +164,24 @@ config.fcpClient.events -= self.fcpEvents - def addRequest(self, fcpIdentifier): - fcpRequest = config.fcpClient.getRequest(fcpIdentifier) - item= TreeItem(fcpRequest, self.tree) - self.fcRequests.addRequest(fcpIdentifier, item) + def downloadFile(self, fcpKey, fileName, **kws): + """""" + fileName = unicode(fileName) + fcpIdentifier = config.fcpClient.getFile(fcpKey, fileName, **kws) + item= TreeItem(fcpIdentifier, self.tree) + item.setData( + self.HeaderIndexName, + QtCore.Qt.DisplayRole, + QtCore.QVariant(os.path.basename(fileName)) + ) + progressBar = QtGui.QProgressBar(self) + progressBar.setRange(0, 0) + self.tree.setItemWidget(item, self.HeaderIndexProgress, progressBar) + self.fcpRequests[fcpIdentifier] = item + + ######################################### ## methods ######################################### @@ -169,20 +191,62 @@ ######################################### ## fcp event handlers ######################################### - def onFcpConfigData(self, event, msg): - pass + def onFcpConfigData(self, fcpEvent, fcpRequest): + if not self.foo: + self.foo = True + + return + # for testing: dl some frost.zip + key = fcp2.Key('CHK@tJ0qyIr8dwvYKoSkmR1N-soABstL0RjgiYqQm3Gtv8g,Pqj7jpPUBzRgnVTaA3fEw6gE8QHcJsTwA4liL9FZ-Fg,AAIC--8/frost-04-Mar-2008.zip') + fileName = config.guessFileNameFromKey(key, default=self.trUtf8('Unknown.file')) + directory = config.settings.value('DownloadDir') + fpath = os.path.join(unicode(directory), unicode(fileName)) + self.downloadFile(key, fpath) - def onFcpRequestCompleted(self, event, msg): + + def onFcpRequestCompleted(self, fcpEvent, fcpRequest): + item = self.fcpRequests.get(fcpRequest['Identifier'], None) + if item is not None: + progressBar = self.tree.itemWidget(item, self.HeaderIndexProgress) + progressBar.setValue(progressBar.maximum()) + + def onFcpRequestFailed(self, fcpEvent, fcpRequest): pass - def onFcpRequestProgress(self, event, msg): - pass + + #TODO: not tested + def onFcpRequestModified(self, fcpEvent, fcpRequest): + if fcp2.ConstRequestModified.Identifier in fcpRequest['Modified']: + newFcpIdentifier = fcpRequest['Identifier'] + oldFcpIdentifier = fcpRequest['Modified'][fcp2.ConstRequestModified.Identifier] + item = self.fcpRequests.get(oldFcpIdentifier, None) + if item is not None: + del self.fcpRequests[oldFcpIdentifier] + self.fcpRequests[newFcpIdentifier] = item + item.fcpIdentifier = newFcpIdentifier + + if fcp2.ConstRequestModified.Filename in fcpRequest['Modified']: + item = self.fcpRequests.get(fcpRequest['Identifier'], None) + if item is not None: + item.setData( + self.HeaderIndexName, + QtCore.Qt.DisplayRole, + QtCore.QVariant(os.path.basename(fcpRequest['Filename'])) + ) + + + def onFcpRequestProgress(self, fcpEvent, fcpRequest): + item = self.fcpRequests.get(fcpRequest['Identifier'], None) + if item is not None: + progressBar = self.tree.itemWidget(item, self.HeaderIndexProgress) - def onFcpRequestFailed(self, event, msg): - pass + progressBar.setRange(0, fcpRequest['ProgressRequired']) + progressBar.setValue(fcpRequest['ProgressSucceeded']) - def onFcpRequestModified(self, event, msg): + + def onFcpRequestStarted(self, fcpEvent, fcpRequest): pass + #********************************************************************************** # @@ -193,8 +257,7 @@ from . import Ui_ViewConnection from . import Ui_ViewLogger from . import Ui_MainWindow - - + app = QtGui.QApplication(sys.argv) mainWindow = Ui_MainWindow.MainWindow() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:14:10
|
Revision: 737 http://fclient.svn.sourceforge.net/fclient/?rev=737&view=rev Author: jUrner Date: 2008-07-25 07:14:19 +0000 (Fri, 25 Jul 2008) Log Message: ----------- fproxy is set now on connection pane 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-25 07:13:57 UTC (rev 736) +++ trunk/fclient/src/fclient/Ui_ViewConnection.py 2008-07-25 07:14:19 UTC (rev 737) @@ -59,11 +59,6 @@ ('ConnectionTimerTimeout', 'UInt', 500, 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 - ('ConnectionHost', 'String', fcp2.Client.DefaultFcpHost, config.SettingScopeUser), - ('ConnectionPort', 'UInt', fcp2.Client.DefaultFcpPort, config.SettingScopeUser), ) class ConnectionViewObject(config.ViewObject): @@ -129,10 +124,13 @@ class ViewConnectionWidget(QtGui.QWidget, Ui_ViewConnectionWidget): IdBtConnect = 'btConnect' - IdckAutoConnect = 'ckAutoConnect' - IdEdConnectionHost = 'edConnectionHost' #TODO: combobox? validate input. - IdSpinConnectionPort = 'spinConnectionPort' + IdCkFcpAutoConnect = 'ckFcpAutoConnect' + IdEdFcpFcpConnectionHost = 'edFcpConnectionHost' + IdFcpSpinFcpConnectionPort = 'spinFcpConnectionPort' + IdEdFproxyConnectionHost = 'edFproxyConnectionHost' + IdFproxySpinConnectionPort = 'spinFproxyConnectionPort' + def __init__(self, parent, idGlobalFeedback=config.IdMainWindow): QtGui.QWidget.__init__(self, parent) @@ -188,25 +186,36 @@ return self._isCreated = True - # setup host / port boxes - edHost = self.controlById(self.IdEdConnectionHost) - edHost.setText(self.fcSettings.value('ConnectionHost')) + # setup fcp host / port + edHost = self.controlById(self.IdEdFcpFcpConnectionHost) + edHost.setText(config.settings.value('FcpConnectionHost')) + self.connect(edHost, QtCore.SIGNAL('textChanged(const QString &)'), self.onEdFcpConnectionHostChanged) - spinPort = self.controlById(self.IdSpinConnectionPort) + spinPort = self.controlById(self.IdFcpSpinFcpConnectionPort) spinPort.setRange(0, 0xFFFF) #TODO: no idea if port range (0, 0xFFFF) this is reasonable - spinPort.setValue(self.fcSettings.value('ConnectionPort')) + spinPort.setValue(config.settings.value('FcpConnectionPort')) + self.connect(spinPort, QtCore.SIGNAL('valueChanged(int)'), self.onSpinFcpConnectionPortChanged) - # setup Connect button and AutoConnect checkbox - doAutoConnect = self.fcSettings.value('AutoConnect') - ck = self.controlById(self.IdckAutoConnect) + doAutoConnect = config.settings.value('FcpAutoConnect') + ck = self.controlById(self.IdCkFcpAutoConnect) ck.setChecked(doAutoConnect) - self.connect(ck, QtCore.SIGNAL('stateChanged(int)'), self.onCkAutoConnectStateChanged) + self.connect(ck, QtCore.SIGNAL('stateChanged(int)'), self.onCkFcpAutoConnectStateChanged) + + # setup fproxy host / port + edHost = self.controlById(self.IdEdFproxyConnectionHost) + edHost.setText(config.settings.value('FproxyConnectionHost')) + self.connect(edHost, QtCore.SIGNAL('textChanged(const QString &)'), self.onEdFproxyConnectionHostChanged) + spinPort = self.controlById(self.IdFproxySpinConnectionPort) + spinPort.setRange(0, 0xFFFF) #TODO: no idea if port range (0, 0xFFFF) this is reasonable + spinPort.setValue(config.settings.value('FproxyConnectionPort')) + self.connect(spinPort, QtCore.SIGNAL('valueChanged(int)'), self.onSpinFproxyConnectionPortChanged) + bt = self.controlById(self.IdBtConnect) self.connect(bt, QtCore.SIGNAL('clicked(bool)'), self.onBtConnectClicked) if doAutoConnect: self.controlById(self.IdBtConnect).click() - + ######################################## ## overwritten methods ######################################### @@ -233,9 +242,22 @@ config.fcpClient.close() - def onCkAutoConnectStateChanged(self, state): - self.fcSettings.setValues(AutoConnect=state == QtCore.Qt.Checked) + def onCkFcpAutoConnectStateChanged(self, state): + config.settings.setValues(FcpAutoConnect=state == QtCore.Qt.Checked) + def onEdFcpConnectionHostChanged(self, text): + config.settings.setValues(FcpConnectionHost=text) + + def onSpinFcpConnectionPortChanged(self, value): + config.settings.setValues(FcpConnectionPort=value) + + def onEdFproxyConnectionHostChanged(self, text): + config.settings.setValues(FproxyConnectionHost=text) + + def onSpinFproxyConnectionPortChanged(self, value): + config.settings.setValues(FproxyConnectionPort=value) + + ######################################### ## fcp event onrs ######################################### This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:13:48
|
Revision: 736 http://fclient.svn.sourceforge.net/fclient/?rev=736&view=rev Author: jUrner Date: 2008-07-25 07:13:57 +0000 (Fri, 25 Jul 2008) Log Message: ----------- complete rework 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-25 07:13:49 UTC (rev 735) +++ trunk/fclient/src/fclient/Ui_ViewBrowser.py 2008-07-25 07:13:57 UTC (rev 736) @@ -3,9 +3,8 @@ # x. someday. maybe. reimpl to browse via fcp. # x. page history is cleared if we get an error on loading a page. reimpl page history? # x. back-is-close like behaviour -# x. always open links in new tabs # x. backand forward buttons suck somehow. sometimes fwd is enabled even if no fwd is available. reimpl page history? -# x. save page / image whatever +# x. save page to disk # x. download. idea is to add dls to global download widget and mark them (some color code) as new content. # alt would be to to do it firefox like in a separate widget. maybe an option to adjust if browser dls should be # persistent or not @@ -14,164 +13,138 @@ # x. give feedback on tabs about load / finisched / error. maybe some color code. wait for new QTabWidget features (qt4.5) # x. close button on tabs. wait for new QTabWidget features (qt4.5) # x. zoom in/out -# +# x. page actions: CopyImageToClipboard, +# x. when mouse pointer is over an opend image a magnifier cursor appears. no idea how this is handled #****************************************************************************************** +""" + +@newfield signal: signal, signals +""" 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, QtWebKit -from PyQt4 import QtCore, QtGui, QtWebKit, QtNetwork +from . import config -from . import config from .lib import fcp2 +from .lib.qt4ex.lib import tools as qtools +from .lib.compactpath.qt4 import pathlabelwrap from . import Ui_DlgPropsBrowserObject +from . import Ui_DlgDownloadKeyToDisk from .tpls.Ui_ViewBrowserWidgetTpl import Ui_ViewBrowserWidget -#********************************************************************************** +#***************************************************************************************** # -#********************************************************************************** -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 Page(QtWebKit.QWebPage): + def __init__(self, parent): + QtWebKit.QWebPage.__init__(self, parent) -#********************************************************************************** + #def acceptNavigationRequest(self, frame, request, typeRequest): + # return True + +#***************************************************************************************** # -#********************************************************************************** -class Actions(config.ActionsBase): +#***************************************************************************************** +class Browser(QtWebKit.QWebView): + """ browser customized for freenet + """ - def __init__(self, parent): - config.ActionsBase.__init__(self, parent) + MaxProgress = 100 - self.action( - name='ActionCloseCurrentTab', - text=self.trUtf8('Close ¤t tab'), - trigger=parent.onActionCloseCurrentTab, - #isEnabled=False, - ) - self.action( # context menu only - name='ActionCloseBrowserUnderMouse', - text=self.trUtf8('&Close tab'), - trigger=None, - #isEnabled=False, - ) - self.action( - name='ActionGoToFProxy', - text=self.trUtf8('Go to f&Proxy homepage'), - trigger=parent.onActionGoToFProxy, - isEnabled=True, - ) - self.action( - name='ActionGoToHomePage', - text=self.trUtf8('Go to &homepage'), - trigger=parent.onActionGoToHomePage, - isEnabled=True, - ) + def __init__(self, parent=None, userData=None): + QtWebKit.QWebView.__init__(self, parent) + + page = Page(self) + self.setPage(page) + + #NOTE: we store last progress made to set busy cursor accordingly + self._lastProgress = 0 + self._userData = userData + + # connect actions + 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.pageAction(QtWebKit.QWebPage.Stop), QtCore.SIGNAL('triggered()'), self.onActionStopTriggered) + + ################################ + ## methods + ################################ + #def createWindow(self, typeWindow): + # pass + + def load(self, url): + self._lastProgress = 0 + return QtWebKit.QWebView.load(self, url) - self.action( - name='ActionCloseAllTabs', - text=self.trUtf8('Close &all tabs'), - trigger=parent.onActionCloseAllTabs, - isEnabled=True, - ) - - -class GlobalFeedback(config.GlobalFeedbackBase): - """wrapper for global statusbar widgets, menus""" + def setLastStatusMessage(self, qString): + self._lastStatusMessage = qString - def __init__(self, parent, idGlobalFeedback): - config.GlobalFeedbackBase.__init__(self, parent, idGlobalFeedback) - - # menus - self.menus = [] - if self.menuBar is not None and hasattr(parent, 'fcViewObject'): - menu = QtGui.QMenu(parent.fcViewObject.displayName, self.menuBar) - parent.populateMenu(menu) - self.menus.append(menu) - self.menuBar.addViewMenu(menu) - + def setUrl(self, url): + return self.load(url) + + def setContents(self, *args): + """sets the contents of the browser without changing its url""" + self._lastProgress = 0 + return QtWebKit.QWebView.setContents(self, *args) + + def setHtml(self, *args): + """sets the contents of the browser without changing its url""" + self._lastProgress = 0 + return QtWebKit.QWebView.setHtm(self, *args) + + def setPage(self, page): + """sets the contents of the browser without changing its url""" + self._lastProgress = 0 + return QtWebKit.QWebView.setPage(self, page) + + def setUserData(self, userData): + self._userData = userData + + def mouseMoveEvent(self, event): + if self._lastProgress < self.MaxProgress: + self.setCursor(QtCore.Qt.BusyCursor) + else: + QtWebKit.QWebView.mouseMoveEvent(self, event) - def setVisible(self, flag): - if self.menuBar is not None: - for menu in self.menus: - menu.children()[0].setVisible(flag) + def userData(self): + return self._userData + + ############################### + ## event handlers + ############################### + def onActionStopTriggered(self): + # check wich cursor to set cos we may have busy cursor set + pt = self.mapFromGlobal(self.cursor().pos()) #TODO: self.mapFromGlobal(self.viewPort().cursor().pos()) ?? + frame = self.page().currentFrame() + hitTest = frame.hitTestContent(pt) + #if not hitTest.isNull(): #TODO: looks like hitTest.isNull() alwas returns True + if hitTest.linkUrl().isValid(): + self.setCursor(QtCore.Qt.PointingHandCursor) + else: + self.setCursor(QtCore.Qt.ArrowCursor) + + def onLoadStarted(self): + self._lastProgress = 0 - - -class Settings(config.SettingsBase): - _key_ = config.IdViewBrowserWidget - _settings_ = ( - ('HomePage', 'String', '', config.SettingScopeUser), - ('HomePageIsStartPage', 'Bool', False, config.SettingScopeUser), - ) - - -class BrowserViewObject(config.ViewObject): + def onLoadProgress(self, n): + self._lastProgress = n + + def onLoadFinished(self): + self._lastProgress = self.MaxProgress + self.onActionStopTriggered() + + def onPageDownloadRequested(self, networkRequest): + self.emit(QtCore.SIGNAL('downloadRequested(const QNetworkRequest &)'), networkRequest) - def __init__(self, parent): - config.ViewObject. __init__(self, parent) - - self.name=parent.objectName() - self.displayName=self.trUtf8('Browser') - self.icon=QtGui.QIcon() - #********************************************************************************** # #********************************************************************************** -## looks we could serve pages via fcp, bypassing fproxy -## no reason to do so.. -## -##class NetworkAccessManager(QtNetwork.QNetworkAccessManager): -## -## def __init__(self, parent): -## QtNetwork.QNetworkAccessManager.__init__(self, parent) -## -## def createRequest(self, operation, request, outgoingData): -## print 'createRequest', request.url() -## reply = QtNetwork.QNetworkAccessManager.createRequest(self, operation, request, outgoingData) -## #TODO: implement QNetworkReply() -## return reply -## -## -##class Browser(QtWebKit.QWebView): -## -##def __init__(self, browserWidget): -## QtWebKit.QWebView.__init__(self, browserWidget) -## -## self.nam = NetworkAccessManager(self) -## self.page().setNetworkAccessManager(self.nam) -## -#********************************************************************************** -# -#********************************************************************************** -class BrowserActions(config.ActionsBase): - - def __init__(self, webView): - config.ActionsBase.__init__(self, webView) - - self.action( - name='ActionObjectProperties', - text=self.trUtf8('Properties..'), - trigger=None, - isEnabled=True, - ) - - -class BrowserGlobalFeedback(config.GlobalFeedbackBase): +class BrowserWidgetGlobalFeedback(config.GlobalFeedbackBase): """wrapper for global statusbar widgets, menus""" def __init__(self, parent, idGlobalFeedback): @@ -186,455 +159,398 @@ self.menuBar.addViewMenu(menu) # status bar widgets - self.label1 = None + self.labelStatus = None self.progress = None + self.labelFeedbackWrap = None if self.statusBar is not None: - self.label1 = QtGui.QLabel(parent.trUtf8('progress: '), self.statusBar) - self.statusBar.addWidget(self.label1) + self.labelStatus = QtGui.QLabel(QtCore.QString(), self.statusBar) + self.statusBar.addWidget(self.labelStatus) self.progress = QtGui.QProgressBar(self.statusBar) - self.progress.setRange(0, 100) + self.progress.setRange(0, Browser.MaxProgress) self.progress.setValue(0) self.statusBar.addWidget(self.progress) + + label = QtGui.QLabel(self.statusBar) + label.setFrameStyle(QtGui.QLabel.Sunken | QtGui.QLabel.Box) + self.labelFeedbackWrap = pathlabelwrap.PathLabelWrap( + label, + path_module=posixpath, + ) + self.statusBar.addWidget(self.labelFeedbackWrap.label, 1) - self.labelStatus = QtGui.QLabel(QtCore.QString(), self.statusBar) - self.statusBar.addWidget(self.labelStatus) - - + def setVisible(self, flag): if self.menuBar is not None: for menu in self.menus: menu.children()[0].setVisible(flag) if self.statusBar is not None: - self.label1.setVisible(flag) self.progress.setVisible(flag) self.labelStatus.setVisible(flag) + self.labelFeedbackWrap.label.setVisible(flag) def setProgress(self, n): if self.progress is not None: self.progress.setValue(n) - def setStatusMessage(self, text): + def setStatusMessage(self, qString): if self.labelStatus is not None: - self.labelStatus.setText(text) + self.labelStatus.setText(qString) + + def setFeedback(self, qString): + if self.labelFeedbackWrap is not None: + self.labelFeedbackWrap.setPath(unicode(qString)) + +class BrowserWidgetViewObject(config.ViewObject): + + def __init__(self, parent): + config.ViewObject. __init__(self, parent) + + self.name=parent.objectName() + self.displayName=self.trUtf8('Browser') + self.icon=QtGui.QIcon() + -class BrowserSettings(config.SettingsBase): +class BrowserWidgetSettings(config.SettingsBase): _key_ = config.IdViewBrowserWidget _settings_ = ( - ('AlwaysOpenLinksInNewTab', 'Bool', False, config.SettingScopeUser), - ('BackIsClose', 'Bool', False, config.SettingScopeUser), - ('MaxTabText', 'UInt', 20, config.SettingScopeUser), - ('IconSize', 'UInt', 32, config.SettingScopeUser) + ('OpenLinksInNewTab', 'Bool', False, config.SettingScopeUser), + ('OpenAddressBarInNewTab', 'Bool', False, config.SettingScopeUser), + ('OpenBookmarksInNewTab', 'Bool', False, config.SettingScopeUser), + ('OpenHomePageOnNewTabCreated', 'Bool', False, config.SettingScopeUser), + ('BackIsClose', 'Bool', False, config.SettingScopeUser), #TODO: not implemented + ('HomePage', 'String', QtCore.QString(), config.SettingScopeUser), + ('IconSize', 'UInt', 32, config.SettingScopeUser), + ('LoadImages', 'Bool', True, config.SettingScopeUser), #TODO: not yet implemented + ('MaxTabText', 'UInt', 20, config.SettingScopeUser), #NOTE: make shure Max >= Min and Max and Min > 0 + ('MinTabText', 'UInt', 7, config.SettingScopeUser), ) - -class Page(QtWebKit.QWebPage): +class BrowserWidgetActions(config.ActionsBase): + def __init__(self, parent): - QtWebKit.QWebPage.__init__(self, parent) + config.ActionsBase.__init__(self, parent) - def acceptNavigationRequest(self, frame, request, typeRequest): - return True + self.action( + name='ActionCloseCurrentTab', + text=self.trUtf8('Close ¤t tab'), + trigger=parent.onCloseCurrentTab, + ) + self.action( # context menu only + name='ActionCloseBrowserUnderMouse', + text=self.trUtf8('&Close tab'), + trigger=None, + ) + self.action( + name='ActionCloseAllTabs', + text=self.trUtf8('Close &all tabs'), + trigger=parent.onCloseAllTabs, + ) + self.action( + name='ActionOpenNewTab', + text=self.trUtf8('Open &new tab'), + trigger=parent.onOpenNewTab, + ) + self.action( + name='ActionGoToFProxy', + text=self.trUtf8('Go to f&Proxy homepage'), + trigger=parent.onGoToFProxy, + ) + self.action( + name='ActionGoToHomePage', + text=self.trUtf8('Go to &homepage'), + trigger=parent.onGoToHomePage, + ) + self.action( + name='ActionObjectProperties', + text=self.trUtf8('Properties..'), + trigger=None, + ) + self.action( + name='ActionZoomIn', + text=self.trUtf8('Zoom in'), + trigger=parent.onZoomIn, + ) + self.action( + name='ActionZoomOut', + text=self.trUtf8('Zoom out'), + trigger=parent.onZoomOut, + ) - -class Browser(QtWebKit.QWebView): - +class LastBrowserState(object): + """records the last known state browser""" - def __init__(self, parent, idGlobalFeedback=config.IdMainWindow, tabWidget=None, navBar=None): - QtWebKit.QWebView.__init__(self, parent) - - self.fcActions = BrowserActions(self) - self.fcSettings = BrowserSettings(self) - self.fcGlobalFeedback = BrowserGlobalFeedback(self, idGlobalFeedback) - - self.navBar = navBar - self.tabWidget = tabWidget - - settings = self.settings() - settings.setAttribute(settings.PluginsEnabled, False) - #settings.setAttribute(settings.AutoLoadImages, False) - - page = Page(self) - self.setPage(page) - #page = self.page() - - self.lastProgress = 0 - self.lastStatusMessage = self.trUtf8('Waiting') + __slots__ = ('icon', 'progress', 'statusMessage', 'title', 'url') + + def __init__(self, icon=None, progress=0, statusMessage=None, title=None, url=None): + self.progress = 0 + self.icon = tCore.QIcon() if icon is None else icon + self.statusMessage = QtCore.QString() if statusMessage is None else statusMessage + self.title = QtCore.QString() if title is None else title #NOTE: opening a browser in a new tab may take a while to load. # self.url() will return '' untill the page is found, so we handle - # it ourself and keep track of the last known url in self.lastUrl + # it ourself and keep track of the last known url in self._lastUrl # to give feedback to the user on the navbar. downside is we have # to reimplement contextMenuEvent() :-( - self.lastUrl = QtCore.QUrl() - #self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - page.setLinkDelegationPolicy(page.DelegateAllLinks) - - # adjust actions - act = self.pageAction(page.OpenLinkInNewWindow) - act.setText(self.trUtf8('Open page in new tab')) - act = self.pageAction(page.OpenImageInNewWindow) - act.setText(self.trUtf8('Open image in new tab')) - act = self.pageAction(page.OpenFrameInNewWindow) - act.setText(self.trUtf8('Open frame in new tab')) - - # adjust action icons - #TODO: tool buttons do not adjust themselves to huge icons. how to adjust? - iconSize = self.fcSettings.value('IconSize') - iconTheme = config.settings.value('IconTheme') - acts = ( - (page.Back, 'back'), - (page.Forward, 'forward'), - (page.Reload, 'reload_page'), - (page.Stop, 'stop'), - ) - for a, iconName in acts: - act = self.pageAction(a) - act.setIcon(config.resources.getIcon(iconName, iconSize, iconTheme=iconTheme)) - - # connect actions - #TODO: download action - 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.connect(self.pageAction(QtWebKit.QWebPage.Stop), QtCore.SIGNAL('triggered()'), self.onActionStopTriggered) - - - # not needed. we handle OpenLinkInNewWindow et al in contextMenuEvent - #def createWindow(self, typeWindow): - # pass - - def load(self, url): - self.lastUrl = QtCore.QUrl(url) - if self.isCurrentBrowser(): - if self.fcGlobalFeedback is not None and self.isCurrentBrowser(): - self.navBar.setText(self.lastUrl.toString()) - QtWebKit.QWebView.load(self, url) - - setUrl = load - - - ################################# - ## overwritten events - ################################ - def contextMenuEvent(self, event): - - frame = self.page().currentFrame() - page = self.page() - hitTest = frame.hitTestContent(event.pos()) - - #if not hitTest.isNull(): #TODO: looks like hitTest.isNull() alwas returns True - - menu = QtGui.QMenu() - - menu.addAction(self.pageAction(page.OpenLink)) - menu.addAction(self.pageAction(page.OpenLinkInNewWindow)) - menu.addAction(self.pageAction(page.CopyLinkToClipboard)) - ##menu.addAction(DownloadLinkToDisk)) - - menu.addSeparator() - menu.addAction(self.pageAction(page.OpenImageInNewWindow)) - menu.addAction(self.pageAction(page.DownloadImageToDisk)) - menu.addAction(self.pageAction(page.CopyImageToClipboard)) - - menu.addSeparator() - menu.addAction(self.pageAction(page.OpenFrameInNewWindow)) - - menu.addSeparator() - menu.addAction(self.pageAction(page.Copy)) - - menu.addAction(self.fcActions['ActionObjectProperties']) - - downloadsWidget = config.ObjectRegistry.get(config.IdViewCDownloadsWidget) - self.pageAction(page.DownloadImageToDisk).setEnabled(downloadsWidget is not None) - - action = menu.exec_(event.globalPos()) - if action in (self.pageAction(page.OpenLinkInNewWindow), self.pageAction(page.OpenImageInNewWindow), self.pageAction(page.OpenFrameInNewWindow)): - if self.tabWidget is not None: - browser = self.__class__(self.tabWidget, - idGlobalFeedback=self.fcGlobalFeedback.id, - tabWidget=self.tabWidget, - navBar=self.navBar, - ) - self.tabWidget.addTab(browser, self.trUtf8('Loading')) - self.tabWidget.tabBar().setVisible(self.tabWidget.count()) - if action == self.pageAction(page.OpenLinkInNewWindow): - browser.load(hitTest.linkUrl()) - elif action == self.pageAction(page.OpenImageInNewWindow): - browser.load(hitTest.imageUrl()) - elif action == self.pageAction(page.OpenFrameInNewWindow): - browser.load(hitTest.frame().url()) - - elif action == self.pageAction(page.DownloadImageToDisk): - url = hitTest.imageUrl().toString() - try: - url = str(url) - except UnicodeEncodeError: - #TODO: handle - return - try: - key = fcp2.Key(url) - except ValueError: - #TODO: handle - return - requestIdentifier = config.fcpClient.getData(key) - downloadsWidget.addRequest(requestIdentifier) - - elif action == self.fcActions['ActionObjectProperties']: - dlg = Ui_DlgPropsBrowserObject.PropsBrowserObjectDlg(self, hitTest=hitTest) - if dlg.exec_() == dlg.Accepted: - pass - - - - def showEvent(self, event): - self.fcGlobalFeedback.setVisible(True) - self.setProgress(self.lastProgress) - self.setStatusMessage(self.lastStatusMessage) - if self.navBar is not None: - self.navBar.setText(self.lastUrl.toString()) - - - def hideEvent(self, event): - self.fcGlobalFeedback.setVisible(False) - - def mouseMoveEvent(self, event): - if self.lastProgress < 100: - self.setCursor(QtCore.Qt.BusyCursor) - else: - QtWebKit.QWebView.mouseMoveEvent(self, event) - - ################################ - ## methods - ################################ - def isCurrentBrowser(self): - if self.tabWidget is not None: - return self.tabWidget.currentWidget() == self - return False - - - def tabIndex(self): - if self.tabWidget is not None: - return self.tabWidget.indexOf(self) - return -1 - - - def setStatusMessage(self, text): - self.lastStatusMessage = text - if self.fcGlobalFeedback is not None and self.isCurrentBrowser(): - self.fcGlobalFeedback.setStatusMessage(text) - - - def setProgress(self, percent): - self.lastProgress = percent - if self.fcGlobalFeedback is not None and self.isCurrentBrowser(): - self.fcGlobalFeedback.setProgress(percent) - - ############################################## - ## event handlers - ############################################## - def onActionStopTriggered(self): - # check wich cursor to set cos we may have busy cursor set - pt = self.mapFromGlobal(self.cursor().pos()) #TODO: self.mapFromGlobal(self.viewPort().cursor().pos()) ?? - frame = self.page().currentFrame() - hitTest = frame.hitTestContent(pt) - - #if not hitTest.isNull(): #TODO: looks like hitTest.isNull() alwas returns True - - if hitTest.linkUrl().isValid() or hitTest.imageUrl().isValid(): - self.setCursor(QtCore.Qt.PointingHandCursor) - else: - self.setCursor(QtCore.Qt.ArrowCursor) - - - def onIconChanged(self): - i = self.tabIndex() - if i > -1: - self.tabWidget.setTabIcon(i, self.icon) - - - def onTitleChanged(self, text): - # add title to tab - if self.tabWidget is not None: - i = self.tabIndex() - if i > -1: - # truncate text if necessary - maxText = self.fcSettings.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) - - - def onLoadFinished(self, ok): - self.onActionStopTriggered() - self.setProgress(100) - 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('''one reason may be 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 onLoadProgress(self, percent): - self.setProgress(percent) - - - def onLoadStarted(self): - self.setCursor(QtCore.Qt.BusyCursor) - self.setProgress(0) - self.setStatusMessage(self.trUtf8('Loading')) - - - def onStatusBarMessage(self, text): - if not text.isEmpty(): - self.setStatusMessage(text) - - - def onUrlChanged(self, url): - self.lastUrl = QtCore.QUrl(url) # copy url. qt nukes it on return - if self.navBar is not None and self.isCurrentBrowser(): - self.navBar.setText(self.lastUrl.toString()) - -#*********************************************************************** + self.url = QtCore.QUrl() if url is None else url + +#********************************************************************************** # -#*********************************************************************** +#********************************************************************************** +#TODO: strip host:port on address bar? +#TODO: rename home page to start page class ViewBrowserWidget(QtGui.QWidget, Ui_ViewBrowserWidget): IdTabBrowsers = 'tabBrowsers' IdFrameTools = 'frameTools' - IdFrameNavBar = 'frameNavBar' - IdEdNavBar = 'edNavBar' + IdFrameAddressBar = 'frameAddressBar' + IdEdAddressBar = 'edAddressBar' IdBtBack = 'btBack' IdBtFwd = 'btFwd' IdBtReload = 'btReload' IdBtStop = 'btStop' + ForcedMinBrowserTabText = 5 # forced minimum number of chars on browser tabBar def __init__(self, parent, idGlobalFeedback=config.IdMainWindow): - QtGui.QWidget.__init__(self, parent) - - self._isCreated = False - self._initialConfigDataArrived = False - + QtGui.QWidget.__init__(self, parent) + self.setupUi(self) config.ObjectRegistry.register(self) - self.fcActions = Actions(self) - self.fcSettings = Settings().restore() - self.fcViewObject = BrowserViewObject(self) - self.fcGlobalFeedback = GlobalFeedback(self, idGlobalFeedback) + self._initialConfigDataArrived = False + #XXX ? + #self.fproxyHost = None + #self.fproxyPort = None - self.fproxyHost = None - self.fproxyPort = None + self.fcActions = BrowserWidgetActions(self) + self.fcSettings = BrowserWidgetSettings(self).restore() + self.fcViewObject = BrowserWidgetViewObject(self) + self.fcGlobalFeedback = BrowserWidgetGlobalFeedback(self, idGlobalFeedback) - self.fcpEvents = ( - (config.fcpClient.events.ConfigData, self.onFcpConfigData), - ) - config.fcpClient.events += self.fcpEvents - - navBar = self.controlById(self.IdEdNavBar) - 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.onTabBrowsersCurrentChanged) - self.connect(tabWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.onTabBrowsersContextMenuEvent) + self.connect(tabWidget, QtCore.SIGNAL('currentChanged(int)'), self.onTabCurrentChanged) + self.connect(tabWidget, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.onTabContextMenuEvent) - self.newTab(tabText=self.trUtf8('Waiting for fproxy')) + # setup addressbar + addressbar = self.controlById(self.IdEdAddressBar) + self.connect(addressbar, QtCore.SIGNAL('returnPressed()'), self.onNavBarReturnPressed) + + # fire up a new broser to make a start + self.newBrowser(title=self.trUtf8('Waiting for fproxy')) + self.fcActions['ActionGoToHomePage'].trigger() ######################################### + ## private methods + ######################################### + def _adjustTabDependendActions(self): + tabWidget = self.controlById(self.IdTabBrowsers) + self.fcActions['ActionCloseCurrentTab'].setEnabled(tabWidget.count()) + self.fcActions['ActionCloseAllTabs'].setEnabled(tabWidget.count()) + self.fcActions['ActionZoomIn'].setEnabled(tabWidget.count()) + self.fcActions['ActionZoomOut'].setEnabled(tabWidget.count()) + + def _downloadImageToDisk(self, hitTestResult): + px = hitTestResult.pixmap() + if px.isNull(): + return False + + key = config.qStringToFcpKey(hitTestResult.imageUrl().toString()) + if key is None: + return False + + # thow a dialog box at the user to select a filename + # ..qt seems to place the filename part as suggestion into the filename box. so try it + caption = config.FclientAppName + self.trUtf8(' - Save Image To..') + directory = unicode(config.settings.value('DownloadDir')) + fileName = unicode(config.guessFileNameFromKey(key, default=QtCore.QString(''))) + + if directory and fileName: + directory = os.path.join(directory, fileName) + elif not directory: + directory = fileName + filePath = QtGui.QFileDialog.getSaveFileName(self, caption, directory) + + if filePath: + filePath= unicode(filePath) + if os.path.exists(filePath): + try: + os.remove(filePath) + except Exception, details: + QtGui.QMessageBox.critical( + self, + caption, + self.trUtf8('Could not remove file'), #NOTE: no details please, may contain arbitrary lenght filepath + ) + return False + px.save(filePath) + return True + + def _downloadKeyToDisk(self, qUrl): + """ + @return: (bool) False if the key in the url is invalid, True otherwise + """ + fcpKey = config.qStringToFcpKey(QtCore.QString(qUrl.encodedPath())) + if fcpKey is not None: + dlg = Ui_DlgDownloadKeyToDisk.DownloadKeyToDiskDlg(self, fcpKey=fcpKey) + if dlg.exec_() == dlg.Accepted: + filePath = dlg.filePath() + downloadsWidget = config.ObjectRegistry.get(config.IdViewCDownloadsWidget, None) + if downloadsWidget is None: + raise ValueError('no downloads widget found') + downloadsWidget.downloadFile( + fcpKey, + filePath, + persistence=fcp2.ConstPersistence.Forever, + handleFilenameCollision=True, + + ) + return True + return False + + def _adjustTabText(self, qString): + maxTabText = self.fcSettings.value('MaxTabText') + minTabText = self.fcSettings.value('MinTabText') + ellipsis = self.trUtf8('..') + + if minTabText < self.ForcedMinBrowserTabText: + minTabText = self.ForcedMinBrowserTabText + self.fcSettings.setValues(MinTabText=minTabText) + if maxTabText < self.ForcedMinBrowserTabText: + maxTabText = self.ForcedMinBrowserTabText + self.fcSettings.setValues(MaxTabText=maxTabText) + if minTabText > maxTabText: + minTabText = maxTabText + self.fcSettings.setValues(MinTabText=maxTabText) + + if qString.count() < minTabText: + qString = qString.append('\x20' * (minTabText - qString.count())) + else: + if maxTabText < self.ForcedMinBrowserTabText: + maxTabText = sminTabText + qString = qtools.truncateString(maxTabText, qString, ellipsis) + return qString + + ######################################### ## methods ######################################### def controlById(self, idControl): return getattr(self, idControl) + + def currentBrowser(self): + """returns the current browser or None""" + tabWidget = self.controlById(self.IdTabBrowsers) + return tabWidget.currentWidget() + + def newBrowser(self, title=''): + """opens a browser in a new tab""" + tabWidget = self.controlById(self.IdTabBrowsers) + browser = Browser(self) + page = browser.page() + settings = browser.settings() + title = QtCore.QString(title) + iconSize = self.fcSettings.value('IconSize') + iconTheme = config.settings.value('IconTheme') - - def newTab(self, tabText=''): - """creates a new tab""" - tabWidget = self.controlById(self.IdTabBrowsers) - browser = Browser(self, - idGlobalFeedback=self.fcGlobalFeedback.id, - tabWidget=self.controlById(self.IdTabBrowsers), - navBar=self.controlById(self.IdEdNavBar), + # attatch browser state information + lastBrowserState = LastBrowserState( + icon=browser.icon(), + statusMessage=self.trUtf8('Waiting'), ) - tabWidget.addTab(browser, tabText) + browser.setUserData(lastBrowserState) + + # customize browser + browser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + ##settings.setAttribute(settings.AutoLoadImages, False) + settings.setAttribute(settings.DeveloperExtrasEnabled, False) + settings.setAttribute(settings.JavaEnabled, False) + settings.setAttribute(settings.JavascriptEnabled, False) + settings.setAttribute(settings.JavascriptCanOpenWindows, False) + settings.setAttribute(settings.JavascriptCanAccessClipboard, False) + settings.setAttribute(settings.PluginsEnabled, False) + + # connect browser signals + self.connect(browser, QtCore.SIGNAL('loadStarted()'), self.onBrowserLoadStarted) + self.connect(browser, QtCore.SIGNAL('loadProgress(int)'), self.onBrowserLoadProgress) + self.connect(browser, QtCore.SIGNAL('loadFinished(bool)'), self.onBrowserLoadFinished) + self.connect(browser, QtCore.SIGNAL('iconChanged()'), self.onBrowserIconChanged) + self.connect(browser, QtCore.SIGNAL('statusBarMessage(const QString &)'), self.onBrowserStatusBarMessage) + self.connect(browser, QtCore.SIGNAL('titleChanged(const QString &)'), self.onBrowserTitleChanged) + self.connect(browser, QtCore.SIGNAL('urlChanged(const QUrl &)'), self.onBrowserUrlChanged) + self.connect(browser, QtCore.SIGNAL('customContextMenuRequested(const QPoint &)'), self.onBrowserCustomContextMenuRequested) + self.connect(browser, QtCore.SIGNAL('linkClicked(const QUrl &)'), self.onBrowserLinkClicked) + + # adjust browser actions + act = browser.pageAction(page.OpenLinkInNewWindow) + act.setText(self.trUtf8('Open page in new tab')) + act = browser.pageAction(page.OpenImageInNewWindow) + act.setText(self.trUtf8('Open image in new tab')) + act = browser.pageAction(page.OpenFrameInNewWindow) + act.setText(self.trUtf8('Open frame in new tab')) + + act = browser.pageAction(page.Back) + act.setIcon(config.resources.getIcon('back', iconSize, iconTheme=iconTheme)) + act = browser.pageAction(page.Forward) + act.setIcon(config.resources.getIcon('forward', iconSize, iconTheme=iconTheme)) + act = browser.pageAction(page.Reload) + act.setIcon(config.resources.getIcon('reload_page', iconSize, iconTheme=iconTheme)) + act = browser.pageAction(page.Stop) + act.setIcon(config.resources.getIcon('stop', iconSize, iconTheme=iconTheme)) + + # customize page + page.setLinkDelegationPolicy(page.DelegateAllLinks) + + # connect page signals + self.connect(page, QtCore.SIGNAL('linkHovered(const QString &, const QString &, const QString &)'), self.onPageLinkHovered) + + tabWidget.addTab(browser, self._adjustTabText(title)) + if tabWidget.currentWidget() == browser: + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) return browser - - def load(self, url): - """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 + def load(self, url, force=False, browser=None): + """loads an url in the current browser. if there is no current browser, a new browser is created + @param force: (bool) if True, a new browser is opend if there is no browser available + @param browser: browser to load the url in or None to use the current browser + @return: (bool) """ - if self.fproxyHost is None or url is None: - return - - # enforce fproxy. we don't want to surf the web + browser = self.currentBrowser() if browser is None else browser + tabWidget = self.controlById(self.IdTabBrowsers) + addressBar = self.controlById(self.IdEdAddressBar) url = QtCore.QUrl(url) - url.setHost(self.fproxyHost) - url.setPort(self.fproxyPort) + + # check if we have a browser at hand + if force and browser is None: + browser = self.newBrowser() + if browser is None: + return False + + # load url url.setScheme('http') - tabWidget = self.controlById(self.IdTabBrowsers) - browser = tabWidget.currentWidget() - if browser is None: - browser = self.newTab(self.trUtf8('Loading')) + url.setHost(config.settings.value('FproxyConnectionHost')) + url.setPort(config.settings.value('FproxyConnectionPort')) + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Loading'))) + addressBar.setText(url.toString()) + lastBrowserState = browser.userData() + lastBrowserState.url = url browser.load(url) + return True - - 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.fcActions['ActionGoToFProxy']) menu.addAction(self.fcActions['ActionGoToHomePage']) menu.addAction(self.fcActions['ActionCloseCurrentTab']) menu.addAction(self.fcActions['ActionCloseAllTabs']) + menu.addAction(self.fcActions['ActionOpenNewTab']) + menu.addAction(self.fcActions['ActionZoomIn']) + menu.addAction(self.fcActions['ActionZoomOut']) return menu ######################################### @@ -643,139 +559,278 @@ def hideEvent(self, event): self.fcGlobalFeedback.setVisible(False) - def showEvent(self, event): self.fcGlobalFeedback.setVisible(True) - if self._isCreated: - return - self._isCreated = True - - def closeEvent(self): self.viewClose() - def viewClose(self): - config.fcpClient.events -= self.fcpEvents - + pass + ######################################### - ## fcp event onrs + ## event handlers ######################################### - #TODO: browser should be disabled untill config data has arrived. - #disable navbar, tool buttons, actions. on second thought.. we'll see. - def onFcpConfigData(self, event, msg): + #TODO: actions need some comb over + def onBrowserCustomContextMenuRequested(self, pt): + browser = self.sender() + frame = browser.page().currentFrame() + page = browser.page() + hitTestResult = frame.hitTestContent(pt) - self.fproxyHost = None - self.fproxyPort = None + #if not hitTest.isNull(): #TODO: looks like hitTest.isNull() alwas returns True - #TODO: give feedback in case fproxy is disabled - 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 + menu = QtGui.QMenu() + + menu.addAction(browser.pageAction(page.OpenLink)) + menu.addAction(browser.pageAction(page.OpenLinkInNewWindow)) + menu.addAction(browser.pageAction(page.CopyLinkToClipboard)) + ##menu.addAction(DownloadLinkToDisk)) + + menu.addSeparator() + menu.addAction(browser.pageAction(page.OpenImageInNewWindow)) + menu.addAction(browser.pageAction(page.DownloadImageToDisk)) + menu.addAction(browser.pageAction(page.CopyImageToClipboard)) + + menu.addSeparator() + menu.addAction(browser.pageAction(page.OpenFrameInNewWindow)) + + menu.addSeparator() + menu.addAction(browser.pageAction(page.Copy)) + menu.addAction(self.fcActions['ActionObjectProperties']) - 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(): - if self.fcSettings.value('HomePageIsStartPage'): - self.fcActions['ActionGoToHomePage'].trigger() - else: - self.fcActions['ActionGoToFProxy'].trigger() - else: - self.load(text) - - ######################################### - ## - ######################################### - def onActionCloseCurrentTab(self, action): + action = menu.exec_(pt) + + if action == browser.pageAction(page.OpenLinkInNewWindow): + browser = self.newBrowser(title=self.trUtf8('Loading')) + self.load(hitTestResult.linkUrl(), browser=browser) + elif action == browser.pageAction(page.OpenImageInNewWindow): + browser = self.newBrowser(title=self.trUtf8('Loading')) + self.load(hitTestResult.imageUrl(), browser=browser) + elif action == browser.pageAction(page.OpenFrameInNewWindow): + browser = self.newBrowser(title=self.trUtf8('Loading')) + self.load(hitTestResult.frame().url(), browser=browser) + elif action == browser.pageAction(page.DownloadImageToDisk): + self._downloadImageToDisk(hitTestResult) + elif action == self.fcActions['ActionObjectProperties']: + dlg = Ui_DlgPropsBrowserObject.PropsBrowserObjectDlg(self, hitTestResult=hitTestResult) + if dlg.exec_() == dlg.Accepted: + pass + + #TODO: nav buttons seem to get confused on error + def onBrowserLoadFinished(self, ok): + browser = self.sender() + lastBrowserState = browser.userData() tabWidget = self.controlById(self.IdTabBrowsers) - tabWidget.removeTab(tabWidget.currentIndex()) - + + lastBrowserState.progress = Browser.MaxProgress + if ok: + lastBrowserState.statusMessage = self.trUtf8('Complete') + if lastBrowserState.title.isEmpty(): + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Complete'))) + if browser == self.currentBrowser(): + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) + else: + # something went wrong. most likely fProxy can not be reached + lastBrowserState.statusMessage = self.trUtf8('Error') + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Error'))) + if browser == self.currentBrowser(): + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) + + settings = browser.settings() + settings.setAttribute(settings.JavascriptEnabled, True) + try: + p = ( + '<h3>%s</h3>' % self.trUtf8('Error: request failed'), + self.trUtf8('Possible reasons:'), + '<ul>', + '<li>', + self.trUtf8('fProxy can not be reached. check if fproxy is running and check your node config if fproxy host and port are set'), + '</li>', + '<li>', + self.trUtf8('maybe your os can not deal with ipv6 addresses. make shure fProxy is reachable via an ipv4 address'), + '</li>', + '<li>', + self.trUtf8('there is no problem. try it again..'), + '</li>', + '</ul>' + ) + p = ''.join([unicode(i) for i in p]) + browser.page().mainFrame().evaluateJavaScript('document.write("<div>%s</div>");' % p) + finally: + settings.setAttribute(settings.JavascriptEnabled, False) - def onTabBrowsersContextMenuEvent(self, pt): - menu = QtGui.QMenu() + def onBrowserIconChanged(self, qIcon): + browser = self.sender() + qIcon = QtCore.QIcon(qIcon) # copy it - qt nukes it on return - #TODO: enable / disable actions - actCloseBrowserUnderMouse = self.fcActions['ActionCloseBrowserUnderMouse'] - menu.addAction(actCloseBrowserUnderMouse) - menu.addAction(self.fcActions['ActionCloseAllTabs']) + lastBrowserState = browser.userData() + if not qIcon.isNull(): + lastBrowserState = qIcon + self.tabWidget.setTabIcon(i, lastBrowserState.icon) + + def onBrowserLoadProgress(self, n): + browser = self.sender() + lastBrowserState = browser.userData() - tab = self.controlById(self.IdTabBrowsers) - pt = tab.mapToGlobal(pt) + lastBrowserState.progress = n + if self.sender() == self.currentBrowser(): + self.fcGlobalFeedback.setProgress(n) + + def onBrowserLinkClicked(self, qUrl): + browser = self.sender() + qUrl = QtCore.QUrl(qUrl) + query = unicode(qUrl.encodedQuery()) + + if query.lower() == 'forcedownload': + if not self._downloadKeyToDisk(qUrl): + self.fcGlobalFeedback.setFeedback(self.trUtf8('Invalid key!')) + else: # assume fproxy is doing the right thing + if self.fcSettings.value('OpenLinksInNewTab'): + browser = self.newBrowser(title=self.trUtf8('Loading')) + self.load(qUrl, browser=browser) - act = menu.exec_(pt) - if act == actCloseBrowserUnderMouse: - pt = tab.tabBar().mapFromGlobal(pt) - i = tab.tabBar().tabAt(pt) - if i > -1: - tab.removeTab(i) - + def onBrowserLoadStarted(self): + browser = self.sender() + lastBrowserState = browser.userData() + tabWidget = self.controlById(self.IdTabBrowsers) + + lastBrowserState.statusMessage = self.trUtf8('Loading') + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText(self.trUtf8('Loading'))) + if browser == self.currentBrowser(): + self.fcGlobalFeedback.setProgress(0) + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) - def onTabBrowsersCurrentChanged(self, index): - browser = self.controlById(self.IdTabBrowsers).currentWidget() - if browser is None: - return - actions = ( - (self.IdBtBack, QtWebKit.QWebPage.Back), - (self.IdBtFwd, QtWebKit.QWebPage.Forward), - (self.IdBtReload, QtWebKit.QWebPage.Reload), - (self.IdBtStop, QtWebKit.QWebPage.Stop), - ) - for idControl, webAction in actions: - bt = self.controlById(idControl) - bt.setDefaultAction(browser.pageAction(webAction)) - + def onBrowserStatusBarMessage(self, qString): + browser = self.sender() + qString = QtCore.QString(qString) # copy it - qt nukes it on return - def onNavBarReturnPressed(self): - ed = self.controlById(self.IdEdNavBar) + lastBrowserState = browser.userData() + if not qString.isEmpty(): + lastBrowserState.statusMessage = qString + if browser == self.currentBrowser(): + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) + + def onBrowserTitleChanged(self, qString): + browser = self.sender() + qString = QtCore.QString(qString) # copy it - qt nukes it on return + maxTabText = self.fcSettings.value('MaxTabText') tabWidget = self.controlById(self.IdTabBrowsers) - if not tabWidget.count(): - self.newTab(tabText=self.trUtf8('')) - self.load(ed.text()) + lastBrowserState = browser.userData() + if not qString.isEmpty(): + lastBrowserState.title = qString + tabWidget.setTabText(tabWidget.indexOf(browser), self._adjustTabText( lastBrowserState.title)) + def onBrowserUrlChanged(self, qUrl): + browser = self.sender() + qUrl = QtCore.QUrl(qUrl) # copy it - qt nukes it on return + + lastBrowserState = browser.userData() + if qUrl.isValid(): + lastBrowserState.url = qUrl + addressbar = self.controlById(self.IdEdAddressBar) + addressbar.setText(lastBrowserState.url.toString()) - def onActionCloseAllTabs(self, action): + def onCloseAllTabs(self, action): tabWidget = self.controlById(self.IdTabBrowsers) tabWidget.clear() + self._adjustTabDependendActions() + + def onCloseCurrentTab(self, action): + tabWidget = self.controlById(self.IdTabBrowsers) + i = tabWidget.currentIndex() + if i > -1: + tabWidget.removeTab(i) + self._adjustTabDependendActions() + + #TODO: open in new tab option? + def onGoToFProxy(self, action): + url = QtCore.QUrl() + self.load(url, force=True) + #TODO: open in new tab option? + def onGoToHomePage(self, action): + home = self.fcSettings.value('HomePage') + qUrl = QtCore.QUrl(home) + self.load(qUrl, force=True) + + def onNavBarReturnPressed(self): + text = self.controlById(self.IdEdAddressBar).text() + if text.isEmpty(): + return + qUrl = QtCore.QUrl(text) + browser = self.currentBrowser() + if browser is None or self.fcSettings.value('OpenAddressBarInNewTab'): + browser = self.newBrowser(title=self.trUtf8('Loading')) + self.load(qUrl, browser=browser) - def onActionGoToFProxy(self, action): - if self.fproxyHost is None: - #TODO: handle - return + #TODO: we get no load progress feedback here? + #TODO: more choices for page to load + def onOpenNewTab(self, action): + browser = self.newBrowser(title=self.trUtf8('Empty')) + if self.fcSettings.value('OpenHomePageOnNewTabCreated'): + homePage = self.fcSettings.value('HomePage') + self.load(QtCore.QUrl(homePage), browser=browser) - url = QtCore.QUrl() + def onPageLinkHovered(self, link, title, textContent): + self.fcGlobalFeedback.setFeedback(QtCore.QString(link)) + + def onTabContextMenuEvent(self, pt): + menu = QtGui.QMenu() tabWidget = self.controlById(self.IdTabBrowsers) - if not tabWidget.count(): - self.newTab(tabText=self.trUtf8('Waiting for fproxy')) - self.load(url) + pt = tabWidget.mapToGlobal(pt) + pt2 = tabWidget.tabBar().mapFromGlobal(pt) + i = tabWidget.tabBar().tabAt(pt2) + # setup menu + self._adjustTabDependendActions() + actCloseBrowserUnderMouse = self.fcActions['ActionCloseBrowserUnderMouse'] + actCloseBrowserUnderMouse.setEnabled(i >-1) + menu.addAction(actCloseBrowserUnderMouse) + menu.addAction(self.fcActions['ActionCloseAllTabs']) + act = menu.exec_(pt) + if act == actCloseBrowserUnderMouse: + tabWidget.removeTab(i) + self._adjustTabDependendActions() - def onActionGoToHomePage(self, action): - home = self.fcSettings.value('HomePage') - url = QtCore.QUrl(home) + def onTabCurrentChanged(self, i): tabWidget = self.controlById(self.IdTabBrowsers) - if not tabWidget.count(): - self.newTab(tabText=self.trUtf8('Waiting for fproxy')) - self.load(url) + browser = tabWidget.widget(i) + if browser is not None: + page = browser.page() + lastBrowserState = browser.userData() + addressbar = self.controlById(self.IdEdAddressBar) + + # update status info + addressbar.setText(lastBrowserState.url.toString()) + self.fcGlobalFeedback.setStatusMessage(lastBrowserState.statusMessage) + self.fcGlobalFeedback.setProgress(lastBrowserState.progress) + + # adjust actions on addressbar + self.controlById(self.IdBtBack).setDefaultAction(browser.pageAction(page.Back)) + self.controlById(self.IdBtFwd).setDefaultAction(browser.pageAction(page.Forward)) + self.controlById(self.IdBtReload).setDefaultAction(browser.pageAction(page.Reload)) + self.controlById(self.IdBtStop).setDefaultAction(browser.pageAction(page.Stop)) + self.controlById(self.IdBtBack).setDefaultAction(browser.pageAction(page.Back)) + #TODO: enable/disable, but no view gives non feedback on max/min zoom + def onZoomIn(self, action): + browser = self.currentBrowser() + if browser is not None: + oldMultiplier = browser.textSizeMultiplier() + browser.setTextSizeMultiplier(browser.textSizeMultiplier() + 0.2) + if browser.textSizeMultiplier() <= oldMultiplier: + menu.addAction(self.fcActions['ActionZoomIn']).setEnabled(False) + + def onZoomOut(self, action): + browser = self.currentBrowser() + if browser is not None: + oldMultiplier = browser.textSizeMultiplier() + browser.setTextSizeMultiplier(browser.textSizeMultiplier() - 0.2) + print browser.textSizeMultiplier() + if browser.textSizeMultiplier() >= oldMultiplier: + menu.addAction(self.fcActions['ActionZoomOut']).setEnabled(False) + + #********************************************************************************** # #********************************************************************************** @@ -785,6 +840,7 @@ from .Ui_MainWindow import MainWindow from .Ui_View import ViewWidget from .Ui_ViewConnection import ViewConnectionWidget + from .Ui_ViewDownloads import ViewDownloadsWidget app = QtGui.QApplication(sys.argv) @@ -796,6 +852,7 @@ viewWidget.addTopViews( ViewConnectionWidget(mainWindow), browserWidget, + ViewDownloadsWidget(mainWindow), ) viewWidget.addBottomViews(ViewLoggerWidget(mainWindow)) @@ -803,5 +860,33 @@ res = app.exec_() sys.exit(res) - - +#********************************************************************************** +# +#********************************************************************************** +## looks we could serve pages via fcp, bypassing fproxy +## no reason to do so.. +## +##class NetworkAccessManager(QtNetwork.QNetworkAccessManager): +## +## def __init__(self, parent): +## QtNetwork.QNetworkAccessManager.__init__(self, parent) +## +## def createRequest(self, operation, request, outgoingData): +## print 'createRequest', request.url() +## reply = QtNetwork.QNetworkAccessManager.createRequest(self, operation, request, outgoingData) +## #TODO: implement QNetworkReply() +## return reply +## +## +##class Browser(QtWebKit.QWebView): +## +##def __init__(self, browserWidget): +## QtWebKit.QWebView.__init__(self, browserWidget) +## +## self.nam = NetworkAccessManager(self) +## self.page().setNetworkAccessManager(self.nam) +## +#********************************************************************************** +# +#********************************************************************************** + \ 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-25 07:13:40
|
Revision: 735 http://fclient.svn.sourceforge.net/fclient/?rev=735&view=rev Author: jUrner Date: 2008-07-25 07:13:49 +0000 (Fri, 25 Jul 2008) Log Message: ----------- complete rework Modified Paths: -------------- trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py Modified: trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py =================================================================== --- trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py 2008-07-25 07:13:33 UTC (rev 734) +++ trunk/fclient/src/fclient/Ui_PrefsBrowserWidget.py 2008-07-25 07:13:49 UTC (rev 735) @@ -16,8 +16,12 @@ class PrefsBrowserWidget(QtGui.QWidget, Ui_PrefsBrowserWidget): IdEdHomePage = 'edHomePage' - IdCkHomePageIsStartPage = 'ckHomePageIsStartPage' - + IdCkOpenAddressBarInNewTab = 'ckOpenAddressBarInNewTab' + IdCkOpenBookmarksInNewTab = 'ckOpenBookmarksInNewTab' + IdCkOpenLinksInNewTab = 'ckOpenLinksInNewTab' + IdCkOpenHomePageOnNewTabCreated = 'ckOpenHomePageOnNewTabCreated' + IdCkBackIsClose = 'ckBackIsClose' + def __init__(self, parent): QtGui.QWidget.__init__(self, parent) self.setupUi(self) @@ -25,27 +29,33 @@ browser = config.ObjectRegistry.get(config.IdViewBrowserWidget, None) self.setEnabled(browser is not None) if browser is not None: - ed = self.controlById(self.IdEdHomePage) - ed.setText(browser.fcSettings.value('HomePage')) - - ck = self.controlById(self.IdCkHomePageIsStartPage) - ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('HomePageIsStartPage') else QtCore.Qt.Unchecked) - - + self.controlById(self.IdEdHomePage).setText(browser.fcSettings.value('HomePage')) + ck = self.controlById(self.IdCkOpenAddressBarInNewTab) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('OpenAddressBarInNewTab') else QtCore.Qt.Unchecked) + ck = self.controlById(self.IdCkOpenBookmarksInNewTab) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('OpenBookmarksInNewTab') else QtCore.Qt.Unchecked) + ck = self.controlById(self.IdCkOpenLinksInNewTab) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('OpenLinksInNewTab') else QtCore.Qt.Unchecked) + ck = self.controlById(self.IdCkOpenHomePageOnNewTabCreated) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('OpenHomePageOnNewTabCreated') else QtCore.Qt.Unchecked) + ck = self.controlById(self.IdCkBackIsClose) + ck.setCheckState(QtCore.Qt.Checked if browser.fcSettings.value('BackIsClose') else QtCore.Qt.Unchecked) def controlById(self, idControl): return getattr(self, idControl) def apply(self): browser = config.ObjectRegistry.get(config.IdViewBrowserWidget, None) - self.setEnabled(browser is not None) if browser is not None: edHomePage = self.controlById(self.IdEdHomePage) - ckHomePageIsStartPage = self.controlById(self.IdCkHomePageIsStartPage) - + browser.fcSettings.setValues( HomePage=edHomePage.text(), - HomePageIsStartPage=ckHomePageIsStartPage.checkState() == QtCore.Qt.Checked + OpenAddressBarInNewTab=self.controlById(self.IdCkOpenAddressBarInNewTab).checkState() == QtCore.Qt.Checked, + OpenBookmarksInNewTab=self.controlById(self.IdCkOpenBookmarksInNewTab).checkState() == QtCore.Qt.Checked, + OpenLinksInNewTab=self.controlById(self.IdCkOpenLinksInNewTab).checkState() == QtCore.Qt.Checked, + OpenHomePageOnNewTabCreated=self.controlById(self.IdCkOpenHomePageOnNewTabCreated).checkState() == QtCore.Qt.Checked, + BackIsClose=self.controlById(self.IdCkBackIsClose).checkState() == QtCore.Qt.Checked, ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:13:26
|
Revision: 734 http://fclient.svn.sourceforge.net/fclient/?rev=734&view=rev Author: jUrner Date: 2008-07-25 07:13:33 +0000 (Fri, 25 Jul 2008) Log Message: ----------- leftover print statement Modified Paths: -------------- trunk/fclient/src/fclient/Ui_Prefs.py Modified: trunk/fclient/src/fclient/Ui_Prefs.py =================================================================== --- trunk/fclient/src/fclient/Ui_Prefs.py 2008-07-25 07:13:04 UTC (rev 733) +++ trunk/fclient/src/fclient/Ui_Prefs.py 2008-07-25 07:13:33 UTC (rev 734) @@ -67,7 +67,7 @@ def showEvent(self, event): - print self.restoreState(self.fcSettings.value('DlgState')) + self.restoreState(self.fcSettings.value('DlgState')) def hideEvent(self, event): self.fcSettings.setValues(DlgState=self.saveState()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:12:54
|
Revision: 733 http://fclient.svn.sourceforge.net/fclient/?rev=733&view=rev Author: jUrner Date: 2008-07-25 07:13:04 +0000 (Fri, 25 Jul 2008) Log Message: ----------- naming Modified Paths: -------------- trunk/fclient/src/fclient/Ui_DlgPropsBrowserObject.py Modified: trunk/fclient/src/fclient/Ui_DlgPropsBrowserObject.py =================================================================== --- trunk/fclient/src/fclient/Ui_DlgPropsBrowserObject.py 2008-07-25 07:12:24 UTC (rev 732) +++ trunk/fclient/src/fclient/Ui_DlgPropsBrowserObject.py 2008-07-25 07:13:04 UTC (rev 733) @@ -15,6 +15,7 @@ from PyQt4 import QtGui from . import config +from .lib.compactpath.qt4 import pathlabelwrap from .tpls.Ui_DlgPropsBrowserObjectTpl import Ui_DlgPropsBrowserObject #********************************************************************************** @@ -29,19 +30,20 @@ IdLabelImageUrl = 'labelImageUrl' - def __init__(self, parent, browser=None, hitTest=None): + def __init__(self, parent, browser=None, hitTestResult=None): QtGui.QDialog.__init__(self, parent) self.setupUi(self) + self.setWindowTitle(config.FclientAppName + self.trUtf8(' - Properties')) - if hitTest is not None: - self.labelTitle.setText(hitTest.linkTitle().toString()) - self.labelName.setText(hitTest.linkText()) + if hitTestResult is not None: + self.labelTitle.setText(hitTestResult.linkTitle().toString()) + self.labelName.setText(hitTestResult.linkText()) - if not hitTest.linkUrl().isEmpty(): - self.labelLinkUrl.setText(hitTest.linkUrl().toString()) - if not hitTest.imageUrl().isEmpty(): - self.labelImageUrl.setText(hitTest.imageUrl().toString()) + if not hitTestResult.linkUrl().isEmpty(): + self.labelLinkUrl.setText(hitTestResult.linkUrl().toString()) + if not hitTestResult.imageUrl().isEmpty(): + self.labelImageUrl.setText(hitTestResult.imageUrl().toString()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:12:14
|
Revision: 732 http://fclient.svn.sourceforge.net/fclient/?rev=732&view=rev Author: jUrner Date: 2008-07-25 07:12:24 +0000 (Fri, 25 Jul 2008) Log Message: ----------- new dlg to handle dl key to disk Added Paths: ----------- trunk/fclient/src/fclient/Ui_DlgDownloadKeyToDisk.py Added: trunk/fclient/src/fclient/Ui_DlgDownloadKeyToDisk.py =================================================================== --- trunk/fclient/src/fclient/Ui_DlgDownloadKeyToDisk.py (rev 0) +++ trunk/fclient/src/fclient/Ui_DlgDownloadKeyToDisk.py 2008-07-25 07:12:24 UTC (rev 732) @@ -0,0 +1,75 @@ +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 os +from PyQt4 import QtCore, QtGui + +from . import config +from .lib.compactpath.qt4 import pathlabelwrap + + +from .tpls.Ui_DlgDownloadKeyToDiskTpl import Ui_DlgDownloadKeyToDisk +#********************************************************************************** +# +#********************************************************************************** +class DownloadKeyToDiskDlg(QtGui.QDialog, Ui_DlgDownloadKeyToDisk): + + IdLabelKey = 'labelKey' + IdEdDownloadFileName = 'edDownloadFileName' + IdBtChooseDownloadFileName = 'btChooseDownloadFileName' + + + def __init__(self, parent=None, fcpKey=None): + QtGui.QDialog.__init__(self, parent) + + self.setupUi(self) + self.setWindowTitle(config.FclientAppName + self.trUtf8(' - Download key..')) + + self._filePath = None + self._fcpKey = fcpKey + + self.pathLabelWrap = pathlabelwrap.PathLabelWrap(self.labelKey, fpath=unicode(self.labelKey.text())) + self.connect(self.btChooseDownloadFileName, QtCore.SIGNAL('clicked()'), self.onChooseDownloadFileName) + + # find out fileName to dl key to + fileName = config.guessFileNameFromKey(fcpKey) + if fileName is None: + fileName = self.trUtf8('UNKNOWN') + self._filePath = os.path.join(unicode(config.settings.value('DownloadDir')), unicode(fileName)) + self.edDownloadFileName.setText(self._filePath) + if self._fcpKey is not None: + self.pathLabelWrap.setPath(self._fcpKey.toString()) + + def filePath(self): + return self._filePath + + def onChooseDownloadFileName(self): + filePath = QtGui.QFileDialog.getSaveFileName( + self, + config.FclientAppName + self.trUtf8(' - Save key To..'), + self.edDownloadFileName.text(), + ) + if filePath: + self._filePath = filePath + self.edDownloadFileName.setText(filePath) + + +#********************************************************************************** +# +#********************************************************************************** +if __name__ == '__main__': + import sys + + class DummyKey(object): + KeyType = 'USK@' + def __init__(self): self.key = 'USG@qweqqweqwe' + def toString(self): return self.key + + app = QtGui.QApplication(sys.argv) + w = DownloadKeyToDiskDlg(None, fcpKey=DummyKey()) + w.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-25 07:11:52
|
Revision: 731 http://fclient.svn.sourceforge.net/fclient/?rev=731&view=rev Author: jUrner Date: 2008-07-25 07:12:01 +0000 (Fri, 25 Jul 2008) Log Message: ----------- new dlg to handle dl key to disk Added Paths: ----------- trunk/fclient/src/fclient/tpls/DlgDownloadKeyToDiskTpl.ui trunk/fclient/src/fclient/tpls/Ui_DlgDownloadKeyToDiskTpl.py Added: trunk/fclient/src/fclient/tpls/DlgDownloadKeyToDiskTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/DlgDownloadKeyToDiskTpl.ui (rev 0) +++ trunk/fclient/src/fclient/tpls/DlgDownloadKeyToDiskTpl.ui 2008-07-25 07:12:01 UTC (rev 731) @@ -0,0 +1,134 @@ +<ui version="4.0" > + <class>DlgDownloadKeyToDisk</class> + <widget class="QDialog" name="DlgDownloadKeyToDisk" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>431</width> + <height>175</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Key:</span></p></body></html></string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="labelKey" > + <property name="text" > + <string>USK@qwweqweqweqwe.../foo</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Download to:</span></p></body></html></string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLineEdit" name="edDownloadFileName" > + <property name="dragEnabled" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="btChooseDownloadFileName" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="1" column="0" > + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>15</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>DlgDownloadKeyToDisk</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>DlgDownloadKeyToDisk</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> Added: trunk/fclient/src/fclient/tpls/Ui_DlgDownloadKeyToDiskTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_DlgDownloadKeyToDiskTpl.py (rev 0) +++ trunk/fclient/src/fclient/tpls/Ui_DlgDownloadKeyToDiskTpl.py 2008-07-25 07:12:01 UTC (rev 731) @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/DlgDownloadKeyToDiskTpl.ui' +# +# Created: Thu Jul 24 10:12:00 2008 +# by: PyQt4 UI code generator 4.4.3-snapshot-20080705 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +class Ui_DlgDownloadKeyToDisk(object): + def setupUi(self, DlgDownloadKeyToDisk): + DlgDownloadKeyToDisk.setObjectName("DlgDownloadKeyToDisk") + DlgDownloadKeyToDisk.resize(431, 175) + self.gridLayout = QtGui.QGridLayout(DlgDownloadKeyToDisk) + self.gridLayout.setObjectName("gridLayout") + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.label = QtGui.QLabel(DlgDownloadKeyToDisk) + self.label.setObjectName("label") + self.verticalLayout.addWidget(self.label) + self.labelKey = QtGui.QLabel(DlgDownloadKeyToDisk) + self.labelKey.setObjectName("labelKey") + self.verticalLayout.addWidget(self.labelKey) + self.label_2 = QtGui.QLabel(DlgDownloadKeyToDisk) + self.label_2.setObjectName("label_2") + self.verticalLayout.addWidget(self.label_2) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.edDownloadFileName = QtGui.QLineEdit(DlgDownloadKeyToDisk) + self.edDownloadFileName.setDragEnabled(True) + self.edDownloadFileName.setObjectName("edDownloadFileName") + self.horizontalLayout.addWidget(self.edDownloadFileName) + self.btChooseDownloadFileName = QtGui.QPushButton(DlgDownloadKeyToDisk) + self.btChooseDownloadFileName.setObjectName("btChooseDownloadFileName") + self.horizontalLayout.addWidget(self.btChooseDownloadFileName) + self.verticalLayout.addLayout(self.horizontalLayout) + self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1) + spacerItem = QtGui.QSpacerItem(20, 15, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) + self.line = QtGui.QFrame(DlgDownloadKeyToDisk) + self.line.setFrameShape(QtGui.QFrame.HLine) + self.line.setFrameShadow(QtGui.QFrame.Sunken) + self.line.setObjectName("line") + self.gridLayout.addWidget(self.line, 2, 0, 1, 1) + self.buttonBox = QtGui.QDialogButtonBox(DlgDownloadKeyToDisk) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) + self.buttonBox.setObjectName("buttonBox") + self.gridLayout.addWidget(self.buttonBox, 3, 0, 1, 1) + + self.retranslateUi(DlgDownloadKeyToDisk) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), DlgDownloadKeyToDisk.accept) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), DlgDownloadKeyToDisk.reject) + QtCore.QMetaObject.connectSlotsByName(DlgDownloadKeyToDisk) + + def retranslateUi(self, DlgDownloadKeyToDisk): + DlgDownloadKeyToDisk.setWindowTitle(QtGui.QApplication.translate("DlgDownloadKeyToDisk", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) + self.label.setText(QtGui.QApplication.translate("DlgDownloadKeyToDisk", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" +"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" +"p, li { white-space: pre-wrap; }\n" +"</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal;\">\n" +"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">Key:</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + self.labelKey.setText(QtGui.QApplication.translate("DlgDownloadKeyToDisk", "USK@qwweqweqweqwe.../foo", None, QtGui.QApplication.UnicodeUTF8)) + self.label_2.setText(QtGui.QApplication.translate("DlgDownloadKeyToDisk", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" +"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" +"p, li { white-space: pre-wrap; }\n" +"</style></head><body style=\" font-family:\'Sans Serif\'; font-size:9pt; font-weight:400; font-style:normal;\">\n" +"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">Download to:</span></p></body></html>", None, QtGui.QApplication.UnicodeUTF8)) + self.btChooseDownloadFileName.setText(QtGui.QApplication.translate("DlgDownloadKeyToDisk", "...", None, QtGui.QApplication.UnicodeUTF8)) + + +if __name__ == "__main__": + import sys + app = QtGui.QApplication(sys.argv) + DlgDownloadKeyToDisk = QtGui.QDialog() + ui = Ui_DlgDownloadKeyToDisk() + ui.setupUi(DlgDownloadKeyToDisk) + DlgDownloadKeyToDisk.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-25 07:11:24
|
Revision: 730 http://fclient.svn.sourceforge.net/fclient/?rev=730&view=rev Author: jUrner Date: 2008-07-25 07:11:34 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes Modified Paths: -------------- trunk/fclient/src/fclient/tpls/ViewConnectionWidgetTpl.ui Modified: trunk/fclient/src/fclient/tpls/ViewConnectionWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/ViewConnectionWidgetTpl.ui 2008-07-25 07:11:26 UTC (rev 729) +++ trunk/fclient/src/fclient/tpls/ViewConnectionWidgetTpl.ui 2008-07-25 07:11:34 UTC (rev 730) @@ -5,93 +5,149 @@ <rect> <x>0</x> <y>0</y> - <width>533</width> - <height>356</height> + <width>421</width> + <height>382</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> - <layout class="QGridLayout" > - <property name="margin" > - <number>0</number> - </property> - <property name="spacing" > - <number>0</number> - </property> + <layout class="QGridLayout" name="gridLayout" > <item row="0" column="0" > - <layout class="QHBoxLayout" > + <layout class="QHBoxLayout" name="horizontalLayout_3" > <item> - <layout class="QVBoxLayout" > + <layout class="QVBoxLayout" name="verticalLayout_6" > <item> - <widget class="QLabel" name="label" > + <widget class="QLabel" name="label_5" > <property name="text" > - <string>Host:</string> + <string><b>Fcp connection</b></string> </property> </widget> </item> <item> - <widget class="QLabel" name="label_2" > - <property name="text" > - <string>Port:</string> - </property> - </widget> + <layout class="QVBoxLayout" name="verticalLayout_4" > + <item> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Host:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Port:</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <item> + <widget class="QLineEdit" name="edFcpConnectionHost" /> + </item> + <item> + <widget class="QSpinBox" name="spinFcpConnectionPort" /> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="QCheckBox" name="ckFcpAutoConnect" > + <property name="text" > + <string>Auto Connect</string> + </property> + </widget> + </item> + </layout> </item> - </layout> - </item> - <item> - <layout class="QVBoxLayout" > <item> - <widget class="QLineEdit" name="edConnectionHost" /> - </item> - <item> - <widget class="QSpinBox" name="spinConnectionPort" /> - </item> - </layout> - </item> - <item> - <layout class="QVBoxLayout" > - <item> - <widget class="QCheckBox" name="ckAutoConnect" > + <widget class="QLabel" name="label_6" > <property name="text" > - <string>Auto Connect</string> + <string><b>Fproxy connection</b></string> </property> </widget> </item> <item> - <spacer> - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType" > - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0" > - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> + <layout class="QVBoxLayout" name="verticalLayout_5" > + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <layout class="QVBoxLayout" name="verticalLayout_3" > + <item> + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Host:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Port:</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QLineEdit" name="edFproxyConnectionHost" /> + </item> + <item> + <widget class="QSpinBox" name="spinFproxyConnectionPort" /> + </item> + </layout> + </item> + </layout> + </item> + </layout> </item> </layout> </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> </layout> </item> + <item row="0" column="1" > + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>229</width> + <height>20</height> + </size> + </property> + </spacer> + </item> <item row="1" column="0" > - <spacer> + <spacer name="verticalSpacer" > <property name="orientation" > <enum>Qt::Vertical</enum> </property> <property name="sizeHint" stdset="0" > <size> - <width>321</width> - <height>51</height> + <width>20</width> + <height>97</height> </size> </property> </spacer> </item> - <item row="2" column="0" > + <item row="2" column="0" colspan="2" > <widget class="QPushButton" name="btConnect" > <property name="text" > <string>Connect</string> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:11:17
|
Revision: 729 http://fclient.svn.sourceforge.net/fclient/?rev=729&view=rev Author: jUrner Date: 2008-07-25 07:11:26 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes 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-25 07:11:13 UTC (rev 728) +++ trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui 2008-07-25 07:11:26 UTC (rev 729) @@ -44,28 +44,28 @@ <item row="0" column="0" > <widget class="QToolButton" name="btBack" > <property name="text" > - <string>...</string> + <string>Back</string> </property> </widget> </item> <item row="0" column="1" > <widget class="QToolButton" name="btFwd" > <property name="text" > - <string>...</string> + <string>Forward</string> </property> </widget> </item> <item row="0" column="3" > <widget class="QToolButton" name="btReload" > <property name="text" > - <string>...</string> + <string>Reload</string> </property> </widget> </item> <item row="0" column="4" > <widget class="QToolButton" name="btStop" > <property name="text" > - <string>...</string> + <string>Stop</string> </property> </widget> </item> @@ -75,7 +75,7 @@ </layout> </item> <item> - <widget class="QFrame" name="frameNavBar" > + <widget class="QFrame" name="frameAddressBar" > <property name="minimumSize" > <size> <width>0</width> @@ -99,7 +99,11 @@ <number>0</number> </property> <item row="0" column="0" > - <widget class="QLineEdit" name="edNavBar" /> + <widget class="QLineEdit" name="edAddressBar" > + <property name="dragEnabled" > + <bool>true</bool> + </property> + </widget> </item> </layout> </widget> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:11:05
|
Revision: 728 http://fclient.svn.sourceforge.net/fclient/?rev=728&view=rev Author: jUrner Date: 2008-07-25 07:11:13 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes Modified Paths: -------------- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py trunk/fclient/src/fclient/tpls/Ui_ViewConnectionWidgetTpl.py Modified: trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-25 07:11:00 UTC (rev 727) +++ trunk/fclient/src/fclient/tpls/Ui_ViewBrowserWidgetTpl.py 2008-07-25 07:11:13 UTC (rev 728) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/ViewBrowserWidgetTpl.ui' # -# Created: Mon Jul 21 14:54:05 2008 +# Created: Thu Jul 24 09:24:50 2008 # by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -44,20 +44,21 @@ self.gridLayout_2.addWidget(self.btStop, 0, 4, 1, 1) self.hboxlayout.addWidget(self.frameTools) self.horizontalLayout.addLayout(self.hboxlayout) - 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.gridLayout = QtGui.QGridLayout(self.frameNavBar) + self.frameAddressBar = QtGui.QFrame(ViewBrowserWidget) + self.frameAddressBar.setMinimumSize(QtCore.QSize(0, 0)) + self.frameAddressBar.setFrameShape(QtGui.QFrame.NoFrame) + self.frameAddressBar.setFrameShadow(QtGui.QFrame.Plain) + self.frameAddressBar.setLineWidth(0) + self.frameAddressBar.setObjectName("frameAddressBar") + self.gridLayout = QtGui.QGridLayout(self.frameAddressBar) self.gridLayout.setMargin(0) self.gridLayout.setSpacing(0) self.gridLayout.setObjectName("gridLayout") - self.edNavBar = QtGui.QLineEdit(self.frameNavBar) - self.edNavBar.setObjectName("edNavBar") - self.gridLayout.addWidget(self.edNavBar, 0, 0, 1, 1) - self.horizontalLayout.addWidget(self.frameNavBar) + self.edAddressBar = QtGui.QLineEdit(self.frameAddressBar) + self.edAddressBar.setDragEnabled(True) + self.edAddressBar.setObjectName("edAddressBar") + self.gridLayout.addWidget(self.edAddressBar, 0, 0, 1, 1) + self.horizontalLayout.addWidget(self.frameAddressBar) self.gridLayout_3.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.tabBrowsers = QtGui.QTabWidget(ViewBrowserWidget) self.tabBrowsers.setObjectName("tabBrowsers") @@ -73,10 +74,10 @@ def retranslateUi(self, ViewBrowserWidget): ViewBrowserWidget.setWindowTitle(QtGui.QApplication.translate("ViewBrowserWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) - self.btBack.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) - self.btFwd.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) - self.btReload.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) - self.btStop.setText(QtGui.QApplication.translate("ViewBrowserWidget", "...", None, QtGui.QApplication.UnicodeUTF8)) + self.btBack.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Back", None, QtGui.QApplication.UnicodeUTF8)) + self.btFwd.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Forward", None, QtGui.QApplication.UnicodeUTF8)) + self.btReload.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Reload", None, QtGui.QApplication.UnicodeUTF8)) + self.btStop.setText(QtGui.QApplication.translate("ViewBrowserWidget", "Stop", None, QtGui.QApplication.UnicodeUTF8)) self.tabBrowsers.setTabText(self.tabBrowsers.indexOf(self.tab), QtGui.QApplication.translate("ViewBrowserWidget", "Tab 1", None, QtGui.QApplication.UnicodeUTF8)) Modified: trunk/fclient/src/fclient/tpls/Ui_ViewConnectionWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_ViewConnectionWidgetTpl.py 2008-07-25 07:11:00 UTC (rev 727) +++ trunk/fclient/src/fclient/tpls/Ui_ViewConnectionWidgetTpl.py 2008-07-25 07:11:13 UTC (rev 728) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/ViewConnectionWidgetTpl.ui' # -# Created: Mon Jul 21 14:58:16 2008 +# Created: Fri Jul 25 00:27:53 2008 # by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -12,56 +12,99 @@ class Ui_ViewConnectionWidget(object): def setupUi(self, ViewConnectionWidget): ViewConnectionWidget.setObjectName("ViewConnectionWidget") - ViewConnectionWidget.resize(533, 356) - self.gridlayout = QtGui.QGridLayout(ViewConnectionWidget) - self.gridlayout.setMargin(0) - self.gridlayout.setSpacing(0) - self.gridlayout.setObjectName("gridlayout") - self.hboxlayout = QtGui.QHBoxLayout() - self.hboxlayout.setObjectName("hboxlayout") - self.vboxlayout = QtGui.QVBoxLayout() - self.vboxlayout.setObjectName("vboxlayout") + ViewConnectionWidget.resize(421, 382) + self.gridLayout = QtGui.QGridLayout(ViewConnectionWidget) + self.gridLayout.setObjectName("gridLayout") + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.verticalLayout_6 = QtGui.QVBoxLayout() + self.verticalLayout_6.setObjectName("verticalLayout_6") + self.label_5 = QtGui.QLabel(ViewConnectionWidget) + self.label_5.setObjectName("label_5") + self.verticalLayout_6.addWidget(self.label_5) + self.verticalLayout_4 = QtGui.QVBoxLayout() + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") self.label = QtGui.QLabel(ViewConnectionWidget) self.label.setObjectName("label") - self.vboxlayout.addWidget(self.label) + self.verticalLayout.addWidget(self.label) self.label_2 = QtGui.QLabel(ViewConnectionWidget) self.label_2.setObjectName("label_2") - self.vboxlayout.addWidget(self.label_2) - self.hboxlayout.addLayout(self.vboxlayout) - self.vboxlayout1 = QtGui.QVBoxLayout() - self.vboxlayout1.setObjectName("vboxlayout1") - self.edConnectionHost = QtGui.QLineEdit(ViewConnectionWidget) - self.edConnectionHost.setObjectName("edConnectionHost") - self.vboxlayout1.addWidget(self.edConnectionHost) - self.spinConnectionPort = QtGui.QSpinBox(ViewConnectionWidget) - self.spinConnectionPort.setObjectName("spinConnectionPort") - self.vboxlayout1.addWidget(self.spinConnectionPort) - self.hboxlayout.addLayout(self.vboxlayout1) - self.vboxlayout2 = QtGui.QVBoxLayout() - self.vboxlayout2.setObjectName("vboxlayout2") - self.ckAutoConnect = QtGui.QCheckBox(ViewConnectionWidget) - self.ckAutoConnect.setObjectName("ckAutoConnect") - self.vboxlayout2.addWidget(self.ckAutoConnect) - spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) - self.vboxlayout2.addItem(spacerItem) - self.hboxlayout.addLayout(self.vboxlayout2) - self.gridlayout.addLayout(self.hboxlayout, 0, 0, 1, 1) - spacerItem1 = QtGui.QSpacerItem(321, 51, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridlayout.addItem(spacerItem1, 1, 0, 1, 1) + self.verticalLayout.addWidget(self.label_2) + self.horizontalLayout.addLayout(self.verticalLayout) + self.vboxlayout = QtGui.QVBoxLayout() + self.vboxlayout.setObjectName("vboxlayout") + self.edFcpConnectionHost = QtGui.QLineEdit(ViewConnectionWidget) + self.edFcpConnectionHost.setObjectName("edFcpConnectionHost") + self.vboxlayout.addWidget(self.edFcpConnectionHost) + self.spinFcpConnectionPort = QtGui.QSpinBox(ViewConnectionWidget) + self.spinFcpConnectionPort.setObjectName("spinFcpConnectionPort") + self.vboxlayout.addWidget(self.spinFcpConnectionPort) + self.horizontalLayout.addLayout(self.vboxlayout) + self.verticalLayout_4.addLayout(self.horizontalLayout) + self.ckFcpAutoConnect = QtGui.QCheckBox(ViewConnectionWidget) + self.ckFcpAutoConnect.setObjectName("ckFcpAutoConnect") + self.verticalLayout_4.addWidget(self.ckFcpAutoConnect) + self.verticalLayout_6.addLayout(self.verticalLayout_4) + self.label_6 = QtGui.QLabel(ViewConnectionWidget) + self.label_6.setObjectName("label_6") + self.verticalLayout_6.addWidget(self.label_6) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.label_3 = QtGui.QLabel(ViewConnectionWidget) + self.label_3.setObjectName("label_3") + self.verticalLayout_3.addWidget(self.label_3) + self.label_4 = QtGui.QLabel(ViewConnectionWidget) + self.label_4.setObjectName("label_4") + self.verticalLayout_3.addWidget(self.label_4) + self.horizontalLayout_2.addLayout(self.verticalLayout_3) + self.verticalLayout_2 = QtGui.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.edFproxyConnectionHost = QtGui.QLineEdit(ViewConnectionWidget) + self.edFproxyConnectionHost.setObjectName("edFproxyConnectionHost") + self.verticalLayout_2.addWidget(self.edFproxyConnectionHost) + self.spinFproxyConnectionPort = QtGui.QSpinBox(ViewConnectionWidget) + self.spinFproxyConnectionPort.setObjectName("spinFproxyConnectionPort") + self.verticalLayout_2.addWidget(self.spinFproxyConnectionPort) + self.horizontalLayout_2.addLayout(self.verticalLayout_2) + self.verticalLayout_5.addLayout(self.horizontalLayout_2) + self.verticalLayout_6.addLayout(self.verticalLayout_5) + self.horizontalLayout_3.addLayout(self.verticalLayout_6) + self.line = QtGui.QFrame(ViewConnectionWidget) + self.line.setFrameShape(QtGui.QFrame.VLine) + self.line.setFrameShadow(QtGui.QFrame.Sunken) + self.line.setObjectName("line") + self.horizontalLayout_3.addWidget(self.line) + self.gridLayout.addLayout(self.horizontalLayout_3, 0, 0, 1, 1) + spacerItem = QtGui.QSpacerItem(229, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem, 0, 1, 1, 1) + spacerItem1 = QtGui.QSpacerItem(20, 97, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1) self.btConnect = QtGui.QPushButton(ViewConnectionWidget) self.btConnect.setCheckable(True) self.btConnect.setAutoExclusive(False) self.btConnect.setObjectName("btConnect") - self.gridlayout.addWidget(self.btConnect, 2, 0, 1, 1) + self.gridLayout.addWidget(self.btConnect, 2, 0, 1, 2) self.retranslateUi(ViewConnectionWidget) QtCore.QMetaObject.connectSlotsByName(ViewConnectionWidget) def retranslateUi(self, ViewConnectionWidget): ViewConnectionWidget.setWindowTitle(QtGui.QApplication.translate("ViewConnectionWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) + self.label_5.setText(QtGui.QApplication.translate("ViewConnectionWidget", "<b>Fcp connection</b>", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Host:", None, QtGui.QApplication.UnicodeUTF8)) self.label_2.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Port:", None, QtGui.QApplication.UnicodeUTF8)) - self.ckAutoConnect.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Auto Connect", None, QtGui.QApplication.UnicodeUTF8)) + self.ckFcpAutoConnect.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Auto Connect", None, QtGui.QApplication.UnicodeUTF8)) + self.label_6.setText(QtGui.QApplication.translate("ViewConnectionWidget", "<b>Fproxy connection</b>", None, QtGui.QApplication.UnicodeUTF8)) + self.label_3.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Host:", None, QtGui.QApplication.UnicodeUTF8)) + self.label_4.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Port:", None, QtGui.QApplication.UnicodeUTF8)) self.btConnect.setText(QtGui.QApplication.translate("ViewConnectionWidget", "Connect", 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-25 07:10:52
|
Revision: 727 http://fclient.svn.sourceforge.net/fclient/?rev=727&view=rev Author: jUrner Date: 2008-07-25 07:11:00 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes Modified Paths: -------------- trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py Modified: trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui =================================================================== --- trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui 2008-07-25 07:10:20 UTC (rev 726) +++ trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui 2008-07-25 07:11:00 UTC (rev 727) @@ -6,15 +6,15 @@ <x>0</x> <y>0</y> <width>532</width> - <height>354</height> + <height>186</height> </rect> </property> <property name="windowTitle" > <string>Form</string> </property> - <layout class="QGridLayout" name="gridLayout" > + <layout class="QGridLayout" name="gridLayout_3" > <item row="0" column="0" > - <layout class="QHBoxLayout" name="horizontalLayout" > + <layout class="QHBoxLayout" name="horizontalLayout_2" > <item> <widget class="QLabel" name="label" > <property name="text" > @@ -23,16 +23,86 @@ </widget> </item> <item> - <widget class="QLineEdit" name="edHomePage" /> + <widget class="QLineEdit" name="edHomePage" > + <property name="dragEnabled" > + <bool>true</bool> + </property> + </widget> </item> </layout> </item> <item row="1" column="0" > - <widget class="QCheckBox" name="ckHomePageIsStartPage" > - <property name="text" > - <string>Homepage is start page</string> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Open in new tab</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QCheckBox" name="ckOpenLinksInNewTab" > + <property name="text" > + <string>Links</string> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QCheckBox" name="ckOpenBookmarksInNewTab" > + <property name="text" > + <string>Bookmarks</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QCheckBox" name="ckOpenAddressBarInNewTab" > + <property name="text" > + <string>Address bar</string> + </property> + </widget> + </item> + </layout> + <zorder>ckOpenLinksInNewTab</zorder> + <zorder>ckOpenBookmarksInNewTab</zorder> + <zorder>ckOpenAddressBarInNewTab</zorder> + <zorder>groupBox_2</zorder> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Others</string> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="0" column="0" > + <widget class="QCheckBox" name="ckOpenHomePageOnNewTabCreated" > + <property name="text" > + <string>Open home page when a new tab is created</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QCheckBox" name="ckBackIsClose" > + <property name="text" > + <string>Back is close</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> </item> <item row="2" column="0" > <spacer name="verticalSpacer" > Modified: trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py =================================================================== --- trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py 2008-07-25 07:10:20 UTC (rev 726) +++ trunk/fclient/src/fclient/tpls/Ui_PrefsBrowserWidgetTpl.py 2008-07-25 07:11:00 UTC (rev 727) @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file '/home/me/src/proj/fclient/trunk/fclient/src/fclient/tpls/PrefsBrowserWidgetTpl.ui' # -# Created: Mon Jul 21 10:53:36 2008 +# Created: Thu Jul 24 12:03:27 2008 # by: PyQt4 UI code generator 4.4.3-snapshot-20080705 # # WARNING! All changes made in this file will be lost! @@ -12,23 +12,59 @@ class Ui_PrefsBrowserWidget(object): def setupUi(self, PrefsBrowserWidget): PrefsBrowserWidget.setObjectName("PrefsBrowserWidget") - PrefsBrowserWidget.resize(532, 354) - self.gridLayout = QtGui.QGridLayout(PrefsBrowserWidget) - self.gridLayout.setObjectName("gridLayout") - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") + PrefsBrowserWidget.resize(532, 186) + self.gridLayout_3 = QtGui.QGridLayout(PrefsBrowserWidget) + self.gridLayout_3.setObjectName("gridLayout_3") + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtGui.QLabel(PrefsBrowserWidget) self.label.setObjectName("label") - self.horizontalLayout.addWidget(self.label) + self.horizontalLayout_2.addWidget(self.label) self.edHomePage = QtGui.QLineEdit(PrefsBrowserWidget) + self.edHomePage.setDragEnabled(True) self.edHomePage.setObjectName("edHomePage") - self.horizontalLayout.addWidget(self.edHomePage) - self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) - self.ckHomePageIsStartPage = QtGui.QCheckBox(PrefsBrowserWidget) - self.ckHomePageIsStartPage.setObjectName("ckHomePageIsStartPage") - self.gridLayout.addWidget(self.ckHomePageIsStartPage, 1, 0, 1, 1) + self.horizontalLayout_2.addWidget(self.edHomePage) + self.gridLayout_3.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.groupBox = QtGui.QGroupBox(PrefsBrowserWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) + self.groupBox.setSizePolicy(sizePolicy) + self.groupBox.setObjectName("groupBox") + self.gridLayout = QtGui.QGridLayout(self.groupBox) + self.gridLayout.setObjectName("gridLayout") + self.ckOpenLinksInNewTab = QtGui.QCheckBox(self.groupBox) + self.ckOpenLinksInNewTab.setObjectName("ckOpenLinksInNewTab") + self.gridLayout.addWidget(self.ckOpenLinksInNewTab, 0, 0, 1, 1) + self.ckOpenBookmarksInNewTab = QtGui.QCheckBox(self.groupBox) + self.ckOpenBookmarksInNewTab.setObjectName("ckOpenBookmarksInNewTab") + self.gridLayout.addWidget(self.ckOpenBookmarksInNewTab, 4, 0, 1, 1) + self.ckOpenAddressBarInNewTab = QtGui.QCheckBox(self.groupBox) + self.ckOpenAddressBarInNewTab.setObjectName("ckOpenAddressBarInNewTab") + self.gridLayout.addWidget(self.ckOpenAddressBarInNewTab, 1, 0, 1, 1) + self.horizontalLayout.addWidget(self.groupBox) + self.groupBox_2 = QtGui.QGroupBox(PrefsBrowserWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth()) + self.groupBox_2.setSizePolicy(sizePolicy) + self.groupBox_2.setObjectName("groupBox_2") + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout_2.setObjectName("gridLayout_2") + self.ckOpenHomePageOnNewTabCreated = QtGui.QCheckBox(self.groupBox_2) + self.ckOpenHomePageOnNewTabCreated.setObjectName("ckOpenHomePageOnNewTabCreated") + self.gridLayout_2.addWidget(self.ckOpenHomePageOnNewTabCreated, 0, 0, 1, 1) + self.ckBackIsClose = QtGui.QCheckBox(self.groupBox_2) + self.ckBackIsClose.setObjectName("ckBackIsClose") + self.gridLayout_2.addWidget(self.ckBackIsClose, 1, 0, 1, 1) + self.horizontalLayout.addWidget(self.groupBox_2) + self.gridLayout_3.addLayout(self.horizontalLayout, 1, 0, 1, 1) spacerItem = QtGui.QSpacerItem(20, 297, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout.addItem(spacerItem, 2, 0, 1, 1) + self.gridLayout_3.addItem(spacerItem, 2, 0, 1, 1) self.retranslateUi(PrefsBrowserWidget) QtCore.QMetaObject.connectSlotsByName(PrefsBrowserWidget) @@ -36,7 +72,13 @@ def retranslateUi(self, PrefsBrowserWidget): PrefsBrowserWidget.setWindowTitle(QtGui.QApplication.translate("PrefsBrowserWidget", "Form", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Homepage:", None, QtGui.QApplication.UnicodeUTF8)) - self.ckHomePageIsStartPage.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Homepage is start page", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox.setTitle(QtGui.QApplication.translate("PrefsBrowserWidget", "Open in new tab", None, QtGui.QApplication.UnicodeUTF8)) + self.ckOpenLinksInNewTab.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Links", None, QtGui.QApplication.UnicodeUTF8)) + self.ckOpenBookmarksInNewTab.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Bookmarks", None, QtGui.QApplication.UnicodeUTF8)) + self.ckOpenAddressBarInNewTab.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Address bar", None, QtGui.QApplication.UnicodeUTF8)) + self.groupBox_2.setTitle(QtGui.QApplication.translate("PrefsBrowserWidget", "Others", None, QtGui.QApplication.UnicodeUTF8)) + self.ckOpenHomePageOnNewTabCreated.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Open home page when a new tab is created", None, QtGui.QApplication.UnicodeUTF8)) + self.ckBackIsClose.setText(QtGui.QApplication.translate("PrefsBrowserWidget", "Back is close", None, QtGui.QApplication.UnicodeUTF8)) if __name__ == "__main__": This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:10:12
|
Revision: 726 http://fclient.svn.sourceforge.net/fclient/?rev=726&view=rev Author: jUrner Date: 2008-07-25 07:10:20 +0000 (Fri, 25 Jul 2008) Log Message: ----------- many changes Modified Paths: -------------- trunk/fclient/src/fclient/config.py Modified: trunk/fclient/src/fclient/config.py =================================================================== --- trunk/fclient/src/fclient/config.py 2008-07-25 07:09:37 UTC (rev 725) +++ trunk/fclient/src/fclient/config.py 2008-07-25 07:10:20 UTC (rev 726) @@ -4,9 +4,8 @@ if __name__ == '__main__': # see --> http://bugs.python.org/issue1510172 . works only current dir and below import os; __path__ = [os.path.dirname(__file__)] -import atexit import os -import weakref +import weakref from PyQt4 import QtCore from .lib import fcp2 @@ -22,11 +21,14 @@ FclientCopyright = '(c) 2008 Juergen Urner' FclientHomepage = 'http://fclient.sourceforge.net/' -FclientDir = os.path.dirname(os.path.abspath(__file__)) -FclientDocDir = os.path.join(FclientDir, 'doc') -FclientDownloadsDir = os.path.join(FclientDir, 'downloads') -FclientResDir = os.path.join(FclientDir, 'res') -FclientSettingsDir = os.path.join(FclientDir, 'settings') +_ = os.path.dirname(os.path.abspath(__file__)) +FclientDir = QtCore.QString(_) +FclientDocDir = QtCore.QString(os.path.join(_, 'doc')) +FclientDownloadDir = QtCore.QString(os.path.join(_, 'downloads')) +FclientResDir = QtCore.QString(os.path.join(_, 'res')) +FclientSettingsDir = QtCore.QString(os.path.join(_, 'settings')) +del _ + #********************************************************************************** # looks like QObject.findChild() does not always work. docs mention troubles # with MSVC 6 where you should use qFindChild(). can not test this. so keep @@ -100,16 +102,23 @@ ('SettingsDir', 'String', QtCore.QString(FclientSettingsDir), SettingScopeUser), # if not None, settings are stored locally in the app folder ('SettingsAllUsers', 'Bool', False, SettingScopeUser), # store settings for all users? ('IconTheme', 'String', 'crystal', SettingScopeUser), - ('DownloadsDir', 'String', FclientDownloadsDir, SettingScopeUser), + ('DownloadDir', 'String', FclientDownloadDir, SettingScopeUser), + + ('FcpAutoConnect', 'Bool', True, SettingScopeUser), + ('FcpConnectionName', 'String', '', SettingScopeUser), #TODO: not implemented + ('FcpConnectionHost', 'String', fcp2.Client.DefaultFcpHost, SettingScopeUser), + ('FcpConnectionPort', 'UInt', fcp2.Client.DefaultFcpPort, SettingScopeUser), + ('FproxyConnectionHost', 'String','127.0.0.1', SettingScopeUser), + ('FproxyConnectionPort', 'UInt', 8888, SettingScopeUser), ) SettingsBase._config_settings_ = Settings() #********************************************************************************** # #********************************************************************************** -fcpClient = fcp2.Client() # global fcp client -settings = Settings(None) # global settings class -resources = resources.Resources([FclientResDir, ], ) +fcpClient = fcp2.Client() # global fcp client +settings = Settings(None).restore() # global settings class +resources = resources.Resources([FclientResDir, ], ) # access to global resources #********************************************************************************** # @@ -149,4 +158,42 @@ 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 + + +#******************************************************************************** +# +#******************************************************************************** +#TODO: maybe find a better place +def qStringToFcpKey(qString): + """converts a qString to a fcp key + @return: fcp key or None if the key could not be converted + """ + string = unicode(qString) + try: + key = fcp2.Key(string) + except fcp2.ErrorKey: + pass + else: + return key + return None + + +def guessFileNameFromKey(fcpKey, default=None): + """guesses the filename from a key + @param fcpKey: fcp key to guess the filename for + @paran default: what to return when no filename could be guessed? + @return: (QString) filename or or default if no filename was found + """ + key = fcpKey.toString().rstrip('/') + filename = '' + if fcpKey.KeyType == fcp2.ConstKeyType.KSK: + if fcpKey.docName is not None: + filename = os.path.basename(fcpKey.docName) + else: + filename = os.path.basename(key) + if filename == key: + filename = '' + if filename: + return QtCore.QString(filename) + return default + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:09:27
|
Revision: 725 http://fclient.svn.sourceforge.net/fclient/?rev=725&view=rev Author: jUrner Date: 2008-07-25 07:09:37 +0000 (Fri, 25 Jul 2008) Log Message: ----------- unicode Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/iohandler.py Modified: trunk/fclient/src/fclient/lib/fcp2/iohandler.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/iohandler.py 2008-07-25 07:09:13 UTC (rev 724) +++ trunk/fclient/src/fclient/lib/fcp2/iohandler.py 2008-07-25 07:09:37 UTC (rev 725) @@ -120,13 +120,13 @@ self.close() raise consts.ErrorIOBroken(details, consts.ConstLogger.IO.error) else: - return p + return p.decode('utf-8') def write(self, bytes): try: totalSend = 0 while totalSend < len(bytes): - n = self.socket.send(bytes[totalSend: ]) + n = self.socket.send(bytes[totalSend: ].encode('utf-8')) totalSend += n except socket.error, details: self.close() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:09:03
|
Revision: 724 http://fclient.svn.sourceforge.net/fclient/?rev=724&view=rev Author: jUrner Date: 2008-07-25 07:09:13 +0000 (Fri, 25 Jul 2008) Log Message: ----------- unify errors Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/__init__.py Modified: trunk/fclient/src/fclient/lib/fcp2/__init__.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/__init__.py 2008-07-25 07:08:54 UTC (rev 723) +++ trunk/fclient/src/fclient/lib/fcp2/__init__.py 2008-07-25 07:09:13 UTC (rev 724) @@ -22,7 +22,7 @@ ConstRequestModified, ConstRequestStatus, ConstPutMultiple, ConstReturnType, ConstTimeDeltaPostfix, ConstUploadFrom, ConstVerbosity, Error, ErrorIOBroken, ErrorIOClosed, ErrorIOConnectFailed, ErrorIOTimeout, ErrorMessageParse, FcpFalse, FcpTrue) -from .key import (Key, KeyCHK, KeyKSK, KeySSK, KeyTypesAll, KeyUSK, TypeKey, base64UrlsaveDecode, keyNormkey) +from .key import (ErrorKey, Key, KeyCHK, KeyKSK, KeySSK, KeyTypesAll, KeyUSK, TypeKey, base64UrlsaveDecode, keyNormkey) from .message import (MessagesAll, MsgAddPeer, MsgAllData, MsgClientDisconnected, MsgClientGet, MsgClientHello, MsgClientPut, MsgClientPutComplexDir, MsgClientPutDiskDir, MsgClientSocketDied, MsgClientSocketTimeout, MsgCloseConnectionDuplicateClientName, MsgConfigData, MsgDataFound, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:08:46
|
Revision: 723 http://fclient.svn.sourceforge.net/fclient/?rev=723&view=rev Author: jUrner Date: 2008-07-25 07:08:54 +0000 (Fri, 25 Jul 2008) Log Message: ----------- unify errors Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/key.py Modified: trunk/fclient/src/fclient/lib/fcp2/key.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/key.py 2008-07-25 07:08:16 UTC (rev 722) +++ trunk/fclient/src/fclient/lib/fcp2/key.py 2008-07-25 07:08:54 UTC (rev 723) @@ -17,6 +17,10 @@ _ReMatchExact = '\A%s\Z' KeyTypesAll = {} + +class ErrorKey(Exception): + """fcp key related errors""" + #************************************************************************************** # freenet base64 for keys #************************************************************************************** @@ -76,14 +80,14 @@ """converts a fcp key to a python key @param string: (str) fcp key @return: python key object - @raise ValueError: if the string can not be converted + @raise ErrorKey: if the string can not be converted @note: use this method to convert an arbirary key to the corrosponding python key object """ for clssKeyType in KeyTypesAll.values(): result = clssKeyType.fromString(string) if result is not None: return result - raise ValueError('Invalid key: %s' % string) + raise ErrorKey('Invalid key: %s' % string) @classmethod def pythonToFcp(self, key): @@ -325,7 +329,7 @@ out = [self.KeyType + self.keyData, ] if self.docName is not None: if self.edition is None: - raise ValueError('no edition number specified') + raise ErrorKey('no edition number specified') out.append(urllib.quote(self.docName)) out.append(urllib.quote(str(self.edition))) if self.tail is not None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:08:07
|
Revision: 722 http://fclient.svn.sourceforge.net/fclient/?rev=722&view=rev Author: jUrner Date: 2008-07-25 07:08:16 +0000 (Fri, 25 Jul 2008) Log Message: ----------- RequestRestored has gone. use RequestStarted Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/client.py trunk/fclient/src/fclient/lib/fcp2/test/test_client.py Modified: trunk/fclient/src/fclient/lib/fcp2/client.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/client.py 2008-07-25 07:07:59 UTC (rev 721) +++ trunk/fclient/src/fclient/lib/fcp2/client.py 2008-07-25 07:08:16 UTC (rev 722) @@ -905,11 +905,9 @@ if 'Started' in initialRequest.params: del initialRequest.params['Started'] initialRequest['RequestStatus'] |= consts.ConstRequestStatus.Restored - self.events.RequestRestored(initialRequest) - return True - - #TODO: ignore handshake? - return False + + self.events.RequestStarted(initialRequest) + return True elif msg == message.MsgPersistentRequestModified: @@ -1395,7 +1393,7 @@ IgnoreDS=ignoreDS, Persistence=persistence, PriorityClass=priorityClass, - ReturnType=consts.ConstReturnType.Direct, + ReturnType=consts.ConstReturnType.Disk, Verbosity=consts.ConstVerbosity.ReportProgress, ) if allowedMimeTypes is not None: msg['AllowedMimeTypes'] = allowedMimeTypes Modified: trunk/fclient/src/fclient/lib/fcp2/test/test_client.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/test/test_client.py 2008-07-25 07:07:59 UTC (rev 721) +++ trunk/fclient/src/fclient/lib/fcp2/test/test_client.py 2008-07-25 07:08:16 UTC (rev 722) @@ -1120,7 +1120,7 @@ self.failUnless(myIdentifier in requestsAll) myRequest = self.client.getRequest(myIdentifier) msg = self.assertHasNextEvent( - self.client.events.RequestRestored, + self.client.events.RequestStarted, fcp2.MsgClientGet, ('Identifier', myIdentifier), ('RequestStatus', fcp2.ConstRequestStatus.Restored), # no RequestStatus.Pending flag should be set here @@ -1222,7 +1222,7 @@ self.failUnless(myIdentifier in requestsAll) - self.assertHasNextEvent(None) + self.assertHasNextEvent(self.client.events.RequestStarted) self.assertHasNextMessage(None) self.failUnless(self.ioOpen()) @@ -1915,7 +1915,7 @@ Started='false', **myRequest.params ) - #self.assertNextMessage(fcp2.MsgClientGet) + self.assertHasNextEvent(self.client.events.RequestStarted) # test modify persistent user data @@ -1963,6 +1963,7 @@ Started='false', **myRequest.params ) + self.assertHasNextEvent(self.client.events.RequestStarted) # test modify persistent user data self.client.modifyRequest(myIdentifier, persistentUserData='bar', priorityClass=fcp2.ConstPriority.High) @@ -2122,7 +2123,7 @@ # check if the client restored the request msg = self.assertHasNextEvent( - self.client.events.RequestRestored, + self.client.events.RequestStarted, fcp2.MsgClientGet, ('Identifier', myIdentifier), ('RequestStatus', fcp2.ConstRequestStatus.Restored), # no RequestStatus.Pending flag should be set here @@ -2217,7 +2218,7 @@ ) self.assertEqual(len(requestsAll), 1) - self.assertHasNextEvent(None) + self.assertHasNextEvent(self.client.events.RequestStarted) self.assertHasNextMessage(None) @@ -2371,7 +2372,7 @@ ) self.assertEqual(len(requestsAll), 1) - self.assertHasNextEvent(None) + self.assertHasNextEvent(self.client.events.RequestStarted) self.assertHasNextMessage(None) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jU...@us...> - 2008-07-25 07:07:51
|
Revision: 721 http://fclient.svn.sourceforge.net/fclient/?rev=721&view=rev Author: jUrner Date: 2008-07-25 07:07:59 +0000 (Fri, 25 Jul 2008) Log Message: ----------- RequestRestored has gone. use RequestStarted Modified Paths: -------------- trunk/fclient/src/fclient/lib/fcp2/events.py Modified: trunk/fclient/src/fclient/lib/fcp2/events.py =================================================================== --- trunk/fclient/src/fclient/lib/fcp2/events.py 2008-07-25 07:06:32 UTC (rev 720) +++ trunk/fclient/src/fclient/lib/fcp2/events.py 2008-07-25 07:07:59 UTC (rev 721) @@ -116,8 +116,8 @@ class RequestRemoved(events.Event): """A request has been removed""" - class RequestRestored(events.Event): - """A request has been restored""" + class RequestStarted(events.Event): + """A request has been started""" class USKUpdated(events.Event): """An update of an Usk has arrived""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |