#!/usr/bin/env python
#
#Minë. Middle-earth Interactive Network Environment
#Copyright (C) 2002  Pablo Ruiz Múzquiz
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#Fichero: Salatester.py

from Tkinter import *
import test_de_sala
import xml.sax._exceptions
xmlerrores = xml.sax._exceptions

class Vision:
    def __init__(self):
        
        #Contruimos el interfaz gráfico
        self.r=Tk()
        self.r.minsize(370,460)
        self.r.rowconfigure(0, weight=1)
        self.r.columnconfigure(0, weight=1)
        self.r.columnconfigure(1, weight=2)
        self.titulo=Label(self.r,text='SalaTester v0.2 para Minë, de Aranarth\nhttp://eutherpe.org')
        self.titulo.pack(side=TOP)
        self.t=Entry(self.r,width=30)
        self.t.pack(side=TOP)
        Button(self.r,text='Mostrar',command=self.busca).pack(side=TOP)
        self.res=Label(self.r,text='Sin datos')
        self.res.pack(expand=0,side=TOP)

    def run(self):
        self.r.mainloop()

    def busca(self):
        id=self.t.get()
        
        try:
            sala=test_de_sala.Sala(id)

            texto01 = "Cargada sala con id: "+sala.id
            texto02 = "Nombre: "+sala.nombre
            texto03 = "Autor: "+sala.autor
            texto04 = "Área: "+sala.area
            texto05 = "Versión: "+sala.version
            texto06 = "Comentario: "+sala.comentario

            textotemp = "\n"
            for item in sala.descripcion:
                textotemp+='dificultad %d: %s...\n' % (item["dificultad"], item["texto"][:40])
            texto08 = "Descripciones:"+textotemp

            textotemp = "\n"
            for salida in sala.salidas:
                textotemp+='%s: %s, %s, %s\n' % (salida["direccion"], salida["dificultad"],
                                              salida["id"], salida["descripcion"])

            texto09 = "Salidas:"+textotemp

            texto10 = "Propiedades:\n"+'Volumen: '+str(sala.volumen)+' Luz: '+str(sala.luz)+' Aura: '+str(sala.aura)+'\n'+\
                      'Combate: '+sala.combate+' Ocultabilidad: '+str(sala.ocultabilidad)+'\n'

            textotemp = '\n'
            for objeto in sala.objetos:
                textotemp += '%s: %d, %d, %d, %d, %s\n' % (objeto["id"], objeto["cantidad"], objeto["maximo"],
                                                          objeto["probabilidad"], objeto["dificultad"], 
                                                          objeto["descripcion"])
            texto11 = "Objetos:"+textotemp

            textotemp = '\n'
            for encuentro in sala.encuentros:
                textotemp += '%s: %d, %d, %d, %d, %s\n' % (encuentro["id"], encuentro["cantidad"],
                                                  encuentro["maximo"], encuentro["probabilidad"],
                                                  encuentro["dificultad"], encuentro["descripcion"])

            texto12 = "Encuentros:"+textotemp
                    
            textofinal = texto01+'\n'+texto02+'\n'+texto03+'\n'+texto04+'\n'\
                         +texto05+'\n'+texto06+'\n'+texto08+'\n'+texto09+'\n'\
                         +texto10+'\n'+texto11+'\n'+texto12
                


            self.res.configure(text=textofinal,justify=LEFT)

        except IOError:

            self.res.configure(text="No se ha encontrado el archivo con id:\n\n"+id,justify=LEFT)
        except xmlerrores.SAXParseException, mensaje_error:
            self.res.configure(text="El fichero que intentabas abrir tiene un error sintáctico \nen la línea "+str(mensaje_error._linenum)+', carácter '+str(mensaje_error._colnum)+". Por favor, revísalo.",justify=LEFT)

        except:
            error = sys.exc_type
            print error
            mensaje_error = sys.exc_value
            print mensaje_error.args
            self.res.configure(text="El fichero con id "+id+"\nexiste pero provoca un error extraño.\nLo que sí podemos decir es que el error \nno es sintáctico (o no es el principal error)\n\nTipo de error:\n"+str(error)+'\nMensaje de error:\n'+str(mensaje_error.args),justify=LEFT)            

        self.res.pack(anchor=W)

if __name__=='__main__':
    #OJO: Este módulo sólo se importa si se va a usar

    agtk=Vision()
    agtk.run()
