mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-04 17:47:19 +03:00
Add new popup menu for connection line. Remove 'create' button from bottom row since it is now in the connection line. Hook up the 'disconnect' action from the popup menu as well.
This commit is contained in:
parent
82bc8086de
commit
eae65ea694
@ -196,8 +196,8 @@ class vmmEngine:
|
||||
self.show_connect()
|
||||
def _do_show_details(self, src, uri, uuid):
|
||||
self.show_details(uri, uuid)
|
||||
def _do_show_create(self, src):
|
||||
self.show_create()
|
||||
def _do_show_create(self, src, uri):
|
||||
self.show_create(uri)
|
||||
def _do_show_help(self, src, index):
|
||||
self.show_help(index)
|
||||
def _do_show_console(self, src, uri, uuid):
|
||||
@ -305,12 +305,15 @@ class vmmEngine:
|
||||
def show_manager(self):
|
||||
self.get_manager().show()
|
||||
|
||||
def show_create(self):
|
||||
def show_create(self, uri):
|
||||
if self.windowCreate == None:
|
||||
self.windowCreate = vmmCreate(self.get_config(), self.connections)
|
||||
self.windowCreate.connect("action-show-console", self._do_show_console)
|
||||
self.windowCreate.connect("action-show-terminal", self._do_show_terminal)
|
||||
self.windowCreate.connect("action-show-help", self._do_show_help)
|
||||
self.windowCreate = vmmCreate(self.get_config(), self.get_connection(uri, False))
|
||||
self.windowCreate.connect("action-show-console", self._do_show_console)
|
||||
self.windowCreate.connect("action-show-terminal", self._do_show_terminal)
|
||||
self.windowCreate.connect("action-show-help", self._do_show_help)
|
||||
self.windowCreate.reset_state()
|
||||
else:
|
||||
self.windowCreate.connection = self.get_connection(uri, False)
|
||||
self.windowCreate.reset_state()
|
||||
self.windowCreate.show()
|
||||
|
||||
|
@ -143,6 +143,20 @@ class vmmManager(gobject.GObject):
|
||||
# allow O(1) access instead of O(n)
|
||||
self.rows = {}
|
||||
|
||||
self.connmenu = gtk.Menu()
|
||||
self.connmenu_items = {}
|
||||
|
||||
self.connmenu_items["create"] = gtk.ImageMenuItem(gtk.STOCK_NEW)
|
||||
self.connmenu_items["create"].show()
|
||||
self.connmenu_items["create"].connect("activate", self.show_vm_create)
|
||||
self.connmenu.add(self.connmenu_items["create"])
|
||||
|
||||
self.connmenu_items["disconnect"] = gtk.ImageMenuItem(gtk.STOCK_DISCONNECT)
|
||||
self.connmenu_items["disconnect"].show()
|
||||
self.connmenu_items["disconnect"].connect("activate", self.destroy_connection)
|
||||
self.connmenu.add(self.connmenu_items["disconnect"])
|
||||
self.connmenu.show()
|
||||
|
||||
self.window.signal_autoconnect({
|
||||
"on_menu_view_domain_id_activate" : self.toggle_domain_id_visible_conf,
|
||||
"on_menu_view_status_activate" : self.toggle_status_visible_conf,
|
||||
@ -154,14 +168,12 @@ class vmmManager(gobject.GObject):
|
||||
|
||||
"on_vm_manager_delete_event": self.close,
|
||||
"on_menu_file_open_connection_activate": self.open_connection,
|
||||
"on_menu_file_new_activate": self.show_vm_create,
|
||||
"on_menu_file_quit_activate": self.exit_app,
|
||||
"on_menu_file_close_activate": self.close,
|
||||
"on_menu_restore_saved_activate": self.restore_saved,
|
||||
"on_vmm_close_clicked": self.close,
|
||||
"on_vm_details_clicked": self.show_vm_details,
|
||||
"on_vm_open_clicked": self.open_vm_console,
|
||||
"on_vm_new_clicked": self.show_vm_create,
|
||||
"on_vm_delete_clicked": self.delete_vm,
|
||||
"on_menu_edit_delete_activate" : self.delete_vm,
|
||||
"on_menu_edit_details_activate": self.show_vm_details,
|
||||
@ -425,7 +437,7 @@ class vmmManager(gobject.GObject):
|
||||
return active[0].get_value(active[1], 0)
|
||||
return None
|
||||
|
||||
def current_connection(self):
|
||||
def get_current_connection(self):
|
||||
vmlist = self.window.get_widget("vm-list")
|
||||
selection = vmlist.get_selection()
|
||||
active = selection.get_selected()
|
||||
@ -461,7 +473,10 @@ class vmmManager(gobject.GObject):
|
||||
self.emit("action-show-details", conn.get_uri(), self.current_vmuuid())
|
||||
|
||||
def show_vm_create(self,ignore):
|
||||
self.emit("action-show-create", self.connections)
|
||||
self.emit("action-show-create", self.get_current_connection().get_uri())
|
||||
|
||||
def destroy_connection(self, ignore):
|
||||
self.get_current_connection().close()
|
||||
|
||||
def open_vm_console(self,ignore,ignore2=None,ignore3=None):
|
||||
self.emit("action-show-console", self.connection.get_uri(), self.current_vmuuid())
|
||||
@ -486,7 +501,7 @@ class vmmManager(gobject.GObject):
|
||||
self.window.get_widget("vm-open").set_sensitive(True)
|
||||
self.window.get_widget("menu_edit_details").set_sensitive(True)
|
||||
else:
|
||||
connection = self.current_connection()
|
||||
connection = self.get_current_connection()
|
||||
self.set_menu_visibility(connection)
|
||||
self.window.get_widget("vm-delete").set_sensitive(False)
|
||||
self.window.get_widget("vm-details").set_sensitive(False)
|
||||
@ -495,9 +510,10 @@ class vmmManager(gobject.GObject):
|
||||
self.window.get_widget("menu_edit_details").set_sensitive(False)
|
||||
self.window.get_widget("vm-delete").set_sensitive(False)
|
||||
self.window.get_widget("menu_edit_delete").set_sensitive(False)
|
||||
|
||||
def popup_vm_menu(self, widget, event):
|
||||
vm = self.current_vm()
|
||||
connection = self.current_connection()
|
||||
connection = self.get_current_connection()
|
||||
if vm != None:
|
||||
|
||||
# Update popup menu based upon vm status
|
||||
@ -533,9 +549,8 @@ class vmmManager(gobject.GObject):
|
||||
if event.button == 3:
|
||||
self.vmmenu.popup(None, None, None, 0, event.time)
|
||||
elif connection is not None:
|
||||
# later, add "disconnect" item
|
||||
if event.button == 3:
|
||||
self.vmmenu.popup(None, None, None, 0, event.time)
|
||||
self.connmenu.popup(None, None, None, 0, event.time)
|
||||
|
||||
|
||||
def show_about(self, src):
|
||||
@ -782,12 +797,10 @@ class vmmManager(gobject.GObject):
|
||||
|
||||
def set_menu_visibility(self, connection):
|
||||
if connection is None or connection.is_read_only():
|
||||
self.window.get_widget("menu_file_new").set_sensitive(False)
|
||||
self.window.get_widget("menu_file_restore_saved").set_sensitive(False)
|
||||
self.window.get_widget("vm-new").set_sensitive(False)
|
||||
else:
|
||||
self.window.get_widget("menu_file_new").set_sensitive(True)
|
||||
self.window.get_widget("vm-new").set_sensitive(True)
|
||||
self.window.get_widget("menu_file_restore_saved").set_sensitive(True)
|
||||
# XXX setting this false because save/restore is broken until
|
||||
# XXX we deal with multiple connections properly
|
||||
self.window.get_widget("menu_file_restore_saved").set_sensitive(False)
|
||||
|
||||
gobject.type_register(vmmManager)
|
||||
|
@ -43,28 +43,6 @@
|
||||
<child>
|
||||
<widget class="GtkMenu" id="menuitem4_menu">
|
||||
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_file_new">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">New machine...</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="on_menu_file_new_activate" last_modification_time="Tue, 28 Mar 2006 17:06:34 GMT"/>
|
||||
<accelerator key="n" modifiers="GDK_MOD1_MASK" signal="activate"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image118">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-new</property>
|
||||
<property name="icon_size">1</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="menu_file_restore_saved">
|
||||
<property name="visible">True</property>
|
||||
@ -75,7 +53,7 @@
|
||||
<accelerator key="r" modifiers="GDK_MOD1_MASK" signal="activate"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image119">
|
||||
<widget class="GtkImage" id="image123">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-open</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -102,7 +80,7 @@
|
||||
<signal name="activate" handler="on_menu_file_open_connection_activate" last_modification_time="Mon, 12 Jun 2006 20:34:47 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image120">
|
||||
<widget class="GtkImage" id="image124">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-connect</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -169,7 +147,7 @@
|
||||
<signal name="activate" handler="on_menu_edit_details_activate" last_modification_time="Tue, 28 Mar 2006 17:06:34 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image121">
|
||||
<widget class="GtkImage" id="image125">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-properties</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -190,7 +168,7 @@
|
||||
<signal name="activate" handler="on_menu_edit_delete_activate" last_modification_time="Tue, 28 Mar 2006 17:06:34 GMT"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image122">
|
||||
<widget class="GtkImage" id="image126">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-delete</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -323,7 +301,7 @@
|
||||
<accelerator key="F1" modifiers="0" signal="activate"/>
|
||||
|
||||
<child internal-child="image">
|
||||
<widget class="GtkImage" id="image123">
|
||||
<widget class="GtkImage" id="image127">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-help</property>
|
||||
<property name="icon_size">1</property>
|
||||
@ -467,19 +445,6 @@ Inactive virtual machines</property>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="vm-new">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-new</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_vm_new_clicked" last_modification_time="Tue, 28 Mar 2006 17:03:39 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="vm-details">
|
||||
<property name="visible">True</property>
|
||||
|
Loading…
x
Reference in New Issue
Block a user