/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
 
        self._no_back = set()
60
58
 
61
59
    def annotate(self, tree, branch, file_id):
62
60
        self.annotations = []
179
177
            return None
180
178
        return self.annomodel[path][REVISION_ID_COL]
181
179
 
182
 
    def _activate_selected_revision(self, w):
 
180
    def _show_log(self, w):
183
181
        rev_id = self._selected_revision()
184
182
        if rev_id is None:
185
183
            return
186
 
        selected = self.revisions[rev_id]
187
 
        self.logview.set_revision(selected)
188
 
        if (len(selected.parent_ids) != 0 and selected.parent_ids[0] not in
189
 
            self._no_back):
190
 
            enable_back = True
191
 
        else:
192
 
            enable_back = False
193
 
        self.back_button.set_sensitive(enable_back)
 
184
        self.logview.set_revision(self.revisions[rev_id])
194
185
 
195
186
    def _create(self):
196
187
        self.logview = self._create_log_view()
197
188
        self.annoview = self._create_annotate_view()
198
189
 
199
 
        vbox = gtk.VBox(False)
 
190
        vbox = gtk.VBox(False, 12)
 
191
        vbox.set_border_width(12)
200
192
        vbox.show()
201
193
 
202
194
        sw = gtk.ScrolledWindow()
205
197
        sw.add(self.annoview)
206
198
        self.annoview.gwindow = self
207
199
        sw.show()
208
 
 
209
 
        swbox = gtk.VBox()
210
 
        swbox.pack_start(sw)
211
 
        swbox.show()
212
 
 
213
 
        hbox = gtk.HBox(False, 6)
214
 
        self.back_button = self._create_back_button()
215
 
        hbox.pack_start(self.back_button, expand=False, fill=True)
216
 
        self.forward_button = self._create_forward_button()
217
 
        hbox.pack_start(self.forward_button, expand=False, fill=True)
218
 
        hbox.show()
219
 
        vbox.pack_start(hbox, expand=False, fill=True)
220
200
        
221
201
        self.pane = pane = gtk.VPaned()
222
 
        pane.add1(swbox)
 
202
        pane.add1(sw)
223
203
        pane.add2(self.logview)
224
204
        pane.show()
225
205
        vbox.pack_start(pane, expand=True, fill=True)
226
206
 
227
207
        self._search = SearchBox()
228
 
        swbox.pack_start(self._search, expand=False, fill=True)
 
208
        vbox.pack_start(self._search, expand=False, fill=True)
229
209
        accels = gtk.AccelGroup()
230
210
        accels.connect_group(gtk.keysyms.f, gtk.gdk.CONTROL_MASK,
231
211
                             gtk.ACCEL_LOCKED,
235
215
                             self._search_by_line)
236
216
        self.add_accel_group(accels)
237
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
 
238
224
        self.add(vbox)
239
225
 
240
226
    def _search_by_text(self, accel_group, window, key, modifiers):
268
254
    def _create_annotate_view(self):
269
255
        tv = gtk.TreeView()
270
256
        tv.set_rules_hint(False)
271
 
        tv.connect("cursor-changed", self._activate_selected_revision)
 
257
        tv.connect("cursor-changed", self._show_log)
272
258
        tv.show()
273
259
        tv.connect("row-activated", self.row_diff)
274
260
 
328
314
        lv.show()
329
315
        return lv
330
316
 
331
 
    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
        
332
337
        button = gtk.Button()
333
338
        button.set_use_stock(True)
334
339
        button.set_label("gtk-go-back")
335
340
        button.connect("clicked", lambda w: self.go_back())
336
 
        button.set_relief(gtk.RELIEF_NONE)
337
 
        button.show()
338
 
        return button
339
 
 
340
 
    def _create_forward_button(self):
341
 
        button = gtk.Button()
342
 
        button.set_use_stock(True)
343
 
        button.set_label("gtk-go-forward")
344
 
        button.connect("clicked", lambda w: self.go_forward())
345
 
        button.set_relief(gtk.RELIEF_NONE)
346
 
        button.show()
347
 
        button.set_sensitive(False)
348
 
        return button
 
341
        button.show()
 
342
        box.pack_start(button, expand=False, fill=False)
 
343
        return box
349
344
 
350
345
    def go_back(self):
351
 
        last_tree = self.tree
352
346
        rev_id = self._selected_revision()
353
347
        parent_id = self.revisions[rev_id].parent_ids[0]
354
 
        target_tree = self.branch.repository.revision_tree(parent_id)
355
 
        if self._go(target_tree):
356
 
            self.history.append(last_tree)
357
 
            self.forward_button.set_sensitive(True)
358
 
        else:
359
 
            self._no_back.add(parent_id)
360
 
            self.back_button.set_sensitive(False)
361
 
 
362
 
    def go_forward(self):
363
 
        if len(self.history) == 0:
364
 
            return
365
 
        target_tree = self.history.pop()
366
 
        if len(self.history) == 0:
367
 
            self.forward_button.set_sensitive(False)
368
 
        self._go(target_tree)
369
 
 
370
 
    def _go(self, target_tree):
371
 
        rev_id = self._selected_revision()
372
 
        if self.file_id in target_tree:
373
 
            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)
374
351
            (row,), col = self.annoview.get_cursor()
375
 
            self.annotate(target_tree, self.branch, self.file_id)
376
 
            new_row = row+offset
377
 
            if new_row < 0:
378
 
                new_row = 0
379
 
            self.annoview.set_cursor(new_row)
380
 
            return True
381
 
        else:
382
 
            return False
 
352
            self.annotate(tree, self.branch, self.file_id)
 
353
            self.annoview.set_cursor(row+offset)
383
354
 
384
355
    def get_scroll_offset(self, tree):
385
356
        old = self.tree.get_file(self.file_id)