/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: Aaron Bentley
  • Date: 2008-02-23 04:55:56 UTC
  • mfrom: (423.1.16 trunk)
  • Revision ID: aaron@aaronbentley.com-20080223045556-xl3kf2v61crquq83
MergeĀ fromĀ mainline

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
from bzrlib.plugins.gtk.window import Window
17
17
from bzrlib.plugins.gtk.tags import AddTagDialog
18
18
from bzrlib.plugins.gtk.preferences import PreferencesWindow
 
19
from bzrlib.plugins.gtk.branchview import TreeView
19
20
from bzrlib.revision import Revision
20
21
from bzrlib.config import BranchConfig
21
22
from bzrlib.config import GlobalConfig
22
 
from treeview import TreeView
23
23
 
24
24
class BranchWindow(Window):
25
25
    """Branch window.
100
100
 
101
101
        vbox.pack_start(self.construct_menubar(), expand=False, fill=True)
102
102
        vbox.pack_start(self.construct_navigation(), expand=False, fill=True)
103
 
        vbox.pack_start(self.construct_loading_msg(), expand=False, fill=True)
104
103
        
105
104
        vbox.pack_start(self.paned, expand=True, fill=True)
106
105
        vbox.set_focus_child(self.paned)
170
169
        go_menu_next = self.next_rev_action.create_menu_item()
171
170
        go_menu_prev = self.prev_rev_action.create_menu_item()
172
171
 
173
 
        tags_menu = gtk.Menu()
174
 
        go_menu_tags = gtk.MenuItem("_Tags")
175
 
        go_menu_tags.set_submenu(tags_menu)
176
 
 
177
 
        if self.branch.supports_tags():
178
 
            tags = self.branch.tags.get_tag_dict().items()
179
 
            tags.sort()
180
 
            tags.reverse()
181
 
            for tag, revid in tags:
182
 
                tag_item = gtk.MenuItem(tag)
183
 
                tag_item.connect('activate', self._tag_selected_cb, revid)
184
 
                tags_menu.add(tag_item)
185
 
 
186
 
            go_menu_tags.set_sensitive(len(tags) != 0)
187
 
        else:
188
 
            go_menu_tags.set_sensitive(False)
 
172
        self.go_menu_tags = gtk.MenuItem("_Tags")
 
173
        self._update_tags()
189
174
 
190
175
        go_menu.add(go_menu_next)
191
176
        go_menu.add(go_menu_prev)
192
177
        go_menu.add(gtk.SeparatorMenuItem())
193
 
        go_menu.add(go_menu_tags)
 
178
        go_menu.add(self.go_menu_tags)
194
179
 
195
180
        revision_menu = gtk.Menu()
196
181
        revision_menuitem = gtk.MenuItem("_Revision")
213
198
        branch_menu.add(gtk.MenuItem("Pu_ll Revisions"))
214
199
        branch_menu.add(gtk.MenuItem("Pu_sh Revisions"))
215
200
 
 
201
        help_menu = gtk.Menu()
 
202
        help_menuitem = gtk.MenuItem("_Help")
 
203
        help_menuitem.set_submenu(help_menu)
 
204
 
 
205
        help_about_menuitem = gtk.ImageMenuItem(gtk.STOCK_ABOUT, self.accel_group)
 
206
        help_about_menuitem.connect('activate', self._about_dialog_cb)
 
207
 
 
208
        help_menu.add(help_about_menuitem)
 
209
 
216
210
        menubar.add(file_menuitem)
217
211
        menubar.add(edit_menuitem)
218
212
        menubar.add(view_menuitem)
219
213
        menubar.add(go_menuitem)
220
214
        menubar.add(revision_menuitem)
221
215
        menubar.add(branch_menuitem)
 
216
        menubar.add(help_menuitem)
222
217
        menubar.show_all()
223
218
 
224
219
        return menubar
225
 
    
226
 
    def construct_loading_msg(self):
227
 
        image_loading = gtk.image_new_from_stock(gtk.STOCK_REFRESH,
228
 
                                                 gtk.ICON_SIZE_BUTTON)
229
 
        image_loading.show()
230
 
        
231
 
        label_loading = gtk.Label(_("Please wait, loading ancestral graph..."))
232
 
        label_loading.set_alignment(0.0, 0.5)
233
 
        label_loading.show()
234
 
        
235
 
        self.loading_msg_box = gtk.HBox()
236
 
        self.loading_msg_box.set_spacing(5)
237
 
        self.loading_msg_box.set_border_width(5)        
238
 
        self.loading_msg_box.pack_start(image_loading, False, False)
239
 
        self.loading_msg_box.pack_start(label_loading, True, True)
240
 
        self.loading_msg_box.show()
241
 
        
242
 
        return self.loading_msg_box
243
220
 
244
221
    def construct_top(self):
245
222
        """Construct the top-half of the window."""
250
227
        self.treeview.connect('revision-selected',
251
228
                self._treeselection_changed_cb)
252
229
 
253
 
        self.treeview.connect('revisions-loaded', 
254
 
                lambda x: self.loading_msg_box.hide())
 
230
        self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
255
231
 
256
232
        for col in ["revno", "date"]:
257
233
            option = self.config.get_user_option(col + '-column-visible')
297
273
        self.revisionview.show()
298
274
        self.revisionview.set_show_callback(self._show_clicked_cb)
299
275
        self.revisionview.connect('notify::revision', self._go_clicked_cb)
 
276
        self.treeview.connect('tag-added', lambda w, t, r: self.revisionview.update_tags())
300
277
        return self.revisionview
301
278
 
302
279
    def _tag_selected_cb(self, menuitem, revid):
388
365
    def _tag_revision_cb(self, w):
389
366
        try:
390
367
            self.treeview.set_sensitive(False)
391
 
            self.branch.unlock()
392
368
            dialog = AddTagDialog(self.branch.repository, self.treeview.get_revision().revision_id, self.branch)
393
369
            response = dialog.run()
394
370
            if response != gtk.RESPONSE_NONE:
395
371
                dialog.hide()
396
372
            
397
373
                if response == gtk.RESPONSE_OK:
398
 
                    try:
399
 
                        self.branch.lock_write()
400
 
                        self.branch.tags.set_tag(dialog.tagname, dialog._revid)
401
 
                    finally:
402
 
                        self.branch.unlock()
 
374
                    self.treeview.add_tag(dialog.tagname, dialog._revid)
403
375
                
404
376
                dialog.destroy()
405
377
 
406
378
        finally:
407
 
            self.branch.lock_read()
408
 
            self.treeview.emit("revision-selected")
409
379
            self.treeview.set_sensitive(True)
410
380
 
 
381
    def _about_dialog_cb(self, w):
 
382
        from bzrlib.plugins.gtk.about import AboutDialog
 
383
 
 
384
        AboutDialog().run()
 
385
 
411
386
    def _col_visibility_changed(self, col, property):
412
387
        self.config.set_user_option(property + '-column-visible', col.get_active())
413
388
        self.treeview.set_property(property + '-column-visible', col.get_active())
424
399
        dialog.run()
425
400
 
426
401
    def _refresh_clicked(self, w):
427
 
        self.treeview.update()
 
402
        self.treeview.refresh()
 
403
 
 
404
    def _update_tags(self):
 
405
        menu = gtk.Menu()
 
406
 
 
407
        if self.branch.supports_tags():
 
408
            tags = self.branch.tags.get_tag_dict().items()
 
409
            tags.sort()
 
410
            tags.reverse()
 
411
            for tag, revid in tags:
 
412
                tag_item = gtk.MenuItem(tag)
 
413
                tag_item.connect('activate', self._tag_selected_cb, revid)
 
414
                menu.add(tag_item)
 
415
            self.go_menu_tags.set_submenu(menu)
 
416
 
 
417
            self.go_menu_tags.set_sensitive(len(tags) != 0)
 
418
        else:
 
419
            self.go_menu_tags.set_sensitive(False)
 
420
 
 
421
        self.go_menu_tags.show_all()
 
422
 
 
423