Skip to content
Snippets Groups Projects
Commit 20ac1575 authored by nkour's avatar nkour
Browse files

more OO for systraywin32

parent b4ae3153
No related branches found
No related tags found
No related merge requests found
......@@ -182,7 +182,7 @@ class Systray:
account_menu_for_new_message.append(item)
elif len(gajim.connections) == 1: # one account
# one account, no need to show 'as jid
# one account, no need to show 'as jid'
# for chat_with
account = gajim.connections.keys()[0]
......@@ -193,7 +193,7 @@ class Systray:
self.new_message_handler_id = new_message_menuitem.connect(
'activate', self.on_new_message_menuitem_activate, account)
if event is not None:
if event is not None: # None means windows (we explicitly popup in systraywin32.py)
self.systray_context_menu.popup(None, None, None, event.button, event.time)
self.systray_context_menu.show_all()
......@@ -238,39 +238,46 @@ class Systray:
return groups_menu
def on_clicked(self, widget, event):
self.on_tray_leave_notify_event(widget, None)
def on_left_click(self):
win = self.plugin.roster.window
if event.button == 1: # Left click
if len(self.jids) == 0:
if win.get_property('visible'):
win.hide()
else:
win.present()
else:
account = self.jids[0][0]
jid = self.jids[0][1]
acc = self.plugin.windows[account]
w = None
if acc['gc'].has_key(jid):
w = acc['gc'][jid]
elif acc['chats'].has_key(jid):
w = acc['chats'][jid]
else:
self.plugin.roster.new_chat(
gajim.contacts[account][jid][0], account)
acc['chats'][jid].set_active_tab(jid)
acc['chats'][jid].window.present()
if w:
w.set_active_tab(jid)
w.window.present()
tv = w.xmls[jid].get_widget('conversation_textview')
w.scroll_to_end(tv)
if event.button == 2: # middle click
if win.is_active():
if len(self.jids) == 0:
if win.get_property('visible'):
win.hide()
else:
win.present()
else:
account = self.jids[0][0]
jid = self.jids[0][1]
acc = self.plugin.windows[account]
w = None
if acc['gc'].has_key(jid):
w = acc['gc'][jid]
elif acc['chats'].has_key(jid):
w = acc['chats'][jid]
else:
self.plugin.roster.new_chat(
gajim.contacts[account][jid][0], account)
acc['chats'][jid].set_active_tab(jid)
acc['chats'][jid].window.present()
if w:
w.set_active_tab(jid)
w.window.present()
tv = w.xmls[jid].get_widget('conversation_textview')
w.scroll_to_end(tv)
def on_middle_click(self):
win = self.plugin.roster.window
if win.is_active():
win.hide()
else:
win.present()
def on_clicked(self, widget, event):
self.on_tray_leave_notify_event(widget, None)
if event.button == 1: # Left click
self.on_left_click()
if event.button == 2: # middle click
self.on_middle_click()
if event.button == 3: # right click
self.make_menu(event)
......
......@@ -20,6 +20,7 @@ WS_EX_LAYERED = 0x80000
import gtk
WM_LBUTTONUP = 0x0202
WM_MBUTTONUP = 0x0208
WM_RBUTTONUP = 0x0205
from common import gajim
......@@ -200,6 +201,7 @@ class NotifyIcon:
class SystrayWin32(systray.Systray):
def __init__(self, plugin):
# Note: gtk window must be realized before installing extensions.
systray.Systray.__init__(self, plugin)
self.plugin = plugin
self.jids = []
self.status = 'offline'
......@@ -224,62 +226,14 @@ class SystrayWin32(systray.Systray):
def hide_icon(self):
self.win32ext.remove_notify_icon()
def make_menu(self):
"""create chat with and new message (sub) menus/menuitems"""
chat_with_menuitem = self.xml.get_widget('chat_with_menuitem')
new_message_menuitem = self.xml.get_widget('new_message_menuitem')
iskey = len(gajim.connections.keys()) > 0
chat_with_menuitem.set_sensitive(iskey)
new_message_menuitem.set_sensitive(iskey)
if len(gajim.connections.keys()) >= 2: # 2 or more accounts? make submenus
account_menu_for_chat_with = gtk.Menu()
chat_with_menuitem.set_submenu(account_menu_for_chat_with)
account_menu_for_new_message = gtk.Menu()
new_message_menuitem.set_submenu(account_menu_for_new_message)
for account in gajim.connections:
our_jid = gajim.config.get_per('accounts', account, 'name') + '@' +\
gajim.config.get_per('accounts', account, 'hostname')
#for chat_with
item = gtk.MenuItem(_('as ') + our_jid)
account_menu_for_chat_with.append(item)
group_menu = self.make_groups_submenus_for_chat_with(account)
item.set_submenu(group_menu)
#for new_message
item = gtk.MenuItem(_('as ') + our_jid)
item.connect('activate',\
self.on_new_message_menuitem_activate, account)
account_menu_for_new_message.append(item)
def on_clicked(self, hwnd, message, wparam, lparam):
if lparam == WM_RBUTTONUP: # Right click
self.make_menu()
self.win32ext.notify_icon.menu.popup(None, None, None, 0, 0)
elif lparam == WM_MBUTTONUP: # Middle click
self.on_middle_click()
elif lparam == WM_LBUTTONUP: # Left click
if len(self.jids) == 0:
win = self.plugin.roster.window
if win.is_active():
win.hide()
else:
win.present()
else:
account = self.jids[0][0]
jid = self.jids[0][1]
acc = self.plugin.windows[account]
if acc['gc'].has_key(jid):
acc['gc'][jid].set_active_tab(jid)
acc['gc'][jid].window.present()
elif acc['chats'].has_key(jid):
acc['chats'][jid].set_active_tab(jid)
acc['chats'][jid].window.present()
else:
self.plugin.roster.new_chat(
self.plugin.roster.contacts[account][jid][0], account)
acc['chats'][jid].set_active_tab(jid)
acc['chats'][jid].window.present()
self.on_left_click()
#self.win32ext.notify_icon.menu.popdown()
#self.win32ext.notify_icon.menu.popup(None, None, None, 0, 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment