Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
def inicio(icaro_dir, firmware_ruta):
    global ventana_principal
    global fon
    ventana_principal = Ventana(icaro_dir, firmware_ruta)
    fon = fondo()
    ventana_principal.fondo = fon
    inicial = componente_inicial(50, 50, 1, fon, ventana_principal)
    fon.objetos.append(inicial)
    ventana_principal.window1.show_all()
    R = ventana_principal.cfg.get("icaro_config", "colorR")
    G = ventana_principal.cfg.get("icaro_config", "colorG")
    B = ventana_principal.cfg.get("icaro_config", "colorB")
    X = ventana_principal.cfg.get("icaro_config", "pantallax")
    Y = ventana_principal.cfg.get("icaro_config", "pantallay")
    ventana_principal.area.set_size_request(int(X), int(Y))
    ventana_principal.fondo.FONDO = (int(R), int(G), int(B))
    GObject.timeout_add(50, ventana_principal.timeout)
    Gtk.main()
Example #7
0
    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()
Example #8
0
def inicio(icaro_dir,firmware_ruta):
    global ventana_principal
    global fon
    ventana_principal = Ventana(icaro_dir,firmware_ruta)
    fon = fondo()
    ventana_principal.fondo = fon
    inicial = componente_inicial(50, 50, 1, fon, ventana_principal)
    fon.objetos.append(inicial)

    ventana_principal.window1.show_all()
    R = ventana_principal.cfg.get("icaro_config", "colorR")
    G = ventana_principal.cfg.get("icaro_config", "colorG")
    B = ventana_principal.cfg.get("icaro_config", "colorB")
    X = ventana_principal.cfg.get("icaro_config", "pantallax")
    Y = ventana_principal.cfg.get("icaro_config", "pantallay")
    ventana_principal.area.set_size_request(int(X), int(Y))
    ventana_principal.fondo.FONDO = (int(R), int(G), int(B))
    gobject.timeout_add(50, ventana_principal.timeout)
# gobject.idle_add(ventana_principal.timeout)
# gobject.PRIORITY_DEFAULT=-1
    gtk.main()
Example #9
0
    #aca va todo lo de pygame
    fon.update()
    fon.componentes.update()
    fon.datos.update()
    punt.update()
    pygame.display.update()
    return True

# Inicio todas las clases
ventana_principal=Ventana()

#capturo el xid del drawingarea
os.putenv('SDL_WINDOWID', str(ventana_principal.area.window.xid))
gtk.gdk.flush()
gobject.idle_add(loop)
ventana_principal.window1.show_all()
fon=fondo()
punt=puntero(fon,ventana_principal)
texto=texto.Text(fon)
menu=pygame.sprite.RenderClear()
ventana_principal.fondo=fon
ventana_principal.textorender=texto
# el unico objeto que cargo  con nombre identificable
inicial=componente_inicial(20,50,1,fon,ventana_principal,texto)
fondo.objetos.append(inicial)
fon.componentes.add(inicial)
gtk.main()



Example #10
0
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()
Example #11
0
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()
Example #12
0
    #aca va todo lo de pygame
    fon.update()
    fon.componentes.update()
    fon.datos.update()
    punt.update()
    pygame.display.update()
    return True

# Inicio todas las clases
ventana_principal=Ventana()

#capturo el xid del drawingarea
os.putenv('SDL_WINDOWID', str(ventana_principal.area.window.xid))
gtk.gdk.flush()
gobject.idle_add(loop)
ventana_principal.window1.show_all()
fon=fondo()
punt=puntero(fon,ventana_principal)
texto=texto.Text(fon)
menu=pygame.sprite.RenderClear()
ventana_principal.fondo=fon
ventana_principal.textorender=texto
# el unico objeto que cargo  con nombre identificable
inicial=componente_inicial(20,50,1,fon,ventana_principal,texto)
fondo.objetos.append(inicial)
fon.componentes.add(inicial)
gtk.main()