/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-07-31 15:52:43 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110731155243-ln8istmxbryhb4pz
Mechanical changes made by pygi.convert.sh.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
except:
22
22
    pass
23
23
 
24
 
import bzrlib
25
 
import gtk
26
 
import gobject
27
 
from bzrlib import (errors, ui)
 
24
from gi.repository import Gtk
 
25
from gi.repository import GObject
 
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': (
34
 
                gobject.SIGNAL_RUN_FIRST,
35
 
                gobject.TYPE_NONE,
36
 
                (gobject.TYPE_STRING, gobject.TYPE_STRING)
 
33
                GObject.SignalFlags.RUN_FIRST,
 
34
                None,
 
35
                (GObject.TYPE_STRING, GObject.TYPE_STRING)
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
 
48
54
    def create_items(self):
49
55
        if len(self.revids) == 1:
50
 
            item = gtk.MenuItem("View _Changes")
 
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
 
            item = gtk.MenuItem("_Push")
 
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
 
            item = gtk.MenuItem("_Tag Revision")
 
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
 
            item = gtk.MenuItem("_Merge Directive")
 
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
 
                item = gtk.MenuItem("_Revert to this revision")
 
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.ResponseType.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)
98
115
        dialog = PushDialog(self.repository, self.revids[0], self.branch)
99
116
        response = dialog.run()
100
117
 
101
 
        if response != gtk.RESPONSE_NONE:
 
118
        if response != Gtk.ResponseType.NONE:
102
119
            dialog.destroy()
103
120
 
104
121
    def show_tag(self, item):
106
123
        dialog = AddTagDialog(self.repository, self.revids[0], self.branch)
107
124
        response = dialog.run()
108
125
 
109
 
        if response != gtk.RESPONSE_NONE:
 
126
        if response != Gtk.ResponseType.NONE:
110
127
            dialog.hide()
111
 
        
112
 
            if response == gtk.RESPONSE_OK:
 
128
 
 
129
            if response == Gtk.ResponseType.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])