From 0fed8c03a25a15315fefc5e802940ced43791bdb Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Sun, 9 Dec 2007 13:46:24 -0800 Subject: [PATCH] Updated q/observer to follow coding conventions - Fixed a few small style nitpicks in q/observer so that they are consistent with the rest of ugit Signed-off by: David Aguilar --- py/observer.py | 24 +++++++++++++----------- py/qobserver.py | 58 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/py/observer.py b/py/observer.py index eec3acbd..7048cbd9 100644 --- a/py/observer.py +++ b/py/observer.py @@ -1,19 +1,20 @@ #!/usr/bin/env python from pprint import pformat -class Observer(object): +class Observer (object): '''Observers receive notify(*attributes) messages from their subjects whenever new data arrives. This notify() message signifies that an observer should update its internal state/view.''' - def __init__(self): + def __init__ (self): self.__attribute_adapter = {} self.__subjects = {} self.__debug = False - def set_debug(self, enabled): self.__debug = enabled + def set_debug (self, enabled): + self.__debug = enabled - def notify(self, *attributes): + def notify (self, *attributes): '''Called by the model to notify Observers about changes.''' # We can be notified about multiple attribute changes at once for attr in attributes: @@ -24,7 +25,7 @@ class Observer(object): model = self.__subjects[attr] # The new value for updating - value = model.getattr(attr) + value = model.getattr (attr) # Allow mapping from model to observer attributes if attr in self.__attribute_adapter: @@ -32,26 +33,27 @@ class Observer(object): # Call the concrete observer's notification method notify = model.get_notify() - model.set_notify(False) + model.set_notify (False) - self.subject_changed(model, attr, value) + self.subject_changed (model, attr, value) - model.set_notify(notify) + model.set_notify (notify) if not self.__debug: continue - print "Objserver::notify(" + pformat(attributes) + "):" + print ("Objserver::notify (" + + pformat (attributes) + "):") print model, "\n" - def subject_changed(self, model, attr, value): + def subject_changed (self, model, attr, value): '''This method handles updating of the observer/UI. This must be implemented in each concrete observer class.''' msg = 'Concrete Observers must override subject_changed().' raise NotImplementedError, msg - def add_subject(self, model, model_attr): + def add_subject (self, model, model_attr): self.__subjects[model_attr] = model def add_attribute_adapter (self, model_attr, observer_attr): diff --git a/py/qobserver.py b/py/qobserver.py index 618c3f82..43c1f31a 100644 --- a/py/qobserver.py +++ b/py/qobserver.py @@ -4,11 +4,11 @@ from PyQt4.QtGui import QSpinBox, QPixmap, QTextEdit from observer import Observer -class QObserver(Observer, QObject): +class QObserver (Observer, QObject): - def __init__(self, model, view): - Observer.__init__(self) - QObject.__init__(self) + def __init__ (self, model, view): + Observer.__init__ (self) + QObject.__init__ (self) self.model = model self.view = view @@ -18,12 +18,12 @@ class QObserver(Observer, QObject): self.__model_to_view = {} self.__view_to_model = {} - def SLOT(self, *args): + def SLOT (self, *args): '''Default slot to handle all Qt callbacks. This method delegates to callbacks from add_signals.''' widget = self.sender() - sender = str(widget.objectName()) + sender = str (widget.objectName()) if sender in self.__callbacks: model = self.__callbacks[sender][0] @@ -33,54 +33,56 @@ class QObserver(Observer, QObject): elif sender in self.__view_to_model: model = self.__view_to_model[sender][0] model_attr = self.__view_to_model[sender][1] - if isinstance(widget, QTextEdit): - model.set(model_attr, str(widget.toPlainText())) + if isinstance (widget, QTextEdit): + model.set (model_attr, + str (widget.toPlainText())) else: print "SLOT(): Unknown widget:", sender, widget - def add_signals(self, signal, *objects): + def add_signals (self, signal, *objects): '''Connects object's signal to the QObserver.''' for obj in objects: - QObject.connect(obj, SIGNAL(signal), self.SLOT) - + QObject.connect (obj, SIGNAL (signal), self.SLOT) - def add_callbacks(self, model, callbacks): + def add_callbacks (self, model, callbacks): '''Registers callbacks that are called in response to GUI events.''' for sender, callback in callbacks.iteritems(): self.__callbacks[sender] = ( model, callback ) - def model_to_view(self, model, model_attr, *widget_names): + def model_to_view (self, model, model_attr, *widget_names): '''Binds model attributes to qt widgets (model->view)''' - self.add_subject(model, model_attr) + self.add_subject (model, model_attr) self.__model_to_view[model_attr] = widget_names for widget_name in widget_names: self.__view_to_model[widget_name] = (model, model_attr) - def add_actions(self, model, model_attr, callback): + def add_actions (self, model, model_attr, callback): '''Register view actions that are called in response to view changes. (view->model)''' - self.add_subject(model, model_attr) + self.add_subject (model, model_attr) self.__actions[model_attr] = callback - def subject_changed(self, model, attr, value): + def subject_changed (self, model, attr, value): '''Sends a model attribute to the view (model->view)''' if attr in self.__model_to_view: for widget_name in self.__model_to_view[attr]: - widget = getattr(self.view, widget_name) - if isinstance(widget, QSpinBox): - widget.setValue(value) - elif isinstance(widget, QPixmap): - widget.load(value) - elif isinstance(widget, QTextEdit): - widget.setText(value) + widget = getattr (self.view, widget_name) + if isinstance (widget, QSpinBox): + widget.setValue (value) + elif isinstance (widget, QPixmap): + widget.load (value) + elif isinstance (widget, QTextEdit): + widget.setText (value) else: - print "subject_changed(): Unknown widget:", widget_name, widget + print ('subject_changed(): ' + + 'Unknown widget:', + widget_name, widget) if attr not in self.__actions: return widgets = [] if attr in self.__model_to_view: for widget_name in self.__model_to_view[attr]: - widget = getattr(self.__view, widget_name) - widgets.append(widget) + widget = getattr (self.__view, widget_name) + widgets.append (widget) # Call the model callback w/ the view's widgets as the args - self.__actions[attr](model, *widgets) + self.__actions[attr] (model, *widgets) -- 2.11.4.GIT