# -*- coding: iso-8859-1 -*- # Copyright 20003 - 2008: Julien Bourdaillet (julien.bourdaillet@lip6.fr), Jean-Gabriel Ganascia (jean-gabriel.ganascia@lip6.fr) # This file is part of MEDITE. # # MEDITE 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. # # MEDITE 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 Foobar; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #---------------------------------------------------------------------------- # Nom: FormulairesMenuDossiers.py # Objet: Ce fichier regroupe les differentes classes necessaires # pour le menu Medite #---------------------------------------------------------------------------- #from wxPython.wx import * import wx from Utile.constantesGUI import * from Utile.exceptionsDonnees import * from Utile.decodage import * import Controleurs.DGManager import codecs,sys,re,locale #--------------------------------------------------------------------------------------------------# # Classe qui permet d'ouvrir l'état Source ou Cible dans sa fenetre respective # de l'interface class FormOuvrirFichier(wx.Frame): #Le parametre 'type' prend deux valeurs possibles 'Cible' ou 'Source' def __init__(self,parent, title,type): wx.Frame.__init__(self, parent, -1,title, pos = wx.Point(200,200) ,size = ( 310,180), style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE|wx.FRAME_FLOAT_ON_PARENT) self.fenetreMedite=parent self.type=type panel=wx.Panel(self,-1) if self.type=='Source': version = self.fenetreMedite.getPlanTravail().getVersionSource() else : version = self.fenetreMedite.getPlanTravail().getVersionCible() textVersion=wx.StaticText(panel,-1,"Version : ",wx.Point(15,12)) # self.ctrlVersion=wx.TextCtrl(panel,-1,version,wx.Point(75,10),size=(125,-1),style=wx.TE_READONLY) # self.ctrlVersion.SetInsertionPoint(0) # # self.bVersion = wx.Button(panel, ID_SELECT_AUTEUR, u"S\xe9lection",wx.Point(220,10)) # wx.EVT_BUTTON(self, ID_SELECT_AUTEUR, self.onSelectVersion) #listeVersions=self.fenetreMedite.cdos.getListeDossiersVersions(self.fenetreMedite.getPlanTravail().getAuteur(), # self.fenetreMedite.getPlanTravail().getOeuvre()) self.dgm = Controleurs.DGManager.DGManager() listeVersions=self.dgm.getListeVersionsDG(self.fenetreMedite.getPlanTravail().getAuteur(),self.fenetreMedite.getPlanTravail().getOeuvre()) self.ctrlVersion = wx.ComboBox(panel,-1, listeVersions[0],(75,10), (150, -1), listeVersions, wx.CB_DROPDOWN | wx.CB_READONLY) self.Bind(wx.EVT_TEXT, self.EvtCtrlVersion, self.ctrlVersion) textEtat=wx.StaticText(panel,-1,"Etat : ",wx.Point(15,52)) # self.ctrlEtat=wx.TextCtrl(panel,-1,"",wx.Point(75,50),size=(125,-1),style=wx.TE_READONLY) # self.ctrlEtat.SetInsertionPoint(0) # # self.bEtat = wx.Button(panel, ID_SELECT_OEUVRE, u"S\xe9lection",wx.Point(220,50)) # wx.EVT_BUTTON(self, ID_SELECT_OEUVRE, self.onSelectEtat) #listeEtats=self.fenetreMedite.cdos.getListeEtats(self.fenetreMedite.getPlanTravail().getAuteur(), # self.fenetreMedite.getPlanTravail().getOeuvre(),self.ctrlVersion.GetValue()) #listeEtats.insert(0,"") listeEtats=self.dgm.getListeEtatsVersion(self.fenetreMedite.getPlanTravail().getAuteur(), self.fenetreMedite.getPlanTravail().getOeuvre(),self.ctrlVersion.GetValue()) self.ctrlEtat = wx.ComboBox(panel,-1, listeEtats[0],(75,50), (150, -1), listeEtats, wx.CB_DROPDOWN | wx.CB_READONLY) self.bValider = wx.Button(panel, ID_OK, "VALIDER", wx.Point(50, 90)) wx.EVT_BUTTON(self, ID_OK, self.onValider) bAnnuler = wx.Button(panel, ID_ANNULER, "ANNULER", wx.Point(150, 90)) wx.EVT_BUTTON(self, ID_ANNULER, self.onAnnuler) self.bValider.SetFocus() def EvtCtrlVersion(self, event): if (self.ctrlVersion.GetValue()!=""): #listeEtats=self.fenetreMedite.cdos.getListeEtats(self.fenetreMedite.getPlanTravail().getAuteur(), # self.fenetreMedite.getPlanTravail().getOeuvre(),self.ctrlVersion.GetValue()) listeEtats=self.dgm.getListeEtatsVersion(self.fenetreMedite.getPlanTravail().getAuteur(), self.fenetreMedite.getPlanTravail().getOeuvre(),self.ctrlVersion.GetValue()) self.ctrlEtat.Clear() if listeEtats==[]: self.ctrlEtat.SetValue("") self.ctrlEtat.AppendItems(listeEtats) self.ctrlEtat.Refresh() def onSelectVersion(self,event): #self.listeVersions=self.fenetreMedite.cdos.getListeDossiersVersions(self.fenetreMedite.getPlanTravail().getAuteur(), # self.fenetreMedite.getPlanTravail().getOeuvre()) self.listeVersions=self.dgm.getListeVersionsDG(self.fenetreMedite.getPlanTravail().getAuteur(),self.fenetreMedite.getPlanTravail().getOeuvre()) msg = u"Choisissez la version de l\'état" titre = u"S\xe9lectionner une version" self.versionFormSelect=SelectionListe(self.fenetreMedite,msg,titre,self.listeVersions) if self.versionFormSelect.ShowModal() == wx.ID_OK: self.ctrlVersion.SetValue(self.versionFormSelect.GetStringSelection()) self.bEtat.SetFocus() def onSelectEtat(self,event): if (self.ctrlVersion.GetValue()!=""): #self.listeEtats=self.fenetreMedite.cdos.getListeEtats(self.fenetreMedite.getPlanTravail().getAuteur(), # self.fenetreMedite.getPlanTravail().getOeuvre(), # self.ctrlVersion.GetValue()) self.listeEtats=self.dgm.getListeEtatsVersion(self.fenetreMedite.getPlanTravail().getAuteur(), self.fenetreMedite.getPlanTravail().getOeuvre(),self.ctrlVersion.GetValue()) msg = 'Choisissez le etat' titre = u"S\xe9lectionner un etat" self.etatFormSelect=SelectionListe(self.fenetreMedite,msg,titre,self.listeEtats) if self.etatFormSelect.ShowModal() == wx.ID_OK: self.ctrlEtat.SetValue(self.etatFormSelect.GetStringSelection()) self.bValider.SetFocus() else: text=u"Vous devez remplir les champs sup\xe9rieurs!!" dlg = wx.MessageDialog(self, text, 'Attention !',wx.OK) dlg.ShowModal() dlg.Destroy() def onValider(self,event): if (self.ctrlEtat.GetValue()!=""): self.fenetreMedite.getCompPanel().indiceS.SetValue('') self.fenetreMedite.getCompPanel().indiceC.SetValue('') try: ### Mise a  zero des onglets transformations et commentaire self.fenetreMedite.getCompPanel().transformations.SetValue('') self.fenetreMedite.getCompPanel().commentaire.SetValue('') ### choixVersion = self.ctrlVersion.GetValue() choixEtat = self.ctrlEtat.GetValue() chemin=self.dgm.getEtatPath(self.fenetreMedite.getPlanTravail().getAuteur(), self.fenetreMedite.getPlanTravail().getOeuvre(),choixVersion,choixEtat) fontDefault=wx.Font(10,wx.DEFAULT,wx.NORMAL,wx.NORMAL)#,wx.FONTENCODING_ISO8859_1)#, #encoding=wx.FONTENCODING_UTF8) if self.type=='Source': self.fenetreMedite.getCompPanel().textWindowLeft.Clear() self.fenetreMedite.getCompPanel().textWindowLeft.SetStyle(0,0,#wx.TextAttr()) wx.TextAttr('black', 'white', fontDefault)) #wx.TextAttr(wxNullColour, # wxNullColour, # fontDefault)) #self.fenetreMedite.getCompPanel().textWindowLeft.StyleClearAll() #self.fenetreMedite.getCompPanel().textWindowLeft.LoadFile(chemin) #self.fenetreMedite.getCompPanel().textWindowLeft.AppendText(loadFile(chemin)) self.fenetreMedite.getCompPanel().textWindowLeft.SetValue(loadFile(chemin)) ########### enlever les couleur de l'autre fenetre texte = self.fenetreMedite.getCompPanel().textWindowRight.GetValue() self.fenetreMedite.getCompPanel().textWindowRight.Clear() self.fenetreMedite.getCompPanel().textWindowRight.SetStyle(0,0,#wx.TextAttr()) wx.TextAttr('black', 'white', fontDefault)) # # wx.TextAttr(wxNullColour, # wxNullColour, # fontDefault)) #self.fenetreMedite.getCompPanel().textWindowRight.StyleClearAll() self.fenetreMedite.getCompPanel().textWindowRight.SetValue(texte) ########## Mise a jour du plan de travail self.fenetreMedite.getCompPanel().textInfoVersionS.SetLabel(choixVersion) self.fenetreMedite.getCompPanel().textInfoEtatS.SetLabel(choixEtat) self.fenetreMedite.getPlanTravail().setVersionSource(choixVersion) self.fenetreMedite.getPlanTravail().setEtatSource(choixEtat) self.fenetreMedite.nb.SetPageText(self.fenetreMedite.nb.GetSelection(),choixEtat+'-'+self.fenetreMedite.getPlanTravail().getEtatCible()) self.fenetreMedite.getCompPanel().Refresh() self.fenetreMedite.reloadNavMenu() elif self.type=='Cible': #self.fenetreMedite.getCompPanel().textWindowRight.StyleClearAll() self.fenetreMedite.getCompPanel().textWindowRight.Clear()#SetValue('') self.fenetreMedite.getCompPanel().textWindowRight.SetStyle(0,0,#wx.TextAttr()) wx.TextAttr('black', 'white', fontDefault)) # wx.TextAttr(wxNullColour, # wxNullColour, # fontDefault)) #self.fenetreMedite.getCompPanel().textWindowRight.LoadFile(chemin) #self.fenetreMedite.getCompPanel().textWindowRight.AppendText(loadFile(chemin)) self.fenetreMedite.getCompPanel().textWindowRight.SetValue(loadFile(chemin)) ########## enlever les couleur de l'autre fenetre texte = self.fenetreMedite.getCompPanel().textWindowLeft.GetValue() #self.fenetreMedite.getCompPanel().textWindowLeft.StyleClearAll() self.fenetreMedite.getCompPanel().textWindowLeft.Clear()#SetValue('') self.fenetreMedite.getCompPanel().textWindowLeft.SetStyle(0,0,#wx.TextAttr()) wx.TextAttr('black', 'white', fontDefault)) # wx.TextAttr(wxNullColour, # wxNullColour, # fontDefault)) self.fenetreMedite.getCompPanel().textWindowLeft.SetValue(texte) #self.fenetreMedite.getCompPanel().textWindowLeft.StyleClearAll() ########## Mise a jour du plan de travail self.fenetreMedite.getCompPanel().textInfoVersionC.SetLabel(choixVersion) self.fenetreMedite.getCompPanel().textInfoEtatC.SetLabel(choixEtat) self.fenetreMedite.getPlanTravail().setVersionCible(choixVersion) self.fenetreMedite.getPlanTravail().setEtatCible(choixEtat) self.fenetreMedite.nb.SetPageText(self.fenetreMedite.nb.GetSelection(),self.fenetreMedite.getPlanTravail().getEtatSource()+'-'+choixEtat) self.fenetreMedite.getCompPanel().Refresh() self.fenetreMedite.reloadNavMenu() #### Il n'y a plus de resultats self.fenetreMedite.getCompPanel().resultatTransfo = None self.fenetreMedite.smEnregistrer.Enable(ID_ADD_TRANSFOS, False) self.fenetreMedite.smEnregistrer.Enable(ID_ADD_TRANSFOS_COMMENT, False) ##############################################################################CHANGE #self.fenetreMedite.rechargerEtats() ######################################################################## except IOError, eIO: dlg = wx.MessageDialog(self,u"L'état n'est pas trouvable ! "+str(eIO), 'Attention !',wx.OK) dlg.ShowModal() dlg.Destroy() self.Close() else: dlg = wx.MessageDialog(self, "Vous devez remplir tous les champs !", 'Attention !',wx.OK) dlg.ShowModal() dlg.Destroy() def onAnnuler(self,event): self.Close() # Fenetre de dialogue de selection d'un element dans une liste class SelectionListe(wx.SingleChoiceDialog): def __init__(self, parent,pPhrase, pTitre, pListe): wx.SingleChoiceDialog.__init__(self, parent,pPhrase,pTitre,pListe, wx.OK|wx.CANCEL)