/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 revisionmenu.py

  • Committer: Jelmer Vernooij
  • Date: 2011-04-10 18:44:39 UTC
  • mto: This revision was merged to the branch mainline in revision 730.
  • Revision ID: jelmer@samba.org-20110410184439-g7hqaacexqtviq13
Move i18n support to a separate file, so gettext files aren't loaded unless bzr-gtk is used.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
except:
22
22
    pass
23
23
 
24
 
import bzrlib
25
24
import gtk
26
25
import gobject
27
 
from bzrlib import (errors, ui)
 
26
from bzrlib import ui
28
27
from bzrlib.revision import NULL_REVISION
29
28
 
30
 
class RevisionPopupMenu(gtk.Menu):
 
29
class RevisionMenu(gtk.Menu):
31
30
 
32
31
    __gsignals__ = {
33
32
            'tag-added': (
37
36
            )
38
37
    }
39
38
 
40
 
    def __init__(self, repository, revids, branch=None, wt=None):
41
 
        super(RevisionPopupMenu, self).__init__()
 
39
    def __init__(self, repository, revids, branch=None, wt=None, parent=None):
 
40
        super(RevisionMenu, self).__init__()
 
41
        self._parent = parent
42
42
        self.branch = branch
43
43
        self.repository = repository
44
44
        self.wt = wt
 
45
        self.set_revision_ids(revids)
 
46
 
 
47
    def set_revision_ids(self, revids):
 
48
        assert isinstance(revids, list)
 
49
        for c in self.get_children():
 
50
            self.remove(c)
45
51
        self.revids = revids
46
52
        self.create_items()
47
53
 
50
56
            item = gtk.MenuItem("View _Changes")
51
57
            item.connect('activate', self.show_diff)
52
58
            self.append(item)
53
 
            self.show_all()
54
59
 
55
60
            item = gtk.MenuItem("_Push")
56
61
            item.connect('activate', self.show_push)
57
62
            self.append(item)
58
 
            self.show_all()
59
63
 
60
64
            item = gtk.MenuItem("_Tag Revision")
61
65
            item.connect('activate', self.show_tag)
62
66
            self.append(item)
63
 
            self.show_all()
64
67
 
65
68
            item = gtk.MenuItem("_Merge Directive")
66
69
            item.connect('activate', self.store_merge_directive)
67
70
            # FIXME: self.append(item)
68
 
            self.show_all()
69
 
            
 
71
 
 
72
            item = gtk.MenuItem("_Send Merge Directive")
 
73
            item.connect('activate', self.send_merge_directive)
 
74
            self.append(item)
 
75
 
70
76
            if self.wt:
71
77
                item = gtk.MenuItem("_Revert to this revision")
72
78
                item.connect('activate', self.revert)
73
79
                self.append(item)
74
 
                self.show_all()
 
80
 
 
81
        self.show_all()
75
82
 
76
83
    def store_merge_directive(self, item):
77
84
        from bzrlib.plugins.gtk.mergedirective import CreateMergeDirectiveDialog
78
85
        window = CreateMergeDirectiveDialog(self.branch, self.revids[0])
79
86
        window.show()
80
87
 
 
88
    def send_merge_directive(self, item):
 
89
        from bzrlib.plugins.gtk.mergedirective import SendMergeDirectiveDialog
 
90
        from cStringIO import StringIO
 
91
        window = SendMergeDirectiveDialog(self.branch, self.revids[0])
 
92
        if window.run() == gtk.RESPONSE_OK:
 
93
            outf = StringIO()
 
94
            outf.writelines(window.get_merge_directive().to_lines())
 
95
            mail_client = self.branch.get_config().get_mail_client()
 
96
            mail_client.compose_merge_request(window.get_mail_to(), "[MERGE]",
 
97
                                              outf.getvalue())
 
98
        window.destroy()
 
99
 
81
100
    def show_diff(self, item):
82
101
        from bzrlib.plugins.gtk.diff import DiffWindow
83
 
        window = DiffWindow(parent=self.parent)
84
 
        parentids = self.repository.revision_parents(self.revids[0])
85
 
 
 
102
        window = DiffWindow(parent=self._parent)
 
103
        parentids = self.repository.get_revision(self.revids[0]).parent_ids
86
104
        if len(parentids) == 0:
87
105
            parentid = NULL_REVISION
88
106
        else:
89
107
            parentid = parentids[0]
90
 
 
91
108
        rev_tree    = self.repository.revision_tree(self.revids[0])
92
109
        parent_tree = self.repository.revision_tree(parentid)
93
110
        window.set_diff(self.revids[0], rev_tree, parent_tree)
108
125
 
109
126
        if response != gtk.RESPONSE_NONE:
110
127
            dialog.hide()
111
 
        
 
128
 
112
129
            if response == gtk.RESPONSE_OK:
113
130
                self.emit('tag-added', dialog.tagname, dialog._revid)
114
 
            
 
131
 
115
132
            dialog.destroy()
116
 
    
 
133
 
117
134
    def revert(self, item):
118
135
        pb = ui.ui_factory.nested_progress_bar()
119
136
        revision_tree = self.branch.repository.revision_tree(self.revids[0])