34
def __init__(self, revision=None, scroll=True, tags=[]):
34
def __init__(self, revision=None, scroll=True, tags=[],
35
36
super(LogView, self).__init__()
37
38
self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
39
40
self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
40
41
self.set_shadow_type(gtk.SHADOW_NONE)
42
self.show_children = show_children
42
44
self._show_callback = None
43
45
self._go_callback = None
62
64
self._file_id = file_id
64
def set_revision(self, revision, tags=[]):
66
def set_revision(self, revision, tags=[], children=[]):
65
67
self._revision = revision
66
68
self.revision_id.set_text(revision.revision_id)
67
69
if revision.committer is not None:
87
89
self.branchnick_label.set_text("")
89
self._add_parents(revision.parent_ids)
91
self._add_parents_or_children(revision.parent_ids,
95
if self.show_children:
96
self._add_parents_or_children(children,
97
self.children_widgets,
90
100
self._add_tags(tags)
92
102
file_info = revision.properties.get('file-info', None)
143
153
self.tags_label.show_all()
146
def _add_parents(self, parent_ids):
147
for widget in self.parents_widgets:
148
self.parents_table.remove(widget)
150
self.parents_widgets = []
151
self.parents_table.resize(max(len(parent_ids), 1), 2)
156
def _add_parents_or_children(self, revids, widgets, table):
157
while len(widgets) > 0:
158
widget = widgets.pop()
161
table.resize(max(len(revids), 1), 2)
153
for idx, parent_id in enumerate(parent_ids):
163
for idx, revid in enumerate(revids):
154
164
align = gtk.Alignment(0.0, 0.0)
155
self.parents_widgets.append(align)
156
self.parents_table.attach(align, 1, 2, idx, idx + 1,
165
widgets.append(align)
166
table.attach(align, 1, 2, idx, idx + 1,
157
167
gtk.EXPAND | gtk.FILL, gtk.FILL)
170
180
button = gtk.Button()
171
181
button.add(image)
172
182
button.connect("clicked", self._show_clicked_cb,
173
self._revision.revision_id, parent_id)
183
self._revision.revision_id, revid)
174
184
hbox.pack_start(button, expand=False, fill=True)
177
187
if self._go_callback is not None:
178
button = gtk.Button(parent_id)
179
button.connect("clicked", self._go_clicked_cb, parent_id)
188
button = gtk.Button(revid)
189
button.connect("clicked", self._go_clicked_cb, revid)
181
button = gtk.Label(parent_id)
191
button = gtk.Label(revid)
182
192
button.set_use_underline(False)
183
193
hbox.pack_start(button, expand=False, fill=True)
187
197
vbox = gtk.VBox(False, 6)
188
198
vbox.set_border_width(6)
189
199
vbox.pack_start(self._create_headers(), expand=False, fill=True)
190
vbox.pack_start(self._create_parents_table(), expand=False, fill=True)
200
vbox.pack_start(self._create_parents_and_children(), expand=False, fill=True)
191
201
vbox.pack_start(self._create_message_view(), expand=True, fill=True)
192
202
vbox.pack_start(self._create_file_info_view(), expand=True, fill=True)
193
203
self.add_with_viewport(vbox)
299
309
return self.table
301
def _create_parents_table(self):
302
self.parents_table = gtk.Table(rows=1, columns=2)
303
self.parents_table.set_row_spacings(3)
304
self.parents_table.set_col_spacings(6)
305
self.parents_table.show()
312
def _create_parents_and_children(self):
313
hbox = gtk.HBox(True, 6)
315
self.parents_table = self._create_parents_or_children_table(
306
317
self.parents_widgets = []
318
hbox.pack_start(self.parents_table)
320
if self.show_children:
321
self.children_table = self._create_parents_or_children_table(
323
self.children_widgets = []
324
hbox.pack_start(self.children_table)
329
def _create_parents_or_children_table(self, text):
330
table = gtk.Table(rows=1, columns=2)
331
table.set_row_spacings(3)
332
table.set_col_spacings(6)
308
335
label = gtk.Label()
309
label.set_markup("<b>Parents:</b>")
336
label.set_markup(text)
310
337
align = gtk.Alignment(0.0, 0.5)
312
self.parents_table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
339
table.attach(align, 0, 1, 0, 1, gtk.FILL, gtk.FILL)
316
return self.parents_table
318
347
def _create_message_view(self):
319
348
self.message_buffer = gtk.TextBuffer()