primitivus (chat): added :topic (and :subject and :title aliases) to change subject with a dialog (/!\ urwid SàText need to be updated)
This commit is contained in:
parent
b148722b4d
commit
c0e4960c55
3 changed files with 30 additions and 1 deletions
|
|
@ -603,5 +603,18 @@ class Chat(PrimitivusWidget, quick_chat.QuickChat):
|
|||
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)
|
||||
|
|
|
|||
|
|
@ -138,6 +138,14 @@ class EditBar(sat_widgets.ModalEdit):
|
|||
# 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('')
|
||||
|
|
|
|||
|
|
@ -423,9 +423,17 @@ class QuickChat(quick_widgets.QuickWidget):
|
|||
|
||||
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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue