Viewing file: SnippetPluginInstance.py (4.39 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Gedit snippets plugin # Copyright (C) 2005-2006 Jesse van den Kieboom <jesse@icecrew.nl> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import gtksourceview import gedit import gtk from gtk import gdk import re import os import gettext from SnippetController import SnippetController from SnippetsLibrary import SnippetsLibrary
class SnippetsPluginInstance: def __init__(self, plugin): self.plugin = plugin self.current_controller = None self.current_language = None self.signal_ids = {} def run(self, window): self.window = window self.insert_menu() self.accel_group = SnippetsLibrary().get_accel_group(None) window.add_accel_group(self.accel_group) window.connect('tab-added', self.on_tab_added) # Add controllers to all the current views for view in self.window.get_views(): if isinstance(view, gedit.View) and not self.has_controller(view): view._snippet_controller = SnippetController(self, view) self.update() def stop(self): self.window.remove_accel_group(self.accel_group) self.accel_group = None #self.window.remove_accel_group(accel) self.remove_menu()
# Iterate over all the tabs and remove every controller for view in self.window.get_views(): if isinstance(view, gedit.View) and self.has_controller(view): view._snippet_controller.stop() view._snippet_controller = None self.window = None self.plugin = None def insert_menu(self): manager = self.window.get_ui_manager()
self.action_group = gtk.ActionGroup("GeditSnippetPluginActions") self.action_group.set_translation_domain('gedit') self.action_group.add_actions([('Snippets', None, _('Manage _Snippets...'), \ None, _('Manage snippets'), \ self.on_action_snippets_activate)])
self.merge_id = manager.new_merge_id() manager.insert_action_group(self.action_group, -1) manager.add_ui(self.merge_id, '/MenuBar/ToolsMenu/ToolsOps_5', \ 'Snippets', 'Snippets', gtk.UI_MANAGER_MENUITEM, False)
def remove_menu(self): manager = self.window.get_ui_manager() manager.remove_ui(self.merge_id) manager.remove_action_group(self.action_group) self.action_group = None def find_snippet(self, snippets, tag): result = [] for snippet in snippets: if Snippet(snippet)['tag'] == tag: result.append(snippet) return result
def has_controller(self, view): return hasattr(view, '_snippet_controller') and view._snippet_controller
def update_language(self): if self.current_language: accel_group = SnippetsLibrary().get_accel_group( \ self.current_language) self.window.remove_accel_group(accel_group)
if self.current_controller: self.current_language = self.current_controller.language_id if self.current_language != None: accel_group = SnippetsLibrary().get_accel_group( \ self.current_language) self.window.add_accel_group(accel_group) else: self.current_language = None def language_changed(self, controller): if controller == self.current_controller: self.update_language() def update(self): view = self.window.get_active_view() if not view or not self.has_controller(view): return controller = view._snippet_controller if controller != self.current_controller: self.current_controller = controller self.update_language()
# Callbacks def on_tab_added(self, window, tab): # Create a new controller for this tab if it has a standard gedit view view = tab.get_view() if isinstance(view, gedit.View) and not self.has_controller(view): view._snippet_controller = SnippetController(self, view)
def on_action_snippets_activate(self, item): self.plugin.create_configure_dialog()
def accelerator_activated(self, keyval, mod): return self.current_controller.accelerator_activate(keyval, mod)
|