scanner: Create a custom ProgressBar widget
For use tracking the progress we make through the TaskQueue Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
a102087ece
commit
94b53aff5f
|
@ -2,3 +2,4 @@
|
|||
from . import metadata
|
||||
from . import queue
|
||||
from . import task
|
||||
from . import widgets
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
import unittest
|
||||
from gi.repository import Gtk
|
||||
from . import queue
|
||||
from . import task
|
||||
from . import widgets
|
||||
|
||||
class FakeTask(task.Task):
|
||||
def run_task(self): return None
|
||||
|
||||
class TestScannerProgressBar(unittest.TestCase):
|
||||
def test_progress_bar(self):
|
||||
q = queue.TaskQueue()
|
||||
pb = widgets.ProgressBar(q)
|
||||
|
||||
self.assertIsInstance(pb, Gtk.ProgressBar)
|
||||
self.assertTrue( pb.get_hexpand())
|
||||
self.assertFalse(pb.get_visible())
|
||||
self.assertEqual(pb.get_valign(), Gtk.Align.CENTER)
|
||||
self.assertEqual(pb.queue, q)
|
||||
|
||||
for i in range(3): q.push(FakeTask())
|
||||
self.assertTrue(pb.get_visible())
|
||||
|
||||
for i in [ 1, 2, 0 ]:
|
||||
q.run()
|
||||
self.assertEqual(pb.get_fraction(), i/3)
|
||||
self.assertFalse(pb.get_visible())
|
|
@ -0,0 +1,24 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from gi.repository import Gtk
|
||||
|
||||
class ProgressBar(Gtk.ProgressBar):
|
||||
def __init__(self, queue):
|
||||
Gtk.ProgressBar.__init__(self)
|
||||
|
||||
self.queue = queue
|
||||
self.queue.connect("task-pushed", self.on_task_pushed)
|
||||
self.queue.connect("run-task", self.on_run_task)
|
||||
self.queue.connect("tasks-finished", self.on_tasks_finished)
|
||||
|
||||
self.set_valign(Gtk.Align.CENTER)
|
||||
self.set_hexpand(True)
|
||||
self.set_visible(False)
|
||||
|
||||
def on_task_pushed(self, queue, task):
|
||||
self.set_visible(True)
|
||||
|
||||
def on_run_task(self, queue, task):
|
||||
self.set_fraction(queue.progress)
|
||||
|
||||
def on_tasks_finished(self, queue):
|
||||
self.set_visible(False)
|
Loading…
Reference in New Issue