1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
import gedit
import gtk
import gtk.glade
import gobject
import os
import time
ui_string = """<ui>
<menubar name="MenuBar">
<placeholder name="ExtraMenu_1">
<menu action="GitMenu">
<menuitem action="Commit"/>
<menuitem action="Add"/>
</menu>
</placeholder>
</menubar>
</ui>
"""
GLADE_FILE = os.path.join(os.path.dirname(__file__), "commit.glade")
class PluginHelper:
def __init__(self, plugin, window):
self.window = window
self.plugin = plugin
self.ui_id = None
# Add a "toggle split view" item to the View menu
self.insert_menu_item(window)
self.load_dialogs()
# I hardly even know how this works, but it gets our encoding.
try: self.encoding = gedit.encoding_get_current()
except: self.encoding = gedit.gedit_encoding_get_current()
def deactivate(self):
self.remove_menu_item()
self.window = None
self.plugin = None
def update_ui(self):
return
def commit_action(self, window):
self._search_dialog.show()
pass
###
# Called when the "Close" button is clicked.
def on_cancel_button_clicked(self, close_button):
self._search_dialog.hide()
def on_commit_button_clicked(self, close_button):
pass
###
# Called when the text to be replaced is changed.
def on_commit_text_changed(self, commit_text_entry):
pass
def add_action(self, window):
pass
def insert_menu_item(self, window):
manager = self.window.get_ui_manager()
self.action_group = gtk.ActionGroup("GitPluginActions")
self.git_menu_action_ = gtk.Action(name="GitMenu", label="Git", tooltip="Manage git", stock_id=None)
self.commit_action_ = gtk.Action(name="Commit", label="Commit", tooltip="Commit current state", stock_id=gtk.STOCK_GO_UP)
self.add_action_ = gtk.Action(name="Add", label="Add to index", tooltip="", stock_id=gtk.STOCK_ADD)
self.commit_action_.connect("activate", self.commit_action)
self.add_action_.connect("activate", self.add_action)
self.action_group.add_action(self.git_menu_action_)
self.action_group.add_action(self.commit_action_)
self.action_group.add_action(self.add_action_)
# Add the action group.
manager.insert_action_group(self.action_group, -1)
self.ui_id = manager.add_ui_from_string(ui_string)
def remove_menu_item(self):
manager.remove_ui(self.ui_id)
manager.remove_action_group(self.action_group)
manager.ensure_update()
###
# Load commit dialog.
# - Load dialog from its Glade file
# - Connect widget signals
# - Put needed widgets in object variables.
def load_dialogs(self):
self.glade_xml = gtk.glade.XML(GLADE_FILE)
self._search_dialog = self.glade_xml.get_widget("commit_dialog")
self._search_dialog.hide()
self._search_dialog.set_transient_for(self.window)
self._search_dialog.connect("delete_event", self._search_dialog.hide_on_delete)
self._find_button = self.glade_xml.get_widget("commit_button")
self._find_button.connect("clicked", self.on_commit_button_clicked)
close_button = self.glade_xml.get_widget("cancel_button")
close_button.connect("clicked", self.on_cancel_button_clicked)
self._search_text_box = self.glade_xml.get_widget("commit_text")
self._search_text_box.connect("changed", self.on_commit_text_changed)
class G_ed_it(gedit.Plugin):
def __init__(self):
gedit.Plugin.__init__(self)
self.instances = {}
def activate(self, window):
self.instances[window] = PluginHelper(self, window)
def deactivate(self, window):
self.instances[window].deactivate()
def update_ui(self, window):
self.instances[window].update_ui()
|