diff options
| author | Chris Lumens <clumens@redhat.com> | 2012-06-21 15:56:07 -0400 |
|---|---|---|
| committer | Chris Lumens <clumens@redhat.com> | 2012-06-21 16:43:57 -0400 |
| commit | 37253f32b0799570817728d858bec776202ee361 (patch) | |
| tree | 942acaaf59c05168d9b51c3c32b26012d5e70dd6 /pyanaconda | |
| parent | cd6d7f682129f5a5f439282413921f47b689a40b (diff) | |
| download | anaconda-37253f32b0799570817728d858bec776202ee361.tar.gz anaconda-37253f32b0799570817728d858bec776202ee361.tar.xz anaconda-37253f32b0799570817728d858bec776202ee361.zip | |
Support a callback when page headers are clicked.
Diffstat (limited to 'pyanaconda')
| -rw-r--r-- | pyanaconda/ui/gui/spokes/custom.py | 19 | ||||
| -rw-r--r-- | pyanaconda/ui/gui/spokes/lib/accordion.py | 23 |
2 files changed, 27 insertions, 15 deletions
diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py index 2c3376246..c974e46f8 100644 --- a/pyanaconda/ui/gui/spokes/custom.py +++ b/pyanaconda/ui/gui/spokes/custom.py @@ -237,7 +237,7 @@ class CustomPartitioningSpoke(NormalSpoke): # Make sure we start with a clean slate. self._accordion.removeAllPages() - # Start with buttons disabled, since no filesystem is selected. + # Start with buttons disabled, since nothing is selected. self._removeButton.set_sensitive(False) self._configButton.set_sensitive(False) @@ -251,7 +251,7 @@ class CustomPartitioningSpoke(NormalSpoke): if not self._ran_autopart: page = CreateNewPage(self.on_create_clicked) page.pageTitle = _("New %s %s Installation") % (productName, productVersion) - self._accordion.addPage(page) + self._accordion.addPage(page, cb=self.on_page_clicked) self._accordion.expandPage(page.pageTitle) did_expand = True @@ -275,7 +275,7 @@ class CustomPartitioningSpoke(NormalSpoke): selector._root = root page.show_all() - self._accordion.addPage(page) + self._accordion.addPage(page, cb=self.on_page_clicked) if not did_expand and self._current_selector and root == self._current_selector._root: did_expand = True @@ -293,7 +293,7 @@ class CustomPartitioningSpoke(NormalSpoke): selector._root = None page.show_all() - self._accordion.addPage(page) + self._accordion.addPage(page, cb=self.on_page_clicked) if not did_expand and self._current_selector and unused == self._current_selector._root: did_expand = True @@ -486,9 +486,18 @@ class CustomPartitioningSpoke(NormalSpoke): selector.set_chosen(True) self._current_selector = selector - self._removeButton.set_sensitive(True) self._configButton.set_sensitive(True) + def on_page_clicked(self, page): + # This is called when a Page header is clicked upon so we can support + # deleting an entire installation at once and displaying something + # on the RHS. + if isinstance(page, CreateNewPage) or isinstance(page, UnknownPage): + self._removeButton.set_sensitive(False) + return + + self._removeButton.set_sensitive(True) + def on_create_clicked(self, button): from pyanaconda.storage import Root from pyanaconda.storage.devices import DiskDevice diff --git a/pyanaconda/ui/gui/spokes/lib/accordion.py b/pyanaconda/ui/gui/spokes/lib/accordion.py index f3efbd394..c2da71ecb 100644 --- a/pyanaconda/ui/gui/spokes/lib/accordion.py +++ b/pyanaconda/ui/gui/spokes/lib/accordion.py @@ -44,7 +44,7 @@ class Accordion(Gtk.Box): Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL, spacing=12) self._expanders = [] - def addPage(self, contents): + def addPage(self, contents, cb=None): label = Gtk.Label() label.set_markup("""<span size='large' weight='bold' fgcolor='black'>%s</span>""" % contents.pageTitle) label.set_alignment(0, 0.5) @@ -56,7 +56,7 @@ class Accordion(Gtk.Box): self.add(expander) self._expanders.append(expander) - expander.connect("activate", self._onExpanded) + expander.connect("activate", self._onExpanded, cb) expander.show_all() def _find_by_title(self, title): @@ -95,7 +95,7 @@ class Accordion(Gtk.Box): self._expanders = [] - def _onExpanded(self, obj): + def _onExpanded(self, obj, cb=None): # Set all other expanders to closed, but don't do anything to the # expander this method was called on. It's already been handled by # the default activate signal handler. @@ -105,6 +105,9 @@ class Accordion(Gtk.Box): expander.set_expanded(False) + if cb: + cb(obj.get_child()) + # A Page is a box that is stored in an Accordion. It breaks down all the filesystems that # comprise a single installed OS into two categories - Data filesystems and System filesystems. # Each filesystem is described by a single MountpointSelector. @@ -135,9 +138,9 @@ class Page(Gtk.Box): def addDevice(self, name, size, mountpoint, cb): selector = MountpointSelector() selector = MountpointSelector(name, str(Size(spec="%s MB" % size)), mountpoint or "") - selector.connect("button-press-event", self._onClicked, cb) - selector.connect("key-release-event", self._onClicked, cb) - selector.connect("focus-in-event", self._onClicked, cb) + selector.connect("button-press-event", self._onSelectorClicked, cb) + selector.connect("key-release-event", self._onSelectorClicked, cb) + selector.connect("focus-in-event", self._onSelectorClicked, cb) self._members.append(selector) if self._mountpointType(mountpoint) == DATA_DEVICE: @@ -156,7 +159,7 @@ class Page(Gtk.Box): else: return DATA_DEVICE - def _onClicked(self, selector, event, cb): + def _onSelectorClicked(self, selector, event, cb): from gi.repository import Gdk if event and not event.type in [Gdk.EventType.BUTTON_PRESS, Gdk.EventType.KEY_RELEASE, Gdk.EventType.FOCUS_CHANGE]: @@ -180,9 +183,9 @@ class UnknownPage(Page): def addDevice(self, name, size, mountpoint, cb): selector = MountpointSelector() selector = MountpointSelector(name, str(Size(spec="%s MB" % size)), mountpoint or "") - selector.connect("button-press-event", self._onClicked, cb) - selector.connect("key-release-event", self._onClicked, cb) - selector.connect("focus-in-event", self._onClicked, cb) + selector.connect("button-press-event", self._onSelectorClicked, cb) + selector.connect("key-release-event", self._onSelectorClicked, cb) + selector.connect("focus-in-event", self._onSelectorClicked, cb) self._members.append(selector) self.add(selector) |
