On Mon, Dec 03, 2012 at 05:12:59PM +0100, Martin Kletzander wrote: > This patch changes the default checkbox-state of "Delete all > associated storage" to be checked, but adds a prompt with a warning > for users to be sure they notice this change and they know what they > are doing (hopefully). I really think that changing the default from preserve user data to destroy user data is asking for trouble. Dave > --- > I tried playing with this and it works, but unfortunately after the > configuration gets changed few times. I haven't tried on a clean > machine, so it maybe a problem of some old schemas being stuck in > there. Feel free to correct my thoughts and patch. > > v2: > - there is no configuration for what the default state should be, > it's changed to 'checked' by default, but there is a prompt added > > src/virt-manager.schemas.in | 13 +++++++++++++ > src/virtManager/config.py | 8 +++++++- > src/virtManager/delete.py | 12 ++++++++++-- > src/virtManager/preferences.py | 11 ++++++++++- > src/vmm-preferences.ui | 30 ++++++++++++++++++++++++++++++ > 5 files changed, 70 insertions(+), 4 deletions(-) > > diff --git a/src/virt-manager.schemas.in b/src/virt-manager.schemas.in > index 8154534..dc11187 100644 > --- a/src/virt-manager.schemas.in > +++ b/src/virt-manager.schemas.in > @@ -378,6 +378,19 @@ > </schema> > > <schema> > + <key>/schemas/apps/::PACKAGE::/confirm/delete_storage</key> > + <applyto>/apps/::PACKAGE::/confirm/delete_storage</applyto> > + <owner>::PACKAGE::</owner> > + <type>bool</type> > + <default>1</default> > + > + <locale name="C"> > + <short>Confirm deleting storage</short> > + <long>Whether we require a confirmation on deleting storage</long> > + </locale> > + </schema> > + > + <schema> > <key>/schemas/apps/::PACKAGE::/manager_window_height</key> > <applyto>/apps/::PACKAGE::/manager_window_height</applyto> > <owner>::PACKAGE::</owner> > diff --git a/src/virtManager/config.py b/src/virtManager/config.py > index 508fea0..21fc616 100644 > --- a/src/virtManager/config.py > +++ b/src/virtManager/config.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2006 Red Hat, Inc. > +# Copyright (C) 2006, 2012 Red Hat, Inc. > # Copyright (C) 2006 Daniel P. Berrange <berrange@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -375,6 +375,8 @@ class vmmConfig(object): > return self.conf.get_bool(self.conf_dir + "/confirm/interface_power") > def get_confirm_unapplied(self): > return self.conf.get_bool(self.conf_dir + "/confirm/unapplied_dev") > + def get_confirm_delstorage(self): > + return self.conf.get_bool(self.conf_dir + "/confirm/delete_storage") > > > def set_confirm_forcepoweroff(self, val): > @@ -389,6 +391,8 @@ class vmmConfig(object): > self.conf.set_bool(self.conf_dir + "/confirm/interface_power", val) > def set_confirm_unapplied(self, val): > self.conf.set_bool(self.conf_dir + "/confirm/unapplied_dev", val) > + def set_confirm_delstorage(self, val): > + self.conf.set_bool(self.conf_dir + "/confirm/delete_storage", val) > > def on_confirm_forcepoweroff_changed(self, cb): > return self.conf.notify_add(self.conf_dir + "/confirm/forcepoweroff", cb) > @@ -402,6 +406,8 @@ class vmmConfig(object): > return self.conf.notify_add(self.conf_dir + "/confirm/interface_power", cb) > def on_confirm_unapplied_changed(self, cb): > return self.conf.notify_add(self.conf_dir + "/confirm/unapplied_dev", cb) > + def on_confirm_delstorage_changed(self, cb): > + return self.conf.notify_add(self.conf_dir + "/confirm/delete_storage", cb) > > > # System tray visibility > diff --git a/src/virtManager/delete.py b/src/virtManager/delete.py > index 9b7d08a..493ef96 100644 > --- a/src/virtManager/delete.py > +++ b/src/virtManager/delete.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2009 Red Hat, Inc. > +# Copyright (C) 2009, 2012 Red Hat, Inc. > # Copyright (C) 2009 Cole Robinson <crobinso@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -96,7 +96,7 @@ class vmmDeleteDialog(vmmGObjectUI): > self.widget("delete-cancel").grab_focus() > > # Disable storage removal by default > - self.widget("delete-remove-storage").set_active(False) > + self.widget("delete-remove-storage").set_active(True) > self.widget("delete-remove-storage").toggled() > > populate_storage_list(self.widget("delete-storage-list"), > @@ -125,6 +125,14 @@ class vmmDeleteDialog(vmmGObjectUI): > def finish(self, src_ignore): > devs = self.get_paths_to_delete() > > + if devs and not util.chkbox_helper(self, self.config.get_confirm_delstorage, > + self.config.set_confirm_delstorage, > + text1=_("Are you sure you want to delete " > + "all the storage?"), > + text2=_("This will delete all selected " > + "storage data.")): > + return > + > self.topwin.set_sensitive(False) > self.topwin.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) > > diff --git a/src/virtManager/preferences.py b/src/virtManager/preferences.py > index 0eaf20b..c449f50 100644 > --- a/src/virtManager/preferences.py > +++ b/src/virtManager/preferences.py > @@ -1,5 +1,5 @@ > # > -# Copyright (C) 2006 Red Hat, Inc. > +# Copyright (C) 2006, 2012 Red Hat, Inc. > # Copyright (C) 2006 Daniel P. Berrange <berrange@xxxxxxxxxx> > # > # This program is free software; you can redistribute it and/or modify > @@ -49,6 +49,7 @@ class vmmPreferences(vmmGObjectUI): > self.add_gconf_handle(self.config.on_confirm_removedev_changed(self.refresh_confirm_removedev)) > self.add_gconf_handle(self.config.on_confirm_interface_changed(self.refresh_confirm_interface)) > self.add_gconf_handle(self.config.on_confirm_unapplied_changed(self.refresh_confirm_unapplied)) > + self.add_gconf_handle(self.config.on_confirm_delstorage_changed(self.refresh_confirm_delstorage)) > > self.refresh_view_system_tray() > self.refresh_update_interval() > @@ -68,6 +69,7 @@ class vmmPreferences(vmmGObjectUI): > self.refresh_confirm_removedev() > self.refresh_confirm_interface() > self.refresh_confirm_unapplied() > + self.refresh_confirm_delstorage() > > self.window.connect_signals({ > "on_prefs_system_tray_toggled" : self.change_view_system_tray, > @@ -88,6 +90,7 @@ class vmmPreferences(vmmGObjectUI): > "on_prefs_confirm_removedev_toggled": self.change_confirm_removedev, > "on_prefs_confirm_interface_toggled": self.change_confirm_interface, > "on_prefs_confirm_unapplied_toggled": self.change_confirm_unapplied, > + "on_prefs_confirm_delstorage_toggled": self.change_confirm_delstorage, > "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, > @@ -233,6 +236,10 @@ class vmmPreferences(vmmGObjectUI): > ignore3=None, ignore4=None): > self.widget("prefs-confirm-unapplied").set_active( > self.config.get_confirm_unapplied()) > + def refresh_confirm_delstorage(self, ignore1=None, ignore2=None, > + ignore3=None, ignore4=None): > + self.widget("prefs-confirm-delstorage").set_active( > + self.config.get_confirm_delstorage()) > > def grabkeys_get_string(self, events): > keystr = "" > @@ -324,6 +331,8 @@ class vmmPreferences(vmmGObjectUI): > self.config.set_confirm_interface(src.get_active()) > def change_confirm_unapplied(self, src): > self.config.set_confirm_unapplied(src.get_active()) > + def change_confirm_delstorage(self, src): > + self.config.set_confirm_delstorage(src.get_active()) > > def change_graphics_type(self, src): > gtype = 'vnc' > diff --git a/src/vmm-preferences.ui b/src/vmm-preferences.ui > index 6cc3916..dd9b3ab 100644 > --- a/src/vmm-preferences.ui > +++ b/src/vmm-preferences.ui > @@ -935,6 +935,36 @@ > <property name="bottom_attach">6</property> > </packing> > </child> > + > + <child> > + <object class="GtkLabel" id="label66"> > + <property name="visible">True</property> > + <property name="can_focus">False</property> > + <property name="xalign">0</property> > + <property name="label" translatable="yes">Deleting storage:</property> > + </object> > + <packing> > + <property name="top_attach">7</property> > + <property name="bottom_attach">8</property> > + <property name="x_options">GTK_FILL</property> > + </packing> > + </child> > + <child> > + <object class="GtkCheckButton" id="prefs-confirm-delstorage"> > + <property name="visible">True</property> > + <property name="can_focus">True</property> > + <property name="receives_default">False</property> > + <property name="use_action_appearance">False</property> > + <property name="draw_indicator">True</property> > + <signal name="toggled" handler="on_prefs_confirm_delstorage_toggled" swapped="no"/> > + </object> > + <packing> > + <property name="left_attach">1</property> > + <property name="right_attach">2</property> > + <property name="top_attach">7</property> > + <property name="bottom_attach">8</property> > + </packing> > + </child> > </object> > </child> > </object> > -- > 1.8.0 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list