frontends (xmlui): added a user_action attribute:
this attribute indicate if the data is a result of a user interaction or an event from the backend (in the later case, the frontend can choose to avoid interrupting the user). Internally (in XMLUI), "FROM_BACKEND" is added to XMLUI.flags if the UI result from a backend event.
This commit is contained in:
parent
a1d5ee167c
commit
0c83d13b7c
2 changed files with 10 additions and 3 deletions
|
|
@ -790,19 +790,21 @@ class QuickApp(object):
|
|||
def actionResultHandler(self, type, id, data, profile):
|
||||
raise NotImplementedError
|
||||
|
||||
def actionManager(self, action_data, callback=None, ui_show_cb=None, profile=C.PROF_KEY_NONE):
|
||||
def actionManager(self, action_data, callback=None, ui_show_cb=None, user_action=True, profile=C.PROF_KEY_NONE):
|
||||
"""Handle backend action
|
||||
|
||||
@param action_data(dict): action dict as sent by launchAction or returned by an UI action
|
||||
@param callback(None, callback): if not None, callback to use on XMLUI answer
|
||||
@param ui_show_cb(None, callback): if not None, method to call to show the XMLUI
|
||||
@param user_action(bool): if True, the action is a result of a user interaction
|
||||
else the action come from backend direclty (i.e. actionNew)
|
||||
"""
|
||||
try:
|
||||
xmlui = action_data.pop('xmlui')
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
ui = self.xmlui.create(self, xml_data=xmlui, callback=callback, profile=profile)
|
||||
ui = self.xmlui.create(self, xml_data=xmlui, flags=("FROM_BACKEND",) if not user_action else None, callback=callback, profile=profile)
|
||||
if ui_show_cb is None:
|
||||
ui.show()
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ class MessageDialog(Dialog):
|
|||
|
||||
|
||||
class NoteDialog(Dialog):
|
||||
"""Dialog with a OK/Cancel type configuration"""
|
||||
"""Short message which doesn't need user confirmation to disappear"""
|
||||
pass
|
||||
|
||||
|
||||
|
|
@ -237,6 +237,7 @@ class XMLUIBase(object):
|
|||
@param title: force the title, or use XMLUI one if None
|
||||
@param flags: list of string which can be:
|
||||
- NO_CANCEL: the UI can't be cancelled
|
||||
- FROM_BACKEND: the UI come from backend (i.e. it's not the direct result of user operation)
|
||||
@param callback(callable, None): if not None, will be used with launchAction:
|
||||
- if None is used, default behaviour will be used (closing the dialog and calling host.actionManager)
|
||||
- if a callback is provided, it will be used instead, so you'll have to manage
|
||||
|
|
@ -253,6 +254,10 @@ class XMLUIBase(object):
|
|||
self.callback = callback or self._defaultCb
|
||||
self.profile = profile
|
||||
|
||||
@property
|
||||
def user_action(self):
|
||||
return "FROM_BACKEND" not in self.flags
|
||||
|
||||
def _defaultCb(self, data, cb_id, profile):
|
||||
# TODO: when XMLUI updates will be managed, the _xmluiClose
|
||||
# must be called only if there is not update
|
||||
|
|
|
|||
Loading…
Reference in a new issue