Philipp Hörist pushed to branch master at gajim / gajim

Commits:
c3369f03 by Yann Leboulanger at 2017-12-22T12:21:57+01:00
ability to call ad hoc commands on groupchats and groupchats occupants.
Fixes #8819

- - - - -
bf3aac28 by Philipp Hörist at 2017-12-23T22:31:45+01:00
Merge branch 'execute_command' into 'master'

Add ad-hoc commands for Groupchats

Closes #8819

See merge request gajim/gajim!179
- - - - -


4 changed files:

- gajim/data/gui/gc_occupants_menu.ui
- gajim/groupchat_control.py
- gajim/gui_menu_builder.py
- gajim/roster_window.py


Changes:

=====================================
gajim/data/gui/gc_occupants_menu.ui
=====================================
--- a/gajim/data/gui/gc_occupants_menu.ui
+++ b/gajim/data/gui/gc_occupants_menu.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.20.0 -->
 <interface>
   <requires lib="gtk+" version="3.12"/>
   <object class="GtkAccelGroup" id="accelgroup1"/>
@@ -126,6 +126,14 @@
       </object>
     </child>
     <child>
+      <object class="GtkMenuItem" id="execute_command_menuitem">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes">_Execute command</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
       <object class="GtkMenuItem" id="block_menuitem">
         <property name="visible">True</property>
         <property name="can_focus">False</property>


=====================================
gajim/groupchat_control.py
=====================================
--- a/gajim/groupchat_control.py
+++ b/gajim/groupchat_control.py
@@ -46,6 +46,7 @@ from gajim import config
 from gajim import vcard
 from gajim import cell_renderer_image
 from gajim import dataforms_widget
+from gajim import adhoc_commands
 from gajim.common.const import AvatarSize
 from gajim.common.caps_cache import muc_caps_cache
 import nbxmpp
@@ -514,6 +515,7 @@ class GroupchatControl(ChatControlBase):
             ('configure-', self._on_configure_room),
             ('bookmark-', self._on_bookmark_room),
             ('request-voice-', self._on_request_voice),
+            ('execute-command-', self._on_execute_command),
             ]
 
         for action in actions:
@@ -582,6 +584,10 @@ class GroupchatControl(ChatControlBase):
         win.lookup_action('change-nick-' + self.control_id).set_enabled(
             online)
 
+        # Execute command
+        win.lookup_action('execute-command-' + self.control_id).set_enabled(
+            online)
+
     # Actions
 
     def _on_change_subject(self, action, param):
@@ -679,6 +685,12 @@ class GroupchatControl(ChatControlBase):
         app.config.set_per('rooms', self.contact.jid,
                            'notify_on_all_messages', param.get_boolean())
 
+    def _on_execute_command(self, action, param):
+        """
+        Execute AdHoc commands on the current room
+        """
+        adhoc_commands.CommandWindow(self.account, self.room_jid)
+
     def show_roster(self):
         new_state = not self.hpaned.get_child2().is_visible()
         image = self.hide_roster_button.get_image()
@@ -2560,6 +2572,10 @@ class GroupchatControl(ChatControlBase):
             id_ = item.connect('activate', self.on_add_to_roster, jid)
             self.handlers[id_] = item
 
+        item = xml.get_object('execute_command_menuitem')
+        id_ = item.connect('activate', self._on_execute_command_occupant, nick)
+        self.handlers[id_] = item
+
         item = xml.get_object('block_menuitem')
         item2 = xml.get_object('unblock_menuitem')
         if not app.connections[self.account].privacy_rules_supported:
@@ -2608,6 +2624,10 @@ class GroupchatControl(ChatControlBase):
 
         return ctrl
 
+    def _on_execute_command_occupant(self, widget, nick):
+        jid = self.room_jid + '/' + nick
+        adhoc_commands.CommandWindow(self.account, jid)
+
     def on_row_activated(self, widget, path):
         """
         When an iter is activated (dubblick or single click if gnome is set 
this


=====================================
gajim/gui_menu_builder.py
=====================================
--- a/gajim/gui_menu_builder.py
+++ b/gajim/gui_menu_builder.py
@@ -642,6 +642,7 @@ def get_groupchat_menu(control_id):
         ('win.request-voice-', _('Request Voice')),
         ('win.notify-on-message-', _('Notify on all messages')),
         ('win.minimize-', _('Minimize on close')),
+        ('win.execute-command-', _('Execute command')),
         ('win.browse-history-', _('History')),
         ('win.disconnect-', _('Disconnect')),
         ]


=====================================
gajim/roster_window.py
=====================================
--- a/gajim/roster_window.py
+++ b/gajim/roster_window.py
@@ -5389,8 +5389,16 @@ class RosterWindow:
         item = Gtk.SeparatorMenuItem.new() # separator
         menu.append(item)
 
+        adhoc_menuitem = Gtk.MenuItem.new_with_mnemonic(_('Execute command'))
+        adhoc_menuitem.connect('activate', self.on_execute_command, contact,
+            account)
+        menu.append(adhoc_menuitem)
+
+        item = Gtk.SeparatorMenuItem.new() # separator
+        menu.append(item)
+
         history_menuitem = Gtk.MenuItem.new_with_mnemonic(_('_History'))
-        history_menuitem .connect('activate', self.on_history, contact, 
account)
+        history_menuitem.connect('activate', self.on_history, contact, account)
         menu.append(history_menuitem)
 
         event_button = gtkgui_helpers.get_possible_button_event(event)



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/ed0e2dd82be55f10efeafa8374562ef8407a2b12...bf3aac28cbfac3f0829f2fc84cd60e7209a54924

---
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/compare/ed0e2dd82be55f10efeafa8374562ef8407a2b12...bf3aac28cbfac3f0829f2fc84cd60e7209a54924
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to