~ubuntu-branches/ubuntu/raring/gedit-plugins/raring-proposed

« back to all changes in this revision

Viewing changes to plugins/multiedit/multiedit/windowhelper.py

  • Committer: Bazaar Package Importer
  • Author(s): Michael Biebl
  • Date: 2011-07-22 20:45:45 UTC
  • mfrom: (1.1.26 upstream)
  • mto: (7.3.1 sid) (1.4.8)
  • mto: This revision was merged to the branch mainline in revision 44.
  • Revision ID: james.westby@ubuntu.com-20110722204545-15t6eui58z5tdb6l
Tags: upstream-3.0.5
ImportĀ upstreamĀ versionĀ 3.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- coding: utf-8 -*-
2
 
#
3
 
#  windowhelper.py - Multi Edit
4
 
#  
5
 
#  Copyright (C) 2009 - Jesse van den Kieboom
6
 
#  
7
 
#  This program is free software; you can redistribute it and/or modify
8
 
#  it under the terms of the GNU General Public License as published by
9
 
#  the Free Software Foundation; either version 2 of the License, or
10
 
#  (at your option) any later version.
11
 
#   
12
 
#  This program is distributed in the hope that it will be useful,
13
 
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
#  GNU General Public License for more details.
16
 
#   
17
 
#  You should have received a copy of the GNU General Public License
18
 
#  along with this program; if not, write to the Free Software
19
 
#  Foundation, Inc., 59 Temple Place, Suite 330,
20
 
#  Boston, MA 02111-1307, USA.
21
 
 
22
 
import gedit
23
 
from documenthelper import DocumentHelper
24
 
from signals import Signals
25
 
import constants
26
 
import gtk
27
 
 
28
 
from gpdefs import *
29
 
 
30
 
try:
31
 
    gettext.bindtextdomain(GETTEXT_PACKAGE, GP_LOCALEDIR)
32
 
    _ = lambda s: gettext.dgettext(GETTEXT_PACKAGE, s);
33
 
except:
34
 
    _ = lambda s: s
35
 
 
36
 
ui_str = """
37
 
<ui>
38
 
  <menubar name="MenuBar">
39
 
    <menu name="EditMenu" action="Edit">
40
 
      <placeholder name="EditOps_5">
41
 
        <menuitem name="MultiEditMode" action="MultiEditModeAction"/>
42
 
      </placeholder>
43
 
    </menu>
44
 
  </menubar>
45
 
</ui>
46
 
"""
47
 
 
48
 
class WindowHelper(Signals):
49
 
    def __init__(self, plugin, window):
50
 
        Signals.__init__(self)
51
 
        
52
 
        self._window = window
53
 
        self._plugin = plugin
54
 
        
55
 
        # Insert document helpers
56
 
        for view in window.get_views():
57
 
            self.add_document_helper(view)
58
 
        
59
 
        self.connect_signal(window, 'tab-added', self.on_tab_added)
60
 
        self.connect_signal(window, 'tab-removed', self.on_tab_removed)
61
 
        
62
 
        self.install_ui()
63
 
 
64
 
    def install_ui(self):
65
 
        manager = self._window.get_ui_manager()
66
 
        
67
 
        self._action_group = gtk.ActionGroup("GeditMultiEditPluginActions")
68
 
        self._action_group.add_actions(
69
 
            [('MultiEditModeAction', None, _('Multi Edit Mode'), '<Ctrl><Shift>C', _('Start multi edit mode'), self.on_multi_edit_mode)])
70
 
        
71
 
        manager.insert_action_group(self._action_group, -1)
72
 
        self._merge_id = manager.add_ui_from_string(ui_str)
73
 
 
74
 
    def uninstall_ui(self):
75
 
        manager = self._window.get_ui_manager()
76
 
        manager.remove_ui(self._merge_id)
77
 
        manager.remove_action_group(self._action_group)
78
 
        
79
 
        manager.ensure_update()
80
 
 
81
 
    def deactivate(self):
82
 
        # Remove document helpers
83
 
        for view in self._window.get_views():
84
 
            self.remove_document_helper(view)
85
 
 
86
 
        self.disconnect_signals(self._window)
87
 
        self.uninstall_ui()
88
 
 
89
 
        self._window = None
90
 
        self._plugin = None        
91
 
 
92
 
    def update_ui(self):
93
 
        pass
94
 
 
95
 
    def add_document_helper(self, view):
96
 
        if view.get_data(constants.DOCUMENT_HELPER_KEY) != None:
97
 
            return
98
 
            
99
 
        DocumentHelper(view)
100
 
 
101
 
    def remove_document_helper(self, view):
102
 
        helper = view.get_data(constants.DOCUMENT_HELPER_KEY)
103
 
        
104
 
        if helper != None:
105
 
            helper.stop()
106
 
    
107
 
    def on_tab_added(self, window, tab):
108
 
        self.add_document_helper(tab.get_view())
109
 
    
110
 
    def on_tab_removed(self, window, tab):
111
 
        self.remove_document_helper(tab.get_view())
112
 
    
113
 
    def on_multi_edit_mode(self, action):
114
 
        view = self._window.get_active_view()
115
 
        helper = view.get_data(constants.DOCUMENT_HELPER_KEY)
116
 
        
117
 
        if helper != None:
118
 
            helper.enable_multi_edit()
119
 
 
120
 
# ex:ts=4:et: