Changeset 9821
- Timestamp:
- 06/18/08 22:45:22 (3 months ago)
- Location:
- branches/plugin-system
- Files:
-
- 8 modified
-
plugins/acronyms_expander.py (modified) (4 diffs)
-
plugins/length_notifier.py (modified) (2 diffs)
-
plugins/roster_buttons/plugin.py (modified) (3 diffs)
-
src/common/config.py (modified) (1 diff)
-
src/gajim-remote.py (modified) (1 diff)
-
src/plugins/gui.py (modified) (1 diff)
-
src/plugins/pluginmanager.py (modified) (6 diffs)
-
src/plugins/plugin.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/plugin-system/plugins/acronyms_expander.py
r9792 r9821 20 20 21 21 :author: Mateusz Biliński <mateusz@bilinski.it> 22 :since: 06/10/200822 :since: 9th June 2008 23 23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it> 24 24 :license: GPL … … 40 40 homepage = u'http://blog.bilinski.it' 41 41 42 @log_calls('AcronymsExpanderPlugin') 43 def __init__(self): 44 super(AcronymsExpanderPlugin, self).__init__() 45 42 #@log_calls('AcronymsExpanderPlugin') 43 #def __init__(self): 44 #super(AcronymsExpanderPlugin, self).__init__() 45 46 def init(self): 46 47 self.gui_extension_points = { 47 48 'chat_control_base' : (self.connect_with_chat_control_base, … … 57 58 'GW-' : 'http://trac.gajim.org/', 58 59 'GTS-' : 'http://trac.gajim.org/report' 59 } 60 } 60 61 61 62 @log_calls('AcronymsExpanderPlugin') … … 100 101 tv.get_buffer().disconnect(d['h_id']) 101 102 103 -
branches/plugin-system/plugins/length_notifier.py
r9792 r9821 20 20 21 21 :author: Mateusz Biliński <mateusz@bilinski.it> 22 :since: 06/01/200822 :since: 1st June 2008 23 23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it> 24 24 :license: GPL … … 40 40 homepage = u'http://blog.bilinski.it' 41 41 42 #@log_calls('LengthNotifierPlugin') 43 #def __init__(self): 44 #super(LengthNotifierPlugin, self).__init__() 45 42 46 @log_calls('LengthNotifierPlugin') 43 def __init__(self): 44 super(LengthNotifierPlugin, self).__init__() 45 47 def init(self): 46 48 self.gui_extension_points = { 47 49 'chat_control' : (self.connect_with_chat_control, -
branches/plugin-system/plugins/roster_buttons/plugin.py
r9803 r9821 20 20 21 21 :author: Mateusz Biliński <mateusz@bilinski.it> 22 :since: 06/10/200822 :since: 14th June 2008 23 23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it> 24 24 :license: GPL … … 45 45 #def __init__(self): 46 46 #super(RosterButtonsPlugin, self).__init__() 47 48 @log_calls('RosterButtonsPlugin') 49 def init(self): 50 #log.debug('self.__path__==%s'%(self.__path__)) 51 self.GLADE_FILE_PATH = self.local_file_path('roster_buttons.glade') 47 52 53 self.roster_vbox = gajim.interface.roster.xml.get_widget('roster_vbox2') 54 self.show_offline_contacts_menuitem = gajim.interface.roster.xml.get_widget('show_offline_contacts_menuitem') 55 48 56 @log_calls('RosterButtonsPlugin') 49 57 def activate(self): 50 #log.debug('self.__path__==%s'%(self.__path__))51 self.GLADE_FILE_PATH = self.local_file_path('roster_buttons.glade')52 58 self.xml = gtk.glade.XML(self.GLADE_FILE_PATH, root='roster_buttons_buttonbox', domain=i18n.APP) 53 59 self.buttonbox = self.xml.get_widget('roster_buttons_buttonbox') 54 60 55 self.roster_vbox = gajim.interface.roster.xml.get_widget('roster_vbox2')56 61 self.roster_vbox.pack_start(self.buttonbox, expand=False) 57 62 self.roster_vbox.reorder_child(self.buttonbox, 0) 58 59 self.show_offline_contacts_menuitem = gajim.interface.roster.xml.get_widget('show_offline_contacts_menuitem')60 61 63 self.xml.signal_autoconnect(self) 62 63 64 64 65 @log_calls('RosterButtonsPlugin') … … 73 74 #gajim.interface.roster.on_show_offline_contacts_menuitem_activate(None) 74 75 self.show_offline_contacts_menuitem.set_active(not self.show_offline_contacts_menuitem.get_active()) 75 76 76 77 77 @log_calls('RosterButtonsPlugin') -
branches/plugin-system/src/common/config.py
r9644 r9821 391 391 'urgency_hint': [opt_bool, False], 392 392 }, {}), 393 'plugins': ({ 394 'active': [opt_bool, False, _('State whether plugins should be activated on exit (this is saved on Gajim exit). This option SHOULD NOT be used to (de)activate plug-ins. Use GUI instead.')], 395 },{}), 393 396 } 394 397 -
branches/plugin-system/src/gajim-remote.py
r9701 r9821 378 378 raise exceptions.SessionBusNotPresent 379 379 380 from pprint import pprint 381 pprint(list(self.sbus.list_names())) 380 382 if not self.check_gajim_running(): 381 383 send_error(_('It seems Gajim is not running. So you can\'t use gajim-remote.')) -
branches/plugin-system/src/plugins/gui.py
r9762 r9821 140 140 self.installed_plugins_model.set_sort_column_id(0, gtk.SORT_ASCENDING) 141 141 142 for plugin _classin pm.plugins:143 self.installed_plugins_model.append([plugin _class,144 plugin _class.name,145 plugin _class._active])142 for plugin in pm.plugins: 143 self.installed_plugins_model.append([plugin, 144 plugin.name, 145 plugin.active]) 146 146 147 147 @log_calls('PluginsWindow') 148 148 def installed_plugins_toggled_cb(self, cell, path): 149 149 is_active = self.installed_plugins_model[path][2] 150 plugin _class= self.installed_plugins_model[path][0]150 plugin = self.installed_plugins_model[path][0] 151 151 152 152 if is_active: 153 gajim.plugin_manager.deactivate_plugin(plugin _class._instance)153 gajim.plugin_manager.deactivate_plugin(plugin) 154 154 else: 155 gajim.plugin_manager.activate_plugin(plugin _class)155 gajim.plugin_manager.activate_plugin(plugin) 156 156 157 157 self.installed_plugins_model[path][2] = not is_active -
branches/plugin-system/src/plugins/pluginmanager.py
r9803 r9821 20 20 21 21 :author: Mateusz Biliński <mateusz@bilinski.it> 22 :since: 05/30/200822 :since: 30th May 2008 23 23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it> 24 24 :license: GPL … … 95 95 96 96 for path in gajim.PLUGINS_DIRS: 97 self. _add_plugins(PluginManager.scan_dir_for_plugins(path))97 self.add_plugins(PluginManager.scan_dir_for_plugins(path)) 98 98 99 99 log.debug('plugins: %s'%(self.plugins)) 100 100 101 self. activate_all_plugins()101 self._activate_all_plugins_from_global_config() 102 102 103 103 log.debug('active: %s'%(self.active_plugins)) 104 104 105 106 @log_calls('PluginManager') 107 def _add_plugin(self, plugin_class): 105 @log_calls('PluginManager') 106 def _plugin_has_entry_in_global_config(self, plugin): 107 if gajim.config.get_per('plugins', plugin.short_name) is None: 108 return False 109 else: 110 return True 111 112 @log_calls('PluginManager') 113 def _create_plugin_entry_in_global_config(self, plugin): 114 gajim.config.add_per('plugins', plugin.short_name) 115 116 @log_calls('PluginManager') 117 def add_plugin(self, plugin_class): 108 118 ''' 109 119 :todo: what about adding plug-ins that are already added? Module reload 110 120 and adding class from reloaded module or ignoring adding plug-in? 111 121 ''' 112 plugin_class._active = False 113 plugin_class._instance = None 114 self.plugins.append(plugin_class) 115 116 @log_calls('PluginManager') 117 def _add_plugins(self, plugin_classes): 122 plugin = plugin_class() 123 if not self._plugin_has_entry_in_global_config(plugin): 124 self._create_plugin_entry_in_global_config(plugin) 125 126 self.plugins.append(plugin) 127 plugin.active = False 128 129 @log_calls('PluginManager') 130 def add_plugins(self, plugin_classes): 118 131 for plugin_class in plugin_classes: 119 self. _add_plugin(plugin_class)132 self.add_plugin(plugin_class) 120 133 121 134 @log_calls('PluginManager') … … 157 170 158 171 @log_calls('PluginManager') 159 def activate_plugin(self, plugin _class):172 def activate_plugin(self, plugin): 160 173 ''' 161 174 :param plugin: plugin to be activated 162 175 :type plugin: class object of `GajimPlugin` subclass 163 ''' 164 165 plugin_object = plugin_class() 166 167 success = True 168 169 self._add_gui_extension_points_handlers_from_plugin(plugin_object) 170 self._handle_all_gui_extension_points_with_plugin(plugin_object) 171 172 if success: 173 self.active_plugins.append(plugin_object) 174 plugin_object.activate() 175 plugin_class._instance = plugin_object 176 plugin_class._active = True 176 177 :todo: success checks should be implemented using exceptions. Such 178 control should also be implemented in deactivation. 179 ''' 180 success = False 181 if not plugin.active: 182 183 self._add_gui_extension_points_handlers_from_plugin(plugin) 184 self._handle_all_gui_extension_points_with_plugin(plugin) 185 186 success = True 187 188 if success: 189 self.active_plugins.append(plugin) 190 plugin.activate() 191 self._set_plugin_active_in_global_config(plugin) 192 plugin.active = True 177 193 178 194 return success 179 195 180 def deactivate_plugin(self, plugin _object):196 def deactivate_plugin(self, plugin): 181 197 # detaching plug-in from handler GUI extension points (calling 182 198 # cleaning up method that must be provided by plug-in developer 183 199 # for each handled GUI extension point) 184 200 for gui_extpoint_name, gui_extpoint_handlers in \ 185 plugin _object.gui_extension_points.iteritems():201 plugin.gui_extension_points.iteritems(): 186 202 if gui_extpoint_name in self.gui_extension_points: 187 203 for gui_extension_point_args in self.gui_extension_points[gui_extpoint_name]: … … 191 207 # handlers list 192 208 for gui_extpoint_name, gui_extpoint_handlers in \ 193 plugin _object.gui_extension_points.iteritems():209 plugin.gui_extension_points.iteritems(): 194 210 self.gui_extension_points_handlers[gui_extpoint_name].remove(gui_extpoint_handlers) 195 211 196 212 # removing plug-in from active plug-ins list 197 plugin_object.deactivate() 198 self.active_plugins.remove(plugin_object) 199 plugin_object.__class__._active = False 200 plugin_object.__class__._instance = None 201 del plugin_object 202 203 def deactivate_all_plugins(self): 213 plugin.deactivate() 214 self.active_plugins.remove(plugin) 215 self._set_plugin_active_in_global_config(plugin, False) 216 plugin.active = False 217 218 def _deactivate_all_plugins(self): 204 219 for plugin_object in self.active_plugins: 205 220 self.deactivate_plugin(plugin_object) 206 221 207 222 @log_calls('PluginManager') 208 def _add_gui_extension_points_handlers_from_plugin(self, plugin _object):223 def _add_gui_extension_points_handlers_from_plugin(self, plugin): 209 224 for gui_extpoint_name, gui_extpoint_handlers in \ 210 plugin _object.gui_extension_points.iteritems():225 plugin.gui_extension_points.iteritems(): 211 226 self.gui_extension_points_handlers.setdefault(gui_extpoint_name, []).append( 212 227 gui_extpoint_handlers) 213 228 214 229 @log_calls('PluginManager') 215 def _handle_all_gui_extension_points_with_plugin(self, plugin _object):230 def _handle_all_gui_extension_points_with_plugin(self, plugin): 216 231 for gui_extpoint_name, gui_extpoint_handlers in \ 217 plugin _object.gui_extension_points.iteritems():232 plugin.gui_extension_points.iteritems(): 218 233 if gui_extpoint_name in self.gui_extension_points: 219 234 for gui_extension_point_args in self.gui_extension_points[gui_extpoint_name]: … … 221 236 222 237 @log_calls('PluginManager') 223 def activate_all_plugins(self):238 def _activate_all_plugins(self): 224 239 ''' 225 240 Activates all plugins in `plugins`. … … 227 242 Activated plugins are appended to `active_plugins` list. 228 243 ''' 229 self.active_plugins = []244 #self.active_plugins = [] 230 245 for plugin in self.plugins: 231 246 self.activate_plugin(plugin) 247 248 def _activate_all_plugins_from_global_config(self): 249 for plugin in self.plugins: 250 if self._plugin_is_active_in_global_config(plugin): 251 self.activate_plugin(plugin) 252 253 def _plugin_is_active_in_global_config(self, plugin): 254 return gajim.config.get_per('plugins', plugin.short_name, 'active') 255 256 def _set_plugin_active_in_global_config(self, plugin, active=True): 257 gajim.config.set_per('plugins', plugin.short_name, 'active', active) 232 258 233 259 @staticmethod -
branches/plugin-system/src/plugins/plugin.py
r9803 r9821 20 20 21 21 :author: Mateusz Biliński <mateusz@bilinski.it> 22 :since: 06/01/200822 :since: 1st June 2008 23 23 :copyright: Copyright (2008) Mateusz Biliński <mateusz@bilinski.it> 24 24 :license: GPL … … 105 105 :type: `plugins.plugin.Config` 106 106 ''' 107 108 self. _load_config()107 self.load_config() 108 self.init() 109 109 110 110 @log_calls('GajimPlugin') 111 def _save_config(self):111 def save_config(self): 112 112 pass 113 113 114 114 @log_calls('GajimPlugin') 115 def _load_config(self):115 def load_config(self): 116 116 pass 117 117 … … 123 123 def local_file_path(self, file_name): 124 124 return os.path.join(self.__path__, file_name) 125 126 @log_calls('GajimPlugin') 127 def init(self): 128 pass 125 129 126 130 @log_calls('GajimPlugin')
