gtk: Give Windows a button for toggling the sidebar
Users can press this to show and hide the sidebar overlay. Signed-off-by: Anna Schumaker <anna@nowheycreamery.com>
This commit is contained in:
parent
5621847451
commit
b05a9ecc82
|
@ -43,9 +43,33 @@ class TestWindow(unittest.TestCase):
|
|||
self.assertIsInstance(self.window._splitview, Adw.OverlaySplitView)
|
||||
self.assertEqual(self.window.headerbar.get_next_sibling(),
|
||||
self.window._splitview)
|
||||
self.assertFalse(self.window._splitview.props.show_sidebar)
|
||||
self.assertTrue(self.window._splitview.props.collapsed)
|
||||
|
||||
def test_show_sidebar(self):
|
||||
"""Test the window show sidebar button."""
|
||||
self.assertIsInstance(self.window._show_sidebar, Gtk.ToggleButton)
|
||||
self.assertEqual(self.window._show_sidebar.get_ancestor(Adw.HeaderBar),
|
||||
self.window.headerbar)
|
||||
self.assertEqual(self.window._show_sidebar.props.icon_name,
|
||||
"sidebar-show")
|
||||
|
||||
self.assertFalse(self.window.show_sidebar)
|
||||
self.assertFalse(self.window._show_sidebar.props.active)
|
||||
self.assertFalse(self.window._splitview.props.show_sidebar)
|
||||
|
||||
self.window._show_sidebar.props.active = True
|
||||
self.assertTrue(self.window._splitview.props.show_sidebar)
|
||||
self.assertTrue(self.window.show_sidebar)
|
||||
|
||||
self.window.show_sidebar = False
|
||||
self.assertFalse(self.window._show_sidebar.props.active)
|
||||
self.assertFalse(self.window._splitview.props.show_sidebar)
|
||||
|
||||
window2 = xfstestsdb.gtk.window.Window(show_sidebar=True)
|
||||
self.assertTrue(window2.show_sidebar)
|
||||
self.assertTrue(window2._show_sidebar.props.active)
|
||||
self.assertTrue(window2._splitview.props.show_sidebar)
|
||||
|
||||
def test_content(self):
|
||||
"""Test the window content property."""
|
||||
self.assertIsNone(self.window.child)
|
||||
|
|
|
@ -13,6 +13,7 @@ class Window(Adw.Window):
|
|||
headerbar = GObject.Property(type=Adw.HeaderBar)
|
||||
title = GObject.Property(type=Adw.WindowTitle)
|
||||
runid = GObject.Property(type=int)
|
||||
show_sidebar = GObject.Property(type=bool, default=False)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
"""Set up our Window."""
|
||||
|
@ -22,15 +23,22 @@ class Window(Adw.Window):
|
|||
headerbar=Adw.HeaderBar(), **kwargs)
|
||||
self._splitview = Adw.OverlaySplitView(content=self.child,
|
||||
collapsed=True,
|
||||
show_sidebar=False)
|
||||
show_sidebar=self.show_sidebar)
|
||||
self._show_sidebar = Gtk.ToggleButton(icon_name="sidebar-show",
|
||||
active=self.show_sidebar)
|
||||
|
||||
self.headerbar.pack_start(self._show_sidebar)
|
||||
self.headerbar.props.title_widget = self.title
|
||||
self.headerbar.add_css_class("flat")
|
||||
|
||||
self.props.content.append(self.headerbar)
|
||||
self.props.content.append(self._splitview)
|
||||
|
||||
self._show_sidebar.bind_property("active", self, "show-sidebar",
|
||||
GObject.BindingFlags.BIDIRECTIONAL)
|
||||
self.bind_property("show-sidebar", self._splitview, "show-sidebar")
|
||||
self.bind_property("child", self._splitview, "content")
|
||||
|
||||
self.connect("notify::runid", self.__notify_runid)
|
||||
|
||||
if __debug__:
|
||||
|
|
Loading…
Reference in New Issue