1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 import string,types,os
34 Classe contenant les méthodes Qt communes a tous les panneaux droits
35 Tous les panneaux Mon...Panel héritent de cette classe
36 Gére plus précisement :
37 - l affichage de la doc
38 - le bouton Suppression (BSupPressed)
39 - la mutualisation de l affichage des regles
41 def __init__(self,node, parent = None):
45 def BSupPressed(self):
46 self.editor.init_modif()
50 cle_doc = self.node.item.get_docu()
52 QMessageBox.information( self.editor, "Documentation Vide", \
53 "Aucune documentation Aster n'est associée à ce noeud")
55 cle_doc = string.replace(cle_doc,'.','')
56 cle_doc = string.replace(cle_doc,'-','')
57 commande = self.editor.appliEficas.CONFIGURATION.exec_acrobat
61 texte="impossible de trouver la commande " + commande
62 QMessageBox.information( self.editor, "Lecteur PDF", texte)
64 nom_fichier = cle_doc+".pdf"
65 fichier = os.path.abspath(os.path.join(self.editor.CONFIGURATION.path_doc,
70 texte="impossible d'ouvrir " + fichier
71 QMessageBox.information( self.editor, "Documentation Vide", texte)
74 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
75 elif os.name == 'posix':
76 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
77 pid = os.system(script)
80 """ Impossible d utiliser les vrais labels avec designer ?? """
81 label=self.TWChoix.tabLabel(self.TWChoix.currentPage())
82 if label==QString("Nouvelle Commande"):
84 if label==QString("Nommer Concept"):
85 self.LENomConceptReturnPressed()
86 if label==QString("Ajouter Mot-Clef"):
88 if label==QString("Définition Formule"):
89 self.BOkPressedFormule()
90 if label==QString("Valeur Parametre"):
91 self.BOkParamPressed()
92 if label==QString("Fichier Include"):
94 if label==QString("Commentaire"):
95 self.TexteCommentaireEntre()
97 def BParametresPressed(self):
98 liste=self.node.item.get_liste_param_possible()
99 from monListeParamPanel import MonListeParamPanel
100 MonListeParamPanel(liste=liste,parent=self).show()
102 def AppelleBuildLBRegles(self):
103 listeRegles = self.node.item.get_regles()
104 listeNomsEtapes = self.node.item.get_mc_presents()
105 self.BuildLBRegles(listeRegles,listeNomsEtapes)
108 def BuildLBRegles(self,listeRegles,listeNomsEtapes):
109 if len(listeRegles) > 0:
110 for regle in listeRegles :
111 texteRegle=regle.gettext()
112 texteMauvais,test = regle.verif(listeNomsEtapes)
113 for ligne in texteRegle.split("\n") :
115 self.LBRegles.insertItem(ligne)
120 self.LBRegles.insertItem(ligne)
122 self.LBRegles.insertItem(itemColore(ligne))
125 # ----------------------- #
126 class QTPanelTBW1(QTPanel):
127 # ----------------------- #
129 Classe contenant les méthodes nécessaires a l onglet "Ajouter Mot-Clef"
130 hérite de QTPanel # Attention n appelle pas le __init__
131 Gére plus précisement :
133 def __init__(self,node, parent = None):
136 self.BuildLBMCPermis()
137 self.AppelleBuildLBRegles()
139 def BuildLBMCPermis(self):
140 self.LBMCPermis.clear()
142 QObject.disconnect(self.LBMCPermis,SIGNAL("doubleClicked(QListBoxItem*)"),self.DefMC)
144 # normal pour la première fois qu on passe
145 # peut-etre inutile selon le connect ??
147 QObject.connect(self.LBMCPermis,SIGNAL("doubleClicked(QListBoxItem*)"),self.DefMC)
149 jdc = self.node.item.get_jdc()
150 genea =self.node.item.get_genealogie()
151 liste_mc=self.node.item.get_liste_mc_ordonnee(genea,jdc.cata_ordonne_dico)
153 self.LBMCPermis.insertItem( aMc)
157 """ On ajoute un mot-clé à la commande : subnode """
158 if self.LBMCPermis.selectedItem() == None : return
159 name=str(self.LBMCPermis.selectedItem().text())
160 self.editor.init_modif()
161 self.node.append_child(name)
163 # ---------------------------- #
164 class QTPanelTBW2(QTPanel):
165 # ---------------------------- #
167 Classe contenant les méthodes nécessaires a l onglet "Nouvelle Commande"
168 hérite de QTPanel # Attention n appelle pas le __init__
169 Gére plus précisement :
172 def __init__(self,node, parent = None, racine = 0):
175 self.BuildLBNouvCommande()
176 if racine == 1 : self.AppelleBuildLBRegles()
179 def BuildLBNouvCommande(self):
180 self.LBNouvCommande.clear()
182 QObject.disconnect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.DefCmd)
184 # normal pour la première fois qu on passe
185 # peut-etre inutile selon le connect ??
188 jdc=self.node.item.object.get_jdc_root()
189 if self.RBalpha.isOn():
190 listeCmd = jdc.get_liste_cmd()
191 for aCmd in listeCmd:
192 self.LBNouvCommande.insertItem( aCmd )
194 listeGroupes,dictGroupes=jdc.get_groups()
195 for grp in listeGroupes:
196 if grp == "CACHE":continue
197 listeCmd=dictGroupes[grp]
198 texte="GROUPE : "+grp
199 self.LBNouvCommande.insertItem( texte )
200 self.LBNouvCommande.insertItem( " " )
201 for aCmd in listeCmd:
202 self.LBNouvCommande.insertItem( aCmd)
203 self.LBNouvCommande.insertItem( " " )
204 QObject.connect( self.LBNouvCommande, SIGNAL("doubleClicked(QListBoxItem*)"),self.DefCmd )
205 QObject.connect( self.LBNouvCommande, SIGNAL("returnPressed(QListBoxItem*)"),self.DefCmd )
208 if (self.editor.focusWidget())!=self.LBNouvCommande :
210 if self.LBNouvCommande.selectedItem()== 0 : return
211 if self.LBNouvCommande.selectedItem()== None : return
212 name=str(self.LBNouvCommande.selectedItem().text())
213 if name==QString(" "):
215 if name.find("GROUPE :")==0 :
217 self.editor.init_modif()
218 new_node = self.node.append_brother(name,'after')
221 def LEFiltreTextChanged(self):
222 MonItem=self.LBNouvCommande.findItem(self.LEFiltre.text().upper(),Qt.Contains)
224 self.LBNouvCommande.setCurrentItem(MonItem)
225 self.LBNouvCommande.setSelected(MonItem,1)
227 QObject.disconnect(self.LBNouvCommande,SIGNAL("returnPressed(QListBoxItem*)"),self.DefCmd)
231 def LEfiltreReturnPressed(self):
234 def BNextPressed(self):
235 MonItem=self.LBNouvCommande.findItem(self.LEFiltre.text().upper(),Qt.Contains)
237 self.LBNouvCommande.setCurrentItem(self.LBNouvCommande.currentItem()+1)
238 self.LEFiltreTextChanged()
240 def LBNouvCommandeClicked(self):
241 name=str(self.LBNouvCommande.currentText())
244 # ---------------------------- #
245 class QTPanelTBW3(QTPanel):
246 # ---------------------------- #
249 Classe contenant les méthodes nécessaires a l onglet "Nommer Concept"
251 hérite de QTPanel # Attention n appelle pas le __init__
252 Gére plus précisement :
255 def __init__(self,node, parent = None):
258 type_sd = self.node.item.get_type_sd_prod()
259 nomConcept = self.node.item.GetText()
260 self.typeConcept.setText(type_sd)
261 self.LENomConcept.setText("")
262 self.LENomConcept.setText(nomConcept)
266 def LENomConceptReturnPressed(self):
268 Nomme le concept SD retourne par l'etape
270 nom = str(self.LENomConcept.text())
271 nom = string.strip(nom)
273 if nom == '' : return # si pas de nom, on ressort sans rien faire
275 self.editor.init_modif()
276 test,mess = self.node.item.nomme_sd(nom)
277 self.editor.affiche_infos(mess)
279 # ----------------------- #
280 class ViewText(QDialog):
281 # ----------------------- #
283 Classe permettant la visualisation de texte
285 def __init__(self,parent = None,name = None,modal = 0,fl = 0):
286 QDialog.__init__(self,parent,name,modal,fl)
288 l1 = QVBoxLayout(self,11,6,)
289 self.view = QTextEdit(self)
290 self.view.setReadOnly(True)
292 l2 = QHBoxLayout(None,0,6)
293 Horizontal_Spacing2 = QSpacerItem(220,20,QSizePolicy.Expanding,QSizePolicy.Minimum)
294 bclose= QPushButton(self)
295 bclose.setText(self.trUtf8( "Fermer"))
296 bsave= QPushButton(self)
297 bsave.setText(self.trUtf8( "Sauver"))
298 l2.addItem(Horizontal_Spacing2)
302 l1.addWidget(self.view)
305 self.resize( QSize(600,507).expandedTo(self.minimumSizeHint()) )
306 self.connect( bclose,SIGNAL("clicked()"), self, SLOT("close()") )
307 self.connect( bsave,SIGNAL("clicked()"), self.saveFile )
309 def setText(self, txt ):
310 self.view.setText(txt)
313 #recuperation du nom du fichier
314 fn = QFileDialog.getSaveFileName(None,
315 self.trUtf8("All Files (*)"), self, None,
316 self.trUtf8("Save File"), '', 0)
318 if QFileInfo(fn).exists():
319 abort = QMessageBox.warning(self,
320 self.trUtf8("Save File"),
321 self.trUtf8("The file <b>%1</b> already exists.")
323 self.trUtf8("&Overwrite"),
324 self.trUtf8("&Abort"), None, 1)
327 fn = unicode(QDir.convertSeparators(fn))
334 f.write(str(self.view.text()))
338 QMessageBox.critical(self, self.trUtf8('Save File'),
339 self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
340 .arg(unicode(fn)).arg(str(why)))
344 #-------------------------------
345 class itemColore(QListBoxText):
346 #-------------------------------
349 QListBoxText.paint(self,p);