Refactor StatusIcon

- Move to gtk folder
- Rename some handlers
- Use get_builder
This commit is contained in:
Philipp Hörist 2018-10-25 00:12:28 +02:00
parent c1cc8c5714
commit d7ea69f36c
2 changed files with 24 additions and 34 deletions

View File

@ -22,7 +22,6 @@
import os
from gi.repository import Gtk
from gi.repository import Gdk
from gajim import dialogs
from gajim import tooltips
@ -30,6 +29,7 @@ from gajim import gtkgui_helpers
from gajim.common import app
from gajim.common import helpers
from gajim.common.i18n import _
from gajim.gtk.util import get_builder
from gajim.gtk.single_message import SingleMessageWindow
@ -45,9 +45,9 @@ class StatusIcon:
# click somewhere else does not popdown menu. workaround this.
self.added_hide_menuitem = False
self.status = 'offline'
self.xml = gtkgui_helpers.get_gtk_builder('systray_context_menu.ui')
self.systray_context_menu = self.xml.get_object('systray_context_menu')
self.xml.connect_signals(self)
self._ui = get_builder('systray_context_menu.ui')
self.systray_context_menu = self._ui.systray_context_menu
self._ui.connect_signals(self)
self.popup_menus = []
self.status_icon = None
self.tooltip = tooltips.NotificationAreaTooltip()
@ -83,21 +83,15 @@ class StatusIcon:
if not self.status_icon:
self.status_icon = Gtk.StatusIcon()
self.status_icon.set_property('has-tooltip', True)
self.status_icon.connect('activate',
self.on_status_icon_left_clicked)
self.status_icon.connect('popup-menu',
self.on_status_icon_right_clicked)
self.status_icon.connect('query-tooltip',
self.on_status_icon_query_tooltip)
self.status_icon.connect('activate', self._on_activate)
self.status_icon.connect('popup-menu', self._on_popup_menu)
self.status_icon.connect('query-tooltip', self._on_query_tooltip)
self.status_icon.connect('size-changed', self.set_img)
self.set_img()
self.subscribe_events()
def on_status_icon_right_clicked(self, widget, event_button, event_time):
self.make_menu(event_button, event_time)
def on_status_icon_query_tooltip(self, widget, x, y, keyboard_mode, tooltip):
def _on_query_tooltip(self, _status_icon, _x, _y, _keyboard_mode, tooltip):
tooltip.set_custom(self.tooltip.get_tooltip())
return True
@ -105,7 +99,15 @@ class StatusIcon:
self.status_icon.set_visible(False)
self.unsubscribe_events()
def on_status_icon_left_clicked(self, widget):
def _on_popup_menu(self, _status_icon, button, activate_time):
if button == 1: # Left click
self.on_left_click()
elif button == 2: # middle click
self.on_middle_click()
elif button == 3: # right click
self.make_menu(button, activate_time)
def _on_activate(self, _status_icon):
self.on_left_click()
def on_status_icon_size_changed(self, statusicon, size):
@ -173,13 +175,12 @@ class StatusIcon:
for m in self.popup_menus:
m.destroy()
chat_with_menuitem = self.xml.get_object('chat_with_menuitem')
single_message_menuitem = self.xml.get_object(
'single_message_menuitem')
status_menuitem = self.xml.get_object('status_menu')
join_gc_menuitem = self.xml.get_object('join_gc_menuitem')
sounds_mute_menuitem = self.xml.get_object('sounds_mute_menuitem')
show_roster_menuitem = self.xml.get_object('show_roster_menuitem')
chat_with_menuitem = self._ui.chat_with_menuitem
single_message_menuitem = self._ui.single_message_menuitem
status_menuitem = self._ui.status_menu
join_gc_menuitem = self._ui.join_gc_menuitem
sounds_mute_menuitem = self._ui.sounds_mute_menuitem
show_roster_menuitem = self._ui.show_roster_menuitem
if self.single_message_handler_id:
single_message_menuitem.handler_disconnect(
@ -412,17 +413,6 @@ class StatusIcon:
else:
win.present()
def on_clicked(self, widget, event):
self.on_tray_leave_notify_event(widget, None)
if event.type_ != Gdk.EventType.BUTTON_PRESS:
return
if event.button == 1: # Left click
self.on_left_click()
elif event.button == 2: # middle click
self.on_middle_click()
elif event.button == 3: # right click
self.make_menu(event.button, event.time)
def on_show_menuitem_activate(self, widget, show):
# we all add some fake (we cannot select those nor have them as show)
# but this helps to align with roster's status_combobox index positions

View File

@ -2737,7 +2737,7 @@ class Interface:
self.systray_enabled = False
from gajim import statusicon
from gajim.gtk import statusicon
self.systray = statusicon.StatusIcon()
pixs = []