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

  • Committer: Jelmer Vernooij
  • Date: 2011-03-23 09:49:44 UTC
  • mfrom: (723.1.1 isearch)
  • Revision ID: jelmer@samba.org-20110323094944-7n5h1vif3xpbze3p
Merge support for interactive substring search in bzr viz and annotate.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
 
from gi.repository import GObject
19
 
from gi.repository import Gtk
 
18
import pygtk
 
19
pygtk.require("2.0")
 
20
import gobject
 
21
import gtk
20
22
 
21
23
 
22
24
(
27
29
) = range(4)
28
30
 
29
31
 
30
 
class SpanSelector(Gtk.HBox):
 
32
class SpanSelector(gtk.HBox):
31
33
    """Encapsulates creation and functionality of widgets used for changing
32
34
    highlight spans.
33
35
 
39
41
    last_selected = None
40
42
 
41
43
    def __init__(self, homogeneous=False, spacing=6):
42
 
        GObject.GObject.__init__(self, homogeneous, spacing)
 
44
        gtk.HBox.__init__(self, homogeneous, spacing)
43
45
 
44
46
        self.model = self._create_model()
45
47
        self.combo = self._create_combobox(self.model)
46
48
        self.entry = self._create_custom_entry()
47
49
 
48
 
        label = Gtk.Label(label="Highlighting spans:")
 
50
        label = gtk.Label("Highlighting spans:")
49
51
        label.show()
50
52
 
51
53
        self.pack_start(label, expand=False, fill=True)
65
67
        self.max_custom_spans = n
66
68
 
67
69
    def activate(self, iter):
68
 
        """Activate the row pointed to by Gtk.TreeIter iter."""
 
70
        """Activate the row pointed to by gtk.TreeIter iter."""
69
71
        index = self._get_index_from_iter(iter)
70
72
        self.combo.set_active(index)
71
73
 
135
137
    def _create_model(self):
136
138
        # [span in days, span as string, row is seperator?, row is select
137
139
        # default?]
138
 
        m = Gtk.ListStore(GObject.TYPE_FLOAT,
139
 
                          GObject.TYPE_STRING,
140
 
                          GObject.TYPE_BOOLEAN,
141
 
                          GObject.TYPE_BOOLEAN)
 
140
        m = gtk.ListStore(gobject.TYPE_FLOAT,
 
141
                          gobject.TYPE_STRING,
 
142
                          gobject.TYPE_BOOLEAN,
 
143
                          gobject.TYPE_BOOLEAN)
142
144
 
143
145
        self.separator = [0., "", True, False]
144
146
 
155
157
        return m
156
158
 
157
159
    def _create_combobox(self, model):
158
 
        cb = Gtk.ComboBox(model)
 
160
        cb = gtk.ComboBox(model)
159
161
        cb.set_row_separator_func(
160
162
            lambda m, i: m.get_value(i, SPAN_IS_SEPARATOR_COL))
161
 
        cell = Gtk.CellRendererText()
 
163
        cell = gtk.CellRendererText()
162
164
        cb.pack_start(cell, False)
163
165
        cb.add_attribute(cell, "text", SPAN_STR_COL)
164
166
        cb.connect("changed", self._combo_changed_cb)
167
169
        return cb
168
170
 
169
171
    def _create_custom_entry(self):
170
 
        entry = Gtk.HBox(False, 6)
 
172
        entry = gtk.HBox(False, 6)
171
173
 
172
 
        spin = Gtk.SpinButton(digits=2)
 
174
        spin = gtk.SpinButton(digits=2)
173
175
        spin.set_numeric(True)
174
176
        spin.set_increments(1., 10.)
175
177
        spin.set_range(0., 100 * 365) # I presume 100 years is sufficient
176
178
        spin.connect("activate", self._activate_custom_span_cb)
177
179
        spin.connect("show", lambda w: w.grab_focus())
178
180
 
179
 
        label = Gtk.Label(label="Days")
 
181
        label = gtk.Label("Days")
180
182
 
181
183
        entry.pack_start(spin, expand=False, fill=False)
182
184
        entry.pack_start(label, expand=False, fill=False)
189
191
 
190
192
Callback signature: def callback(SpanSelector, span, [user_param, ...])
191
193
"""
192
 
GObject.signal_new("span-changed", SpanSelector,
193
 
                   GObject.SignalFlags.RUN_LAST,
194
 
                   None,
195
 
                   (GObject.TYPE_FLOAT,))
 
194
gobject.signal_new("span-changed", SpanSelector,
 
195
                   gobject.SIGNAL_RUN_LAST,
 
196
                   gobject.TYPE_NONE,
 
197
                   (gobject.TYPE_FLOAT,))
196
198
 
197
199
"""The "custom-span-added" signal is emitted after a custom span has been
198
200
added, but before it has been selected.
199
201
 
200
202
Callback signature: def callback(SpanSelector, span, [user_param, ...])
201
203
"""
202
 
GObject.signal_new("custom-span-added", SpanSelector,
203
 
                   GObject.SignalFlags.RUN_LAST,
204
 
                   None,
205
 
                   (GObject.TYPE_FLOAT,))
 
204
gobject.signal_new("custom-span-added", SpanSelector,
 
205
                   gobject.SIGNAL_RUN_LAST,
 
206
                   gobject.TYPE_NONE,
 
207
                   (gobject.TYPE_FLOAT,))
206
208