/usr/share/pyshared/InterfaceQT4/compooper.py is in eficas 6.4.0-1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | # -*- coding: utf-8 -*-
import traceback
import string
from PyQt4 import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from Editeur import Objecttreeitem
import browser
import typeNode
class Node(browser.JDCNode, typeNode.PopUpMenuNode):
def getPanel( self ):
"""
"""
from monCommandePanel import MonCommandePanel
return MonCommandePanel(self,parent=self.editor)
def createPopUpMenu(self):
typeNode.PopUpMenuNode.createPopUpMenu(self)
if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
self.ViewElt = QAction('View3D',self.tree)
self.tree.connect(self.ViewElt,SIGNAL("activated()"),self.view3D)
self.ViewElt.setStatusTip("affiche dans Geom les elements de structure")
self.menu.addAction(self.ViewElt)
if self.item.isvalid() :
self.ViewElt.setEnabled(1)
else:
self.ViewElt.setEnabled(0)
if self.item.get_nom() == "DISTRIBUTION" :
self.Graphe = QAction('Graphique',self.tree)
self.tree.connect(self.Graphe,SIGNAL("activated()"),self.viewPng)
self.Graphe.setStatusTip("affiche la distribution ")
self.menu.addAction(self.Graphe)
if self.item.isvalid() :
self.Graphe.setEnabled(1)
else:
self.Graphe.setEnabled(0)
def view3D(self) :
from Editeur import TroisDPal
troisD=TroisDPal.TroisDPilote(self.item,self.editor.appliEficas)
troisD.envoievisu()
def viewPng(self) :
from monPixmap import MonLabelPixmap
fichier=self.appliEficas.getName()
try :
os.remove(fichier)
except :
pass
#try:
if 1:
import generator
g = generator.plugins[self.appliEficas.format_fichier]()
g.gener(self.item.object, format='beautifie')
stdGener = g.getGenerateur()
if len(g.dictMCLois) != 1:
QMessageBox.warning(
None,
self.appliEficas.trUtf8("Erreur interne"),
self.appliEficas.trUtf8("La PDF de la loi ne peut pas etre affichee."),
self.appliEficas.trUtf8("&Annuler"))
return
loi = g.dictMCLois.keys()[0]
nomLoi = loi.get_name()
script = stdGener.GraphiquePDF(loi, fichier)
#print script
d = {}
exec script in d
widgetPng=MonLabelPixmap(self.appliEficas,fichier,nomLoi)
widgetPng.show()
#except:
else:
QMessageBox.warning(
None,
self.appliEficas.trUtf8("Erreur interne"),
self.appliEficas.trUtf8("La PDF de la loi ne peut pas etre affichee."),
self.appliEficas.trUtf8("&Annuler"))
class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
""" La classe EtapeTreeItem est un adaptateur des objets ETAPE du noyau
Accas. Elle leur permet d'etre affichés comme des noeuds
d'un arbre graphique.
Cette classe a entre autres deux attributs importants :
- _object qui est un pointeur vers l'objet du noyau
- object qui pointe vers l'objet auquel sont délégués les
appels de méthode et les acces aux attributs
Dans le cas d'une ETAPE, _object et object pointent vers le
meme objet.
"""
itemNode=Node
def IsExpandable(self):
return 1
def GetIconName(self):
"""
Retourne le nom de l'icone a afficher dans l'arbre
Ce nom depend de la validite de l'objet
"""
if not self.object.isactif():
return "ast-white-square"
elif self.object.isvalid():
return "ast-green-square"
else:
valid=self.valid_child()
valid=valid * self.valid_regles("non")
if self.reste_val != {}:
valid=0
if valid==0 :
return "ast-red-square"
else :
try :
# on traite ici le cas d include materiau
# print self.object.definition.nom
if self.object.fichier_ini != self.object.nom_mater :
return "ast-red-square"
except :
pass
return "ast-yellow-square"
def GetLabelText(self):
""" Retourne 3 valeurs :
- le texte a afficher dans le noeud représentant l'item
- la fonte dans laquelle afficher ce texte
- la couleur du texte
"""
if self.object.isactif():
# None --> fonte et couleur par défaut
return self.labeltext,None,None
else:
return self.labeltext, None, None #CS_pbruno todo
def get_objet(self,name) :
for v in self.object.mc_liste:
if v.nom == name : return v
return None
def get_type_sd_prod(self):
"""
Retourne le nom du type du concept résultat de l'étape
"""
sd_prod=self.object.get_type_produit()
if sd_prod:
return sd_prod.__name__
else:
return ""
def additem(self,name,pos):
mcent = self._object.addentite(name,pos)
return mcent
def suppitem(self,item) :
# item : item du MOCLE de l'ETAPE a supprimer
# item.getObject() = MCSIMP, MCFACT, MCBLOC ou MCList
itemobject=item.getObject()
if itemobject.isoblig() :
self.appli.affiche_infos('Impossible de supprimer un mot-clé obligatoire ',Qt.red)
return 0
if self.object.suppentite(itemobject):
message = "Mot-clef " + itemobject.nom + " supprime"
self.appli.affiche_infos(message)
return 1
else :
self.appli.affiche_infos('Pb interne : impossible de supprimer ce mot-clé',Qt.red)
return 0
def GetText(self):
try:
return self.object.get_sdname()
except:
return ''
def keys(self):
keys=self.object.mc_dict.keys()
return keys
def GetSubList(self):
"""
Reactualise la liste des items fils stockes dans self.sublist
"""
if self.isactif():
liste=self.object.mc_liste
else:
liste=[]
sublist=[None]*len(liste)
# suppression des items lies aux objets disparus
for item in self.sublist:
old_obj=item.getObject()
if old_obj in liste:
pos=liste.index(old_obj)
sublist[pos]=item
else:
pass # objets supprimes ignores
# ajout des items lies aux nouveaux objets
pos=0
for obj in liste:
if sublist[pos] is None:
# nouvel objet : on cree un nouvel item
def setfunction(value, object=obj):
object.setval(value)
item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
sublist[pos]=item
pos=pos+1
self.sublist=sublist
return self.sublist
def isvalid(self):
return self.object.isvalid()
def iscopiable(self):
"""
Retourne 1 si l'objet est copiable, 0 sinon
"""
return 1
def update(self,item):
if item.sd and item.sd.nom:
self.nomme_sd(item.sd.nom)
def nomme_sd(self,nom):
""" Lance la méthode de nommage de la SD """
oldnom=""
if self.object.sd != None :
oldnom=self.object.sd.nom
test,mess= self.object.nomme_sd(nom)
if test:self.object.parent.reset_context()
if (test and self.appli.dict_reels.has_key(oldnom) ):
self.appli.dict_reels[nom]=self.appli.dict_reels[oldnom]
return test,mess
def is_reentrant(self):
return self.object.is_reentrant()
def get_noms_sd_oper_reentrant(self):
return self.object.get_noms_sd_oper_reentrant()
def get_objet_commentarise(self):
"""
Cette méthode retourne un objet commentarisé
représentatif de self.object
"""
# Format de fichier utilisé
format=self.appli.appliEficas.format_fichier
return self.object.get_objet_commentarise(format)
def get_objet_commentarise_BAK(self):
"""
Cette méthode retourne un objet commentarisé
représentatif de self.object
"""
import generator,string,Accas
# Format de fichier utilisé
format=self.appli.appliEficas.format_fichier
g=generator.plugins[format]()
texte_commande = g.gener(self.object,format='beautifie')
# Il faut enlever la premiere ligne vide de texte_commande que
# rajoute le generator
rebut,texte_commande = string.split(texte_commande,'\n',1)
# on construit l'objet COMMANDE_COMM repésentatif de self mais non
# enregistré dans le jdc
commande_comment = Accas.COMMANDE_COMM(texte=texte_commande,reg='non',
parent=self.object.parent)
commande_comment.niveau = self.object.niveau
commande_comment.jdc = commande_comment.parent = self.object.jdc
pos=self.object.parent.etapes.index(self.object)
parent=self.object.parent
self.object.parent.suppentite(self.object)
parent.addentite(commande_comment,pos)
return commande_comment
import Accas
treeitem = EtapeTreeItem
objet = Accas.ETAPE
|