/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: Curtis Hovey
  • Date: 2011-08-27 18:35:08 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110827183508-ugqbp58na4mtt1no
Updated the pixbuf calls to gtk3.

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("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("_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("_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("_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("_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("_Revert to this revision")
72
72
                item.connect('activate', self.revert)
73
73
                self.append(item)
74
 
                self.show_all()
 
74
 
 
75
        self.show_all()
75
76
 
76
77
    def store_merge_directive(self, item):
77
78
        from bzrlib.plugins.gtk.mergedirective import CreateMergeDirectiveDialog
78
79
        window = CreateMergeDirectiveDialog(self.branch, self.revids[0])
79
80
        window.show()
80
81
 
 
82
    def send_merge_directive(self, item):
 
83
        from bzrlib.plugins.gtk.mergedirective import SendMergeDirectiveDialog
 
84
        from cStringIO import StringIO
 
85
        window = SendMergeDirectiveDialog(self.branch, self.revids[0])
 
86
        if window.run() == Gtk.ResponseType.OK:
 
87
            outf = StringIO()
 
88
            outf.writelines(window.get_merge_directive().to_lines())
 
89
            mail_client = self.branch.get_config().get_mail_client()
 
90
            mail_client.compose_merge_request(window.get_mail_to(), "[MERGE]",
 
91
                                              outf.getvalue())
 
92
        window.destroy()
 
93
 
81
94
    def show_diff(self, item):
82
95
        from bzrlib.plugins.gtk.diff import DiffWindow
83
 
        window = DiffWindow(parent=self.parent)
84
 
        parentids = self.repository.revision_parents(self.revids[0])
85
 
 
 
96
        window = DiffWindow(parent=self._parent)
 
97
        parentids = self.repository.get_revision(self.revids[0]).parent_ids
86
98
        if len(parentids) == 0:
87
99
            parentid = NULL_REVISION
88
100
        else:
89
101
            parentid = parentids[0]
90
 
 
91
102
        rev_tree    = self.repository.revision_tree(self.revids[0])
92
103
        parent_tree = self.repository.revision_tree(parentid)
93
104
        window.set_diff(self.revids[0], rev_tree, parent_tree)
98
109
        dialog = PushDialog(self.repository, self.revids[0], self.branch)
99
110
        response = dialog.run()
100
111
 
101
 
        if response != gtk.RESPONSE_NONE:
 
112
        if response != Gtk.ResponseType.NONE:
102
113
            dialog.destroy()
103
114
 
104
115
    def show_tag(self, item):
106
117
        dialog = AddTagDialog(self.repository, self.revids[0], self.branch)
107
118
        response = dialog.run()
108
119
 
109
 
        if response != gtk.RESPONSE_NONE:
 
120
        if response != Gtk.ResponseType.NONE:
110
121
            dialog.hide()
111
 
        
112
 
            if response == gtk.RESPONSE_OK:
 
122
 
 
123
            if response == Gtk.ResponseType.OK:
113
124
                self.emit('tag-added', dialog.tagname, dialog._revid)
114
 
            
 
125
 
115
126
            dialog.destroy()
116
 
    
 
127
 
117
128
    def revert(self, item):
118
129
        pb = ui.ui_factory.nested_progress_bar()
119
130
        revision_tree = self.branch.repository.revision_tree(self.revids[0])