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

  • Committer: Jelmer Vernooij
  • Date: 2007-03-09 17:47:28 UTC
  • Revision ID: jelmer@samba.org-20070309174728-gljlmt9b7fu0rrn9
Add simple test for tortoise_bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
55
55
 
56
56
        self._create()
57
57
        self.revisions = {}
58
 
        self.history = []
59
58
 
60
59
    def annotate(self, tree, branch, file_id):
61
60
        self.annotations = []
178
177
            return None
179
178
        return self.annomodel[path][REVISION_ID_COL]
180
179
 
181
 
    def _activate_selected_revision(self, w):
 
180
    def _show_log(self, w):
182
181
        rev_id = self._selected_revision()
183
182
        if rev_id is None:
184
183
            return
185
 
        selected = self.revisions[rev_id]
186
 
        self.logview.set_revision(selected)
187
 
        self.back_button.set_sensitive(len(selected.parent_ids) != 0)
 
184
        self.logview.set_revision(self.revisions[rev_id])
188
185
 
189
186
    def _create(self):
190
187
        self.logview = self._create_log_view()
191
188
        self.annoview = self._create_annotate_view()
192
189
 
193
 
        vbox = gtk.VBox(False)
 
190
        vbox = gtk.VBox(False, 12)
 
191
        vbox.set_border_width(12)
194
192
        vbox.show()
195
193
 
196
194
        sw = gtk.ScrolledWindow()
199
197
        sw.add(self.annoview)
200
198
        self.annoview.gwindow = self
201
199
        sw.show()
202
 
 
203
 
        swbox = gtk.VBox()
204
 
        swbox.pack_start(sw)
205
 
        swbox.show()
206
 
 
207
 
        hbox = gtk.HBox(False, 6)
208
 
        self.back_button = self._create_back_button()
209
 
        hbox.pack_start(self.back_button, expand=False, fill=True)
210
 
        self.forward_button = self._create_forward_button()
211
 
        hbox.pack_start(self.forward_button, expand=False, fill=True)
212
 
        hbox.show()
213
 
        vbox.pack_start(hbox, expand=False, fill=True)
214
200
        
215
201
        self.pane = pane = gtk.VPaned()
216
 
        pane.add1(swbox)
 
202
        pane.add1(sw)
217
203
        pane.add2(self.logview)
218
204
        pane.show()
219
205
        vbox.pack_start(pane, expand=True, fill=True)
220
206
 
221
207
        self._search = SearchBox()
222
 
        swbox.pack_start(self._search, expand=False, fill=True)
 
208
        vbox.pack_start(self._search, expand=False, fill=True)
223
209
        accels = gtk.AccelGroup()
224
210
        accels.connect_group(gtk.keysyms.f, gtk.gdk.CONTROL_MASK,
225
211
                             gtk.ACCEL_LOCKED,
229
215
                             self._search_by_line)
230
216
        self.add_accel_group(accels)
231
217
 
 
218
        hbox = gtk.HBox(True, 6)
 
219
        hbox.pack_start(self._create_prev_button(), expand=False, fill=True)
 
220
        hbox.pack_end(self._create_button_box(), expand=False, fill=True)
 
221
        hbox.show()
 
222
        vbox.pack_start(hbox, expand=False, fill=True)
 
223
 
232
224
        self.add(vbox)
233
225
 
234
226
    def _search_by_text(self, accel_group, window, key, modifiers):
262
254
    def _create_annotate_view(self):
263
255
        tv = gtk.TreeView()
264
256
        tv.set_rules_hint(False)
265
 
        tv.connect("cursor-changed", self._activate_selected_revision)
 
257
        tv.connect("cursor-changed", self._show_log)
266
258
        tv.show()
267
259
        tv.connect("row-activated", self.row_diff)
268
260
 
322
314
        lv.show()
323
315
        return lv
324
316
 
325
 
    def _create_back_button(self):
 
317
    def _create_button_box(self):
 
318
        box = gtk.HButtonBox()
 
319
        box.set_layout(gtk.BUTTONBOX_END)
 
320
        box.show()
 
321
 
 
322
        button = gtk.Button()
 
323
        button.set_use_stock(True)
 
324
        button.set_label("gtk-close")
 
325
        button.connect("clicked", lambda w: self.destroy())
 
326
        button.show()
 
327
 
 
328
        box.pack_start(button, expand=False, fill=False)
 
329
 
 
330
        return box
 
331
 
 
332
    def _create_prev_button(self):
 
333
        box = gtk.HButtonBox()
 
334
        box.set_layout(gtk.BUTTONBOX_START)
 
335
        box.show()
 
336
        
326
337
        button = gtk.Button()
327
338
        button.set_use_stock(True)
328
339
        button.set_label("gtk-go-back")
329
340
        button.connect("clicked", lambda w: self.go_back())
330
 
        button.set_relief(gtk.RELIEF_NONE)
331
 
        button.show()
332
 
        return button
333
 
 
334
 
    def _create_forward_button(self):
335
 
        button = gtk.Button()
336
 
        button.set_use_stock(True)
337
 
        button.set_label("gtk-go-forward")
338
 
        button.connect("clicked", lambda w: self.go_forward())
339
 
        button.set_relief(gtk.RELIEF_NONE)
340
 
        button.show()
341
 
        button.set_sensitive(False)
342
 
        return button
 
341
        button.show()
 
342
        box.pack_start(button, expand=False, fill=False)
 
343
        return box
343
344
 
344
345
    def go_back(self):
345
 
        self.history.append(self.tree)
346
 
        self.forward_button.set_sensitive(True)
347
346
        rev_id = self._selected_revision()
348
347
        parent_id = self.revisions[rev_id].parent_ids[0]
349
 
        target_tree = self.branch.repository.revision_tree(parent_id)
350
 
        self._go(target_tree)
351
 
 
352
 
    def go_forward(self):
353
 
        if len(self.history) == 0:
354
 
            return
355
 
        target_tree = self.history.pop()
356
 
        if len(self.history) == 0:
357
 
            self.forward_button.set_sensitive(False)
358
 
        self._go(target_tree)
359
 
 
360
 
    def _go(self, target_tree):
361
 
        rev_id = self._selected_revision()
362
 
        if self.file_id in target_tree:
363
 
            offset = self.get_scroll_offset(target_tree)
 
348
        tree = self.branch.repository.revision_tree(parent_id)
 
349
        if self.file_id in tree:
 
350
            offset = self.get_scroll_offset(tree)
364
351
            (row,), col = self.annoview.get_cursor()
365
 
            self.annotate(target_tree, self.branch, self.file_id)
366
 
            new_row = row+offset
367
 
            if new_row < 0:
368
 
                new_row = 0
369
 
            self.annoview.set_cursor(new_row)
 
352
            self.annotate(tree, self.branch, self.file_id)
 
353
            self.annoview.set_cursor(row+offset)
370
354
 
371
355
    def get_scroll_offset(self, tree):
372
356
        old = self.tree.get_file(self.file_id)