class BasePanel(Gtk.Paned): __gtype_name__ = 'PygiHackBasePanel' __gsignals__ = { "update": (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING,))} def __init__(self): Gtk.Paned.__init__(self, orientation=Gtk.Orientation.VERTICAL) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.base_notebook = BaseNotebook() self.jamedia_gstreamer = JAMediaGstreamer() vbox.pack_start(self.base_notebook, True, True, 0) vbox.pack_end(self.jamedia_gstreamer, True, True, 0) self.pack1(vbox, resize=True, shrink=False) self.terminal = Terminal() self.terminal.set_size_request(-1, 200) self.pack2(self.terminal, resize=False, shrink=False) self.show_all() self.connect("realize", self.__do_realize) def __do_realize(self, widget): self.set_accion("ver", "Terminal", False) self.set_accion("ver", "Apis PyGiHack", True) self.base_notebook.import_modulo("python-gi", "Gtk") def set_accion(self, menu, wid_lab, valor): if menu == "ver": if wid_lab == "Terminal": if valor == True: self.terminal.show() elif valor == False: self.terminal.hide() elif wid_lab == "Gstreamer - Inspect 1.0": self.base_notebook.hide() self.jamedia_gstreamer.show() elif wid_lab == "Apis PyGiHack": self.jamedia_gstreamer.hide() self.base_notebook.show() self.emit("update", wid_lab) def import_modulo(self, paquete, modulo): self.base_notebook.import_modulo(paquete, modulo)
class BasePanel(Gtk.Paned): __gtype_name__ = 'PygiHackBasePanel' __gsignals__ = { "update": (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING, )) } def __init__(self): Gtk.Paned.__init__(self, orientation=Gtk.Orientation.VERTICAL) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.base_notebook = BaseNotebook() self.jamedia_gstreamer = JAMediaGstreamer() vbox.pack_start(self.base_notebook, True, True, 0) vbox.pack_end(self.jamedia_gstreamer, True, True, 0) self.pack1(vbox, resize=True, shrink=False) self.terminal = Terminal() self.terminal.set_size_request(-1, 200) self.pack2(self.terminal, resize=False, shrink=False) self.show_all() self.connect("realize", self.__do_realize) def __do_realize(self, widget): self.set_accion("ver", "Terminal", False) self.set_accion("ver", "Apis PyGiHack", True) self.base_notebook.import_modulo("python-gi", "Gtk") def set_accion(self, menu, wid_lab, valor): if menu == "ver": if wid_lab == "Terminal": if valor == True: self.terminal.show() elif valor == False: self.terminal.hide() elif wid_lab == "Gstreamer - Inspect 1.0": self.base_notebook.hide() self.jamedia_gstreamer.show() elif wid_lab == "Apis PyGiHack": self.jamedia_gstreamer.hide() self.base_notebook.show() self.emit("update", wid_lab) def import_modulo(self, paquete, modulo): self.base_notebook.import_modulo(paquete, modulo)
class WorkPanel(Gtk.Paned): __gtype_name__ = 'JAMediaEditorWorkPanel' __gsignals__ = { 'new_select': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_PYOBJECT, GObject.TYPE_STRING)), 'ejecucion': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING, GObject.TYPE_BOOLEAN)), 'update': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_PYOBJECT, )) } def __init__(self): Gtk.Paned.__init__(self, orientation=Gtk.Orientation.VERTICAL) self.notebook_sourceview = Notebook_SourceView() self.terminal = Terminal() # Terminal en ejecución. self.ejecucion = False # Tipo: proyecto o archivo. self.ejecucion_activa = False self.pack1(self.notebook_sourceview, resize=True, shrink=False) self.pack2(self.terminal, resize=False, shrink=True) self.show_all() self.terminal.set_size_request(-1, 170) self.notebook_sourceview.connect('new_select', self.__re_emit_new_select) self.notebook_sourceview.connect('update', self.__re_emit_update) self.terminal.connect("ejecucion", self.__set_ejecucion) self.terminal.connect("reset", self.detener_ejecucion) GLib.idle_add(self.terminal.hide) def __re_emit_update(self, widget, _dict): # Emite una señal con el estado general del archivo. self.emit("update", _dict) def __set_ejecucion(self, widget, terminal): # Cuando se ejecuta un archivo o un proyecto. self.ejecucion = terminal self.terminal.set_sensitive(False) def __re_emit_new_select(self, widget, view, tipo): """ Recibe nombre y contenido de archivo seleccionado en Notebook_SourceView y los envia BasePanel. """ self.emit('new_select', view, tipo) def get_default_path(self): # Devuelve el Directorio del archivo seleccionado en sourceview. return self.notebook_sourceview.get_default_path() def set_linea(self, index, texto): """ Recibe la linea seleccionada en instrospeccion y y la pasa a notebook_sourceview para seleccionarla. """ self.notebook_sourceview.set_linea(index, texto) def abrir_archivo(self, archivo): self.notebook_sourceview.abrir_archivo(archivo) def guardar_archivo(self): self.notebook_sourceview.guardar_archivo() def guardar_archivo_como(self): self.notebook_sourceview.guardar_archivo_como() def ejecutar(self, archivo=None): """ Ejecuta un archivo. Si no se pasa archivo, ejecuta el seleccionado en notebooksourceview. """ if not archivo or archivo == None: # Cuando se ejecuta el archivo seleccionado. pagina = self.notebook_sourceview.get_current_page() view = self.notebook_sourceview.get_children( )[pagina].get_children()[0] archivo = view.archivo # Si el archivo tiene cambios sin guardar o nunca se guardó. if not archivo or archivo == None or \ view.get_buffer().get_modified(): dialog = DialogoAlertaSinGuardar( parent_window=self.get_toplevel()) respuesta = dialog.run() dialog.destroy() if respuesta == Gtk.ResponseType.ACCEPT: self.guardar_archivo() elif respuesta == Gtk.ResponseType.CANCEL: return elif respuesta == Gtk.ResponseType.CLOSE: return archivo = view.archivo self.ejecucion_activa = "archivo" self.emit("ejecucion", self.ejecucion_activa, True) else: # Cuando se ejecuta el main de proyecto. source = None for view in self.get_archivos_de_proyecto( self.get_parent().get_parent().proyecto["path"]): if view.archivo == archivo: source = view break if source: if source.get_buffer().get_modified(): dialog = DialogoAlertaSinGuardar( parent_window=self.get_toplevel()) respuesta = dialog.run() dialog.destroy() if respuesta == Gtk.ResponseType.ACCEPT: source.guardar() elif respuesta == Gtk.ResponseType.CANCEL: return elif respuesta == Gtk.ResponseType.CLOSE: return self.ejecucion_activa = "proyecto" self.emit("ejecucion", self.ejecucion_activa, True) if archivo: self.terminal.ejecutar(archivo) def detener_ejecucion(self, widget=None, notebook=None, terminal=None, pag_indice=None): if self.ejecucion: self.ejecucion.set_interprete() self.ejecucion = False self.terminal.set_sensitive(True) self.emit("ejecucion", self.ejecucion_activa, False) self.ejecucion_activa = False def set_accion_codigo(self, accion): # Ejecuta acciones sobre el código del archivo seleccionado. self.notebook_sourceview.set_accion(accion) def set_accion_archivos(self, accion): # Ejecuta acciones sobre el archivo seleccionado. self.notebook_sourceview.set_accion(accion) def set_accion_ver(self, accion, valor): # Ejecuta acciones sobre el archivo seleccionado. if accion == "Panel inferior": if not valor: self.terminal.hide() else: self.terminal.show() elif accion == "Numeracion": self.notebook_sourceview.set_accion(accion, valor) def get_archivos_de_proyecto(self, proyecto_path): """ Devuelve sourceview de todos los archivos abiertos de un proyecto según proyecto_path. """ return self.notebook_sourceview.get_archivos_de_proyecto(proyecto_path) def remove_proyect(self, proyecto_path): # Cuando se elimina el proyecto desde la vista de estructura. self.notebook_sourceview.remove_proyect(proyecto_path)
class WorkPanel(Gtk.Paned): __gtype_name__ = 'JAMediaEditorWorkPanel' __gsignals__ = { 'new_select': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_PYOBJECT, GObject.TYPE_STRING)), 'ejecucion': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_STRING, GObject.TYPE_BOOLEAN)), 'update': (GObject.SIGNAL_RUN_LAST, GObject.TYPE_NONE, (GObject.TYPE_PYOBJECT,))} def __init__(self): Gtk.Paned.__init__(self, orientation=Gtk.Orientation.VERTICAL) self.notebook_sourceview = Notebook_SourceView() self.terminal = Terminal() # Terminal en ejecución. self.ejecucion = False # Tipo: proyecto o archivo. self.ejecucion_activa = False self.pack1(self.notebook_sourceview, resize=True, shrink=False) self.pack2(self.terminal, resize=False, shrink=True) self.show_all() self.terminal.set_size_request(-1, 170) self.notebook_sourceview.connect('new_select', self.__re_emit_new_select) self.notebook_sourceview.connect('update', self.__re_emit_update) self.terminal.connect("ejecucion", self.__set_ejecucion) self.terminal.connect("reset", self.detener_ejecucion) GLib.idle_add(self.terminal.hide) def __re_emit_update(self, widget, _dict): # Emite una señal con el estado general del archivo. self.emit("update", _dict) def __set_ejecucion(self, widget, terminal): # Cuando se ejecuta un archivo o un proyecto. self.ejecucion = terminal self.terminal.set_sensitive(False) def __re_emit_new_select(self, widget, view, tipo): """ Recibe nombre y contenido de archivo seleccionado en Notebook_SourceView y los envia BasePanel. """ self.emit('new_select', view, tipo) def get_default_path(self): # Devuelve el Directorio del archivo seleccionado en sourceview. return self.notebook_sourceview.get_default_path() def set_linea(self, index, texto): """ Recibe la linea seleccionada en instrospeccion y y la pasa a notebook_sourceview para seleccionarla. """ self.notebook_sourceview.set_linea(index, texto) def abrir_archivo(self, archivo): self.notebook_sourceview.abrir_archivo(archivo) def guardar_archivo(self): self.notebook_sourceview.guardar_archivo() def guardar_archivo_como(self): self.notebook_sourceview.guardar_archivo_como() def ejecutar(self, archivo=None): """ Ejecuta un archivo. Si no se pasa archivo, ejecuta el seleccionado en notebooksourceview. """ if not archivo or archivo == None: # Cuando se ejecuta el archivo seleccionado. pagina = self.notebook_sourceview.get_current_page() view = self.notebook_sourceview.get_children()[ pagina].get_children()[0] archivo = view.archivo # Si el archivo tiene cambios sin guardar o nunca se guardó. if not archivo or archivo == None or \ view.get_buffer().get_modified(): dialog = DialogoAlertaSinGuardar( parent_window=self.get_toplevel()) respuesta = dialog.run() dialog.destroy() if respuesta == Gtk.ResponseType.ACCEPT: self.guardar_archivo() elif respuesta == Gtk.ResponseType.CANCEL: return elif respuesta == Gtk.ResponseType.CLOSE: return archivo = view.archivo self.ejecucion_activa = "archivo" self.emit("ejecucion", self.ejecucion_activa, True) else: # Cuando se ejecuta el main de proyecto. source = None for view in self.get_archivos_de_proyecto( self.get_parent().get_parent().proyecto["path"]): if view.archivo == archivo: source = view break if source: if source.get_buffer().get_modified(): dialog = DialogoAlertaSinGuardar( parent_window=self.get_toplevel()) respuesta = dialog.run() dialog.destroy() if respuesta == Gtk.ResponseType.ACCEPT: source.guardar() elif respuesta == Gtk.ResponseType.CANCEL: return elif respuesta == Gtk.ResponseType.CLOSE: return self.ejecucion_activa = "proyecto" self.emit("ejecucion", self.ejecucion_activa, True) if archivo: self.terminal.ejecutar(archivo) def detener_ejecucion(self, widget=None, notebook=None, terminal=None, pag_indice=None): if self.ejecucion: self.ejecucion.set_interprete() self.ejecucion = False self.terminal.set_sensitive(True) self.emit("ejecucion", self.ejecucion_activa, False) self.ejecucion_activa = False def set_accion_codigo(self, accion): # Ejecuta acciones sobre el código del archivo seleccionado. self.notebook_sourceview.set_accion(accion) def set_accion_archivos(self, accion): # Ejecuta acciones sobre el archivo seleccionado. self.notebook_sourceview.set_accion(accion) def set_accion_ver(self, accion, valor): # Ejecuta acciones sobre el archivo seleccionado. if accion == "Panel inferior": if not valor: self.terminal.hide() else: self.terminal.show() elif accion == "Numeracion": self.notebook_sourceview.set_accion(accion, valor) def get_archivos_de_proyecto(self, proyecto_path): """ Devuelve sourceview de todos los archivos abiertos de un proyecto según proyecto_path. """ return self.notebook_sourceview.get_archivos_de_proyecto(proyecto_path) def remove_proyect(self, proyecto_path): # Cuando se elimina el proyecto desde la vista de estructura. self.notebook_sourceview.remove_proyect(proyecto_path)