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

  • Committer: Dan Loda
  • Date: 2005-11-07 00:12:15 UTC
  • mto: (0.1.25 gannotate)
  • mto: This revision was merged to the branch mainline in revision 49.
  • Revision ID: danloda@gmail.com-20051107001215-8240df250e9675fe
A little refactoring.

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
 
54
54
        self._create()
55
55
 
 
56
        if self.plain:
 
57
            self.span_selector.hide()
 
58
 
56
59
    def annotate(self, branch, file_id):
57
60
        self.revisions = {}
58
61
        
59
62
        # [revision id, line number, committer, revno, highlight color, line]
60
 
        self.model = gtk.ListStore(gobject.TYPE_STRING,
61
 
                                   gobject.TYPE_STRING,
62
 
                                   gobject.TYPE_STRING,
63
 
                                   gobject.TYPE_STRING,
64
 
                                   gobject.TYPE_STRING,
65
 
                                   gobject.TYPE_STRING)
 
63
        self.annomodel = gtk.ListStore(gobject.TYPE_STRING,
 
64
                                       gobject.TYPE_STRING,
 
65
                                       gobject.TYPE_STRING,
 
66
                                       gobject.TYPE_STRING,
 
67
                                       gobject.TYPE_STRING,
 
68
                                       gobject.TYPE_STRING)
66
69
        
67
70
        last_seen = None
68
71
        for line_no, (revision, revno, line)\
76
79
            if revision.revision_id not in self.revisions:
77
80
                self.revisions[revision.revision_id] = revision
78
81
 
79
 
            self.model.append([revision.revision_id,
80
 
                               line_no + 1,
81
 
                               committer,
82
 
                               revno,
83
 
                               None,
84
 
                               line.rstrip("\r\n")
85
 
                              ])
 
82
            self.annomodel.append([revision.revision_id,
 
83
                                   line_no + 1,
 
84
                                   committer,
 
85
                                   revno,
 
86
                                   None,
 
87
                                   line.rstrip("\r\n")
 
88
                                  ])
86
89
 
87
90
        if not self.plain:
88
91
            self._set_oldest_newest()
90
93
            # so self._span_changed_cb will take care of initial highlighting
91
94
            self.span_selector.activate_default()
92
95
 
93
 
        self.treeview.set_model(self.model)
94
 
        self.treeview.grab_focus()
 
96
        self.annoview.set_model(self.annomodel)
 
97
        self.annoview.grab_focus()
95
98
 
96
99
    def jump_to_line(self, lineno):
97
 
        if lineno > len(self.model) or lineno < 1:
 
100
        if lineno > len(self.annomodel) or lineno < 1:
98
101
            row = 0
99
102
            # FIXME:should really deal with this in the gui. Perhaps a status
100
103
            # bar?
103
106
        else:
104
107
            row = lineno - 1
105
108
 
106
 
        self.treeview.set_cursor(row)
 
109
        self.annoview.set_cursor(row)
107
110
 
108
111
    def _annotate(self, branch, file_id):
109
112
        rev_hist = branch.revision_history()
143
146
    def _span_changed_cb(self, w, span):
144
147
        self.annotate_colormap.set_span(span)
145
148
        now = time.time()
146
 
        self.model.foreach(self._highlight_annotation, now)
 
149
        self.annomodel.foreach(self._highlight_annotation, now)
147
150
 
148
151
    def _highlight_annotation(self, model, path, iter, now):
149
152
        revision_id, = model.get(iter, REVISION_ID_COL)
153
156
                  self.annotate_colormap.get_color(days))
154
157
 
155
158
    def _show_log(self, w):
156
 
        (path, col) = self.treeview.get_cursor()
157
 
        rev_id = self.model[path][REVISION_ID_COL]
 
159
        (path, col) = self.annoview.get_cursor()
 
160
        rev_id = self.annomodel[path][REVISION_ID_COL]
158
161
        self.logview.set_revision(self.revisions[rev_id])
159
162
 
160
163
    def _create(self):
 
164
        self.logview = self._create_log_view()
 
165
        self.annoview = self._create_annotate_view()
 
166
        self.span_selector = self._create_span_selector()
 
167
 
161
168
        vbox = gtk.VBox(False, 12)
162
169
        vbox.set_border_width(12)
163
170
        vbox.show()
 
171
 
 
172
        sw = gtk.ScrolledWindow()
 
173
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
174
        sw.set_shadow_type(gtk.SHADOW_IN)
 
175
        sw.add(self.annoview)
 
176
        sw.show()
164
177
        
165
178
        self.pane = pane = gtk.VPaned()
166
 
        pane.add1(self._create_annotate_view())
167
 
        pane.add2(self._create_log_view())
 
179
        pane.add1(sw)
 
180
        pane.add2(self.logview)
168
181
        pane.show()
169
182
        vbox.pack_start(pane, expand=True, fill=True)
170
183
        
171
184
        hbox = gtk.HBox(True, 6)
172
 
 
173
 
        if not self.plain:
174
 
            hbox.pack_start(self._create_span_selector(),
175
 
                            expand=False, fill=True)
176
 
 
 
185
        hbox.pack_start(self.span_selector, expand=False, fill=True)
177
186
        hbox.pack_start(self._create_button_box(), expand=False, fill=True)
178
187
        hbox.show()
179
188
        vbox.pack_start(hbox, expand=False, fill=True)
181
190
        self.add(vbox)
182
191
 
183
192
    def _create_annotate_view(self):
184
 
        sw = gtk.ScrolledWindow()
185
 
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
186
 
        sw.set_shadow_type(gtk.SHADOW_IN)
187
 
        sw.show()
188
 
 
189
 
        self.treeview = gtk.TreeView()
190
 
        self.treeview.set_rules_hint(False)
191
 
        self.treeview.connect("cursor-changed", self._show_log)
192
 
        sw.add(self.treeview)
193
 
        self.treeview.show()
 
193
        tv = gtk.TreeView()
 
194
        tv.set_rules_hint(False)
 
195
        tv.connect("cursor-changed", self._show_log)
 
196
        tv.show()
194
197
 
195
198
        cell = gtk.CellRendererText()
196
199
        cell.set_property("xalign", 1.0)
197
200
        cell.set_property("ypad", 0)
198
201
        cell.set_property("family", "Monospace")
199
202
        cell.set_property("cell-background-gdk",
200
 
                          self.treeview.get_style().bg[gtk.STATE_NORMAL])
 
203
                          tv.get_style().bg[gtk.STATE_NORMAL])
201
204
        col = gtk.TreeViewColumn()
202
205
        col.set_resizable(False)
203
206
        col.pack_start(cell, expand=True)
204
207
        col.add_attribute(cell, "text", LINE_NUM_COL)
205
 
        self.treeview.append_column(col)
 
208
        tv.append_column(col)
206
209
 
207
210
        cell = gtk.CellRendererText()
208
211
        cell.set_property("ypad", 0)
213
216
        col.set_resizable(True)
214
217
        col.pack_start(cell, expand=True)
215
218
        col.add_attribute(cell, "text", COMMITTER_COL)
216
 
        self.treeview.append_column(col)
 
219
        tv.append_column(col)
217
220
 
218
221
        cell = gtk.CellRendererText()
219
222
        cell.set_property("xalign", 1.0)
224
227
        col.set_resizable(False)
225
228
        col.pack_start(cell, expand=True)
226
229
        col.add_attribute(cell, "markup", REVNO_COL)
227
 
        self.treeview.append_column(col)
 
230
        tv.append_column(col)
228
231
 
229
232
        cell = gtk.CellRendererText()
230
233
        cell.set_property("ypad", 0)
234
237
        col.pack_start(cell, expand=True)
235
238
        col.add_attribute(cell, "foreground", HIGHLIGHT_COLOR_COL)
236
239
        col.add_attribute(cell, "text", TEXT_LINE_COL)
237
 
        self.treeview.append_column(col)
 
240
        tv.append_column(col)
238
241
 
239
 
        self.treeview.set_search_column(LINE_NUM_COL)
 
242
        tv.set_search_column(LINE_NUM_COL)
240
243
        
241
 
        return sw
 
244
        return tv
242
245
 
243
246
    def _create_span_selector(self):
244
 
        self.span_selector = SpanSelector()
245
 
        self.span_selector.connect("span-changed", self._span_changed_cb)
246
 
        self.span_selector.show()
 
247
        ss = SpanSelector()
 
248
        ss.connect("span-changed", self._span_changed_cb)
 
249
        ss.show()
247
250
 
248
 
        return self.span_selector
 
251
        return ss
249
252
 
250
253
    def _create_log_view(self):
251
 
        self.logview = LogView()
252
 
        self.logview.show()
253
 
        return self.logview
 
254
        lv = LogView()
 
255
        lv.show()
 
256
 
 
257
        return lv
254
258
 
255
259
    def _create_button_box(self):
256
260
        box = gtk.HButtonBox()