/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: Jelmer Vernooij
  • Date: 2011-05-04 15:20:38 UTC
  • mfrom: (713.2.6 vertical-layout)
  • Revision ID: jelmer@samba.org-20110504152038-rtojh5hzxodl7eea
Merge support for vertical layout.

Show diffs side-by-side

added added

removed removed

Lines of Context:
99
99
        self.refresh_action.connect("activate", self._refresh_clicked)
100
100
        self.refresh_action.connect_accelerator()
101
101
 
102
 
        self.construct()
 
102
        self.vbox = self.construct()
103
103
 
104
104
    def _save_size_on_destroy(self, widget, config_name):
105
105
        """Creates a hook that saves the size of widget to config option 
118
118
        vbox = gtk.VBox(spacing=0)
119
119
        self.add(vbox)
120
120
 
121
 
        self.paned = gtk.VPaned()
122
 
        self.paned.pack1(self.construct_top(), resize=False, shrink=True)
123
 
        self.paned.pack2(self.construct_bottom(), resize=True, shrink=False)
124
 
        self.paned.show()
125
 
 
 
121
        # order is important here
 
122
        paned = self.construct_paned()
126
123
        nav = self.construct_navigation()
127
124
        menubar = self.construct_menubar()
 
125
 
128
126
        vbox.pack_start(menubar, expand=False, fill=True)
129
127
        vbox.pack_start(nav, expand=False, fill=True)
130
 
 
131
 
        vbox.pack_start(self.paned, expand=True, fill=True)
132
 
        vbox.set_focus_child(self.paned)
133
 
 
134
 
        self.treeview.connect('revision-selected',
135
 
                self._treeselection_changed_cb)
136
 
        self.treeview.connect('revision-activated',
137
 
                self._tree_revision_activated)
138
 
 
139
 
        self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
 
128
        vbox.pack_start(paned, expand=True, fill=True)
 
129
        vbox.set_focus_child(paned)
 
130
 
 
131
 
140
132
        vbox.show()
141
133
 
 
134
        return vbox
 
135
 
 
136
    def construct_paned(self):
 
137
        """Construct the main HPaned/VPaned contents."""
 
138
        if self.config.get_user_option('viz-vertical') == 'True':
 
139
            self.paned = gtk.HPaned()
 
140
        else:
 
141
            self.paned = gtk.VPaned()
 
142
 
 
143
        self.paned.pack1(self.construct_top(), resize=False, shrink=True)
 
144
        self.paned.pack2(self.construct_bottom(), resize=True, shrink=False)
 
145
        self.paned.show()
 
146
 
 
147
        return self.paned
 
148
 
142
149
    def construct_menubar(self):
143
150
        menubar = gtk.MenuBar()
144
151
 
190
197
        view_menu_compact.set_active(self.compact_view)
191
198
        view_menu_compact.connect('activate', self._brokenlines_toggled_cb)
192
199
 
 
200
        view_menu_vertical = gtk.CheckMenuItem("Side-by-side Layout")
 
201
        view_menu_vertical.set_active(False)
 
202
        if self.config.get_user_option('viz-vertical') == 'True':
 
203
            view_menu_vertical.set_active(True)
 
204
        view_menu_vertical.connect('toggled', self._vertical_layout)
 
205
 
193
206
        view_menu_diffs = gtk.CheckMenuItem("Show Diffs")
194
207
        view_menu_diffs.set_active(False)
195
208
        if self.config.get_user_option('viz-show-diffs') == 'True':
210
223
 
211
224
        view_menu.add(view_menu_toolbar)
212
225
        view_menu.add(view_menu_compact)
 
226
        view_menu.add(view_menu_vertical)
213
227
        view_menu.add(gtk.SeparatorMenuItem())
214
228
        view_menu.add(view_menu_diffs)
215
229
        view_menu.add(view_menu_wide_diffs)
249
263
        go_menu.add(gtk.SeparatorMenuItem())
250
264
        go_menu.add(self.go_menu_tags)
251
265
 
252
 
        self.revision_menu = RevisionMenu(self.branch.repository, [], self.branch, parent=self)
 
266
        self.revision_menu = RevisionMenu(self.branch.repository, [],
 
267
            self.branch, parent=self)
253
268
        revision_menuitem = gtk.MenuItem("_Revision")
254
269
        revision_menuitem.set_submenu(self.revision_menu)
255
270
 
279
294
        help_menuitem = gtk.MenuItem("_Help")
280
295
        help_menuitem.set_submenu(help_menu)
281
296
 
282
 
        help_about_menuitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT, self.accel_group)
 
297
        help_about_menuitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT,
 
298
            self.accel_group)
283
299
        help_about_menuitem.connect('activate', self._about_dialog_cb)
284
300
 
285
301
        help_menu.add(help_about_menuitem)
299
315
        """Construct the top-half of the window."""
300
316
        # FIXME: Make broken_line_length configurable
301
317
 
302
 
        self.treeview = TreeView(self.branch, self.start_revs, self.maxnum, self.compact_view)
 
318
        self.treeview = TreeView(self.branch, self.start_revs, self.maxnum,
 
319
            self.compact_view)
303
320
 
304
321
        for col in ["revno", "date"]:
305
322
            option = self.config.get_user_option(col + '-column-visible')
306
323
            if option is not None:
307
 
                self.treeview.set_property(col + '-column-visible', option == 'True')
 
324
                self.treeview.set_property(col + '-column-visible',
 
325
                    option == 'True')
308
326
            else:
309
327
                self.treeview.set_property(col + '-column-visible', False)
310
328
 
368
386
        self.revisionview.show()
369
387
        self.revisionview.set_show_callback(self._show_clicked_cb)
370
388
        self.revisionview.connect('notify::revision', self._go_clicked_cb)
371
 
        self.treeview.connect('tag-added', lambda w, t, r: self.revisionview.update_tags())
 
389
        self.treeview.connect('tag-added',
 
390
            lambda w, t, r: self.revisionview.update_tags())
 
391
        self.treeview.connect('revision-selected',
 
392
                self._treeselection_changed_cb)
 
393
        self.treeview.connect('revision-activated',
 
394
                self._tree_revision_activated)
372
395
        self.diff_paned.pack1(self.revisionview)
373
396
 
374
397
        from bzrlib.plugins.gtk.diff import DiffWidget
390
413
        parents  = self.treeview.get_parents()
391
414
        children = self.treeview.get_children()
392
415
 
393
 
        self.revision_menu.set_revision_ids([revision.revision_id])
394
 
 
395
 
        if revision and revision != NULL_REVISION:
 
416
        if revision and revision.revision_id != NULL_REVISION:
 
417
            self.revision_menu.set_revision_ids([revision.revision_id])
396
418
            prev_menu = gtk.Menu()
397
419
            if len(parents) > 0:
398
420
                self.prev_rev_action.set_sensitive(True)
400
422
                    if parent_id and parent_id != NULL_REVISION:
401
423
                        parent = self.branch.repository.get_revision(parent_id)
402
424
                        try:
403
 
                            str = ' (' + parent.properties['branch-nick'] + ')'
 
425
                            str = ' (%s)' % parent.properties['branch-nick']
404
426
                        except KeyError:
405
427
                            str = ""
406
428
 
421
443
                for child_id in children:
422
444
                    child = self.branch.repository.get_revision(child_id)
423
445
                    try:
424
 
                        str = ' (' + child.properties['branch-nick'] + ')'
 
446
                        str = ' (%s)' % child.properties['branch-nick']
425
447
                    except KeyError:
426
448
                        str = ""
427
449
 
492
514
        _mod_index.index_url(self.branch.base)
493
515
 
494
516
    def _branch_search_cb(self, w):
495
 
        from bzrlib.plugins.search import index as _mod_index
 
517
        from bzrlib.plugins.search import (
 
518
            index as _mod_index,
 
519
            errors as search_errors,
 
520
            )
496
521
        from bzrlib.plugins.gtk.search import SearchDialog
497
 
        from bzrlib.plugins.search import errors as search_errors
498
522
 
499
523
        try:
500
524
            index = _mod_index.open_index_url(self.branch.base)
532
556
            self.toolbar.hide()
533
557
        self.config.set_user_option('viz-toolbar-visible', col.get_active())
534
558
 
 
559
    def _vertical_layout(self, col):
 
560
        """Toggle the layout vertical/horizontal"""
 
561
        self.config.set_user_option('viz-vertical', str(col.get_active()))
 
562
 
 
563
        old = self.paned
 
564
        self.vbox.remove(old)
 
565
        self.vbox.pack_start(self.construct_paned(), expand=True, fill=True)
 
566
        self._make_diff_paned_nonzero_size()
 
567
        self._make_diff_nonzero_size()
 
568
 
 
569
        self.treeview.emit('revision-selected')
 
570
 
 
571
    def _make_diff_paned_nonzero_size(self):
 
572
        """make sure the diff/revision pane isn't zero-width or zero-height"""
 
573
        alloc = self.diff_paned.get_allocation()
 
574
        if (alloc.width < 10) or (alloc.height < 10):
 
575
            width, height = self.get_size()
 
576
            self.diff_paned.set_size_request(width/3, int(height / 2.5))
 
577
 
535
578
    def _make_diff_nonzero_size(self):
536
579
        """make sure the diff isn't zero-width or zero-height"""
537
580
        alloc = self.diff.get_allocation()