/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: 2010-02-28 15:19:15 UTC
  • mfrom: (674.1.1 bzr-gtk)
  • Revision ID: jelmer@samba.org-20100228151915-bvwflj8ongj2fwqd
Merge qense's indicator application work, but don't require appindicator to be installed.

Show diffs side-by-side

added added

removed removed

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