# HG changeset patch # User Goffi # Date 1552237441 -3600 # Node ID eb9fa72eb62bdb83e1be5f8af7f263da986a3125 # Parent 6901a425d882c1ad32190da2ad351332d80a7672 core: added a "_debug" signal: this signal is a generic debugging signal which can be implemented in frontends to do specific actions, like printing data dumps. diff -r 6901a425d882 -r eb9fa72eb62b sat/bridge/bridge_constructor/bridge_template.ini --- a/sat/bridge/bridge_constructor/bridge_template.ini Sun Mar 10 18:03:41 2019 +0100 +++ b/sat/bridge/bridge_constructor/bridge_template.ini Sun Mar 10 18:04:01 2019 +0100 @@ -183,6 +183,15 @@ doc_param_1=error: error message doc_param_2=%(doc_profile)s +[_debug] +type=signal +category=core +sig_in=sa{ss}s +doc=Debug method, useful for developers +doc_param_0=action: action to do +doc_param_1=params: action parameters +doc_param_2=%(doc_profile)s + ;methods [getReady] diff -r 6901a425d882 -r eb9fa72eb62b sat/bridge/dbus_bridge.py --- a/sat/bridge/dbus_bridge.py Sun Mar 10 18:03:41 2019 +0100 +++ b/sat/bridge/dbus_bridge.py Sun Mar 10 18:04:01 2019 +0100 @@ -129,6 +129,11 @@ pass @dbus.service.signal(const_INT_PREFIX+const_CORE_SUFFIX, + signature='sa{ss}s') + def _debug(self, action, params, profile): + pass + + @dbus.service.signal(const_INT_PREFIX+const_CORE_SUFFIX, signature='a{ss}sis') def actionNew(self, action_data, id, security_limit, profile): pass @@ -681,6 +686,9 @@ self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) + def _debug(self, action, params, profile): + self.dbus_bridge._debug(action, params, profile) + def actionNew(self, action_data, id, security_limit, profile): self.dbus_bridge.actionNew(action_data, id, security_limit, profile) diff -r 6901a425d882 -r eb9fa72eb62b sat/bridge/pb.py --- a/sat/bridge/pb.py Sun Mar 10 18:03:41 2019 +0100 +++ b/sat/bridge/pb.py Sun Mar 10 18:04:01 2019 +0100 @@ -135,6 +135,9 @@ """ self.root._bridgeReactivateSignals() + def _debug(self, action, params, profile): + self.sendSignal("_debug", action, params, profile) + def actionNew(self, action_data, id, security_limit, profile): self.sendSignal("actionNew", action_data, id, security_limit, profile) diff -r 6901a425d882 -r eb9fa72eb62b sat_frontends/quick_frontend/quick_app.py --- a/sat_frontends/quick_frontend/quick_app.py Sun Mar 10 18:03:41 2019 +0100 +++ b/sat_frontends/quick_frontend/quick_app.py Sun Mar 10 18:04:01 2019 +0100 @@ -383,6 +383,8 @@ self.registerSignal("chatStateReceived", iface="plugin") self.registerSignal("messageState", iface="plugin") self.registerSignal("psEvent", iface="plugin") + # useful for debugging + self.registerSignal("_debug", iface="core") # FIXME: do it dynamically quick_games.Tarot.registerSignals(self) @@ -1099,6 +1101,14 @@ answer_data=(entity, profile), ) + def _debugHandler(self, action, parameters, profile): + if action == u"widgets_dump": + from pprint import pformat + log.info(u"Widgets dump:\n{data}".format(data=pformat(self.widgets._widgets))) + else: + log.warning(u"Unknown debug action: {action}".format(action=action)) + + def showDialog(self, message, title, type="info", answer_cb=None, answer_data=None): """Show a dialog to user