| 564 | self.sync_points) |
| 565 | |
| 566 | class PlayerWindow(gtk.Window): |
| 567 | UPDATE_INTERVAL = 500 |
| 568 | def __init__(self): |
| 569 | gtk.Window.__init__(self) |
| 570 | self.set_default_size(600, 500) |
| 571 | |
| 572 | self.create_ui() |
| 573 | |
| 574 | self.player = GstPlayer(self.videowidget) |
| 575 | |
| 576 | def on_eos(): |
| 577 | self.player.seek(0L) |
| 578 | self.play_toggled() |
| 579 | self.player.on_eos = lambda *x: on_eos() |
| 580 | |
| 581 | self.update_id = -1 |
| 582 | self.changed_id = -1 |
| 583 | self.seek_timeout_id = -1 |
| 584 | |
| 585 | self.p_position = gst.CLOCK_TIME_NONE |
| 586 | self.p_duration = gst.CLOCK_TIME_NONE |
| 587 | |
| 588 | def on_delete_event(): |
| 589 | self.player.stop() |
| 590 | gtk.main_quit() |
| 591 | self.connect('delete-event', lambda *x: on_delete_event()) |
| 592 | |
| 593 | def load_file(self, location): |
| 594 | filename = location.split('/')[-1] |
| 595 | self.set_title('%s munger' % filename) |
| 596 | self.player.set_location(location) |
| 597 | if self.videowidget.flags() & gtk.REALIZED: |
| 598 | self.play_toggled() |
| 599 | else: |
| 600 | self.videowidget.connect_after('realize', |
| 601 | lambda *x: self.play_toggled()) |
| 602 | |
| 603 | def create_ui(self): |
| 604 | vbox = gtk.VBox() |
| 605 | vbox.show() |
| 606 | self.add(vbox) |
| 607 | |
| 608 | self.videowidget = VideoWidget() |
| 609 | self.videowidget.show() |
| 610 | vbox.pack_start(self.videowidget) |
| 611 | |
| 612 | hbox = gtk.HBox() |
| 613 | hbox.show() |
| 614 | vbox.pack_start(hbox, fill=False, expand=False) |
| 615 | |
| 616 | self.adjustment = gtk.Adjustment(0.0, 0.00, 100.0, 0.1, 1.0, 1.0) |
| 617 | hscale = gtk.HScale(self.adjustment) |
| 618 | hscale.set_digits(2) |
| 619 | hscale.set_update_policy(gtk.UPDATE_CONTINUOUS) |
| 620 | hscale.connect('button-press-event', self.scale_button_press_cb) |
| 621 | hscale.connect('button-release-event', self.scale_button_release_cb) |
| 622 | hscale.connect('format-value', self.scale_format_value_cb) |
| 623 | hbox.pack_start(hscale) |