diff options
author | Cole Robinson <crobinso@redhat.com> | 2012-02-13 14:49:00 -0500 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2012-02-13 14:49:00 -0500 |
commit | 56265735b9dcc45b3798e87e6e3b60285119d8d5 (patch) | |
tree | 8317bb0ec642174299b5dcc8b74b3dea81cabd8c | |
parent | 0c507ac98b1dec90e68f00c87a6a1529a96f7fb7 (diff) | |
download | virt-manager-56265735b9dcc45b3798e87e6e3b60285119d8d5.tar.gz |
Add option to choose default disk image format
-rw-r--r-- | src/virt-manager.schemas.in | 13 | ||||
-rw-r--r-- | src/virtManager/config.py | 12 | ||||
-rw-r--r-- | src/virtManager/create.py | 7 | ||||
-rw-r--r-- | src/virtManager/preferences.py | 23 | ||||
-rw-r--r-- | src/vmm-preferences.ui | 52 |
5 files changed, 106 insertions, 1 deletions
diff --git a/src/virt-manager.schemas.in b/src/virt-manager.schemas.in index 5c646186..dfcd7baf 100644 --- a/src/virt-manager.schemas.in +++ b/src/virt-manager.schemas.in @@ -209,6 +209,19 @@ </schema> <schema> + <key>/schemas/apps/::PACKAGE::/new-vm/storage-format</key> + <applyto>/apps/::PACKAGE::/new-vm/storage-format</applyto> + <owner>::PACKAGE::</owner> + <type>string</type> + <default>default</default> + + <locale name="C"> + <short>Use selected format for new VM storage</short> + <long>Use selected format when creating new disk images in new VM wizard</long> + </locale> + </schema> + + <schema> <key>/schemas/apps/::PACKAGE::/system-tray</key> <applyto>/apps/::PACKAGE::/system-tray</applyto> <owner>::PACKAGE::</owner> diff --git a/src/virtManager/config.py b/src/virtManager/config.py index 342b0238..20c6a787 100644 --- a/src/virtManager/config.py +++ b/src/virtManager/config.py @@ -519,6 +519,18 @@ class vmmConfig(object): return self.conf.notify_add(self.conf_dir + "/new-vm/graphics_type", cb, data) + def get_storage_format(self): + ret = self.conf.get_string(self.conf_dir + "/new-vm/storage-format") + if ret not in ["default", "raw", "qcow2"]: + return "default" + return ret + def set_storage_format(self, typ): + self.conf.set_string(self.conf_dir + "/new-vm/storage-format", + typ.lower()) + def on_storage_format_changed(self, cb, data=None): + return self.conf.notify_add(self.conf_dir + "/new-vm/storage-format", + cb, data) + # URL/Media path history def _url_add_helper(self, gconf_path, url): diff --git a/src/virtManager/create.py b/src/virtManager/create.py index 31a97b3a..88c3bab7 100644 --- a/src/virtManager/create.py +++ b/src/virtManager/create.py @@ -1720,6 +1720,13 @@ class vmmCreate(vmmGObjectUI): size=disksize, sparse=sparse) + fmt = self.config.get_storage_format() + if (self.is_default_storage() and + disk.vol_install and + fmt in disk.vol_install.formats): + logging.debug("Setting disk format from prefs: %s", fmt) + disk.vol_install.format = fmt + except Exception, e: return self.err.val_err(_("Storage parameter error."), e) diff --git a/src/virtManager/preferences.py b/src/virtManager/preferences.py index 0c431ed6..0eaf20bd 100644 --- a/src/virtManager/preferences.py +++ b/src/virtManager/preferences.py @@ -39,6 +39,7 @@ class vmmPreferences(vmmGObjectUI): self.add_gconf_handle(self.config.on_sound_local_changed(self.refresh_sound_local)) self.add_gconf_handle(self.config.on_sound_remote_changed(self.refresh_sound_remote)) self.add_gconf_handle(self.config.on_graphics_type_changed(self.refresh_graphics_type)) + self.add_gconf_handle(self.config.on_storage_format_changed(self.refresh_storage_format)) self.add_gconf_handle(self.config.on_stats_enable_disk_poll_changed(self.refresh_disk_poll)) self.add_gconf_handle(self.config.on_stats_enable_net_poll_changed(self.refresh_net_poll)) @@ -57,6 +58,7 @@ class vmmPreferences(vmmGObjectUI): self.refresh_sound_local() self.refresh_sound_remote() self.refresh_graphics_type() + self.refresh_storage_format() self.refresh_disk_poll() self.refresh_net_poll() self.refresh_grabkeys_combination() @@ -88,6 +90,7 @@ class vmmPreferences(vmmGObjectUI): "on_prefs_confirm_unapplied_toggled": self.change_confirm_unapplied, "on_prefs_btn_keys_define_clicked": self.change_grab_keys, "on_prefs_graphics_type_changed": self.change_graphics_type, + "on_prefs_storage_format_changed": self.change_storage_format, }) self.bind_escape_key_close() @@ -158,6 +161,20 @@ class vmmPreferences(vmmGObjectUI): break self.widget("prefs-graphics-type").set_active(active) + def refresh_storage_format(self, ignore1=None, ignore2=None, ignore=None, + ignore4=None): + combo = self.widget("prefs-storage-format") + model = combo.get_model() + gtype = self.config.get_storage_format() + + # Default to row 0 == raw + active = 0 + for rowidx in range(len(model)): + if model[rowidx][0].lower() == gtype: + active = rowidx + break + + self.widget("prefs-storage-format").set_active(active) def refresh_disk_poll(self, ignore1=None, ignore2=None, ignore3=None, ignore4=None): @@ -314,6 +331,12 @@ class vmmPreferences(vmmGObjectUI): if idx >= 0: gtype = src.get_model()[idx][0] self.config.set_graphics_type(gtype.lower()) + def change_storage_format(self, src): + typ = 'default' + idx = src.get_active() + if idx >= 0: + typ = src.get_model()[idx][0] + self.config.set_storage_format(typ.lower()) def show_help(self, src_ignore): # From the Preferences window, show the help document from diff --git a/src/vmm-preferences.ui b/src/vmm-preferences.ui index c51fb5e9..11871f2d 100644 --- a/src/vmm-preferences.ui +++ b/src/vmm-preferences.ui @@ -42,6 +42,23 @@ </row> </data> </object> + <object class="GtkListStore" id="liststore3"> + <columns> + <!-- column-name gchararray1 --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0">Default</col> + </row> + <row> + <col id="0">Raw</col> + </row> + <row> + <col id="0">QCOW2</col> + </row> + </data> + </object> <object class="GtkWindow" id="vmm-preferences"> <property name="can_focus">False</property> <property name="border_width">12</property> @@ -542,7 +559,7 @@ <object class="GtkTable" id="table4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">2</property> + <property name="n_rows">6</property> <property name="column_spacing">8</property> <child> <object class="GtkAlignment" id="alignment6"> @@ -637,6 +654,39 @@ <property name="x_padding">5</property> </packing> </child> + <child> + <object class="GtkLabel" id="label25"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Default storage format for new disk images.</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Default storage format:</property> + </object> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="prefs-storage-format"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="tooltip_text" translatable="yes">Default storage format for new disk images.</property> + <property name="model">liststore3</property> + <signal name="changed" handler="on_prefs_storage_format_changed" swapped="no"/> + <child> + <object class="GtkCellRendererText" id="cellrenderertext3"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_padding">5</property> + </packing> + </child> </object> </child> </object> |