diff options
author | Philipp Hörist <forenjunkie@chello.at> | 2017-06-27 21:51:55 +0300 |
---|---|---|
committer | Philipp Hörist <forenjunkie@chello.at> | 2017-06-27 21:51:55 +0300 |
commit | 55889d045fb0fffebb8f9d4e2b60380be6f8a36a (patch) | |
tree | 1fe9e79d6c10c49c79e99c8f5ea8455301e9ac9c /src | |
parent | 1a2d32fca522fc3eb43c2bdce07d15b70d2bc76d (diff) |
Add new extension point method
Diffstat (limited to 'src')
-rw-r--r-- | src/chat_control.py | 8 | ||||
-rw-r--r-- | src/chat_control_base.py | 2 | ||||
-rw-r--r-- | src/common/connection.py | 4 | ||||
-rw-r--r-- | src/common/connection_handlers.py | 2 | ||||
-rw-r--r-- | src/conversation_textview.py | 6 | ||||
-rw-r--r-- | src/groupchat_control.py | 6 | ||||
-rw-r--r-- | src/plugins/pluginmanager.py | 20 |
7 files changed, 33 insertions, 15 deletions
diff --git a/src/chat_control.py b/src/chat_control.py index cb727fdeb..b85719f65 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -851,7 +851,7 @@ class ChatControl(ChatControlBase): 'authenticated': False} if self.encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'encryption_state' + self.encryption, self, encryption_state) self._show_lock_image(**encryption_state) @@ -877,7 +877,7 @@ class ChatControl(ChatControlBase): def _on_authentication_button_clicked(self, widget): if self.encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'encryption_dialog' + self.encryption, self) def send_message(self, message, keyID='', chatstate=None, xhtml=None, @@ -888,7 +888,7 @@ class ChatControl(ChatControlBase): if self.encryption: self.sendmessage = True - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'send_message' + self.encryption, self) if not self.sendmessage: return @@ -1399,7 +1399,7 @@ class ChatControl(ChatControlBase): def _on_message_tv_buffer_changed(self, textbuffer): super()._on_message_tv_buffer_changed(textbuffer) if textbuffer.get_char_count() and self.encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'typing' + self.encryption, self) if (not self.session or not self.session.status) and \ gajim.connections[self.account].archiving_136_supported: diff --git a/src/chat_control_base.py b/src/chat_control_base.py index da7aff3a2..1550ac551 100644 --- a/src/chat_control_base.py +++ b/src/chat_control_base.py @@ -527,8 +527,6 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): self) gajim.plugin_manager.remove_gui_extension_point( 'chat_control_base_draw_banner', self) - gajim.plugin_manager.remove_gui_extension_point('print_special_text', - self) gajim.ged.remove_event_handler('our-show', ged.GUI1, self._nec_our_status) diff --git a/src/common/connection.py b/src/common/connection.py index 4fb178eec..d77cfa7cf 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -2039,7 +2039,7 @@ class Connection(CommonConnection, ConnectionHandlers): config_key = '%s-%s' % (self.name, obj.jid) encryption = gajim.config.get_per('encryption', config_key, 'encryption') if encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'encrypt' + encryption, self, obj, self.send_message) else: self.send_message(obj) @@ -2646,7 +2646,7 @@ class Connection(CommonConnection, ConnectionHandlers): config_key = '%s-%s' % (self.name, obj.jid) encryption = gajim.config.get_per('encryption', config_key, 'encryption') if encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'gc_encrypt' + encryption, self, obj, self.send_gc_message) else: self.send_gc_message(obj) diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 7ac2b8a94..fe024b54b 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -1084,7 +1084,7 @@ class ConnectionHandlersBase: if obj.conn.name != self.name: return - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'decrypt', self, obj, self._on_message_received) if not obj.encrypted: self._on_message_received(obj) diff --git a/src/conversation_textview.py b/src/conversation_textview.py index db481044d..6a1a49444 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -822,7 +822,7 @@ class ConversationTextview(GObject.GObject): return True else: self.plugin_modified = False - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'hyperlink_handler', word, kind, self, self.tv.get_toplevel()) if self.plugin_modified: @@ -920,7 +920,7 @@ class ConversationTextview(GObject.GObject): # PluginSystem: adding GUI extension point for ConversationTextview self.plugin_modified = False - gajim.plugin_manager.gui_extension_point('print_special_text', self, + gajim.plugin_manager.extension_point('print_special_text', self, special_text, other_tags, graphics, additional_data) if self.plugin_modified: return @@ -1397,7 +1397,7 @@ class ConversationTextview(GObject.GObject): # PluginSystem: adding GUI extension point for ConversationTextview self.plugin_modified = False - gajim.plugin_manager.gui_extension_point('print_real_text', self, + gajim.plugin_manager.extension_point('print_real_text', self, text, text_tags, graphics, iter_, additional_data) if self.plugin_modified: diff --git a/src/groupchat_control.py b/src/groupchat_control.py index ea0eff4f7..0baa07490 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -776,7 +776,7 @@ class GroupchatControl(ChatControlBase): 'authenticated': False} if self.encryption: - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'encryption_state' + self.encryption, self, encryption_state) self._show_lock_image(**encryption_state) @@ -802,7 +802,7 @@ class GroupchatControl(ChatControlBase): self.lock_image.set_sensitive(visible) def _on_authentication_button_clicked(self, widget): - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'encryption_dialog' + self.encryption, self) def _change_style(self, model, path, iter_, option): @@ -2022,7 +2022,7 @@ class GroupchatControl(ChatControlBase): if self.encryption: self.sendmessage = True - gajim.plugin_manager.gui_extension_point( + gajim.plugin_manager.extension_point( 'send_message' + self.encryption, self) if not self.sendmessage: return diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py index 13c64b499..bba599ce1 100644 --- a/src/plugins/pluginmanager.py +++ b/src/plugins/pluginmanager.py @@ -158,6 +158,26 @@ class PluginManager(metaclass=Singleton): return None @log_calls('PluginManager') + def extension_point(self, gui_extpoint_name, *args): + ''' + Invokes all handlers (from plugins) for a particular extension point, but + doesnt add it to collection for further processing. + For example if you pass a message for encryption via extension point to a + plugin, its undesired that the call is stored and replayed on activating the + plugin. For example after an update. + + :param gui_extpoint_name: name of GUI extension point. + :type gui_extpoint_name: str + :param args: parameters to be passed to extension point handlers + (typically and object that invokes `gui_extension_point`; + however, this can be practically anything) + :type args: tuple + ''' + + self._execute_all_handlers_of_gui_extension_point(gui_extpoint_name, + *args) + + @log_calls('PluginManager') def gui_extension_point(self, gui_extpoint_name, *args): ''' Invokes all handlers (from plugins) for particular GUI extension point |