/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to viz/branchwin.py

  • Committer: Scott Scriven
  • Date: 2008-07-17 12:06:33 UTC
  • mto: This revision was merged to the branch mainline in revision 549.
  • Revision ID: ubuntu@toykeeper.net-20080717120633-dmhbbdgdj4lt9k4z
Made diff placement configurable (bottom-right, or bottom full-width).

Show diffs side-by-side

added added

removed removed

Lines of Context:
186
186
            view_menu_diffs.set_active(True)
187
187
        view_menu_diffs.connect('toggled', self._diff_visibility_changed)
188
188
 
 
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)
 
194
 
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())
193
200
 
194
201
        self.mnu_show_revno_column = gtk.CheckMenuItem("Show Revision _Number Column")
331
338
 
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()
 
343
        else:
 
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
337
347
 
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)
352
362
 
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)
356
366
 
357
 
        self.bottom_hpaned.show_all()
 
367
        self.diff_paned.show_all()
358
368
        if self.config.get_user_option('viz-show-diffs') != 'True':
359
369
            self.diff.hide()
360
370
 
361
 
        return self.bottom_hpaned
 
371
        return self.diff_paned
362
372
 
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())
496
506
 
 
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))
 
513
 
497
514
    def _diff_visibility_changed(self, col):
 
515
        """Hide or show the diff panel."""
498
516
        if col.get_active():
499
517
            self.diff.show()
500
 
            # make sure the diff isn't zero-width
501
 
            alloc = self.diff.get_allocation()
502
 
            if alloc.width < 10:
503
 
                width, height = self.get_size()
504
 
                self.revisionview.set_size_request(width/3, int(height / 2.5))
 
518
            self._make_diff_nonzero_size()
505
519
        else:
506
520
            self.diff.hide()
507
521
        self.config.set_user_option('viz-show-diffs', str(col.get_active()))
508
522
        self.update_diff_panel()
509
523
 
 
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()))
 
527
 
 
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()
 
532
 
 
533
        self.treeview.emit('revision-selected')
 
534
 
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)
581
606
        window.show()
582
607
 
583
 
 
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':