#!/usr/bin/python
# -*- coding: utf8 -*-

# ESCAPADES : interface graphique pour générer les feuilles de personnages.
# Eric Forgeot 2008
# (voir notice licence BSD à la fin de cette page)


import sys
from random import *
from decimal import *
from PyQt4 import QtGui, QtCore
from escapades_ui import Ui_MainWindow

# approche par héritage unique où l'on sous classe QMainWindow 
# et l'interface utilisateur est configurée dans la méthode init() :

class MonAppli(QtGui.QMainWindow):
    valFOR = 0
    valDEX = 0
    valVOL = 0
    valINT = 0
    valCC = 0
    valTOTAL = 15
    
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        # Configure l'interface utilisateur.
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Connecte les boutons.
        self.connect(self.ui.actionExit, QtCore.SIGNAL("clicked()"),exit)
        self.connect(self.ui.pushButton_Generer, QtCore.SIGNAL("clicked()"),self.genereDE)
        self.connect(self.ui.pushButton_Rafraichir, QtCore.SIGNAL("clicked()"),message)
        #self.connect(self.ui.Slider_FOR, QtCore.SIGNAL("clicked()"),self.decreaseFOR)
        self.connect(self.ui.pushButton_FORminus, QtCore.SIGNAL("clicked()"),self.decreaseFOR)
        self.connect(self.ui.pushButton_FORplus, QtCore.SIGNAL("clicked()"),self.increaseFOR)
        self.connect(self.ui.pushButton_DEXminus, QtCore.SIGNAL("clicked()"),self.decreaseDEX)
        self.connect(self.ui.pushButton_DEXplus, QtCore.SIGNAL("clicked()"),self.increaseDEX)
        self.connect(self.ui.pushButton_VOLminus, QtCore.SIGNAL("clicked()"),self.decreaseVOL)
        self.connect(self.ui.pushButton_VOLplus, QtCore.SIGNAL("clicked()"),self.increaseVOL)
        self.connect(self.ui.pushButton_INTminus, QtCore.SIGNAL("clicked()"),self.decreaseINT)
        self.connect(self.ui.pushButton_INTplus, QtCore.SIGNAL("clicked()"),self.increaseINT)


    def increaseFOR(self):
        if MonAppli.valTOTAL > 0:
            MonAppli.valFOR += 1
            self.ui.label_FOR.setText(str(MonAppli.valFOR))
            MonAppli.valTOTAL -= 1
            self.displayTOTAL()
       

    def decreaseFOR(self):
        if MonAppli.valFOR > 1:
            MonAppli.valFOR -= 1
            self.ui.label_FOR.setText(str(MonAppli.valFOR))
            MonAppli.valTOTAL += 1
            self.displayTOTAL()
        

    def increaseDEX(self):
        if MonAppli.valTOTAL > 0:
            MonAppli.valDEX += 1
            self.ui.label_DEX.setText(str(MonAppli.valDEX))
            MonAppli.valTOTAL -= 1
            self.displayTOTAL() 
       

    def decreaseDEX(self):
        if MonAppli.valDEX > 1:
            MonAppli.valDEX -= 1
            self.ui.label_DEX.setText(str(MonAppli.valDEX))
            MonAppli.valTOTAL += 1
            self.displayTOTAL()
  
    def increaseVOL(self):
        if MonAppli.valTOTAL > 0:
            MonAppli.valVOL += 1
            self.ui.label_VOL.setText(str(MonAppli.valVOL))
            MonAppli.valTOTAL -= 1
            self.displayTOTAL() 
       

    def decreaseVOL(self):
        if MonAppli.valVOL > 1:
            MonAppli.valVOL -= 1
            self.ui.label_VOL.setText(str(MonAppli.valVOL))
            MonAppli.valTOTAL += 1
            self.displayTOTAL()
          
    def increaseINT(self):
        if MonAppli.valTOTAL > 0:
            MonAppli.valINT += 1
            self.ui.label_INT.setText(str(MonAppli.valINT))
            MonAppli.valTOTAL -= 1
            self.displayTOTAL() 
       

    def decreaseINT(self):
        if MonAppli.valINT > 1:
            MonAppli.valINT -= 1
            self.ui.label_INT.setText(str(MonAppli.valINT))
            MonAppli.valTOTAL += 1
            self.displayTOTAL()
        
        
    def displayTOTAL(self):
        self.ui.label_TOTAL.setText(str(MonAppli.valTOTAL))
        MonAppli.valPDV = MonAppli.valFOR + MonAppli.valDEX + MonAppli.valVOL + MonAppli.valINT 
        MonAppli.valPDM = MonAppli.valFOR + MonAppli.valDEX + MonAppli.valVOL + MonAppli.valINT
        MonAppli.valCC = int(round((MonAppli.valFOR + MonAppli.valDEX +0.5) / 2))
        MonAppli.valCM = int(round((MonAppli.valVOL + MonAppli.valINT +0.5) / 2))
        self.ui.label_PDV.setText(str(MonAppli.valPDV))  
        self.ui.label_PDM.setText(str(MonAppli.valPDM)) 
        self.ui.label_CC.setText(str(MonAppli.valCC)) 
        self.ui.label_CM.setText(str(MonAppli.valCM)) 


        
    def genereDE(self):
        #genere un nombre entre 1 et 6 (compris)
        #MonDE = randrange(1,7,1)
        MesDES = randrange(1,7,1) + randrange(1,7,1) + randrange(1,7,1) + randrange(1,7,1)
        print "\n"
        print MesDES
        MonAppli.valTOTAL = MesDES + 7
        print MonAppli.valTOTAL
        MonAppli.valFOR = 2
        MonAppli.valDEX = 2
        MonAppli.valVOL = 2
        MonAppli.valINT = 2
        self.ui.label_FOR.setText(str(MonAppli.valFOR))
        self.ui.label_DEX.setText(str(MonAppli.valDEX))
        self.ui.label_VOL.setText(str(MonAppli.valVOL))
        self.ui.label_INT.setText(str(MonAppli.valINT)) 
        MonAppli.valTOTAL = MonAppli.valTOTAL - 8                               
        self.ui.label_TOTAL.setText(str(MonAppli.valTOTAL)) 
        print MonAppli.valTOTAL
        #print MonAppli.valTOTAL

		
	
def message():
    print "bonjour\n"
    return

def exit():
    sys.exit(main())


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MonAppli()

    window.show()
    sys.exit(app.exec_())
    
    
    
    
# Copyright (c) 2008 <anamnese.online.fr>
# 
# Licence-type BSD 
# Tous droits réservés. 
# La redistribution et l'utilisation sous forme binaire ou de code source, 
# avec ou sans modification, est autorisée à condition que les conditions suivantes soient respectées:
#
# 1. Les redistributions du code source doivent conserver l'indication de copyright ci-dessus, 
# cette liste de conditions et la renonciation suivante. 
# 2. Les redistributions sous forme binaire doivent reproduire l'indication de copyright ci-dessus,
#  cette liste de conditions et la renonciation suivante dans la documentation et/ou les autres 
# accessoires fournis avec la distribution. 
# 3. Toutes les publicités mentionnant les caractéristiques ou l'utilisation de ce logiciel doivent 
# mentionner la phrase suivante : 
# "Ce produit inclus un logiciel et du travail développés par le site Anamnese (http://anamnese.online.fr)" 
# 4. Les noms des créateurs et développeurs ne peuvent être utilisés pour approuver ou promouvoir
#  les produits dérivés de ce logiciel sans une permission écrite spécifique préalable.

#  CE LOGICIEL EST FOURNI PAR LES TITULAIRES DU COPYRIGHT ET LES PARTICIPANTS "TEL QUEL" 
# ET TOUTES LES GARANTIES EXPLICITES OU IMPLICITES, Y COMPRIS, MAIS NON LIMITÉES A CELLES-CI, 
# LES GARANTIES IMPLICITES DE COMMERCIALISATION ET D'ADÉQUATION À UN USAGE PARTICULIER SONT DÉNIÉES.
# EN AUCUN CAS LES TITULAIRES DU COPYRIGHT OU LES PARTICIPANTS NE PEUVENT ÊTRE TENUS POUR 
# RESPONSABLE DES DOMMAGES DIRECTS, INDIRECTS, FORTUITS, PARTICULIERS, EXEMPLAIRES OU CONSÉCUTIFS
# À UNE ACTION (Y COMPRIS, MAIS NON LIMITÉS À CEUX-CI, L'ACQUISITION DE MARCHANDISES OU DE SERVICES
# DE REMPLACEMENT; LES PERTES D'UTILISATIONS, DE DONNÉES OU FINANCIÈRES; OU L'INTERRUPTION 
# D'ACTIVITÉS) DE QUELQUE MANIÈRE QUE CES DOMMAGES SOIENT CAUSÉS ET CECI POUR TOUTES LES THÉORIES
# DE RESPONSABILITÉS, QUE CE SOIT DANS UN CONTRAT, POUR DES RESPONSABILITÉS STRICTES OU DES 
# PRÉJUDICES (Y COMPRIS DUS À UNE NEGLIGENCE OU AUTRE CHOSE) SURVENANT DE QUELQUE MANIÈRE QUE CE 
# SOIT EN DEHORS DE L'UTILISATION DE CE LOGICIEL, MÊME EN CAS D'AVERTISSEMENT DE LA POSSIBILITÉ
#  DE TELS DOMMAGES.
