SF.net SVN: fclient:[913] trunk/fclient/fclient/impl/SideBarLoadDetails.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-08-16 08:00:03
|
Revision: 913
http://fclient.svn.sourceforge.net/fclient/?rev=913&view=rev
Author: jUrner
Date: 2008-08-16 08:00:12 +0000 (Sat, 16 Aug 2008)
Log Message:
-----------
no longer needed
Removed Paths:
-------------
trunk/fclient/fclient/impl/SideBarLoadDetails.py
Deleted: trunk/fclient/fclient/impl/SideBarLoadDetails.py
===================================================================
--- trunk/fclient/fclient/impl/SideBarLoadDetails.py 2008-08-16 07:59:09 UTC (rev 912)
+++ trunk/fclient/fclient/impl/SideBarLoadDetails.py 2008-08-16 08:00:12 UTC (rev 913)
@@ -1,270 +0,0 @@
-"""sideBar for the browser to show detailed information on page load"""
-#********************************************************************************
-#TODO:
-#
-# x. how to adjust item colors via stylesheet?
-# x. limit number of requests we keep track off (performance)?
-# x. context menu actions for items like ...load in browser ..download key (...)
-# x. save column widths
-#
-#********************************************************************************
-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 posixpath
-from PyQt4 import QtCore, QtGui
-
-from . import config
-from .tpls.Ui_SideBarLoadDetailsTpl import Ui_SideBarLoadDetails
-#**********************************************************************************
-#
-#**********************************************************************************
-class SideBarLoadDetailsSettings(config.SettingsBase):
- _key_ = config.IdSideBarLoadDetails
- _settings_ = (
- ('ColorFgItem', 'QColor', QtGui.QColor('black')),
- ('ColorBgItem', 'QColor', QtGui.QColor('white')),
- ('ColorFgItemError', 'QColor', QtGui.QColor('red')),
- ('ColorBgItemError', 'QColor', QtGui.QColor('white')),
- ('ColorFgItemComplete', 'QColor', QtGui.QColor('green')),
- ('ColorBgItemComplete', 'QColor', QtGui.QColor('white')),
- )
-
-
-class TreeItem(QtGui.QTreeWidgetItem):
-
- StatusNone = 0
- StatusLoading = 1
- StatusComplete = 2
- StatusError = 3
- def __init__(self, *args):
- QtGui.QTreeWidgetItem.__init__(self, *args)
- self.status = self.StatusNone
- self.url = None
-
-
-
-class SideBarLoadDetails(QtGui.QWidget, Ui_SideBarLoadDetails):
-
- IdTree = 'tree'
- IdBtClose = 'btClose'
-
- IndexProgress = 0
- IndexStatus = 1
- IndexName = 2
-
-
- def __init__(self, parent=None, closeAction=None):
- QtGui.QWidget.__init__(self, parent)
- self.statusNames = {} # TreeItem.Status* --> displayName
-
- self.setupUi(self)
-
- config.ObjectRegistry.register(self)
- self.fcSettings = SideBarLoadDetailsSettings(self).restore()
- self.baseKey = None # base key of the page
-
- # setup tree
- tree = self.controlById(self.IdTree)
- tree.setUniformRowHeights(True)
- tree.setRootIsDecorated(False)
-
- # setup close button
- if closeAction is not None:
- bt = self.controlById(self.IdBtClose)
- bt.setDefaultAction(closeAction)
-
- ##############################
- ## private methods
- ##############################
- def _splitBaseKey(self, url):
- baseKey = ''
- fileName = tmp_fileName = unicode(url.path())
- if tmp_fileName:
- tmp_fileName = tmp_fileName.lstrip('/')
- if tmp_fileName:
- # prep fileName to extract freenetKey
- T = tmp_fileName.split('/', 1)
- if len(T) == 2:
- tmp_baseKey, tmp_fileName = T
- else:
- tmp_baseKey, tmp_fileName = T[0], ''
- # check if baseKey is a freenet key
- if config.qStringToFcpKey(tmp_baseKey) is not None:
- baseKey = tmp_baseKey
- fileName = tmp_fileName
- else:
- fileName = fileName.lstrip('/')
- return baseKey, fileName
-
- ##############################
- ## methods
- ##############################
- def addNetworkReply(self, indexReply, networkReplyData):
- #TODO: better extraction of filename part
- tree = self.controlById(self.IdTree)
- n = tree.topLevelItemCount()
- if indexReply < n:
- return
-
- if indexReply == 0:
- self.baseKey, fileName = self._splitBaseKey(networkReplyData.url)
- else:
- #problem: index page may point somewhere deep into a container
- # ..so we can not assume all following requests of are lokated deeper
- # ..in the age hirarchy. anyways. links to external resources are
- # ..always displayed as absolute urls
- baseKey, fileName = self._splitBaseKey(networkReplyData.url)
- if baseKey != self.baseKey:
- fileName = unicode(networkReplyData.url.toString())
- if not fileName:
- fileName = '/'
-
- item = TreeItem(tree)
- item.url = networkReplyData.url
- # set progress
- if networkReplyData.bytesTotal < 1:
- progress = '0%'
- else:
- progress = str(int((float(networkReplyData.bytesReceived) / networkReplyData.bytesTotal * 100))) + '%'
- item.setData(
- self.IndexProgress,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(progress),
- )
- # set status
- if networkReplyData.bytesReceived:
- item.status = TreeItem.StatusLoading
- if networkReplyData.errorCode is not None:
- item.status = TreeItem.StatusError
- if networkReplyData.finished:
- item.status = TreeItem.StatusComplete
- item.setData(
- self.IndexStatus,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(self.statusNames[item.status]),
- )
- # set fileName
- item.setData(
- self.IndexName,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(fileName),
- )
- # set vcolors
- item.setForeground(self.IndexStatus, self.fcSettings.value('ColorFgItem'))
- item.setBackground(self.IndexStatus, self.fcSettings.value('ColorBgItem'))
-
-
- def controlById(self, idControl):
- return getattr(self, idControl)
-
- def setCurrent(self, browserWidget, flag):
- if flag:
- self.setBrowser(browserWidget.currentBrowser())
- else:
- tree = self.controlById(self.IdTree)
- tree.clear()
- self.baseUrl = None
-
- def setBrowser(self, browser):
- tree = self.controlById(self.IdTree)
- tree.clear()
- self.baseUrl = None
- # setup browser
- if browser is not None:
- self.connect(browser, QtCore.SIGNAL('networkGetRequestCreated(int, QObject*)'), self.addNetworkReply)
- self.connect(browser, QtCore.SIGNAL('networkReplyProgress(int, QObject*)'), self.onBrowserNetworkReplyProgress)
- self.connect(browser, QtCore.SIGNAL('networkReplyError(int, QObject*)'), self.onBrowserNetworkReplyError)
- self.connect(browser, QtCore.SIGNAL('networkReplyFinished(int, QObject*)'), self.onBrowserNetworkReplyFinished)
- self.connect(browser, QtCore.SIGNAL('loadStarted()'), self.onBrowserLoadStarted)
- for indexReply, networkReplyData in enumerate(browser.networkGetReplies()):
- self.addNetworkReply(indexReply, networkReplyData)
-
- ###########################
- ## overwritten methods
- ###########################
- def retranslateUi(self, this):
- Ui_SideBarLoadDetails.retranslateUi(self, this)
- tree = self.controlById(self.IdTree)
- headerLabels = [
- (self.IndexProgress, self.trUtf8('Progress')),
- (self.IndexStatus, self.trUtf8('Status')),
- (self.IndexName, self.trUtf8('Name')),
- ]
- headerLabels.sort()
- tree.setHeaderLabels([i[1] for i in headerLabels])
- self.statusNames = {
- TreeItem.StatusNone: self.trUtf8('waiting'),
- TreeItem.StatusLoading: self.trUtf8('loading'),
- TreeItem.StatusComplete: self.trUtf8('complete'),
- TreeItem.StatusError: self.trUtf8('error'),
- }
- root = tree.invisibleRootItem()
- for i in xrange(root.childCount()):
- item = root.child(i)
- item.setData(
- self.IndexStatus,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(self.statusNames[item.status]),
- )
- ##############################
- ## event handlers
- ##############################
- def onBrowserLoadStarted(self):
- tree = self.controlById(self.IdTree)
- tree.clear()
-
- def onBrowserNetworkReplyProgress(self, indexReply, networkReplyData):
- tree = self.controlById(self.IdTree)
- item = tree.invisibleRootItem().child(indexReply)
- if item is None:
- return
- if item.status != TreeItem.StatusError:
- item.status = item.StatusLoading
- if networkReplyData.bytesTotal < 1:
- progress = '0%'
- else:
- progress = str(int((float(networkReplyData.bytesReceived) / networkReplyData.bytesTotal * 100))) + '%'
-
- item.setData(
- self.IndexProgress,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(progress),
- )
- item.setData(
- self.IndexStatus,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(self.statusNames[item.status]),
- )
-
- def onBrowserNetworkReplyError(self, indexReply, networkReplyData):
- tree = self.controlById(self.IdTree)
- item = tree.invisibleRootItem().child(indexReply)
- if item is None:
- return
- item.setForeground(self.IndexStatus, self.fcSettings.value('ColorFgItemError'))
- item.setBackground(self.IndexStatus, self.fcSettings.value('ColorBgItemError'))
- item.status = item.StatusError
- item.setData(
- self.IndexStatus,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(self.statusNames[item.status]),
- )
-
- def onBrowserNetworkReplyFinished(self, indexReply, networkReplyData):
- tree = self.controlById(self.IdTree)
- item = tree.invisibleRootItem().child(indexReply)
- if item is None:
- return
- if item.status != TreeItem.StatusError:
- item.status = item.StatusComplete
- item.setData(
- self.IndexStatus,
- QtCore.Qt.DisplayRole,
- QtCore.QVariant(self.statusNames[item.status]),
- )
- item.setForeground(self.IndexStatus, self.fcSettings.value('ColorFgItemComplete'))
- item.setBackground(self.IndexStatus, self.fcSettings.value('ColorBgItemComplete'))
-
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|