41
34
if self.config is None:
42
35
self.config = GlobalConfig()
38
def _create_mainpage(self):
39
table = gtk.Table(rows=4, columns=2)
40
table.set_row_spacings(6)
41
table.set_col_spacings(6)
43
align = gtk.Alignment(1.0, 0.5)
45
label.set_markup("<b>User Id:</b>")
47
table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
49
align = gtk.Alignment(0.0, 0.5)
50
self.username = gtk.Entry()
51
align.add(self.username)
52
self.username.set_text(self.config.username())
53
table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
55
align = gtk.Alignment(1.0, 0.5)
57
label.set_markup("<b>GPG signing command:</b>")
59
table.attach(align, 0, 1, 1, 2, gtk.FILL, gtk.FILL)
61
align = gtk.Alignment(0.0, 0.5)
62
self.email = gtk.Entry()
63
self.email.set_text(self.config.gpg_signing_command())
65
table.attach(align, 1, 2, 1, 2, gtk.EXPAND | gtk.FILL, gtk.FILL)
67
align = gtk.Alignment(1.0, 0.5)
69
label.set_markup("<b>Check GPG Signatures:</b>")
71
table.attach(align, 0, 1, 2, 3, gtk.FILL, gtk.FILL)
73
align = gtk.Alignment(0.0, 0.5)
74
self.check_sigs = gtk.Entry()
75
self.check_sigs.set_text(self.config.signature_checking())
76
align.add(self.check_sigs)
77
table.attach(align, 1, 2, 2, 3, gtk.EXPAND | gtk.FILL, gtk.FILL)
79
align = gtk.Alignment(1.0, 0.5)
81
label.set_markup("<b>Create GPG Signatures:</b>")
83
table.attach(align, 0, 1, 3, 4, gtk.FILL, gtk.FILL)
85
align = gtk.Alignment(0.0, 0.5)
86
self.create_sigs = gtk.Entry()
87
self.create_sigs.set_text(self.config.signing_policy())
88
align.add(self.create_sigs)
89
table.attach(align, 1, 2, 3, 4, gtk.EXPAND | gtk.FILL, gtk.FILL)
93
def _create_pluginpage(self):
94
vbox = gtk.VBox(False, 2)
95
vbox.set_border_width(6)
97
scrolledwindow = gtk.ScrolledWindow()
98
scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
99
model = gtk.ListStore(str, str)
100
treeview = gtk.TreeView()
101
scrolledwindow.add(treeview)
103
table = gtk.Table(columns=2)
104
table.set_row_spacings(6)
105
table.set_col_spacings(6)
108
def row_selected(tv, path, tvc):
109
p = bzrlib.plugin.all_plugins()[model[path][0]]
110
from inspect import getdoc
112
for w in table.get_children():
115
if getattr(p, '__author__', None) is not None:
116
align = gtk.Alignment(1.0, 0.5)
118
label.set_markup("<b>Author:</b>")
120
table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
124
align = gtk.Alignment(0.0, 0.5)
126
author.set_text(p.__author__)
127
author.set_selectable(True)
129
table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
131
if getattr(p, '__version__', None) is not None:
132
align = gtk.Alignment(1.0, 0.5)
134
label.set_markup("<b>Version:</b>")
136
table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
140
align = gtk.Alignment(0.0, 0.5)
142
author.set_text(p.__version__)
143
author.set_selectable(True)
145
table.attach(align, 1, 2, 0, 1, gtk.EXPAND | gtk.FILL, gtk.FILL)
147
if getdoc(p) is not None:
148
align = gtk.Alignment(0.0, 0.5)
149
description = gtk.Label()
150
description.set_text(getdoc(p))
151
description.set_selectable(True)
152
align.add(description)
153
table.attach(align, 0, 2, 1, 2, gtk.EXPAND | gtk.FILL, gtk.FILL)
157
treeview.set_headers_visible(False)
158
treeview.set_model(model)
159
treeview.connect("row-activated", row_selected)
161
cell = gtk.CellRendererText()
162
column = gtk.TreeViewColumn()
163
column.pack_start(cell, expand=True)
164
column.add_attribute(cell, "text", 0)
165
treeview.append_column(column)
167
cell = gtk.CellRendererText()
168
column = gtk.TreeViewColumn()
169
column.pack_start(cell, expand=True)
170
column.add_attribute(cell, "text", 1)
171
treeview.append_column(column)
174
plugins = bzrlib.plugin.all_plugins()
175
plugin_names = plugins.keys()
177
for name in plugin_names:
178
model.append([name, getattr(plugins[name], '__file__', None)])
180
vbox.pack_start(scrolledwindow, expand=True, fill=True)
182
vbox.pack_start(table)
47
186
def _create(self):
48
187
self.set_default_size(600, 600)
49
188
notebook = gtk.Notebook()
50
for (label, page) in self._create_pages():
51
notebook.insert_page(page, gtk.Label(label))
189
notebook.insert_page(self._create_mainpage(), gtk.Label("Main"))
190
notebook.insert_page(self._create_pluginpage(), gtk.Label("Plugins"))
52
191
self.vbox.pack_start(notebook, True, True)
53
192
self.vbox.show_all()
55
def _create_pages(self):
56
return [("Identity", IdentityPage(self.config)),
57
("Plugins", PluginsPage())]
59
194
def display(self):
60
195
self.window.show_all()
62
197
def close(self, widget=None):
63
198
self.window.destroy()
65
class BranchPreferencesWindow(gtk.Dialog):
66
"""Displays global preferences windows."""
67
def __init__(self, config=None):
68
super(BranchPreferencesWindow, self).__init__(config)