diff --git a/src/virt-manager.schemas.in b/src/virt-manager.schemas.in index f7b8ffdb9..6e1a722fb 100644 --- a/src/virt-manager.schemas.in +++ b/src/virt-manager.schemas.in @@ -324,5 +324,32 @@ Whether we require confirmation to remove a virtual device + + + /schemas/apps/::PACKAGE::/manager_window_height + /apps/::PACKAGE::/manager_window_height + ::PACKAGE:: + int + 0 + + + Default manager window height + Default manager window height + + + + + /schemas/apps/::PACKAGE::/manager_window_width + /apps/::PACKAGE::/manager_window_width + ::PACKAGE:: + int + 0 + + + Default manager window width + Default manager window width + + + diff --git a/src/virtManager/config.py b/src/virtManager/config.py index aadbf5c82..57dbc7402 100644 --- a/src/virtManager/config.py +++ b/src/virtManager/config.py @@ -515,6 +515,14 @@ class vmmConfig: return self.conf.get_list(self.conf_dir + "/connections/uris", gconf.VALUE_STRING) + # Manager default window size + def get_manager_window_size(self): + w = self.conf.get_int(self.conf_dir + "/manager_window_width") + h = self.conf.get_int(self.conf_dir + "/manager_window_height") + return (w, h) + def set_manager_window_size(self, w, h): + self.conf.set_int(self.conf_dir + "/manager_window_width", w) + self.conf.set_int(self.conf_dir + "/manager_window_height", h) # URI autoconnect def get_conn_autoconnect(self, uri): diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py index e743a2321..0d2873add 100644 --- a/src/virtManager/manager.py +++ b/src/virtManager/manager.py @@ -117,7 +117,9 @@ class vmmManager(gobject.GObject): def __init__(self, config, engine): self.__gobject_init__() - self.window = gtk.glade.XML(config.get_glade_dir() + "/vmm-manager.glade", "vmm-manager", domain="virt-manager") + self.window = gtk.glade.XML((config.get_glade_dir() + + "/vmm-manager.glade"), + "vmm-manager", domain="virt-manager") self.err = vmmErrorDialog(self.window.get_widget("vmm-manager"), 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, _("Unexpected Error"), @@ -133,6 +135,10 @@ class vmmManager(gobject.GObject): # allow O(1) access instead of O(n) self.rows = {} + w, h = self.config.get_manager_window_size() + self.window.get_widget("vmm-manager").set_default_size(w or 550, + h or 550) + self.init_vmlist() self.init_stats() self.init_toolbar() @@ -154,6 +160,7 @@ class vmmManager(gobject.GObject): cfg.STATS_NETWORK), "on_vm_manager_delete_event": self.close, + "on_vmm_manager_configure_event": self.window_resized, "on_menu_file_add_connection_activate": self.new_connection, "on_menu_file_quit_activate": self.exit_app, "on_menu_file_close_activate": self.close, @@ -562,6 +569,13 @@ class vmmManager(gobject.GObject): # Action listeners # #################### + def window_resized(self, ignore, event): + # Sometimes dimensions change when window isn't visible + if not self.is_visible(): + return + + self.config.set_manager_window_size(event.width, event.height) + def exit_app(self, src=None, src2=None): self.emit("action-exit-app") diff --git a/src/vmm-manager.glade b/src/vmm-manager.glade index eaf2b1f1b..562847f3e 100644 --- a/src/vmm-manager.glade +++ b/src/vmm-manager.glade @@ -7,6 +7,7 @@ 550 550 center +