scanner: Create a custom RemoveButton widget

For removing a specific library from the database.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-08-26 13:43:40 -04:00
parent 5e08088462
commit 8f837b40c1
2 changed files with 38 additions and 5 deletions

View File

@ -36,6 +36,7 @@ class TestScannerUpdateButton(unittest.TestCase):
ub = widgets.UpdateButton(lib, q)
self.assertIsInstance(ub, Gtk.Button)
self.assertIsInstance(ub, widgets.ScannerButton)
self.assertEqual(ub.get_icon_name(), "view-refresh")
self.assertEqual(ub.library, lib)
self.assertEqual(ub.queue, q)
@ -46,3 +47,22 @@ class TestScannerUpdateButton(unittest.TestCase):
self.assertIsInstance(q.tasks[0], task.CheckSchedulerTask)
self.assertIsInstance(q.tasks[1], task.DirectoryTask)
q.tasks_finished()
class TestScannerRemoveButton(unittest.TestCase):
def test_remove_button(self):
lib = db.library.Table.find("/a/b/c")
q = queue.TaskQueue()
rb = widgets.RemoveButton(lib, q)
self.assertIsInstance(rb, Gtk.Button)
self.assertIsInstance(rb, widgets.ScannerButton)
self.assertEqual(rb.get_icon_name(), "list-remove")
self.assertEqual(rb.library, lib)
self.assertEqual(rb.queue, q)
self.assertTrue(rb.get_hexpand())
rb.emit("clicked")
self.assertEqual(len(q.tasks), 1)
self.assertIsInstance(q.tasks[0], task.RemoveLibrarySchedulerTask)
q.tasks_finished()

View File

@ -25,15 +25,28 @@ class ProgressBar(Gtk.ProgressBar):
self.set_visible(False)
class UpdateButton(Gtk.Button):
def __init__(self, library, queue):
class ScannerButton(Gtk.Button):
def __init__(self, queue, icon_name):
Gtk.Button.__init__(self)
self.library = library
self.set_icon_name(icon_name)
self.set_hexpand(True)
self.queue = queue
self.set_icon_name("view-refresh")
self.set_hexpand(True)
class UpdateButton(ScannerButton):
def __init__(self, library, queue):
ScannerButton.__init__(self, queue, "view-refresh")
self.library = library
def do_clicked(self):
self.queue.push(task.CheckSchedulerTask(self.library))
self.queue.push(task.DirectoryTask(self.library, self.library.path))
class RemoveButton(ScannerButton):
def __init__(self, library, queue):
ScannerButton.__init__(self, queue, "list-remove")
self.library = library
def do_clicked(self):
self.queue.push(task.RemoveLibrarySchedulerTask(self.library))