# -*- coding: latin-1 -*-

from Code.Traducir import tr
from Code.Constantes import *
import Code.Util as Util
import Code.DGT as DGT

import Iconos

import FormLayout

def Opciones( parent, configuracion ) :

    separador = (None,None)

    # Datos generales
    liGen = [separador]

    ## Nombre del jugador
    liGen.append( ( tr( "NOMBRE" ) + " :", configuracion.jugador ) )

    ## Estilo
    liGen.append( ( tr( "ESTILO" ) + " :", configuracion.estilos() ) )

    ## Traducción
    liTraducciones = configuracion.listaTraducciones()
    trEs = 'español'
    trActual = configuracion.traductor if configuracion.traductor else trEs
    li = [trActual, ( trEs, 'español' )]
    for trad in liTraducciones :
        li.append( ( trad, trad ) )
    liGen.append( ( tr( "IDIOMA" ) + " :", li ) )

    # Sonidos
    liSon = [separador]
    liSon.append( separador )
    ## Si añadimos sonido tras cada jugada
    liSon.append( ( tr( "SONIDO" ) + " :", configuracion.siSuenaBeep ) )
    liSon.append( separador )
    liSon.append( ( None, tr( "SONIDOS_ACTIVAR" ) ) )
    liSon.append( ( tr( "SONIDOS_RESULTADO" ) + " :", configuracion.siSuenaResultados ) )
    liSon.append( ( tr( "SONIDOS_PGN" ) + " : " , configuracion.siSuenaJugada ) )

    # Tutor
    liTT = [separador]
    liTT.append( ( tr( "MOTOR" ) + " :", configuracion.ayudaCambioTutor() ) )
    liTT.append( ( tr( "SEGUNDOS_PENSAR" ) + " :", float(configuracion.tiempoTutor/1000.0) ) )
    liTT.append( ( None, tr("SENSIBILIDAD") ) )
    liTT.append( (FormLayout.Spinbox( tr( "SENSIBILIDAD_PUNTOS" ), 0, 1000, 70 ), configuracion.tutorDifPts ) )
    liTT.append( (FormLayout.Spinbox( tr( "SENSIBILIDAD_PORCENTAJE" ), 0, 1000, 70 ), configuracion.tutorDifPorc ) )

    # Modo no competitivo
    liNC = [separador]
    liNC.append( ( tr( "ACTIVAR" ) + " :", configuracion.modoNoCompetitivo ) )
    liNC.append( ( FormLayout.Spinbox( tr( "LUCAS_ELO" ), 0, 3200, 70 ), configuracion.eloNC ) )

    ## Salvado automático
    liSA = [separador]

    config = FormLayout.Fichero( tr( "SALVADO_AUTOMATICO_PGN" ), "pgn", True )
    liSA.append( ( config, configuracion.salvarFichero))
    liSA.append( ( tr("SALVAR_GANADAS") + " :", configuracion.salvarGanados ) )
    liSA.append( ( tr("SALVAR_PERDIDAS") + " :", configuracion.salvarPerdidos ) )
    liSA.append( ( tr("SALVAR_ABANDONADAS") + " :", configuracion.salvarAbandonados ) )
    liSA.append( separador )
    liSA.append( ( tr("GUARDAR_VARIANTES") + " :", configuracion.guardarVariantesTutor ) )
    liSA.append( separador )
    config = FormLayout.Fichero( tr( "SALVADO_AUTOMATICO_CSV" ), "csv", True )
    liSA.append( ( config, configuracion.salvarCSV))

    ## Tableros
    liT = [separador]

    ### Diseño de las piezas
    li = [ configuracion.cTableroN.tipoPieza, ( "c", "ChessiconsV3.5" ), ( "m", "Merida" ), ( "i", "Internet" ), ( "s", "Spatial" ), ("f", "Fantasy" ) ]
    liT.append( ( tr( "PIEZAS" ) + " :", li ) )

    ### Tamaños de los tableros
    liTams = [ 64,  ( 1000, tr( "TAM_MAXIMIZADO" ) ), ( 80, tr( "TAM_MUY_GRANDE" ) ), \
                    ( 64, tr( "TAM_GRANDE" ) ), ( 48, tr( "TAM_MEDIANO" ) ), \
                    ( 32, tr( "TAM_MEDIANO_PEQUEÑO" ) ), ( 24, tr( "TAM_PEQUEÑO" ) ), \
                    ( 16, tr( "TAM_MUY_PEQUEÑO" ) ) ]

    liTams[0] = configuracion.cTableroN.anchoPieza
    liT.append( (tr( "TABLERO_NORMAL_TAM" ) + " :", liTams ) )

    liTamsTutor = liTams[:]
    del liTamsTutor[1]
    liTamsTutor[0] = configuracion.cTableroT.anchoPieza
    liT.append( (tr( "TABLERO_TUTOR_TAM" ) + " :", liTamsTutor) )

    ### Mostrando el tutor
    # kTutorH, kTutorH2_1, kTutorH1_2, kTutorV
    liPosTutor = [ configuracion.vistaTutor,( kTutorH, tr( "VISTATUTOR_HORIZONTAL" )), \
                                            ( kTutorH2_1, tr("VISTATUTOR_HORIZONTAL") + " 2+1"), \
                                            ( kTutorH1_2, tr("VISTATUTOR_HORIZONTAL") + " 1+2"), \
                                            ( kTutorV, tr("VISTATUTOR_VERTICAL") ) ]
    liT.append( (tr( "VISTATUTOR" ) + " :", liPosTutor) )
    liT.append( (tr( "EFECTOS_VISUALES" ) + " :", configuracion.efectosVisuales) )
    liT.append( (tr( "ATAJOS_RATON" ) + " :", configuracion.siAtajosRaton) )
    liT.append( separador )
    liT.append( ( tr("ACTIVAR_CAPTURAS") + " :", configuracion.siActivarCapturas ) )
    liT.append( separador )
    liT.append( ( tr("ACTIVAR_QUE", tr("DGT")) + " :", configuracion.siDGT ) )

    lista = []
    lista.append( (liGen,tr( "OPCIONES_GENERALES" ),"" ) )
    lista.append( (liSon,tr( "TB_SONIDOS" ),"" ) )
    lista.append( (liTT,tr( "TUTOR" ),"" ) )
    lista.append( (liT,tr( "TABLEROS" ),"" ) )
    lista.append( (liSA,tr( "SALVADO_AUTOMATICO" ),"" ) )
    lista.append( (liNC, tr( "MODONOCOMPETITIVO" ),"") )

    # Editamos
    resultado = FormLayout.fedit( lista, title= tr( "CONFIGURACION" ), parent = parent, anchoMinimo = 560, icon = Iconos.TB_Opciones(), siDefecto = False )

    if resultado :
        accion, resp = resultado

        liGen, liSon, liTT, liT, liSA, liNC = resp

        configuracion.jugador = liGen[0]

        configuracion.estilo = liGen[1]

        trActual = liGen[2]
        if trActual == trEs :
            trActual = ''
        configuracion.traductor = trActual

        configuracion.siSuenaBeep = liSon[0]
        configuracion.siSuenaResultados = liSon[1]
        configuracion.siSuenaJugada = liSon[2]

        configuracion.tutor.clave = liTT[0]
        configuracion.tiempoTutor = int(liTT[1]*1000)

        configuracion.tutorDifPts = liTT[2]
        configuracion.tutorDifPorc = liTT[3]

        configuracion.modoNoCompetitivo = liNC[0]
        configuracion.eloNC = liNC[1]

        configuracion.cTableroN.tipoPieza = liT[0]
        configuracion.cTableroT.tipoPieza = liT[0]

        configuracion.cTableroN.anchoPieza = liT[1]
        configuracion.cTableroT.anchoPieza = liT[2]

        configuracion.vistaTutor = liT[3]

        configuracion.efectosVisuales = liT[4]
        configuracion.siAtajosRaton = liT[5]
        configuracion.siActivarCapturas = liT[6]

        siDGT = liT[7]
        if configuracion.siDGT != siDGT :
            if siDGT :
                DGT.ponON()
            configuracion.siDGT = siDGT

        configuracion.salvarFichero = Util.dirRelativo(liSA[0])
        configuracion.salvarGanados = liSA[1]
        configuracion.salvarPerdidos = liSA[2]
        configuracion.salvarAbandonados = liSA[3]
        configuracion.guardarVariantesTutor = liSA[4]
        configuracion.salvarCSV = Util.dirRelativo(liSA[5])

        return True
    else :
        return False

