コード例 #1
0
ファイル: VideoPanel.py プロジェクト: fdanesse/JAMediaSuite
    def __init__(self):

        gtk.HPaned.__init__(self)

        self.set_border_width(2)
        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        self.visor = VideoVisor()
        self.progress = ProgressPlayer()
        self.playercontrols = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, False, 0)
        vbox.pack_start(self.playercontrols, False, False, 0)

        self.pack1(vbox, resize=True, shrink=True)

        self.playerlist = PlayerList()
        self.pack2(self.playerlist, resize=False, shrink=False)

        self.show_all()

        self.player = False

        self.visor.connect("ocultar_controles", self.__ocultar_controles)
        self.progress.connect("user-set-value", self.__user_set_progress)
        self.playercontrols.volumen.connect("volumen", self.__set_volumen)
        self.playerlist.lista.connect("nueva-seleccion",
                                      self.__cargar_reproducir)
        self.playerlist.connect("accion", self.__accion_menu)
        self.playercontrols.connect("accion-controls", self.__accion_controls)
        self.playerlist.balance.connect("balance-valor", self.__accion_balance)
コード例 #2
0
    def __init__(self):

        gtk.EventBox.__init__(self)

        self.set_border_width(2)
        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        self.playerlist = PlayerList()
        vbox.pack_start(self.playerlist, True, True, 0)

        self.playercontrols = PlayerControls()
        vbox.pack_end(self.playercontrols, False, False)

        self.add(vbox)
        self.show_all()

        self.player = False
        self.datos = False

        self.playercontrols.volumen.connect("volumen", self.__set_volumen)
        self.playerlist.lista.connect("nueva-seleccion",
            self.__cargar_reproducir)
        self.playerlist.connect("accion", self.__accion_menu)
        self.playercontrols.connect("accion-controls", self.__accion_controls)
        self.connect("show", self.__show)
        self.connect("hide", self.__hide)
コード例 #3
0
ファイル: VideoPanel.py プロジェクト: fdanesse/JAMediaSuite
    def __init__(self):

        gtk.HPaned.__init__(self)

        self.set_border_width(2)
        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        self.visor = VideoVisor()
        self.progress = ProgressPlayer()
        self.playercontrols = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, False, 0)
        vbox.pack_start(self.playercontrols, False, False, 0)

        self.pack1(vbox, resize=True, shrink=True)

        self.playerlist = PlayerList()
        self.pack2(self.playerlist, resize=False, shrink=False)

        self.show_all()

        self.player = False

        self.visor.connect("ocultar_controles", self.__ocultar_controles)
        self.progress.connect("user-set-value", self.__user_set_progress)
        self.playercontrols.volumen.connect("volumen", self.__set_volumen)
        self.playerlist.lista.connect("nueva-seleccion", self.__cargar_reproducir)
        self.playerlist.connect("accion", self.__accion_menu)
        self.playercontrols.connect("accion-controls", self.__accion_controls)
        self.playerlist.balance.connect("balance-valor", self.__accion_balance)
コード例 #4
0
    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        conf_box = gtk.VBox()

        self.balance = BalanceWidget()
        #self.efectos = VideoEfectos()
        self.lista = PlayerList()
        self.lista.set_mime_types(["audio/*", "video/*"])
        self.player_controls = PlayerControls()

        conf_box.pack_start(self.balance, False, False, 0)
        #conf_box.pack_start(self.efectos, True, True, 0)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll.add_with_viewport(conf_box)
        scroll.get_child().modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox.pack_start(scroll, True, True, 0)
        vbox.pack_start(self.lista, True, True, 0)
        vbox.pack_end(self.player_controls, False, False, 0)

        self.add(vbox)

        self.show_all()

        self.balance.connect("balance-valor", self.__emit_balance)
        #self.efectos.connect("click_efecto", self.__emit_add_remove_efecto)
        #self.efectos.connect("configurar_efecto", self.__emit_config_efecto)

        self.lista.connect("nueva-seleccion", self.__emit_cargar_reproducir)
        self.lista.connect("accion-list", self.__emit_accion_list)
        self.lista.connect("menu_activo", self.__emit_menu_activo)
        self.lista.connect("add_stream", self.__emit_add_stream)

        self.player_controls.connect("accion-controls",
                                     self.__emit_accion_controls)

        self.set_size_request(150, -1)
コード例 #5
0
    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, COLORES["text"])

        self.player = False
        self.video_path = ""

        vbox = gtk.VBox()
        self.visor = Visor()
        self.progress = ProgressPlayer()
        self.control = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, True, 0)
        vbox.pack_start(self.control, False, True, 0)

        self.add(vbox)
        self.show_all()

        self.control.connect("accion-controls", self.__control)
        self.progress.connect("seek", self.__seek)
        self.progress.connect("volumen", self.__volumen)
コード例 #6
0
ファイル: Derecha.py プロジェクト: fdanesse/JAMediaSuite
    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        conf_box = gtk.VBox()

        self.balance = BalanceWidget()
        # self.efectos = VideoEfectos()
        self.lista = PlayerList()
        self.player_controls = PlayerControls()

        conf_box.pack_start(self.balance, False, False, 0)
        # conf_box.pack_start(self.efectos, True, True, 0)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll.add_with_viewport(conf_box)
        scroll.get_child().modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox.pack_start(scroll, True, True, 0)
        vbox.pack_start(self.lista, True, True, 0)
        vbox.pack_end(self.player_controls, False, False, 0)

        self.add(vbox)

        self.show_all()

        self.balance.connect("balance-valor", self.__emit_balance)
        # self.efectos.connect("click_efecto", self.__emit_add_remove_efecto)
        # self.efectos.connect("configurar_efecto", self.__emit_config_efecto)

        self.lista.connect("nueva-seleccion", self.__emit_cargar_reproducir)
        self.lista.connect("accion-list", self.__emit_accion_list)
        self.lista.connect("menu_activo", self.__emit_menu_activo)
        self.lista.connect("add_stream", self.__emit_add_stream)
        self.lista.connect("len_items", self.__items_in_list)

        self.player_controls.connect("accion-controls", self.__emit_accion_controls)

        self.set_size_request(150, -1)
コード例 #7
0
    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, COLORES["text"])

        self.player = False
        self.video_path = ""

        vbox = gtk.VBox()
        self.visor = Visor()
        self.progress = ProgressPlayer()
        self.control = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, True, 0)
        vbox.pack_start(self.control, False, True, 0)

        self.add(vbox)
        self.show_all()

        self.control.connect("accion-controls", self.__control)
        self.progress.connect("seek", self.__seek)
        self.progress.connect("volumen", self.__volumen)
コード例 #8
0
class VideoPlayer(gtk.EventBox):

    __gsignals__ = {
    "full": (gobject.SIGNAL_RUN_LAST,
        gobject.TYPE_NONE, []),
    "endfile": (gobject.SIGNAL_RUN_LAST,
        gobject.TYPE_NONE, []), }

    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, COLORES["text"])

        self.player = False
        self.video_path = ""

        vbox = gtk.VBox()
        self.visor = Visor()
        self.progress = ProgressPlayer()
        self.control = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, True, 0)
        vbox.pack_start(self.control, False, True, 0)

        self.add(vbox)
        self.show_all()

        self.control.connect("accion-controls", self.__control)
        self.progress.connect("seek", self.__seek)
        self.progress.connect("volumen", self.__volumen)

    def __endfile(self, widget=None, senial=None):
        self.emit("endfile")

    def __update_progress(self, objetoemisor, valor):
        self.progress.set_progress(float(valor))

    def __state_changed(self, widget=None, valor=None):
        if "playing" in valor:
            self.control.set_playing()
        elif "paused" in valor or "None" in valor:
            self.control.set_paused()
        else:
            print "Estado del Reproductor desconocido:", valor

    def __seek(self, widget, valor):
        if self.player:
            self.player.set_position(valor)

    def __volumen(self, widget, valor):
        if self.player:
            self.player.set_volumen(valor)

    def __control(self, widget, accion):
        if accion == "stop":
            if self.player:
                self.player.stop()
        elif accion == "stop_and_unfull":
            if self.player:
                self.player.stop()
                self.emit("endfile")
        elif accion == "pausa-play":
            if self.player:
                self.player.pause_play()
        elif accion == "full":
            self.emit("full")

    def load(self, path):
        self.video_path = path
        volumen = 10

        xid = self.visor.get_property('window').xid
        self.player = JAMediaReproductor(xid)

        self.player.connect("endfile", self.__endfile)
        self.player.connect("estado", self.__state_changed)
        self.player.connect("newposicion", self.__update_progress)

        self.player.load(path)
        self.player.play()
        self.player.set_volumen(volumen)
        #self.progress.volumen.set_value(volumen / 10)
        return False

    def stop(self):
        if self.player:
            # FIXME: No funciona en la XO con Fedora 11
            #volumen = float("{:.1f}".format(
            #    self.progress.volumen.get_value() * 10))
            self.player.stop()
            self.player.disconnect_by_func(self.__endfile)
            self.player.disconnect_by_func(self.__state_changed)
            self.player.disconnect_by_func(self.__update_progress)

            del(self.player)
            self.player = False

    def pause(self):
        if self.player:
            self.player.pause()
コード例 #9
0
class VideoPlayer(gtk.EventBox):

    __gsignals__ = {
        "full": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
        "endfile": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
    }

    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, COLORES["text"])

        self.player = False
        self.video_path = ""

        vbox = gtk.VBox()
        self.visor = Visor()
        self.progress = ProgressPlayer()
        self.control = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, True, 0)
        vbox.pack_start(self.control, False, True, 0)

        self.add(vbox)
        self.show_all()

        self.control.connect("accion-controls", self.__control)
        self.progress.connect("seek", self.__seek)
        self.progress.connect("volumen", self.__volumen)

    def __endfile(self, widget=None, senial=None):
        self.emit("endfile")

    def __update_progress(self, objetoemisor, valor):
        self.progress.set_progress(float(valor))

    def __state_changed(self, widget=None, valor=None):
        if "playing" in valor:
            self.control.set_playing()
        elif "paused" in valor or "None" in valor:
            self.control.set_paused()
        else:
            print "Estado del Reproductor desconocido:", valor

    def __seek(self, widget, valor):
        if self.player:
            self.player.set_position(valor)

    def __volumen(self, widget, valor):
        if self.player:
            self.player.set_volumen(valor)

    def __control(self, widget, accion):
        if accion == "stop":
            if self.player:
                self.player.stop()
        elif accion == "stop_and_unfull":
            if self.player:
                self.player.stop()
                self.emit("endfile")
        elif accion == "pausa-play":
            if self.player:
                self.player.pause_play()
        elif accion == "full":
            self.emit("full")

    def load(self, path):
        self.video_path = path
        volumen = 10

        xid = self.visor.get_property('window').xid
        self.player = JAMediaReproductor(xid)

        self.player.connect("endfile", self.__endfile)
        self.player.connect("estado", self.__state_changed)
        self.player.connect("newposicion", self.__update_progress)

        self.player.load(path)
        self.player.play()
        self.player.set_volumen(volumen)
        #self.progress.volumen.set_value(volumen / 10)
        return False

    def stop(self):
        if self.player:
            # FIXME: No funciona en la XO con Fedora 11
            #volumen = float("{:.1f}".format(
            #    self.progress.volumen.get_value() * 10))
            self.player.stop()
            self.player.disconnect_by_func(self.__endfile)
            self.player.disconnect_by_func(self.__state_changed)
            self.player.disconnect_by_func(self.__update_progress)

            del (self.player)
            self.player = False

    def pause(self):
        if self.player:
            self.player.pause()
コード例 #10
0
class Derecha(gtk.EventBox):

    __gsignals__ = {
        "cargar-reproducir":
        (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, )),
        "accion-list":
        (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
         (gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT)),
        "menu_activo": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
        "add_stream":
        (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, )),
        "accion-controls":
        (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, )),
        'balance-valor': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
                          (gobject.TYPE_FLOAT, gobject.TYPE_STRING)),
        "add_remove_efecto": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
                              (gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)),
        'configurar_efecto': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
                              (gobject.TYPE_STRING, gobject.TYPE_STRING,
                               gobject.TYPE_PYOBJECT))
    }

    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        conf_box = gtk.VBox()

        self.balance = BalanceWidget()
        #self.efectos = VideoEfectos()
        self.lista = PlayerList()
        self.lista.set_mime_types(["audio/*", "video/*"])
        self.player_controls = PlayerControls()

        conf_box.pack_start(self.balance, False, False, 0)
        #conf_box.pack_start(self.efectos, True, True, 0)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll.add_with_viewport(conf_box)
        scroll.get_child().modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox.pack_start(scroll, True, True, 0)
        vbox.pack_start(self.lista, True, True, 0)
        vbox.pack_end(self.player_controls, False, False, 0)

        self.add(vbox)

        self.show_all()

        self.balance.connect("balance-valor", self.__emit_balance)
        #self.efectos.connect("click_efecto", self.__emit_add_remove_efecto)
        #self.efectos.connect("configurar_efecto", self.__emit_config_efecto)

        self.lista.connect("nueva-seleccion", self.__emit_cargar_reproducir)
        self.lista.connect("accion-list", self.__emit_accion_list)
        self.lista.connect("menu_activo", self.__emit_menu_activo)
        self.lista.connect("add_stream", self.__emit_add_stream)

        self.player_controls.connect("accion-controls",
                                     self.__emit_accion_controls)

        self.set_size_request(150, -1)

    #def __emit_config_efecto(self, widget, efecto, propiedad, valor):
    #    # Configurar efecto de video.
    #    self.emit("configurar_efecto", efecto, propiedad, valor)

    #def __emit_add_remove_efecto(self, widget, efecto, valor):
    #    # Agrega o quita efecto de video.
    #    self.emit("add_remove_efecto", efecto, valor)

    def __emit_balance(self, widget, valor, prop):
        # brillo, contraste, saturación, hue, gamma
        self.emit('balance-valor', valor, prop)

    def __emit_accion_controls(self, widget, accion):
        # anterior, siguiente, pausa, play, stop
        self.emit("accion-controls", accion)

    def __emit_add_stream(self, widget, title):
        # El usuario agregará una dirección de streaming
        self.emit("add_stream", title)

    def __emit_menu_activo(self, widget=False):
        # hay un menu contextual presente
        self.emit("menu_activo")

    def __emit_accion_list(self, widget, lista, accion, _iter):
        # borrar, copiar, mover, grabar, etc . . .
        self.emit("accion-list", lista, accion, _iter)

    def __emit_cargar_reproducir(self, widget, path):
        if path:
            self.player_controls.activar(True)
        else:
            self.player_controls.activar(False)

        self.emit("cargar-reproducir", path)

    def show_config(self):
        objs = self.get_child().get_children()
        valor = objs[0].get_visible()

        if valor:
            ocultar(objs[0])
            map(mostrar, objs[1:])

        else:
            mostrar(objs[0])
            map(ocultar, objs[1:])

    def setup_init(self):
        ocultar(self.get_child().get_children()[0])
        self.lista.setup_init()
        self.player_controls.activar(False)
        #self.efectos.cargar_efectos(list(get_jamedia_video_efectos()))

    def set_ip(self, valor):
        self.lista.set_ip(valor)

    def set_nueva_lista(self, archivos):
        self.lista.set_nueva_lista(archivos)
コード例 #11
0
ファイル: Derecha.py プロジェクト: fdanesse/JAMediaSuite
class Derecha(gtk.EventBox):

    __gsignals__ = {
        "cargar-reproducir": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)),
        "accion-list": (
            gobject.SIGNAL_RUN_LAST,
            gobject.TYPE_NONE,
            (gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT),
        ),
        "menu_activo": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []),
        "add_stream": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)),
        "accion-controls": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING,)),
        "balance-valor": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_FLOAT, gobject.TYPE_STRING)),
        "add_remove_efecto": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)),
        "configurar_efecto": (
            gobject.SIGNAL_RUN_LAST,
            gobject.TYPE_NONE,
            (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT),
        ),
    }

    def __init__(self):

        gtk.EventBox.__init__(self)

        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        conf_box = gtk.VBox()

        self.balance = BalanceWidget()
        # self.efectos = VideoEfectos()
        self.lista = PlayerList()
        self.player_controls = PlayerControls()

        conf_box.pack_start(self.balance, False, False, 0)
        # conf_box.pack_start(self.efectos, True, True, 0)

        scroll = gtk.ScrolledWindow()
        scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        scroll.add_with_viewport(conf_box)
        scroll.get_child().modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox.pack_start(scroll, True, True, 0)
        vbox.pack_start(self.lista, True, True, 0)
        vbox.pack_end(self.player_controls, False, False, 0)

        self.add(vbox)

        self.show_all()

        self.balance.connect("balance-valor", self.__emit_balance)
        # self.efectos.connect("click_efecto", self.__emit_add_remove_efecto)
        # self.efectos.connect("configurar_efecto", self.__emit_config_efecto)

        self.lista.connect("nueva-seleccion", self.__emit_cargar_reproducir)
        self.lista.connect("accion-list", self.__emit_accion_list)
        self.lista.connect("menu_activo", self.__emit_menu_activo)
        self.lista.connect("add_stream", self.__emit_add_stream)
        self.lista.connect("len_items", self.__items_in_list)

        self.player_controls.connect("accion-controls", self.__emit_accion_controls)

        self.set_size_request(150, -1)

    # def __emit_config_efecto(self, widget, efecto, propiedad, valor):
    #    # Configurar efecto de video.
    #    self.emit("configurar_efecto", efecto, propiedad, valor)

    # def __emit_add_remove_efecto(self, widget, efecto, valor):
    #    # Agrega o quita efecto de video.
    #    self.emit("add_remove_efecto", efecto, valor)

    def __items_in_list(self, widget, items):
        self.player_controls.activar(items)

    def __emit_balance(self, widget, valor, prop):
        # brillo, contraste, saturación, hue, gamma
        self.emit("balance-valor", valor, prop)

    def __emit_accion_controls(self, widget, accion):
        # anterior, siguiente, pausa, play, stop
        self.emit("accion-controls", accion)

    def __emit_add_stream(self, widget, title):
        # El usuario agregará una dirección de streaming
        self.emit("add_stream", title)

    def __emit_menu_activo(self, widget=False):
        # hay un menu contextual presente
        self.emit("menu_activo")

    def __emit_accion_list(self, widget, lista, accion, _iter):
        # borrar, copiar, mover, grabar, etc . . .
        self.emit("accion-list", lista, accion, _iter)

    def __emit_cargar_reproducir(self, widget, path):
        self.emit("cargar-reproducir", path)

    def show_config(self):
        objs = self.get_child().get_children()
        valor = objs[0].get_visible()
        if valor:
            ocultar(objs[0])
            map(mostrar, objs[1:])
        else:
            mostrar(objs[0])
            map(ocultar, objs[1:])

    def setup_init(self):
        ocultar(self.get_child().get_children()[0])
        self.lista.setup_init()
        self.player_controls.activar(0)
        # self.efectos.cargar_efectos(list(get_jamedia_video_efectos()))

    def set_ip(self, valor):
        self.lista.set_ip(valor)

    def set_nueva_lista(self, archivos):
        self.lista.set_nueva_lista(archivos)
コード例 #12
0
ファイル: VideoPanel.py プロジェクト: fdanesse/JAMediaSuite
class VideoPanel(gtk.HPaned):

    __gsignals__ = {
        "playing": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, [])
    }

    def __init__(self):

        gtk.HPaned.__init__(self)

        self.set_border_width(2)
        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        self.visor = VideoVisor()
        self.progress = ProgressPlayer()
        self.playercontrols = PlayerControls()

        vbox.pack_start(self.visor, True, True, 0)
        vbox.pack_start(self.progress, False, False, 0)
        vbox.pack_start(self.playercontrols, False, False, 0)

        self.pack1(vbox, resize=True, shrink=True)

        self.playerlist = PlayerList()
        self.pack2(self.playerlist, resize=False, shrink=False)

        self.show_all()

        self.player = False

        self.visor.connect("ocultar_controles", self.__ocultar_controles)
        self.progress.connect("user-set-value", self.__user_set_progress)
        self.playercontrols.volumen.connect("volumen", self.__set_volumen)
        self.playerlist.lista.connect("nueva-seleccion",
                                      self.__cargar_reproducir)
        self.playerlist.connect("accion", self.__accion_menu)
        self.playercontrols.connect("accion-controls", self.__accion_controls)
        self.playerlist.balance.connect("balance-valor", self.__accion_balance)

    def __ocultar_controles(self, widget, valor):
        if valor:
            self.set_border_width(0)
            self.get_toplevel().set_border_width(0)
            self.get_toplevel().toolbar.hide()
            self.progress.hide()
            self.playercontrols.hide()
            self.playerlist.hide()
        else:
            self.get_toplevel().set_border_width(2)
            self.set_border_width(2)
            self.get_toplevel().toolbar.show()
            self.progress.show()
            self.playercontrols.show()
            self.playerlist.show()

    def __update_balance(self):
        config = {}
        if self.player:
            config = self.player.get_balance()
        self.playerlist.balance.set_balance(
            brillo=config.get('brillo', 50.0),
            contraste=config.get('contraste', 50.0),
            saturacion=config.get('saturacion', 50.0),
            hue=config.get('hue', 50.0),
            gamma=config.get('gamma', 10.0))
        return False

    def __accion_balance(self, widget, valor, prop):
        if prop == "saturacion":
            self.player.set_balance(saturacion=valor)
        elif prop == "contraste":
            self.player.set_balance(contraste=valor)
        elif prop == "brillo":
            self.player.set_balance(brillo=valor)
        elif prop == "hue":
            self.player.set_balance(hue=valor)
        elif prop == "gamma":
            self.player.set_balance(gamma=valor)

    def __accion_controls(self, widget, accion):
        if accion == "atras":
            self.playerlist.lista.seleccionar_anterior()
        elif accion == "siguiente":
            self.playerlist.lista.seleccionar_siguiente()
        elif accion == "stop":
            if self.player:
                self.player.stop()
        elif accion == "pausa-play":
            if self.player:
                self.player.pause_play()
        elif accion == "Izquierda" or accion == "Derecha":
            if self.player:
                self.player.rotar(accion)
        elif accion == "showlist":
            if widget.lista.get_active():
                self.playerlist.show()
            else:
                self.playerlist.hide()
        elif accion == "showcontrols":
            if widget.controls.get_active():
                self.visor.set_activo(False)
            else:
                self.visor.set_activo(True)

    def __set_volumen(self, widget, valor):
        if self.player:
            self.player.set_volumen(valor)

    def __accion_menu(self, playerlist, lista, accion, _iter):
        if lista and accion and _iter:
            uri = lista.get_model().get_value(_iter, 2)
            if accion == "Quitar" or accion == "Borrar":
                dialog = gtk.Dialog(parent=self.get_toplevel(),
                                    title="Alerta",
                                    buttons=("Si", gtk.RESPONSE_ACCEPT, "No",
                                             gtk.RESPONSE_CANCEL))
                dialog.set_border_width(15)
                dialog.modify_bg(gtk.STATE_NORMAL, get_colors("window"))
                texto = uri
                if len(texto) > 30:
                    texto = " . . . " + str(texto[len(texto) - 30:-1])
                label = gtk.Label("¿%s:  %s?" % (accion, texto))
                label.show()
                dialog.vbox.pack_start(label, True, True, 5)
                if dialog.run() == gtk.RESPONSE_ACCEPT:
                    self.stop()
                    path = lista.get_model().get_path(_iter)
                    path = (path[0], )
                    lista.get_model().remove(_iter)
                    self.__reselect(lista, path)
                    if accion == "Quitar":
                        pass
                    elif accion == "Borrar":
                        if os.path.isfile(uri):
                            borrar(uri)
                dialog.destroy()
            elif accion == "Subtitulos":
                dialog = gtk.FileChooserDialog(
                    title="Cargar Subtitulos",
                    parent=self.get_toplevel(),
                    action=gtk.FILE_CHOOSER_ACTION_OPEN,
                    buttons=("Abrir", gtk.RESPONSE_ACCEPT, "Salir",
                             gtk.RESPONSE_CANCEL))
                dialog.set_border_width(15)
                dialog.modify_bg(gtk.STATE_NORMAL, get_colors("window"))
                dialog.set_current_folder_uri("file://%s" %
                                              os.path.dirname(uri))
                dialog.set_select_multiple(False)
                filtro = gtk.FileFilter()
                filtro.set_name("text")
                filtro.add_mime_type("text/*")
                dialog.add_filter(filtro)
                if dialog.run() == gtk.RESPONSE_ACCEPT:
                    self.player.player.set_property(
                        "suburi", "file://" + dialog.get_filename())
                    self.player.player.set_property("subtitle-font-desc",
                                                    "sans bold 18")
                dialog.destroy()

    def __reselect(self, lista, path):
        try:
            if path[0] > -1:
                lista.get_selection().select_iter(
                    lista.get_model().get_iter(path))
            else:
                lista.seleccionar_primero()
        except:
            lista.seleccionar_primero()

    def __cargar_reproducir(self, widget, uri):
        widget.set_sensitive(False)
        volumen = 1.0
        if self.player:
            volumen = float("{:.1f}".format(
                self.playercontrols.volumen.get_value() * 10))
        self.stop()

        xid = self.visor.get_property('window').xid
        self.player = JAMediaReproductor()

        self.player.connect("endfile", self.__endfile)
        self.player.connect("estado", self.__state_changed)
        self.player.connect("newposicion", self.progress.update_progress)
        self.player.connect("video", self.playerlist.set_video)
        self.player.connect("video", self.playercontrols.set_video)

        self.player.load(uri, xid)
        thread = threading.Thread(target=self.player.play)
        thread.start()
        self.player.set_volumen(volumen)
        self.playercontrols.volumen.set_value(volumen / 10)
        widget.set_sensitive(True)

    def __endfile(self, widget=None, senial=None):
        self.playercontrols.set_paused()
        self.playerlist.lista.seleccionar_siguiente()

    def __state_changed(self, widget=None, valor=None):
        if "playing" in valor:
            self.playercontrols.set_playing()
            self.emit("playing")
            gobject.idle_add(self.__update_balance)
        elif "paused" in valor or "None" in valor:
            self.playercontrols.set_paused()
            gobject.idle_add(self.__update_balance)
        else:
            print "Estado del Reproductor desconocido:", valor
        self.playercontrols.set_sensitive(True)

    def __user_set_progress(self, widget, valor):
        if self.player:
            self.player.set_position(valor)

    def stop(self):
        if self.player:
            self.player.disconnect_by_func(self.__endfile)
            self.player.disconnect_by_func(self.__state_changed)
            self.player.disconnect_by_func(self.progress.update_progress)
            self.player.disconnect_by_func(self.playerlist.set_video)
            self.player.disconnect_by_func(self.playercontrols.set_video)
            self.player.stop()
            del (self.player)
            self.player = False
        self.progress.update_progress(None, 0.0)
        self.playerlist.set_video(False, False)
        self.playercontrols.set_video(False, False)
        self.playercontrols.set_paused()
        self.playercontrols.set_sensitive(False)
        self.visor.modify_bg(gtk.STATE_NORMAL, get_colors("drawingplayer"))
コード例 #13
0
class RadioPanel(gtk.EventBox):

    __gsignals__ = {
    "playing": (gobject.SIGNAL_RUN_LAST,
        gobject.TYPE_NONE, [])}

    def __init__(self):

        gtk.EventBox.__init__(self)

        self.set_border_width(2)
        self.modify_bg(gtk.STATE_NORMAL, get_colors("window"))

        vbox = gtk.VBox()
        self.playerlist = PlayerList()
        vbox.pack_start(self.playerlist, True, True, 0)

        self.playercontrols = PlayerControls()
        vbox.pack_end(self.playercontrols, False, False)

        self.add(vbox)
        self.show_all()

        self.player = False
        self.datos = False

        self.playercontrols.volumen.connect("volumen", self.__set_volumen)
        self.playerlist.lista.connect("nueva-seleccion",
            self.__cargar_reproducir)
        self.playerlist.connect("accion", self.__accion_menu)
        self.playercontrols.connect("accion-controls", self.__accion_controls)
        self.connect("show", self.__show)
        self.connect("hide", self.__hide)
        #gobject.timeout_add(5000, self.__check_ip)

    def __show(self, widget):
        win = self.get_toplevel()
        screen = win.get_screen()
        w, h = win.get_size()
        ww, hh = (screen.get_width(), screen.get_height())
        if w == ww and h == hh:
            self.datos = ["fullscreen", w, h]
        elif w == ww and h != hh:
            self.datos = ["maximizado", w, h]
        else:
            self.datos = ["unfullscreen", w, h]
        win.unmaximize()
        win.unfullscreen()
        win.set_resizable(False)
        self.get_toplevel().set_size_request(320, 335)

    def __hide(self, widget):
        if self.datos:
            estado, w, h = self.datos
            win = self.get_toplevel()
            win.set_resizable(True)
            if estado == "fullscreen":
                win.fullscreen()
            elif estado == "maximizado":
                win.maximize()
            elif estado == "unfullscreen":
                self.get_toplevel().resize(w, h)

    def __accion_controls(self, widget, accion):
        if accion == "atras":
            self.playerlist.lista.seleccionar_anterior()
        elif accion == "siguiente":
            self.playerlist.lista.seleccionar_siguiente()
        elif accion == "stop":
            if self.player:
                self.player.stop()
        elif accion == "pausa-play":
            if self.player:
                self.player.pause_play()
        elif accion == "showlist":
            if widget.lista.get_active():
                self.playerlist.show()
                self.get_toplevel().toolbar.show()
                self.get_toplevel().set_size_request(320, 335)
            else:
                self.playerlist.hide()
                self.get_toplevel().toolbar.hide()
                x, y, w, h = self.playercontrols.get_allocation()
                self.get_toplevel().set_size_request(w, h+5)

    def __set_volumen(self, widget, valor):
        if self.player:
            self.player.set_volumen(valor)

    def __accion_menu(self, playerlist, lista, accion, _iter):
        print accion
        '''
        if lista and accion and _iter:
            uri = lista.get_model().get_value(_iter, 2)
            if accion == "Quitar" or accion == "Borrar":
                dialog = gtk.Dialog(parent=self.get_toplevel(),
                    title="Alerta",
                    buttons=("Si", gtk.RESPONSE_ACCEPT,
                    "No", gtk.RESPONSE_CANCEL))
                dialog.set_border_width(15)
                dialog.modify_bg(gtk.STATE_NORMAL, get_colors("window"))
                texto = uri
                if len(texto) > 30:
                    texto = " . . . " + str(texto[len(texto) - 30:-1])
                label = gtk.Label("¿%s:  %s?" % (accion, texto))
                label.show()
                dialog.vbox.pack_start(label, True, True, 5)
                if dialog.run() == gtk.RESPONSE_ACCEPT:
                    self.stop()
                    path = lista.get_model().get_path(_iter)
                    path = (path[0], )
                    lista.get_model().remove(_iter)
                    self.__reselect(lista, path)
                    if accion == "Quitar":
                        pass
                    elif accion == "Borrar":
                        if os.path.isfile(uri):
                            borrar(uri)
                dialog.destroy()
            elif accion == "Subtitulos":
                dialog = gtk.FileChooserDialog(
                    title="Cargar Subtitulos", parent=self.get_toplevel(),
                    action=gtk.FILE_CHOOSER_ACTION_OPEN,
                    buttons=("Abrir", gtk.RESPONSE_ACCEPT,
                    "Salir", gtk.RESPONSE_CANCEL))
                dialog.set_border_width(15)
                dialog.modify_bg(gtk.STATE_NORMAL, get_colors("window"))
                dialog.set_current_folder_uri("file://%s" % os.path.dirname(uri))
                dialog.set_select_multiple(False)
                filtro = gtk.FileFilter()
                filtro.set_name("text")
                filtro.add_mime_type("text/*")
                dialog.add_filter(filtro)
                if dialog.run() == gtk.RESPONSE_ACCEPT:
                    self.player.player.set_property(
                        "suburi", "file://" + dialog.get_filename())
                    self.player.player.set_property(
                        "subtitle-font-desc", "sans bold 18")
                dialog.destroy()
        '''
    def __reselect(self, lista, path):
        try:
            if path[0] > -1:
                lista.get_selection().select_iter(
                    lista.get_model().get_iter(path))
            else:
                lista.seleccionar_primero()
        except:
            lista.seleccionar_primero()

    def __cargar_reproducir(self, widget, uri):
        widget.set_sensitive(False)
        volumen = 1.0
        if self.player:
            volumen = float("{:.1f}".format(
                self.playercontrols.volumen.get_value() * 10))
        self.stop()

        if get_ip():
            xid = "" #self.visor.get_property('window').xid
            self.player = JAMediaReproductor()

            self.player.connect("endfile", self.__endfile)
            self.player.connect("estado", self.__state_changed)

            self.player.load(uri, xid)
            thread = threading.Thread(target=self.player.play)
            thread.start()
            self.player.set_volumen(volumen)
            self.playercontrols.volumen.set_value(volumen / 10)
        else:
            print "No hay conexión a Internet"
        widget.set_sensitive(True)

    def __endfile(self, widget=None, senial=None):
        self.playercontrols.set_paused()
        self.playerlist.lista.seleccionar_siguiente()

    def __state_changed(self, widget=None, valor=None):
        if "playing" in valor:
            self.playercontrols.set_playing()
            self.emit("playing")
        elif "paused" in valor or "None" in valor:
            self.playercontrols.set_paused()
        else:
            print "Estado del Reproductor desconocido:", valor
        self.playercontrols.set_sensitive(True)

    def __user_set_progress(self, widget, valor):
        if self.player:
            self.player.set_position(valor)

    def stop(self):
        if self.player:
            self.player.disconnect_by_func(self.__endfile)
            self.player.disconnect_by_func(self.__state_changed)
            self.player.stop()
            del(self.player)
            self.player = False
        self.playercontrols.set_paused()
        self.playercontrols.set_sensitive(False)