[PATCH 1/3] Add a "Delete All" button to the reclaim dialog.

Vratislav Podzimek vpodzime at redhat.com
Wed Jun 5 08:17:27 UTC 2013


On Tue, 2013-06-04 at 13:27 -0400, Chris Lumens wrote:
> This allows for clearing all editable disks in one button click.  It is
> positioned on the far right of the list of action buttons and schedules a
> delete action for all disks.  Should you later wish to undo this action,
> the button will also do a preserve all.
> 
> This also required moving the shrink slider down.
> ---
>  pyanaconda/ui/gui/spokes/lib/resize.glade | 50 ++++++++++++++++++++-----------
>  pyanaconda/ui/gui/spokes/lib/resize.py    | 39 ++++++++++++++++++------
>  2 files changed, 63 insertions(+), 26 deletions(-)
> 

> diff --git a/pyanaconda/ui/gui/spokes/lib/resize.py b/pyanaconda/ui/gui/spokes/lib/resize.py
> index 30518aa..2df4c59 100644
> --- a/pyanaconda/ui/gui/spokes/lib/resize.py
> +++ b/pyanaconda/ui/gui/spokes/lib/resize.py
> @@ -317,18 +317,18 @@ class ResizeDialog(GUIObject):
>          return False
>  
>      def on_preserve_clicked(self, button):
> -        self._actionChanged(PRESERVE)
> +        (model, itr) = self.builder.get_object("diskView-selection").get_selected()
> +        self._actionChanged(itr, PRESERVE)
>  
>      def on_shrink_clicked(self, button):
> -        self._actionChanged(SHRINK)
> +        (model, itr) = self.builder.get_object("diskView-selection").get_selected()
> +        self._actionChanged(itr, SHRINK)
>  
>      def on_delete_clicked(self, button):
> -        self._actionChanged(DELETE)
> -
> -    def _actionChanged(self, newAction):
> -        selection = self.builder.get_object("diskView-selection")
> -        (model, itr) = selection.get_selected()
> +        (model, itr) = self.builder.get_object("diskView-selection").get_selected()
> +        self._actionChanged(itr, DELETE)
I think the "diskView-selection" widget should be pulled once and stored
as e.g. "self._viewSelection". If nothing else, in case of changing the
widget's ID in the .glade file, it won't require a change in multiple
places.

>  
> +    def _actionChanged(self, itr, newAction):
>          if not itr:
>              return
>  
> @@ -340,7 +340,7 @@ class ResizeDialog(GUIObject):
>          # it contains.
>          device = self.storage.devicetree.getDeviceByID(selectedRow[DEVICE_ID_COL])
>          if device.isDisk and device.partitioned:
> -            partItr = model.iter_children(itr)
> +            partItr = self._diskStore.iter_children(itr)
>              while partItr:
>                  self._diskStore[partItr][ACTION_COL] = _(newAction)
>  
> @@ -352,7 +352,7 @@ class ResizeDialog(GUIObject):
>                      part = self.storage.devicetree.getDeviceByID(self._diskStore[partItr][DEVICE_ID_COL])
>                      self._diskStore[partItr][EDITABLE_COL] = not part.protected
>  
> -                partItr = model.iter_next(partItr)
> +                partItr = self._diskStore.iter_next(partItr)
>  
>          # And then we're keeping a running tally of how much space the user
>          # has selected to reclaim, so reflect that in the UI.
> @@ -386,6 +386,27 @@ class ResizeDialog(GUIObject):
>      def on_resize_clicked(self, *args):
>          self._diskStore.foreach(self._scheduleActions, None)
>  
> +    def on_delete_all_clicked(self, button, *args):
> +        if button.get_label() == _("Delete _all"):
> +            action = DELETE
> +            button.set_label(_("Preserve _all"))
> +        else:
> +            action = PRESERVE
> +            button.set_label(_("Delete _all"))
> +
> +        itr = self._diskStore.get_iter_first()
> +        while itr:
> +            if not self._diskStore[itr][EDITABLE_COL]:
> +                itr = self._diskStore.iter_next(itr)
> +                continue
> +
> +            (ident, ) = self._diskStore.get(itr, DEVICE_ID_COL) 
Is there any particular reason for using 'get' instead of
[itr][DEVICE_ID_COL]? 

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list