/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-04-06 14:53:44 UTC
  • Revision ID: jelmer@samba.org-20110406145344-m6s0i7q7ssjwhmwq
Support use without gtk.Spinner, which is only available in pygtk >= 2.22.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# -*- coding: UTF-8 -*-
2
1
"""Branch window.
3
2
 
4
3
This module contains the code to manage the branch information window,
5
4
which contains both the revision graph and details panes.
6
5
"""
7
6
 
8
 
__copyright__ = "Copyright © 2005 Canonical Ltd."
 
7
__copyright__ = "Copyright (c) 2005 Canonical Ltd."
9
8
__author__    = "Scott James Remnant <scott@ubuntu.com>"
10
9
 
11
10
 
12
11
import gtk
13
 
import gobject
14
 
import pango
15
12
 
16
13
from bzrlib.plugins.gtk import icon_path
17
 
from bzrlib.plugins.gtk.branchview import TreeView, treemodel
18
 
from bzrlib.plugins.gtk.tags import AddTagDialog
 
14
from bzrlib.plugins.gtk.branchview import TreeView
19
15
from bzrlib.plugins.gtk.preferences import PreferencesWindow
20
16
from bzrlib.plugins.gtk.revisionmenu import RevisionMenu
21
17
from bzrlib.plugins.gtk.window import Window
22
18
 
23
 
from bzrlib.config import BranchConfig, GlobalConfig
24
 
from bzrlib.revision import Revision, NULL_REVISION
 
19
from bzrlib.config import GlobalConfig
 
20
from bzrlib.revision import NULL_REVISION
25
21
from bzrlib.trace import mutter
26
22
 
 
23
 
27
24
class BranchWindow(Window):
28
25
    """Branch window.
29
26
 
80
77
        self.accel_group = gtk.AccelGroup()
81
78
        self.add_accel_group(self.accel_group)
82
79
 
83
 
        gtk.Action.set_tool_item_type(gtk.MenuToolButton)
 
80
        if getattr(gtk.Action, 'set_tool_item_type', None) is not None:
 
81
            # Not available before PyGtk-2.10
 
82
            gtk.Action.set_tool_item_type(gtk.MenuToolButton)
84
83
 
85
84
        self.prev_rev_action = gtk.Action("prev-rev", "_Previous Revision", "Go to the previous revision", gtk.STOCK_GO_DOWN)
86
85
        self.prev_rev_action.set_accel_path("<viz>/Go/Previous Revision")
139
138
 
140
139
        self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
141
140
        vbox.show()
142
 
    
 
141
 
143
142
    def construct_menubar(self):
144
143
        menubar = gtk.MenuBar()
145
144
 
149
148
 
150
149
        file_menu_close = gtk.ImageMenuItem(gtk.STOCK_CLOSE, self.accel_group)
151
150
        file_menu_close.connect('activate', lambda x: self.destroy())
152
 
        
 
151
 
153
152
        file_menu_quit = gtk.ImageMenuItem(gtk.STOCK_QUIT, self.accel_group)
154
153
        file_menu_quit.connect('activate', lambda x: gtk.main_quit())
155
 
        
 
154
 
156
155
        if self._parent is not None:
157
156
            file_menu.add(file_menu_close)
158
157
        file_menu.add(file_menu_quit)
190
189
        view_menu_compact = gtk.CheckMenuItem("Show Compact Graph")
191
190
        view_menu_compact.set_active(self.compact_view)
192
191
        view_menu_compact.connect('activate', self._brokenlines_toggled_cb)
193
 
        
 
192
 
194
193
        view_menu_diffs = gtk.CheckMenuItem("Show Diffs")
195
194
        view_menu_diffs.set_active(False)
196
195
        if self.config.get_user_option('viz-show-diffs') == 'True':
197
196
            view_menu_diffs.set_active(True)
198
197
        view_menu_diffs.connect('toggled', self._diff_visibility_changed)
199
 
        
 
198
 
200
199
        view_menu_wide_diffs = gtk.CheckMenuItem("Wide Diffs")
201
200
        view_menu_wide_diffs.set_active(False)
202
201
        if self.config.get_user_option('viz-wide-diffs') == 'True':
203
202
            view_menu_wide_diffs.set_active(True)
204
203
        view_menu_wide_diffs.connect('toggled', self._diff_placement_changed)
205
 
        
 
204
 
206
205
        view_menu_wrap_diffs = gtk.CheckMenuItem("Wrap _Long Lines in Diffs")
207
206
        view_menu_wrap_diffs.set_active(False)
208
207
        if self.config.get_user_option('viz-wrap-diffs') == 'True':
209
208
            view_menu_wrap_diffs.set_active(True)
210
209
        view_menu_wrap_diffs.connect('toggled', self._diff_wrap_changed)
211
 
                
 
210
 
212
211
        view_menu.add(view_menu_toolbar)
213
212
        view_menu.add(view_menu_compact)
214
213
        view_menu.add(gtk.SeparatorMenuItem())
235
234
        go_menu.set_accel_group(self.accel_group)
236
235
        go_menuitem = gtk.MenuItem("_Go")
237
236
        go_menuitem.set_submenu(go_menu)
238
 
        
 
237
 
239
238
        go_menu_next = self.next_rev_action.create_menu_item()
240
239
        go_menu_prev = self.prev_rev_action.create_menu_item()
241
240
 
413
412
                self.prev_rev_action.set_sensitive(False)
414
413
                prev_menu.hide()
415
414
 
416
 
            self.prev_button.set_menu(prev_menu)
 
415
            if getattr(self.prev_button, 'set_menu', None) is not None:
 
416
                self.prev_button.set_menu(prev_menu)
417
417
 
418
418
            next_menu = gtk.Menu()
419
419
            if len(children) > 0:
433
433
                self.next_rev_action.set_sensitive(False)
434
434
                next_menu.hide()
435
435
 
436
 
            self.next_button.set_menu(next_menu)
 
436
            if getattr(self.next_button, 'set_menu', None) is not None:
 
437
                self.next_button.set_menu(next_menu)
437
438
 
438
439
            self.revisionview.set_revision(revision)
439
440
            self.revisionview.set_children(children)
452
453
 
453
454
        self.show_diff(revision.revision_id, parent_id)
454
455
        self.treeview.grab_focus()
455
 
        
 
456
 
456
457
    def _back_clicked_cb(self, *args):
457
458
        """Callback for when the back button is clicked."""
458
459
        self.treeview.back()
459
 
        
 
460
 
460
461
    def _fwd_clicked_cb(self, *args):
461
462
        """Callback for when the forward button is clicked."""
462
463
        self.treeview.forward()
510
511
                return
511
512
 
512
513
        dialog = SearchDialog(index)
513
 
        
 
514
 
514
515
        if dialog.run() == gtk.RESPONSE_OK:
515
516
            self.set_revision(dialog.get_revision())
516
517
 
518
519
 
519
520
    def _about_dialog_cb(self, w):
520
521
        from bzrlib.plugins.gtk.about import AboutDialog
521
 
 
522
522
        AboutDialog().run()
523
523
 
524
524
    def _col_visibility_changed(self, col, property):
559
559
        self._make_diff_nonzero_size()
560
560
 
561
561
        self.treeview.emit('revision-selected')
562
 
    
 
562
 
563
563
    def _diff_wrap_changed(self, widget):
564
564
        """Toggle word wrap in the diff widget."""
565
565
        self.config.set_user_option('viz-wrap-diffs', widget.get_active())
566
566
        self.diff._on_wraplines_toggled(widget)
567
 
    
568
 
    def _show_about_cb(self, w):
569
 
        dialog = AboutDialog()
570
 
        dialog.connect('response', lambda d,r: d.destroy())
571
 
        dialog.run()
572
567
 
573
568
    def _refresh_clicked(self, w):
574
569
        self.treeview.refresh()