#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys 
from Tkinter import *
from PIL import ImageTk
import main as m
import gpiozero as gp

led = gp.LED(23)

#funciones definidas para la graficacion
def borrar():
        import funciones as f
        
        dato = str(actual_pasillo.get())
        f.borrar(dato)
        boton_retroceso()
def nuevo():
	
	import funciones_aux as fa
	print('entrada')
	print(entrada_pasillo.get())
	print(type(entrada_pasillo.get()))
	resultado = fa.checkfile2(entrada_pasillo.get())
	if(resultado == True):
			
		aviso = Label(ventana, text = "Ya existe este pasillo", bg = 'red', relief = 'groove').place(x = 10, y = 100) 
	else:
		m.preparacion(entrada_pasillo.get(), entrada_altura.get())
		aviso2 = Label(ventana, text = "Pasillo creado con exito", bg = 'blue', relief = 'groove').place(x = 10, y = 100)

def agregar_list(pasillo):
        lst.delete(0, END)
        import funciones_aux as fa
        import funciones as f
        name = "Docs/inventario/"+pasillo+'.txt'
        matriz = fa.lectura_fichero(name, '\t')
        for i in range(len(matriz)):
                matriz[i][3] = matriz[i][3].strip('\n')

        texto = ''
        for j in range(len(matriz)):
                for i in range(len(matriz[j])):
                        texto = texto+str(matriz[j][i])
                        texto = texto+'        '
                lst.insert(END,texto)
                texto = ''
       	dato = f.consultar_modo()
       	if (dato == 'OFF'):
        	lst.see(END)
        else:
        	import funciones as f
        	pasillo = str(pasillo)
        	nombre = 'Docs/buffer/'+pasillo+'.txt'
        	buffer_vec = fa.lectura_fichero(nombre, '\t')
        	buffer_vec = buffer_vec[1]
        	buffer_vec[1] = int(buffer_vec[1])
        	buffer_vec[1] = str(buffer_vec[1])
        	nombrew = 'Docs/inventario/'+pasillo+'.txt'
        	datos = fa.lectura_fichero(nombrew, '\t')
        	for i in range(len(datos)):
				if(datos[i][1] == buffer_vec[0] and datos[i][2] == buffer_vec[1]):
					num = i+1
					
					lst.see(num)
					break

#funciones para los botones
def comenzar():
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())

def boton_avance():
	m.movimientos(actual_pasillo.get(), 'avance')
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())
def boton_retroceso():
	m.movimientos(actual_pasillo.get(), 'retroceso')
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())
def lectura_normal():
        led.on()
	m.m_lectura(actual_pasillo.get(), 1, long_codigo.get())
	led.off()
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())
def lectura_hueco():
	m.m_lectura(actual_pasillo.get(), 3, long_codigo.get())
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())
def lectura_multicapa():
        led.on()
	m.m_lectura(actual_pasillo.get(), 2, long_codigo.get())
	led.off()
	print_buffer(actual_pasillo.get())
	agregar_list(actual_pasillo.get())
def lectura_sobre_altura():
        res = m.m_lectura(actual_pasillo.get(), 4, long_codigo.get())
        if (res == False):
                error_sobrealtura = Label(ventana, text = 'No se encuentra en la posicion mas alta', relief = 'groove', bg = 'red').place(x = 800 , y = 180)
        else:
                error_sobrealtura = Label(ventana, text='Lectura sobrealtura guardado correcto.', relief = 'groove', bg = 'blue').place(x = 800, y = 180)
        print_buffer(actual_pasillo.get())
        agregar_list(actual_pasillo.get())

def print_buffer(pasillo):
	import funciones_aux as fa
	pasillo = str(pasillo)
	nombre = 'Docs/buffer/'+pasillo+'.txt'
	buffer_vec = fa.lectura_fichero(nombre, '\t')
	buffer_vec = buffer_vec[1]
	buffer_vec[1] = int(buffer_vec[1])
	buffer_vec[1] = str(buffer_vec[1])

	buffer_texto = buffer_vec[0]+'\t'+buffer_vec[1]
	
	#graficar
	titulo_buffer = Label(ventana, text = 'Posicion actual de lectura', underline = 100).place(x = 10, y = 100)
	buffer_pasillo_columna = Label(ventana, text = buffer_texto, relief = 'groove').place(x = 10, y = 120)
def multicapa_mode():
	name = 'Docs/modos.txt'
	import funciones as f
	dato = f.consultar_modo()
	if(dato == 'OFF'):
		fichero = open(name, 'w')
		fichero.write('ON')
		fichero.close()
	else:
		fichero = open(name, 'w')
		fichero.write('OFF')
		fichero.close()
	f.actualizar_posicion(str(actual_pasillo.get()))
	print_buffer(str(actual_pasillo.get()))
	print_modo()

#datos de la ventana
ventana = Tk()
ventana.geometry("1280x800")
ventana.title("Plataforma inventariado Airvant")


#imagenes
imagen = PhotoImage(file = "images/airvant.gif")
lblimagen = Label(ventana, image = imagen).place(x = 520 , y = 20)
"""
POR AHORA LO DEJO ASI COMENTADO HASTA QUE QUIERA METER COSAS NUEVAS
#menu
barramenu = Menu(ventana)
mnuarchivo = Menu(barramenu)
mnuarchivo.add_command(label="Nuevo pasillo", command=abrir)
barramenu.add_cascade(label="Archivo", menu=mnuarchivo)
ventana.config(menu=barramenu)
"""
#variables de destino
entrada_pasillo = StringVar()
entrada_altura = StringVar()
actual_pasillo = StringVar()
long_codigo = StringVar()


#FORMULARIO NUEVO PASILLO
titulo_nuevopasillo = Label(ventana, text = "Formulario para nuevo pasillo:",  relief = 'groove').place(x = 10, y = 10)
form_pasillo = Label(ventana, text = "Pasillo").place(x = 10, y = 50)
forma_altura = Label(ventana, text = "Altura").place(x = 120, y = 50)
pasillo = Entry(ventana, textvariable=entrada_pasillo, width = 8).place(x=10, y = 70)
altura = Entry(ventana, textvariable=entrada_altura, width = 8).place(x = 120, y = 70)
boton_ = Button(ventana, text = "Guardar", command = nuevo, height=2, width=10).place(x = 250, y = 50)

#boton modo multicapa#
boton_multicapa_modo = Button(ventana, text = "Modo multicapa", command = multicapa_mode).place(x=250, y=10)
#estado multicapa#
def print_modo():
	import funciones as f
	modo = f.consultar_modo()
	texto = 'Modo multicapa: '+modo
	texto_modo = Label(ventana, text = texto).place(x = 250, y = 40)
print_modo()
	

#Boton de borrar#
image_Borrar = ImageTk.PhotoImage(file="images/borrar.gif")
boton_Borrar = Button(ventana, image=image_Borrar, command=borrar).place(x=250, y = 90)
#FORMULARIO PASILLO DE TRABAJO
titulo_comenzarpasillo = Label(ventana, text = 'Formulario pasillo trabajo', relief = 'groove').place(x = 800, y = 10)
form_pasillo_trabajo = Label(ventana, text = "Marcar pasillo actual y pulsar comenzar.").place(x = 800, y = 50)
p_actual = Entry(ventana, textvariable = actual_pasillo, width = 8).place(x = 800, y = 80)
boton = Button(ventana, text = "Comenzar", command=comenzar, height=2, width=10).place(x = 925, y = 70)
form_longitud = Label(ventana, text="Longitud de los codigos").place(x=800, y = 110)
l_c = Entry(ventana, textvariable=long_codigo, width = 8).place(x=800, y = 130)

#lista para ver el inventario en curso 
titulo_lista = Label(ventana, text = "Inventario en curso", relief = 'groove').place(x = 10, y = 180)
lst = Listbox(ventana, width=55, height = 30)
lst.insert(0, 'LISTADO DEL INVENTARIO EN CURSO')
lst.place(x = 10, y = 200)

#botonera
titulo_botonera=Label(ventana, text = "Botonera de control", relief = 'groove').place(x = 600, y = 180)
#botones avance/retroceso

image_r = ImageTk.PhotoImage(file="images/retroceso.gif")
boton_back = Button(ventana, image=image_r, command=boton_retroceso).place(x=600, y = 220)
image_a = ImageTk.PhotoImage(file="images/avance.gif")
boton_avac = Button(ventana, image=image_a, command=boton_avance).place(x=780, y = 220)

#botones de lectura
image_LN = ImageTk.PhotoImage(file="images/lectura_normal.gif")
boton_LN = Button(ventana, image=image_LN, command=lectura_normal).place(x=600, y = 380)

image_H = ImageTk.PhotoImage(file="images/hueco.gif")
boton_H = Button(ventana, image=image_H, command=lectura_hueco).place(x=900, y = 380)

image_M = ImageTk.PhotoImage(file="images/multicapa.gif")
boton_M = Button(ventana, image=image_M, command=lectura_multicapa).place(x=600, y = 530)

image_SB = ImageTk.PhotoImage(file="images/sobrealtura.gif")
boton_SB = Button(ventana, image=image_SB, command=lectura_sobre_altura).place(x=900, y = 530)

#mainloop

ventana.mainloop()


