/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: 2012-07-09 15:23:26 UTC
  • mto: This revision was merged to the branch mainline in revision 794.
  • Revision ID: jelmer@samba.org-20120709152326-dzxb8zoz0btull7n
Remove bzr-notify.

Show diffs side-by-side

added added

removed removed

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