diff --git a/tests/gtk/test_window.py b/tests/gtk/test_window.py index 1be4dc5..f5fd522 100644 --- a/tests/gtk/test_window.py +++ b/tests/gtk/test_window.py @@ -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) diff --git a/xfstestsdb/gtk/window.py b/xfstestsdb/gtk/window.py index c6520ed..9830f2e 100644 --- a/xfstestsdb/gtk/window.py +++ b/xfstestsdb/gtk/window.py @@ -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__: