Add menu options to 'view manager' and 'quit' from the details window.

This commit is contained in:
Cole Robinson 2008-06-13 14:40:26 -04:00
parent 0f75898fc3
commit b0eeecd738
4 changed files with 88 additions and 28 deletions

View File

@ -89,6 +89,10 @@ class vmmDetails(gobject.GObject):
gobject.TYPE_NONE, (str, str)),
"action-show-help": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, [str]),
"action-exit-app": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, []),
"action-view-manager": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, []),
}
@ -213,6 +217,7 @@ class vmmDetails(gobject.GObject):
"on_close_details_clicked": self.close,
"on_details_menu_close_activate": self.close,
"on_vmm_details_delete_event": self.close,
"on_details_menu_quit_activate": self.exit_app,
"on_control_run_clicked": self.control_vm_run,
"on_control_shutdown_clicked": self.control_vm_shutdown,
@ -228,6 +233,7 @@ class vmmDetails(gobject.GObject):
"on_details_menu_screenshot_activate": self.control_vm_screenshot,
"on_details_menu_graphics_activate": self.control_vm_console,
"on_details_menu_view_toolbar_activate": self.toggle_toolbar,
"on_details_menu_view_manager_activate": self.view_manager,
"on_details_pages_switch_page": self.switch_page,
@ -417,9 +423,10 @@ class vmmDetails(gobject.GObject):
self.window.get_widget("details-toolbar").hide()
def show(self):
if self.is_visible():
return
dialog = self.window.get_widget("vmm-details")
if self.is_visible():
dialog.present()
return
dialog.show_all()
self.window.get_widget("overview-network-traffic-text").hide()
self.window.get_widget("overview-network-traffic-label").hide()
@ -458,11 +465,17 @@ class vmmDetails(gobject.GObject):
self.engine.decrement_window_counter()
return 1
def exit_app(self, src):
self.emit("action-exit-app")
def is_visible(self):
if self.window.get_widget("vmm-details").flags() & gtk.VISIBLE:
return 1
return 0
def view_manager(self, src):
self.emit("action-view-manager")
def send_key(self, src):
keys = None
if src.get_name() == "details-menu-send-cad":

View File

@ -104,7 +104,7 @@ class vmmEngine(gobject.GObject):
def _connect_cancelled(self, connect):
self.windowConnect = None
if len(self.connections.keys()) == 0:
gtk.main_quit()
self.exit_app()
def _do_vm_removed(self, connection, hvuri, vmuuid):
@ -185,6 +185,8 @@ class vmmEngine(gobject.GObject):
self.show_console(uri, uuid)
def _do_show_terminal(self, src, uri, uuid):
self.show_serial_console(uri, uuid)
def _do_show_manager(self, src):
self.show_manager()
def _do_refresh_console(self, src, uri, uuid):
self.refresh_console(uri, uuid)
def _do_refresh_terminal(self, src, uri, uuid):
@ -203,6 +205,8 @@ class vmmEngine(gobject.GObject):
self.shutdown_domain(src, uri, uuid)
def _do_reboot_domain(self, src, uri, uuid):
self.reboot_domain(src, uri, uuid)
def _do_exit_app(self, src):
self.exit_app()
def show_about(self):
if self.windowAbout == None:
@ -238,6 +242,9 @@ class vmmEngine(gobject.GObject):
self.windowConnect.connect("cancelled", self._connect_cancelled)
self.windowConnect.show()
def show_manager(self):
self.windowManager.show()
def show_console(self, uri, uuid):
win = self.show_details(uri, uuid)
win.activate_console_page()
@ -288,6 +295,8 @@ class vmmEngine(gobject.GObject):
details.connect("action-run-domain", self._do_run_domain)
details.connect("action-shutdown-domain", self._do_shutdown_domain)
details.connect("action-reboot-domain", self._do_reboot_domain)
details.connect("action-exit-app", self._do_exit_app)
details.connect("action-view-manager", self._do_show_manager)
except Exception, e:
self.err.show_err(_("Error bringing up domain details: %s") % str(e),
"".join(traceback.format_exc()))
@ -315,6 +324,7 @@ class vmmEngine(gobject.GObject):
self.windowManager.connect("action-connect", self._do_connect)
self.windowManager.connect("action-refresh-console", self._do_refresh_console)
self.windowManager.connect("action-refresh-terminal", self._do_refresh_terminal)
self.windowManager.connect("action-exit-app", self._do_exit_app)
return self.windowManager
def show_manager(self):
@ -328,11 +338,13 @@ class vmmEngine(gobject.GObject):
self.windows -= 1
logging.debug("window counter decremented to %s" % self.windows)
if self.windows <= 0:
conns = self.connections.values()
for conn in conns:
conn["connection"].close()
gtk.main_quit()
self.exit_app()
def exit_app(self):
conns = self.connections.values()
for conn in conns:
conn["connection"].close()
gtk.main_quit()
def wait_for_open(self, uri):
# Used to ensure connection fully starts before running

View File

@ -100,7 +100,9 @@ class vmmManager(gobject.GObject):
"action-connect": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, [str]),
"action-show-help": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, [str]),}
gobject.TYPE_NONE, [str]),
"action-exit-app": (gobject.SIGNAL_RUN_FIRST,
gobject.TYPE_NONE, []),}
def __init__(self, config, engine):
self.__gobject_init__()
@ -285,11 +287,12 @@ class vmmManager(gobject.GObject):
self.engine.connect("connection-removed", self._remove_connection)
def show(self):
if not self.is_visible():
win = self.window.get_widget("vmm-manager")
win.show_all()
win = self.window.get_widget("vmm-manager")
if self.is_visible():
win.present()
self.engine.increment_window_counter()
return
win.show_all()
self.engine.increment_window_counter()
def close(self, src=None, src2=None):
if self.is_visible():
@ -304,7 +307,7 @@ class vmmManager(gobject.GObject):
return 0
def exit_app(self, src=None, src2=None):
gtk.main_quit()
self.emit("action-exit-app")
def new_connection(self, src=None):
self.emit("action-show-connect")

View File

@ -34,6 +34,53 @@
<property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
<property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
<child>
<widget class="GtkMenuItem" id="file1">
<property name="visible">True</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_file1_activate" last_modification_time="Fri, 13 Jun 2008 17:58:16 GMT"/>
<child>
<widget class="GtkMenu" id="file1_menu">
<child>
<widget class="GtkMenuItem" id="view_manager">
<property name="visible">True</property>
<property name="label" translatable="yes">View Manager</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_details_menu_view_manager_activate" last_modification_time="Fri, 13 Jun 2008 18:02:21 GMT"/>
</widget>
</child>
<child>
<widget class="GtkSeparatorMenuItem" id="separator15">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="close4">
<property name="visible">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_details_menu_close_activate" last_modification_time="Fri, 13 Jun 2008 18:02:21 GMT"/>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="quit3">
<property name="visible">True</property>
<property name="label">gtk-quit</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_details_menu_quit_activate" last_modification_time="Fri, 13 Jun 2008 18:02:31 GMT"/>
</widget>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="virtual_machine1">
<property name="visible">True</property>
@ -127,21 +174,6 @@
<signal name="activate" handler="on_details_menu_screenshot_activate" last_modification_time="Wed, 07 May 2008 15:38:34 GMT"/>
</widget>
</child>
<child>
<widget class="GtkSeparatorMenuItem" id="separator8">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="details-menu-close">
<property name="visible">True</property>
<property name="label">gtk-close</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_details_menu_close_activate"/>
</widget>
</child>
</widget>
</child>
</widget>