=== modified file 'mandos-monitor' --- mandos-monitor 2012-05-07 19:13:15 +0000 +++ mandos-monitor 2012-05-07 20:46:51 +0000 @@ -86,23 +86,26 @@ properties and calls a hook function when any of them are changed. """ - def __init__(self, proxy_object=None, *args, **kwargs): + def __init__(self, proxy_object=None, properties=None, **kwargs): self.proxy = proxy_object # Mandos Client proxy object - - self.properties = dict() + self.properties = dict() if properties is None else properties self.property_changed_match = ( self.proxy.connect_to_signal("PropertyChanged", - self.property_changed, + self._property_changed, client_interface, byte_arrays=True)) - self.properties.update( - self.proxy.GetAll(client_interface, - dbus_interface = dbus.PROPERTIES_IFACE)) - - #XXX This breaks good super behaviour -# super(MandosClientPropertyCache, self).__init__( -# *args, **kwargs) + if properties is None: + self.properties.update( + self.proxy.GetAll(client_interface, + dbus_interface + = dbus.PROPERTIES_IFACE)) + + super(MandosClientPropertyCache, self).__init__(**kwargs) + + def _property_changed(self, property, value): + """Helper which takes positional arguments""" + return self.property_changed(property=property, value=value) def property_changed(self, property=None, value=None): """This is called whenever we get a PropertyChanged signal @@ -111,10 +114,8 @@ # Update properties dict with new value self.properties[property] = value - def delete(self, *args, **kwargs): + def delete(self): self.property_changed_match.remove() - super(MandosClientPropertyCache, self).__init__( - *args, **kwargs) class MandosClientWidget(urwid.FlowWidget, MandosClientPropertyCache): @@ -122,7 +123,7 @@ """ def __init__(self, server_proxy_object=None, update_hook=None, - delete_hook=None, logger=None, *args, **kwargs): + delete_hook=None, logger=None, **kwargs): # Called on update self.update_hook = update_hook # Called on delete @@ -139,9 +140,7 @@ self._text_widget = urwid.Text("") # The widget shown when we have focus self._focus_text_widget = urwid.Text("") - super(MandosClientWidget, self).__init__( - update_hook=update_hook, delete_hook=delete_hook, - *args, **kwargs) + super(MandosClientWidget, self).__init__(**kwargs) self.update() self.opened = False @@ -344,7 +343,7 @@ self.update() return True # Keep calling this - def delete(self, *args, **kwargs): + def delete(self, **kwargs): if self._update_timer_callback_tag is not None: gobject.source_remove(self._update_timer_callback_tag) self._update_timer_callback_tag = None @@ -353,7 +352,7 @@ self.match_objects = () if self.delete_hook is not None: self.delete_hook(self) - return super(MandosClientWidget, self).delete(*args, **kwargs) + return super(MandosClientWidget, self).delete(**kwargs) def render(self, maxcolrow, focus=False): """Render differently if we have focus. @@ -401,14 +400,13 @@ else: return key - def property_changed(self, property=None, value=None, - *args, **kwargs): + def property_changed(self, property=None, **kwargs): """Call self.update() if old value is not new value. This overrides the method from MandosClientPropertyCache""" property_name = unicode(property) old_value = self.properties.get(property_name) super(MandosClientWidget, self).property_changed( - property=property, value=value, *args, **kwargs) + property=property, **kwargs) if self.properties.get(property_name) != old_value: self.update() @@ -418,8 +416,8 @@ "down" key presses, thus not allowing any containing widgets to use them as an excuse to shift focus away from this widget. """ - def keypress(self, maxcolrow, key): - ret = super(ConstrainedListBox, self).keypress(maxcolrow, key) + def keypress(self, *args, **kwargs): + ret = super(ConstrainedListBox, self).keypress(*args, **kwargs) if ret in ("up", "down"): return return ret @@ -640,7 +638,7 @@ logger =self.log_message), path=path) - + self.refresh() self._input_callback_tag = (gobject.io_add_watch (sys.stdin.fileno(),