mirror of
https://github.com/virt-manager/virt-manager.git
synced 2024-10-27 10:25:25 +03:00
Keep app running on close if systray enabled.
This commit is contained in:
parent
a7e76ef57a
commit
13f2a7bc15
1
AUTHORS
1
AUTHORS
@ -61,6 +61,7 @@ Further patches have been submitted by:
|
|||||||
Michal Novotny <minovotn-at-redhat-dot-com>
|
Michal Novotny <minovotn-at-redhat-dot-com>
|
||||||
Paul W. Frields <stickster-at-gmail-dot-com>
|
Paul W. Frields <stickster-at-gmail-dot-com>
|
||||||
Fred Leeflang <fredl-at-dutchie-dot-org>
|
Fred Leeflang <fredl-at-dutchie-dot-org>
|
||||||
|
Jon Nordby <jononor-at-gmail-dot-com>
|
||||||
|
|
||||||
<...send a patch & get your name here...>
|
<...send a patch & get your name here...>
|
||||||
|
|
||||||
|
@ -78,13 +78,15 @@ class vmmEngine(gobject.GObject):
|
|||||||
logging.debug("Libvirt doesn't support threading, skipping.")
|
logging.debug("Libvirt doesn't support threading, skipping.")
|
||||||
|
|
||||||
# Counter keeping track of how many manager and details windows
|
# Counter keeping track of how many manager and details windows
|
||||||
# are open. When it is decremented to 0, close the app
|
# are open. When it is decremented to 0, close the app or
|
||||||
|
# keep running in system tray if enabled
|
||||||
self.windows = 0
|
self.windows = 0
|
||||||
|
|
||||||
self.netdevHelper = vmmNetDevHelper(self.config)
|
self.netdevHelper = vmmNetDevHelper(self.config)
|
||||||
self.init_systray()
|
self.init_systray()
|
||||||
|
|
||||||
self.config.on_stats_update_interval_changed(self.reschedule_timer)
|
self.config.on_stats_update_interval_changed(self.reschedule_timer)
|
||||||
|
self.config.on_view_system_tray_changed(self.system_tray_changed)
|
||||||
|
|
||||||
self.schedule_timer()
|
self.schedule_timer()
|
||||||
self.load_stored_uris()
|
self.load_stored_uris()
|
||||||
@ -95,7 +97,7 @@ class vmmEngine(gobject.GObject):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.systray = vmmSystray(self.config, self)
|
self.systray = vmmSystray(self.config, self)
|
||||||
self.systray.connect("action-view-manager", self._do_show_manager)
|
self.systray.connect("action-toggle-manager", self._do_toggle_manager)
|
||||||
self.systray.connect("action-suspend-domain", self._do_suspend_domain)
|
self.systray.connect("action-suspend-domain", self._do_suspend_domain)
|
||||||
self.systray.connect("action-resume-domain", self._do_resume_domain)
|
self.systray.connect("action-resume-domain", self._do_resume_domain)
|
||||||
self.systray.connect("action-run-domain", self._do_run_domain)
|
self.systray.connect("action-run-domain", self._do_run_domain)
|
||||||
@ -106,6 +108,12 @@ class vmmEngine(gobject.GObject):
|
|||||||
self.systray.connect("action-show-details", self._do_show_details)
|
self.systray.connect("action-show-details", self._do_show_details)
|
||||||
self.systray.connect("action-exit-app", self._do_exit_app)
|
self.systray.connect("action-exit-app", self._do_exit_app)
|
||||||
|
|
||||||
|
def system_tray_changed(self, *ignore):
|
||||||
|
systray_enabled = self.config.get_view_system_tray()
|
||||||
|
if self.windows == 0 and not systray_enabled:
|
||||||
|
# Show the manager so that the user can control the application
|
||||||
|
self.show_manager()
|
||||||
|
|
||||||
def load_stored_uris(self):
|
def load_stored_uris(self):
|
||||||
uris = self.config.get_connections()
|
uris = self.config.get_connections()
|
||||||
if uris != None:
|
if uris != None:
|
||||||
@ -233,6 +241,8 @@ class vmmEngine(gobject.GObject):
|
|||||||
self.show_help(index)
|
self.show_help(index)
|
||||||
def _do_show_console(self, src, uri, uuid):
|
def _do_show_console(self, src, uri, uuid):
|
||||||
self.show_console(uri, uuid)
|
self.show_console(uri, uuid)
|
||||||
|
def _do_toggle_manager(self, src):
|
||||||
|
self.toggle_manager()
|
||||||
def _do_show_manager(self, src):
|
def _do_show_manager(self, src):
|
||||||
self.show_manager()
|
self.show_manager()
|
||||||
def _do_refresh_console(self, src, uri, uuid):
|
def _do_refresh_console(self, src, uri, uuid):
|
||||||
@ -364,6 +374,11 @@ class vmmEngine(gobject.GObject):
|
|||||||
self.windowManager.connect("action-exit-app", self._do_exit_app)
|
self.windowManager.connect("action-exit-app", self._do_exit_app)
|
||||||
return self.windowManager
|
return self.windowManager
|
||||||
|
|
||||||
|
def toggle_manager(self):
|
||||||
|
manager = self.get_manager()
|
||||||
|
if not manager.close():
|
||||||
|
manager.show()
|
||||||
|
|
||||||
def show_manager(self):
|
def show_manager(self):
|
||||||
self.get_manager().show()
|
self.get_manager().show()
|
||||||
|
|
||||||
@ -374,7 +389,8 @@ class vmmEngine(gobject.GObject):
|
|||||||
def decrement_window_counter(self):
|
def decrement_window_counter(self):
|
||||||
self.windows -= 1
|
self.windows -= 1
|
||||||
logging.debug("window counter decremented to %s" % self.windows)
|
logging.debug("window counter decremented to %s" % self.windows)
|
||||||
if self.windows <= 0:
|
# Don't exit if system tray is enabled
|
||||||
|
if self.windows <= 0 and not self.config.get_view_system_tray() :
|
||||||
self.exit_app()
|
self.exit_app()
|
||||||
|
|
||||||
def exit_app(self):
|
def exit_app(self):
|
||||||
|
@ -24,6 +24,8 @@ import gtk.glade
|
|||||||
|
|
||||||
class vmmSystray(gobject.GObject):
|
class vmmSystray(gobject.GObject):
|
||||||
__gsignals__ = {
|
__gsignals__ = {
|
||||||
|
"action-toggle-manager": (gobject.SIGNAL_RUN_FIRST,
|
||||||
|
gobject.TYPE_NONE, []),
|
||||||
"action-view-manager": (gobject.SIGNAL_RUN_FIRST,
|
"action-view-manager": (gobject.SIGNAL_RUN_FIRST,
|
||||||
gobject.TYPE_NONE, []),
|
gobject.TYPE_NONE, []),
|
||||||
"action-suspend-domain": (gobject.SIGNAL_RUN_FIRST,
|
"action-suspend-domain": (gobject.SIGNAL_RUN_FIRST,
|
||||||
@ -208,7 +210,7 @@ class vmmSystray(gobject.GObject):
|
|||||||
# Listeners
|
# Listeners
|
||||||
|
|
||||||
def systray_activate(self, widget):
|
def systray_activate(self, widget):
|
||||||
self.emit("action-view-manager")
|
self.emit("action-toggle-manager")
|
||||||
|
|
||||||
def systray_popup(self, widget, button, event_time):
|
def systray_popup(self, widget, button, event_time):
|
||||||
if button != 3:
|
if button != 3:
|
||||||
|
Loading…
Reference in New Issue
Block a user