summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-06-06 14:51:28 +1200
committerLars Wirzenius <liw@liw.fi>2010-06-06 14:51:28 +1200
commitaf9819a9c30af45ce0590c0d3c44c43cad7738a1 (patch)
treeeefd824f3e1a01a973484afc51ceaf00bd9d7b69
parent50cc4980d6e826862c58f941f83809ec4217e996 (diff)
downloadpython-ttystatus-af9819a9c30af45ce0590c0d3c44c43cad7738a1.tar.gz
Make use of Messager in TerminalStatus.
-rw-r--r--ttystatus/messager.py4
-rw-r--r--ttystatus/status.py13
-rw-r--r--ttystatus/status_tests.py24
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)
+