summaryrefslogtreecommitdiff
path: root/ttystatus/widget.py
diff options
context:
space:
mode:
Diffstat (limited to 'ttystatus/widget.py')
-rw-r--r--ttystatus/widget.py45
1 files changed, 12 insertions, 33 deletions
diff --git a/ttystatus/widget.py b/ttystatus/widget.py
index 0f03365..17c2df4 100644
--- a/ttystatus/widget.py
+++ b/ttystatus/widget.py
@@ -18,36 +18,20 @@ class Widget(object):
'''Base class for ttystatus widgets.
- Widgets are responsible for formatting part of the output. They
- get a value or values either directly from the user, or from the
- master TerminalStatus widget. They return the formatted string
- via __str__.
+ Widgets display stuff on screen. The value may depend on data provided
+ by the user (at creation time), or may be computed from one or more
+ values in the TerminalStatus object to which the widget object belongs.
- A widget's value may be derived from values stored in the TerminalStatus
- widget (called master). Each such value has a key. Computing a widget's
- value is a two-step process: when the values associated with keys
- are updated, the widget's update() method is called to notify it of
- this. update() may compute intermediate values, such as maintain a
- counter of the number of changes. It should avoid costly operations
- that are only needed when the widget's formatted value is needed.
- Those should go into the format() method instead. Thus, update() would
- update a counter, format() would create a string representing the
- counter.
+ There are two steps:
- This is necessary because actual on-screen updates only happen
- every so often, not every time a value in the master changes, and
- often the string formatting part is expensive.
-
- Widgets must have an attribute 'interesting_keys', listing the
- keys it is interested in.
+ * the widget `update` method is called by TerminalStatus whenever
+ any of the values change
+ * the widget `__str__` method is called by TerminalStatus when it is
+ time to display things
'''
-
+
def __str__(self):
- '''Return current value to be displayed for this widget.'''
- return self.format()
-
- def format(self):
'''Format the current value.
This will be called only when the value actually needs to be
@@ -57,11 +41,6 @@ class Widget(object):
return ''
- def update(self, master, width):
- '''Update displayed value for widget, from values in master.
-
- 'width' gives the width for which the widget should aim to fit.
- It is OK if it does not: for some widgets there is no way to
- adjust to a smaller size.
-
- '''
+ def update(self, terminal_status):
+ '''React to changes in values stored in a TerminalStatus.'''
+