SF.net SVN: fclient: [38] trunk/fclient/fclient_widgets/peer_widget.py
Status: Pre-Alpha
Brought to you by:
jurner
From: <jU...@us...> - 2007-11-02 16:02:27
|
Revision: 38 http://fclient.svn.sourceforge.net/fclient/?rev=38&view=rev Author: jUrner Date: 2007-11-02 09:02:28 -0700 (Fri, 02 Nov 2007) Log Message: ----------- added peer notes handling Modified Paths: -------------- trunk/fclient/fclient_widgets/peer_widget.py Modified: trunk/fclient/fclient_widgets/peer_widget.py =================================================================== --- trunk/fclient/fclient_widgets/peer_widget.py 2007-11-02 16:01:29 UTC (rev 37) +++ trunk/fclient/fclient_widgets/peer_widget.py 2007-11-02 16:02:28 UTC (rev 38) @@ -1,5 +1,8 @@ """Sketch for a widget handling peer nodes +Note: super slow currently. Have to experiment with multiple clients +to enable playing around with poll timeouts for individual clients + """ import os, sys @@ -14,7 +17,6 @@ import config -from fclient_lib import fcp from fclient_lib.pyex import numbers @@ -28,6 +30,30 @@ #*************************************************************************************************** # #*************************************************************************************************** +class PeerItem(QtGui.QTreeWidgetItem): + """ + """ + + def __init__(self, *args): + """ + """ + QtGui.QTreeWidgetItem.__init__(self, *args) + + self._peerData = None + + def peerData(self): + """ + """ + return self._peerData + + def setPeerData(self, peerData): + """ + """ + self._peerData = peerData + +#*************************************************************************************************** +# +#*************************************************************************************************** class PeerWidget(QtGui.QTreeWidget): """ """ @@ -117,6 +143,10 @@ (self._cfg.fcpClient.events.EndListPeers, self.handleEndListPeers), (self._cfg.fcpClient.events.PeerRemoved, self.handlePeerRemoved), (self._cfg.fcpClient.events.UnknownNodeIdentifier, self.handleUnknownNodeIdentifier), + + (self._cfg.fcpClient.events.PeerNote, self.handlePeerNote), + (self._cfg.fcpClient.events.EndListPeerNotes, self.handleEndListPeerNotes), + ) # take care to not connect twice @@ -150,20 +180,24 @@ timeLastConnected, '' ] - item = QtGui.QTreeWidgetItem(self, itemStrings) - item.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(identity)) - self._peers[identity] = (item, params) + item = PeerItem(self, itemStrings) + self._peers[identity] = item # update item else: item.settext(self.HeaderIndexLastConnected, timeLastConnected) - self._peers[identity] = (item, params) + item.setPeerData(params) + + # get peer notes if possible + if params['opennet'] == self._cfg.fcpClient.FcpFalse: + self._cfg.fcpClient.listPeerNotes(identity) + def handleEndListPeers(self, event, params): """ """ - + def handlePeerRemoved(self, peer): """ @@ -174,6 +208,25 @@ """ """ + + def handlePeerNote(self, event, params): + """ + """ + identity = params['NodeIdentifier'] + item = self._peers.get(identity, None) + if item is None: + #TODO: shouldn' t happen + return + + if params['PeerNoteType'] == self._cfg.fcpClient.PeerNoteType.Private: + item.setText(self.HeaderIndexNotes, params['NoteText']) + + + def handleEndListPeerNotes(self, event, params): + """ + """ + + ####################################################### ## ## methods @@ -204,18 +257,9 @@ return result - def identityFromItem(self, item): - """Returns the peer identity an item is associated to - @param item: treeItem - @return: (str) peer identity - """ - v = item.data(0, QtCore.Qt.UserRole) - return str(v.toString()) - - def peers(self): """Returns all currently known peers - @return: (dict) identity --> (treeItem, peer) + @return: (dict) identity --> treeItem """ return self._peers @@ -245,8 +289,8 @@ """ self.setUpdatesEnabled(False) - for item, peer in self.peers().values(): - if peer['opennet'] == self._cfg.fcpClient.FcpTrue: + for item in self.peers().values(): + if item.peerData()['opennet'] == self._cfg.fcpClient.FcpTrue: item.setHidden(not flags & self.ShowPeersOpennet) else: item.setHidden(not flags & self.ShowPeersDarknet) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |