#!/usr/bin/python
# -*- coding: utf-8 -*-


import datetime
import io
import os
import serial
import time
from Tkinter import *

# VARIABLES DEL MAPA
mapa = list()
direccion_mapa = str()
pantalla = str("________")


def mapa_simple():
    global pantalla
    dato = "simple\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def mapa_hueco():
    global pantalla
    dato = "hueco\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def mapa_bulto():
    global pantalla
    dato = "bulto\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def mapa_incidencia():
    global pantalla
    dato = "incidencia\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def mapa_multicapa_simple():
    global pantalla
    dato = "multicapa-simple\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def mapa_multicapa_incidencia():
    global pantalla
    dato = "multicapa-incidencia\n"
    mapa.append(dato)
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]
    archivo_mapa = open(direccion_mapa, 'a')
    archivo_mapa.write(dato)
    archivo_mapa.close()


def borrar_ultima():
    global pantalla
    mapa.pop()
    archivo_mapa = open(direccion_mapa, 'w')
    archivo_mapa.close()
    archivo_mapa = open(direccion_mapa, 'a')
    for dato in mapa:
        archivo_mapa.write(dato)
    archivo_mapa.close()
    if(len(mapa) == 1):
        pantalla = mapa[0]
    if(len(mapa) == 2):
        pantalla = mapa[0] + " " + mapa[1]
    else:
        pantalla = mapa[-3] + " " + mapa[-2] + " " + mapa[-1]


#def fin_mapeo():
 #   ventana_mapeo.destroy()


def mapear():
    # PRIMERO CREAMOS UN ARCHIVO DONDE IREMOS GUARDANDO EL MAPA
    empresa = dato_empresa.get()
    pasillo = int(dato_pasillo.get())
    pasillo = str("{:03d}".format(pasillo))
    alturamax = int(dato_alturamax.get())
    piking = str(dato_piking.get())

    global direccion_mapa
    fecha = datetime.datetime.now()

    nombre_mapa = "mapa " + str(fecha.year) + str(fecha.month) + \
        str(fecha.day) + " " + empresa + " " + pasillo + ".txt"
    direccion_mapa = "mapas/" + str(nombre_mapa)

    existe_mapa = False
    if(os.path.exists(direccion_mapa) == False):
        archivo_mapa = open(direccion_mapa, "w")
        archivo_mapa.close()
    else:
        archivo_mapa = open(direccion_mapa, "r")
        existe_mapa = True
        # Actualizamos nuestra variable mapa. Podremos continuar el trabajo por donde lo dejamos,
        # pero actualmente no podemos especificar el punto exacto donde lo dejamos
        mapa = archivo_mapa.readlines()
        archivo_mapa.close()
        # Si el mapa se comenzó pero no tiene nigún registro se aconseja borrarlo.
        if(len(mapa) == 0):
            archivo_mapa = open(direccion_mapa, "w")
            archivo_mapa.close()
        #else:
            # TENEMOS QUE CREAR UN AVISO DE QUE EXISTE EL TRABAJO, CON UNA VENTANA EMERGENTE. Y QUE
            # LO VAMOS A CONTINUAR

    # SEGUNDO ABRIREMOS UNA NUEVA VENTANA CON LOS BOTONES ENCARGADOS DE HACER EL MAPEO
    root.withdraw()
    ventana_mapeo = Toplevel()
    ventana_mapeo.geometry("320x480")

    # Vamos a poner una especie de pantalla para ir viendo las lecturas
    global pantalla
    Label(ventana_mapeo, text=pantalla).grid(row=0, column=0, columnspan=3)
    # Ahora los botones de control del programa de mapeo
    Button(ventana_mapeo, text="SIMPLE", command=mapa_simple).grid(row=1, column=0)
    Button(ventana_mapeo, text="HUECO", command=mapa_hueco).grid(row=1, column=1)
    Button(ventana_mapeo, text="BULTO", command=mapa_bulto).grid(row=1, column=2)
    Button(ventana_mapeo, text="INCIDENCIA", command=mapa_incidencia).grid(row=2, column=0)
    Button(ventana_mapeo, text="MULT-SIMPLE", command=mapa_multicapa_simple).grid(row=2, column=1)
    Button(ventana_mapeo, text="MULT-INCIDENCIA", command=mapa_multicapa_incidencia).grid(row=2, column=2)

    Button(ventana_mapeo, text="BORRAR ÚLTIMA", command=borrar_ultima).grid(row=3, column=0)
    Button(ventana_mapeo, text="Finalizar mapeo", command=fin_mapeo).grid(row=3, column=1, columnspan=2)
    
def fusionar():
    print("Fusionando lecturas en el mapa")


root = Tk()
root.title("Airvant Mapeo Manual")
root.geometry("380x480")
root.resizable(0, 0)

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Salir", command=root.quit)  # root.quit
menubar.add_cascade(label="Archivo", menu=filemenu)
root.config(menu=menubar)
# ESTARÍA BIEN CREAR ALGO QUE PONGA EL DESARROLLADOR DE LA TECNOLOGÍA
#img_airvant = PhotoImage(file="airvant_logo.png")

dato_empresa = StringVar()
dato_pasillo = IntVar()
dato_alturamax = IntVar()
dato_piking = StringVar()
dato_email = StringVar()

Label(root, text="EMPRESA").grid(row=0, column=0)
Label(root, text="PASILLO").grid(row=0, column=1)
Label(root, text="ALTURA").grid(row=0, column=2)
Entry(root, textvariable=dato_empresa).grid(row=1, column=0)
Entry(root, textvariable=dato_pasillo, width=4).grid(row=1, column=1)
Entry(root, textvariable=dato_alturamax, width=2).grid(row=1, column=2)

Label(root, text="ZONA DE PIKING").grid(row=2, column=0)
Radiobutton(root, text="en altura 1", variable=dato_piking,
            value="True").grid(row=2, column=1)
Radiobutton(root, text="sin piking", variable=dato_piking,
            value="False").grid(row=2, column=2)

Label(root, text="EMAIL DE ENVÍO").grid(row=3, column=0)
Entry(root, textvariable=dato_email).grid(row=3, column=1, columnspan=2)

# BOTONES
Button(root, text="MAPEAR", command=mapear).grid(row=4, column=0)
Button(root, text="FUSIONAR", command=fusionar).grid(row=4, column=1)
#Button(root, text="ENVIAR TRABAJO", command=envioTrabajo).grid(row=4, column=2)

#Label(root, image=img_airvant).grid(row=0, rowspan=11, column=3)

root.mainloop()
