def __init__(self, archivos=False): gtk.Window.__init__(self) self.set_title("Batovide") self.set_icon_from_file(os.path.join(PATH, "Iconos", "bide.svg")) self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(gtk.WIN_POS_CENTER) accel_group = gtk.AccelGroup() self.add_accel_group(accel_group) self.updater = False self.sourceview = False base_widget = gtk.VBox() self.menu = Menu(accel_group) self.base_panel = BasePanel() base_widget.pack_start(self.menu, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) self.add(base_widget) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit) # Cuando se abre el editor con archivo como parámetro. if archivos: for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": gobject.idle_add( self.base_panel.external_open_proyect, archivo) else: gobject.idle_add( self.base_panel.external_open_file, archivo)
def __init__(self, handle): activity.Activity.__init__(self, handle, False) accel_group = gtk.AccelGroup() self.add_accel_group(accel_group) self.menu = Menu(accel_group) toolbar = ToolbarBox() item = gtk.ToolItem() item.set_expand(True) item.add(self.menu) toolbar.toolbar.insert(item, -1) separator = gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.toolbar.insert(separator, -1) separator.show() toolbar.toolbar.insert(StopButton(self), -1) self.set_toolbar_box(toolbar) self.updater = False self.sourceview = False self.base_panel = BasePanel() self.set_canvas(self.base_panel) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit)
def __init__(self): Gtk.Window.__init__(self) #self.set_title("") #self.set_icon_from_file(".png") self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) self.updater = False self.sourceview = False base_widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.menu = Menu(accel_group) #toolbar = MainToolbar() self.base_panel = BasePanel() #trytoolbar = TryToolbar() base_widget.pack_start(self.menu, False, False, 0) #base_widget.pack_start(toolbar, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) #base_widget.pack_start(trytoolbar, False, False, 0) self.add(base_widget) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit)
def __init__(self, handle): activity.Activity.__init__(self, handle, False) self.set_title("JAMediaEditor") #self.set_icon_from_file(os.path.join(BASE_PATH, "Iconos", # "JAMediaEditor2.svg")) #self.set_resizable(True) #self.set_size_request(640, 480) self.set_border_width(5) #self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) base_widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.menu = Menu(accel_group) self.base_panel = BasePanel() self.toolbar_estado = ToolbarEstado() self.jamediapygihack = JAMediaPyGiHack() self.sugar_toolbar = Gtk.Toolbar() self.sugar_toolbar.modify_bg(0, Gdk.color_parse("#000000")) item = Gtk.ToolItem() item.set_expand(True) item.add(self.menu) self.sugar_toolbar.insert(item, -1) self.sugar_toolbar.insert( get_separador(draw=False, ancho=0, expand=False), -1) boton = StopButton(self) self.sugar_toolbar.insert(boton, -1) self.sugar_toolbar.insert( get_separador(draw=False, ancho=3, expand=False), -1) base_widget.pack_start(self.sugar_toolbar, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) base_widget.pack_start(self.jamediapygihack, True, True, 0) base_widget.pack_start(self.toolbar_estado, False, False, 0) self.set_canvas(base_widget) self.show_all() self.maximize() self.jamediapygihack.hide() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.menu.connect('run_jamediapygihack', self.__run_jamediapygihack) self.jamediapygihack.connect('salir', self.__run_editor) self.base_panel.connect("update", self.__set_toolbar_archivo_and_menu) self.base_panel.connect("proyecto_abierto", self.__set_toolbar_proyecto_and_menu) self.base_panel.connect("ejecucion", self.__set_toolbars_ejecucion) self.connect("delete-event", self.__exit) ''' # Cuando se abre el editor con archivo como parámetro. if archivos: for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": GLib.idle_add( self.base_panel.external_open_proyect, archivo) else: GLib.idle_add( self.base_panel.external_open_file, archivo) ''' print "JAMediaEditor:", os.getpid()
class JAMediaEditor(activity.Activity): """ Gtk.Window Gtk.VBox Menu BasePanel - JAMediaPyGiHack ToolbarEstado """ __gtype_name__ = 'WindowJAMediaEditor' def __init__(self, handle): activity.Activity.__init__(self, handle, False) self.set_title("JAMediaEditor") #self.set_icon_from_file(os.path.join(BASE_PATH, "Iconos", # "JAMediaEditor2.svg")) #self.set_resizable(True) #self.set_size_request(640, 480) self.set_border_width(5) #self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) base_widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.menu = Menu(accel_group) self.base_panel = BasePanel() self.toolbar_estado = ToolbarEstado() self.jamediapygihack = JAMediaPyGiHack() self.sugar_toolbar = Gtk.Toolbar() self.sugar_toolbar.modify_bg(0, Gdk.color_parse("#000000")) item = Gtk.ToolItem() item.set_expand(True) item.add(self.menu) self.sugar_toolbar.insert(item, -1) self.sugar_toolbar.insert( get_separador(draw=False, ancho=0, expand=False), -1) boton = StopButton(self) self.sugar_toolbar.insert(boton, -1) self.sugar_toolbar.insert( get_separador(draw=False, ancho=3, expand=False), -1) base_widget.pack_start(self.sugar_toolbar, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) base_widget.pack_start(self.jamediapygihack, True, True, 0) base_widget.pack_start(self.toolbar_estado, False, False, 0) self.set_canvas(base_widget) self.show_all() self.maximize() self.jamediapygihack.hide() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.menu.connect('run_jamediapygihack', self.__run_jamediapygihack) self.jamediapygihack.connect('salir', self.__run_editor) self.base_panel.connect("update", self.__set_toolbar_archivo_and_menu) self.base_panel.connect("proyecto_abierto", self.__set_toolbar_proyecto_and_menu) self.base_panel.connect("ejecucion", self.__set_toolbars_ejecucion) self.connect("delete-event", self.__exit) ''' # Cuando se abre el editor con archivo como parámetro. if archivos: for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": GLib.idle_add( self.base_panel.external_open_proyect, archivo) else: GLib.idle_add( self.base_panel.external_open_file, archivo) ''' print "JAMediaEditor:", os.getpid() def __run_editor(self, widget): self.jamediapygihack.hide() self.sugar_toolbar.show() self.base_panel.show() self.toolbar_estado.show() def __run_jamediapygihack(self, widget): self.sugar_toolbar.hide() self.base_panel.hide() self.toolbar_estado.hide() self.jamediapygihack.show() def __exit(self, widget=False, event=False): Gtk.main_quit() sys.exit(0) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __set_toolbar_archivo_and_menu(self, widget, _dict): self.menu.update_archivos(_dict) self.base_panel.toolbararchivo.update(_dict) info = { 'renglones': _dict['renglones'], 'caracteres': _dict['caracteres'], 'archivo': _dict['archivo'], } self.toolbar_estado.set_info(info) def __set_toolbar_proyecto_and_menu(self, widget, valor): """ Activa y desactiva las opciones de proyecto en la toolbar y menú correspondiente cuando se abre o se cierra un proyecto. """ self.menu.activar_proyecto(valor) self.base_panel.toolbarproyecto.activar_proyecto(valor) # Ejecuciones self.base_panel.toolbararchivo.activar_ejecucion(False) if valor: self.base_panel.toolbarproyecto.activar_ejecucion(False) else: self.base_panel.toolbarproyecto.activar_ejecucion(False) def __set_toolbars_ejecucion(self, widget, tipo, valor): """ Cuando se ejecuta un archivo o proyecto, se actualizan las toolbars. """ if not valor: self.base_panel.toolbararchivo.activar_ejecucion(False) proyecto = self.base_panel.proyecto if proyecto: self.base_panel.toolbarproyecto.activar_ejecucion(False) else: self.base_panel.toolbarproyecto.activar_ejecucion(False) elif valor: if tipo == "proyecto": # Se está ejecutando proyecto. self.base_panel.toolbararchivo.activar_ejecucion(False) self.base_panel.toolbarproyecto.activar_ejecucion(True) elif tipo == "archivo": # Se está ejecutando archivo. self.base_panel.toolbarproyecto.activar_ejecucion(False) self.base_panel.toolbararchivo.activar_ejecucion(True) def read_file(self, file_path): archivo = file_path.replace('file://', '') if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext(os.path.split(archivo)[1])[1] GLib.idle_add(self.base_panel.external_open_file, archivo) def write_file(self, file_path): self.__exit()
class IdeMain(activity.Activity): def __init__(self, handle): activity.Activity.__init__(self, handle, False) accel_group = gtk.AccelGroup() self.add_accel_group(accel_group) self.menu = Menu(accel_group) toolbar = ToolbarBox() item = gtk.ToolItem() item.set_expand(True) item.add(self.menu) toolbar.toolbar.insert(item, -1) separator = gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) toolbar.toolbar.insert(separator, -1) separator.show() toolbar.toolbar.insert(StopButton(self), -1) self.set_toolbar_box(toolbar) self.updater = False self.sourceview = False self.base_panel = BasePanel() self.set_canvas(self.base_panel) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __exit(self, widget=None): """ Sale de la aplicación. """ sys.exit(0) def __new_handler(self, widget, sourceview, reset): """ Elimina o reinicia la funcion que actualiza las toolbars y menús. """ if self.updater and self.updater != None: gobject.source_remove(self.updater) self.updater = False self.sourceview = False if reset: self.sourceview = sourceview self.updater = gobject.timeout_add(500, self.__update) def __update(self): """ Actualiza las toolbars y menus. """ try: activar = [] desactivar = [] ### Si hay un archivo seleccionado. if self.sourceview: buffer = self.sourceview.get_buffer() activar.extend(["Guardar Como", "Cerrar", "Numeracion", "Aumentar", "Disminuir", "Formato"]) ### Si hay texto en el archivo seleccionado. inicio, fin = buffer.get_bounds() buf = buffer.get_text(inicio, fin, 0) if buf: activar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Valorar"]) else: desactivar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Valorar"]) ### Si el contenido del archivo != al del buffer. archivo = self.sourceview.archivo texto = "" if archivo: if os.path.exists(archivo): arch = open(archivo, 'r') texto = arch.read() arch.close() if texto != buf: activar.append("Guardar") else: desactivar.append("Guardar") ### Si hay texto seleccionado, se puede copiar y cortar. if buffer.get_selection_bounds(): activar.extend(["Cortar", "Copiar"]) else: desactivar.extend(["Cortar", "Copiar"]) ### Si hay texto en el clipboard, se puede pegar clipboard = gtk.clipboard_get(selection="CLIPBOARD") texto = clipboard.wait_for_text() if texto: activar.append("Pegar") else: desactivar.append("Pegar") ### Si se puede deshacer. if buffer.can_undo(): activar.append("Deshacer") else: desactivar.append("Deshacer") ### Si se puede Rehacer. if buffer.can_redo(): activar.append("Rehacer") else: desactivar.append("Rehacer") else: self.base_panel.infonotebook.set_introspeccion(None, "") desactivar.extend([ "Cortar", "Copiar", "Rehacer", "Deshacer", "Guardar", "Cerrar", "Guardar Como", "Pegar", "Seleccionar Todo", #"Ejecutar Archivo", #"Detener Ejecución", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Valorar", "Numeracion", "Aumentar", "Disminuir", "Formato"]) ### Actualizar las toolbars y el menu. self.base_panel.toolbararchivo.update(True, activar) self.base_panel.toolbararchivo.update(False, desactivar) self.menu.update_archivos(True, activar) self.menu.update_archivos(False, desactivar) ### Opciones de Proyecto. if self.base_panel.proyecto: self.menu.activar_proyecto(True) self.base_panel.toolbarproyecto.activar( bool(self.base_panel.proyecto), bool(self.base_panel.workpanel.ejecucion)) else: self.menu.activar_proyecto(False) self.base_panel.toolbarproyecto.dict_proyecto["Ejecutar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Detener Ejecución"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Editar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Cerrar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Guardar Proyecto"].set_sensitive(False) ### Ejecución de archivo. if self.sourceview: self.base_panel.toolbararchivo.dict_archivo["Ejecutar Archivo"].set_sensitive( not bool(self.base_panel.workpanel.ejecucion)) self.base_panel.toolbararchivo.dict_archivo["Detener Ejecución"].set_sensitive( bool(self.base_panel.workpanel.ejecucion)) else: self.base_panel.toolbararchivo.dict_archivo["Ejecutar Archivo"].set_sensitive(False) self.base_panel.toolbararchivo.dict_archivo["Detener Ejecución"].set_sensitive(False) except: self.sourceview = False return True
def __init__(self, archivos=False): Gtk.Window.__init__(self) self.set_title("JAMediaEditor") self.set_icon_from_file(os.path.join( BASE_PATH, "Iconos", "JAMediaEditor2.svg")) self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) base_widget = Gtk.Box( orientation=Gtk.Orientation.VERTICAL) from Widgets import Menu from BasePanel import BasePanel from Toolbars import ToolbarEstado from JAMediaPyGiHack.JAMediaPyGiHack import JAMediaPyGiHack self.menu = Menu(accel_group) self.base_panel = BasePanel() self.toolbar_estado = ToolbarEstado() self.jamediapygihack = JAMediaPyGiHack() base_widget.pack_start( self.menu, False, False, 0) base_widget.pack_start( self.base_panel, True, True, 0) base_widget.pack_start( self.jamediapygihack, True, True, 0) base_widget.pack_start( self.toolbar_estado, False, False, 0) self.add(base_widget) self.show_all() self.maximize() self.jamediapygihack.hide() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.menu.connect('run_jamediapygihack', self.__run_jamediapygihack) self.jamediapygihack.connect('salir', self.__run_editor) self.base_panel.connect("update", self.__set_toolbar_archivo_and_menu) self.base_panel.connect("proyecto_abierto", self.__set_toolbar_proyecto_and_menu) self.base_panel.connect("ejecucion", self.__set_toolbars_ejecucion) self.connect("delete-event", self.__exit) # Cuando se abre el editor con archivo como parámetro. if archivos: from gi.repository import GLib for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": GLib.idle_add( self.base_panel.external_open_proyect, archivo) else: GLib.idle_add( self.base_panel.external_open_file, archivo)
class JAMediaEditor(Gtk.Window): """ Gtk.Window Gtk.VBox Menu BasePanel - JAMediaPyGiHack ToolbarEstado """ __gtype_name__ = 'WindowJAMediaEditor' def __init__(self, archivos=False): Gtk.Window.__init__(self) self.set_title("JAMediaEditor") self.set_icon_from_file(os.path.join( BASE_PATH, "Iconos", "JAMediaEditor2.svg")) self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) base_widget = Gtk.Box( orientation=Gtk.Orientation.VERTICAL) from Widgets import Menu from BasePanel import BasePanel from Toolbars import ToolbarEstado from JAMediaPyGiHack.JAMediaPyGiHack import JAMediaPyGiHack self.menu = Menu(accel_group) self.base_panel = BasePanel() self.toolbar_estado = ToolbarEstado() self.jamediapygihack = JAMediaPyGiHack() base_widget.pack_start( self.menu, False, False, 0) base_widget.pack_start( self.base_panel, True, True, 0) base_widget.pack_start( self.jamediapygihack, True, True, 0) base_widget.pack_start( self.toolbar_estado, False, False, 0) self.add(base_widget) self.show_all() self.maximize() self.jamediapygihack.hide() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.menu.connect('run_jamediapygihack', self.__run_jamediapygihack) self.jamediapygihack.connect('salir', self.__run_editor) self.base_panel.connect("update", self.__set_toolbar_archivo_and_menu) self.base_panel.connect("proyecto_abierto", self.__set_toolbar_proyecto_and_menu) self.base_panel.connect("ejecucion", self.__set_toolbars_ejecucion) self.connect("delete-event", self.__exit) # Cuando se abre el editor con archivo como parámetro. if archivos: from gi.repository import GLib for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": GLib.idle_add( self.base_panel.external_open_proyect, archivo) else: GLib.idle_add( self.base_panel.external_open_file, archivo) def __run_editor(self, widget): self.jamediapygihack.hide() self.menu.show() self.base_panel.show() self.toolbar_estado.show() def __run_jamediapygihack(self, widget): self.menu.hide() self.base_panel.hide() self.toolbar_estado.hide() self.jamediapygihack.show() def __exit(self, widget=None, event=None): Gtk.main_quit() import sys sys.exit(0) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __set_toolbar_archivo_and_menu(self, widget, dict): self.menu.update_archivos(dict) self.base_panel.toolbararchivo.update(dict) info = { 'renglones': dict['renglones'], 'caracteres': dict['caracteres'], 'archivo': dict['archivo'], } self.toolbar_estado.set_info(info) def __set_toolbar_proyecto_and_menu(self, widget, valor): """ Activa y desactiva las opciones de proyecto en la toolbar y menú correspondiente cuando se abre o se cierra un proyecto. """ # FIXME: Esta funcion se ejecuta tambien cuando se cambia de lengueta, # por este motivo detener_ejecucion() no debe llamarse aquí. # self.base_panel.workpanel.detener_ejecucion() self.menu.activar_proyecto(valor) self.base_panel.toolbarproyecto.activar_proyecto(valor) # Ejecuciones self.base_panel.toolbararchivo.activar_ejecucion(False) if valor: self.base_panel.toolbarproyecto.activar_ejecucion(False) else: self.base_panel.toolbarproyecto.activar_ejecucion(None) def __set_toolbars_ejecucion(self, widget, tipo, valor): """ Cuando se ejecuta un archivo o proyecto, se actualizan las toolbars correspondientes. """ if not valor: self.base_panel.toolbararchivo.activar_ejecucion(False) proyecto = self.base_panel.proyecto if proyecto: self.base_panel.toolbarproyecto.activar_ejecucion(False) else: self.base_panel.toolbarproyecto.activar_ejecucion(None) elif valor: if tipo == "proyecto": # Se está ejecutando proyecto. self.base_panel.toolbararchivo.activar_ejecucion(None) self.base_panel.toolbarproyecto.activar_ejecucion(True) elif tipo == "archivo": # Se está ejecutando archivo. self.base_panel.toolbarproyecto.activar_ejecucion(None) self.base_panel.toolbararchivo.activar_ejecucion(True)
class IdeMain(gtk.Window): def __init__(self, archivos=False): gtk.Window.__init__(self) self.set_title("Batovide") self.set_icon_from_file(os.path.join(PATH, "Iconos", "bide.svg")) self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(gtk.WIN_POS_CENTER) accel_group = gtk.AccelGroup() self.add_accel_group(accel_group) self.updater = False self.sourceview = False base_widget = gtk.VBox() self.menu = Menu(accel_group) self.base_panel = BasePanel() base_widget.pack_start(self.menu, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) self.add(base_widget) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit) # Cuando se abre el editor con archivo como parámetro. if archivos: for archivo in archivos: if os.path.exists(archivo): if os.path.isfile(archivo): extension = os.path.splitext( os.path.split(archivo)[1])[1] if extension == ".ide": gobject.idle_add( self.base_panel.external_open_proyect, archivo) else: gobject.idle_add( self.base_panel.external_open_file, archivo) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __exit(self, widget=None): """ Sale de la aplicación. """ sys.exit(0) def __new_handler(self, widget, sourceview, reset): """ Elimina o reinicia la funcion que actualiza las toolbars y menús. """ if self.updater and self.updater != None: gobject.source_remove(self.updater) self.updater = False self.sourceview = False if reset: self.sourceview = sourceview self.updater = gobject.timeout_add(500, self.__update) def __update(self): """ Actualiza las toolbars y menus. """ activar = [] desactivar = [] try: # Si hay un archivo seleccionado. if self.sourceview: buffer = self.sourceview.get_buffer() activar.extend([ "Guardar Como", "Cerrar", "Numeracion", "Aumentar", "Disminuir", "Formato" ]) # Si hay texto en el archivo seleccionado. inicio, fin = buffer.get_bounds() buf = buffer.get_text(inicio, fin, 0) if buf: activar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) else: desactivar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) # Si el contenido del archivo != al del buffer. archivo = self.sourceview.archivo texto = "" if archivo: if os.path.exists(archivo): arch = open(archivo, 'r') texto = arch.read() arch.close() if texto != buf: activar.append("Guardar") else: desactivar.append("Guardar") # Si hay texto seleccionado, se puede copiar y cortar. if buffer.get_selection_bounds(): activar.extend(["Cortar", "Copiar"]) else: desactivar.extend(["Cortar", "Copiar"]) # Si hay texto en el clipboard, se puede pegar clipboard = gtk.clipboard_get(selection="CLIPBOARD") texto = clipboard.wait_for_text() if texto: activar.append("Pegar") else: desactivar.append("Pegar") # Si se puede deshacer. if buffer.can_undo(): activar.append("Deshacer") else: desactivar.append("Deshacer") # Si se puede Rehacer. if buffer.can_redo(): activar.append("Rehacer") else: desactivar.append("Rehacer") else: self.base_panel.infonotebook.set_introspeccion(None, "") desactivar.extend([ "Cortar", "Copiar", "Rehacer", "Deshacer", "Guardar", "Cerrar", "Guardar Como", "Pegar", "Seleccionar Todo", #"Ejecutar Archivo", #"Detener Ejecución", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Numeracion", "Aumentar", "Disminuir", "Formato" ]) # Actualizar las toolbars y el menu. self.base_panel.toolbararchivo.update(True, activar) self.base_panel.toolbararchivo.update(False, desactivar) self.menu.update_archivos(True, activar) self.menu.update_archivos(False, desactivar) # Opciones de Proyecto. if self.base_panel.proyecto: self.menu.activar_proyecto(True) self.base_panel.toolbarproyecto.activar( bool(self.base_panel.proyecto), bool(self.base_panel.workpanel.ejecucion)) else: self.menu.activar_proyecto(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Ejecutar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Detener Ejecución"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Editar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Cerrar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Guardar Proyecto"].set_sensitive(False) # Ejecución de archivo. if self.sourceview: self.base_panel.toolbararchivo.dict_archivo[ "Ejecutar Archivo"].set_sensitive( not bool(self.base_panel.workpanel.ejecucion)) self.base_panel.toolbararchivo.dict_archivo[ "Detener Ejecución"].set_sensitive( bool(self.base_panel.workpanel.ejecucion)) else: self.base_panel.toolbararchivo.dict_archivo[ "Ejecutar Archivo"].set_sensitive(False) self.base_panel.toolbararchivo.dict_archivo[ "Detener Ejecución"].set_sensitive(False) except: self.sourceview = False paginas = self.base_panel.workpanel.notebook_sourceview.get_children() if not paginas: self.__ejecutar_accion_archivo(None, "Nuevo Archivo") return True
class IdeMain(Gtk.Window): def __init__(self): Gtk.Window.__init__(self) #self.set_title("") #self.set_icon_from_file(".png") self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) self.updater = False self.sourceview = False base_widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.menu = Menu(accel_group) #toolbar = MainToolbar() self.base_panel = BasePanel() #trytoolbar = TryToolbar() base_widget.pack_start(self.menu, False, False, 0) #base_widget.pack_start(toolbar, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) #base_widget.pack_start(trytoolbar, False, False, 0) self.add(base_widget) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __exit(self, widget=None): """ Sale de la aplicación. """ Gtk.main_quit() sys.exit(0) def __new_handler(self, widget, sourceview, reset): """ Elimina o reinicia la funcion que actualiza las toolbars y menús. """ if self.updater and self.updater != None: GObject.source_remove(self.updater) self.updater = False self.sourceview = False if reset: self.sourceview = sourceview self.updater = GObject.timeout_add(500, self.__update) def __update(self): """ Actualiza las toolbars y menus. """ try: activar = [] desactivar = [] ### Si hay un archivo seleccionado. if self.sourceview: buffer = self.sourceview.get_buffer() activar.extend([ "Guardar Como", "Cerrar", "Numeracion", "Aumentar", "Disminuir", "Formato"]) ### Si hay texto en el archivo seleccionado. inicio, fin = buffer.get_bounds() buf = buffer.get_text(inicio, fin, 0) if buf: activar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) else: desactivar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) ### Si el contenido del archivo != al del buffer. archivo = self.sourceview.archivo texto = "" if archivo: if os.path.exists(archivo): arch = open(archivo, 'r') texto = arch.read() arch.close() if texto != buf: activar.append("Guardar") else: desactivar.append("Guardar") ### Si hay texto seleccionado, se puede copiar y cortar. if buffer.get_selection_bounds(): activar.extend(["Cortar", "Copiar"]) else: desactivar.extend(["Cortar", "Copiar"]) ### Si hay texto en el clipboard, se puede pegar clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) texto = clipboard.wait_for_text() if texto: activar.append("Pegar") else: desactivar.append("Pegar") ### Si se puede deshacer. if buffer.can_undo(): activar.append("Deshacer") else: desactivar.append("Deshacer") ### Si se puede Rehacer. if buffer.can_redo(): activar.append("Rehacer") else: desactivar.append("Rehacer") else: self.base_panel.infonotebook.set_introspeccion(None, "") desactivar.extend([ "Cortar", "Copiar", "Rehacer", "Deshacer", "Guardar", "Cerrar", "Guardar Como", "Pegar", "Seleccionar Todo", #"Ejecutar Archivo", #"Detener Ejecución", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Numeracion", "Aumentar", "Disminuir", "Formato"]) ### Actualizar las toolbars y el menu. self.base_panel.toolbararchivo.update(True, activar) self.base_panel.toolbararchivo.update(False, desactivar) self.menu.update_archivos(True, activar) self.menu.update_archivos(False, desactivar) ### Opciones de Proyecto. if self.base_panel.proyecto: self.menu.activar_proyecto(True) self.base_panel.toolbarproyecto.activar( bool(self.base_panel.proyecto), bool(self.base_panel.workpanel.ejecucion)) else: self.menu.activar_proyecto(False) self.base_panel.toolbarproyecto.dict_proyecto["Ejecutar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Detener Ejecución"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Editar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Cerrar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto["Guardar Proyecto"].set_sensitive(False) ### Ejecución de archivo. if self.sourceview: self.base_panel.toolbararchivo.dict_archivo["Ejecutar Archivo"].set_sensitive( not bool(self.base_panel.workpanel.ejecucion)) self.base_panel.toolbararchivo.dict_archivo["Detener Ejecución"].set_sensitive( bool(self.base_panel.workpanel.ejecucion)) else: self.base_panel.toolbararchivo.dict_archivo["Ejecutar Archivo"].set_sensitive(False) self.base_panel.toolbararchivo.dict_archivo["Detener Ejecución"].set_sensitive(False) except: self.sourceview = False paginas = self.base_panel.workpanel.notebook_sourceview.get_children() if not paginas: self.__ejecutar_accion_archivo(None, "Nuevo Archivo") return True
class IdeMain(Gtk.Window): def __init__(self): Gtk.Window.__init__(self) #self.set_title("") #self.set_icon_from_file(".png") self.set_resizable(True) self.set_size_request(640, 480) self.set_border_width(5) self.set_position(Gtk.WindowPosition.CENTER) accel_group = Gtk.AccelGroup() self.add_accel_group(accel_group) self.updater = False self.sourceview = False base_widget = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.menu = Menu(accel_group) #toolbar = MainToolbar() self.base_panel = BasePanel() #trytoolbar = TryToolbar() base_widget.pack_start(self.menu, False, False, 0) #base_widget.pack_start(toolbar, False, False, 0) base_widget.pack_start(self.base_panel, True, True, 0) #base_widget.pack_start(trytoolbar, False, False, 0) self.add(base_widget) self.show_all() self.maximize() self.menu.connect('accion_ver', self.__ejecutar_accion_ver) self.menu.connect('accion_codigo', self.__ejecutar_accion_codigo) self.menu.connect('accion_proyecto', self.__ejecutar_accion_proyecto) self.menu.connect('accion_archivo', self.__ejecutar_accion_archivo) self.base_panel.connect("update", self.__new_handler) self.connect("destroy", self.__exit) def __ejecutar_accion_codigo(self, widget, accion): """ Cuando se hace click en una opción del menú codigo. """ self.base_panel.set_accion_codigo(widget, accion) def __ejecutar_accion_ver(self, widget, accion, valor): """ Cuando se hace click en una opción del menú ver. """ self.base_panel.set_accion_ver(widget, accion, valor) def __ejecutar_accion_archivo(self, widget, accion): """ Cuando se hace click en una opción del menú que afecta al archivo seleccionado. """ self.base_panel.set_accion_archivo(widget, accion) def __ejecutar_accion_proyecto(self, widget, accion): """ Cuando se hace click en una opción del menú proyecto. """ self.base_panel.set_accion_proyecto(widget, accion) def __exit(self, widget=None): """ Sale de la aplicación. """ Gtk.main_quit() sys.exit(0) def __new_handler(self, widget, sourceview, reset): """ Elimina o reinicia la funcion que actualiza las toolbars y menús. """ if self.updater and self.updater != None: GObject.source_remove(self.updater) self.updater = False self.sourceview = False if reset: self.sourceview = sourceview self.updater = GObject.timeout_add(500, self.__update) def __update(self): """ Actualiza las toolbars y menus. """ try: activar = [] desactivar = [] ### Si hay un archivo seleccionado. if self.sourceview: buffer = self.sourceview.get_buffer() activar.extend([ "Guardar Como", "Cerrar", "Numeracion", "Aumentar", "Disminuir", "Formato" ]) ### Si hay texto en el archivo seleccionado. inicio, fin = buffer.get_bounds() buf = buffer.get_text(inicio, fin, 0) if buf: activar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) else: desactivar.extend([ "Seleccionar Todo", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", ]) ### Si el contenido del archivo != al del buffer. archivo = self.sourceview.archivo texto = "" if archivo: if os.path.exists(archivo): arch = open(archivo, 'r') texto = arch.read() arch.close() if texto != buf: activar.append("Guardar") else: desactivar.append("Guardar") ### Si hay texto seleccionado, se puede copiar y cortar. if buffer.get_selection_bounds(): activar.extend(["Cortar", "Copiar"]) else: desactivar.extend(["Cortar", "Copiar"]) ### Si hay texto en el clipboard, se puede pegar clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) texto = clipboard.wait_for_text() if texto: activar.append("Pegar") else: desactivar.append("Pegar") ### Si se puede deshacer. if buffer.can_undo(): activar.append("Deshacer") else: desactivar.append("Deshacer") ### Si se puede Rehacer. if buffer.can_redo(): activar.append("Rehacer") else: desactivar.append("Rehacer") else: self.base_panel.infonotebook.set_introspeccion(None, "") desactivar.extend([ "Cortar", "Copiar", "Rehacer", "Deshacer", "Guardar", "Cerrar", "Guardar Como", "Pegar", "Seleccionar Todo", #"Ejecutar Archivo", #"Detener Ejecución", "Identar", "De Identar", "Buscar Texto", "Reemplazar Texto", "Chequear", "Numeracion", "Aumentar", "Disminuir", "Formato" ]) ### Actualizar las toolbars y el menu. self.base_panel.toolbararchivo.update(True, activar) self.base_panel.toolbararchivo.update(False, desactivar) self.menu.update_archivos(True, activar) self.menu.update_archivos(False, desactivar) ### Opciones de Proyecto. if self.base_panel.proyecto: self.menu.activar_proyecto(True) self.base_panel.toolbarproyecto.activar( bool(self.base_panel.proyecto), bool(self.base_panel.workpanel.ejecucion)) else: self.menu.activar_proyecto(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Ejecutar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Detener Ejecución"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Editar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Cerrar Proyecto"].set_sensitive(False) self.base_panel.toolbarproyecto.dict_proyecto[ "Guardar Proyecto"].set_sensitive(False) ### Ejecución de archivo. if self.sourceview: self.base_panel.toolbararchivo.dict_archivo[ "Ejecutar Archivo"].set_sensitive( not bool(self.base_panel.workpanel.ejecucion)) self.base_panel.toolbararchivo.dict_archivo[ "Detener Ejecución"].set_sensitive( bool(self.base_panel.workpanel.ejecucion)) else: self.base_panel.toolbararchivo.dict_archivo[ "Ejecutar Archivo"].set_sensitive(False) self.base_panel.toolbararchivo.dict_archivo[ "Detener Ejecución"].set_sensitive(False) except: self.sourceview = False paginas = self.base_panel.workpanel.notebook_sourceview.get_children() if not paginas: self.__ejecutar_accion_archivo(None, "Nuevo Archivo") return True