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
26 from PyQt4.QtGui import *
27 from PyQt4.QtCore import *
36 Classe contenant les méthodes Qt communes a tous les panneaux droits
37 Tous les panneaux Mon...Panel héritent de cette classe
38 Gére plus précisement :
39 - l affichage de la doc
40 - le bouton Suppression (BSupPressed)
41 - la mutualisation de l affichage des regles
43 def __init__(self,node, parent = None):
47 def BSupPressed(self):
48 self.editor.init_modif()
52 cle_doc = self.node.item.get_docu()
54 QMessageBox.information( self.editor, "Documentation Vide", \
55 "Aucune documentation Aster n'est associée à ce noeud")
57 cle_doc = string.replace(cle_doc,'.','')
58 cle_doc = string.replace(cle_doc,'-','')
59 commande = self.editor.appliEficas.CONFIGURATION.exec_acrobat
63 texte="impossible de trouver la commande " + commande
64 QMessageBox.information( self.editor, "Lecteur PDF", texte)
66 nom_fichier = cle_doc+".pdf"
67 fichier = os.path.abspath(os.path.join(self.editor.CONFIGURATION.path_doc,
72 texte="impossible d'ouvrir " + fichier
73 QMessageBox.information( self.editor, "Documentation Vide", texte)
76 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
77 elif os.name == 'posix':
78 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
79 pid = os.system(script)
82 """ Impossible d utiliser les vrais labels avec designer ?? """
83 label=self.TWChoix.tabText(self.TWChoix.currentIndex())
85 if label==QString("Nouvelle Commande"):
87 if label==QString("Nommer Concept"):
88 self.LENomConceptReturnPressed()
89 if label==QString("Ajouter Mot-Clef"):
90 if self.LBMCPermis.currentItem() == None : return
91 self.DefMC(self.LBMCPermis.currentItem())
92 if label==QString("Définition Formule"):
93 self.BOkPressedFormule()
94 if label==QString("Valeur Parametre"):
95 self.BOkParamPressed()
96 if label==QString("Fichier Include"):
99 def BParametresPressed(self):
100 liste=self.node.item.get_liste_param_possible()
101 from monListeParamPanel import MonListeParamPanel
102 MonListeParamPanel(liste=liste,parent=self).show()
104 def AppelleBuildLBRegles(self):
105 listeRegles = self.node.item.get_regles()
106 listeNomsEtapes = self.node.item.get_mc_presents()
107 self.BuildLBRegles(listeRegles,listeNomsEtapes)
110 def BuildLBRegles(self,listeRegles,listeNomsEtapes):
111 self.LBRegles.clear()
112 if len(listeRegles) > 0:
113 for regle in listeRegles :
114 texteRegle=regle.gettext()
115 texteMauvais,test = regle.verif(listeNomsEtapes)
116 for ligne in texteRegle.split("\n") :
118 self.LBRegles.addItem(ligne)
123 self.LBRegles.addItem(ligne)
126 monItem=QListWidgetItem(ligne)
127 monItem.setForeground(Qt.red)
128 self.LBRegles.addItem(monItem)
131 # ----------------------- #
132 class QTPanelTBW1(QTPanel):
133 # ----------------------- #
135 Classe contenant les méthodes nécessaires a l onglet "Ajouter Mot-Clef"
136 hérite de QTPanel # Attention n appelle pas le __init__
137 Gére plus précisement :
139 def __init__(self,node, parent = None):
142 self.BuildLBMCPermis()
143 self.AppelleBuildLBRegles()
145 def BuildLBMCPermis(self):
146 self.LBMCPermis.clear()
147 QObject.connect(self.LBMCPermis,SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.DefMC)
148 jdc = self.node.item.get_jdc()
149 genea =self.node.item.get_genealogie()
150 liste_mc=self.node.item.get_liste_mc_ordonnee(genea,jdc.cata_ordonne_dico)
152 self.LBMCPermis.addItem( aMc)
155 def DefMC(self,item):
156 """ On ajoute un mot-clé à la commande : subnode """
157 name=str(item.text())
158 self.editor.init_modif()
159 self.node.append_child(name)
161 # ---------------------------- #
162 class QTPanelTBW2(QTPanel):
163 # ---------------------------- #
165 Classe contenant les méthodes nécessaires a l onglet "Nouvelle Commande"
166 hérite de QTPanel # Attention n appelle pas le __init__
167 Gére plus précisement :
170 def __init__(self,node, parent = None, racine = 0):
173 self.BuildLBNouvCommande()
174 self.NbRecherches = 0
175 if racine == 1 : self.AppelleBuildLBRegles()
178 def BuildLBNouvCommande(self):
179 self.LBNouvCommande.clear()
181 jdc=self.node.item.object.get_jdc_root()
182 if self.RBalpha.isChecked():
183 listeCmd = jdc.get_liste_cmd()
184 for aCmd in listeCmd:
185 self.LBNouvCommande.addItem( aCmd )
187 listeGroupes,dictGroupes=jdc.get_groups()
188 for grp in listeGroupes:
189 if grp == "CACHE":continue
190 listeCmd=dictGroupes[grp]
191 texte="GROUPE : "+grp
192 self.LBNouvCommande.addItem( texte )
193 self.LBNouvCommande.addItem( " " )
194 for aCmd in listeCmd:
195 self.LBNouvCommande.addItem( aCmd)
196 self.LBNouvCommande.addItem( " " )
197 #QObject.connect( self.LBNouvCommande, SIGNAL("itemClicked(QListWidgetItem*)"),self.DefCmd )
198 QObject.connect( self.LBNouvCommande, SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.DefCmd )
201 if (self.editor.focusWidget())!=self.LBNouvCommande :
203 if self.LBNouvCommande.currentItem()== 0 : return
204 if self.LBNouvCommande.currentItem()== None : return
205 name=str(self.LBNouvCommande.currentItem().text())
206 if name==QString(" "):
208 if name.find("GROUPE :")==0 :
210 self.editor.init_modif()
213 new_node = self.node.append_brother(name,'after')
216 def LEFiltreTextChanged(self):
217 self.NbRecherches = 0
219 MonItem=self.LBNouvCommande.findItems(self.LEFiltre.text().toUpper(),Qt.MatchContains)[0]
220 self.LBNouvCommande.setCurrentItem(MonItem)
224 def LEfiltreReturnPressed(self):
227 def BNextPressed(self):
228 self.NbRecherches = self.NbRecherches + 1
231 MonItem=self.LBNouvCommande.findItems(self.LEFiltre.text().toUpper(),Qt.MatchContains)[self.NbRecherches]
233 try : # ce try sert si la liste est vide
234 MonItem=self.LBNouvCommande.findItems(self.LEFiltre.text().toUpper(),Qt.MatchContains)[0]
235 self.NbRecherches = 0
238 self.LBNouvCommande.setCurrentItem(MonItem)
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)
264 def LENomConceptReturnPressed(self):
266 Nomme le concept SD retourne par l'etape
268 nom = str(self.LENomConcept.text())
269 nom = string.strip(nom)
270 if nom == '' : return # si pas de nom, on ressort sans rien faire
271 self.editor.init_modif()
272 test,mess = self.node.item.nomme_sd(nom)
273 self.editor.affiche_infos(mess)
275 # ------------------------------- #
276 from desViewTexte import Ui_dView
277 class ViewText(Ui_dView,QDialog):
278 # ------------------------------- #
280 Classe permettant la visualisation de texte
282 def __init__(self,parent):
283 QDialog.__init__(self,parent)
286 self.resize( QSize(600,507).expandedTo(self.minimumSizeHint()) )
287 self.connect( self.bclose,SIGNAL("clicked()"), self, SLOT("close()") )
288 self.connect( self.bsave,SIGNAL("clicked()"), self.saveFile )
290 def setText(self, txt ):
291 self.view.setText(txt)
294 #recuperation du nom du fichier
295 fn = QFileDialog.getSaveFileName(None,
296 self.trUtf8("Save File"),
299 # print "hhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkk"
300 # if QFileInfo(fn).exists():
301 # abort = QMessageBox.warning(self,
302 # self.trUtf8("Save File"),
303 # self.trUtf8("The file <b>%1</b> already exists.")
305 # self.trUtf8("&Overwrite"),
306 # self.trUtf8("&Abort"))
309 # fn = unicode(QDir.convertSeparators(fn))
314 if fn.isNull() : return
317 f.write(str(self.view.toPlainText()))
321 QMessageBox.critical(self, self.trUtf8('Save File'),
322 self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
323 .arg(unicode(fn)).arg(str(why)))