~vcs-imports/python-gst/main

« back to all changes in this revision

Viewing changes to examples/synchronizer.py

  • Committer: wingo
  • Date: 2006-08-04 17:04:27 UTC
  • Revision ID: vcs-imports@canonical.com-20060804170427-ceab709d9cd7a9c6
small updates, still ui only

Show diffs side-by-side

added added

removed removed

Lines of Context:
130
130
        self.pwindow = window
131
131
        self.create_ui()
132
132
 
 
133
    def get_time_as_str(self, iter, i):
 
134
        value = self.model.get_value(iter, i)
 
135
        ret = ''
 
136
        for div, sep, mod, pad in ((gst.SECOND*60, '', 0, 0),
 
137
                                   (gst.SECOND, ':', 60, 2),
 
138
                                   (gst.MSECOND, '.', 1000, 3)):
 
139
            n = value // div
 
140
            if mod:
 
141
                n %= mod
 
142
            ret += sep + ('%%0%dd' % pad) % n
 
143
        return ret
 
144
 
133
145
    def create_ui(self):
134
146
        self.model = model = gtk.ListStore(gobject.TYPE_UINT64,
135
147
                                           gobject.TYPE_UINT64)
136
148
        self.view = view = gtk.TreeView(self.model)
137
149
 
 
150
        renderer = gtk.CellRendererText()
 
151
        column = gtk.TreeViewColumn("Audio time", renderer)
138
152
        def time_to_text(column, cell, method, iter, i):
139
 
            value = model.get_value(iter, i)
140
 
            ret = ''
141
 
            for div, sep, mod, pad in ((gst.SECOND*60, '', 0, 0),
142
 
                                       (gst.SECOND, ':', 60, 2),
143
 
                                       (gst.MSECOND, '.', 1000, 3)):
144
 
                n = value // div
145
 
                if mod:
146
 
                    n %= mod
147
 
                ret += sep + ('%%0%dd' % pad) % n
148
 
            cell.set_property('text', ret)
149
 
 
150
 
        renderer = gtk.CellRendererText()
151
 
        column = gtk.TreeViewColumn("Audio time", renderer)
 
153
            cell.set_property('text', self.get_time_as_str(iter, i))
152
154
        column.set_cell_data_func(renderer, time_to_text, 0)
153
155
        column.set_expand(True)
154
156
        column.set_clickable(True)
172
174
        def add_and_select(*x):
173
175
            iter = model.append()
174
176
            self.view.get_selection().select_iter(iter)
 
177
            self.changed()
175
178
        add.connect("clicked", add_and_select)
176
179
        hbox.pack_end(add, False, False, 0)
177
180
        
180
183
        def remove_selected(*x):
181
184
            model, iter = self.view.get_selection().get_selected()
182
185
            model.remove(iter)
 
186
            self.changed()
183
187
        remove.connect("clicked", remove_selected)
184
188
        hbox.pack_end(remove, False, False, 0)
185
189
        
205
209
        v.connect("clicked", lambda *x: self.set_selected_video_now())
206
210
        hbox.pack_start(v)
207
211
 
 
212
    def changed(self):
 
213
        print 'Sync times now:'
 
214
        for index, row in enumerate(self.model):
 
215
            print 'A/V %d: %s -- %s' % (index,
 
216
                                        self.get_time_as_str(row.iter, 0),
 
217
                                        self.get_time_as_str(row.iter, 1))
 
218
            
 
219
 
208
220
    def set_selected_audio(self, time):
209
221
        sel = self.view.get_selection()
210
222
        model, iter = sel.get_selected()
211
223
        if iter:
212
224
            model.set_value(iter, 0, time)
 
225
        self.changed()
213
226
 
214
227
    def set_selected_video(self, time):
215
228
        sel = self.view.get_selection()
216
229
        model, iter = sel.get_selected()
217
230
        if iter:
218
231
            model.set_value(iter, 1, time)
 
232
        self.changed()
219
233
 
220
234
    def set_selected_audio_now(self):
221
 
        # pause and preroll first
222
 
        if self.pwindow.player.is_playing():
223
 
            self.pwindow.play_toggled()
224
 
        self.pwindow.player.get_state(timeout=gst.MSECOND * 200)
225
 
 
226
235
        time, dur = self.pwindow.player.query_position()
227
236
        self.set_selected_audio(time)
228
237