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
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
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()
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
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()
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()
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()
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()
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()
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)
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()
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)