double clicked on systray icon show/hide roster if there is no event, or show an event otherwise.
This commit is contained in:
parent
0fca234f0a
commit
3d1ee5bf08
1 changed files with 33 additions and 11 deletions
|
@ -100,7 +100,7 @@ class message_Window:
|
|||
self.print_conversation(evt[0], tim = evt[1])
|
||||
del self.plugin.queues[self.account][self.user.jid]
|
||||
self.plugin.roster.redraw_jid(self.user.jid, self.account)
|
||||
self.plugin.systray.remove_jid(self.user.jid)
|
||||
self.plugin.systray.remove_jid(self.user.jid, self.account)
|
||||
showOffline = self.plugin.config['showoffline']
|
||||
if (self.user.show == 'offline' or self.user.show == 'error') and \
|
||||
not showOffline:
|
||||
|
@ -140,7 +140,7 @@ class message_Window:
|
|||
|
||||
def on_focus(self, widget, event):
|
||||
"""When window get focus"""
|
||||
self.plugin.systray.remove_jid(self.user.jid)
|
||||
self.plugin.systray.remove_jid(self.user.jid, self.account)
|
||||
|
||||
def __init__(self, user, plugin, account):
|
||||
self.user = user
|
||||
|
@ -908,7 +908,7 @@ class roster_Window:
|
|||
model = self.tree.get_model()
|
||||
self.plugin.queues[account][jid] = Queue.Queue(50)
|
||||
self.redraw_jid(jid, account)
|
||||
self.plugin.systray.add_jid(jid)
|
||||
self.plugin.systray.add_jid(jid, account)
|
||||
tim = time.strftime("[%H:%M:%S]")
|
||||
self.plugin.queues[account][jid].put((msg, tim))
|
||||
if not path:
|
||||
|
@ -932,7 +932,7 @@ class roster_Window:
|
|||
self.plugin.windows[account]['chats'][jid].print_conversation(msg)
|
||||
if not self.plugin.windows[account]['chats'][jid].window.\
|
||||
get_property('is-active'):
|
||||
self.plugin.systray.add_jid(jid)
|
||||
self.plugin.systray.add_jid(jid, account)
|
||||
|
||||
def on_prefs(self, widget):
|
||||
"""When preferences is selected :
|
||||
|
@ -1214,14 +1214,16 @@ class systray:
|
|||
else:
|
||||
self.img_tray.set_from_pixbuf(pix)
|
||||
|
||||
def add_jid(self, jid):
|
||||
if not jid in self.jids:
|
||||
self.jids.append(jid)
|
||||
def add_jid(self, jid, account):
|
||||
list = [account, jid]
|
||||
if not list in self.jids:
|
||||
self.jids.append(list)
|
||||
self.set_img()
|
||||
|
||||
def remove_jid(self, jid):
|
||||
if jid in self.jids:
|
||||
self.jids.remove(jid)
|
||||
def remove_jid(self, jid, account):
|
||||
list = [account, jid]
|
||||
if list in self.jids:
|
||||
self.jids.remove(list)
|
||||
self.set_img()
|
||||
|
||||
def set_status(self, status):
|
||||
|
@ -1272,14 +1274,34 @@ class systray:
|
|||
menu.show_all()
|
||||
menu.reposition()
|
||||
|
||||
|
||||
def on_clicked(self, widget, event):
|
||||
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
|
||||
if len(self.jids) == 0:
|
||||
win = self.plugin.roster.xml.get_widget('Gajim')
|
||||
if self.iconified:
|
||||
win.deiconify()
|
||||
else:
|
||||
win.iconify()
|
||||
else:
|
||||
account = self.jids[0][0]
|
||||
jid = self.jids[0][1]
|
||||
if self.plugin.windows[account]['chats'].has_key(jid):
|
||||
self.plugin.windows[account]['chats'][jid].window.present()
|
||||
if event.button == 3:
|
||||
self.mk_menu(event)
|
||||
|
||||
def state_changed(self, widget, event):
|
||||
if event.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED:
|
||||
self.iconified = 1
|
||||
else:
|
||||
self.iconified = 0
|
||||
|
||||
def __init__(self, plugin):
|
||||
self.plugin = plugin
|
||||
self.jids = []
|
||||
self.iconified = 0
|
||||
win = self.plugin.roster.xml.get_widget('Gajim')
|
||||
win.connect("window-state-event", self.state_changed)
|
||||
t = trayicon.TrayIcon("Gajim")
|
||||
eb = gtk.EventBox()
|
||||
eb.connect("button-press-event", self.on_clicked)
|
||||
|
|
Loading…
Add table
Reference in a new issue