/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

Merged fixes to the tag actions.

Show diffs side-by-side

added added

removed removed

Lines of Context:
170
170
        go_menu_next = self.next_rev_action.create_menu_item()
171
171
        go_menu_prev = self.prev_rev_action.create_menu_item()
172
172
 
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)
 
173
        self.go_menu_tags = gtk.MenuItem("_Tags")
 
174
        self._update_tags()
189
175
 
190
176
        go_menu.add(go_menu_next)
191
177
        go_menu.add(go_menu_prev)
192
178
        go_menu.add(gtk.SeparatorMenuItem())
193
 
        go_menu.add(go_menu_tags)
 
179
        go_menu.add(self.go_menu_tags)
194
180
 
195
181
        revision_menu = gtk.Menu()
196
182
        revision_menuitem = gtk.MenuItem("_Revision")
253
239
        self.treeview.connect('revisions-loaded', 
254
240
                lambda x: self.loading_msg_box.hide())
255
241
 
 
242
        self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
 
243
 
256
244
        for col in ["revno", "date"]:
257
245
            option = self.config.get_user_option(col + '-column-visible')
258
246
            if option is not None:
297
285
        self.revisionview.show()
298
286
        self.revisionview.set_show_callback(self._show_clicked_cb)
299
287
        self.revisionview.connect('notify::revision', self._go_clicked_cb)
 
288
        self.treeview.connect('tag-added', lambda w, t, r: self.revisionview.update_tags())
300
289
        return self.revisionview
301
290
 
302
291
    def _tag_selected_cb(self, menuitem, revid):
388
377
    def _tag_revision_cb(self, w):
389
378
        try:
390
379
            self.treeview.set_sensitive(False)
391
 
            self.branch.unlock()
392
380
            dialog = AddTagDialog(self.branch.repository, self.treeview.get_revision().revision_id, self.branch)
393
381
            response = dialog.run()
394
382
            if response != gtk.RESPONSE_NONE:
395
383
                dialog.hide()
396
384
            
397
385
                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()
 
386
                    self.treeview.add_tag(dialog.tagname, dialog._revid)
403
387
                
404
388
                dialog.destroy()
405
389
 
406
390
        finally:
407
 
            self.branch.lock_read()
408
 
            self.treeview.emit("revision-selected")
409
391
            self.treeview.set_sensitive(True)
410
392
 
411
393
    def _col_visibility_changed(self, col, property):
425
407
 
426
408
    def _refresh_clicked(self, w):
427
409
        self.treeview.update()
 
410
 
 
411
    def _update_tags(self):
 
412
        menu = gtk.Menu()
 
413
 
 
414
        if self.branch.supports_tags():
 
415
            tags = self.branch.tags.get_tag_dict().items()
 
416
            tags.sort()
 
417
            tags.reverse()
 
418
            for tag, revid in tags:
 
419
                tag_item = gtk.MenuItem(tag)
 
420
                tag_item.connect('activate', self._tag_selected_cb, revid)
 
421
                menu.add(tag_item)
 
422
            self.go_menu_tags.set_submenu(menu)
 
423
 
 
424
            self.go_menu_tags.set_sensitive(len(tags) != 0)
 
425
        else:
 
426
            self.go_menu_tags.set_sensitive(False)
 
427
 
 
428
        self.go_menu_tags.show_all()
 
429
 
 
430