diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-06-06 14:51:28 +1200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-06-06 14:51:28 +1200 |
commit | af9819a9c30af45ce0590c0d3c44c43cad7738a1 (patch) | |
tree | eefd824f3e1a01a973484afc51ceaf00bd9d7b69 | |
parent | 50cc4980d6e826862c58f941f83809ec4217e996 (diff) | |
download | python-ttystatus-af9819a9c30af45ce0590c0d3c44c43cad7738a1.tar.gz |
Make use of Messager in TerminalStatus.
-rw-r--r-- | ttystatus/messager.py | 4 | ||||
-rw-r--r-- | ttystatus/status.py | 13 | ||||
-rw-r--r-- | ttystatus/status_tests.py | 24 |
3 files changed, 37 insertions, 4 deletions
diff --git a/ttystatus/messager.py b/ttystatus/messager.py index af5209d..05d2a09 100644 --- a/ttystatus/messager.py +++ b/ttystatus/messager.py @@ -26,11 +26,11 @@ class Messager(object): '''Write messages to the terminal.''' - def __init__(self, output=None, period=1.0): + def __init__(self, output=None, period=None): self.output = output or sys.stderr + self._period = 1.0 if period is None else period self._last_msg = '' # What did we write last? self._last_time = 0 # When did we write last? - self._period = period # How long between updates? self._cached_msg = '' # Last message from user, to write() method. self.width = self._get_terminal_width() # Width of terminal signal.signal(signal.SIGWINCH, self._sigwinch_handler) diff --git a/ttystatus/status.py b/ttystatus/status.py index 6aa28a4..3584499 100644 --- a/ttystatus/status.py +++ b/ttystatus/status.py @@ -27,7 +27,8 @@ class TerminalStatus(object): ''' - def __init__(self): + def __init__(self, output=None, period=None, messager=None): + self._m = messager or ttystatus.Messager(output=output, period=period) self.clear() def add(self, widget): @@ -38,6 +39,7 @@ class TerminalStatus(object): '''Remove all widgets.''' self._widgets = [] self._values = dict() + self._m.clear() def __getitem__(self, key): '''Return value for key, or the empty string.''' @@ -48,3 +50,12 @@ class TerminalStatus(object): self._values[key] = value for w in self._widgets: w.update(self, 999) + self._m.write(''.join(str(w) for w in self._widgets)) + + def notify(self, msg): + '''Show a message.''' + self._m.notify(msg) + + def finish(self): + '''Finish status display.''' + self._m.finish() diff --git a/ttystatus/status_tests.py b/ttystatus/status_tests.py index 4adfeec..5640680 100644 --- a/ttystatus/status_tests.py +++ b/ttystatus/status_tests.py @@ -19,10 +19,25 @@ import unittest import ttystatus +class DummyMessager(object): + + def clear(self): + pass + + def write(self, string): + pass + + def notify(self, string): + pass + + def finish(self): + pass + + class TerminalStatusTests(unittest.TestCase): def setUp(self): - self.ts = ttystatus.TerminalStatus() + self.ts = ttystatus.TerminalStatus(messager=DummyMessager()) def test_has_no_widgets(self): self.assertEqual(self.ts._widgets, []) @@ -50,3 +65,10 @@ class TerminalStatusTests(unittest.TestCase): self.assertEqual(str(w), '') self.ts['foo'] = 'bar' self.assertEqual(str(w), 'bar') + + def test_has_notify_method(self): + self.assertEqual(self.ts.notify('foo'), None) + + def test_has_finish_method(self): + self.assertEqual(self.ts.finish(), None) + |