From c352503b1910d82642812837ebfd90023910459a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Br=C3=B6tzmann?= <mailtrash@posteo.de> Date: Tue, 19 Nov 2019 09:00:24 +0100 Subject: [PATCH] GroupchatControl: Add rename group chat page --- gajim/data/gui/groupchat_control.ui | 107 ++++++++++++++++++++++++++++ gajim/groupchat_control.py | 15 ++++ gajim/gui_menu_builder.py | 1 + 3 files changed, 123 insertions(+) diff --git a/gajim/data/gui/groupchat_control.ui b/gajim/data/gui/groupchat_control.ui index 1d83b7e3f7..5a60a16929 100644 --- a/gajim/data/gui/groupchat_control.ui +++ b/gajim/data/gui/groupchat_control.ui @@ -1584,6 +1584,113 @@ <property name="position">11</property> </packing> </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">center</property> + <property name="valign">center</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="row_spacing">12</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Enter a new name for this group chat</property> + <property name="xalign">0</property> + <style> + <class name="bold16"/> + </style> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="name_entry"> + <property name="width_request">200</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="activates_default">True</property> + <property name="caps_lock_warning">False</property> + <property name="secondary_icon_name">face-smile-symbolic</property> + <property name="secondary_icon_tooltip_text" translatable="yes">Insert Emoji</property> + <property name="secondary_icon_tooltip_markup" translatable="yes">Insert Emoji</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkButton"> + <property name="label" translatable="yes">_Cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="_on_page_cancel_clicked" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="rename_button"> + <property name="label" translatable="yes">_Rename</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">True</property> + <property name="halign">end</property> + <property name="valign">start</property> + <property name="use_underline">True</property> + <signal name="clicked" handler="_on_rename_clicked" swapped="no"/> + <style> + <class name="suggested-action"/> + </style> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="name">rename</property> + <property name="position">12</property> + </packing> + </child> </object> <packing> <property name="expand">True</property> diff --git a/gajim/groupchat_control.py b/gajim/groupchat_control.py index 7bfb45c5b7..6995434409 100644 --- a/gajim/groupchat_control.py +++ b/gajim/groupchat_control.py @@ -256,6 +256,7 @@ def disco_info(self): def add_actions(self): super().add_actions() actions = [ + ('rename-groupchat-', None, self._on_rename_groupchat), ('change-subject-', None, self._on_change_subject), ('change-nickname-', None, self._on_change_nick), ('disconnect-', None, self._on_disconnect), @@ -1991,6 +1992,20 @@ def _on_nickname_change_clicked(self, _button): self.room_jid, new_nick) self._show_page('groupchat') + def _on_rename_groupchat(self, _action, _param): + if self._get_current_page() != 'groupchat': + return + self.xml.name_entry.set_text(self.room_name) + self.xml.name_entry.grab_focus() + self.xml.rename_button.grab_default() + self._show_page('rename') + + def _on_rename_clicked(self, _button): + new_name = self.xml.name_entry.get_text() + app.connections[self.account].get_module('Bookmarks').modify( + self.room_jid, name=new_name) + self._show_page('groupchat') + def _on_change_subject(self, _action, _param): if self._get_current_page() != 'groupchat': return diff --git a/gajim/gui_menu_builder.py b/gajim/gui_menu_builder.py index 57873dfdcc..3f7cfa95fd 100644 --- a/gajim/gui_menu_builder.py +++ b/gajim/gui_menu_builder.py @@ -574,6 +574,7 @@ def get_groupchat_menu(control_id, account, jid): groupchat_menu = [ ('win.information-', _('Information')), (_('Manage Group Chat'), [ + ('win.rename-groupchat-', _('Rename Group Chat')), ('win.change-subject-', _('Change Subject')), ('win.configure-', _('Configure Group Chat')), ('win.upload-avatar-', _('Upload Avatar…')), -- GitLab