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

  • Committer: Daniel Schierbeck
  • Date: 2007-10-30 15:46:43 UTC
  • mto: (326.1.1 dev)
  • mto: This revision was merged to the branch mainline in revision 327.
  • Revision ID: daniel.schierbeck@gmail.com-20071030154643-b2s7zov2tob96fvw
Added 'Changes' page to logview.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
pygtk.require("2.0")
20
20
import gtk
21
21
import pango
 
22
import gtksourceview
 
23
import sys
 
24
 
 
25
from cStringIO import StringIO
22
26
 
23
27
from bzrlib.osutils import format_date
24
 
 
 
28
from bzrlib.diff import show_diff_trees
25
29
 
26
30
class LogView(gtk.Notebook):
27
31
    """ Custom widget for commit log details.
31
35
    """
32
36
 
33
37
    def __init__(self, revision=None, scroll=True, tags=[],
34
 
                 show_children=False):
 
38
                 show_children=False, branch=None):
35
39
        gtk.Notebook.__init__(self)
36
40
        self.show_children = show_children
 
41
 
37
42
        self._create_general()
38
43
        self._create_relations()
 
44
        self._create_changes()
 
45
        
39
46
        self._show_callback = None
40
47
        self._go_callback = None
41
48
        self._clicked_callback = None
42
49
 
 
50
        self._branch = branch
 
51
 
43
52
        if revision is not None:
44
53
            self.set_revision(revision, tags=tags)
45
54
 
84
93
                                          self.children_table)
85
94
        
86
95
        self._add_tags(tags)
 
96
        self._set_diff()
 
97
 
 
98
    def _set_diff(self):
 
99
        parentid = self._revision.parent_ids[0]
 
100
        revid    = self._revision.revision_id
 
101
 
 
102
        (parent_tree, rev_tree) = self._branch.repository.revision_trees([parentid, 
 
103
                                                                   revid])
 
104
 
 
105
        s = StringIO()
 
106
        show_diff_trees(parent_tree, rev_tree, s, None)
 
107
        self.diff_buffer.set_text(s.getvalue().decode(sys.getdefaultencoding(), 'replace'))
87
108
 
88
109
    def _show_clicked_cb(self, widget, revid, parentid):
89
110
        """Callback for when the show button for a parent is clicked."""
168
189
            vbox.pack_start(self._create_children(), expand=False, fill=True)
169
190
        self.append_page(vbox, tab_label=gtk.Label("Relations"))
170
191
        vbox.show()
 
192
 
 
193
    def _create_changes(self):
 
194
        slm = gtksourceview.SourceLanguagesManager()
 
195
 
 
196
        self.diff_buffer = gtksourceview.SourceBuffer()
 
197
        self.diff_buffer.set_language(slm.get_language_from_mime_type("text/x-patch"))
 
198
        self.diff_buffer.set_highlight(True)
 
199
 
 
200
        sourceview = gtksourceview.SourceView(self.diff_buffer)
 
201
        sourceview.set_editable(False)
 
202
        sourceview.modify_font(pango.FontDescription("Monospace"))
 
203
 
 
204
        sourceview.show()
 
205
 
 
206
        win = gtk.ScrolledWindow()
 
207
        win.add(sourceview)
 
208
 
 
209
        self.append_page(win, tab_label=gtk.Label("Changes"))
 
210
        win.show()
171
211
        
172
212
    def _create_headers(self):
173
213
        self.table = gtk.Table(rows=5, columns=2)