Kiln » TortoiseHg » TortoiseHg
Clone URL:  
histdetails.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# histdetails.py - TortoiseHg dialog for defining log viewing details # # Copyright 2009 Adrian Buehlmann <adrian@cadifra.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. import gtk import gobject from tortoisehg.util.i18n import _ from tortoisehg.hgtk import gtklib class LogDetailsDialog(gtk.Dialog): def __init__(self, model, apply_func): buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE) super(LogDetailsDialog, self).__init__( flags=gtk.DIALOG_MODAL, buttons=buttons) self.apply_func = apply_func self.dirty = False gtklib.set_tortoise_icon(self, 'general.ico') gtklib.set_tortoise_keys(self) self._btn_apply = gtk.Button(_('Apply')) self._btn_apply.set_sensitive(False) self._btn_apply.connect('clicked', self._btn_apply_clicked) self.action_area.pack_end(self._btn_apply) self.set_title(_('Log Details')) self.set_default_size(350, 120) hbox = gtk.HBox() lb = gtk.Label(_('Columns') + ':') hbox.pack_start(lb, False, False, 4) self.vbox.pack_start(hbox, False, False, 4) tv = gtk.TreeView(model) tv.set_headers_visible(False) cr = gtk.CellRendererToggle() cr.set_property('activatable', True) def toggled(cell, path): model[path][0] = not model[path][0] self.dirty = True self.update_buttons() cr.connect('toggled', toggled) show_col = gtk.TreeViewColumn('', cr, active=0) tv.append_column(show_col) cr = gtk.CellRendererText() info_col = gtk.TreeViewColumn('', cr, text=1) tv.append_column(info_col) def activated(treeview, path, column): toggled(None, path) tv.connect('row-activated', activated) vbox = gtk.VBox() vbox.set_border_width(4) vbox.pack_start(tv) self.vbox.pack_start(vbox, True, True) self.show_all() def update_buttons(self): self._btn_apply.set_sensitive(self.dirty) def _btn_apply_clicked(self, button, data=None): self.apply_func() self.dirty = False self.update_buttons()