186
186
view_menu_diffs.set_active(True)
187
187
view_menu_diffs.connect('toggled', self._diff_visibility_changed)
189
view_menu_wide_diffs = gtk.CheckMenuItem("Wide Diffs")
190
view_menu_wide_diffs.set_active(False)
191
if self.config.get_user_option('viz-wide-diffs') == 'True':
192
view_menu_wide_diffs.set_active(True)
193
view_menu_wide_diffs.connect('toggled', self._diff_placement_changed)
189
195
view_menu.add(view_menu_toolbar)
190
196
view_menu.add(view_menu_compact)
191
197
view_menu.add(view_menu_diffs)
198
view_menu.add(view_menu_wide_diffs)
192
199
view_menu.add(gtk.SeparatorMenuItem())
194
201
self.mnu_show_revno_column = gtk.CheckMenuItem("Show Revision _Number Column")
332
339
def construct_bottom(self):
333
340
"""Construct the bottom half of the window."""
334
self.bottom_hpaned = gtk.HPaned()
341
if self.config.get_user_option('viz-wide-diffs') == 'True':
342
self.diff_paned = gtk.VPaned()
344
self.diff_paned = gtk.HPaned()
335
345
(width, height) = self.get_size()
336
self.bottom_hpaned.set_size_request(20, 20) # shrinkable
346
self.diff_paned.set_size_request(20, 20) # shrinkable
338
348
from bzrlib.plugins.gtk.revisionview import RevisionView
339
349
self.revisionview = RevisionView(branch=self.branch)
348
358
self.revisionview.set_show_callback(self._show_clicked_cb)
349
359
self.revisionview.connect('notify::revision', self._go_clicked_cb)
350
360
self.treeview.connect('tag-added', lambda w, t, r: self.revisionview.update_tags())
351
self.bottom_hpaned.pack1(self.revisionview)
361
self.diff_paned.pack1(self.revisionview)
353
363
from bzrlib.plugins.gtk.diff import DiffWidget
354
364
self.diff = DiffWidget()
355
self.bottom_hpaned.pack2(self.diff)
365
self.diff_paned.pack2(self.diff)
357
self.bottom_hpaned.show_all()
367
self.diff_paned.show_all()
358
368
if self.config.get_user_option('viz-show-diffs') != 'True':
361
return self.bottom_hpaned
371
return self.diff_paned
363
373
def _tag_selected_cb(self, menuitem, revid):
364
374
self.treeview.set_revision_id(revid)
494
504
self.toolbar.hide()
495
505
self.config.set_user_option('viz-toolbar-visible', col.get_active())
507
def _make_diff_nonzero_size(self):
508
"""make sure the diff isn't zero-width or zero-height"""
509
alloc = self.diff.get_allocation()
510
if (alloc.width < 10) or (alloc.height < 10):
511
width, height = self.get_size()
512
self.revisionview.set_size_request(width/3, int(height / 2.5))
497
514
def _diff_visibility_changed(self, col):
515
"""Hide or show the diff panel."""
498
516
if col.get_active():
500
# make sure the diff isn't zero-width
501
alloc = self.diff.get_allocation()
503
width, height = self.get_size()
504
self.revisionview.set_size_request(width/3, int(height / 2.5))
518
self._make_diff_nonzero_size()
507
521
self.config.set_user_option('viz-show-diffs', str(col.get_active()))
508
522
self.update_diff_panel()
524
def _diff_placement_changed(self, col):
525
"""Toggle the diff panel's position."""
526
self.config.set_user_option('viz-wide-diffs', str(col.get_active()))
528
old = self.paned.get_child2()
529
self.paned.remove(old)
530
self.paned.pack2(self.construct_bottom(), resize=True, shrink=False)
531
self._make_diff_nonzero_size()
533
self.treeview.emit('revision-selected')
510
535
def _show_about_cb(self, w):
511
536
dialog = AboutDialog()
512
537
dialog.connect('response', lambda d,r: d.destroy())
580
605
window.set_diff(description, rev_tree, parent_tree)
584
608
def update_diff_panel(self, revision=None, parents=None):
585
609
"""Show the current revision in the diff panel."""
586
610
if self.config.get_user_option('viz-show-diffs') != 'True':