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 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 set_accion(self, accion, valor=True): # Ejecuta acciones sobre el código. _buffer = self.get_buffer() if accion == "Deshacer": if _buffer.can_undo(): _buffer.undo() elif accion == "Rehacer": if _buffer.can_redo(): _buffer.redo() elif accion == "Seleccionar Todo": inicio, fin = _buffer.get_bounds() _buffer.select_range(inicio, fin) elif accion == "Copiar": clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) if _buffer.get_selection_bounds(): inicio, fin = _buffer.get_selection_bounds() texto = _buffer.get_text(inicio, fin, 0) clipboard.set_text(texto, -1) elif accion == "Pegar": clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) texto = clipboard.wait_for_text() if texto != None: if _buffer.get_selection_bounds(): start, end = _buffer.get_selection_bounds() texto_seleccion = _buffer.get_text(start, end, 0) _buffer.delete(start, end) _buffer.insert_at_cursor(texto) elif accion == "Cortar": clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) if _buffer.get_selection_bounds(): start, end = _buffer.get_selection_bounds() texto_seleccion = _buffer.get_text(start, end, 0) _buffer.delete(start, end) clipboard.set_text(texto_seleccion, -1) elif accion == "Buscar Texto": try: inicio, fin = _buffer.get_selection_bounds() texto = _buffer.get_text(inicio, fin, 0) except: texto = None dialogo = DialogoBuscar(self, parent_window=self.get_toplevel(), title="Buscar Texto", texto=texto) dialogo.run() dialogo.destroy() elif accion == "Reemplazar Texto": texto = "" try: inicio, fin = _buffer.get_selection_bounds() texto = _buffer.get_text(inicio, fin, 0) except: texto = None dialogo = DialogoReemplazar(self, parent_window=self.get_toplevel(), title="Reemplazar Texto", texto=texto) dialogo.run() dialogo.destroy() elif accion == "Cerrar Archivo": if _buffer.get_modified(): dialog = DialogoAlertaSinGuardar( parent_window=self.get_toplevel()) respuesta = dialog.run() dialog.destroy() if respuesta == Gtk.ResponseType.ACCEPT: self.guardar() elif respuesta == Gtk.ResponseType.CANCEL: return elif respuesta == Gtk.ResponseType.CLOSE: self.__cerrar() else: self.__cerrar() elif accion == "Numeracion": self.set_show_line_numbers(valor) elif accion == "Identar": self.__identar() elif accion == "De Identar": self.__de_identar() elif accion == "Chequear": if self.lenguaje: if self.lenguaje.get_name() == "Python": numeracion = self.get_show_line_numbers() self.set_show_line_numbers(True) self.get_toplevel().set_sensitive(False) dialogo = DialogoErrores(self, parent_window=self.get_toplevel()) dialogo.run() dialogo.destroy() self.set_show_line_numbers(numeracion) self.get_toplevel().set_sensitive(True) return dialogo = Gtk.Dialog(parent=self.get_toplevel(), flags=Gtk.DialogFlags.MODAL, buttons=["OK", Gtk.ResponseType.ACCEPT]) dialogo.set_size_request(300, 100) dialogo.set_border_width(15) lab = "El Archivo no Contiene Código python\n" lab = "%s%s" % (lab, "o Todavía no ha Sido Guardado.") label = Gtk.Label(lab) label.show() dialogo.vbox.pack_start(label, True, True, 0) dialogo.run() dialogo.destroy()