summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2010-03-01 18:41:23 -0500
committerChris Lumens <clumens@redhat.com>2010-03-04 15:23:47 -0500
commit83cdc230487df846843e11cc01c03102e07966c5 (patch)
tree145e02b33700f9e67d47052beafce96cea72b156
parent912b7a3e32e7daa01e448e9ac7668e2fa8207a02 (diff)
downloadanaconda-83cdc230487df846843e11cc01c03102e07966c5.tar.gz
anaconda-83cdc230487df846843e11cc01c03102e07966c5.tar.xz
anaconda-83cdc230487df846843e11cc01c03102e07966c5.zip
Select/Deselect All should only apply to the current tab (#516143, #568875).
-rw-r--r--iw/DeviceSelector.py18
-rw-r--r--iw/filter_gui.py3
2 files changed, 13 insertions, 8 deletions
diff --git a/iw/DeviceSelector.py b/iw/DeviceSelector.py
index 9a99c8a52..7669ca867 100644
--- a/iw/DeviceSelector.py
+++ b/iw/DeviceSelector.py
@@ -127,7 +127,8 @@ class DeviceDisplayer(object):
return len(filter(lambda row: row[self.visible], self.store))
class DeviceSelector(DeviceDisplayer):
- def createSelectionCol(self, title="", radioButton=False, toggledCB=None):
+ def createSelectionCol(self, title="", radioButton=False, toggledCB=None,
+ membershipCB=None):
# Add a column full of checkboxes/radiobuttons in the first column of the view.
crt = gtk.CellRendererToggle()
crt.set_property("activatable", True)
@@ -146,18 +147,21 @@ class DeviceSelector(DeviceDisplayer):
col.set_widget(self.allButton)
self.allButton.show_all()
- self.allButton.connect("toggled", self._all_clicked, toggledCB)
+ self.allButton.connect("toggled", self._all_clicked, toggledCB, membershipCB)
self.view.append_column(col)
self.view.set_headers_clickable(True)
self.view.connect("row-activated", self._row_activated, toggledCB, radioButton)
- def _all_clicked(self, button, cb=None):
+ def _all_clicked(self, button, toggledCB=None, membershipCB=None):
# This is called when the Add/Remove all button is checked and does
# the obvious.
def _toggle_all(model, path, iter, set):
- # Don't check the boxes of rows that aren't visible.
- if not model[path][self.visible]:
+ # Don't check the boxes of rows that aren't visible or aren't part
+ # of the currently displayed page. We'd like the all button to
+ # only operate on the current page, after all.
+ if not model[path][self.visible] or \
+ (membershipCB and not membershipCB(model[path][OBJECT_COL])):
return
# Don't try to set a row to active if it's already been checked.
@@ -168,8 +172,8 @@ class DeviceSelector(DeviceDisplayer):
model[path][self.active] = set
- if cb:
- cb(set, model[path][OBJECT_COL])
+ if toggledCB:
+ toggledCB(set, model[path][OBJECT_COL])
set = button.get_active()
self.store.foreach(_toggle_all, set)
diff --git a/iw/filter_gui.py b/iw/filter_gui.py
index 3d553c7f9..f2eff4e4d 100644
--- a/iw/filter_gui.py
+++ b/iw/filter_gui.py
@@ -349,7 +349,8 @@ class NotebookPage(object):
self.ds = DeviceSelector(store, self.sortedModel, self.treeView,
visible=VISIBLE_COL, active=ACTIVE_COL)
self.ds.createMenu()
- self.ds.createSelectionCol(toggledCB=self.cb.deviceToggled)
+ self.ds.createSelectionCol(toggledCB=self.cb.deviceToggled,
+ membershipCB=self.cb.isMember)
self.filteredModel.set_visible_func(self.cb.visible, self.treeView)