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