Exemple #1
0
    def __init__(self, sltv, name, a_group, b_group):
        self.sltv = sltv

        self.interface = gtk.Builder()
        self.interface.add_from_file(UI_DIR + "/source.ui")

        self.a_group = a_group
        self.b_group = b_group

        self.widget = self.interface.get_object("source_box")
        self.label = self.interface.get_object("source_label")
        self.a_button = self.interface.get_object("a_toolbutton")
        self.b_button = self.interface.get_object("b_toolbutton")

        self.name = name
        self._create_actions()

        self.preview_frame = self.interface.get_object("preview_frame")
        self.preview_area = PreviewArea()
        self.preview_area.show()
        self.preview_frame.add(self.preview_area)

        self.sltv.connect("pipeline-ready", self._on_pipeline_ready)
Exemple #2
0
class SourceItem:

    def __init__(self, sltv, name, a_group, b_group):
        self.sltv = sltv

        self.interface = gtk.Builder()
        self.interface.add_from_file(UI_DIR + "/source.ui")

        self.a_group = a_group
        self.b_group = b_group

        self.widget = self.interface.get_object("source_box")
        self.label = self.interface.get_object("source_label")
        self.a_button = self.interface.get_object("a_toolbutton")
        self.b_button = self.interface.get_object("b_toolbutton")

        self.name = name
        self._create_actions()

        self.preview_frame = self.interface.get_object("preview_frame")
        self.preview_area = PreviewArea()
        self.preview_area.show()
        self.preview_frame.add(self.preview_area)

        self.sltv.connect("pipeline-ready", self._on_pipeline_ready)

    def source_destroy(self):
        self.sltv.disconnect_by_func(self._on_pipeline_ready)

    def _on_pipeline_ready(self, sltv):
        thumbnail = self.sltv.get_thumbnail(self.name)
        self.preview_area.connect(thumbnail)

    def _create_actions(self):
        self._create_action_a(self.a_group, A_BUTTON)
        self._create_action_b(self.b_group, B_BUTTON)
        self.set_label(self.name)

    def _create_action_b(self, group, type):
        action = [(self.name, None, type, None),]
        group.add_toggle_actions(action)
        radioaction = group.get_action(self.name)
        if type == B_BUTTON:
            radioaction.connect_proxy(self.b_button)
            radioaction.connect("toggled", self._on_b_press)

    def _create_action_a(self, group, type):
        actions = group.list_actions()
        if actions:
            radioaction = gtk.RadioAction(
                    self.name, "A", type, None, len(actions)
            )
            radioaction.set_group(actions[0])
        else:
            radioaction = gtk.RadioAction(self.name, "A", type, None, 0)
            radioaction.activate()
            self.sltv.set_video_source(self.name)
        group.add_action(radioaction)
        if type == A_BUTTON:
            radioaction.connect_proxy(self.a_button)
            radioaction.connect("changed", self._on_a_press)

    def _on_a_press(self, radioaction, current):
        if radioaction.get_active():
            self.sltv.set_video_source(self.name)

    def _on_b_press(self, event):
        if event.get_active():
            self.sltv.set_pip_source(self.name)
            for action in self.b_group.list_actions():
                if action != event:
                    action.set_active(False)
        else:
            active = False
            for action in self.b_group.list_actions():
                if action.get_active():
                    active = True
            if not active:
                self.sltv.set_pip_source(None)


    def set_label(self, label):
        self.label.set_text(label)

    def get_widget(self):
        self.widget.show_all()
        return self.widget
Exemple #3
0
    def __init__(self):
        self.interface = gtk.Builder()
        self.interface.add_from_file(UI_DIR + "/sltv.ui")
        self.main_window = self.interface.get_object("window1")
        self.main_window.show_all()
        self.about = about.About(self)

        self.sltv = Sltv()
        self.sltv.connect("stopped", self.stopped)
        self.sltv.connect("playing", self.playing)
        self.sltv.connect("error", self.error)
        self.sltv.connect("pipeline-ready", self.on_pipeline_ready)

        self.preview_frame = self.interface.get_object("preview_frame")
        self.preview_box = self.interface.get_object("preview_vbox")
        self.preview = preview.PreviewUI(self, self.sltv)
        self.preview_box.pack_start(self.preview.get_widget(), False, False)
        self.preview_area = PreviewArea()
        self.preview_frame.add(self.preview_area)
        self.preview_area.show()

        self.box = self.interface.get_object("paned")
        self.settings = settings.SettingsUI(self, self.sltv)
        self.box.add(self.settings.get_widget())

        self.play_button = self.interface.get_object("play_button")
        self.stop_button = self.interface.get_object("stop_button")

        self.settings_dialog = gtk.Dialog('Settings', self.main_window)
        self.settings_dialog.set_default_size(400, 400)

        self.encoders = self.sltv.encoders
        self.videoconverters = self.sltv.videoconverters
        self.encoders_ui = encoders.Encoders(self, self.encoders,
                                             self.videoconverters)
        self.metadata_ui = metadata.MetadataUI(self.sltv, self.settings_dialog)

        self.hbuttonbox = self.interface.get_object("hbuttonbox1")
        self.volume = volume.VolumeUI(self, self.sltv)
        self.volume_button = self.volume.get_widget()
        self.volume_button.show()
        self.hbuttonbox.pack_start(self.volume_button)

        self.sltv.vus = []
        meter = fvumeter.FVUMeter()
        meter.only_draw_peak = True
        self.sltv.vus.append(meter)
        meter = fvumeter.FVUMeter()
        self.sltv.vus.append(meter)
        self.sltv.vus[0].show()
        self.sltv.vus[1].show()
        self.vumeter_box = self.interface.get_object("vumeter_box")
        if self.vumeter_box:
            self.vumeter_box.add(self.sltv.vus[0])
            self.vumeter_box.add(self.sltv.vus[1])

        # pip

        pip_box = self.interface.get_object("pip_box")
        self.pip_selector = pip_widget.PIPSelector()
        self.pip_selector.connect("changed", self.on_pip_changed)
        pip_box.add(self.pip_selector)
        pip_box.show_all()

        # sources

        self.sources = self.sltv.sources
        self.audioconvs = self.sltv.audioconvs
        self.sources_ui = sources.Sources(self, self.sources, self.audioconvs)
        self.video_source_box = self.interface.get_object("video_source_box")
        self.sources_view = sources_view.SourcesView(self.sltv, self.sources)
        self.sources_view.show_all()
        self.video_source_box.pack_start(self.sources_view, False, False)

        # audio combobox

        self.audio_sources_combobox = self.interface.get_object(
            "audio_sources_combobox")
        self.audio_sources_combobox.set_model(
            sources.AudioModel(self.sources).model)
        cell = gtk.CellRendererText()
        self.audio_sources_combobox.pack_start(cell, True)
        self.audio_sources_combobox.add_attribute(cell, "text", 0)
        self.audio_sources_combobox.connect("changed",
                                            self.on_select_audio_source)
        self.audio_sources_combobox.set_active(0)

        # outputs

        self.outputs = self.sltv.outputs
        self.outputs_ui = outputs.Outputs(self, self.outputs, self.encoders)
        self.outputs_box = self.interface.get_object("outputs_box")
        self.outputs_view = outputs_view.OutputsView(self.sltv, self.outputs)
        self.outputs_view.show_all()
        self.outputs_box.pack_start(self.outputs_view, False, False)

        # settings dialog

        self.settings_dialog.set_has_separator(False)
        self.settings_dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
        self.settings_dialog.connect('delete-event', self.hide_settings)
        self.settings_dialog.connect('response', self.hide_settings)

        vbox = self.settings_dialog.get_content_area()
        vbox.set_border_width(12)

        notebook = gtk.Notebook()
        self.settings_notebook = notebook
        vbox.add(notebook)

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.sources_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Sources'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.encoders_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Encoders'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.outputs_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Outputs'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.metadata_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Metadata'))

        #menu

        self.settings_menuitem = self.interface.get_object("settings_menuitem")
        self.quit_menuitem = self.interface.get_object("quit_menuitem")
        self.about_menu = self.interface.get_object("about_menu")

        self.play_button.connect("clicked", self.on_play_press)
        self.stop_button.connect("clicked", self.on_stop_press)
        self.main_window.connect("delete_event", self.on_window_closed)

        self.settings_menuitem.connect("activate", self.show_settings)
        self.quit_menuitem.connect("activate", gtk.main_quit)
        self.about_menu.connect("activate", self.show_about)
Exemple #4
0
    def __init__(self):
        self.interface = gtk.Builder()
        self.interface.add_from_file(UI_DIR + "/sltv.ui")
        self.main_window = self.interface.get_object("window1")
        self.main_window.show_all()
        self.about = about.About(self)

        self.sltv = Sltv()
        self.sltv.connect("stopped", self.stopped)
        self.sltv.connect("playing", self.playing)
        self.sltv.connect("error", self.error)
        self.sltv.connect("pipeline-ready", self.on_pipeline_ready)

        self.preview_frame = self.interface.get_object("preview_frame")
        self.preview_box = self.interface.get_object("preview_vbox")
        self.preview = preview.PreviewUI(self, self.sltv)
        self.preview_box.pack_start(self.preview.get_widget(), False, False)
        self.preview_area = PreviewArea()
        self.preview_frame.add(self.preview_area)
        self.preview_area.show()

        self.box = self.interface.get_object("paned")
        self.settings = settings.SettingsUI(self, self.sltv)
        self.box.add(self.settings.get_widget())

        self.play_button = self.interface.get_object("play_button")
        self.stop_button = self.interface.get_object("stop_button")

        self.settings_dialog = gtk.Dialog('Settings', self.main_window)
        self.settings_dialog.set_default_size(400, 400)

        self.encoders = self.sltv.encoders
        self.videoconverters = self.sltv.videoconverters
        self.encoders_ui = encoders.Encoders(
                self, self.encoders, self.videoconverters
        )
        self.metadata_ui = metadata.MetadataUI(self.sltv, self.settings_dialog)

        self.hbuttonbox = self.interface.get_object("hbuttonbox1")
        self.volume = volume.VolumeUI(self, self.sltv)
        self.volume_button = self.volume.get_widget()
        self.volume_button.show()
        self.hbuttonbox.pack_start(self.volume_button)

        self.sltv.vus = []
        meter = fvumeter.FVUMeter()
        meter.only_draw_peak = True
        self.sltv.vus.append(meter)
        meter = fvumeter.FVUMeter()
        self.sltv.vus.append(meter)
        self.sltv.vus[0].show()
        self.sltv.vus[1].show()
        self.vumeter_box = self.interface.get_object("vumeter_box")
        if self.vumeter_box:
            self.vumeter_box.add(self.sltv.vus[0])
            self.vumeter_box.add(self.sltv.vus[1])

        # pip

        pip_box = self.interface.get_object("pip_box")
        self.pip_selector = pip_widget.PIPSelector()
        self.pip_selector.connect("changed", self.on_pip_changed)
        pip_box.add(self.pip_selector)
        pip_box.show_all()

        # sources

        self.sources = self.sltv.sources
        self.audioconvs = self.sltv.audioconvs
        self.sources_ui = sources.Sources(self, self.sources, self.audioconvs)
        self.video_source_box = self.interface.get_object("video_source_box")
        self.sources_view = sources_view.SourcesView(self.sltv, self.sources)
        self.sources_view.show_all()
        self.video_source_box.pack_start(self.sources_view, False, False)

        # audio combobox

        self.audio_sources_combobox = self.interface.get_object(
                "audio_sources_combobox"
        )
        self.audio_sources_combobox.set_model(
                sources.AudioModel(self.sources).model
        )
        cell = gtk.CellRendererText()
        self.audio_sources_combobox.pack_start(cell, True)
        self.audio_sources_combobox.add_attribute(cell, "text", 0)
        self.audio_sources_combobox.connect(
                "changed", self.on_select_audio_source
        )
        self.audio_sources_combobox.set_active(0)

        # outputs

        self.outputs = self.sltv.outputs
        self.outputs_ui = outputs.Outputs(self, self.outputs, self.encoders)
        self.outputs_box = self.interface.get_object("outputs_box")
        self.outputs_view = outputs_view.OutputsView( self.sltv, self.outputs)
        self.outputs_view.show_all()
        self.outputs_box.pack_start(self.outputs_view, False, False)

        # settings dialog

        self.settings_dialog.set_has_separator(False)
        self.settings_dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
        self.settings_dialog.connect('delete-event', self.hide_settings)
        self.settings_dialog.connect('response', self.hide_settings)

        vbox = self.settings_dialog.get_content_area()
        vbox.set_border_width(12)

        notebook = gtk.Notebook()
        self.settings_notebook = notebook
        vbox.add(notebook)

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.sources_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Sources'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.encoders_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Encoders'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.outputs_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Outputs'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.metadata_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Metadata'))

        #menu

        self.settings_menuitem = self.interface.get_object("settings_menuitem")
        self.quit_menuitem = self.interface.get_object("quit_menuitem")
        self.about_menu = self.interface.get_object("about_menu")

        self.play_button.connect("clicked", self.on_play_press)
        self.stop_button.connect("clicked", self.on_stop_press)
        self.main_window.connect("delete_event", self.on_window_closed)

        self.settings_menuitem.connect("activate", self.show_settings)
        self.quit_menuitem.connect("activate", gtk.main_quit)
        self.about_menu.connect("activate", self.show_about)
Exemple #5
0
class SltvUI:

    def __init__(self):
        self.interface = gtk.Builder()
        self.interface.add_from_file(UI_DIR + "/sltv.ui")
        self.main_window = self.interface.get_object("window1")
        self.main_window.show_all()
        self.about = about.About(self)

        self.sltv = Sltv()
        self.sltv.connect("stopped", self.stopped)
        self.sltv.connect("playing", self.playing)
        self.sltv.connect("error", self.error)
        self.sltv.connect("pipeline-ready", self.on_pipeline_ready)

        self.preview_frame = self.interface.get_object("preview_frame")
        self.preview_box = self.interface.get_object("preview_vbox")
        self.preview = preview.PreviewUI(self, self.sltv)
        self.preview_box.pack_start(self.preview.get_widget(), False, False)
        self.preview_area = PreviewArea()
        self.preview_frame.add(self.preview_area)
        self.preview_area.show()

        self.box = self.interface.get_object("paned")
        self.settings = settings.SettingsUI(self, self.sltv)
        self.box.add(self.settings.get_widget())

        self.play_button = self.interface.get_object("play_button")
        self.stop_button = self.interface.get_object("stop_button")

        self.settings_dialog = gtk.Dialog('Settings', self.main_window)
        self.settings_dialog.set_default_size(400, 400)

        self.encoders = self.sltv.encoders
        self.videoconverters = self.sltv.videoconverters
        self.encoders_ui = encoders.Encoders(
                self, self.encoders, self.videoconverters
        )
        self.metadata_ui = metadata.MetadataUI(self.sltv, self.settings_dialog)

        self.hbuttonbox = self.interface.get_object("hbuttonbox1")
        self.volume = volume.VolumeUI(self, self.sltv)
        self.volume_button = self.volume.get_widget()
        self.volume_button.show()
        self.hbuttonbox.pack_start(self.volume_button)

        # pip

        pip_box = self.interface.get_object("pip_box")
        self.pip_selector = pip_widget.PIPSelector()
        self.pip_selector.connect("changed", self.on_pip_changed)
        pip_box.add(self.pip_selector)
        pip_box.show_all()

        # sources

        self.sources = self.sltv.sources
        self.audioconvs = self.sltv.audioconvs
        self.sources_ui = sources.Sources(self, self.sources, self.audioconvs)
        self.video_source_box = self.interface.get_object("video_source_box")
        self.sources_view = sources_view.SourcesView(self.sltv, self.sources)
        self.sources_view.show_all()
        self.video_source_box.pack_start(self.sources_view, False, False)

        # audio combobox

        self.audio_sources_combobox = self.interface.get_object(
                "audio_sources_combobox"
        )
        self.audio_sources_combobox.set_model(
                sources.AudioModel(self.sources).model
        )
        cell = gtk.CellRendererText()
        self.audio_sources_combobox.pack_start(cell, True)
        self.audio_sources_combobox.add_attribute(cell, "text", 0)
        self.audio_sources_combobox.connect(
                "changed", self.on_select_audio_source
        )
        self.audio_sources_combobox.set_active(0)

        # outputs

        self.outputs = self.sltv.outputs
        self.outputs_ui = outputs.Outputs(self, self.outputs, self.encoders)
        self.outputs_box = self.interface.get_object("outputs_box")
        self.outputs_view = outputs_view.OutputsView( self.sltv, self.outputs)
        self.outputs_view.show_all()
        self.outputs_box.pack_start(self.outputs_view, False, False)

        # settings dialog

        self.settings_dialog.set_has_separator(False)
        self.settings_dialog.add_button(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
        self.settings_dialog.connect('delete-event', self.hide_settings)
        self.settings_dialog.connect('response', self.hide_settings)

        vbox = self.settings_dialog.get_content_area()
        vbox.set_border_width(12)

        notebook = gtk.Notebook()
        self.settings_notebook = notebook
        vbox.add(notebook)

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.sources_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Sources'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.encoders_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Encoders'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.outputs_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Outputs'))

        vbox = gtk.VBox()
        vbox.set_border_width(12)
        vbox.pack_start(self.metadata_ui.get_widget())
        notebook.append_page(vbox, gtk.Label('Metadata'))

        #menu

        self.settings_menuitem = self.interface.get_object("settings_menuitem")
        self.quit_menuitem = self.interface.get_object("quit_menuitem")
        self.about_menu = self.interface.get_object("about_menu")

        self.play_button.connect("clicked", self.on_play_press)
        self.stop_button.connect("clicked", self.on_stop_press)
        self.main_window.connect("delete_event", self.on_window_closed)

        self.settings_menuitem.connect("activate", self.show_settings)
        self.quit_menuitem.connect("activate", gtk.main_quit)
        self.about_menu.connect("activate", self.show_about)

    def on_pipeline_ready(self, sltv):
        sltv_preview = self.sltv.get_preview()
        self.preview_area.connect(sltv_preview)

    def stopped(self, sltv):
        self.stop_button.set_sensitive(False)
        self.play_button.set_sensitive(True)
        self.settings_menuitem.set_sensitive(True)

    def playing(self, sltv):
        self.play_button.set_sensitive(False)
        self.stop_button.set_sensitive(True)
        self.settings_menuitem.set_sensitive(False)

    def error(self, sltv, msg):
        message.MessageError(msg, self)

    def selected_audio_source(self):
        model = self.audio_sources_combobox.get_model()
        iter = self.audio_sources_combobox.get_active_iter()
        if iter is None:
            return None
        return model.get_value(iter, 0)

    def on_select_audio_source(self, combobox):
        source_name = self.selected_audio_source()
        self.sltv.set_audio_source(source_name)

    def on_pip_changed(self, widget, selected):
        self.sltv.set_pip_position(selected)

    def on_play_press(self, event):
        if not self.sources_view.has_item_a_selected():
            message.MessageInfo(
                "Please, choose or add a video source.", self
            )
            return False

        self.play_button.set_sensitive(False)
        self.play()

    def play(self):
        if not self.sltv.playing():
            self.sltv.play()

    def show_settings(self, menuitem = None):
        self.settings_dialog.show_all()

    def hide_settings(self, *args):
        self.settings_dialog.hide()
        self.settings_notebook.set_current_page(0)
        return True

    def show_about(self, menuitem):
        self.about.show_window()

    def on_stop_press(self, event):
        self.stop_button.set_sensitive(False)
        self.stop()

    def stop(self):
        if self.sltv.playing():
            self.sltv.stop()

    def on_window_closed(self, event, data):
        gtk.main_quit()