#!/usr/lib/python2.7
# -*- coding: latin-1 -*-
############################################################################
#    Copyright (C) 2008 EURL Cabinet Christian Roche                                    
#    contact@sablures.net                                                       #
#    http://www.sablures.net                                                                    #
#    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.,                                       #
#                                       
#                                                                          
#    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         
#    OPL General Public License for more details.                          
#    
#    refer to http://www.sablures.net
#          
#    You can pay your version to:
#    online donate and references : http://www.sablures.net
#
#    funded by http://www.cabinet-roche.com
#     
#     online documents :
#
#     Charters:

#     Ethics and Billing - 
#
#     http://www.creativeinfinity.fr/iso-8028/billing.txt
#
#     Ethics and Licence
#    
#     http://www.creativeinfinity.fr/iso-8028/OPL.txt
#
#
#
#############################################################################
import os, xml.dom.minidom, time, calendar, sys
from subprocess import call
from tkinter import tix as Tix


def Commencer():
    global ligen,xorbl,Pause,Reprendre,Terminer,SabL,GrouP,ivar,nG,mJ,IncluD,bsg,GlurC,kuul
    def comPause():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        #print (xarb,'hlu')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Pause")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemsFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixim = open(chemsFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        slap=xim.getElementsByTagName('CapitacTMemO')
        
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
            #print (IncluD[xarb,i])
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
                #print xirn,IncluD[xarb,i]
            if str(xob)==str(FooF):
                #print ('hlu')
                slip.setAttribute("PresenT",str(irma))
                slip.setAttribute("Tache","Pause")
                ixom = open(chemsFS,'wb')
                class TransPak:
                    def write(self, data):
                        ixom.write(data.encode(str(Str_EncoD)))
                xim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        Pause[xarb].config(state='disabled')
        Reprendre[xarb].config(state='normal')
    def comReprendre():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Reprise")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        slap=xim.getElementsByTagName('CapitactMemO')
        
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):
                slip.setAttribute("PresenT",str(irma))
                slip.setAttribute("Tache","Reprise")
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                xim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        Pause[xarb].config(state='normal')
        Reprendre[xarb].config(state='disabled')
    def noalu():
        bsg.set('')
    def comTerminer():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Terminer")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):                      
                #print 'hulo'
                racine.removeChild(slip)
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                axim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        xorbl[xarb].grid_forget()
        sf.set('max')
        nf.set('')
    def comAnnuler():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Annuler")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')       
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):
                #print 'hulo'
                racine.removeChild(slip)
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                axim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        xorbl[xarb].grid_forget()
        sf.set('max')
        nf.set('')
    def formInT(zor):
        ResT=''
        for char in zor:
            if char=='"'or char=="'":ResT=ResT+' '
            else:ResT=ResT+char
        return ResT
    def com_voi():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ,GlurC,kuul       
        for i in range(1,nG+1):
 
             ivar[i].set(GlurC[xarb,i])
        kuul.set(xarb)

    def ListAtriBChange(nam):
        global AtrIBChange
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        j=0
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            if str(nem)==str(nam):
                nodename=paz.getAttribute('NodeName')
        pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nam+".xml"
        chainifile = pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        dpoz = xim.getElementsByTagName(nodename)
        j=0
        AtrIBChange[xarb].subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        for dpaz in dpoz:
            nem=dpaz.getAttribute('Nam')
            AtrIBChange[xarb].insert(int(j),nem)
            j+=1
    def AtribChange():
        global GrouP,LIncluD,ivar,AtChange,IncluD
        comTerminer()
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        j=0
        nam=LIncluD[xarb].get()
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            if str(nem)==str(nam):
                nodename=paz.getAttribute('NodeName')
        for i in range(1,nG+1):
            if GrouP[i]==nodename:ivar[i].set(AtChange[xarb].get())
            else:ivar[i].set(IncluD[xarb,i])
        Commencer()
        #for i in range (1,nG+1):
        #    GlurC[xarb,i]=ivar[i].get()#


    chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
    ixim = open(chemFS,'r')
    xim = xml.dom.minidom.parse(ixim)
    Truchm=False
    poz = xim.getElementsByTagName('CapitacTMemO')
    for paz in poz:
        blurbl=True
        for i in range(1,nG+1):
            gorax=paz.getAttribute(GrouP[i])
            if gorax!=ivar[i].get():blurbl=False
            #print gorax
        if blurbl==True:Truchm=True
    ixim.close()
    if Truchm==True:
        bsg.set(Lib_Same)
        return

#GlorC le Terrible


    xorb=formInT(ivar[mJ].get())
    ivar[mJ].set(xorb)    
    Den[str(ligen)]=0 
    ligen+=1   
    xorbl[str(ligen)]=Tix.LabelFrame(rlist,label=ivar[mJ].get(), options='background  '+str(Act_backG)+' foreground '+str(Act_foreG),bd=1,relief="sunken")
    xorbl[str(ligen)].grid(row=ligen,column=0,sticky='we',columnspan=8)
    irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
    Fxorbl[str(ligen)]=xorbl[str(ligen)].subwidget_list['frame']

        
    chronalgor=1
    Nem[str(ligen)]=ivar[mJ].get()
    Tix.Label(Fxorbl[str(ligen)],text=Nem[str(ligen)],font=str(ActLab_font)+' '+str(ActLab_fontSize)+str(ActLab_bold),foreground=str(ActLab_foreG),background=str(ActLab_backG)).grid(row=0,column=0)
    xarb=ligen.__str__()
    
    for i in range (1,nG+1):
        GlurC[xarb,i]=ivar[i].get()
        
    Pause[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Pause,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Pause[xarb].grid(row=0,column=5)
    Reprendre[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Continue,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Reprendre[xarb].grid(row=0,column=6)
    Terminer[xarb]=Tix.Button(Fxorbl[str(ligen)],text=Lib_Terminate,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Terminer[xarb].grid(row=0,column=7)
    Annuler[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Cancel,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Annuler[xarb].grid(row=0,column=8)
    Dossier[xarb]=Tix.Label(Fxorbl[str(ligen)],font=str(ActLab_font)+' '+str(ActLab_fontSize)+str(ActLab_bold),foreground=str(ActLab_foreG),background=str(ActLab_backG),text=ivar[1].get()).grid(row=0,column=1)
    Tache[xarb]=Tix.Label(Fxorbl[str(ligen)],text=ivar[2].get())
    Tache[xarb].grid(row=0,column=2)
    Voir[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Vue,command=com_voi,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Voir[xarb].grid(row=0,column=12)
    j=int(ligen)
    for i in range(1,nG+1):
        IncluD[xarb,i]=ivar[i].get()
        #print (ivar[i].get())
    LIncluD[xarb]=Tix.StringVar(Fxorbl[str(ligen)])
    ListIncluD[xarb]=Tix.ComboBox(Fxorbl[str(ligen)], editable=1,variable=LIncluD[xarb], dropdown=1,command=ListAtriBChange)
    ListIncluD[xarb].grid(row=0,column=9)
    AtChange[xarb]=Tix.StringVar(Fxorbl[str(ligen)])                              
    AtrIBChange[xarb]=Tix.ComboBox(Fxorbl[str(ligen)], editable=1,variable=AtChange[xarb], dropdown=1)                                  
    AtrIBChange[xarb].grid(row=0,column=10)
    pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
    chainifile = osdir + os.sep + pathfin
    ixim = open(chainifile,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    poz = xim.getElementsByTagName('IncluD')
    j=1
    for paz in poz:
        if j==mJ:j+=1
        else:
            nem=paz.getAttribute('NemFicXML')
            ListIncluD[xarb].insert(int(j),nem)
            j+=1
    ATrIBChange[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Change,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG),command=AtribChange)
    ATrIBChange[xarb].grid(row=0,column=11)
    grmbl=False
    chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
    try:
        ixim = open(chemFS,'r')   
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        grmbl=True
    except:
        try:
            chemFS= osdir + os.sep + "WokLaB"+os.sep+"Clean"+os.sep+"Wok"+os.sep+"ChronoX.xml"
            ixim = open(chemFS,'r')
            xim = xml.dom.minidom.parse(ixim)
            ixim.close()
            grmbl=True
        except:bsg.set("Fichiers corrompus, prevenir l'admnistrateur")
    if grmbl==True:
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(str(GrouP[i]),IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","DebutTache")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()

    chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
    try:
        ixim = open(chemFS,'r')   
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        grmbl=True
    except:
        try:
            chemFS= osdir + os.sep + "WokLaB"+os.sep+"Clean"+os.sep+"Wok"+os.sep+"OnAborT.xml"
            ixim = open(chemFS,'r')
            xim = xml.dom.minidom.parse(ixim)
            ixim.close()
            grmbl=True
        except:bsg.set("Fichiers corrompus, prevenir l'admnistrateur et notez vos temps jusqu'a nouvel ordre")
    if grmbl==True:
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(str(GrouP[i]),IncluD[xarb,i])
        element.setAttribute("PresenT",str(irma))
        element.setAttribute("Tache","DebutTache")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
    Pause[xarb].config(command=comPause)
    Reprendre[xarb].config(command=comReprendre)
    Annuler[xarb].config(command=comAnnuler)
    Reprendre[xarb].config(state='disabled')
    Terminer[xarb].config(command=comTerminer)
    #print 'hukl'
def ReCommencer():
    global ATrIBChange,AtrIBChange,GlurC, ListIncluD,ligen,xorbl,Pause,Reprendre,Terminer,SabL, TempO, taco,nG,GrouP,ivar,mJ,IncluD,LIncluD,AtChange,mJ,bsg,osdir
    def recomPause():
        global Pause, Reprendre,nG,GrouP,ivar,IncluD,mJ,osdir
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        #print xarb,'hlu'
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Pause")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        slap=xim.getElementsByTagName('CapitacTMemO')
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):
                slip.setAttribute("PresenT",str(irma))
                slip.setAttribute("Tache","Pause")
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                xim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        Pause[xarb].config(state='disabled')
        Reprendre[xarb].config(state='normal')
    def recomReprendre():
        global Pause, Reprendre,nG,GrouP,ivar,IncluD,mJ,osdir
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Reprise")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        slap=xim.getElementsByTagName('CapitacTMemO')
        
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):       
                slip.setAttribute("PresenT",str(irma))
                slip.setAttribute("Tache","Reprise")
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                xim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        Pause[xarb].config(state='normal')
        Reprendre[xarb].config(state='disabled')
    def noalu():
        bsg.set('')
    def recomTerminer():
        global Pause, Reprendre,nG,GrouP,ivar,IncluD,mJ,osdir
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Terminer")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixima.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):
                racine.removeChild(slip)
                ixom = open(chemFS,'wb')
                class TransPak:
                    def write(self, data):
                        
                        ixom.write(data.encode(str(Str_EncoD)))
                axim.writexml(TransPak(),encoding=str(Str_EncoD))
                ixom.close()
        xorbl[xarb].grid_forget()
        sf.set('max')
        nf.set('')
    def recomAnnuler():
        global Pause, Reprendre,nG,GrouP,ivar,IncluD,mJ,osdir
        #print xarb,'hlu'
        irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        for i in range(1,nG+1):
            element.setAttribute(GrouP[i],IncluD[xarb,i])
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("Tache","Annuler")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        FooF='T'
        for i in range(1,nG+1):
            FooF=FooF+'T'
        for slip in slap:
            xob='T'
            for i in range(1,nG+1):
                xirn=slip.getAttribute(GrouP[i])
                if xirn==IncluD[xarb,i]:
                    xob=str(xob)+'T'
            if str(xob)==str(FooF):
                    #print 'hulo'
                    racine.removeChild(slip)
                    ixom = open(chemFS,'wb')
                    class TransPak:
                        def write(self, data):
                            
                            ixom.write(data.encode(str(Str_EncoD)))
                    axim.writexml(TransPak(),encoding=str(Str_EncoD))
                    ixom.close()
        xorbl[xarb].grid_forget()
        sf.set('max')
        nf.set('')
    def ListAtriBChange(nam):
        global AtrIBChange, osdir
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        j=0
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            if str(nem)==str(nam):
                nodename=paz.getAttribute('NodeName')
        pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nam+".xml"
        chainifile = pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        dpoz = xim.getElementsByTagName(nodename)
        j=0
        AtrIBChange[xarb].subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        for dpaz in dpoz:
            nem=dpaz.getAttribute('Nam')
            AtrIBChange[xarb].insert(int(j),nem)
            j+=1
    def voi():
        global Pause, Reprendre, GrouP,ivar,nG,IncluD,mJ,GlurC,kuul
        for i in range(1,nG+1):
             #iclentry[i].insert(0,GlurC[xarb,i])
             ivar[i].set(GlurC[xarb,i])
        kuul.set(xarb)

    def AtribChange():
        global GrouP,LIncluD,ivar,AtChange,IncluD,osdir
        recomTerminer()
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        j=0
        nam=LIncluD[xarb].get()
        
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            if str(nem)==str(nam):
                nodename=paz.getAttribute('NodeName')
        for i in range(1,nG+1):
            if GrouP[i]==nodename:ivar[i].set(AtChange[xarb].get())
            else:ivar[i].set(IncluD[xarb,i])
        Commencer()
    Den[str(ligen)]=0 
    ligen+=1   
    xorbl[str(ligen)]=Tix.LabelFrame(rlist,label=ivar[mJ].get(), options='background  '+str(Act_backG)+' foreground '+str(Act_foreG),bd=1,relief="sunken")
    xorbl[str(ligen)].grid(row=ligen,column=0,sticky='we',columnspan=8)
    irma=TempO
    Fxorbl[str(ligen)]=xorbl[str(ligen)].subwidget_list['frame']
    #print 'hu'
    chronalgor=1
    xarb=ligen.__str__()
    Nem[xarb]=ivar[mJ].get()
    for i in range (1,nG+1):
        GlurC[xarb,i]=ivar[i].get()
    Tix.Label(Fxorbl[str(ligen)],text=Nem[str(ligen)],font=str(ActLab_font)+' '+str(ActLab_fontSize)+str(ActLab_bold),foreground=str(ActLab_foreG),background=str(ActLab_backG)).grid(row=0,column=0)
    Pause[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Pause,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG))
    Pause[xarb].grid(row=0,column=5)
    Reprendre[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Continue,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG))
    Reprendre[xarb].grid(row=0,column=6)
    Terminer[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Terminate,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG))
    Terminer[xarb].grid(row=0,column=7)
    Annuler[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Cancel,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG))
    Annuler[xarb].grid(row=0,column=8)
    Dossier[xarb]=Tix.Label(Fxorbl[str(ligen)],text=ivar[1].get(),font=str(ActLab_font)+' '+str(ActLab_fontSize)+str(ActLab_bold),foreground=str(ActLab_foreG),background=str(ActLab_backG)).grid(row=0,column=1)
    Tache[xarb]=Tix.Label(Fxorbl[str(ligen)],text=ivar[2].get())
    Tache[xarb].grid(row=0,column=2)
    LIncluD[xarb]=Tix.StringVar(Fxorbl[str(ligen)])
    ListIncluD[xarb]=Tix.ComboBox(Fxorbl[str(ligen)], editable=1,variable=LIncluD[xarb], dropdown=1,command=ListAtriBChange)
    ListIncluD[xarb].grid(row=0,column=9)
    AtChange[xarb]=Tix.StringVar(Fxorbl[str(ligen)])                              
    AtrIBChange[xarb]=Tix.ComboBox(Fxorbl[str(ligen)], editable=1,variable=AtChange[xarb], dropdown=1)                                  
    AtrIBChange[xarb].grid(row=0,column=10)
    Voir[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Vue,command=voi,foreground=str(ActBut_foreG),background=str(ActBut_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
    Voir[xarb].grid(row=0,column=12)
    pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
    chainifile = osdir + os.sep + pathfin
    ixim = open(chainifile,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    poz = xim.getElementsByTagName('IncluD')
    j=1
    for paz in poz:
        if j==mJ:j+=1
        else:
            nem=paz.getAttribute('NemFicXML')
            ListIncluD[xarb].insert(int(j),nem)
            j+=1
    ATrIBChange[xarb]=Tix.Button(Fxorbl[str(ligen)],text= Lib_Change,font=str(ActBut_font)+' '+str(ActBut_fontSize)+str(ActBut_bold),foreground=str(ActBut_foreG),background=str(ActBut_backG),command=AtribChange)
    ATrIBChange[xarb].grid(row=0,column=11)

##    Debut[xarb]=Tix.Label(xorbl[str(ligen)],text=str(irma),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold),foreground=str(ActLab_foreG),background=str(ActLab_backG))
##    Debut[xarb].grid(row=0,column=3)   
    for i in range(1,nG+1):
        IncluD[xarb,i]=ivar[i].get()
        #print IncluD[xarb,i], GrouP[i]
    #print 'nG=',nG
    Dedu[xarb]=str(irma)
    

    Pause[xarb].config(command=recomPause)
    Reprendre[xarb].config(command=recomReprendre)
    Annuler[xarb].config(command=recomAnnuler)
    Reprendre[xarb].config(state='disabled')
    Terminer[xarb].config(command=recomTerminer)
    #print 'hukl'
    if str(taco)=="Pause":
        Pause[xarb].config(state='disabled')
        Reprendre[xarb].config(state='normal')
    if str(taco)=="Reprise":
        Pause[xarb].config(state='normal')
        Reprendre[xarb].config(state='disabled')
    if str(taco)=="DebutTache":
        Pause[xarb].config(state='normal')
        Reprendre[xarb].config(state='disabled')
def Reposer(xorlnor_chronolog,chronalgor):
    cronologFT[xorlnor_chronolog,Debut]=time.strftime('%c')
    chronalgor+=1
def Reprendre(xorlnor_chronolog,chronalgor):
    cronologFT[xorlnor_chronolog,Fin]=time.strftime('%c')
def Terminer(xorlnor_chronolog,chronalgor):
    cronologFT[xorlnor_chronolog,Fin]=time.strftime('%c')
def noalu():
    bsg.set('')
chronalgor=0
#print ('yea00')
#print (os.environ.get('TIX_LIBRARY'))
ddSabL = Tix.Tk()
#print ('yea0')
WSabL=Tix.PanedWindow(ddSabL, orientation='vertical')
WSabL.pack(fill='both',expand=1)
#print ('yea1')
rsSabL = WSabL.add('sabl', min=70, size=250)
rwSabL = WSabL.add('listache', min=70, size=100)#WSabL.grid(row=8,column=0,sticky='we') rwSabL rsSabL
listache=Tix.ScrolledWindow(rwSabL,scrollbar='both')
rlist=listache.window

nf = Tix.StringVar()
sf = Tix.StringVar()
res = Tix.StringVar()
apact = Tix.StringVar()
bsg = Tix.StringVar()
kuul=Tix.StringVar()
##
##def get_main_dir():
##    try:
##        sys.frozen
##    except AttributeError:
##        path = sys.argv[0]
##    else:
##        path = sys.executable
##    return os.path.dirname(os.path.abspath(path))

def get_main_dir(relative_path): # needed for bundling                                                                                                                            
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)
##
##frozen = 'not'
##if getattr(sys, 'frozen', False):
##        # we are running in a bundle
##        frozen = 'ever so'
##        bundle_dir = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
##else:
##        # we are running in a normal Python environment
##        bundle_dir = os.path.dirname(os.path.abspath(__file__))
##print( 'we are',frozen,'frozen')
##print( 'bundle dir is', bundle_dir )
##print( 'sys.argv[0] is', sys.argv[0] )
##print( 'sys.executable is', sys.executable )
##print( 'os.getcwd is', os.getcwd() )

oscurdir1=get_main_dir(os.curdir)
i=len(oscurdir1)
oscurdir=""
torgol=False
#print (oscurdir1)
for x in range(0,i):
    try:
        if oscurdir1[x:int(x+19)]=='/SablureExulium.app':
            torgol=True
            break
        else:
            oscurdir=oscurdir+oscurdir1[x:x+1]
        #print (oscurdir1[x:int(x+19)])
    except:
        oscurdir=oscurdir+oscurdir1[x:x+1]
if torgol==False:
    oscurdir=oscurdir1
 
osdir=oscurdir
#print (osdir)

def recomAtribChange_task():
    global GrouP,LIncluD,ivar,AtChange,IncluD,kuul,osdir
    irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
    chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
    ixim = open(chemFS,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    racine=xim.documentElement
    element =xim.createElement("CapitacTMemO")
    for i in range(1,nG+1):
        element.setAttribute(GrouP[i],IncluD[kuul.get(),i])
    element.setAttribute("DeguTemp",str(irma))
    element.setAttribute("Tache","Terminer")
    cronax=time.strftime('%c')
    racine.appendChild(element)
    ixom = open(chemFS,'wb')
    class TransPak:
        def write(self, data):
            
            ixom.write(data.encode(str(Str_EncoD)))
    xim.writexml(TransPak(),encoding=str(Str_EncoD))
    ixom.close()
    chemsFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
    ixima = open(chemsFS,'r')
    axim = xml.dom.minidom.parse(ixima)
    ixima.close()
    racine = axim.documentElement
    slap=axim.getElementsByTagName('CapitacTMemO')
    
    FooF='T'
    for i in range(1,nG+1):
        FooF=FooF+'T'
    for slip in slap:
        xob='T'
        for i in range(1,nG+1):
            xirn=slip.getAttribute(GrouP[i])
            if xirn==IncluD[kuul.get(),i]:
                xob=str(xob)+'T'
        if str(xob)==str(FooF):
            #print 'xurb'
            racine.removeChild(slip)
            ixom = open(chemsFS,'wb')
            class TransPaker:
                def write(self, data):
                    #print ('xarb')
                    
                    ixom.write(data.encode(str(Str_EncoD)))
            axim.writexml(TransPaker(),encoding=str(Str_EncoD))
            ixom.close()
##    for i in range(1,nG+1):
##            if GrouP[i]==nodename:ivar[i].set(AtChange[xarb].get())
##            else:ivar[i].set(IncluD[xarb,i])
    xorbl[kuul.get()].grid_forget()
    Commencer()


def upload_void():
    def upload(tetu):
        global GrouP,LIncluD,ivar,AtChange,IncluD,osdir

    ##def mezag(mess):
    ##    bsg.set(mess)
    ##    Lu.config(state=NORMAL)
        
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        #racine = xim.documentElement
##        ivar={}
##        iclentry={}
##        inclentry={}
        j=1
        i=0
        m=0
##        GrouP={}
##        Node={}
        #racine=xim.documentElement
        zurp=True
        mess="aucun element nouveau pour les betalistes"
        for paz in poz:
            nG=j
            nem=paz.getAttribute('NemFicXML')
            nodename=paz.getAttribute('NodeName')
            #ivar[j]=StringVar(ddSabL)
            #paz.setAttribute(str(GrouP[i]),IncluD[str(ligen),i])
            GrouP[j]=str(nodename)
            #print str(GrouP[j]),nG, j
            tip=paz.getAttribute('TiP')

    ##        iclentry[j] = Tix.ComboBox(rsSabL, editable=1,variable=ivar[j], dropdown=1,width='6',background=str(Lst_backG))
    ##        iclentry[j].grid(row=m+1,column=i)
            if str(tip)=="Master":mJ=j
                #print 'mJ',str(mJ)
        #        Tix.Entry(rsSabL,textvariable = ivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),width='54',font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold)).grid(row=4,column=3,columnspan=4,padx='8')
            #else:
        #        Tix.Entry(rsSabL,textvariable = ivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold)).grid(row=m+3,column=i,padx='8')

            pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nem+".xml"
            chainifile = pathfin
            ixim = open(chainifile,'r')
            xim = xml.dom.minidom.parse(ixim)
            ixim.close()
            dpoz = xim.getElementsByTagName(nodename)
            racine = xim.documentElement
            
            bingo="CleaN"
##            for i in range(1,nG):
##                 iclentry[i].subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
            glorc=False
            
            for dpaz in dpoz:
                nom=dpaz.getAttribute('Nam')
               
                if nom:
                    if nom==ivar[j].get():
                        glorc=True
                    #·#nem=ivar[i].get()
                    #for i in range(1,nG+1):
                        #iclentry[i+1].insert(int(j),nem)
                        
                        #if str(nem)==str(ivar[i].get()):
                            
##                else:
##                    for i in range(1,nG+1):
##                        iclentry[i+1].insert(int(j),nem)
##                        
##                        if nem==str(ivar[i].get()):
            if glorc==False:
                element =xim.createElement(nodename)
                element.setAttribute('Nam',ivar[j].get())
                bingo="GooD"

##                j+=1
##                iclentry[i+1].insert(int(j),nem)    
##                xor=str(xor)+str(xar)+'-'
##                i+=1
            if str(bingo)=="GooD":
                racine.appendChild(element)

                try:
                    ixom = open(chainifile,'wb')
                    class TransPak:
                        def write(self, data):
                            
                            ixom.write(data.encode(str(Str_EncoD)))
                    try:
                        xim.writexml(TransPak(),encoding=str(Str_EncoD))
                    finally:
                        if zurp==True:
                            mess=""
                            zurp=False
                        mess=mess+ivar[j].get()+" ajoute dans "+nem+'.xml-'
                        ixom.close()
                except:
                    mess=mess+"erreur ecriture fichier"
            j+=1
                
            #ssmes=mezag(str(mess)

        return mess
    
    mess=upload("void")
    #zarb=mezag(mes)
    bsg.set(mess)
    Lu.config(state=NORMAL)
                  
ligen=4
xorbl={}
Fxorbl={}
Pause={}
Reprendre={}
Annuler={}
Terminer={}
Den={}
Dedu={}
Tache={}
Nem={}
Dossier={}
Debut={}
xarb=[]
GlurC={}
Temp={}
Voir={}
Fin={}
IncluD={}
LIncluD={}
AtChange={}
ATrIBChange={}
AtrIBChange={}
ListIncluD={}
chemFS= osdir + os.sep + "WokLaB"+os.sep+"StylisT"+os.sep+"StylisT.xml"
ixim = open(chemFS,'r')
xim = xml.dom.minidom.parse(ixim)
poz = xim.getElementsByTagName('Poste')
for paz in poz:
    nem=paz.getAttribute('Nam')
    back_Screen=paz.getAttribute('ScreenBackGrounD')
    Fen_backG=paz.getAttribute('ScreenBackGrounD')
bpoz = xim.getElementsByTagName('Fenetre')
for bpaz in bpoz:
    rsFen_backG=bpaz.getAttribute('Label_Fenetre_BackGroundColor')
    rwFen_backG=bpaz.getAttribute('LisT_Fenetre_BackGroundColor')
    Fen_foreG=bpaz.getAttribute('ForeGroundColor')
    Fen_bold=bpaz.getAttribute('Bold')
    Fen_font=bpaz.getAttribute('Font')
    Fen_fontSize=bpaz.getAttribute('FontSize')
    
rwSabL.config(background=rwFen_backG)
rlist.config(background=rwFen_backG)
rsSabL.config(background=rsFen_backG)
 
apoz = xim.getElementsByTagName('Action')
for apaz in apoz:
    Act_backG=apaz.getAttribute('BackGroundColor')
    Act_foreG=apaz.getAttribute('ForeGroundColor')
    Act_bold=apaz.getAttribute('Bold')
    Act_font=apaz.getAttribute('Font')
    Act_fontSize=apaz.getAttribute('FontSize')
 
bapoz = xim.getElementsByTagName('ActionButton')
for bapaz in bapoz:
    ActBut_backG=bapaz.getAttribute('BackGroundColor')
    ActBut_foreG=bapaz.getAttribute('ForeGroundColor')
    ActBut_bold=bapaz.getAttribute('Bold')
    ActBut_font=bapaz.getAttribute('Font')
    ActBut_fontSize=bapaz.getAttribute('FontSize')
 
lapoz = xim.getElementsByTagName('ActionLabel')
for lapaz in lapoz:
    ActLab_backG=lapaz.getAttribute('BackGroundColor')
    ActLab_foreG=lapaz.getAttribute('ForeGroundColor')
    ActLab_bold=lapaz.getAttribute('Bold')
    ActLab_font=lapaz.getAttribute('Font')
    ActLab_fontSize=lapaz.getAttribute('FontSize')
 
fpoz = xim.getElementsByTagName('Button')
for fpaz in fpoz:
    But_backG=fpaz.getAttribute('BackGroundColor')
    But_foreG=fpaz.getAttribute('ForeGroundColor')
    But_bold=fpaz.getAttribute('Bold')
    But_font=fpaz.getAttribute('Font')
    But_fontSize=fpaz.getAttribute('FontSize')
 
tpoz = xim.getElementsByTagName('Label')
for tpaz in tpoz:
    Lab_backG=tpaz.getAttribute('BackGroundColor')
    Lab_foreG=tpaz.getAttribute('ForeGroundColor')
    Lab_bold=tpaz.getAttribute('Bold')
    Lab_font=tpaz.getAttribute('Font')
    Lab_fontSize=tpaz.getAttribute('FontSize')


lpoz = xim.getElementsByTagName('LisT')
for lpaz in lpoz:
    Lst_backG=lpaz.getAttribute('BackGroundColor')
    Lst_foreG=lpaz.getAttribute('ForeGroundColor')
    Lst_bold=lpaz.getAttribute('Bold')
    Lst_font=lpaz.getAttribute('Font')
    Lst_fontSize=lpaz.getAttribute('FontSize')

mpoz = xim.getElementsByTagName('Message')
for mpaz in mpoz:
    Mes_backG=mpaz.getAttribute('BackGroundColor')
    Mes_foreG=mpaz.getAttribute('ForeGroundColor')
    Mes_bold=mpaz.getAttribute('Bold')
    Mes_font=mpaz.getAttribute('Font')
    Mes_fontSize=mpaz.getAttribute('FontSize')#,text= Lib_Report

ajax=Tix.Button(rsSabL, text=">>",command=upload_void,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold))
ajax.grid(row=2,column=3)
ixim.close()


chemFS= osdir + os.sep + "WokLaB"+os.sep+"StylisT"+os.sep+"EncoDinG.xml"
ixim = open(chemFS,'r')
xim = xml.dom.minidom.parse(ixim)
ixim.close()
lorpoz = xim.getElementsByTagName('Encoding')
for lapaz in lorpoz:
    Str_EncoD=lapaz.getAttribute('EncoD')
    #print (Str_EncoD)
chemFS= osdir + os.sep + "WokLaB"+os.sep+"StylisT"+os.sep+"LanGage.xml"
ixim = open(chemFS,'r')
xim = xml.dom.minidom.parse(ixim)
ixim.close()
lanpoz = xim.getElementsByTagName('SeleCT')
for lanpaz in lanpoz:
    lang=lanpaz.getAttribute('LanG')

lipoz = xim.getElementsByTagName(str(lang))
for lipaz in lipoz:
    Lib_Pause=lipaz.getAttribute('Pause')
    Lib_Continue=lipaz.getAttribute('Continue')
    Lib_Terminate=lipaz.getAttribute('Terminate')
    Lib_Cancel=lipaz.getAttribute('Cancel')
    Lib_New=lipaz.getAttribute('StartNewAction')
    Lib_Report=lipaz.getAttribute('Report')
    Lib_Read=lipaz.getAttribute('Read')
    Lib_TemporalQuery=lipaz.getAttribute('TemporalQuery')
    Lib_KeysQuery=lipaz.getAttribute('KeysQuery')
    Lib_ExportFolder=lipaz.getAttribute('eXuLFolder')
    Lib_FileQuery=lipaz.getAttribute('FileQuery')
    Lib_ListQuery=lipaz.getAttribute('ListQuery')
    Lib_Generate=lipaz.getAttribute('Generate')
    Lib_Total=lipaz.getAttribute('Total')
    Lib_Period=lipaz.getAttribute('Period')
    Lib_Month=lipaz.getAttribute('Month')
    Lib_Date=lipaz.getAttribute('Date')
    Lib_FileGenerated=lipaz.getAttribute('FileGenerated')
    Lib_Errors=lipaz.getAttribute('Errors')
    Lib_NonDeveloPFunction=lipaz.getAttribute('NonDeveloPFunction')
    Lib_ReportMessage=lipaz.getAttribute('ReportMessage')
    Lib_Change=lipaz.getAttribute('Lib_Change')
    Lib_Same=lipaz.getAttribute('Lib_Same')
    Lib_Total=lipaz.getAttribute('Lib_Total')
    Lib_Vue=lipaz.getAttribute('Lib_Vue')
Poste=nem 
ddSabL.title('Sablures')
#Label.font=('Tahoma', '14', 'normal')
pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
chainifile = osdir + os.sep + pathfin
ixim = open(chainifile,'r')
xim = xml.dom.minidom.parse(ixim)
ixim.close()
poz = xim.getElementsByTagName('IncluD')
ivar={}
iclentry={}
inclentry={}
j=1
i=0
m=0
n=0
GrouP={}
Node={}
mG=1
c=0
l=1
for paz in poz:
    mG+=1
    c+=1
    if c==2:
        c=0
        l=l+1
for paz in poz:
    nG=j
    nem=paz.getAttribute('NemFicXML')
    nodename=paz.getAttribute('NodeName')
    ivar[j]=Tix.StringVar(ddSabL)
    GrouP[j]=str(nodename)
    #print (str(GrouP[j]),nG, j)
    tip=paz.getAttribute('TiP')
    iclentry[j] = Tix.ComboBox(rsSabL, editable=1,variable=ivar[j], dropdown=1,width='6',background=str(Lst_backG))
    iclentry[j].grid(row=m+1,column=i)
    if str(tip)=="Master":
        mJ=j
        #print ('mJ',str(mJ))
        Tix.Entry(rsSabL,textvariable = ivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),width='64',font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold)).grid(row=4,column=3,sticky="w",columnspan=2,padx='8')
        Tix.Entry(rsSabL,textvariable = ivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold)).grid(row=m+l,column=i,padx='6')
    else:
        Tix.Entry(rsSabL,textvariable = ivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold)).grid(row=m+l,column=i,padx='6')

    pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nem+".xml"
    chainifile = pathfin
    ixim = open(chainifile,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    dpoz = xim.getElementsByTagName(nodename)
    for dpaz in dpoz:
        nem=dpaz.getAttribute('Nam')
        iclentry[j].insert(int(j),nem)
    
    if i==2:
        m=m+1
    if i==2:i=0
    else:i+=1
    j+=1
#for i in range(n,nG):s
##for paz in poz:
##    nG=j
##    nem=paz.getAttribute('NemFicXML')
##    nodename=paz.getAttribute('NodeName')
##    #for i in range(1,nG)
    
#===========================================================================================
Tix.Label(rsSabL,text=time.strftime('%c'),foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold)).grid(row=0,column=0,padx='8',sticky='e')
Begain = Tix.Button(rsSabL,text= Lib_New, command = Commencer,font=str(But_font)+' '+str(But_fontSize)+str(But_bold),foreground=str(But_foreG),background=str(But_backG))
Begain.grid(row=3,column=3,sticky='w')
bsg.set('Bienvenue Dans Sablures')
Tix.Label(rsSabL,text="(-)hhhh:mm:ss (dd/mm/yyyyyyyy)",foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold)).grid(row=3,column=5,padx='8',sticky='w')
Tix.Label(rsSabL,textvariable = bsg,foreground=str(Lab_foreG),background=str(Lab_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold)).grid(row=0,column=4,sticky='w',padx='8')
Tix.Label(rsSabL,textvariable = res,foreground=str(Lab_foreG),background=str(Lab_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold)).grid(row=3,column=0,padx='8')
repf=Tix.StringVar(ddSabL)
ReporTime=Tix.Entry(rsSabL,textvariable = repf,foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold))
ReporTime.grid(row=3,column=4,sticky="w")
screen=Tix.StringVar(ddSabL)
screen.set("")#str(back_Screen)
SCreeN=Tix.Label(rsSabL,text=screen.get(),width='40',background="white",font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold))
SCreeN.grid(row=1,column=4,columnspan=3,rowspan=2,sticky='e')

GlurL=Tix.Button(rsSabL,text= "0 0",command=recomAtribChange_task,font=str(But_font)+' '+str(But_fontSize)+str(But_bold),foreground=str(But_foreG),background=str(But_backG))
GlurL.grid(row=2,column=3,sticky='w')
def configurator():
    configscreen=Tix.Tk()
ConF=Tix.Button(rsSabL,text= "ConF",font=str(But_font)+' '+str(But_fontSize)+str(But_bold),foreground=str(But_foreG),background=str(But_backG))
ConF.grid(row=0,column=0,sticky='w')
def glur():
    def file_reinit():
        pass
    f=file_reinit()
def mezag(mess):
    bsg.set(mess)
    Lu.config(state=NORMAL)
def reportime():
    def formInT(zor):
        ResT=''
        for char in zor:
            if char=='"'or char=="'":ResT=ResT+' '
            else:ResT=ResT+char
        return ResT
    xorb=formInT(ivar[mJ].get())
    ivar[mJ].set(xorb)
    def verifiRT(rt):
        def verifint(char):
            vinte=True
            vint=False
            for colp in char:
                vint=False
                for chor in ['0','1','2','3','4','5','6','7','8','9']:
                    if str(chor) == str(colp):vint=True
                if vint==False:vinte=False
            return vinte
        vlorn=False
        if len(rt)<12:
            if rt[0]!='-':
                if verifint(rt[0:4])==True:#heures
                    if verifint(rt[5:7])==True:#minutes
                        if verifint(rt[8:10])==True:#secondes
                            vlorn=True
            else:
                if verifint(rt[1:5])==True:#heures
                    if verifint(rt[6:8])==True:#minutes
                        if verifint(rt[9:11])==True:#secondes
                            vlorn=True
        else:
            if rt[0]!='-':
                if verifint(rt[0:4])==True:#heures
                    if verifint(rt[5:7])==True:#minutes
                        if verifint(rt[8:10])==True:#secondes
                            if verifint(rt[11:13])==True:#jour
                                if verifint(rt[14:16])==True:#mois
                                    if verifint(rt[17:21])==True:#annee
                                        vlorn=True
            else:
                if verifint(rt[1:5])==True:#heures
                    if verifint(rt[6:8])==True:#minutes
                        if verifint(rt[9:11])==True:#secondes
                            if verifint(rt[12:14])==True:#jour
                                if verifint(rt[15:17])==True:#mois
                                    if verifint(rt[18:23])==True:#annee
                                        vlorn=True           
        return vlorn
    rt=repf.get()
    if verifiRT(rt):
        if len(rt)<12:
            irma=time.strftime('%Y,%m,%d,%H,%M,%S,%A,%j')
            rte=rt
        else:
            if rt[0]=='-':
                irma=rt[18:23]+','+rt[15:17]+','+rt[12:14]+',00,00,00'
                rte=rt[0:11]
            else:
                irma=rt[17:21]+','+rt[14:16]+','+rt[11:13]+',00,00,00'
                rte=rt[0:10]
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixim = open(chemFS,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        racine=xim.documentElement
        element =xim.createElement("CapitacTMemO")
        j=1
        for i in range(1,nG+1):
            element.setAttribute(str(GrouP[i]),ivar[i].get())
            j+=1
        element.setAttribute("DeguTemp",str(irma))
        element.setAttribute("ReporTime",str(rte))
        element.setAttribute("Tache","ReporTime")
        cronax=time.strftime('%c')
        racine.appendChild(element)
        ixom = open(chemFS,'wb')
        class TransPak:
            def write(self, data):
                
                ixom.write(data.encode(str(Str_EncoD)))
        xim.writexml(TransPak(),encoding=str(Str_EncoD))
        ixom.close()
        mezag(Lib_ReportMessage)
    else:mezag(Lib_Errors)
ReporButn=Tix.Button(rsSabL,text= Lib_Report,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = reportime)
ReporButn.grid(row=3,column=3,sticky='e')
ddSabL.config(background=str(Fen_backG))
sf.set('max')
nf.set('Sablure Exulium')
Lu=Tix.Button(rsSabL,text= Lib_Read,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = noalu)
Lu.grid(row=0,column=3)
pathfin = osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"OnAborT.xml"
chainifile = pathfin
ixim = open(chainifile,'r')
xim = xml.dom.minidom.parse(ixim)
ixim.close()
capitainememo=xim.getElementsByTagName('CapitacTMemO')
for paz in capitainememo:
    for i in range(1,nG+1):
        #tem=paz.getAttribute(str(GrouP[i]))
        ivar[i].set(paz.getAttribute(str(GrouP[i])))
        #print 'i=',i
    TempO=paz.getAttribute("PresenT")
    taco=paz.getAttribute("Tache")
    ReCommencer()
def GoLaB():
    targetDirectory = str(osdir)+"/WokLaB/"
    call(["open", targetDirectory])
gowok=Tix.Button(rsSabL,text= "WokLaB",foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold),command=GoLaB)
gowok.grid(row=0,column=1)
listache.pack(fill='both',expand=1)
def extractitiel():
    global azur,igor,ur, ar, glur,yr, j,oor,periode,gilda, enForme2, anr, zaclum,dosanr, tannee, tmois, orrer, errn,annee, an,mmois,lmois,mjour,ljour,PTannee, PTmois, PTjour,pannee, pan,pmmois,plmois,pmjour,pljour,tjour,GrouPieL,pivar,totalpart,Poste,iclentry
    ExTrCTM= Tix.Tk()
    ExTrCTM.title('ExULiUm')
    ExTrCTM.config(background=str(Fen_backG))
    #ExTrCTM.iconbitmap(bitmap= osdir + os.sep + "WokLaB"+os.sep+"StylisT"+os.sep+'TrsPicon.ico')
    def repExport():
        xormle=osdir + os.sep + "WokLaB"+ os.sep + "eXuL"
        os.system(r'start explorer.exe '+ str(xormle))
    RepExport=Tix.Button(ExTrCTM,text= Lib_ExportFolder,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = repExport)
    RepExport.grid(row=0,column=0)
    snf = Tix.StringVar()
    nsf = Tix.StringVar()
    pathfin = os.curdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
    chainifile = os.curdir + os.sep + pathfin
    ixim = open(chainifile,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    poz = xim.getElementsByTagName('IncluD')
    pivar={}
    iclentry={}
    j=1
    i=0
    m=1
    GrouPieL={}
    Node={}
    glur='OFF'
    totalisepar=Tix.Label(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),text=Lib_Total)
    totalisepar.grid(row=9,column=3)
    totalpart={}
    total={}

    for paz in poz:
        nG=j
        nem=paz.getAttribute('NemFicXML')
        nodename=paz.getAttribute('NodeName')
        pivar[j]=Tix.StringVar(ExTrCTM)
        GrouPieL[j]=str(nodename)
        
        #print str(GrouPieL[j]),nG, j
        tip=paz.getAttribute('TiP')
        iclentry[j] = Tix.ComboBox(ExTrCTM, editable=1,variable=pivar[j], dropdown=1,width='6')
        #iclentry[j].grid(row=m+1,column=i)
        if str(tip)=="Master":
            mJ=j
            #print 'mJ',str(mJ)
            inclentry[j]=Tix.Entry(ExTrCTM,textvariable = pivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold),width='54')
        else:
            totalpart[j]=Tix.StringVar(ExTrCTM)
            total[j]=Tix.Checkbutton(ExTrCTM,variable=totalpart[j],text=str(nem),foreground=str(Fen_foreG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),background=str(Fen_backG))
            total[j].grid(row=j+9,column=4)
            inclentry[j]=Tix.Entry(ExTrCTM,textvariable = pivar[j],foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Lab_font)+' '+str(Lab_fontSize)+str(Lab_bold))
        pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nem+".xml"
        chainifile = pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        dpoz = xim.getElementsByTagName(nodename)
        iclentry[j].insert(int(j),'Tous')
        #print 'fic=',nem
        igor=m+2
        if i==2:m=m+2
        if i==2:i=0
        else:i+=1
        j+=1
    azur=j
    def enForme2CleF():
        global glur,totalpart,total,iclentry,inclentry,azur
        if glur=='On':
            for i in range(1,j):
                iclentry[i].grid_forget()
            glur='OFF'
            CarreInCLuD.grid_forget()
            CarrePanaCT.grid_forget()

            for z in range(1,azur):
                iclentry[z].grid_forget()
                inclentry[z].grid_forget()
        else:
            CarreInCLuD.grid(row=1,column=5)
            CarrePanaCT.grid(row=1,column=3)
            m=1
            u=1
            i=0
            for z in range(1,azur):
                tip=paz.getAttribute('TiP')
                iclentry[z].grid(row=m+1,column=i)
                if str(tip)=="Master":
                    iclentry[z].grid(row=4,column=3,columnspan=4,padx='8')
                inclentry[z].grid(row=m+2,column=i,padx='8')
                igor=m+2
                if i==2:m=m+2
                if i==2:i=0
                else:i+=1
                u+=1
            glur='On'
    def enForme2D():
        global j,iclentry
        pathfin = "WokLaB"+os.sep+"InCluD"+os.sep+"InCluD.xml"
        chainifile = osdir + os.sep + pathfin
        ixim = open(chainifile,'r')
        xim = xml.dom.minidom.parse(ixim)
        ixim.close()
        poz = xim.getElementsByTagName('IncluD')
        for i in range(1,j):
            iclentry[i].subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
            iclentry[i].insert(0,'Tous')
        h=1
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            nodename=paz.getAttribute('NodeName')            
            pathfin = osdir + os.sep + "WokLaB"+os.sep+"InCluD"+os.sep+nem+".xml"
            chainifile = pathfin
            ixim = open(chainifile,'r')
            xim = xml.dom.minidom.parse(ixim)
            ixim.close()
            dpoz = xim.getElementsByTagName(nodename)
            u=1
            for dpaz in dpoz:
                xirn=dpaz.getAttribute('Nam')
                if xirn:iclentry[h].insert(int(u),xirn)
                #print h,u,xirn
                u=u+1
            h+=1
    def enForme2Charge():
        global mjour,ljour,PTmois,PTannee,poz,iclentry
        u=1
        for paz in poz:
            nem=paz.getAttribute('NemFicXML')
            for i in range(1,j):
                iclentry[i].subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
                iclentry[i].insert(0,'Tous')
            chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
            ixima = open(chemFS,'r')
            axim = xml.dom.minidom.parse(ixima)
            ixim.close()
            racine = axim.documentElement
            slap=axim.getElementsByTagName('CapitacTMemO')
        #===========
            h=1
            for slip in slap:
                #print 'rtu'
                for i in range(1,j):
                    xirn=slip.getAttribute(str(GrouPieL[i]))
                    if xirn:iclentry[i].insert(int(h),xirn)
                h+=1
            u+=1

           


    chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
    ixim = open(chemFS,'r')
    xim = xml.dom.minidom.parse(ixim)
    ixim.close()
    xtrTache={}
    xtrDossier={}
    xtrNems={}
    xtrTemp={}
    poz = xim.getElementsByTagName('CapitacTMemO')
    ur=0
    ar=0
    yr=0
    oor=0
    def listeNems(nom):
        global oor
        xurb=False
        for i in range(1,oor+1):
            if xtrNems[i] ==nom:xurb=True
        if xurb==False:
            oor+=1
            xtrNems[oor]=nom

    def listeTache(nom):
        global ur
        xurb=False
        for i in range(1,ur+1):
            if xtrTache[i] ==nom:xurb=True
        if xurb==False:
            ur+=1
            xtrTache[ur]=nom
    def listeDossier(nom):
        global ar
        xurb=False
        for i in range(1,ar+1):
            if xtrDossier[i] ==nom:xurb=True
        if xurb==False:
            ar+=1
            xtrDossier[ar]=nom
    def listerTemp(nom):
        global yr
        xurb=False
        for i in range(1,yr+1):
            if xtrTemp[i] ==nom:xurb=True
        if xurb==False:
            yr+=1
            xtrTemp[yr]=nom
    def printTache():
        global ur
        #for i in range(1,ur):
            #print xtrTache[i]         
        for depaz in poz:
##        jtm=depaz.getAttribute('DeguTemp')
##        nem=depaz.getAttribute('Nem')
##        listeNems(nem)
##        #listeTemp(jtm)
##        nam=depaz.getAttribute('Dossier')
##        listeDossier(nam)
            nom=depaz.getAttribute(GrouPieL[mJ])
            listeTache(nom)
    #printTache()

    #=====================================liste clients===========================================

    def genValide():
        annee1.grid_forget()
        mois.grid_forget()
        jour.grid_forget()
        pannee1.grid_forget()
        pmois.grid_forget()
        pjour.grid_forget()   
    def enFormeDeMois():
        annee1.grid(row=int(igor)+1,column=0)
        mois.grid(row=int(igor)+1,column=1)
        jour.grid_forget()
        pannee1.grid_forget()
        pmois.grid_forget()
        pjour.grid_forget()         
    def enFormeDeDate():
        annee1.grid(row=int(igor)+1,column=0)
        mois.grid(row=int(igor)+1,column=1)
        jour.grid(row=int(igor)+1,column=2)
        pannee1.grid_forget()
        pmois.grid_forget()
        pjour.grid_forget()         
    def enFormeDePeriode():
        annee1.grid(row=int(igor)+1,column=0)
        mois.grid(row=int(igor)+1,column=1)
        jour.grid(row=int(igor)+1,column=2)
        pannee1.grid(row=int(igor)+2,column=0)
        pmois.grid(row=int(igor)+2,column=1)
        pjour.grid(row=int(igor)+2,column=2)


    periode=Tix.StringVar(ExTrCTM)
    CarreTotal=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=periode,text=Lib_Total,value='total',command=genValide)
    CarrePeriode=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=periode,text=Lib_Period,value='periode',command=enFormeDePeriode)
    CarreMois=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=periode,text=Lib_Month,value='mois',command=enFormeDeMois)
    CarreDate=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=periode,text=Lib_Date,value='date',command=enFormeDeDate)

    ptannee=Tix.StringVar(ExTrCTM)
    pannee1 = Tix.ComboBox(ExTrCTM, editable=1,variable=ptannee, dropdown=1)
    ptmois=Tix.StringVar(ExTrCTM)
    pmois = Tix.ComboBox(ExTrCTM, editable=1,variable=ptmois, dropdown=1)
    ptjour=Tix.StringVar(ExTrCTM)
    pjour = Tix.ComboBox(ExTrCTM, editable=1,variable=ptjour, dropdown=1)


    tannee=Tix.StringVar(ExTrCTM)
    annee1 = Tix.ComboBox(ExTrCTM, editable=1,variable=tannee, dropdown=1)
    tmois=Tix.StringVar(ExTrCTM)
    mois = Tix.ComboBox(ExTrCTM, editable=1,variable=tmois, dropdown=1)
    tjour=Tix.StringVar(ExTrCTM)
    jour = Tix.ComboBox(ExTrCTM, editable=1,variable=tjour, dropdown=1)
    #======================================Periode===============================================
    gilda='POLUX'
    pan=1
    pannee={}
    pannee[0]=""
    #===========
    pmmois=1
    plmois={}
    plmois[0]=""
    #===========
    pmjour=1
    pljour={}
    pljour[0]=""
    #===========
    def plisteTempAnnee(temp):
        global pannee, pan,pmmois,plmois,pmjour,pljour
        def plisteAnnee(temp):
            global pannee, pan
            Trmbl=False
            for i in range(1,pan):
                if str(pannee[i])==str(temp[0:4]):Trmbl=True
            if Trmbl==False:
                pannee[pan]=temp[0:4]
                pan+=1
        plisteAnnee(temp)
    def plisteTempMois(temp):
        global pmmois,plmois
        def plisteMois(temp):
            global pmmois,plmois
            Trmbl=False
            for i in range(1,pmmois):
                if str(plmois[i])==str(temp[5:7]):Trmbl=True
            if Trmbl==False:
                plmois[pmmois]=str(temp[5:7])
                pmmois+=1
        plisteMois(temp)
    def plisteTempJour(temp):
        global pmjour,pljour
        def plisteJour(temp):
            global pmjour,pljour
            Trmbl=False
            for i in range(1,pmjour):
                if str(pljour[i])==str(temp[8:10]):Trmbl=True
            if Trmbl==False:
                pljour[pmjour]=temp[8:10]
                pmjour+=1
        plisteJour(temp) 
    def prelisteMois():
        global pmmois,plmois
        pmois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        #if str(periode)=='mois':mois.insert(0,'Tous')
        pMTmois=[]
        for i in range(1,pmmois):
            pMTmois.append(str(plmois[i]))
            pMTmois.sort(reverse=True)
        for i in range(1,pmmois):
            plMTmois=pMTmois.pop()
            pmois.insert(int(i),str(plMTmois))        

    def prelisteJour():
        global pmjour,pljour
        pjour.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        #if str(periode)=='mois':jour.insert(0,'Tous')
        pMTJour=[]
        for i in range(1,pmjour):
            pMTJour.append(str(pljour[i]))
            pMTJour.sort(reverse=True)
        for i in range(1,pmjour):
            plMTJour=pMTJour.pop()
            pjour.insert(int(i),str(plMTJour))
    def prelisteTempAnnee(ttannee):
        global pmmois,plmois
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
##        for i in range(1,pmmois):
##            plmois[i]=""
##        pmois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pmmois=1
        plmois={}
        plmois[0]=""
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            if (int(PTannee)==int(ttannee)and int(ttannee)==int(temp[0:4])and int(PTmois)<=int(temp[5:7]))or (int(PTannee)<int(ttannee)and int(ttannee)==int(temp[0:4])):plisteTempMois(temp)
            #print 'PTannee',str(PTannee),'ttannee',str(ttannee),'PTmois',str(PTmois),'mois',str(temp[5:7])
        prelisteMois()
    def prelisteAnnee(ttannee):
        global pannee,pan
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        pan=1
        pannee[0]=""
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            if int(ttannee)<=int(temp[0:4]):plisteTempAnnee(temp)
        pMTannee=[]
        for i in range(1,pan):
            pMTannee.append(str(pannee[i]))
            pMTannee.sort(reverse=True)
        for i in range(1,pan):
            plMTannee=pMTannee.pop()
            pannee1.insert(int(i),str(plMTannee))
            
    def prelisteTempMois(ttmois):
        global pmjour,pljour
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        pmjour=1
        pljour[0]=""
    #===========
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            if (int(PTmois)==int(ttmois) and str(ttmois)==str(temp[5:7])and int(PTjour)<int(temp[8:10]))or (int(PTmois)!=int(ttmois) and str(ttmois)==str(temp[5:7]))or(str(ttmois)==str(temp[5:7])and int(PTmois)<int(temp[5:7])):plisteTempJour(temp)
        prelisteJour()
#==============================================================================
    def prepareListesExport():
        global annee, an,mmois,lmois,mjour,ljour,mJ,GrouPieL
        def listeTache(xur):
            pass
        def listeTemp(temp):
            global annee, an,mmois,lmois,mjour,ljour
            def listeAnnee(temp):
                global annee, an
                Trmbl=False
                for i in range(1,an):
                    if str(annee[i])==str(temp[0:4]):Trmbl=True
                if Trmbl==False:
                    annee[an]=temp[0:4]
                    an+=1
            listeAnnee(temp)
            def listeMois(temp):
                global mmois,lmois
                Trmbl=False
                for i in range(1,mmois):
                    if str(lmois[i])==str(temp[5:7]):Trmbl=True
                if Trmbl==False:
                    lmois[mmois]=temp[5:7]
                    mmois+=1
            #listeMois(temp)
            def listeJour(temp):
                global mjour,ljour
                Trmbl=False
                for i in range(1,mjour):
                    if str(ljour[i])==str(temp[8:10]):Trmbl=True
                if Trmbl==False:
                    ljour[mjour]=temp[8:10]
                    mjour+=1
            #listeJour(temp) 
        def listeTempAnnee(temp):
            global annee, an,mmois,lmois,mjour,ljour
            def listeAnnee(temp):
                global annee, an
                Trmbl=False
                for i in range(1,an):
                    if str(annee[i])==str(temp[0:4]):Trmbl=True
                if Trmbl==False:
                    annee[an]=temp[0:4]
                    an+=1
            listeAnnee(temp)
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        an=1
        annee={}
        annee[0]=""
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            listeTempAnnee(temp)

##        pathfin = osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+"Clients.xml"
##        chainifile = pathfin
##        ixim = open(chainifile,'r')
##        xim = xml.dom.minidom.parse(ixim)
##        ixim.close()
##        poz = xim.getElementsByTagName('Client')
##        clf=StringVar(sabl)
        #if str(periode)=='mois':annee1.insert(0,'Toutes')
        MTannee=[]
        for i in range(1,an):
            MTannee.append(str(annee[i]))
            MTannee.sort(reverse=True)
        for i in range(1,an):
            lMTannee=MTannee.pop()
            annee1.insert(int(i),str(lMTannee)) 

    prepareListesExport()    
#================================Periode=================

                    
    def enFormeDePdf():
        pass
    def enFormeDeXml():
        pass
    def enFormeDeTxt():
        pass
    def enFormeEcran():
        pass

    #==================================================================================
    def enForme2PanaCT():
        global annee, an,mmois,lmois,mjour,ljour
        def listeTache(xur):
            pass
        def listeTemp(temp):
            global annee, an,mmois,lmois,mjour,ljour
            def listeAnnee(temp):
                global annee, an
                Trmbl=False
                for i in range(1,an):
                    if str(annee[i])==str(temp[0:4]):Trmbl=True
                if Trmbl==False:
                    annee[an]=temp[0:4]
                    an+=1
            listeAnnee(temp)
            def listeMois(temp):
                global mmois,lmois
                Trmbl=False
                for i in range(1,mmois):
                    if str(lmois[i])==str(temp[5:7]):Trmbl=True
                if Trmbl==False:
                    lmois[mmois]=temp[5:7]
                    mmois+=1
            #listeMois(temp)
            def listeJour(temp):
                global mjour,ljour
                Trmbl=False
                for i in range(1,mjour):
                    if str(ljour[i])==str(temp[8:10]):Trmbl=True
                if Trmbl==False:
                    ljour[mjour]=temp[8:10]
                    mjour+=1
            #listeJour(temp) 

            chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
            ixima = open(chemFS,'r')
            axim = xml.dom.minidom.parse(ixima)
            ixim.close()
            racine = axim.documentElement
            slap=axim.getElementsByTagName('CapitacTMemO')
            an=1
            annee={}
            annee[0]=""
            lmois[0]=""
            ljour[0]=""
            for slip in slap:
                #print 'rtu'
##                xirn=slip.getAttribute(str(GrouPieL[mJ]))
##                listeTache(xirn)
                temp=slip.getAttribute("DeguTemp")
                if len(temp)==17:
                    mlorn=temp
                    temp=""
                    temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
                listeTempAnnee(temp)        

    def enForme2TimeC():
        global gilda
        if gilda=='CASIMIR':
            CarreTotal.grid_forget()
            CarrePeriode.grid_forget()
            CarreMois.grid_forget()
            CarreDate.grid_forget()
            gilda='POLUX'
        else:
            CarreTotal.grid(row=5,column=4)
            CarrePeriode.grid(row=6,column=4)
            CarreMois.grid(row=7,column=4)
            CarreDate.grid(row=8,column=4)
            annee1.grid_forget()
            mois.grid_forget()
            jour.grid_forget()
            pannee1.grid_forget()
            pmois.grid_forget()
            pjour.grid_forget()   

    def listeTempMois(temp):
        global mmois,lmois
        def listeMois(temp):
            global mmois,lmois
            Trmbl=False
            for i in range(1,mmois):
                if str(lmois[i])==str(temp[5:7]):Trmbl=True
            if Trmbl==False:
                lmois[mmois]=temp[5:7]
                mmois+=1
        listeMois(temp)
    def listeTempJour(temp):
        global mjour,ljour
        def listeJour(temp):
            global mjour,ljour
            Trmbl=False
            for i in range(1,mjour):
                if str(ljour[i])==str(temp[8:10]):Trmbl=True
            if Trmbl==False:
                ljour[mjour]=temp[8:10]
                mjour+=1
        listeJour(temp) 
    def relisteMois():
        global mmois,lmois
        mois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        #if str(periode)=='mois':mois.insert(0,'Tous')
        MTmois=[]
        for i in range(1,mmois):
            MTmois.append(str(lmois[i]))
            MTmois.sort(reverse=True)
        for i in range(1,mmois):
            lMTmois=MTmois.pop()
            mois.insert(int(i),str(lMTmois))        

    def relisteJour():
        global mjour,ljour
        jour.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        #if str(periode)=='mois':jour.insert(0,'Tous')
        MTJour=[]
        for i in range(1,mjour):
            MTJour.append(str(ljour[i]))
            MTJour.sort(reverse=True)
        for i in range(1,mjour):
            lMTJour=MTJour.pop()
            jour.insert(int(i),str(lMTJour))
    def relisteTempAnnee(ttannee):
        global mmois,lmois,PTannee
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        mmois=1
        lmois={}
        lmois[0]=""
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            if str(ttannee)==str(temp[0:4]):listeTempMois(temp)
        relisteMois()
        pannee1.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pmois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pjour.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        PTannee=ttannee
        if str(periode.get())=='periode':prelisteAnnee(ttannee)
    def relisteTempMois(ttmois):
        global mjour,ljour,PTmois,PTannee
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixim.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        mjour=1
        ljour[0]=""
        
    #===========
        for slip in slap:
            #print 'rtu'
##            xirn=slip.getAttribute(str(GrouPieL[mJ]))
##            listeTache(xirn)
            temp=slip.getAttribute("DeguTemp")
            if len(temp)==17:
                mlorn=temp
                temp=""
                temp="20"+mlorn[6:8]+','+mlorn[0:2]+','+mlorn[3:5]+','+mlorn[6:8]+','+mlorn[9:11]+','+mlorn[12:14]+','+mlorn[15:17]
            if str(ttmois)==str(temp[5:7]):listeTempJour(temp)
        PTmois=ttmois
        relisteJour()
        pannee1.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pmois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pjour.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        if str(periode.get())=='periode':prelisteAnnee(PTannee)
    def retainJour(jjour):
        global PTjour
        PTjour=jjour
        pannee1.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pmois.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        pjour.subwidget_list['slistbox'].subwidget_list['listbox'].delete(0,Tix.END)
        if str(periode.get())=='periode':prelisteAnnee(PTannee)
    ptannee=Tix.StringVar(ExTrCTM)
    pannee1 = Tix.ComboBox(ExTrCTM, editable=1,variable=ptannee, dropdown=1,command=prelisteTempAnnee)
    ptmois=Tix.StringVar(ExTrCTM)
    pmois = Tix.ComboBox(ExTrCTM, editable=1,variable=ptmois, dropdown=1,command=prelisteTempMois)
    ptjour=Tix.StringVar(ExTrCTM)
    pjour = Tix.ComboBox(ExTrCTM, editable=1,variable=ptjour, dropdown=1)
    ljour={}
    ljour[0]=""
    tannee=Tix.StringVar(ExTrCTM)
    annee1 = Tix.ComboBox(ExTrCTM, editable=1,variable=tannee, dropdown=1,command=relisteTempAnnee)
    tmois=Tix.StringVar(ExTrCTM)
    mois = Tix.ComboBox(ExTrCTM, editable=1,variable=tmois, dropdown=1,command=relisteTempMois)
    tjour=Tix.StringVar(ExTrCTM)
    jour = Tix.ComboBox(ExTrCTM, editable=1,variable=tjour, dropdown=1,command=retainJour)
    enForme2=Tix.StringVar(ExTrCTM)
    CarrePdf=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=enForme2,text='PDF',value='pdf',command=enFormeDePdf)
    CarreXml=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=enForme2,text='XML',value='xml',command=enFormeDeXml)
    CarreTxt=Tix.Radiobutton(ExTrCTM, foreground=str(Fen_foreG),background=str(Fen_backG),font=str(Fen_font)+' '+str(Fen_fontSize)+str(Fen_bold),variable=enForme2,text='TXT',value='txt',command=enFormeDeTxt)

    CarrePdf.grid(row=5,column=5)
    CarreXml.grid(row=6,column=5)
    CarreTxt.grid(row=7,column=5)
    CarreInCLuD=Tix.Button(ExTrCTM, foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold),text=Lib_ListQuery,command=enForme2D)
    
    CarrePanaCT=Tix.Button(ExTrCTM, foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold),text=Lib_FileQuery,command=enForme2Charge)

    CarreTimeC=Tix.Button(ExTrCTM, foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold),text=Lib_TemporalQuery,command=enForme2TimeC)

    CarreBoPTimeC=Tix.Button(ExTrCTM, foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold),text=Lib_KeysQuery,command=enForme2CleF)
    CarreTimeC.grid(row=0,column=1)
    CarreBoPTimeC.grid(row=0,column=2)


    
    
    pannee1.config(command=prelisteTempAnnee)
    pmois .config(command=prelisteTempMois)
    annee1.config(command=relisteTempAnnee)
    mois.config(command=relisteTempMois)
    jour.config(command=retainJour)
    prepareListesExport()
    def mesag(mess):
        msg.config(text=mess)
        lubt.config(state="normal")
    orrer=False
    
    
    def Export():
        global j,anr,dosanr,expTache, tannee, tmois,tjour,periode,zaclum,j,orrer, errn,jir,pivar,GrouP,totalpart
        def listeTache(tach,libelG):
            global expTache, zaclum, anr,jir, dosanr
            Trmbl=False
            if not tach:tach="Taches non nommees"
            if tach=="":tach="Taches non nommees"
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if expTache[i,u]==tach:
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                Trmbl=True
            if Trmbl==False:
                Trmbol=False
                h=0
                g=0
                for i in range(0,dosanr):
                    h=0
                    g=0
                    Trmbol=False
                    for m in range(1,j):
                        if jir[m]==False:continue
                        h=h+1
                        if expTache[i,'libel',m]==libelG[m]:
                            g=g+1
                            Trmbol=True
                    if g==h and Trmbol==True:continue
                if g==h and Trmbol==True:
                    if expTache[i,'a']!=0:
                        anr=expTache[i,'a']+1
                        expTache[i,anr]=tach
                        expTache[i,'a']=anr
                        expTache[u,i,0]=False
                        expTache[u,i,'encours']='Debut'
                        expTache[i,anr,'cumul','heures']=0
                        expTache[i,anr,'cumul','minutes']=0
                        expTache[i,anr,'cumul','secondes']=0
                else:
                    i=dosanr               
                    expTache[i,1]=tach
                    expTache[i,'a']=1
                    expTache[i,1,0]=False
                    expTache[i,1,'cumul','heures']=0
                    expTache[i,1,'cumul','minutes']=0
                    expTache[i,1,'cumul','secondes']=0
                    for m in range(1,j):
                        if jir[m]==False:continue
                        expTache[i,'libel',m]=libelG[m]
                    dosanr+=1


        def listeDossier(dos,i):
            global expTache,zaclum
            Trmbl=False
            if dos=="":dos="Sans Reference"
            for n in range(0,zaclum[i]):
                if expTache[i,n]==dos:Trmbl=True
            if Trmbl==False:
                expTache[i,zaclum[i]]=dos
                expTache[i,zaclum[i],'a']=0
                zaclum[i]+=1
        def listeGrouP(tach,libelG):
            global expTache,zaclum,j
            Trmbl=False
            if tach=="":tach="Sans Reference"
            for n in range(1,j):
                if jir[n]==False:continue
                for i in range(0,zaclum[n]):
                    if expTache[i,'a']!=0:
                        for u in range(1,expTache[i,'a']+1):
                            if expTache[i,u]==tach:
                                for m in range(1,j):
                                    if jir[m]==False:continue
                                    expTache[i,'libel',m]=libelG[m]
        def debuTache(lorn,xirn,libelG):
            global expTache, dosanr,j,jir
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                expTache[i,u,'debut']=lorn
                                expTache[i,u,0]=True
                                expTache[i,u,'encours']='Debut'

        def verifiLorn(lorn):
            def verifint(char):                
                for colp in char:
                    vint=False
                    for chor in ['0','1','2','3','4','5','6','7','8','9']:
                        if str(chor) == str(colp):vint=True
                    if vint==False:break
                return vint
            vlorn=False
            if verifint(lorn[0:4])==True:#annee
                if verifint(lorn[5:7])==True:#mois
                    if verifint(lorn[8:10])==True:#jour
                        if verifint(lorn[11:13])==True:#heure
                            if verifint(lorn[14:16])==True:#minutes
                                if verifint(lorn[17:19])==True:#secondes
                                    vlorn=True
            return vlorn
        def totaliseTache(i,u,h,m,s):
                expTache[i,u,'cumul','heures']=expTache[i,u,'cumul','heures']+horu
                expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']+minu
                expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']+segu
        def inclusReport(i,u,mode,h,m,s):
            def totalTacheHeures(i,u,val):
                expTache[i,u,'cumul','heures']=expTache[i,u,'cumul','heures']+val
            def totalTacheMinuT(i,u,val):
                expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']+val
                while int(expTache[i,u,'cumul','minutes'])>60:
                    expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']-60
                    totalTacheHeures(i,u,1)                
            def totalTacheSegond(i,u,val):
                expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']+val
                while int(expTache[i,u,'cumul','secondes'])>60:
                    expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']-60
                    totalTacheMinuT(i,u,1)
            def minusTacheHeures(i,u,val):
                expTache[i,u,'cumul','heures']=expTache[i,u,'cumul','heures']-val
            def minusTacheMinuT(i,u,val):
                expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']-val
                while int(expTache[i,u,'cumul','minutes'])>60:
                    expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']-60
                    totalTacheHeures(i,u,1)                
            def minusTacheSegond(i,u,val):
                expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']-val
                while int(expTache[i,u,'cumul','secondes'])>60:
                    expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']-60
                    totalTacheMinuT(i,u,1)
            if mode=='+':
                totalTacheSegond(i,u,s)
                totalTacheMinuT(i,u,m)
                totalTacheHeures(i,u,h)
            elif mode=='-':
                minusTacheSegond(i,u,s)
                minusTacheMinuT(i,u,m)
                minusTacheHeures(i,u,h)                
        def calculDuree(i,u,lorn,clorn):
            def totalTacheHeures(i,u,val):
                expTache[i,u,'cumul','heures']=expTache[i,u,'cumul','heures']+val
            def totalTacheMinuT(i,u,val):
                expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']+val
                while int(expTache[i,u,'cumul','minutes'])>60:
                    expTache[i,u,'cumul','minutes']=expTache[i,u,'cumul','minutes']-60
                    totalTacheHeures(i,u,1)                
            def totalTacheSegond(i,u,val):
                expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']+val
                while int(expTache[i,u,'cumul','secondes'])>60:
                    expTache[i,u,'cumul','secondes']=expTache[i,u,'cumul','secondes']-60
                    totalTacheMinuT(i,u,1)
            def verifint(char):
                vint=False
                Res=True
                if char:                    
                    for colp in str(char):
                        vint=False
                        for chor in ['0','1','2','3','4','5','6','7','8','9']:
                            if str(chor) == str(colp):vint=True
                        if vint!=True:Res=False
                            
                return Res
            joru=0
            horu=0
            minu=0
            if lorn[0:4]!=clorn[0:4]:
                tranu=False
                anu=int(clorn[0:4])-int(lorn[0:4])
                if anu>1:
                    monu=int(lorn[5:7])+(12*int(anu))
                if anu==1:monu=int(lorn[5:7])+12
            else:
                anu=0
                monu=0
            if lorn[5:7]!=clorn[5:7]:
                if anu==1:
                    Mlorn[5:7]=int(lorn[5:7])+(12*int(anu))
                    monu=int(Mlorn[5:7])-int(clorn[5:7])
                if anu>1:
                    Mlorn[5:7]=int(lorn[5:7])+12
                    monu=int(Mlorn[5:7])-int(clorn[5:7])
                else:monu=int(lorn[5:7])-int(clorn[5:7])
            else: monu=0
            if monu>1:
                i=1
                while i<monu:
                    gter=calendar.monthrange(int(lorn[0:4]),int(lorn[5:7])-i)
                    joru=int(joru)+int(gter[1])
                    i+=1
                    #print 'gter=',gter
                gter=calendar.monthrange(int(lorn[0:4]),int(lorn[5:7]))                             
                joru=int(lorn[8:10])+int(gter[1])                                                                            
            else:joru=int(lorn[8:10])
            if monu==1:
                gter=calendar.monthrange(int(lorn[0:4]),int(lorn[5:7]))
                joru=int(lorn[8:10])+int(gter[1])
                #print 'gter=',str(gter)
            if lorn[8:10]!=clorn[8:10]:
                joru=int(lorn[8:10])-int(clorn[8:10])
                if joru>=1:
                    horu=horu+24
                    if lorn[17:19]!=clorn[17:19]:
                        if int(lorn[17:19])-int(clorn[17:19])<0:
                            segu=(int(lorn[17:19])+60)-int(clorn[17:19])
                            if minu==0:
                                minu=59
                                horu=int(horu)-1
                            else:minu=int(minu)-1
                        else:segu=int(lorn[17:19])-int(clorn[17:19])
                    else: segu=0
                    #print 'segu=',segu
                    if segu>0 and verifint(segu):totalTacheSegond(i,u,segu)
                    if lorn[14:16]!=clorn[14:16]:
                        if int(lorn[14:16])-int(clorn[14:16])<0:
                            minu=(int(lorn[14:16])+60)-int(clorn[14:16])
                            horu=int(horu)-1
                        else:minu=int(lorn[14:16])-int(clorn[14:16])
                    else: minu=0
                    if minu>0 and verifint(minu):totalTacheMinuT(i,u,minu)
                    if lorn[11:13]!=clorn[11:13]:
                        if horu>=1:
                            if (int(lorn[11:13])-int(clorn[11:13]))<0:
                                gter=calendar.monthrange(int(lorn[0:4]),int(lorn[5:7])-1)
                                #print 'gter=',gter,gter[1]
                                horu=int(horu)+(int(lorn[11:13])+int(gter[1])-int(clorn[11:13]))
                            elif (int(lorn[11:13])-int(clorn[11:13]))>=0:
                                horu=int(horu)+(int(lorn[11:13])-int(clorn[11:13])) 
                        else:
                            if (int(lorn[11:13])-int(clorn[11:13]))<0:
                                gter=calendar.monthrange(int(lorn[0:4]),int(lorn[5:7])-1)
                                horu=(int(lorn[11:13])+int(gter[1])-int(clorn[11:13]))
                            elif (int(lorn[11:13])-int(clorn[11:13]))>=0:
                                horu=(int(lorn[11:13])-int(clorn[11:13]))    
                    if joru>1:
                        horu=int(horu)+((int(joru)-1)*24)
                    if horu>0 and verifint(horu):totalTacheHeures(i,u,horu)
                    #print 'horu',horu,'minu',minu,'segu',segu
            else:
                if lorn[17:19]!=clorn[17:19]:
                    if int(lorn[17:19])-int(clorn[17:19])<0:
                        segu=(int(lorn[17:19])+60)-int(clorn[17:19])
                        if minu==0:
                            minu=59
                            horu=horu-1
                        else:minu=minu-1
                    else:segu=int(lorn[17:19])-int(clorn[17:19])
                else: segu=0
                if segu>0 and verifint(segu):totalTacheSegond(i,u,segu)
                if lorn[14:16]!=clorn[14:16]:
                    if int(lorn[14:16])-int(clorn[14:16])<0:
                        minu=(int(lorn[14:16])+60)-int(clorn[14:16])
                        horu=int(horu)-1
                    else:minu=int(lorn[14:16])-int(clorn[14:16])
                else: minu=0
                if minu>0 and verifint(minu):totalTacheMinuT(i,u,minu)
                if lorn[11:13]!=clorn[11:13]:
                    if horu>=1:horu=int(horu)+(int(lorn[11:13])-int(clorn[11:13])) 
                    else:horu=(int(lorn[11:13])-int(clorn[11:13]))    
                if horu>0 and verifint(horu):totalTacheHeures(i,u,horu)
                #print 'horu',horu,'minu',minu,'segu',segu
        def poTache(lorn,xirn,libelG):
            global expTache, dosanr, anr, orrer, errn,jir
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                if expTache[i,'a']==0:
                                    expTache[i,u,'debut']=lorn
                                    expTache[i,u,0]=True
                                    expTache[i,u,'encours']='Pause'
                                    orrer=True
                                    errn+=1
                                try:
                                    if expTache[i,u,0]==True:
                                        clorn=expTache[i,u,'debut']
                                        calculDuree(i,u,lorn,clorn)

                                        expTache[i,u,'encours']='Pause'
                                        expTache[i,u,'Pause']=lorn
                                        expTache[i,u,0]=False
                                    elif expTache[i,u,0]==False:
                                        if str(expTache[i,u,'encours'])=='Reprise':
                                            clorn=expTache[i,u,'reprise']
                                            calculDuree(i,u,lorn,clorn)

                                            expTache[i,u,'encours']='Pause'
                                            expTache[i,u,'Pause']=lorn                                
                                        elif str(expTache[i,u,'encours'])=='Pause':
                                            orrer=True
                                            errn+=1
                                except:
                                    orrer=True
                                    errn+=1                            
        def poReprise(lorn,xirn,libelG):
            global expTache, dosanr, anr, orrer, errn,jir
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                if expTache[i,'a']==0:
                                    orrer=True
                                    errn+=1
                                    expTache[i,u,'debut']=lorn
                                    expTache[i,u,0]=True
                                    expTache[i,u,'encours']='Reprise'
                                try:
                                    if expTache[i,u,0]==True:
                                        orrer=True
                                        errn+=1
                                        expTache[i,u,'encours']='Reprise'
                                        expTache[i,u,'reprise']=lorn
                                    elif expTache[i,'a']>0:
                                        expTache[i,u,0]=False
                                        if str(expTache[i,u,'encours'])=='Pause':
                                            expTache[i,u,'encours']='Reprise'
                                            expTache[i,u,'reprise']=lorn                                


                                        elif str(expTache[i,u,'encours'])=='Reprise':
                                            expTache[i,u,'encours']='Reprise'
                                            expTache[i,u,'reprise']=lorn
                                            orrer=True
                                            errn+=1
                                except:
                                    orrer=True
                                    errn+=1

        def poTerminer(lorn,xirn,libelG):
            global expTache, dosanr, anr, orrer, errn,jir
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                try:
                                    if expTache[i,u,0]==True:
                                            horu=0
                                            clorn=expTache[i,u,'debut']
                                            calculDuree(i,u,lorn,clorn)
                                            expTache[i,u,'encours']='Terminer'
                                            expTache[i,u,'Terminer']=lorn

                                    elif expTache[i,u,0]==False:
                                        if str(expTache[i,u,'encours'])=='Reprise':
                                            horu=0
                                            clorn=expTache[i,u,'reprise']
                                            calculDuree(i,u,lorn,clorn)
                                        expTache[i,u,'encours']='Terminer'
                                        expTache[i,u,'Terminer']=lorn
                                    if str(expTache[i,u,'encours'])=='Pause':
                                        lorn=expTache[i,u,'Pause']
                                        expTache[i,u,'encours']='Terminer'
                                        expTache[i,u,'Reprise']=lorn
                                except:
                                    orrer=True
                                    errn+=1                                    
        def poAnnuler(lorn,xirn,libelG):
            global expTache, dosanr, anr,jir
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                if expTache[i,'a']==0:
                                    expTache[i,u,'encours']='Terminer'
                                    expTache[i,u,'Terminer']=lorn

                                try:
                                    if expTache[i,u,0]==True:
                                        if str(expTache[i,u,'encours'])=='Reprise':
                                            lorn=expTache[i,u,'reprise']
                                            expTache[i,u,'encours']='Terminer'
                                            expTache[i,u,'Annuler']=lorn
                                        if str(expTache[i,u,'encours'])=='Pause':
                                            lorn=expTache[i,u,'Pause']
                                            expTache[i,u,'encours']='Terminer'
                                            expTache[i,u,'Annuler']=lorn
                                        if str(expTache[i,u,'encours'])=='Terminer':
                                            lorn=expTache[i,u,'debut']
                                except:
                                    expTache[i,u,'encours']='Terminer'
                                    expTache[i,u,'Terminer']=lorn

        def poReporTime(lorn,xirn,libelG):
            global expTache,jir, dosanr
            for i in range(0,dosanr):
                if expTache[i,'a']!=0:
                    for u in range(1,expTache[i,'a']+1):
                        if (expTache[i,u]==xirn):
                            h=0
                            g=0
                            for m in range(1,j):
                                if jir[m]==False:continue
                                h=h+1
                                if expTache[i,'libel',m]==libelG[m]:
                                    g=g+1
                            if g==h:
                                if lorn[0]!='-':inclusReport(i,u,'+',int(lorn[0:4]),int(lorn[5:7]),int(lorn[8:10]))
                                else:inclusReport(i,u,'-',int(lorn[1:5]),int(lorn[6:8]),int(lorn[9:11]))

        def verifiReporTime(rt):
            def verifint(char):
                vinte=True
                vint=False
                for colp in char:
                    vint=False
                    for chor in ['0','1','2','3','4','5','6','7','8','9']:
                        if str(chor) == str(colp):vint=True
                    if vint==False:vinte=False
                return vinte
            vlorn=False
            if rt[0]!='-':
                if verifint(rt[0:4])==True:#heures
                    if verifint(rt[5:7])==True:#minutes
                        if verifint(rt[8:10])==True:#secondes
                            vlorn=True
            else:
                if verifint(rt[1:5])==True:#heures
                    if verifint(rt[6:8])==True:#minutes
                        if verifint(rt[9:11])==True:#secondes
                            vlorn=True
            return vlorn
        def metEnFormeRT(rt):
            def verifint(char):
                vint=False
                for colp in char:
                    vint=False
                    for chor in ['0','1','2','3','4','5','6','7','8','9']:
                        if str(chor) == str(colp):vint=True
                    if vint==False:continue
                return vint
            if verifint(rt[0:2]):
                if verifint(rt[3:5]):
                    hur=int(rt[0:2])*24+int(rt[3:5])
                    #print 'hur=',hur
                    if hur<10:
                        hur='000'+str(hur)
                    elif hur<100:
                        hur='00'+str(hur)
                    elif hur<1000:
                        hur='0'+str(hur)
                    if verifint(rt[6:8]):
                        tr=str(hur)+':'+str(rt[6:8])+':00'
                    #print 'rtttttttttttttttttttttttt=',tr,rt
            return tr
        period=periode.get()
        #print 'wirrgl',str(period)
        dosanr=0
        anr=0
        expTache={}
        enfore=enForme2.get()
        chemFS= osdir + os.sep + "WokLaB"+os.sep+"Wok"+os.sep+str(Poste)+"ChronoX.xml"
        ixima = open(chemFS,'r')
        axim = xml.dom.minidom.parse(ixima)
        ixima.close()
        racine = axim.documentElement
        slap=axim.getElementsByTagName('CapitacTMemO')
        i=0
        #08/25/07 15:30:02
        dosanr=0
        zaclum={}
        for i in range(1,j):
            zaclum[i]=0
        anr=0
        expTache={}
        libelG={}
        errn=0
        glorng={}
        jir={}
        if pivar[mJ].get()!='':FicNam=pivar[mJ].get()
        else:FicNam=''
        if str(period)=='mois':FicNam=FicNam+str(tannee.get())+str(tmois.get())
        if str(period)=='date':FicNam=FicNam+str(tannee.get())+str(tmois.get())+str(tjour.get())
        if str(period)=='periode':FicNam=FicNam+str(tannee.get())+str(tmois.get())+str(tjour.get())+'-'+str(ptannee.get())+str(ptmois.get())+str(ptjour)
        if str(period)=='total':FicNam=FicNam+'ChronoX-Total'
        for slip in slap:           
            lorn=slip.getAttribute("DeguTemp")
            TrmboP=False
            for t in range(1,j):
                libelG[t]=""
                if pivar[t].get()!='':
                    if pivar[t].get()!='Tous':
                        AtrB=slip.getAttribute(str(GrouP[t]))
                        if pivar[t].get()!=AtrB :
                            TrmboP=True
            if TrmboP==True:continue
            #print 'lenlorn=',len(lorn),str(lorn)
            if len(lorn)==17:
                mlorn=lorn
                lorn=""
                lorn="20"+str(mlorn[6:8])+','+str(mlorn[0:2])+','+str(mlorn[3:5])+','+str(mlorn[9:11])+','+str(mlorn[12:14])+','+str(mlorn[15:17])
            #print 'rtu',lorn[0:4],lorn[5:7],lorn[8:10],lorn[11:13],lorn[14:16],lorn[17:19]
            if verifiLorn(str(lorn))==False:continue
            if str(period)=='mois':
                if (str(lorn[0:4])!=str(tannee.get()))or(str(lorn[5:7])!=str(tmois.get())):continue
            if str(period)=='date':
                if (str(lorn[0:4])!=str(tannee.get()))or(str(lorn[5:7])!=str(tmois.get()))or(str(lorn[8:10])!=str(tjour.get())):continue
            if str(period)=='periode':
                if (str(lorn[0:4])<str(tannee.get()))or (str(lorn[0:4])>str(ptannee.get()))or(str(lorn[0:4])==str(tannee.get())and str(lorn[5:7])<str(tmois.get()))or(str(lorn[0:4])>str(ptannee.get())and str(lorn[5:7])>str(ptmois.get()))or(str(lorn[0:4])==str(tannee.get())and str(lorn[5:7])==str(tmois.get())and str(lorn[8:10])<str(tjour.get()))or(str(lorn[0:4])==str(ptannee.get())and str(lorn[5:7])==str(ptmois.get())and str(lorn[8:10])>str(ptjour.get())):continue

            xingl=lorn
            for i in range(1,j):
                jir[i]=False
                if int(i)==int(mJ):
                    xirn=slip.getAttribute(str(GrouPieL[mJ]))
                    #tach=xirn
                    continue
                if str(totalpart[i].get())=='1':
                    jir[i]=True
                    libelG[i]=slip.getAttribute(str(GrouPieL[i]))
                    #if libelG[i]:listeDossier(libelG[i],i)
            #listeGrouPieL(tach,libelG)
            if xirn:
                #print 'gagne'
                listeTache(xirn,libelG)
                tacotac=slip.getAttribute("Tache")
                if str(tacotac)=="DebutTache":
                    debuTache(lorn,xirn,libelG)
                if str(tacotac)=="Pause":
                    if str(xingl):
                        poTache(xingl,xirn,libelG)
                if str(tacotac)=="Reprise"or str(tacotac)=="Reprendre":
                    if str(xingl):
                        poReprise(xingl,xirn,libelG)
                if str(tacotac)=="Annuler":
                    if str(xingl):
                        poAnnuler(xingl,xirn,libelG)
                if str(tacotac)=="Terminer":
                    if str(xingl):
                        poTerminer(xingl,xirn,libelG)
                if str(tacotac)=="ReporTime":
                    xingl=slip.getAttribute("ReporTime")
                    
                    if verifiReporTime(xingl)==True:
                        poReporTime(xingl,xirn,libelG)
                    else:
                        #print 'potache----------------------------------------------------------------'
                        xinl=metEnFormeRT(xingl)
                        if verifiReporTime(xinl)==True:
                            poReporTime(xinl,xirn,libelG)

                                #===========================================

        if str(enfore)=='xml':
            chemFS= osdir + os.sep + "WokLaB"+os.sep+"eXuL"+os.sep+"ExportSafe.xml"
            chemFSF= osdir + os.sep + "WokLaB"+os.sep+"eXuL"+os.sep+str(FicNam)+".xml"
            ixim = open(chemFS,'r')
            xim = xml.dom.minidom.parse(ixim)
            ixim.close()
            temp=""
            racine=xim.documentElement

            def TtotalTotalMinuT():
                if int(totalTotal['minutes'])>60:
                    while int(totalTotal['minutes'])>60:
                        totalTotal['minutes']= int(totalTotal['minutes'])-60
                        totalTotalHeures(1)
            def TtotalTotalSegond():
                if int(totalTotal['secondes'])>60:
                    while int(totalTotal['secondes'])>60:
                        totalTotal['secondes']=int(totalTotal['secondes'])-60
                        totalTotalMinuT(1)    


            def TtotalDossierMinuT(i):
                if int(totalDossier[i,'minutes'])>60:
                    while int(totalDossier[i,'minutes'])>60:
                        totalDossier[i,'minutes']=int(totalDossier[i,'minutes'])-60
                        totalDossierHeures(1,i)
                
            def TtotalDossierSegond(i):
                if int(totalDossier[i,'secondes'])>60:
                    while int(totalDossier[i,'secondes'])>60:
                        totalDossier[i,'secondes']=int(totalDossier[i,'secondes'])-60
                        totalDossierMinuT(1,i)
            def totalTotalHeures(val):
                totalTotal['heures']= int(totalTotal['heures'])+val
            def totalTotalMinuT(val):
                totalTotal['minutes']= int(totalTotal['minutes'])+val

            def totalTotalSegond(val):
                totalTotal['secondes']=int(totalTotal['secondes'])+val


            def totalDossierHeures(val,i):
                totalDossier[i,'heures']= totalDossier[i,'heures']+val
                totalTotalHeures(val)
            def totalDossierMinuT(val,i):
                totalDossier[i,'minutes']= totalDossier[i,'minutes']+val
                totalTotalMinuT(val)
            def totalDossierSegond(val,i):
                totalDossier[i,'secondes']= int(totalDossier[i,'secondes'])+val
                totalTotalSegond(val)
            def enForm2D(val):
                if val<10:
                    val='0'+str(val)
                return val
            totalDossier={}
            totalTotal={}
            totalTotal['heures']=0
            totalTotal['minutes']=0
            totalTotal['secondes']=0
            element={}
            for i in range(0,dosanr):
            #print 'dosanr=',dosanr
                totalDossier[i,'heures']=0
                totalDossier[i,'minutes']=0
                totalDossier[i,'secondes']=0
                libelDossier=""
                libelTache=""
                for u in range(1,expTache[i,'a']+1):
                    #print 'dosanr=', dosanr,'exptache=',expTache[u,'a'],'anr=',anr,'i=',i,'u=',u
                    libelTache=expTache[i,u]
                    temp=""
                    if expTache[i,'a']>=1:
                        if expTache[i,u,'cumul','heures']!=0:
                            
                            totalDossierHeures(int(expTache[i,u,'cumul','heures']),i)
                       
                        if expTache[i,u,'cumul','minutes']!=0:

                            totalDossierMinuT(int(expTache[i,u,'cumul','minutes']),i)
                        
                        if expTache[i,u,'cumul','secondes']!=0:

                            totalDossierSegond(int(expTache[i,u,'cumul','secondes']),i)                        


                        if expTache[i,u,'cumul','heures']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','heures']))+':'
                        else:temp=str(temp)+'00:'
                        if expTache[i,u,'cumul','minutes']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','minutes']))+':'
                        else:temp=str(temp)+'00:'
                        if expTache[i,u,'cumul','secondes']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','secondes']))
                        else:temp=str(temp)+'00'
                        #im[i]=i
                        element =xim.createElement("TotalTache")
                        for t in range(1,j):
                            if jir[t]==False:continue                    
                            element.setAttribute(str(GrouPieL[t]),expTache[i,'libel',t])
                        if libelTache:element.setAttribute("Tache",expTache[i,u])
                        if temp:element.setAttribute("Duree",temp)
                        racine.appendChild(element)
                    else:temp='00:00:00' 
                TtotalDossierSegond(i)
                TtotalDossierMinuT(i)
                if expTache[i,'a']>0:
                    element =xim.createElement("TotalElement")
                    for t in range(1,j):
                        if jir[t]==False:continue                    
                        element.setAttribute(str(GrouPieL[t]),expTache[i,'libel',t])
                    element.setAttribute("Duree",str(enForm2D(totalDossier[i,'heures']))+':'+str(enForm2D(totalDossier[i,'minutes']))+':'+str(enForm2D(totalDossier[i,'secondes'])))
                    racine.appendChild(element)
            TtotalTotalSegond()
            TtotalTotalMinuT()
            element =xim.createElement("Total")
            element.setAttribute("Duree",str(enForm2D(totalTotal['heures']))+'h:'+str(enForm2D(totalTotal['minutes']))+'mn:'+str(enForm2D(totalTotal['secondes']))+'s')
            racine.appendChild(element)                     
            ixom = open(chemFSF,'wb')
            class TransPak:
                def write(self, data):
                    
                    ixom.write(data.encode(str(Str_EncoD)))
            xim.writexml(TransPak(),encoding=str(Str_EncoD))
            ixom.close()
            if int(errn)>0:mesag(Lib_FileGenerated +', '+str(errn)+' '+Lib_Errors)
            else:mesag(Lib_FileGenerated)
            errn=0
        elif str(enfore)=='txt':
            chemFS= osdir + os.sep + "WokLaB"+os.sep+"eXuL"+os.sep+str(FicNam)+"_group.csv"
            TchemFSF= osdir + os.sep + "WokLaB"+os.sep+"eXuL"+os.sep+str(FicNam)+"_tasks.csv"
            temp=""

            def TtotalTotalMinuT():
                if int(totalTotal['minutes'])>60:
                    while int(totalTotal['minutes'])>60:
                        totalTotal['minutes']= int(totalTotal['minutes'])-60
                        totalTotalHeures(1)
            def TtotalTotalSegond():
                if int(totalTotal['secondes'])>60:
                    while int(totalTotal['secondes'])>60:
                        totalTotal['secondes']=int(totalTotal['secondes'])-60
                        totalTotalMinuT(1)    


            def TtotalDossierMinuT(i):
                if int(totalDossier[i,'minutes'])>60:
                    while int(totalDossier[i,'minutes'])>60:
                        totalDossier[i,'minutes']=int(totalDossier[i,'minutes'])-60
                        totalDossierHeures(1,i)
                
            def TtotalDossierSegond(i):
                if int(totalDossier[i,'secondes'])>60:
                    while int(totalDossier[i,'secondes'])>60:
                        totalDossier[i,'secondes']=int(totalDossier[i,'secondes'])-60
                        totalDossierMinuT(1,i)
            def totalTotalHeures(val):
                totalTotal['heures']= int(totalTotal['heures'])+val
            def totalTotalMinuT(val):
                totalTotal['minutes']= int(totalTotal['minutes'])+val

            def totalTotalSegond(val):
                totalTotal['secondes']=int(totalTotal['secondes'])+val


            def totalDossierHeures(val,i):
                totalDossier[i,'heures']= totalDossier[i,'heures']+val
                totalTotalHeures(val)
            def totalDossierMinuT(val,i):
                totalDossier[i,'minutes']= totalDossier[i,'minutes']+val
                totalTotalMinuT(val)
            def totalDossierSegond(val,i):
                totalDossier[i,'secondes']= int(totalDossier[i,'secondes'])+val
                totalTotalSegond(val)
            def enForm2D(val):
                if val<10:
                    val='0'+str(val)
                return val
            totalDossier={}
            totalTotal={}
            totalTotal['heures']=0
            totalTotal['minutes']=0
            totalTotal['secondes']=0
            element={}
            Tresad=""
            resac=""

            for t in range(1,j):
                if jir[t]==False:continue
                Tresad=str(Tresad)+str(GrouPieL[t])+'\t'
            Tresad=str(Tresad)+'Tache'+'\t'
            Tresad=str(Tresad)+'Temp'+'\n'


            for t in range(1,j):
                if jir[t]==False:continue
                resac=str(resac)+str(GrouPieL[t])+'\t'
            resac=str(resac)+'Duree'
            resac=str(resac)+'\n'
            
            for i in range(0,dosanr):
            #print 'dosanr=',dosanr
                totalDossier[i,'heures']=0
                totalDossier[i,'minutes']=0
                totalDossier[i,'secondes']=0
                libelDossier=""
                libelTache=""
                for u in range(1,expTache[i,'a']+1):
                    #print 'dosanr=', dosanr,'exptache=',expTache[u,'a'],'anr=',anr,'i=',i,'u=',u
                    libelTache=expTache[i,u]
                    temp=""
                    if expTache[i,'a']>=1:
                        if expTache[i,u,'cumul','heures']!=0:
                            
                            totalDossierHeures(int(expTache[i,u,'cumul','heures']),i)
                       
                        if expTache[i,u,'cumul','minutes']!=0:

                            totalDossierMinuT(int(expTache[i,u,'cumul','minutes']),i)
                        
                        if expTache[i,u,'cumul','secondes']!=0:

                            totalDossierSegond(int(expTache[i,u,'cumul','secondes']),i)                        


                        if expTache[i,u,'cumul','heures']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','heures']))+':'
                        else:temp=str(temp)+'00:'
                        if expTache[i,u,'cumul','minutes']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','minutes']))+':'
                        else:temp=str(temp)+'00:'
                        if expTache[i,u,'cumul','secondes']!=0:temp=str(temp)+str(enForm2D(expTache[i,u,'cumul','secondes']))
                        else:temp=str(temp)+'00'
                        #im[i]=i
                        for t in range(1,j):
                            if jir[t]==False:continue
                            Tresad=Tresad+expTache[i,'libel',t]+'\t'
                        Tresad=Tresad+expTache[i,u]+'\t'
                        Tresad=Tresad+temp+'\t'
                        Tresad=Tresad+'\n'

                    else:temp='00:00:00' 
                TtotalDossierSegond(i)
                TtotalDossierMinuT(i)
                if expTache[i,'a']>0:
                    for t in range(1,j):
                        if jir[t]==False:continue
                        resac=resac+expTache[i,'libel',t]+'\t'
                resac=str(resac)+str(enForm2D(totalDossier[i,'heures']))+':'+str(enForm2D(totalDossier[i,'minutes']))+':'+str(enForm2D(totalDossier[i,'secondes']))
                resac=resac+'\n'

            try:
                    def Twrite(data):
                        TschemFSF.write(data.encode(str(Str_EncoD)))
                    TschemFSF = open(TchemFSF, mode ='wb')
                    Twrite(Tresad)
                    TschemFSF.close()
                    magem="Operation Reussie 1"
                    msg.config(text=str(magem))
                    lubt.config(state="normal")
                #print "Operation Reussie 1"
            except:
                    magem="impossible d'ecrire 1"
                    msg.config(text=str(magem))
                    lubt.config(state="normal")
                    #print "impossible d'ecrire 1"
                
            try:
                    def write(data):
                        schemFS.write(data.encode(str(Str_EncoD)))
                    schemFS = open(chemFS, mode ='wb')
                    write(resac)
                    schemFS.close()
                    magem="Operation Reussie"
                    msg.config(text=str(magem))
                    lubt.config(state="normal")
                    #print "Operation Reussie 2"
            except:
                    magem="impossible d'ecrire"
                    msg.config(text=str(magem))
                    lubt.config(state="normal")
                    #print "impossible d'ecrire 2"

            if int(errn)>0:mesag(Lib_FileGenerated +', '+str(errn)+' '+Lib_Errors)
            else:mesag(Lib_FileGenerated)
            errn=0

        else:mesag(Lib_NonDeveloPFunction)

    Export=Tix.Button(ExTrCTM,text= Lib_Generate,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = Export)
    Export.grid(row=2,column=8)
    msg=Tix.Label(ExTrCTM,text= "",foreground=str(Mes_foreG),background=str(Mes_backG),font=str(Mes_font)+' '+str(Mes_fontSize)+str(Mes_bold))
    msg.grid(row=0,column=1,columnspan=8)
    def noalu():
        msg.config(text="")
        lubt.config(state='disabled')
    lubt=Tix.Button(ExTrCTM,text= Lib_Read,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = noalu)
    lubt.grid(row=0,column=8)
extrc=Tix.Button(rsSabL,text= "exULiUm",foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = extractitiel)
extrc.grid(row=0,column=2)
#Lu=Tix.Button(rsSabL,text= Lib_Read,foreground=str(But_foreG),background=str(But_backG),font=str(But_font)+' '+str(But_fontSize)+str(But_bold), command = noalu)
#Lu.grid(row=0,column=4)
#SabL.iconbitmap(bitmap= osdir + os.sep + "WokLaB"+os.sep+"StylisT"+os.sep+'TrsPicon.ico')
Tix.mainloop()

