summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-08-31 16:16:04 +0100
committerLars Wirzenius <liw@liw.fi>2011-08-31 16:16:04 +0100
commit266f4c381e1327d1ec8904f30f4b8e2ec6fded04 (patch)
treecaf40473249689dc2902f7a6874b17a0ad3719d4
parent1ca3ac3c3b69cac571a7d7a93bf51aea83eb273a (diff)
downloadpython-ttystatus-266f4c381e1327d1ec8904f30f4b8e2ec6fded04.tar.gz
Add ttystatus.TerminalStatus.format method.
-rw-r--r--ttystatus/status.py5
-rw-r--r--ttystatus/status_tests.py6
2 files changed, 11 insertions, 0 deletions
diff --git a/ttystatus/status.py b/ttystatus/status.py
index b5d743a..722d69f 100644
--- a/ttystatus/status.py
+++ b/ttystatus/status.py
@@ -44,6 +44,11 @@ class TerminalStatus(object):
else:
for key in widget.interesting_keys:
self._interests[key] = self._interests.get(key, []) + [widget]
+
+ def format(self, format_string):
+ '''Add new widgets based on format string.'''
+ for widget in ttystatus.fmt.parse(format_string):
+ self.add(widget)
def clear(self):
'''Remove all widgets.'''
diff --git a/ttystatus/status_tests.py b/ttystatus/status_tests.py
index 9e6d0ac..3583028 100644
--- a/ttystatus/status_tests.py
+++ b/ttystatus/status_tests.py
@@ -78,6 +78,12 @@ class TerminalStatusTests(unittest.TestCase):
w = W()
self.ts.add(w)
self.assert_(w in self.ts._wildcards)
+
+ def test_adds_widgets_from_format_string(self):
+ self.ts.format('hello, %String(name)')
+ self.assertEqual(len(self.ts._widgets), 2)
+ self.assertEqual(type(self.ts._widgets[0]), ttystatus.Literal)
+ self.assertEqual(type(self.ts._widgets[1]), ttystatus.String)
def test_removes_all_widgets(self):
self.ts.add(ttystatus.Literal('foo'))