[virt-tools-list] [PATCH] x2 [virt-manager] trivial GUI improvements
Jon Nordby
jononor at gmail.com
Wed Nov 11 00:48:12 UTC 2009
I'm hoping to do a bit more significant work tomorrow: improving on
fullscreen behaviour.
I'm envisioning a mini menubar that minimizes to a small line, like the one
Virtualbox has. Thoughts concerning behaviour and/or implementation
welcomed.
Also, on browsing the bugtracker I saw that:
https://bugzilla.redhat.com/show_bug.cgi?id=498641 has a sensible patch
seemingly ignored
https://bugzilla.redhat.com/show_bug.cgi?id=459074 can probably be marked
invalid/resolved now
Patches following inline.
# HG changeset patch
# User Jon Nordby <jononor at gmail.com>
# Date 1257885231 -3600
# Node ID 3f28e5933acde147d357923907d28754e8817444
# Parent f8fbdfc7439c5e5b7ae0d2c1c5cb68853692e260
host: Show hostname in window title
Activating a connected host entry in manager opens host window.
diff -r f8fbdfc7439c -r 3f28e5933acd src/virtManager/host.py
--- a/src/virtManager/host.py Tue Nov 10 12:04:38 2009 -0500
+++ b/src/virtManager/host.py Tue Nov 10 21:33:51 2009 +0100
@@ -49,6 +49,9 @@
topwin = self.window.get_widget("vmm-host")
topwin.hide()
+ self.title = conn.get_short_hostname() + " " + topwin.get_title()
+ topwin.set_title(self.title)
+
self.err = vmmErrorDialog(topwin,
0, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE,
_("Unexpected Error"),
diff -r f8fbdfc7439c -r 3f28e5933acd src/virtManager/manager.py
--- a/src/virtManager/manager.py Tue Nov 10 12:04:38 2009 -0500
+++ b/src/virtManager/manager.py Tue Nov 10 21:33:51 2009 +0100
@@ -680,12 +680,14 @@
conn = self.current_connection()
if conn.get_state() == vmmConnection.STATE_DISCONNECTED:
conn.open()
+ return True
def open_vm_console(self,ignore,ignore2=None,ignore3=None):
if self.current_vmuuid():
self.emit("action-show-console", self.current_connection_uri(),
self.current_vmuuid())
elif self.current_connection():
- self.open_connection()
+ if not self.open_connection():
+ self.emit("action-show-host",
self.current_connection_uri())
def open_clone_window(self, ignore1=None, ignore2=None, ignore3=None):
if self.current_vmuuid():
# HG changeset patch
# User Jon Nordby <jononor at gmail.com>
# Date 1257896253 -3600
# Node ID 9c7e912548261b01cb31d91b3c447a7e866423d7
# Parent 3f28e5933acde147d357923907d28754e8817444
manager: enable menu key to open context menu
diff -r 3f28e5933acd -r 9c7e91254826 src/virtManager/manager.py
--- a/src/virtManager/manager.py Tue Nov 10 21:33:51 2009 +0100
+++ b/src/virtManager/manager.py Wed Nov 11 00:37:33 2009 +0100
@@ -350,7 +350,8 @@
"on_vm_list_row_activated": self.open_vm_console,
"on_vm_list_row_expanded": self.row_expanded,
"on_vm_list_row_collapsed": self.row_collapsed,
- "on_vm_list_button_press_event": self.popup_vm_menu,
+ "on_vm_list_button_press_event": self.popup_vm_menu_button,
+ "on_vm_list_key_press_event": self.popup_vm_menu_key,
"on_menu_edit_preferences_activate": self.show_preferences,
"on_menu_help_about_activate": self.show_about,
@@ -724,66 +725,78 @@
self.window.get_widget("menu_file_restore_saved").set_sensitive(restore)
- def popup_vm_menu(self, widget, event):
+ def popup_vm_menu_key(self, widget, event):
+ if gtk.gdk.keyval_name(event.keyval) != "Menu":
+ return False
+ vmlist = self.window.get_widget("vm-list")
+ treeselection = vmlist.get_selection()
+ model, _iter = treeselection.get_selected()
+ self.popup_vm_menu(model, _iter, event)
+ return True
+
+ def popup_vm_menu_button(self, widget, event):
+ if event.button != 3:
+ return False
tup = widget.get_path_at_pos(int(event.x), int(event.y))
if tup == None:
return False
path = tup[0]
model = widget.get_model()
_iter = model.get_iter(path)
+ self.popup_vm_menu(model, _iter, event)
+ return True
+
+ def popup_vm_menu(self, model, _iter, event):
if model.iter_parent(_iter) != None:
# a vm is selected, retrieve it from the first column of the
model
vm = model.get_value(_iter, ROW_HANDLE)
- if event.button == 3:
- # Update popup menu based upon vm status
- if vm.is_read_only() == True:
- self.vmmenu_items["run"].set_sensitive(False)
+ # Update popup menu based upon vm status
+ if vm.is_read_only() == True:
+ self.vmmenu_items["run"].set_sensitive(False)
+ self.vmmenu_items["pause"].set_sensitive(False)
+ self.vmmenu_items["pause"].show()
+ self.vmmenu_items["resume"].hide()
+ self.vmmenu_items["resume"].set_sensitive(False)
+ self.vmmenu_items["shutdown"].set_sensitive(False)
+ self.vmmenu_items["migrate"].set_sensitive(False)
+ else:
+ if vm.status() == libvirt.VIR_DOMAIN_SHUTOFF:
+ self.vmmenu_items["run"].set_sensitive(True)
self.vmmenu_items["pause"].set_sensitive(False)
self.vmmenu_items["pause"].show()
self.vmmenu_items["resume"].hide()
self.vmmenu_items["resume"].set_sensitive(False)
self.vmmenu_items["shutdown"].set_sensitive(False)
- self.vmmenu_items["migrate"].set_sensitive(False)
- else:
- if vm.status() == libvirt.VIR_DOMAIN_SHUTOFF:
- self.vmmenu_items["run"].set_sensitive(True)
- self.vmmenu_items["pause"].set_sensitive(False)
- self.vmmenu_items["pause"].show()
- self.vmmenu_items["resume"].hide()
- self.vmmenu_items["resume"].set_sensitive(False)
- self.vmmenu_items["shutdown"].set_sensitive(False)
- self.vmmenu_items["migrate"].set_sensitive(True)
- elif vm.status() == libvirt.VIR_DOMAIN_RUNNING:
- self.vmmenu_items["run"].set_sensitive(False)
- self.vmmenu_items["pause"].set_sensitive(True)
- self.vmmenu_items["pause"].show()
- self.vmmenu_items["resume"].hide()
- self.vmmenu_items["resume"].set_sensitive(False)
- self.vmmenu_items["shutdown"].set_sensitive(True)
- self.vmmenu_items["migrate"].set_sensitive(True)
- elif vm.status() == libvirt.VIR_DOMAIN_PAUSED:
- self.vmmenu_items["run"].set_sensitive(False)
- self.vmmenu_items["pause"].hide()
- self.vmmenu_items["pause"].set_sensitive(False)
- self.vmmenu_items["resume"].show()
- self.vmmenu_items["resume"].set_sensitive(True)
- self.vmmenu_items["shutdown"].set_sensitive(True)
- self.vmmenu_items["migrate"].set_sensitive(True)
- self.vmmenu.popup(None, None, None, 0, event.time)
- return False
+ self.vmmenu_items["migrate"].set_sensitive(True)
+ elif vm.status() == libvirt.VIR_DOMAIN_RUNNING:
+ self.vmmenu_items["run"].set_sensitive(False)
+ self.vmmenu_items["pause"].set_sensitive(True)
+ self.vmmenu_items["pause"].show()
+ self.vmmenu_items["resume"].hide()
+ self.vmmenu_items["resume"].set_sensitive(False)
+ self.vmmenu_items["shutdown"].set_sensitive(True)
+ self.vmmenu_items["migrate"].set_sensitive(True)
+ elif vm.status() == libvirt.VIR_DOMAIN_PAUSED:
+ self.vmmenu_items["run"].set_sensitive(False)
+ self.vmmenu_items["pause"].hide()
+ self.vmmenu_items["pause"].set_sensitive(False)
+ self.vmmenu_items["resume"].show()
+ self.vmmenu_items["resume"].set_sensitive(True)
+ self.vmmenu_items["shutdown"].set_sensitive(True)
+ self.vmmenu_items["migrate"].set_sensitive(True)
+ self.vmmenu.popup(None, None, None, 0, event.time)
else:
+ # a host is selected
conn = model.get_value(_iter, ROW_HANDLE)
- if event.button == 3:
- if conn.get_state() != vmmConnection.STATE_DISCONNECTED:
- self.connmenu_items["create"].set_sensitive(True)
- self.connmenu_items["disconnect"].set_sensitive(True)
- self.connmenu_items["connect"].set_sensitive(False)
- else:
- self.connmenu_items["create"].set_sensitive(False)
- self.connmenu_items["disconnect"].set_sensitive(False)
- self.connmenu_items["connect"].set_sensitive(True)
- self.connmenu.popup(None, None, None, 0, event.time)
- return False
+ if conn.get_state() != vmmConnection.STATE_DISCONNECTED:
+ self.connmenu_items["create"].set_sensitive(True)
+ self.connmenu_items["disconnect"].set_sensitive(True)
+ self.connmenu_items["connect"].set_sensitive(False)
+ else:
+ self.connmenu_items["create"].set_sensitive(False)
+ self.connmenu_items["disconnect"].set_sensitive(False)
+ self.connmenu_items["connect"].set_sensitive(True)
+ self.connmenu.popup(None, None, None, 0, event.time)
def new_vm(self, ignore=None):
self.emit("action-show-create", self.current_connection_uri())
diff -r 3f28e5933acd -r 9c7e91254826 src/vmm-manager.glade
--- a/src/vmm-manager.glade Tue Nov 10 21:33:51 2009 +0100
+++ b/src/vmm-manager.glade Wed Nov 11 00:37:33 2009 +0100
@@ -352,6 +352,7 @@
<property name="can_focus">True</property>
<signal name="button_press_event"
handler="on_vm_list_button_press_event"/>
<signal name="row_expanded"
handler="on_vm_list_row_expanded"/>
+ <signal name="key_press_event"
handler="on_vm_list_key_press_event"/>
<signal name="row_collapsed"
handler="on_vm_list_row_collapsed"/>
<signal name="row_activated"
handler="on_vm_list_row_activated"/>
</widget>
--
Regards Jon Nordby - www.jonnor.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20091111/64f8fbc1/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hostname_titlebar.patch
Type: application/octet-stream
Size: 1744 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20091111/64f8fbc1/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: menu_key_context.patch
Type: application/octet-stream
Size: 8523 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20091111/64f8fbc1/attachment-0001.obj>
More information about the virt-tools-list
mailing list