Пример #1
0
def main():

    mens = UTILIDADES()
    ventana = VentanaGtk()
    comprobacion_errores(ventana, mens)
    conf = os.path.expanduser('~') + "/.icaro/config.ini"

    cfg = mens.carga_conf(conf)
    turtleart_ruta = cfg.get("general", "turtlear")
    bootloader=cfg.get("icaro_config","bootloader")

    pyt = ["Lanza Icaro-bloques ",
           "para generar codigo PYTHON."]
    tur = ["Lanza Art con el modulo Tortucaro.",
           "para manejo conectado a la netbook"]
    icr = ["Lanza Icaro-bloques ",
           "para manejo de robots autonomos",
           "usando el bootloader V4"]
    sal = ["Sale del sistema"]
    # idle = ("idle -c 'import apicaro;" +
            # " icaro=apicaro.puerto(); icaro.iniciar()'"
            # )

    ventana.tama_letra = 20
    BotonTurtle = Boton(1,
                        ventana,
                        100,
                        10,
                        sys.path[0] + "/imagenes/main/tortucaro.png",
                        turtleart_ruta,
                        tur)

    BotonPython = Boton(3,
                        ventana,
                        100,
                        160,
                        sys.path[0] + "/imagenes/main/python.png",
                        "python " + sys.path[0] + "/lanzador.py python",
                        pyt)
    BotonIcaro = Boton(2,
                       ventana,
                       100,
                       310,
                       sys.path[0] + "/imagenes/main/icaro.png",
                       "python " + sys.path[0] + "/lanzador.py " + bootloader,
                       icr)
    BotonSalir = Boton(4,
                       ventana,
                       100,
                       460,
                       sys.path[0] + "/imagenes/main/salir.png",
                       "salir",
                       sal)
    ventana.botones.append(BotonTurtle)
    ventana.botones.append(BotonPython)
    ventana.botones.append(BotonIcaro)
    ventana.botones.append(BotonSalir)
    gtk.main()
    return 0
Пример #2
0
def main():
    so = sys.platform
    print(so)
    mens = UTILIDADES()
    ventana = VentanaGtk()
    if so == 'linux':
        comprobacion_errores(ventana, mens)
        conf = ".icaro/"  #config.ini"
        comprobacion_dir(conf, mens)
    else:
        conf = "conficaro/"  #config.ini"
        comprobacion_dir(conf, mens)

    cfg = mens.carga_conf(os.path.expanduser('~') + "/" + conf + "config.ini")
    #turtleart_ruta = cfg.get("general", "turtlear")
    bootloader = cfg.get("icaro_config", "bootloader")

    pyt = ["Lanza Icaro-bloques ", "para generar codigo PYTHON."]
    tur = [
        "Lanza Art con el modulo Tortucaro.",
        "para manejo conectado a la netbook"
    ]
    icr = [
        "Lanza Icaro-bloques ", "para manejo de robots autonomos",
        "usando el bootloader V4"
    ]
    sal = ["Sale del sistema"]
    ventana.tama_letra = 20
    BotonPython = Boton(
        1, ventana, 50, 10, sys.path[0] + "/imagenes/main/python2.png",
        sys.path[0] + "/imagenes/main/python2p.png",
        "python3 " + sys.path[0] + "/lanzador.py python " + conf, pyt)
    BotonIcaro = Boton(
        2, ventana, 50, 200, sys.path[0] + "/imagenes/main/icaro2.png",
        sys.path[0] + "/imagenes/main/icaro2p.png",
        "python3 " + sys.path[0] + "/lanzador.py " + bootloader + " " + conf,
        icr)
    BotonFirmware = Boton(
        2, ventana, 310, 10, sys.path[0] + "/imagenes/main/firmware2.png",
        sys.path[0] + "/imagenes/main/firmware2p.png",
        "python3 " + sys.path[0] + "/lanzador.py " + bootloader + " " + conf,
        icr)
    BotonSalir = Boton(3, ventana, 50, 400,
                       sys.path[0] + "/imagenes/main/salir2.png",
                       sys.path[0] + "/imagenes/main/salir2p.png", "salir",
                       sal)

    ventana.botones.append(BotonPython)
    ventana.botones.append(BotonIcaro)

    #ventana.botones.append(BotonFirmware) # falta implementar el programa
    ventana.botones.append(BotonSalir)
    Gtk.main()
    return 0
Пример #3
0
    def __init__(self, conf_dir):
        Util = UTILIDADES()
        self.window = Gtk.Window()  #Gtk.WINDOW_TOPLEVEL)
        #self.window.set_position(Gtk.WIN_POS_CENTER_ALWAYS)
        self.window.connect('delete_event', self.close)
        self.dir_c = os.path.expanduser(
            '~') + "/" + conf_dir + "conf/config.ini"
        print("soy la conf___", self.dir_c)
        self.conf_cfg = Util.carga_conf(self.dir_c)
        secciones = self.conf_cfg.sections()
        vbox_central = Gtk.VBox(False, 2)
        hbox_central = Gtk.HBox(False, 0)
        notebook = Gtk.Notebook()
        self.AplicarBoton = Gtk.Button()
        self.AplicarBoton.set_label("Aplicar")
        self.conf_dir = conf_dir
        self.SalirBoton = Gtk.Button()
        self.SalirBoton.set_label("Salir")
        self.SalirBoton.connect('clicked', self.close)
        #self.AplicarBoton = gtk.Button()
        # self.AplicarBoton.set_label("Aplicar")
        self.AplicarBoton.connect('clicked', self.aplicar)
        self.texts = []

        for secc in secciones:
            label = Gtk.Label(secc)
            frame = Gtk.Frame(label=secc)
            vbox = Gtk.VBox(False, 0)
            frame.add(vbox)
            notebook.append_page(frame, label)
            for op in self.conf_cfg.options(secc):
                label_secc = Gtk.Label(op)
                text = Gtk.Entry()
                text.set_text(self.conf_cfg.get(secc, op))
                self.texts.append([secc, op, text])
                hbox = Gtk.HBox(False, 0)
                hbox.pack_start(label_secc, False, True, 5)
                hbox.pack_start(text, False, True, 5)
                vbox.pack_start(hbox, False, True, 5)
        hbox_central.pack_start(self.AplicarBoton, False, False, 1)
        hbox_central.pack_start(self.SalirBoton, False, False, 1)

        vbox_central.pack_start(hbox_central, False, True, 1)
        vbox_central.pack_start(notebook, False, True, 0)
        self.window.add(vbox_central)
        self.window.show_all()
Пример #4
0
def main():

    mens = UTILIDADES()
    ventana = VentanaGtk()
    comprobacion_errores(ventana, mens)
    conf = os.path.expanduser('~') + "/.icaro/config.ini"

    cfg = mens.carga_conf(conf)
    turtleart_ruta = cfg.get("general", "turtlear")
    bootloader = cfg.get("icaro_config", "bootloader")

    pyt = ["Lanza Icaro-bloques ", "para generar codigo PYTHON."]
    tur = [
        "Lanza Art con el modulo Tortucaro.",
        "para manejo conectado a la netbook"
    ]
    icr = [
        "Lanza Icaro-bloques ", "para manejo de robots autonomos",
        "usando el bootloader V4"
    ]
    sal = ["Sale del sistema"]
    # idle = ("idle -c 'import apicaro;" +
    # " icaro=apicaro.puerto(); icaro.iniciar()'"
    # )

    ventana.tama_letra = 20
    BotonTurtle = Boton(1, ventana, 100, 10,
                        sys.path[0] + "/imagenes/main/tortucaro.png",
                        turtleart_ruta, tur)

    BotonPython = Boton(3, ventana, 100, 160,
                        sys.path[0] + "/imagenes/main/python.png",
                        "python " + sys.path[0] + "/lanzador.py python", pyt)
    BotonIcaro = Boton(2, ventana, 100, 310,
                       sys.path[0] + "/imagenes/main/icaro.png",
                       "python " + sys.path[0] + "/lanzador.py " + bootloader,
                       icr)
    BotonSalir = Boton(4, ventana, 100, 460,
                       sys.path[0] + "/imagenes/main/salir.png", "salir", sal)
    ventana.botones.append(BotonTurtle)
    ventana.botones.append(BotonPython)
    ventana.botones.append(BotonIcaro)
    ventana.botones.append(BotonSalir)
    gtk.main()
    return 0
Пример #5
0
def main(args):
    # cuando incio icaro, me da la posibilidad de cambiar
    # el modulo de hardware, para tener compatibildiad
    # con otros sistemas
    icr_dir="icaro/"+args[1]+"/"
    hardware_dir = "hardware/"+icr_dir
    ruta_hardware = sys.path[0] + "/" + hardware_dir + "modulos"
    conf = os.path.expanduser('~') + "/."+icr_dir+"conf/config.ini"
    # UTILIDADES es la clase que contiene las funciones para generar mensajes,
    # carga de la conf .ini y
    # recargar los archivos del firmware
    mens = UTILIDADES()
    if os.path.exists(ruta_hardware):
        mens.preparar_icaro(icr_dir,ruta_hardware, hardware_dir, conf)
    else:
        cad = "No se encontro el modulo de carga para el hardware en la ruta " + \
            ruta_hardware
        mens.mensajes(0, cad)
        exit()
Пример #6
0
    def __init__(self, conf_dir):
        Util = UTILIDADES()
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
        self.window.connect('delete_event', self.close)
        self.conf_cfg = Util.carga_conf(conf_dir)
        secciones = self.conf_cfg.sections()
        vbox_central = gtk.VBox(False, 2)
        hbox_central = gtk.HBox(False, 0)
        notebook = gtk.Notebook()
        self.AplicarBoton = gtk.Button()
        self.AplicarBoton.set_label("Aplicar")
        self.conf_dir = conf_dir
        self.SalirBoton = gtk.Button()
        self.SalirBoton.set_label("Salir")
        self.SalirBoton.connect('clicked', self.close)
        #self.AplicarBoton = gtk.Button()
        # self.AplicarBoton.set_label("Aplicar")
        self.AplicarBoton.connect('clicked', self.aplicar)
        self.texts = []

        for secc in secciones:
            label = gtk.Label(secc)
            frame = gtk.Frame(secc)
            vbox = gtk.VBox(False, 0)
            frame.add(vbox)
            notebook.append_page(frame, label)
            for op in self.conf_cfg.options(secc):
                label_secc = gtk.Label(op)
                text = gtk.Entry()
                text.set_text(self.conf_cfg.get(secc, op))
                self.texts.append([secc, op, text])
                hbox = gtk.HBox(False, 0)
                hbox.pack_start(label_secc, False, True, 5)
                hbox.pack_start(text, False, True, 5)
                vbox.pack_start(hbox, False, True, 5)
        hbox_central.pack_start(self.AplicarBoton, False, False, 1)
        hbox_central.pack_start(self.SalirBoton, False, False, 1)

        vbox_central.pack_start(hbox_central, False, True, 1)
        vbox_central.pack_start(notebook, False, True, 0)
        self.window.add(vbox_central)
        self.window.show_all()
Пример #7
0
 def __init__(self, prt):
     """ Class initialiser """
     src = sys.path[0]
     cad = prt
     mens = UTILIDADES()
     window = gtk.Window()
     window.set_title("pyshell")
     window.set_default_size(800, 480)
     scroll = gtk.ScrolledWindow()
     shell = vte.Terminal()
     shell.connect("child-exited", gtk.main_quit)
     shell.fork_command()
     shell.feed_child(cad)
     scroll.add(shell)
     window.add(scroll)
     window.connect('delete-event', lambda x: window.hide())
     window.show_all()
Пример #8
0
def main(args):
    # cuando incio icaro, me da la posibilidad de cambiar
    # el modulo de hardware, para tener compatibildiad
    # con otros sistemas
    print(args[2])
    icr_dir = "icaro/" + args[1] + "/"

    hardware_dir = "hardware/" + icr_dir
    ruta_hardware = sys.path[0] + "/" + hardware_dir + "modulos"
    conf = os.path.expanduser(
        '~') + "/" + args[2] + "/" + args[1] + "/conf/config.ini"
    # UTILIDADES es la clase que contiene las funciones para generar mensajes,
    # carga de la conf .ini y
    # recargar los archivos del firmware
    mens = UTILIDADES()
    if os.path.exists(ruta_hardware):
        mens.preparar_icaro(icr_dir, ruta_hardware, hardware_dir, conf,
                            args[2])
    else:
        cad = "No se encontro el modulo de carga para el hardware en la ruta " + \
            ruta_hardware
        mens.mensajes(0, cad)
        exit()
Пример #9
0
    def __init__(self):
        """
           estructura de los widget

            win
             |
             +--->vbox
                   |
                   +--->frame
                   |      |
                   |      +---> hbox
                   |              |
                   |              +---> label
                   |              |
                   |              +---> text
                   |              |
                   |              +---> label_style
                   |              |
                   |              +---> list_style
                   |              |
                   |              +---> label_color
                   |              |
                   |              +---> list_color
                   |              |
                   |              +---> option
                   |
                   +---> hbox3
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> texthost
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> labelport
                   |      |
                   |      +---> textport
                   |
                   +---> hbox2
                          |
                          +---> boton_empezar
                          |
                          +---> boton_salir
             """

        # variables de la clase
        # diccionarios
        self.dic_style = {
            'solid line style': '-',
            'dashed line style': '--',
            'dash-dot line style': '-.',
            'dotted line style': ':',
            'point marker': '.',
            'pixel marker': ',',
            'circle marker': 'o',
            'triangle_down marker': 'v',
            'triangle_up marker': '^',
            'triangle_left marker': '<',
            'triangle_right marker': '>',
            'tri_down marker': '1',
            'tri_up marker': '2',
            'tri_left marker': '3',
            'tri_right marker': '4',
            'square marker': 's',
            'pentagon marker': 'p',
            'star marker': '*',
            'hexagon1 marker': 'h',
            'hexagon2 marker': 'H',
            'plus marker': '+',
            'x marker': 'x',
            'diamond marker': 'D',
            'thin_diamond marker': 'd',
            'vline marker': '|',
            'hline marker': '_',
            '': ''
        }

        self.dic_color = {
            'blue': 'b',
            'green': 'g',
            'red': 'r',
            'cyan': 'c',
            'magenta': 'm',
            'yellow': 'y',
            'black': 'k',
            'white': 'w',
            '': ''
        }
        self.sensores = []
        self.mens = UTILIDADES()
        self.crear_socket()
        for a in range(8):
            main_sensor = ['', '', '', 0]
            self.sensores.append(main_sensor)
        # ventana incial
        self.win = gtk.Window()
        vbox = gtk.VBox()
        self.win.add(vbox)
        # bucle para crear los 8 frames con las opciones para cada
        # sensor de la placa
        for a in range(8):
            cad = "sensor " + str(a)
            frame = gtk.Frame(cad)
            hbox = gtk.HBox(False, 15)
            label = gtk.Label("etiqueta")
            text = gtk.Entry()
            text.connect('focus-out-event', self.focus_out_cb, a)
            label_style = gtk.Label("estilo")
            list_style = gtk.combo_box_new_text()
            self.crear_lista_style(list_style)
            list_style.connect('changed', self.changed_style, a)
            label_color = gtk.Label("color")

            list_color = gtk.combo_box_new_text()
            self.crear_lista_color(list_color)
            list_color.connect('changed', self.changed_color, a)

            option = gtk.CheckButton(label="activo")
            option.connect("clicked", self.on_clicked, a)
            hbox.add(label)
            hbox.add(text)
            hbox.add(label_style)
            hbox.add(list_style)
            hbox.add(label_color)
            hbox.add(list_color)
            hbox.add(option)
            frame.add(hbox)
            vbox.add(frame)

        hbox3 = gtk.HBox(False, 10)
        labelhost = gtk.Label("Host")
        texthost = gtk.Entry()
        texthost.set_text("localhost")

        labelport = gtk.Label("puerto")
        textport = gtk.Entry()
        textport.set_text("9999")

        hbox3.add(labelhost)
        hbox3.add(texthost)
        hbox3.add(labelport)
        hbox3.add(textport)
        vbox.add(hbox3)

        hbox2 = gtk.HBox(False, 10)
        vbox.add(hbox2)
        # boton empezar
        boton_empezar = gtk.Button("empezar")
        hbox2.add(boton_empezar)
        # boton salir
        boton_salir = gtk.Button("salir")
        hbox2.add(boton_salir)
        # conecto cada boton a su funcion cuando se hace
        # click en el boton
        boton_empezar.connect(
            "clicked", self.boton_empezar_click, texthost, textport)
        boton_salir.connect("clicked", lambda x: self.cerrar())
        self.win.connect("destroy", lambda x: self.cerrar())
        # muestro todo
        self.win.show_all()
Пример #10
0
class VENTANA:
    """ Class doc """

    def __init__(self):
        """
           estructura de los widget

            win
             |
             +--->vbox
                   |
                   +--->frame
                   |      |
                   |      +---> hbox
                   |              |
                   |              +---> label
                   |              |
                   |              +---> text
                   |              |
                   |              +---> label_style
                   |              |
                   |              +---> list_style
                   |              |
                   |              +---> label_color
                   |              |
                   |              +---> list_color
                   |              |
                   |              +---> option
                   |
                   +---> hbox3
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> texthost
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> labelport
                   |      |
                   |      +---> textport
                   |
                   +---> hbox2
                          |
                          +---> boton_empezar
                          |
                          +---> boton_salir
             """

        # variables de la clase
        # diccionarios
        self.dic_style = {
            'solid line style': '-',
            'dashed line style': '--',
            'dash-dot line style': '-.',
            'dotted line style': ':',
            'point marker': '.',
            'pixel marker': ',',
            'circle marker': 'o',
            'triangle_down marker': 'v',
            'triangle_up marker': '^',
            'triangle_left marker': '<',
            'triangle_right marker': '>',
            'tri_down marker': '1',
            'tri_up marker': '2',
            'tri_left marker': '3',
            'tri_right marker': '4',
            'square marker': 's',
            'pentagon marker': 'p',
            'star marker': '*',
            'hexagon1 marker': 'h',
            'hexagon2 marker': 'H',
            'plus marker': '+',
            'x marker': 'x',
            'diamond marker': 'D',
            'thin_diamond marker': 'd',
            'vline marker': '|',
            'hline marker': '_',
            '': ''
        }

        self.dic_color = {
            'blue': 'b',
            'green': 'g',
            'red': 'r',
            'cyan': 'c',
            'magenta': 'm',
            'yellow': 'y',
            'black': 'k',
            'white': 'w',
            '': ''
        }
        self.sensores = []
        self.mens = UTILIDADES()
        self.crear_socket()
        for a in range(8):
            main_sensor = ['', '', '', 0]
            self.sensores.append(main_sensor)
        # ventana incial
        self.win = gtk.Window()
        vbox = gtk.VBox()
        self.win.add(vbox)
        # bucle para crear los 8 frames con las opciones para cada
        # sensor de la placa
        for a in range(8):
            cad = "sensor " + str(a)
            frame = gtk.Frame(cad)
            hbox = gtk.HBox(False, 15)
            label = gtk.Label("etiqueta")
            text = gtk.Entry()
            text.connect('focus-out-event', self.focus_out_cb, a)
            label_style = gtk.Label("estilo")
            list_style = gtk.combo_box_new_text()
            self.crear_lista_style(list_style)
            list_style.connect('changed', self.changed_style, a)
            label_color = gtk.Label("color")

            list_color = gtk.combo_box_new_text()
            self.crear_lista_color(list_color)
            list_color.connect('changed', self.changed_color, a)

            option = gtk.CheckButton(label="activo")
            option.connect("clicked", self.on_clicked, a)
            hbox.add(label)
            hbox.add(text)
            hbox.add(label_style)
            hbox.add(list_style)
            hbox.add(label_color)
            hbox.add(list_color)
            hbox.add(option)
            frame.add(hbox)
            vbox.add(frame)

        hbox3 = gtk.HBox(False, 10)
        labelhost = gtk.Label("Host")
        texthost = gtk.Entry()
        texthost.set_text("localhost")

        labelport = gtk.Label("puerto")
        textport = gtk.Entry()
        textport.set_text("9999")

        hbox3.add(labelhost)
        hbox3.add(texthost)
        hbox3.add(labelport)
        hbox3.add(textport)
        vbox.add(hbox3)

        hbox2 = gtk.HBox(False, 10)
        vbox.add(hbox2)
        # boton empezar
        boton_empezar = gtk.Button("empezar")
        hbox2.add(boton_empezar)
        # boton salir
        boton_salir = gtk.Button("salir")
        hbox2.add(boton_salir)
        # conecto cada boton a su funcion cuando se hace
        # click en el boton
        boton_empezar.connect(
            "clicked", self.boton_empezar_click, texthost, textport)
        boton_salir.connect("clicked", lambda x: self.cerrar())
        self.win.connect("destroy", lambda x: self.cerrar())
        # muestro todo
        self.win.show_all()

    def crear_socket(self):
        self.sock = socket.socket()
        return 0

    def focus_out_cb(self, widget, b, a):
        self.sensores[a][2] = widget.get_text()

    def changed_style(self, combo, a):
        """ Function doc """
        val = combo.get_active()
        model = combo.get_model()
        self.sensores[a][0] = model[val][0]

    def changed_color(self, combo, a):
        """ Function doc """
        val = combo.get_active()
        model = combo.get_model()
        self.sensores[a][1] = model[val][0]

    def cerrar(self):
        # self.sock.send("cerrar")
        self.win.hide()

    def boton_empezar_click(self, widget, h, p):
        """ Function doc """
        self.flag_live = True

        host = h.get_text()
        port = p.get_text()
        try:
            self.sock.connect((host, int(port)))
        except:
            self.mens.mensajes(2, "error de conexion")
            return 1
        dat = []
        sens = []
        figu = plt.figure()
        fig = figu.add_subplot(111)
        for a in range(8):
            a1 = deque([0] * 100)
            dat.append(a1)
            if self.sensores[a][3] == 1:
                cadena_style_color = self.dic_style[self.sensores[
                    a][0]] + self.dic_color[self.sensores[a][1]]
                line = fig.plot(dat[a], cadena_style_color,
                                label=self.sensores[a][2])
                val = line, a
                sens.append(val)
        plt.ion()
        plt.xlabel(u'tiempo')
        plt.legend()  # Creamos la caja con la leyenda
        plt.xlim([0, 100])
        plt.ylim([0, 1100])
        figu.show()

        def onclick(event):
            self.flag_live = False
            self.sock.send("cerrar")
            self.crear_socket()
            # plt.close()
            # exit()

        cid = figu.canvas.mpl_connect('close_event', onclick)

        while(self.flag_live == True):
            for dato in sens:
                cadena_an = "analogico," + str(dato[1])
                print cadena_an
                self.sock.send(cadena_an)
                peticion = self.sock.recv(1024)
                print "sensor: ", str(dato[1]), " valor: ", peticion

                dat[dato[1]].appendleft(peticion)
                datatoplot = dat[dato[1]].pop()
                # print "dato generado:",dato[1],"--val:",dat[dato[1]]
                dato[0][0].set_ydata(dat[dato[1]])
            # print self.flag_live
            plt.pause(0.1)
        print "salgo"

    def on_clicked(self, widget, a):
        """ Function doc """
        if widget.get_active():
            self.sensores[a][3] = 1
        else:
            self.sensores[a][3] = 0

    def crear_lista_style(self, widget):
        """ Function doc """
        cad = ['solid line style',
               'dashed line style',
               'dash-dot line style',
               'dotted line style',
               'point marker',
               'pixel marker',
               'circle marker',
               'triangle_down marker',
               'triangle_up marker',
               'triangle_left marker',
               'triangle_right marker',
               'tri_down marker',
               'tri_up marker',
               'tri_left marker',
               'tri_right marker',
               'square marker',
               'pentagon marker',
               'star marker',
               'hexagon1 marker',
               'hexagon2 marker',
               'plus marker',
               'x marker',
               'diamond marker',
               'thin_diamond marker',
               'vline marker',
               'hline marker']

        for valor in cad:
            widget.append_text(valor)

    def crear_lista_color(self, widget):
        """ Function doc """
        cad = ['blue',
               'green',
               'red',
               'cyan',
               'magenta',
               'yellow',
               'black',
               'white']
        for valor in cad:
            widget.append_text(valor)
Пример #11
0
    def __init__(self):
        """
           estructura de los widget

            win
             |
             +--->vbox
                   |
                   +--->frame
                   |      |
                   |      +---> hbox
                   |              |
                   |              +---> label
                   |              |
                   |              +---> text
                   |              |
                   |              +---> label_style
                   |              |
                   |              +---> list_style
                   |              |
                   |              +---> label_color
                   |              |
                   |              +---> list_color
                   |              |
                   |              +---> option
                   |
                   +---> hbox3
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> texthost
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> labelport
                   |      |
                   |      +---> textport
                   |
                   +---> hbox2
                          |
                          +---> boton_empezar
                          |
                          +---> boton_salir
             """

        # variables de la clase
        # diccionarios
        self.dic_style = {
            'solid line style': '-',
            'dashed line style': '--',
            'dash-dot line style': '-.',
            'dotted line style': ':',
            'point marker': '.',
            'pixel marker': ',',
            'circle marker': 'o',
            'triangle_down marker': 'v',
            'triangle_up marker': '^',
            'triangle_left marker': '<',
            'triangle_right marker': '>',
            'tri_down marker': '1',
            'tri_up marker': '2',
            'tri_left marker': '3',
            'tri_right marker': '4',
            'square marker': 's',
            'pentagon marker': 'p',
            'star marker': '*',
            'hexagon1 marker': 'h',
            'hexagon2 marker': 'H',
            'plus marker': '+',
            'x marker': 'x',
            'diamond marker': 'D',
            'thin_diamond marker': 'd',
            'vline marker': '|',
            'hline marker': '_',
            '': ''
        }

        self.dic_color = {
            'blue': 'b',
            'green': 'g',
            'red': 'r',
            'cyan': 'c',
            'magenta': 'm',
            'yellow': 'y',
            'black': 'k',
            'white': 'w',
            '': ''
        }
        self.sensores = []
        self.mens = UTILIDADES()
        self.crear_socket()
        for a in range(8):
            main_sensor = ['', '', '', 0]
            self.sensores.append(main_sensor)
        # ventana incial
        self.win = gtk.Window()
        vbox = gtk.VBox()
        self.win.add(vbox)
        # bucle para crear los 8 frames con las opciones para cada
        # sensor de la placa
        for a in range(8):
            cad = "sensor " + str(a)
            frame = gtk.Frame(cad)
            hbox = gtk.HBox(False, 15)
            label = gtk.Label("etiqueta")
            text = gtk.Entry()
            text.connect('focus-out-event', self.focus_out_cb, a)
            label_style = gtk.Label("estilo")
            list_style = gtk.combo_box_new_text()
            self.crear_lista_style(list_style)
            list_style.connect('changed', self.changed_style, a)
            label_color = gtk.Label("color")

            list_color = gtk.combo_box_new_text()
            self.crear_lista_color(list_color)
            list_color.connect('changed', self.changed_color, a)

            option = gtk.CheckButton(label="activo")
            option.connect("clicked", self.on_clicked, a)
            hbox.add(label)
            hbox.add(text)
            hbox.add(label_style)
            hbox.add(list_style)
            hbox.add(label_color)
            hbox.add(list_color)
            hbox.add(option)
            frame.add(hbox)
            vbox.add(frame)

        hbox3 = gtk.HBox(False, 10)
        labelhost = gtk.Label("Host")
        texthost = gtk.Entry()
        texthost.set_text("localhost")

        labelport = gtk.Label("puerto")
        textport = gtk.Entry()
        textport.set_text("9999")

        hbox3.add(labelhost)
        hbox3.add(texthost)
        hbox3.add(labelport)
        hbox3.add(textport)
        vbox.add(hbox3)

        hbox2 = gtk.HBox(False, 10)
        vbox.add(hbox2)
        # boton empezar
        boton_empezar = gtk.Button("empezar")
        hbox2.add(boton_empezar)
        # boton salir
        boton_salir = gtk.Button("salir")
        hbox2.add(boton_salir)
        # conecto cada boton a su funcion cuando se hace
        # click en el boton
        boton_empezar.connect("clicked", self.boton_empezar_click, texthost,
                              textport)
        boton_salir.connect("clicked", lambda x: self.cerrar())
        self.win.connect("destroy", lambda x: self.cerrar())
        # muestro todo
        self.win.show_all()
Пример #12
0
class VENTANA:
    """ Class doc """
    def __init__(self):
        """
           estructura de los widget

            win
             |
             +--->vbox
                   |
                   +--->frame
                   |      |
                   |      +---> hbox
                   |              |
                   |              +---> label
                   |              |
                   |              +---> text
                   |              |
                   |              +---> label_style
                   |              |
                   |              +---> list_style
                   |              |
                   |              +---> label_color
                   |              |
                   |              +---> list_color
                   |              |
                   |              +---> option
                   |
                   +---> hbox3
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> texthost
                   |      |
                   |      +---> labelhost
                   |      |
                   |      +---> labelport
                   |      |
                   |      +---> textport
                   |
                   +---> hbox2
                          |
                          +---> boton_empezar
                          |
                          +---> boton_salir
             """

        # variables de la clase
        # diccionarios
        self.dic_style = {
            'solid line style': '-',
            'dashed line style': '--',
            'dash-dot line style': '-.',
            'dotted line style': ':',
            'point marker': '.',
            'pixel marker': ',',
            'circle marker': 'o',
            'triangle_down marker': 'v',
            'triangle_up marker': '^',
            'triangle_left marker': '<',
            'triangle_right marker': '>',
            'tri_down marker': '1',
            'tri_up marker': '2',
            'tri_left marker': '3',
            'tri_right marker': '4',
            'square marker': 's',
            'pentagon marker': 'p',
            'star marker': '*',
            'hexagon1 marker': 'h',
            'hexagon2 marker': 'H',
            'plus marker': '+',
            'x marker': 'x',
            'diamond marker': 'D',
            'thin_diamond marker': 'd',
            'vline marker': '|',
            'hline marker': '_',
            '': ''
        }

        self.dic_color = {
            'blue': 'b',
            'green': 'g',
            'red': 'r',
            'cyan': 'c',
            'magenta': 'm',
            'yellow': 'y',
            'black': 'k',
            'white': 'w',
            '': ''
        }
        self.sensores = []
        self.mens = UTILIDADES()
        self.crear_socket()
        for a in range(8):
            main_sensor = ['', '', '', 0]
            self.sensores.append(main_sensor)
        # ventana incial
        self.win = gtk.Window()
        vbox = gtk.VBox()
        self.win.add(vbox)
        # bucle para crear los 8 frames con las opciones para cada
        # sensor de la placa
        for a in range(8):
            cad = "sensor " + str(a)
            frame = gtk.Frame(cad)
            hbox = gtk.HBox(False, 15)
            label = gtk.Label("etiqueta")
            text = gtk.Entry()
            text.connect('focus-out-event', self.focus_out_cb, a)
            label_style = gtk.Label("estilo")
            list_style = gtk.combo_box_new_text()
            self.crear_lista_style(list_style)
            list_style.connect('changed', self.changed_style, a)
            label_color = gtk.Label("color")

            list_color = gtk.combo_box_new_text()
            self.crear_lista_color(list_color)
            list_color.connect('changed', self.changed_color, a)

            option = gtk.CheckButton(label="activo")
            option.connect("clicked", self.on_clicked, a)
            hbox.add(label)
            hbox.add(text)
            hbox.add(label_style)
            hbox.add(list_style)
            hbox.add(label_color)
            hbox.add(list_color)
            hbox.add(option)
            frame.add(hbox)
            vbox.add(frame)

        hbox3 = gtk.HBox(False, 10)
        labelhost = gtk.Label("Host")
        texthost = gtk.Entry()
        texthost.set_text("localhost")

        labelport = gtk.Label("puerto")
        textport = gtk.Entry()
        textport.set_text("9999")

        hbox3.add(labelhost)
        hbox3.add(texthost)
        hbox3.add(labelport)
        hbox3.add(textport)
        vbox.add(hbox3)

        hbox2 = gtk.HBox(False, 10)
        vbox.add(hbox2)
        # boton empezar
        boton_empezar = gtk.Button("empezar")
        hbox2.add(boton_empezar)
        # boton salir
        boton_salir = gtk.Button("salir")
        hbox2.add(boton_salir)
        # conecto cada boton a su funcion cuando se hace
        # click en el boton
        boton_empezar.connect("clicked", self.boton_empezar_click, texthost,
                              textport)
        boton_salir.connect("clicked", lambda x: self.cerrar())
        self.win.connect("destroy", lambda x: self.cerrar())
        # muestro todo
        self.win.show_all()

    def crear_socket(self):
        self.sock = socket.socket()
        return 0

    def focus_out_cb(self, widget, b, a):
        self.sensores[a][2] = widget.get_text()

    def changed_style(self, combo, a):
        """ Function doc """
        val = combo.get_active()
        model = combo.get_model()
        self.sensores[a][0] = model[val][0]

    def changed_color(self, combo, a):
        """ Function doc """
        val = combo.get_active()
        model = combo.get_model()
        self.sensores[a][1] = model[val][0]

    def cerrar(self):
        # self.sock.send("cerrar")
        self.win.hide()

    def boton_empezar_click(self, widget, h, p):
        """ Function doc """
        self.flag_live = True

        host = h.get_text()
        port = p.get_text()
        try:
            self.sock.connect((host, int(port)))
        except:
            self.mens.mensajes(2, "error de conexion")
            return 1
        dat = []
        sens = []
        figu = plt.figure()
        fig = figu.add_subplot(111)
        for a in range(8):
            a1 = deque([0] * 100)
            dat.append(a1)
            if self.sensores[a][3] == 1:
                cadena_style_color = self.dic_style[
                    self.sensores[a][0]] + self.dic_color[self.sensores[a][1]]
                line = fig.plot(dat[a],
                                cadena_style_color,
                                label=self.sensores[a][2])
                val = line, a
                sens.append(val)
        plt.ion()
        plt.xlabel(u'tiempo')
        plt.legend()  # Creamos la caja con la leyenda
        plt.xlim([0, 100])
        plt.ylim([0, 1100])
        figu.show()

        def onclick(event):
            self.flag_live = False
            self.sock.send("cerrar")
            self.crear_socket()
            # plt.close()
            # exit()

        cid = figu.canvas.mpl_connect('close_event', onclick)

        while (self.flag_live == True):
            for dato in sens:
                cadena_an = "analogico," + str(dato[1])
                print cadena_an
                self.sock.send(cadena_an)
                peticion = self.sock.recv(1024)
                print "sensor: ", str(dato[1]), " valor: ", peticion

                dat[dato[1]].appendleft(peticion)
                datatoplot = dat[dato[1]].pop()
                # print "dato generado:",dato[1],"--val:",dat[dato[1]]
                dato[0][0].set_ydata(dat[dato[1]])
            # print self.flag_live
            plt.pause(0.1)
        print "salgo"

    def on_clicked(self, widget, a):
        """ Function doc """
        if widget.get_active():
            self.sensores[a][3] = 1
        else:
            self.sensores[a][3] = 0

    def crear_lista_style(self, widget):
        """ Function doc """
        cad = [
            'solid line style', 'dashed line style', 'dash-dot line style',
            'dotted line style', 'point marker', 'pixel marker',
            'circle marker', 'triangle_down marker', 'triangle_up marker',
            'triangle_left marker', 'triangle_right marker', 'tri_down marker',
            'tri_up marker', 'tri_left marker', 'tri_right marker',
            'square marker', 'pentagon marker', 'star marker',
            'hexagon1 marker', 'hexagon2 marker', 'plus marker', 'x marker',
            'diamond marker', 'thin_diamond marker', 'vline marker',
            'hline marker'
        ]

        for valor in cad:
            widget.append_text(valor)

    def crear_lista_color(self, widget):
        """ Function doc """
        cad = [
            'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black',
            'white'
        ]
        for valor in cad:
            widget.append_text(valor)