sidebar: Give sidebar widgets tooltip properties

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2023-06-10 19:45:19 -04:00
parent d807f8bd36
commit c375d2366a
8 changed files with 38 additions and 2 deletions

View File

@ -35,6 +35,8 @@ class Section(section.Section):
subtitle="0 artists, 0 albums",
icon_name="library-artists", album_table=album_table)
self.extra_widget = ImageToggle("music-artist", "music-artist2",
"show album artists",
"show all artists",
large_icon=False, has_frame=False)
self.album_table.connect("items-changed", self.__update_subtitle)
self.bind_property("show-all", self.extra_widget, "active",

View File

@ -41,7 +41,8 @@ class Section(section.Section):
"""Initialize our library path section."""
super().__init__(table, LibraryRow, icon_name="library-music",
title="Library Paths", subtitle="0 library paths")
self.extra_widget = Gtk.Button(icon_name="folder-new", has_frame=False)
self.extra_widget = Gtk.Button(icon_name="folder-new", has_frame=False,
tooltip_text="add new library path")
self._dialog = Gtk.FileDialog(title="Pick a Directory",
filters=DIRECTORY_FILTERS)
self._toast = None

View File

@ -50,6 +50,8 @@ class Section(section.Section):
self._entry = Gtk.Entry(placeholder_text="add new playlist",
primary_icon_name="list-add")
self.extra_widget = buttons.PopoverButton(icon_name="document-new",
tooltip_text=("add new "
"playlist"),
has_frame=False,
popover_child=self._entry)

View File

@ -63,6 +63,7 @@ class PlaylistRow(BaseRow):
self._icon = Settable()
self._title = EditableTitle(margin_start=12, margin_end=12)
self._delete = Gtk.Button(icon_name="big-x-symbolic",
tooltip_text="delete playlist",
valign=Gtk.Align.CENTER,
has_frame=False, visible=False)
@ -109,13 +110,17 @@ class LibraryRow(BaseRow):
super().__init__(**kwargs)
self._box = Gtk.Box()
self._overlay = Gtk.Overlay(child=self._box)
self._switch = Gtk.Switch(active=self.enabled, valign=Gtk.Align.CENTER)
self._switch = Gtk.Switch(active=self.enabled, valign=Gtk.Align.CENTER,
tooltip_text="disable library path")
self._title = PlaylistTitle(margin_start=12, margin_end=12)
self._scan = Gtk.Button(icon_name="update", has_frame=False,
tooltip_text="update library path",
valign=Gtk.Align.CENTER)
self._stop = Gtk.Button(icon_name="stop-sign-large", has_frame=False,
tooltip_text="cancel update",
valign=Gtk.Align.CENTER, visible=False)
self._delete = Gtk.Button(icon_name="big-x-symbolic",
tooltip_text="delete library path",
valign=Gtk.Align.CENTER, has_frame=False)
self._progress = Gtk.ProgressBar(valign=Gtk.Align.END, visible=False)
@ -137,6 +142,7 @@ class LibraryRow(BaseRow):
self._delete.connect("clicked", self.__on_button_press, "delete")
self._scan.connect("clicked", self.__on_button_press, "scan")
self._stop.connect("clicked", self.__on_button_press, "stop")
self._switch.connect("notify::active", self.__on_switch_activated)
self._delete.add_css_class("emmental-delete")
self._stop.add_css_class("emmental-stop")
@ -157,6 +163,10 @@ class LibraryRow(BaseRow):
case "scan": self.playlist.scan()
case "stop": self.playlist.stop()
def __on_switch_activated(self, switch: Gtk.Switch, param) -> None:
state = "disable" if self.enabled else "enable"
self._switch.set_tooltip_text(f"{state} library path")
class TreeRow(factory.TreeRow):
"""A factory Row used for displaying individual playlists."""

View File

@ -33,8 +33,12 @@ class TestArtist(tests.util.TestCase):
emmental.buttons.ImageToggle)
self.assertEqual(self.artists.extra_widget.active_icon_name,
"music-artist")
self.assertEqual(self.artists.extra_widget.active_tooltip_text,
"show album artists")
self.assertEqual(self.artists.extra_widget.inactive_icon_name,
"music-artist2")
self.assertEqual(self.artists.extra_widget.inactive_tooltip_text,
"show all artists")
self.assertFalse(self.artists.extra_widget.large_icon)
self.assertFalse(self.artists.extra_widget.get_has_frame())

View File

@ -33,6 +33,8 @@ class TestLibraries(tests.util.TestCase):
self.assertIsInstance(self.libraries.extra_widget, Gtk.Button)
self.assertEqual(self.libraries.extra_widget.get_icon_name(),
"folder-new")
self.assertEqual(self.libraries.extra_widget.get_tooltip_text(),
"add new library path")
self.assertFalse(self.libraries.extra_widget.get_has_frame())
mock_set_initial_file = unittest.mock.Mock()

View File

@ -52,6 +52,8 @@ class TestPlaylists(tests.util.TestCase):
emmental.buttons.PopoverButton)
self.assertEqual(self.playlists.extra_widget.get_icon_name(),
"document-new")
self.assertEqual(self.playlists.extra_widget.get_tooltip_text(),
"add new playlist")
self.assertEqual(self.playlists.extra_widget.popover_child,
self.playlists._entry)
self.assertFalse(self.playlists.extra_widget.get_has_frame())

View File

@ -147,6 +147,8 @@ class TestPlaylistRow(unittest.TestCase):
self.assertEqual(self.row._title.get_next_sibling(), self.row._delete)
self.assertEqual(self.row._delete.get_icon_name(), "big-x-symbolic")
self.assertEqual(self.row._delete.get_tooltip_text(),
"delete playlist")
self.assertEqual(self.row._delete.get_valign(), Gtk.Align.CENTER)
self.assertFalse(self.row._delete.get_has_frame())
self.assertTrue(self.row._delete.has_css_class("emmental-delete"))
@ -209,14 +211,20 @@ class TestLibraryRow(unittest.TestCase):
self.assertTrue(self.row.enabled)
self.assertTrue(self.row._switch.get_active())
self.assertTrue(self.row._title.get_sensitive())
self.assertEqual(self.row._switch.get_tooltip_text(),
"disable library path")
self.row.enabled = False
self.assertFalse(self.row._switch.get_active())
self.assertFalse(self.row._title.get_sensitive())
self.assertEqual(self.row._switch.get_tooltip_text(),
"enable library path")
self.row._switch.set_active(True)
self.assertTrue(self.row.enabled)
self.assertTrue(self.row._title.get_sensitive())
self.assertEqual(self.row._switch.get_tooltip_text(),
"disable library path")
def test_progress(self):
"""Test the progress bar widget and property."""
@ -247,6 +255,8 @@ class TestLibraryRow(unittest.TestCase):
"""Test the scan button."""
self.assertIsInstance(self.row._scan, Gtk.Button)
self.assertEqual(self.row._scan.get_icon_name(), "update")
self.assertEqual(self.row._scan.get_tooltip_text(),
"update library path")
self.assertEqual(self.row._scan.get_valign(), Gtk.Align.CENTER)
self.assertFalse(self.row._scan.get_has_frame())
self.assertEqual(self.row._title.get_next_sibling(), self.row._scan)
@ -262,6 +272,7 @@ class TestLibraryRow(unittest.TestCase):
"""Test the stop button."""
self.assertIsInstance(self.row._stop, Gtk.Button)
self.assertEqual(self.row._stop.get_icon_name(), "stop-sign-large")
self.assertEqual(self.row._stop.get_tooltip_text(), "cancel update")
self.assertEqual(self.row._stop.get_valign(), Gtk.Align.CENTER)
self.assertFalse(self.row._stop.get_has_frame())
self.assertTrue(self.row._stop.has_css_class("emmental-stop"))
@ -278,6 +289,8 @@ class TestLibraryRow(unittest.TestCase):
"""Test the delete button."""
self.assertIsInstance(self.row._delete, Gtk.Button)
self.assertEqual(self.row._delete.get_icon_name(), "big-x-symbolic")
self.assertEqual(self.row._delete.get_tooltip_text(),
"delete library path")
self.assertEqual(self.row._delete.get_valign(), Gtk.Align.CENTER)
self.assertFalse(self.row._delete.get_has_frame())
self.assertTrue(self.row._delete.has_css_class("emmental-delete"))