/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: 2008-06-27 16:55:09 UTC
  • mto: This revision was merged to the branch mainline in revision 506.
  • Revision ID: jelmer@samba.org-20080627165509-7b68w2chzvvgc8vz
Use helper script to open patches.

Show diffs side-by-side

added added

removed removed

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