def nuevo(self, dato): self.archivo = "" nuevo.nuevo(self.fondo) self.fondo.band = 0 R = self.cfg.get("icaro_config", "colorR") G = self.cfg.get("icaro_config", "colorG") B = self.cfg.get("icaro_config", "colorB") self.fondo.FONDO = (int(R), int(G), int(B)) self.fondo.ultimo = 1 inicial = componente_inicial(20, 50, 1, self.fondo, self) self.fondo.objetos.append(inicial)
def nuevo(self, dato): self.archivo = "" nuevo.nuevo(self.fondo) self.fondo.band = 0 self.fondo.FONDO = (00, 22, 55) self.fondo.ultimo = 1 inicial = componente_inicial( 20, 50, 1, self.fondo, self ) self.fondo.objetos.append(inicial)
def nuevo(self,dato): self.archivo="" nuevo.nuevo(self.fondo) self.fondo.band=0 self.fondo.FONDO=(00,22,55) inicial=componente_inicial( 20, 50, 1, self.fondo, self, self.textorender ) self.fondo.componentes.add(inicial) self.fondo.objetos.append(inicial)
def nuevo(self,dato): self.archivo="" nuevo.nuevo(self.fondo) self.fondo.band=0 self.fondo.FONDO=(00,22,55) self.fondo.ultimo_conectado=0 inicial=componente_inicial( 20, 50, 1, self.fondo, self, self.textorender ) self.fondo.componentes.add(inicial) self.fondo.objetos.append(inicial)
def nuevo(self, dato): self.archivo = "" nuevo.nuevo(self.fondo) self.fondo.band = 0 R = self.cfg.get("icaro_config", "colorR") G = self.cfg.get("icaro_config", "colorG") B = self.cfg.get("icaro_config", "colorB") self.fondo.FONDO = (int(R), int(G), int(B)) self.fondo.ultimo = 1 inicial = componente_inicial( 20, 50, 1, self.fondo, self ) self.fondo.objetos.append(inicial)
def abrir(self, b, dato): pagina = self.notebook2.get_current_page() dialog = Gtk.FileChooserDialog( "Open..", None, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) dialog.set_default_response(Gtk.ResponseType.OK) try: dialog.set_current_folder(dato) except Exception as ex: dialog.set_current_folder(sys.path[0]) if pagina == 0: filter = Gtk.FileFilter() filter.set_name("icaro") filter.add_pattern("*.icr") dialog.add_filter(filter) if pagina == 1: filter = Gtk.FileFilter() filter.set_name("C") filter.add_pattern("*.c") dialog.add_filter(filter) response = dialog.run() if response == Gtk.ResponseType.OK: if pagina == 0: nuevo.nuevo(self.fondo) inicial = componente_inicial(20, 50, 1, self.fondo, self) self.fondo.objetos.append(inicial) cadena = dialog.get_filename() self.update() abrir.abrir(self.diccionario, cadena, self.fondo, self) self.archivo = cadena if pagina == 1: cadena = dialog.get_filename() self.ver.open_file(self.ver.buffer, cadena) elif response == Gtk.ResponseType.CANCEL: print('Closed, no files selected') dialog.destroy()
@lasUpdate => 3-20-2020 @version => 1.0.1 ''' import pyautogui import xlrd from datetime import datetime from finalFunciones import encontrar from dias import diasEntrega from iconoGuardar import guardarIcono from detallesUsuario import detallesUsuario from textoOC import textoOC from defUsuario import defUsuario from parteProveedor import parteProveedor from nuevo import nuevo from cerrarPestana import cerrarPestana i = 0 inicio = datetime.now() #Iterate n cases. for i in range(23): encontrar(i) diasEntrega(i) detallesUsuario(i) textoOC() defUsuario(i) parteProveedor() nuevo(i) cerrarPestana() print(datetime.now() - inicio)
class Ventana(crear_comp, tool_compilador, UTILIDADES): """ Clase ventana contiene el constructor de la ventana GTK y las funciones basicas del sistema. diagrama de los widget anidados: ############################################### ventana | ->box1 | -> menu_bar | -> box2 | -> scrolled_window3 | | | -> toolbar | -> hp | -> self.notebook2 | | | -> scrolled_window | | | | | -> area | | | -> visor | -> scrolled_window2 | -> notebook ################################################ esta clase controla todos los eventos del programa, mouse, teclado, interaccion entre los componentes. A su ves es la encargada d actualizar el estado de los bloques icaro y redibujar la pantalla mediante la funcion ventana_principal.timeout """ # variables globales para manejar posicion del mouse, clicks y pulsaciones # de teclas dentro de la ventana archivo = "" mousexy = (0, 0) boton_mouse = [0, 0, 0, 0] seleccionado = 0 seleccionado_datos = 0 seleccionado_datos_ed = 0 tecla = 0 valor_tecla = "" tecla_enter = 0 cadena_pinguino = [] seleccion_menu = 1 tipo_componente = 1 diccionario = {} tooltip = {} lista = [] config = [] edicion = 0 z = 1 cursores = [0] dicc_accesos_directos = { 65470: "f1", 65471: "f2", 65472: "f3", 65473: "f4", 65474: "f5", 65475: "f6", 65476: "f7", 65477: "f8", 65478: "f9", 65479: "f10", 65480: "f11", 65481: "f12", } valor_datos_comp = {} def __init__(self, icaro_dir, firmware_ruta): # esta es la lista de donde se sacan los valores para los botones # icaro self.firmware_ruta = "." + firmware_ruta self.icaro_dir = icaro_dir arch = open(sys.path[0] + "/version", "r") version = arch.readline() creditos.Info.version = version self.carga_conf_ventana() # declaro la ventana principal # esta es la toolbar donde van los botones para cargar los datos # y compilar # declaro la tabla donde van los botones para el menu de bloques # box1 es el contenedor principal despues de la ventana self.window1 = gtk.Window() # ~ self.window1.fullscreen() titulo = "icaro " + version.strip("\n\r") self.window1.set_title(titulo) toolbar = gtk.Toolbar() self.area = gtk.DrawingArea() scrolled_window = gtk.ScrolledWindow() scrolled_window2 = gtk.ScrolledWindow() scrolled_window3 = gtk.ScrolledWindow() table = gtk.VBox(False, 0) #len(self.lista)) notebook = gtk.Notebook() self.notebook2 = gtk.Notebook() hp = gtk.HPaned() box2 = gtk.HBox(False, 3) box1 = gtk.VBox(False, 3) menu_bar = gtk.MenuBar() # empaqueto todo # esta es la idea de usar un hpaned para poder achicar la pantalla #, en las netbook no entra todo self.window1.add(box1) box1.pack_start(menu_bar, False, True, 1) box1.pack_start(box2, True, True, 1) scrolled_window.add_with_viewport(self.area) scrolled_window3.add_with_viewport(toolbar) scrolled_window2.add_with_viewport(notebook) self.notebook2.append_page(scrolled_window, gtk.Label("bloques")) box2.pack_start(scrolled_window3, False, False, 1) box2.pack_start(hp, True, True, 1) hp.pack1(self.notebook2, True, True) hp.pack2(scrolled_window2, True, True) archivo_nombre = self.cfg.get("pic", "arch") self.valor_datos_comp["fin "] = self.cfg.get("pic", "cierrebloque") dir_source = (os.path.expanduser('~') + "/" + self.firmware_ruta + "firmware/source/" + archivo_nombre) self.ver = visor.visor_codigo(self, self.notebook2, self.firmware_ruta, "source/" + archivo_nombre, "codigo fuente") self.ver2 = visor.visor_codigo(self, self.notebook2, self.firmware_ruta, "temporal/log.dat", "registro de compilación") hp.set_position(500) self.window1.connect('delete-event', gtk.main_quit) self.window1.set_icon_from_file(sys.path[0] + "/imagenes/icaro.png") self.area.set_app_paintable(True) self.area.set_size_request(800, 800) menu1 = [_("File"), _("Edit"), "herramientas"] menu_general = [(_("New"), _("Open"), _("Save"), _("Save as"), _("Save as function"), _("Examples"), _("Exit")), (_("Background"), _("Color"), _("About"), _("Config")), ( "graficador", "clemente bulk", "clemente cdc", "firmware", )] menu_bar.show() # declaro los botones del menu 'menu'5 y 'edicion' for a in range(len(menu_general)): menu = gtk.Menu() # buf es donde se cargan todos los botones del menu for i in menu_general[a]: menu_items = gtk.MenuItem(i) menu.append(menu_items) menu_items.connect("activate", self.menuitem_response, i) menu_items.show() root_menu = gtk.MenuItem(menu1[a]) root_menu.show() root_menu.set_submenu(menu) menu_bar.append(root_menu) # toolbar.append_item toolbar.set_style(gtk.TOOLBAR_BOTH_HORIZ) toolbar.set_orientation(gtk.ORIENTATION_VERTICAL) toolbar.show() # creo los botones de la toolbar botones_toolbar = self.crear_botones_bootlader(toolbar) # creo los botones de la toolbar en funcion de la tupla botonas_toolbar for dat in botones_toolbar: if dat[0] == 3: toolbar.append_space() if dat[0] == 1 or dat[0] == 2: self.crear_toolbuttons(dat[0], dat[1], dat[2], dat[3], dat[4], dat[5], dat[6]) scrolled_window.set_size_request(300, 300) scrolled_window.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) scrolled_window.show() scrolled_window2.set_border_width(1) scrolled_window2.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) scrolled_window2.show() scrolled_window3.set_border_width(1) scrolled_window3.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) scrolled_window3.show() notebook.set_tab_pos(gtk.POS_RIGHT) label = gtk.Label(self.diccionario[self.lista[0]][1]) notebook.append_page(table, label) button = gtk.RadioButton() ## aca cargo los datos de cada bloque ## for i in range(1, len(self.lista)): if self.diccionario[self.lista[i]][0] == "notebook": table = gtk.VBox(False, 0) #len(self.lista)) label = gtk.Label(self.diccionario[self.lista[i]][1]) notebook.append_page(table, label) else: self.diccionario[self.lista[i]][0] caja = self.imagen_boton(self.diccionario[self.lista[i]][0], self.diccionario[self.lista[i]][0]) button = gtk.RadioButton(button) button.set_tooltip_text(self.diccionario[self.lista[i]][6]) button.add(caja) button.connect("clicked", self.botones, self.lista[i]) table.pack_start(button, False, True, 0) button.show() # capturo los eventos del drawing area # menos el teclado que lo capturo desde la ventana principal self.area.add_events(gtk.gdk.BUTTON_PRESS_MASK) self.area.add_events(gtk.gdk.BUTTON_RELEASE_MASK) self.area.add_events(gtk.gdk.POINTER_MOTION_MASK) self.window1.add_events(gtk.gdk.KEY_PRESS_MASK) self.window1.add_events(gtk.gdk.KEY_RELEASE_MASK) self.area.connect("button-press-event", self.buttonpress_cb) self.area.connect("button-release-event", self.buttonrelease_cb) self.area.connect("motion-notify-event", self.move_cb) self.area.connect("expose-event", self.expose) self.window1.connect("key_press_event", self.keypress_cb) self.window1.connect("key_release_event", self.keyrelease_cb) self.area.realize() display = self.area.window.get_display() pixbuf = gtk.gdk.pixbuf_new_from_file( os.path.abspath(os.path.dirname(__file__)) + "/imagenes/mouse/lapiz.png") lapiz = gtk.gdk.Cursor(display, pixbuf, 6, 18) self.cursores.append(lapiz) pixbuf = gtk.gdk.pixbuf_new_from_file( os.path.abspath(os.path.dirname(__file__)) + "/imagenes/mouse/puntero.png") puntero = gtk.gdk.Cursor(display, pixbuf, 6, 18) self.cursores.append(puntero) pixbuf = gtk.gdk.pixbuf_new_from_file( os.path.abspath(os.path.dirname(__file__)) + "/imagenes/mouse/borrar.png") borrar = gtk.gdk.Cursor(display, pixbuf, 6, 18) self.cursores.append(borrar) pixbuf = gtk.gdk.pixbuf_new_from_file( os.path.abspath(os.path.dirname(__file__)) + "/imagenes/mouse/edicion.png") edicion = gtk.gdk.Cursor(display, pixbuf, 6, 18) self.cursores.append(edicion) self.definir_cursor(1) def crear_botones_bootlader(self, toolbar): botones_inic = [[ 1, toolbar, gtk.STOCK_NEW, "New", self.tooltip["nuevo"], self.nuevo, None ], [ 1, toolbar, gtk.STOCK_OPEN, "Open", self.tooltip["abrir"], self.abrir, None ], [ 1, toolbar, gtk.STOCK_SAVE, "Save", self.tooltip["guardar"], self.guardar, 0 ], [ 1, toolbar, gtk.STOCK_QUIT, "Quit", self.tooltip["salir"], self.salir, None ], [3]] # boton_medio=[ # [2, toolbar, sys.path[0] + "/imagenes/icaro.png", # "Compile", self.tooltip["compilar"], self.compilar, None], # [2, toolbar, sys.path[0] + "/imagenes/compilar.png", # "Load", self.tooltip["cargar"], self.upload, None], # [3], # [2, toolbar, sys.path[0] + "/imagenes/tortucaro.png", # "Tortucaro", self.tooltip["tortucaro"], self.comp_esp, # "tortucaro/tortucaro"], # [2, toolbar, sys.path[0] + "/imagenes/pilas.png", # "pilas", self.tooltip["pilas"], self.comp_esp, # "pilas/pilas-engine"], # [2, toolbar, sys.path[0] + "/imagenes/icaroblue.png", # "icaroblue", self.tooltip["icaroblue"], self.comp_esp, # "icaroblue/icaroblue"], # [3]] boton_medio = [] for linea in self.carga_info_botones(): boton_medio.append([ 2, toolbar, sys.path[0] + "/" + self.icaro_dir + linea[0], linea[1], self.tooltip[linea[2]], linea[3], linea[4] ]) boton_fin = [ [ 1, toolbar, gtk.STOCK_HELP, "Help", self.tooltip["ayuda"], self.ayuda, None ], [3], [ 1, toolbar, gtk.STOCK_ADD, "Pen", self.tooltip["lapiz"], self.dibujo, 1 ], [ 1, toolbar, gtk.STOCK_SELECT_COLOR, "Move", self.tooltip["mover"], self.dibujo, 2 ], [ 1, toolbar, gtk.STOCK_DELETE, "Erase", self.tooltip["borrar"], self.dibujo, 3 ], [1, toolbar, gtk.STOCK_EDIT, "Edit", "", self.dibujo, 4], [3], [ 1, toolbar, gtk.STOCK_ZOOM_IN, "agrandar", "", self.menuitem_response, "zoomas" ], [ 1, toolbar, gtk.STOCK_ZOOM_OUT, "achicar", "", self.menuitem_response, "zoomenos" ], [ 1, toolbar, gtk.STOCK_ZOOM_100, "zoom 1:1", "", self.menuitem_response, "zoomcero" ], ] botones_final = botones_inic + boton_medio + boton_fin return botones_final def crear_toolbuttons(self, tipo, toolbar, img, nombre, tooltip, func, metodos): # creo los botones de la toolbar if tipo == 1: iconw = gtk.Image() iconw.set_from_stock(img, 30) tool_button = toolbar.append_item(_(nombre), tooltip, "Private", iconw, func, metodos) if tipo == 2: iconw = gtk.Image() iconw.set_from_file(img) tool_button = toolbar.append_item(_(nombre), tooltip, "Private", iconw, func, metodos) def definir_cursor(self, b): self.area.window.set_cursor(self.cursores[b]) # if b==1: # self.area.window.set_cursor(None) self.puntero_seleccion_mouse = b # ======================================================================== # ABRIR LA VENTANA DE VISOR DE CODIGO # ======================================================================== def graf(self): graf = graficador_matplot.VENTANA() graf.window.show_all() def clemente(self, prt): cad = "clear\n python " + src + "/clemente/clemente.py " + prt + " \n" cle = terminal_vte.TERM_CLEMENTE(cad) cle.window.show_all() # ======================================================================== # VENTANA DE AYUDA (NAVEGADOR) # ======================================================================== def ayuda(self, b): #self.visor() texto = ( "para ver la documentación actualizada, ir a la pagina web: http://roboticaro.org/documentacion/" ) self.mensajes(3, texto) def dibujo(self, event, b): self.seleccion_menu = b self.definir_cursor(b) # ======================================================================== # ESTO ES PARA GREGAR IMAGENES AL BOTON DE LA TOOLBAR # ======================================================================== def imagen_boton(self, xpm_filename, label_text): box1 = gtk.HBox(False, 0) box1.set_border_width(0) image = gtk.Image() xpm_filename = xpm_filename.strip(" ") buf = sys.path[ 0] + "/" + self.icaro_dir + "/imagenes/componentes/" + xpm_filename + ".png" image.set_from_file(buf) label = gtk.Label(label_text) box1.pack_start(image, False, True, 1) box1.pack_start(label, False, True, 1) image.show() label.show() return box1 # esta funcion captura el evento de presionar un boton de la toolbar # table y lo manda tipo_componentes def botones(self, event, b): self.tipo_componente = b self.seleccion_menu = 1 self.definir_cursor(1) return def guardar(self, b, dato): pagina = self.notebook2.get_current_page() dialog = gtk.FileChooserDialog("save..", None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: cadena = dialog.get_filename() # separo la cadena para sacar la extension del archivo # si el tamaño de cadena2 es 1, el nombre del archivo no # tiene extension, entonces le agrego - .icr - cadena2 = cadena.split(".") print len(cadena2) if len(cadena2) == 1: print "dato", dato, pagina if dato == 0 and pagina == 0: cadena = cadena + ".icr" elif dato == 0 and pagina == 1: cadena = cadena + ".c" elif dato == 1: cadena = cadena + ".func" if os.path.isfile(cadena): resp = self.mensajes( 1, "Ya existe un archivo con el nombre " + cadena + "¿Quiere reemplazarlo?") else: resp = False if resp == True or os.path.isfile(cadena) == False: if dato == 0: print "daot=0" if pagina == 0: print "pag=0" guardar.guardar(self.fondo.objetos, cadena, self.fondo) self.archivo = cadena else: if pagina == 1: self.ver.save_file(cadena) if dato == 1: crear.funcion( self.fondo, self, cadena, ) elif response == gtk.RESPONSE_CANCEL: pass dialog.destroy() print resp, cadena def abrir(self, dato): pagina = self.notebook2.get_current_page() dialog = gtk.FileChooserDialog("Open..", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) try: dialog.set_current_folder(dato) except Exception, ex: dialog.set_current_folder(sys.path[0]) if pagina == 0: filter = gtk.FileFilter() filter.set_name("icaro") filter.add_pattern("*.icr") dialog.add_filter(filter) if pagina == 1: filter = gtk.FileFilter() filter.set_name("C") filter.add_pattern("*.c") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: if pagina == 0: nuevo.nuevo(self.fondo) inicial = componente_inicial(20, 50, 1, self.fondo, self) self.fondo.objetos.append(inicial) cadena = dialog.get_filename() self.update() abrir.abrir(self.diccionario, cadena, self.fondo, self) self.archivo = cadena if pagina == 1: cadena = dialog.get_filename() self.ver.open_file(self.ver.buffer, cadena) elif response == gtk.RESPONSE_CANCEL: print 'Closed, no files selected' dialog.destroy()
class Ventana: # variables globales para manejar posicion del mouse, clicks y pulsaciones # de teclas dentro de la ventana archivo="" mousexy=(0,0) boton_mouse= [0,0,0,0] seleccionado=0 seleccionado_datos=0 seleccionado_datos_ed=0 tecla=0 valor_tecla="" tecla_enter=0 processor="18f4550" cadena_pinguino=[] seleccion_menu=1 tipo_componente=1 diccionario={} tooltip={} lista=[] config=[] edicion=0 dicc_accesos_directos={ 65470:"f1", 65471:"f2", 65472:"f3", 65473:"f4", 65474:"f5", 65475:"f6", 65476:"f7", 65477:"f8", 65478:"f9", 65479:"f10", 65480:"f11", 65481:"f12", } def __init__(self): ############################################### # el orden de los contenedores de la ventana # ventana # | # ->box1 # | # -> menu_bar # | # -> toolbar # | # -> box2 # | # -> scrolled_window # | # -> scrolled_window2 ################################################ #esta es la lista de donde se sacan los valores para los botones #icaro arch=open(sys.path[0] + "/version", "r") a=arch.readline() creditos.Info.version= a self.carga_dicc() self.tooltip=tooltips.dicc self.lista=self.diccionario.keys() self.lista.sort() self.carga_paleta() # cargo la configuracion de icaro conf=open(sys.path[0] +"/config.dat","r") dat=conf.readlines() for txt in dat: self.config.append(txt) conf.close() #declaro la ventana principal self.window1 = gtk.Window() self.window1.connect('delete-event', gtk.main_quit) self.window1.set_icon_from_file( sys.path[0] + "/imagenes/icaro.png" ) #~ self.window1.fullscreen() #self.window1.fullscreen() # declaro el drawing area donde va a estar pygame # y los eventos del mouse y teclado self.area = gtk.DrawingArea() self.area.set_app_paintable(True) self.area.set_size_request(3000, 3000) # declaro los botones del menu 'menu' y 'edicion' menu = gtk.Menu() # buf es donde se crgan todos los botones del menu buf=( _("New"), _("Open"), _("Save"), _("Save as"), _("Save as function"), _("Examples"), _("Exit") ) for i in buf: menu_items = gtk.MenuItem(i) menu.append(menu_items) menu_items.connect("activate", self.menuitem_response, i) menu_items.show() menu2 = gtk.Menu() # buf es donde se crgan todos los botones del menu buf2=(_("Background"),_("Color"),_("About"), _("Config")) for i in buf2: menu_items2 = gtk.MenuItem(i) menu2.append(menu_items2) menu_items2.connect("activate", self.menuitem_response, i) menu_items2.show() # los menus del toolbar se agrupan en estos dos "menus raices" root_menu = gtk.MenuItem(_("File")) root_menu.show() root_menu.set_submenu(menu) root_menu2 = gtk.MenuItem(_("Edit")) root_menu2.show() root_menu2.set_submenu(menu2) #los dos menus_root quedan dentro de la barra de menu menu_bar = gtk.MenuBar() menu_bar.show() menu_bar.append (root_menu) menu_bar.append (root_menu2) # esta es la toolbar donde van los botones para cargar los datos # y compilar toolbar = gtk.Toolbar() toolbar.append_item toolbar.set_style(gtk.TOOLBAR_BOTH) toolbar.show() # creo los botones de la toolbar iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_NEW,30) tool_button = toolbar.append_item( _("New"), self.tooltip["nuevo"], "Private", iconw, self.nuevo) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_OPEN,30) tool_button = toolbar.append_item( _("Open"), self.tooltip["abrir"], "Private", iconw, self.abrir) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_SAVE,30) tool_button = toolbar.append_item( _("Save"), self.tooltip["guardar"], "Private", iconw, self.guardar) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_QUIT,30) tool_button = toolbar.append_item( _("Exit"), self.tooltip["salir"], "Private", iconw, self.salir) toolbar.append_space() iconw = gtk.Image() iconw.set_from_file(sys.path[0] + "/imagenes/icaro.png") tool_button = toolbar.append_item( _("Compile"), self.tooltip["compilar"], "Private", iconw, self.compilar) iconw = gtk.Image() iconw.set_from_file(sys.path[0] + "/imagenes/compilar.png") tool_button = toolbar.append_item( _("Load"), self.tooltip["cargar"], "Private", iconw, self.upload) iconw = gtk.Image() iconw.set_from_file(sys.path[0] + "/imagenes/tortucaro.png") tool_button = toolbar.append_item( _("Tortucaro"), self.tooltip["tortucaro"], "Private", iconw, self.tortucaro) toolbar.append_space() iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_HELP,30) tool_button = toolbar.append_item( _("Help"), self.tooltip["ayuda"], "Private", iconw, self.ayuda) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_PROPERTIES,30) tool_button = toolbar.append_item( _("View source"), self.tooltip["ver_codigo"], "Private", iconw, self.ver) # un espacio en blanco para separar toolbar.append_space() iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_EDIT,30) dibujar_button = toolbar.append_element( gtk.TOOLBAR_CHILD_BUTTON,None, _("Pen"), self.tooltip["lapiz"], "Private", iconw, self.dibujo,1) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_SELECT_COLOR,30) mover_button = toolbar.append_element( gtk.TOOLBAR_CHILD_BUTTON,None, _("Move"), self.tooltip["mover"], "Private", iconw, self.dibujo,2) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_DELETE,30) tool_button = toolbar.append_element( gtk.TOOLBAR_CHILD_BUTTON,None, _("Erase"), self.tooltip["borrar"], "Private", iconw, self.dibujo,3) iconw = gtk.Image() iconw.set_from_stock(gtk.STOCK_ZOOM_FIT,30) mover_button = toolbar.append_element( gtk.TOOLBAR_CHILD_BUTTON,None, _("Edit"), self.tooltip["mover"], "Private", iconw, self.dibujo,4) #declaro el scroll_window donde esta inserto el drawing area scrolled_window = gtk.ScrolledWindow() scrolled_window.set_size_request(500, 600) scrolled_window.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS) scrolled_window.show() scrolled_window.add_with_viewport(self.area) #declaro el scroll window donde va la toolbar de los bloques scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_border_width(1) scrolled_window2.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) scrolled_window2.show() #declaro la tabla donde van los botones para el menu de bloques table=gtk.VBox(False, len(self.lista)) notebook = gtk.Notebook() notebook.set_tab_pos(gtk.POS_RIGHT) # notebook.show() # scrolled_window2.add_with_viewport(notebook) label = gtk.Label(self.diccionario[self.lista[0]][1]) notebook.append_page(table,label) # box1 es el contenedor principal despues de la ventana box1 = gtk.VBox(False, 3) # box2 es el segundo en importancia box2 = gtk.HBox(False, 2) buffer = self.diccionario[self.lista[1]][0] caja = self.imagen_boton( self.diccionario[self.lista[1]][0], self.diccionario[self.lista[1]][0] ) button = gtk.RadioButton() if self.tooltip.has_key(self.diccionario[self.lista[1]][0]): val=self.tooltip[self.diccionario[self.lista[1]][0]] button.set_tooltip_text(val) # bucle principal donde se cargan los RAdioButton donde se cargan # los componentes del diccionario button.add(caja) button.connect("clicked", self.botones,self.lista[1])#buffer button.show() table.pack_start(button, False, True, 0) for i in range(2,len(self.lista)): if self.diccionario[self.lista[i]][0]=="notebook": table=gtk.VBox(False, len(self.lista)) label = gtk.Label(self.diccionario[self.lista[i]][1]) notebook.append_page(table,label) else: buffer = self.diccionario[self.lista[i]][0] caja = self.imagen_boton( self.diccionario[self.lista[i]][0], self.diccionario[self.lista[i]][0] ) button = gtk.RadioButton(button) if self.tooltip.has_key( self.diccionario[self.lista[i]][0] ): tool=self.tooltip [ self.diccionario[self.lista[i]][0] ] button.set_tooltip_text(tool) button.add(caja) button.connect("clicked", self.botones,self.lista[i]) table.pack_start(button, False, True, 0) button.show() #empaqueto todo box2.pack_start(scrolled_window, True, True, 1) box2.pack_start(scrolled_window2,False, False, 1) box1.pack_start(menu_bar, False, True, 1) box1.pack_start(toolbar, False, True, 1) box1.pack_start(box2, True, True, 1) self.window1.add(box1) # capturo los eventos del drawing area # menos el teclado que lo capturo desde la ventana principal self.area.add_events(gtk.gdk.BUTTON_PRESS_MASK) self.area.add_events(gtk.gdk.BUTTON_RELEASE_MASK) self.area.add_events(gtk.gdk.POINTER_MOTION_MASK) self.window1.add_events(gtk.gdk.KEY_PRESS_MASK) self.window1.add_events(gtk.gdk.KEY_RELEASE_MASK) self.area.connect("button-press-event", self.buttonpress_cb) self.area.connect("button-release-event", self.buttonrelease_cb) self.area.connect("motion-notify-event", self.move_cb) self.window1.connect("key_press_event", self.keypress_cb) self.window1.connect("key_release_event", self.keyrelease_cb) self.area.realize() # self.area.grab_focus() # ============================================================================== # ABRIR LA VENTANA DE VISOR DE CODIGO # ============================================================================== def ver(self,b): ver=visor.visor_codigo(self) ver.window.show_all() # ============================================================================== # VENTANA DE AYUDA (NAVEGADOR) # ============================================================================== def ayuda(self,b): browser = navegador.SimpleBrowser() browser.open('http://roboticaro.org/documentacion/index.html') browser.show() def dibujo(self,event,b): self.seleccion_menu=b # ============================================================================== # ESTO ES PARA GREGAR IMAGENES AL BOTON DE LA TOOLBAR # ============================================================================== def imagen_boton(self, xpm_filename, label_text): box1 = gtk.HBox(False, 0) box1.set_border_width(0) image = gtk.Image() xpm_filename=xpm_filename.strip(" ") buf=sys.path[0] + "/imagenes/componentes/"+xpm_filename+".png" image.set_from_file(buf) label = gtk.Label(label_text) box1.pack_start(image, False, True, 1) box1.pack_start(label, False, True, 1) image.show() label.show() return box1 # ============================================================================== # GENERADOR DE MENSAJES # ============================================================================== def mensajes(self,num,mensa): tipo= ( gtk.MESSAGE_WARNING, gtk.MESSAGE_QUESTION, gtk.MESSAGE_ERROR, gtk.MESSAGE_INFO ) botones=( gtk.BUTTONS_OK, gtk.BUTTONS_OK_CANCEL, gtk.BUTTONS_OK, gtk.BUTTONS_OK ) md = gtk.MessageDialog(None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, tipo[num], botones[num], mensa) resp=md.run() md.destroy() if resp == gtk.RESPONSE_OK: return True elif resp == gtk.RESPONSE_CANCEL: return False # esta funcion captura el evento de presionar un boton de la toolbar # table y lo manda tipo_componentes def botones(self,event,b): print "boton -" ,b self.tipo_componente=b self.seleccion_menu=1 return # ============================================================================== # FUNCION PARA GENERAR LOS COMPONENTES DESDE EL DICCIONARIO # ============================================================================== def crear_componente(self,b,x,y): ax=0 ay=30 dx=10 dy=20 # siempre hay que tratar de que el foco quede en el drawing area self.area.grab_focus() if self.diccionario[b][1]==1: c1=componente ( x-ax, y-ay, self.fondo.identificador+1, self.diccionario[b][2], self.diccionario[b][3], self.diccionario[b][0], self.fondo, self, self.textorender ) self.fondo.componentes.add(c1) self.fondo.identificador+=1 self.fondo.objetos.append(c1) self.fondo.tipo_obj.append(self.diccionario[b][1]) if self.diccionario[b][1]==4: self.fondo.identificador+=1 c1=componente_cero_arg ( x-ax, y-ay, self.fondo.identificador, self.diccionario[b][3], self.diccionario[b][0], self.fondo, self, self.textorender ) self.fondo.componentes.add(c1) self.fondo.objetos.append(c1) self.fondo.tipo_obj.append(self.diccionario[b][1]) if self.diccionario[b][1]==5: self.fondo.identificador+=1 c1=componente_bloque_uno( x-ax, y-ay, self.fondo.identificador, self.diccionario[b][3], self.diccionario[b][0], self.fondo, self, self.textorender ) self.fondo.componentes.add(c1) self.fondo.objetos.append(c1) self.fondo.identificador +=1 c1=componente_bloque_dos ( x-ax, y+80-ay, self.fondo.identificador, self.diccionario[b][3], self.diccionario[b][4], self.fondo, self, self.textorender ) self.fondo.componentes.add(c1) self.fondo.objetos.append(c1) self.fondo.tipo_obj.append(self.diccionario[b][1]) self.fondo.tipo_obj.append(0) if self.diccionario[b][1]==6: c1=comp_dat_arg ( x-dx, y-dy, self.fondo.identificador_dat, self.diccionario[b][2], self.diccionario[b][4], self.diccionario[b][3], self.diccionario[b][5], self.diccionario[b][0].strip(" ")+".png", 6, self.fondo, self, self.textorender ) self.fondo.identificador_dat+=1 self.fondo.datos.add(c1) self.fondo.objetos_datos.append(c1) self.fondo.tipo_obj_datos.append(self.diccionario[b][1]) if self.diccionario[b][1]==7: c1=comp_dat_arg ( x-dx, y-dy, self.fondo.identificador_dat, self.diccionario[b][2], self.diccionario[b][4], self.diccionario[b][3], self.diccionario[b][5], self.diccionario[b][0].strip(" ")+".png", 7, self.fondo, self, self.textorender ) self.fondo.identificador_dat+=1 self.fondo.datos.add(c1) self.fondo.objetos_datos.append(c1) self.fondo.tipo_obj_datos.append(self.diccionario[b][1]) # por si quiero implementar un dialogo de mensajes # self.dialog = gtk.MessageDialog(None, # gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, # gtk.MESSAGE_QUESTION, # gtk.BUTTONS_OK,None) # self.dialog.set_markup('Please enter your <b>name</b>:') # entry = gtk.Entry() # entry.connect("activate", self.responseToDialog, self.dialog, gtk.RESPONSE_OK) # hbox = gtk.HBox() # hbox.pack_start(gtk.Label("valor:"), False, 5, 5) # hbox.pack_end(entry) # self.dialog.format_secondary_markup("ingresa el valor del componente") # self.dialog.vbox.pack_end(hbox, True, True, 0) # # def responseToDialog(self,entry, dialog, response): # dialog.response(response) # text= entry.get_text() # dialog.hide() # #return text # ============================================================================== # FUNCIONES PARA COMPILAR Y CARGAR EL FIRMWARE # ============================================================================== # cargo template.pde para tener la planilla estandar dentro de # cadena_pinguino def carga(self): self.cadena_pinguino[:]=[] dir_conf=os.path.expanduser('~') + "/.icaro/np05/" archivo=open(dir_conf +"/source/template.pde","r") for linea in archivo: self.cadena_pinguino.append(linea) def compilar(self,b): self.carga() crear.crear_archivo(self.fondo,self) i=carga.compilar_pic("main",self.config[0]) if i==1: self.mensajes(0,("no se encuentra el compilador sdcc en" + " la ruta " + self.config[0] + " . Pruebe configurar el archivo"+ " config.dat y corregirlo")) if i==0: self.mensajes(3,"la compilacion fue exitosa") else: self.mensajes(0,"hubo un error de compilacion") def upload(self,b): resultado=1 self.mensajes (3, "aprete el boton RESET de la placa pinguino antes de continuar" ) i=carga.upload_pic("main",self.config[0]) if i==0: self.mensajes(3,"la carga fue exitosa") return 0 if i==1: self.mensajes(0,"no se a detectado ningun dispositivo conectada. ¿esta conectado y encendido el PIC?") return 1 if i==2: self.mensajes(0,"Se detecto el dispositivo, pero no se puede cargar el firmware, hay que cargar el firmware antes de que se prenda el led rojo del dispositivo") return 2 if i==2: self.mensajes(0,"no se genero el archivo .hex para cargar") return 3 if i==2: self.mensajes(0,"error al compilar y generar el archivo .hex") return 4 def tortucaro(self,b): resultado=1 comp=1 i=carga.compilar_pic("tortucaro",self.config[0]) if i==0: self.mensajes(3,"la compilacion fue exitosa") comp=0 else: self.mensajes(0,"hubo un error de compilacion") comp=1 if comp==0: self.mensajes ( 3, "aprete el boton RESET de la placa pinguino antes de continuar" ) i=carga.upload_pic("tortucaro",self.config[0]) if i==0: self.mensajes(3,"la carga fue exitosa") return 0 if i==1: self.mensajes(0,"no se a detectado ningun dispositivo conectada. ¿esta conectado y encendido el PIC?") return 1 if i==2: self.mensajes(0,"Se detecto el dispositivo, pero no se puede cargar el firmware, hay que cargar el firmware antes de que se prenda el led rojo del dispositivo") return 2 if i==2: self.mensajes(0,"no se genero el archivo .hex para cargar") return 3 if i==2: self.mensajes(0,"error al compilar y generar el archivo .hex") return 4 def guardar(self,dato): dialog = gtk.FileChooserDialog("save..", None, gtk.FILE_CHOOSER_ACTION_SAVE, ( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK ) ) dialog.set_default_response(gtk.RESPONSE_OK) response = dialog.run() if response == gtk.RESPONSE_OK: cadena=dialog.get_filename() #separo la cadena para sacar la extension del archivo # si el tamaño de cadena2 es 1, el nombre del archivo no #tiene extension, entonces le agrego - .icr - cadena2=cadena.split(".") if len(cadena2)==1: cadena=cadena+".icr" if os.path.isfile(cadena): resp=self.mensajes( 1, "Ya existe un archivo con el nombre "+ cadena + "¿Quiere reemplazarlo?" ) else: resp=False if resp==True or os.path.isfile(cadena)==False : guardar.guardar( self.fondo.objetos, cadena, self.fondo ) self.archivo=cadena elif response == gtk.RESPONSE_CANCEL: pass dialog.destroy() def abrir(self,dato): dialog = gtk.FileChooserDialog( "Open..", None, gtk.FILE_CHOOSER_ACTION_OPEN, ( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK ) ) dialog.set_default_response(gtk.RESPONSE_OK) try: dialog.set_current_folder(dato) except Exception, ex: dialog.set_current_folder(sys.path[0]) #~ filter = gtk.FileFilter() #~ filter.set_name("All files") #~ filter.add_pattern("*") #~ dialog.add_filter(filter) filter = gtk.FileFilter() filter.set_name("icaro") filter.add_pattern("*.icr") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: nuevo.nuevo(self.fondo) inicial=componente_inicial ( 20,50,1, self.fondo, self,self.textorender ) self.fondo.componentes.add(inicial) self.fondo.objetos.append(inicial) cadena= dialog.get_filename() abrir.abrir( self.diccionario, cadena, self.fondo, self, self.textorender ) self.archivo=cadena elif response == gtk.RESPONSE_CANCEL: print 'Closed, no files selected' dialog.destroy()