changeset 2022:88c41a195728

primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
author Goffi <goffi@goffi.org>
date Sun, 24 Jul 2016 19:00:50 +0200
parents 6c51e8f17c92
children 224c8b0886bc
files frontends/src/primitivus/chat.py frontends/src/primitivus/primitivus frontends/src/quick_frontend/quick_chat.py
diffstat 3 files changed, 30 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/src/primitivus/chat.py	Sun Jul 24 18:59:02 2016 +0200
+++ b/frontends/src/primitivus/chat.py	Sun Jul 24 19:00:50 2016 +0200
@@ -603,5 +603,18 @@
             self.title_dynamic = C.CHAT_STATE_ICON[state]
             self.host.redraw()  # FIXME: should not be necessary
 
+    def _onSubjectDialogCb(self, button, dialog):
+        self.changeSubject(dialog.text)
+        self.host.removePopUp(dialog)
+
+    def onSubjectDialog(self, new_subject=None):
+        dialog = sat_widgets.InputDialog(
+            _(u'Change title'),
+            _(u'Enter the new title'),
+            default_txt=new_subject if new_subject is not None else self.subject)
+        dialog.setCallback('ok', self._onSubjectDialogCb, dialog)
+        dialog.setCallback('cancel', lambda dummy: self.host.removePopUp(dialog))
+        self.host.showPopUp(dialog)
+
 quick_widgets.register(quick_chat.QuickChat, Chat)
 quick_widgets.register(quick_games.Tarot, game_tarot.TarotGame)
--- a/frontends/src/primitivus/primitivus	Sun Jul 24 18:59:02 2016 +0200
+++ b/frontends/src/primitivus/primitivus	Sun Jul 24 19:00:50 2016 +0200
@@ -138,6 +138,14 @@
             # FIXME: Q&D way, need to be more generic
             if isinstance(widget, quick_chat.QuickChat):
                 widget.setFilter(args)
+        elif command in ('topic', 'suject', 'title'):
+            try:
+                new_title = args[0].strip()
+            except IndexError:
+                new_title = None
+            widget = self.host.selected_widget
+            if isinstance(widget, quick_chat.QuickChat) and widget.type == C.CHAT_GROUP:
+                widget.onSubjectDialog(new_title)
         else:
             return
         self.set_edit_text('')
--- a/frontends/src/quick_frontend/quick_chat.py	Sun Jul 24 18:59:02 2016 +0200
+++ b/frontends/src/quick_frontend/quick_chat.py	Sun Jul 24 19:00:50 2016 +0200
@@ -423,9 +423,17 @@
 
     def setSubject(self, subject):
         """Set title for a group chat"""
-        self.subject = subject
         if self.type != C.CHAT_GROUP:
             raise exceptions.InternalError("trying to set subject for a non group chat window")
+        self.subject = subject
+
+    def changeSubject(self, new_subject):
+        """Change the subject of the room
+
+        This change the subject on the room itself (i.e. via XMPP),
+        while setSubject change the subject of this widget
+        """
+        self.host.bridge.mucSubject(unicode(self.target), new_subject, self.profile)
 
     def addGamePanel(self, widget):
         """Insert a game panel to this Chat dialog.