# HG changeset patch # User "Cole Robinson " # Date 1228749085 18000 # Node ID c7cd0d65d7a67da18e6b7b44e5bbee98710569ce # Parent f4b79629808d40de713ad8096de7897564d22dfa Revamp preferences dialog. More extensible design, hopefully will facilitate adding more options. Add options to disable stats reporting by type (cpu, mem, disk, net), but don't hook them up yet. diff -r f4b79629808d -r c7cd0d65d7a6 src/virt-manager.schemas.in --- a/src/virt-manager.schemas.in Sun Dec 07 16:32:56 2008 -0500 +++ b/src/virt-manager.schemas.in Mon Dec 08 10:11:25 2008 -0500 @@ -118,6 +118,58 @@ + /schemas/apps/::PACKAGE::/stats/enable-disk-poll + /apps/::PACKAGE::/stats/enable-disk-poll + ::PACKAGE:: + bool + 0 + + + Poll disk i/o stats + Whether or not the app will poll VM disk i/o statistics + + + + + /schemas/apps/::PACKAGE::/stats/enable-net-poll + /apps/::PACKAGE::/stats/enable-net-poll + ::PACKAGE:: + bool + 0 + + + Poll net i/o stats + Whether or not the app will poll VM network i/o statistics + + + + + /schemas/apps/::PACKAGE::/stats/enable-mem-poll + /apps/::PACKAGE::/stats/enable-mem-poll + ::PACKAGE:: + bool + 1 + + + Poll memory usage stats + Whether or not the app will poll connection and VM memory usage statistics + + + + + /schemas/apps/::PACKAGE::/stats/enable-cpu-poll + /apps/::PACKAGE::/stats/enable-cpu-poll + ::PACKAGE:: + bool + 1 + + + Poll cpu stats + Whether or not the app will poll connection and VM cpu usage statistics + + + + /schemas/apps/::PACKAGE::/urls/url-list-length /apps/::PACKAGE::/urls/url-list-length ::PACKAGE:: diff -r f4b79629808d -r c7cd0d65d7a6 src/virtManager/config.py --- a/src/virtManager/config.py Sun Dec 07 16:32:56 2008 -0500 +++ b/src/virtManager/config.py Mon Dec 08 10:11:25 2008 -0500 @@ -190,6 +190,40 @@ def on_stats_history_length_changed(self, callback): self.conf.notify_add(self.conf_dir + "/stats/history-length", callback) + + # Disable/Enable different stats polling + def get_stats_enable_disk_poll(self): + return self.conf.get_bool(self.conf_dir + "/stats/enable-disk-poll") + def get_stats_enable_net_poll(self): + return self.conf.get_bool(self.conf_dir + "/stats/enable-net-poll") + def get_stats_enable_mem_poll(self): + return self.conf.get_bool(self.conf_dir + "/stats/enable-mem-poll") + def get_stats_enable_cpu_poll(self): + return self.conf.get_bool(self.conf_dir + "/stats/enable-cpu-poll") + + def set_stats_enable_disk_poll(self, val): + self.conf.set_bool(self.conf_dir + "/stats/enable-disk-poll", val) + def set_stats_enable_net_poll(self, val): + self.conf.set_bool(self.conf_dir + "/stats/enable-net-poll", val) + def set_stats_enable_mem_poll(self, val): + self.conf.set_bool(self.conf_dir + "/stats/enable-mem-poll", val) + def set_stats_enable_cpu_poll(self, val): + self.conf.set_bool(self.conf_dir + "/stats/enable-cpu-poll", val) + + def on_stats_enable_disk_poll_changed(self, cb, userdata=None): + self.conf.notify_add(self.conf_dir + "/stats/enable-disk-poll", cb, + userdata) + def on_stats_enable_net_poll_changed(self, cb, userdata=None): + self.conf.notify_add(self.conf_dir + "/stats/enable-net-poll", cb, + userdata) + def on_stats_enable_mem_poll_changed(self, cb, userdata=None): + self.conf.notify_add(self.conf_dir + "/stats/enable-mem-poll", cb, + userdata) + def on_stats_enable_cpu_poll_changed(self, cb, userdata=None): + self.conf.notify_add(self.conf_dir + "/stats/enable-cpu-poll", cb, + userdata) + + # VM Console preferences def on_console_popup_changed(self, callback): self.conf.notify_add(self.conf_dir + "/console/popup", callback) diff -r f4b79629808d -r c7cd0d65d7a6 src/virtManager/preferences.py --- a/src/virtManager/preferences.py Sun Dec 07 16:32:56 2008 -0500 +++ b/src/virtManager/preferences.py Mon Dec 08 10:11:25 2008 -0500 @@ -21,6 +21,9 @@ import gtk.glade import gobject +PREFS_PAGE_STATS = 0 +PREFS_PAGE_VM_PREFS = 1 + class vmmPreferences(gobject.GObject): __gsignals__ = { "action-show-help": (gobject.SIGNAL_RUN_FIRST, @@ -30,56 +33,87 @@ self.__gobject_init__() self.window = gtk.glade.XML(config.get_glade_dir() + "/vmm-preferences.glade", "vmm-preferences", domain="virt-manager") self.config = config - self.window.get_widget("vmm-preferences").hide() + + self.topwin = self.window.get_widget("vmm-preferences") + self.topwin.hide() self.config.on_console_popup_changed(self.refresh_console_popup) self.config.on_console_keygrab_changed(self.refresh_console_keygrab) self.config.on_stats_update_interval_changed(self.refresh_update_interval) self.config.on_stats_history_length_changed(self.refresh_history_length) + self.config.on_stats_enable_disk_poll_changed(self.refresh_disk_poll) + self.config.on_stats_enable_net_poll_changed(self.refresh_net_poll) + self.config.on_stats_enable_mem_poll_changed(self.refresh_mem_poll) + self.config.on_stats_enable_cpu_poll_changed(self.refresh_cpu_poll) + self.refresh_update_interval() self.refresh_history_length() self.refresh_console_popup() self.refresh_console_keygrab() self.refresh_sound_options() + self.refresh_disk_poll() + self.refresh_net_poll() + self.refresh_mem_poll() + self.refresh_cpu_poll() self.window.signal_autoconnect({ - "on_stats_update_interval_changed": self.change_update_interval, - "on_stats_history_length_changed": self.change_history_length, - "on_console_popup_changed": self.change_console_popup, - "on_console_keygrab_changed": self.change_console_keygrab, - "on_close_clicked": self.close, + "on_prefs_stats_update_interval_changed": self.change_update_interval, + "on_prefs_stats_history_length_changed": self.change_history_length, + "on_prefs_console_popup_changed": self.change_console_popup, + "on_prefs_console_keygrab_changed": self.change_console_keygrab, + "on_prefs_close_clicked": self.close, "on_vmm_preferences_delete_event": self.close, - "on_preferences_help_clicked": self.show_help, - "on_local_sound_toggled": self.change_local_sound, - "on_remote_sound_toggled": self.change_remote_sound, + "on_prefs_help_clicked": self.show_help, + "on_prefs_sound_local_toggled": self.change_local_sound, + "on_prefs_sound_remote_toggled": self.change_remote_sound, + "on_prefs_stats_enable_disk_toggled": self.change_disk_poll, + "on_prefs_stats_enable_net_toggled": self.change_net_poll, + "on_prefs_stats_enable_mem_toggled": self.change_mem_poll, + "on_prefs_stats_enable_cpu_toggled": self.change_cpu_poll, }) - def close(self,ignore1=None,ignore2=None): - self.window.get_widget("vmm-preferences").hide() + def close(self, ignore1=None, ignore2=None): + self.topwin.hide() return 1 def show(self): - win = self.window.get_widget("vmm-preferences") - win.show() - # win.present() + self.topwin.show() + self.topwin.present() + + ######################### + # Config Change Options # + ######################### def refresh_update_interval(self, ignore1=None,ignore2=None,ignore3=None,ignore4=None): - self.window.get_widget("stats-update-interval").set_value(self.config.get_stats_update_interval()) + self.window.get_widget("prefs-stats-update-interval").set_value(self.config.get_stats_update_interval()) def refresh_history_length(self, ignore1=None,ignore2=None,ignore3=None,ignore4=None): - self.window.get_widget("stats-history-length").set_value(self.config.get_stats_history_length()) + self.window.get_widget("prefs-stats-history-len").set_value(self.config.get_stats_history_length()) def refresh_console_popup(self,ignore1=None,ignore2=None,ignore3=None,ignore4=None): - self.window.get_widget("console-popup").set_active(self.config.get_console_popup()) + self.window.get_widget("prefs-console-popup").set_active(self.config.get_console_popup()) def refresh_console_keygrab(self,ignore1=None,ignore2=None,ignore3=None,ignore4=None): - self.window.get_widget("console-keygrab").set_active(self.config.get_console_keygrab()) + self.window.get_widget("prefs-console-keygrab").set_active(self.config.get_console_keygrab()) def refresh_sound_options(self, ignore1=None, ignore2=None, ignore=None, ignore4=None): - self.window.get_widget("local-sound").set_active(self.config.get_local_sound()) - self.window.get_widget("remote-sound").set_active(self.config.get_remote_sound()) + self.window.get_widget("prefs-sound-local").set_active(self.config.get_local_sound()) + self.window.get_widget("prefs-sound-remote").set_active(self.config.get_remote_sound()) + + def refresh_disk_poll(self, ignore1=None, ignore2=None, ignore3=None, + ignore4=None): + self.window.get_widget("prefs-stats-enable-disk").set_active(self.config.get_stats_enable_disk_poll()) + def refresh_net_poll(self, ignore1=None, ignore2=None, ignore3=None, + ignore4=None): + self.window.get_widget("prefs-stats-enable-net").set_active(self.config.get_stats_enable_net_poll()) + def refresh_mem_poll(self, ignore1=None, ignore2=None, ignore3=None, + ignore4=None): + self.window.get_widget("prefs-stats-enable-mem").set_active(self.config.get_stats_enable_mem_poll()) + def refresh_cpu_poll(self, ignore1=None, ignore2=None, ignore3=None, + ignore4=None): + self.window.get_widget("prefs-stats-enable-cpu").set_active(self.config.get_stats_enable_cpu_poll()) def change_update_interval(self, src): self.config.set_stats_update_interval(src.get_value_as_int()) @@ -99,6 +133,16 @@ def change_remote_sound(self, src): self.config.set_remote_sound(not self.config.get_remote_sound()) + def change_disk_poll(self, src): + self.config.set_stats_enable_disk_poll(src.get_active()) + def change_net_poll(self, src): + self.config.set_stats_enable_net_poll(src.get_active()) + def change_mem_poll(self, src): + self.config.set_stats_enable_mem_poll(src.get_active()) + def change_cpu_poll(self, src): + self.config.set_stats_enable_cpu_poll(src.get_active()) + def show_help(self, src): - # From the Preferences window, show the help document from the Preferences page - self.emit("action-show-help", "virt-manager-preferences-window") + # From the Preferences window, show the help document from + # the Preferences page + self.emit("action-show-help", "virt-manager-preferences-window") diff -r f4b79629808d -r c7cd0d65d7a6 src/vmm-preferences.glade --- a/src/vmm-preferences.glade Sun Dec 07 16:32:56 2008 -0500 +++ b/src/vmm-preferences.glade Mon Dec 08 10:11:25 2008 -0500 @@ -1,362 +1,512 @@ - + - - True - True - True + Preferences - GTK_WIN_POS_CENTER_ON_PARENT - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_CENTER - False - - + + True + 3 + 3 - + True + True + 3 - + True - 3 - 0 + 6 + 8 - + True - 12 + 0 + GTK_SHADOW_NONE - + True - 3 - 2 - 3 - 3 - 3 + 12 - + True - True - 10 10 300 1 5 5 - 1 - True - GTK_UPDATE_IF_VALID - - History Samples - - + 2 + 3 + 3 + 3 + + + True + 0 + Update status every + + + + + True + 0 + Maintain history of + + + 1 + 2 + + + + + True + True + 0 0 60 1 5 5 + + + 1 + 2 + GTK_FILL + + + + + True + True + 0 0 300 5 5 5 + 0.01 + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + True + 0 + seconds + + + 2 + 3 + + + + + True + 0 + samples + + + 2 + 3 + 1 + 2 + + - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - - True - 0 - seconds - - - 2 - 3 - - - - - - True - 0 - samples - - - 2 - 3 - 1 - 2 - - - - - - True - 0 - Maintain history of - - - 1 - 2 - - - - - - True - True - 0 - Update status every - True - True - stats-update-interval - - - - - - - - True - True - 5 1 60 1 5 5 - 1 - True - GTK_UPDATE_IF_VALID - - Status Interval - - - - - 1 - 2 - GTK_FILL - - + + + True + <b>Stats Options</b> + True + + + label_item + + + + False + - + True - <b>Status monitoring</b> - True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 4 + 2 + 3 + 3 + + + True + 0 + CPU Usage + PANGO_ELLIPSIZE_END + + + GTK_FILL + + + + + True + 0 + Memory Usage + + + 1 + 2 + GTK_FILL + + + + + True + 0 + Disk I/O + + + 2 + 3 + GTK_FILL + + + + + True + 0 + Network I/O + + + 3 + 4 + GTK_FILL + + + + + True + True + 0 + True + + + + 1 + 2 + GTK_EXPAND + + + + + True + True + 0 + True + + + + 1 + 2 + 1 + 2 + GTK_EXPAND + + + + + True + True + 0 + True + + + + 1 + 2 + 2 + 3 + GTK_EXPAND + + + + + True + True + 0 + True + + + + 1 + 2 + 3 + 4 + GTK_EXPAND + + + + + + + + + True + <b>Enable Stats Polling</b> + True + + + label_item + + - label_item + False + 1 - + True - 3 - 0 + Stats + + + tab + False + + + + + True + 6 + 8 - + True - 6 - 12 + 0 + GTK_SHADOW_NONE - + True - 4 - 1 + 12 - + True - Never -For new domains + 4 + 1 + 2 + + + True + Never +For all new domains For all domains - - Auto Console - - - - - 1 - 2 - 5 - - - - - True - Never + + + 1 + 2 + 5 + + + + + True + 0 + Automatically open consoles: + + + + + True + 0 + Grab keyboard input: + + + 2 + 3 + + + + + True + Never When fullscreen On mouse over - - Grab Keyboard - - + + + 3 + 4 + 5 + + - - 3 - 4 - GTK_FILL - 5 - - - - - True - True - 0 - Grab keyboard input: - True - True - - - 2 - 3 - GTK_FILL - - - - - - True - True - 0 - Automatically open consoles: - True - True - - - GTK_FILL - - + + + True + <b>Consoles</b> + True + + + label_item + + + + False + - + True - <b>Consoles</b> - True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 1 + 3 + 8 + + + True + 0 + Install Audio Device: + + + + + True + True + Remote VM + 0 + True + + + + 2 + 3 + + + + + True + True + Local VM + 0 + True + + + + 1 + 2 + + + + + + + + + True + <b>New VM</b> + True + + + label_item + + - label_item + False + 1 - 3 1 - + True - 3 - 0 + VM Details + + + tab + 1 + False + + + + + + + True + + + True + True + True + gtk-help + True + 0 + + + + False + + + + + True - - True - 12 - - - True - 3 - 3 - - - True - Install Audio Device: - - - False - False - - - - - True - True - Local VM - True - 0 - True - - - - False - 1 - - - - - True - True - Remote VM - True - 0 - True - - - - False - False - 2 - - - - - - - - - True - <b>New VM Preferences</b> - True - - - label_item - + + 1 + + + + + True + 6 + True + + + True + True + True + gtk-close + True + 0 + + + + + + False 2 + False + False 1 - - - - - True - GTK_BUTTONBOX_END - - - True - True - True - gtk-help - True - -11 - - - - - - True - True - True - gtk-close - True - -7 - - - - 1 - - - - - False - GTK_PACK_END