summaryrefslogtreecommitdiff
path: root/portato/gui/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'portato/gui/gtk')
-rw-r--r--portato/gui/gtk/windows.py45
1 files changed, 41 insertions, 4 deletions
diff --git a/portato/gui/gtk/windows.py b/portato/gui/gtk/windows.py
index 88d9a18..7c6f41b 100644
--- a/portato/gui/gtk/windows.py
+++ b/portato/gui/gtk/windows.py
@@ -186,9 +186,11 @@ class PreferenceWindow (AbstractDialog):
"deepCheck" : "deep_opt",
"newUseCheck" : "newuse_opt",
"maskPerVersionCheck" : "maskPerVersion_opt",
+ "minimizeCheck" : ("minimize_opt", "gui_sec"),
+ "systrayCheck" : ("systray_opt", "gui_sec"),
+ "testPerVersionCheck" : "testingPerVersion_opt",
"usePerVersionCheck" : "usePerVersion_opt",
- "useTipsCheck" : ("useTips_opt", "gtk_sec"),
- "testPerVersionCheck" : "testingPerVersion_opt"
+ "useTipsCheck" : ("useTips_opt", "gtk_sec")
}
# all edits in the window
@@ -800,6 +802,15 @@ class MainWindow (Window):
# popups
self.queuePopup = self.create_popup("queuePopup")
self.consolePopup = self.create_popup("consolePopup")
+ self.trayPopup = self.create_popup("systrayPopup")
+
+ # systray
+ if self.cfg.get_boolean("systray_opt", self.cfg.const["gui_sec"]):
+ self.tray = gtk.status_icon_new_from_file(APP_ICON)
+ self.tray.connect("activate", self.cb_systray_activated)
+ self.tray.connect("popup-menu", lambda icon, btn, time: self.trayPopup.popup(None, None, None, btn, time))
+ else:
+ self.tray = None
# set emerge queue
self.queueTree = GtkTree(self.queueList.get_model())
@@ -903,8 +914,13 @@ class MainWindow (Window):
def title_update (self, title):
- if title == None: title = "Console"
- else: title = ("Console (%s)" % title)
+ if self.tray:
+ self.tray.set_tooltip(title)
+
+ if title == None:
+ title = "Console"
+ else:
+ title = ("Console (%s)" % title)
gobject.idle_add(self.notebook.set_tab_label_text, self.termHB, title)
@@ -1127,6 +1143,27 @@ class MainWindow (Window):
return False
+ def cb_minimized (self, window, event):
+ if self.tray and self.cfg.get_boolean("minimize_opt", self.cfg.const["gui_sec"]):
+ if event.changed_mask & gtk.gdk.WINDOW_STATE_ICONIFIED:
+ if event.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED:
+ self.window.hide()
+ return True
+
+ return False
+
+ def cb_systray_activated (self, tray):
+ if self.window.iconify_initially:
+ self.window.deiconify()
+ self.window.show()
+ self.window.window.show()
+ else:
+ self.window.iconify()
+
+ def cb_close (self, *args):
+ if not self.cb_delete(): # do the checks
+ self.window.destroy()
+
def cb_destroy (self, widget):
"""Calls main_quit()."""
gtk.main_quit()