remove group iter from roster when empty
This commit is contained in:
parent
a833e9685f
commit
e8b6c78f5e
4 changed files with 28 additions and 29 deletions
|
@ -62,7 +62,7 @@ An example of usage for a simple client would be ( only psuedo code !)
|
|||
|
||||
"""
|
||||
|
||||
# $Id: jabber.py,v 1.56 2004/01/08 15:48:59 snakeru Exp $
|
||||
# $Id: jabber.py,v 1.4 2004/01/14 01:06:27 asterix86 Exp $
|
||||
|
||||
import xmlstream
|
||||
import sha, time
|
||||
|
@ -373,18 +373,13 @@ class Connection(xmlstream.Client):
|
|||
self.DEBUG("waiting for %s" % ustr(ID),DBG_NODE_IQ)
|
||||
|
||||
while (not self._expected[ID]) and not has_timed_out:
|
||||
print "tjs pas"
|
||||
if not self.process(0.2): return None
|
||||
if timeout and (time.time() > abort_time):
|
||||
print "Timeout"
|
||||
has_timed_out = True
|
||||
if has_timed_out:
|
||||
print "\n timeOut "
|
||||
self.lastErr = "Timeout"
|
||||
return None
|
||||
print "On a eut la rep"
|
||||
response = self._expected[ID]
|
||||
print response
|
||||
del self._expected[ID]
|
||||
if response.getErrorCode():
|
||||
self.lastErr = response.getError()
|
||||
|
|
|
@ -112,7 +112,8 @@ class GajimCore:
|
|||
password = self.cfgParser.__getattr__("%s" % account+"_password")
|
||||
ressource = self.cfgParser.__getattr__("%s" % account+"_ressource")
|
||||
self.con = common.jabber.Client(host = \
|
||||
hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr)
|
||||
hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP, port=5222)
|
||||
# hostname, debug = [common.jabber.DBG_ALWAYS], log = sys.stderr, connection=common.xmlstream.TCP_SSL, port=5223)
|
||||
try:
|
||||
self.con.connect()
|
||||
except IOError, e:
|
||||
|
|
|
@ -517,7 +517,7 @@
|
|||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0.95</property>
|
||||
<property name="yalign">0.5</property>
|
||||
|
@ -3231,7 +3231,7 @@ when NOT onlie</property>
|
|||
|
||||
<widget class="GtkDialog" id="Away_msg">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">dialog1</property>
|
||||
<property name="title" translatable="yes">Message</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
|
@ -3952,18 +3952,4 @@ when NOT onlie</property>
|
|||
</child>
|
||||
</widget>
|
||||
|
||||
<widget class="GtkWindow" id="window1">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">window1</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
</glade-interface>
|
||||
|
|
|
@ -770,13 +770,19 @@ class roster:
|
|||
if u.show != 'offline' or self.showOffline or 'Agents' in u.groups:
|
||||
for g in u.groups:
|
||||
if not self.l_group.has_key(g):
|
||||
self.l_group[g] = {'iter':None, 'hide':False}
|
||||
if not self.l_group[g]['iter']:
|
||||
iterG = self.treestore.append(None, (self.pixbufs['closed'], g, 'group', FALSE, self.grpbgcolor, TRUE))
|
||||
self.l_group[g] = iterG
|
||||
self.l_group[g] = {'iter':iterG, 'hide':False}
|
||||
newgrp = 1
|
||||
if g == 'Agents':
|
||||
iterU = self.treestore.append(self.l_group[g], (self.pixbufs[u.show], u.name, 'agent', FALSE, self.userbgcolor, TRUE))
|
||||
iterU = self.treestore.append(self.l_group[g]['iter'], \
|
||||
(self.pixbufs[u.show], u.name, 'agent', FALSE, \
|
||||
self.userbgcolor, TRUE))
|
||||
else:
|
||||
iterU = self.treestore.append(self.l_group[g], (self.pixbufs[u.show], u.name, u.jid, TRUE, self.userbgcolor, TRUE))
|
||||
iterU = self.treestore.append(self.l_group[g]['iter'], \
|
||||
(self.pixbufs[u.show], u.name, u.jid, TRUE, \
|
||||
self.userbgcolor, TRUE))
|
||||
self.l_contact[u.jid]['iter'].append(iterU)
|
||||
if newgrp == 1:
|
||||
#expand new groups
|
||||
|
@ -785,7 +791,8 @@ class roster:
|
|||
def redraw_roster(self):
|
||||
for j in self.l_contact.keys():
|
||||
self.l_contact[j]['iter'] = []
|
||||
self.l_group = {}
|
||||
for g in self.l_group.keys():
|
||||
self.l_group[g]['iter'] = None
|
||||
self.draw_roster()
|
||||
|
||||
def draw_roster(self):
|
||||
|
@ -808,6 +815,9 @@ class roster:
|
|||
show = 'offline'
|
||||
user1 = user(ji, name, tab[jid]['groups'], show, tab[jid]['status'], tab[jid]['sub'], '')
|
||||
self.l_contact[ji] = {'user':user1, 'iter':[]}
|
||||
for i in tab[jid]['groups'] :
|
||||
if not i in self.l_group.keys():
|
||||
self.l_group[i] = {'iter':None, 'hide':False}
|
||||
|
||||
def update_iter(self, widget, path, iter, data):
|
||||
jid = self.treestore.get_value(iter, 2)
|
||||
|
@ -829,7 +839,14 @@ class roster:
|
|||
else:
|
||||
if show == 'offline' and not self.showOffline:
|
||||
for i in self.l_contact[jid]['iter']:
|
||||
self.treestore.remove(i)
|
||||
parent_i = self.treestore.iter_parent(i)
|
||||
if self.treestore.iter_n_children(parent_i) == 1:
|
||||
self.treestore.remove(i)
|
||||
grp = self.treestore.get_value(parent_i, 1)
|
||||
self.treestore.remove(parent_i)
|
||||
self.l_group[grp]['iter'] = None
|
||||
else:
|
||||
self.treestore.remove(i)
|
||||
self.l_contact[jid]['iter'] = []
|
||||
else:
|
||||
for i in self.l_contact[jid]['iter']:
|
||||
|
@ -913,7 +930,7 @@ class roster:
|
|||
self.treestore.clear()
|
||||
#l_contact = {jid:{'user':_, 'iter':[iter1, ...]]
|
||||
self.l_contact = {}
|
||||
#l_group = {name:iter}
|
||||
#l_group = {name:{'iter':_, 'hide':Bool}
|
||||
self.l_group = {}
|
||||
|
||||
def on_treeview_event(self, widget, event):
|
||||
|
|
Loading…
Add table
Reference in a new issue