| 284 | CANCELLED = 3 |
| 285 | |
| 286 | class RemuxProgressDialog(ProgressDialog): |
| 287 | def __init__(self, parent, start, stop, fromname, toname): |
| 288 | ProgressDialog.__init__(self, |
| 289 | "Writing to disk", |
| 290 | ('Writing the selected segment of <b>%s</b> ' |
| 291 | 'to <b>%s</b>. This may take some time.' |
| 292 | % (fromname, toname)), |
| 293 | 'Starting media pipeline', |
| 294 | parent, |
| 295 | gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, |
| 296 | (gtk.STOCK_CANCEL, CANCELLED, |
| 297 | gtk.STOCK_CLOSE, SUCCESS)) |
| 298 | self.start = start |
| 299 | self.stop = stop |
| 300 | self.update_position(start) |
| 301 | self.set_completed(False) |
| 302 | |
| 303 | def update_position(self, pos): |
| 304 | pos = min(max(pos, self.start), self.stop) |
| 305 | remaining = self.stop - pos |
| 306 | minutes = remaining // (gst.SECOND * 60) |
| 307 | seconds = (remaining - minutes * gst.SECOND * 60) // gst.SECOND |
| 308 | self.progress.set_text('%d:%02d of video remaining' % (minutes, seconds)) |
| 309 | self.progress.set_fraction(1.0 - float(remaining) / (self.stop - self.start)) |
| 310 | |
| 311 | def set_completed(self, completed): |
| 312 | self.set_response_sensitive(CANCELLED, not completed) |
| 313 | self.set_response_sensitive(SUCCESS, completed) |
| 314 | |
| 315 | def set_connection_blocked_async_marshalled(pads, proc, *args, **kwargs): |
| 316 | def clear_list(l): |