diff options
Diffstat (limited to 'ttystatus/widget.py')
-rw-r--r-- | ttystatus/widget.py | 45 |
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.''' + |