/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: John Arbash Meinel
  • Date: 2007-09-25 20:59:50 UTC
  • mto: (322.1.1 trunk) (330.3.3 trunk)
  • mto: This revision was merged to the branch mainline in revision 368.
  • Revision ID: john@arbash-meinel.com-20070925205950-rfcj7y5ryg4s9gw7
Have the ability to tell the log view that we only care about a specific file_id.

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
 
46
46
        if revision is not None:
47
47
            self.set_revision(revision, tags=tags)
 
48
        self.set_file_id(None)
48
49
 
49
50
    def set_show_callback(self, callback):
50
51
        self._show_callback = callback
52
53
    def set_go_callback(self, callback):
53
54
        self._go_callback = callback
54
55
 
 
56
    def set_file_id(self, file_id):
 
57
        """Set a specific file id that we want to track.
 
58
 
 
59
        This just effects the display of a per-file commit message.
 
60
        If it is set to None, then all commit messages will be shown.
 
61
        """
 
62
        self._file_id = file_id
 
63
 
55
64
    def set_revision(self, revision, tags=[]):
56
65
        self._revision = revision
57
66
        self.revision_id.set_text(revision.revision_id)
80
89
        self._add_parents(revision.parent_ids)
81
90
        self._add_tags(tags)
82
91
 
83
 
        file_info = revision.properties.get('sp1-exp-file-info', None)
 
92
        file_info = revision.properties.get('file-info', None)
84
93
        if file_info is not None:
85
94
            file_info = bencode.bdecode(file_info)
86
95
 
87
96
        if file_info:
88
 
            text = []
89
 
            for fi in file_info:
90
 
                text.append('%(file_id)s\n%(comments)s' % fi)
91
 
            self.file_info_buffer.set_text('\n'.join(text))
92
 
            self.file_info_box.show()
 
97
            if self._file_id is None:
 
98
                text = []
 
99
                for fi in file_info:
 
100
                    text.append('%(path)s\n%(message)s' % fi)
 
101
                self.file_info_buffer.set_text('\n'.join(text))
 
102
                self.file_info_label.set_markup("<b>File Messages:</b>")
 
103
                self.file_info_box.show()
 
104
            else:
 
105
                text = []
 
106
                for fi in file_info:
 
107
                    if fi['file_id'] == self._file_id:
 
108
                        text.append(fi['message'])
 
109
                if text:
 
110
                    self.file_info_buffer.set_text('\n'.join(text))
 
111
                    self.file_info_label.set_markup("<b>File Message:</b>")
 
112
                    self.file_info_box.show()
 
113
                else:
 
114
                    self.file_info_box.hide()
93
115
        else:
94
116
            self.file_info_box.hide()
95
117
 
304
326
 
305
327
    def _create_file_info_view(self):
306
328
        self.file_info_box = gtk.VBox()
307
 
        label = gtk.Label()
308
 
        label.set_markup("<b>Per File Messages:</b>")
309
 
        label.show()
 
329
        self.file_info_label = gtk.Label()
 
330
        self.file_info_label.set_markup("<b>File Messages:</b>")
 
331
        self.file_info_label.show()
310
332
        self.file_info_buffer = gtk.TextBuffer()
311
333
        tv = gtk.TextView(self.file_info_buffer)
312
334
        tv.set_editable(False)
313
335
        tv.set_wrap_mode(gtk.WRAP_WORD)
314
336
        tv.modify_font(pango.FontDescription("Monospace"))
315
337
        tv.show()
316
 
        self.file_info_box.pack_start(label)
 
338
        self.file_info_box.pack_start(self.file_info_label)
317
339
        self.file_info_box.pack_start(tv)
318
340
        self.file_info_box.hide() # Only shown when there are per-file messages
319
341
        return self.file_info_box