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