From 261d5296d42fc14881026f165ebdf50f25df621a Mon Sep 17 00:00:00 2001 From: souliane Date: Sat, 23 Aug 2014 20:11:37 +0200 Subject: [PATCH] primitivus: change behavior of commands ":presence" and ":status" : - ":presence " and ":status " open a dialog (like if you type it without the trailing space) - you need to type ":presence online" to directly reset your presence (was done with ":presence " before) - there's no more way to directly set an empty status (you now do it via the dialog) --- frontends/src/constants.py | 4 ++-- frontends/src/primitivus/primitivus | 20 +++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/frontends/src/constants.py b/frontends/src/constants.py index a391e7ed..7f10831b 100644 --- a/frontends/src/constants.py +++ b/frontends/src/constants.py @@ -40,13 +40,13 @@ def getPresence(): ("chat", _("Free for chat")), ("away", _("Away from keyboard")), ("dnd", _("Do not disturb")), - ("xa", _("Away"))]) + ("xa", _("Extended away"))]) except TypeError: presence = {"": _("Online"), "chat": _("Free for chat"), "away": _("Away from keyboard"), "dnd": _("Do not disturb"), - "xa": _("Away") + "xa": _("Extended away") } return presence diff --git a/frontends/src/primitivus/primitivus b/frontends/src/primitivus/primitivus index 655ff415..9ad0e212 100755 --- a/frontends/src/primitivus/primitivus +++ b/frontends/src/primitivus/primitivus @@ -112,7 +112,8 @@ class EditBar(sat_widgets.ModalEdit): def commandHandler(self): #TODO: separate class with auto documentation (with introspection) # and completion method - command = self.get_edit_text() + tokens = self.get_edit_text().split(' ') + command, args = tokens[0], tokens[1:] if command == 'quit': self.app.onExit() raise urwid.ExitMainLoop() @@ -120,13 +121,18 @@ class EditBar(sat_widgets.ModalEdit): wid = sat_widgets.GenericList(logging.memoryGet()) self.app.addWindow(wid) elif command == 'presence': - self.app.status_bar.onPresenceClick() - elif command in ['presence %s' % show for show in commonConst.PRESENCE.keys()]: - self.app.status_bar.onChange(user_data=sat_widgets.ClickableText(commonConst.PRESENCE[command[9:]])) + values = [value for value in commonConst.PRESENCE.keys()] + values = [value if value else 'online' for value in values] # the empty value actually means 'online' + if args and args[0] in values: + presence = '' if args[0] == 'online' else args[0] + self.app.status_bar.onChange(user_data=sat_widgets.ClickableText(commonConst.PRESENCE[presence])) + else: + self.app.status_bar.onPresenceClick() elif command == 'status': - self.app.status_bar.onStatusClick() - elif command.startswith('status '): - self.app.status_bar.onChange(user_data=sat_widgets.AdvancedEdit(command[7:])) + if args: + self.app.status_bar.onChange(user_data=sat_widgets.AdvancedEdit(args[0])) + else: + self.app.status_bar.onStatusClick() else: return self.set_edit_text('')