diff --git a/sat_frontends/primitivus/chat.py b/sat_frontends/primitivus/chat.py index efab6d75..3ca11ce3 100644 --- a/sat_frontends/primitivus/chat.py +++ b/sat_frontends/primitivus/chat.py @@ -17,12 +17,12 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from sat.core.i18n import _ -from sat.core import log as logging - -log = logging.getLogger(__name__) +from functools import total_ordering +import bisect import urwid from urwid_satext import sat_widgets +from sat.core.i18n import _ +from sat.core import log as logging from sat_frontends.quick_frontend import quick_widgets from sat_frontends.quick_frontend import quick_chat from sat_frontends.quick_frontend import quick_games @@ -31,8 +31,9 @@ from sat_frontends.primitivus.constants import Const as C from sat_frontends.primitivus.keys import action_key_map as a_key from sat_frontends.primitivus.widget import PrimitivusWidget from sat_frontends.primitivus.contact_list import ContactList -from functools import total_ordering -import bisect + + +log = logging.getLogger(__name__) OCCUPANTS_FOOTER = _("{} occupants") diff --git a/sat_frontends/quick_frontend/quick_app.py b/sat_frontends/quick_frontend/quick_app.py index e503e884..8fb2d635 100644 --- a/sat_frontends/quick_frontend/quick_app.py +++ b/sat_frontends/quick_frontend/quick_app.py @@ -301,8 +301,8 @@ class QuickApp(object): else: self.options = None - # widget currently selected (must be filled by frontend) - self.selected_widget = None + # see selected_widget setter and getter + self._selected_widget = None # listeners are callable watching events self._listeners = {} # key: listener type ("avatar", "selected", etc), @@ -436,6 +436,28 @@ class QuickApp(object): if isinstance(w, quick_widgets.QuickWidget): return w + @property + def selected_widget(self): + """widget currently selected + + This must be set by frontend using setter. + """ + return self._selected_widget + + @selected_widget.setter + def selected_widget(self, wid): + """Set the currently selected widget + + Must be set by frontend + """ + self._selected_widget = wid + try: + onSelected = wid.onSelected + except AttributeError: + pass + else: + onSelected() + # backend state management @property diff --git a/sat_frontends/quick_frontend/quick_widgets.py b/sat_frontends/quick_frontend/quick_widgets.py index abf4ce33..bec95073 100644 --- a/sat_frontends/quick_frontend/quick_widgets.py +++ b/sat_frontends/quick_frontend/quick_widgets.py @@ -462,3 +462,7 @@ class QuickWidget(object): all other value continue deletion """ return True + + def onSelected(self): + """Called when host.selected_widget is this instance""" + pass