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