summaryrefslogtreecommitdiffstats
path: root/pyanaconda
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2012-06-21 15:56:07 -0400
committerChris Lumens <clumens@redhat.com>2012-06-21 16:43:57 -0400
commit37253f32b0799570817728d858bec776202ee361 (patch)
tree942acaaf59c05168d9b51c3c32b26012d5e70dd6 /pyanaconda
parentcd6d7f682129f5a5f439282413921f47b689a40b (diff)
downloadanaconda-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.py19
-rw-r--r--pyanaconda/ui/gui/spokes/lib/accordion.py23
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)