/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 branchview/treeview.py

  • Committer: rodney.dawes at canonical
  • Date: 2008-10-25 06:02:09 UTC
  • Revision ID: rodney.dawes@canonical.com-20081025060209-irlizouino63cs1m
        * preferences/__init__.py:
        Remove the dialog separator
        Remove useless extra call to self._create_pages()
        Make the default window size smaller
        Set the default border width on various widgets
        Set the current notebook page to the first one

        * preferences/identity.py:
        Set various border widths appropriately
        Align the labels to the left
        Remove the unneeded bold markup from the labels
        Change the "User Id" label to "E-Mail"
        Align the radio group labels to the top of the groups

        * preferences/plugins.py:
        Set various border widths appropriately
        Set the default paned position to something more sensible
        Set the shadow type on the treeview's scrolled window to in
        Align the Author and Version labels to the left

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
from bzrlib import ui
17
17
 
18
18
from bzrlib.plugins.gtk import _i18n
 
19
from bzrlib.plugins.gtk.ui import GtkProgressBar, ProgressPanel
19
20
from linegraph import linegraph, same_branch
20
21
from graphcell import CellRendererGraph
21
22
from treemodel import TreeModel
22
23
from bzrlib.revision import NULL_REVISION
23
24
 
 
25
 
24
26
class TreeView(gtk.VBox):
25
27
 
26
28
    __gproperties__ = {
91
93
                              (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)),
92
94
        'tag-added': (gobject.SIGNAL_RUN_FIRST,
93
95
                              gobject.TYPE_NONE,
94
 
                              (gobject.TYPE_STRING, gobject.TYPE_STRING))
 
96
                              (gobject.TYPE_STRING, gobject.TYPE_STRING)),
 
97
        'refreshed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
 
98
                              ())
95
99
    }
96
100
 
97
101
    def __init__(self, branch, start, maxnum, compact=True):
106
110
        """
107
111
        gtk.VBox.__init__(self, spacing=0)
108
112
 
 
113
        loading_msg_widget = ProgressPanel()
 
114
        if getattr(ui.ui_factory, "set_nested_progress_bar_widget", None) is not None:
 
115
            ui.ui_factory.set_nested_progress_bar_widget(loading_msg_widget.get_progress_bar)
 
116
        self.pack_start(loading_msg_widget, expand=False, fill=True)
 
117
 
109
118
        self.scrolled_window = gtk.ScrolledWindow()
110
119
        self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,
111
120
                                        gtk.POLICY_AUTOMATIC)
118
127
        self.iter = None
119
128
        self.branch = branch
120
129
        self.revision = None
 
130
        self.index = {}
121
131
 
122
132
        self.start = start
123
133
        self.maxnum = maxnum
173
183
        """Return revision id of currently selected revision, or None."""
174
184
        return self.get_property('revision')
175
185
 
 
186
    def has_revision_id(self, revision_id):
 
187
        return (revision_id in self.index)
 
188
 
176
189
    def set_revision(self, revision):
177
190
        self.set_property('revision', revision)
178
191
 
269
282
                       should be broken.
270
283
        """
271
284
 
272
 
        loading_progress = ui.ui_factory.nested_progress_bar()
273
 
        loading_progress.update(msg="Loading ancestry graph", total=5)
 
285
        self.progress_bar = ui.ui_factory.nested_progress_bar()
 
286
        self.progress_bar.update("Loading ancestry graph", 0, 5)
274
287
 
275
288
        try:
276
289
            if self.compact:
287
300
                                                            broken_line_length,
288
301
                                                            show_graph,
289
302
                                                            self.mainline_only,
290
 
                                                            loading_progress)
 
303
                                                            self.progress_bar)
291
304
 
292
305
            self.model = TreeModel(self.branch, linegraphdata)
293
306
            self.graph_cell.columns_len = columns_len
304
317
            else:
305
318
                self.set_revision(revision)
306
319
 
 
320
            self.emit('refreshed')
307
321
            return False
308
322
        finally:
309
 
            loading_progress.finished()
 
323
            self.progress_bar.finished()
310
324
 
311
325
    def construct_treeview(self):
312
326
        self.treeview = gtk.TreeView()
319
333
        if set_tooltip is not None:
320
334
            set_tooltip(treemodel.MESSAGE)
321
335
 
 
336
        self._prev_cursor_path = None
322
337
        self.treeview.connect("cursor-changed",
323
338
                self._on_selection_changed)
324
339
 
390
405
        self.treeview.append_column(self.date_column)
391
406
        
392
407
        return self.treeview
393
 
 
 
408
    
394
409
    def _on_selection_changed(self, treeview):
395
410
        """callback for when the treeview changes."""
396
411
        (path, focus) = treeview.get_cursor()
397
 
        if path is not None:
 
412
        if (path is not None) and (path != self._prev_cursor_path):
 
413
            self._prev_cursor_path = path # avoid emitting twice per click
398
414
            self.iter = self.model.get_iter(path)
399
415
            self.emit('revision-selected')
400
416
 
401
417
    def _on_revision_selected(self, widget, event):
402
 
        from bzrlib.plugins.gtk.revisionmenu import RevisionPopupMenu
 
418
        from bzrlib.plugins.gtk.revisionmenu import RevisionMenu
403
419
        if event.button == 3:
404
 
            menu = RevisionPopupMenu(self.branch.repository, 
 
420
            menu = RevisionMenu(self.branch.repository, 
405
421
                [self.get_revision().revision_id],
406
422
                self.branch)
407
423
            menu.connect('tag-added', lambda w, t, r: self.add_tag(t, r))