sidebar: Save the current page

And initialize to the Library page to make adding that first directory
easier for the user.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-16 10:45:11 -04:00
parent a00701e722
commit 85b5c964a6
2 changed files with 18 additions and 0 deletions

View File

@ -1,4 +1,5 @@
# Copyright 2021 (c) Anna Schumaker.
from lib import settings
from gi.repository import Gtk
Switcher = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
@ -15,9 +16,14 @@ Switcher.add_css_class("linked")
Switcher.add_css_class("large-icons")
Stack.set_transition_type(Gtk.StackTransitionType.OVER_UP_DOWN)
def initialize():
settings.initialize("sidebar.page", "Libraries")
initialize()
def switch_page(toggle):
if toggle.get_active():
Stack.set_visible_child_name(toggle.get_name())
settings.set("sidebar.page", toggle.get_name())
def add_stack_page(page, name, icon):
toggle = Gtk.ToggleButton()
@ -31,6 +37,7 @@ def add_stack_page(page, name, icon):
Toggles.append(toggle)
Switcher.append(toggle)
Stack.add_named(page, name)
toggle.set_active(settings.get("sidebar.page") == name)
add_stack_page(Gtk.Label.new(str="Playlists"), "Playlists", "audio-x-generic")
add_stack_page(Gtk.Label.new(str="Artists"), "Artists", "avatar-default-symbolic")

View File

@ -1,9 +1,13 @@
# Copyright 2021 (c) Anna Schumaker.
from lib import settings
import sidebar
import unittest
from gi.repository import Gtk
class TestSidebar(unittest.TestCase):
def setUpClass():
sidebar.initialize()
def test_sidebar_init(self):
self.assertIsInstance(sidebar.Switcher, Gtk.Box)
self.assertIsInstance(sidebar.Stack, Gtk.Stack)
@ -17,6 +21,8 @@ class TestSidebar(unittest.TestCase):
self.assertTrue(sidebar.Switcher.has_css_class("linked"))
self.assertTrue(sidebar.Switcher.has_css_class("large-icons"))
self.assertEqual(sidebar.Stack.get_transition_type(), Gtk.StackTransitionType.OVER_UP_DOWN)
self.assertEqual(settings.get("sidebar.page"), "Libraries")
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Libraries")
for toggle in sidebar.Toggles:
self.assertIsInstance(toggle, Gtk.ToggleButton)
@ -28,30 +34,35 @@ class TestSidebar(unittest.TestCase):
self.assertEqual(sidebar.Toggles[0].get_name(), "Playlists")
sidebar.Toggles[0].set_active(True)
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Playlists")
self.assertEqual(settings.get("sidebar.page"), "Playlists")
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Artists"))
self.assertEqual(sidebar.Toggles[1].get_icon_name(), "avatar-default-symbolic")
self.assertEqual(sidebar.Toggles[1].get_name(), "Artists")
sidebar.Toggles[1].set_active(True)
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Artists")
self.assertEqual(settings.get("sidebar.page"), "Artists")
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Genres"))
self.assertEqual(sidebar.Toggles[2].get_icon_name(), "emblem-generic")
self.assertEqual(sidebar.Toggles[2].get_name(), "Genres")
sidebar.Toggles[2].set_active(True)
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Genres")
self.assertEqual(settings.get("sidebar.page"), "Genres")
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Decades"))
self.assertEqual(sidebar.Toggles[3].get_icon_name(), "x-office-calendar")
self.assertEqual(sidebar.Toggles[3].get_name(), "Decades")
sidebar.Toggles[3].set_active(True)
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Decades")
self.assertEqual(settings.get("sidebar.page"), "Decades")
self.assertIsNotNone(sidebar.Stack.get_child_by_name("Libraries"))
self.assertEqual(sidebar.Toggles[4].get_icon_name(), "folder-music")
self.assertEqual(sidebar.Toggles[4].get_name(), "Libraries")
sidebar.Toggles[4].set_active(True)
self.assertEqual(sidebar.Stack.get_visible_child_name(), "Libraries")
self.assertEqual(settings.get("sidebar.page"), "Libraries")
for toggle in sidebar.Toggles:
if toggle != sidebar.Toggles[-1]: