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
|
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)
|