[virt-tools-list] [virt-manager PATCH v2] [RFC] Make deleting storage files default with added prompt
Dave Allan
dallan at redhat.com
Mon Dec 3 20:17:23 UTC 2012
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 at redhat.com>
> #
> # 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 at redhat.com>
> #
> # 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 at redhat.com>
> #
> # 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 at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
More information about the virt-tools-list
mailing list