/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: Curtis Hovey
  • Date: 2011-07-31 15:52:43 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110731155243-ln8istmxbryhb4pz
Mechanical changes made by pygi.convert.sh.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
import pygtk
19
19
pygtk.require("2.0")
20
 
import gobject
21
 
import gtk
 
20
from gi.repository import GObject
 
21
from gi.repository import Gtk
22
22
 
23
23
 
24
24
(
29
29
) = range(4)
30
30
 
31
31
 
32
 
class SpanSelector(gtk.HBox):
 
32
class SpanSelector(Gtk.HBox):
33
33
    """Encapsulates creation and functionality of widgets used for changing
34
34
    highlight spans.
35
 
    
 
35
 
36
36
    Note that calling any activate_* methods will emit "span-changed".
37
37
    """
38
 
    
 
38
 
39
39
    max_custom_spans = 4
40
40
    custom_spans = []
41
41
    last_selected = None
42
42
 
43
43
    def __init__(self, homogeneous=False, spacing=6):
44
 
        gtk.HBox.__init__(self, homogeneous, spacing)
 
44
        GObject.GObject.__init__(self, homogeneous, spacing)
45
45
 
46
46
        self.model = self._create_model()
47
47
        self.combo = self._create_combobox(self.model)
48
48
        self.entry = self._create_custom_entry()
49
49
 
50
 
        label = gtk.Label("Highlighting spans:")
 
50
        label = Gtk.Label(label="Highlighting spans:")
51
51
        label.show()
52
52
 
53
53
        self.pack_start(label, expand=False, fill=True)
67
67
        self.max_custom_spans = n
68
68
 
69
69
    def activate(self, iter):
70
 
        """Activate the row pointed to by gtk.TreeIter iter."""
 
70
        """Activate the row pointed to by Gtk.TreeIter iter."""
71
71
        index = self._get_index_from_iter(iter)
72
72
        self.combo.set_active(index)
73
73
 
104
104
        self.combo.show()
105
105
 
106
106
        span = float(w.get_text())
107
 
        
 
107
 
108
108
        if span == 0:
109
109
            # FIXME this works as "cancel", returning to the previous span,
110
110
            # but it emits "span-changed", which isn't necessary.
121
121
            self.custom_iter = self.model.insert_after(self.custom_iter,
122
122
                                                       self.separator)
123
123
            self.custom_iter_top = self.custom_iter.copy()
124
 
        
 
124
 
125
125
        if len(self.custom_spans) == self.max_custom_spans:
126
126
            self.custom_spans.pop(0)
127
127
            self.model.remove(self.model.iter_next(self.custom_iter_top))
128
 
        
 
128
 
129
129
        self.custom_spans.append(span)
130
130
        self.custom_iter = self.model.insert_after(
131
131
            self.custom_iter, [span, "%.2f Days" % span, False, False])
137
137
    def _create_model(self):
138
138
        # [span in days, span as string, row is seperator?, row is select
139
139
        # default?]
140
 
        m = gtk.ListStore(gobject.TYPE_FLOAT,
141
 
                          gobject.TYPE_STRING,
142
 
                          gobject.TYPE_BOOLEAN,
143
 
                          gobject.TYPE_BOOLEAN)
 
140
        m = Gtk.ListStore(GObject.TYPE_FLOAT,
 
141
                          GObject.TYPE_STRING,
 
142
                          GObject.TYPE_BOOLEAN,
 
143
                          GObject.TYPE_BOOLEAN)
144
144
 
145
145
        self.separator = [0., "", True, False]
146
 
        
 
146
 
147
147
        self.oldest_iter = m.append([0., "to Oldest Revision", False, False])
148
148
        self.newest_iter = m.append([0., "Newest to Oldest", False, False])
149
149
        m.append(self.separator)
157
157
        return m
158
158
 
159
159
    def _create_combobox(self, model):
160
 
        cb = gtk.ComboBox(model)
 
160
        cb = Gtk.ComboBox(model)
161
161
        cb.set_row_separator_func(
162
162
            lambda m, i: m.get_value(i, SPAN_IS_SEPARATOR_COL))
163
 
        cell = gtk.CellRendererText()
 
163
        cell = Gtk.CellRendererText()
164
164
        cb.pack_start(cell, False)
165
165
        cb.add_attribute(cell, "text", SPAN_STR_COL)
166
166
        cb.connect("changed", self._combo_changed_cb)
169
169
        return cb
170
170
 
171
171
    def _create_custom_entry(self):
172
 
        entry = gtk.HBox(False, 6)
173
 
        
174
 
        spin = gtk.SpinButton(digits=2)
 
172
        entry = Gtk.HBox(False, 6)
 
173
 
 
174
        spin = Gtk.SpinButton(digits=2)
175
175
        spin.set_numeric(True)
176
176
        spin.set_increments(1., 10.)
177
177
        spin.set_range(0., 100 * 365) # I presume 100 years is sufficient
178
178
        spin.connect("activate", self._activate_custom_span_cb)
179
179
        spin.connect("show", lambda w: w.grab_focus())
180
180
 
181
 
        label = gtk.Label("Days")
 
181
        label = Gtk.Label(label="Days")
182
182
 
183
183
        entry.pack_start(spin, expand=False, fill=False)
184
184
        entry.pack_start(label, expand=False, fill=False)
191
191
 
192
192
Callback signature: def callback(SpanSelector, span, [user_param, ...])
193
193
"""
194
 
gobject.signal_new("span-changed", SpanSelector,
195
 
                   gobject.SIGNAL_RUN_LAST,
196
 
                   gobject.TYPE_NONE,
197
 
                   (gobject.TYPE_FLOAT,))
 
194
GObject.signal_new("span-changed", SpanSelector,
 
195
                   GObject.SignalFlags.RUN_LAST,
 
196
                   None,
 
197
                   (GObject.TYPE_FLOAT,))
198
198
 
199
199
"""The "custom-span-added" signal is emitted after a custom span has been
200
200
added, but before it has been selected.
201
201
 
202
202
Callback signature: def callback(SpanSelector, span, [user_param, ...])
203
203
"""
204
 
gobject.signal_new("custom-span-added", SpanSelector,
205
 
                   gobject.SIGNAL_RUN_LAST,
206
 
                   gobject.TYPE_NONE,
207
 
                   (gobject.TYPE_FLOAT,))
 
204
GObject.signal_new("custom-span-added", SpanSelector,
 
205
                   GObject.SignalFlags.RUN_LAST,
 
206
                   None,
 
207
                   (GObject.TYPE_FLOAT,))
208
208