| 130 | self.imagesink.set_xwindow_id(self.window.xid) |
| 131 | |
| 132 | class SyncPoints(gtk.VBox): |
| 133 | def __init__(self, window): |
| 134 | gtk.VBox.__init__(self) |
| 135 | self.pwindow = window |
| 136 | self.create_ui() |
| 137 | |
| 138 | def get_time_as_str(self, iter, i): |
| 139 | value = self.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 | return ret |
| 149 | |
| 150 | def create_ui(self): |
| 151 | self.model = model = gtk.ListStore(gobject.TYPE_UINT64, |
| 152 | gobject.TYPE_UINT64) |
| 153 | self.view = view = gtk.TreeView(self.model) |
| 154 | |
| 155 | renderer = gtk.CellRendererText() |
| 156 | column = gtk.TreeViewColumn("Audio time", renderer) |
| 157 | def time_to_text(column, cell, method, iter, i): |
| 158 | cell.set_property('text', self.get_time_as_str(iter, i)) |
| 159 | column.set_cell_data_func(renderer, time_to_text, 0) |
| 160 | column.set_expand(True) |
| 161 | column.set_clickable(True) |
| 162 | view.append_column(column) |
| 163 | |
| 164 | renderer = gtk.CellRendererText() |
| 165 | column = gtk.TreeViewColumn("Video time", renderer) |
| 166 | column.set_cell_data_func(renderer, time_to_text, 1) |
| 167 | column.set_expand(True) |
| 168 | view.append_column(column) |
| 169 | |
| 170 | view.show() |
| 171 | self.pack_start(view, True, True, 6) |
| 172 | |
| 173 | hbox = gtk.HBox(False, 0) |
| 174 | hbox.show() |
| 175 | self.pack_start(hbox, False, False, 0) |
| 176 | |
| 177 | add = gtk.Button(stock=gtk.STOCK_ADD) |
| 178 | add.show() |
| 179 | def add_and_select(*x): |
| 180 | iter = model.append() |
| 181 | self.view.get_selection().select_iter(iter) |
| 182 | self.changed() |
| 183 | add.connect("clicked", add_and_select) |
| 184 | hbox.pack_end(add, False, False, 0) |
| 185 | |
| 186 | remove = gtk.Button(stock=gtk.STOCK_REMOVE) |
| 187 | remove.show() |
| 188 | def remove_selected(*x): |
| 189 | model, iter = self.view.get_selection().get_selected() |