Salome HOME
CCAR: Modified Files:
[tools/eficas.git] / Extensions / jdc_include.py
1 """
2    Ce module contient la classe JDC_INCLUDE qui sert a inclure
3    dans un jeu de commandes une partie de jeu de commandes
4    au moyen de la fonctionnalite INCLUDE ou INCLUDE_MATERIAU
5    Quand l'utilisateur veut inclure un fichier il faut versifier
6    que le jeu de commandes inclus est valide et compatible
7    avec le contexte avant et apres l'insertion
8 """
9 from Accas import JDC,ASSD,AsException,JDC_CATA
10
11
12 class JDC_POURSUITE(JDC):
13    def __init__(self,definition=None,procedure=None,cata=None,
14                      cata_ord_dico=None,parent=None,
15                      nom='SansNom',appli=None,context_ini=None,
16                      jdc_pere=None,etape_include=None,prefix_include=None,**args):
17
18       JDC.__init__(self, definition=definition,
19                          procedure=procedure,
20                          cata=cata,
21                          cata_ord_dico=cata_ord_dico,
22                          parent=parent,
23                          nom=nom,
24                          appli=appli,
25                          context_ini=context_ini,
26                          **args
27                          )
28       self.jdc_pere=jdc_pere
29       self.etape_include=etape_include
30       self.prefix_include=prefix_include
31
32    def NommerSdprod(self,sd,sdnom,restrict='non'):
33       """
34           Nomme la SD apres avoir verifie que le nommage est possible : nom
35           non utilise
36           Ajoute un prefixe s'il est specifie (INCLUDE_MATERIAU)
37           Si le nom est deja utilise, leve une exception
38           Met le concept créé dans le concept global g_context
39       """
40       if self.prefix_include:
41           if sdnom != self.prefix_include:sdnom=self.prefix_include+sdnom
42       o=self.sds_dict.get(sdnom,None)
43       if isinstance(o,ASSD):
44          raise AsException("Nom de concept deja defini : %s" % sdnom)
45       # Il faut verifier en plus que le jdc_pere apres l'etape etape_include
46       # ne contient pas deja un concept de ce nom
47
48       mysd= self.jdc_pere.get_sd_apres_etape(sdnom,etape=self.etape_include)
49       if mysd:
50       #if self.jdc_pere.get_sd_apres_etape(sdnom,etape=self.etape_include):
51          # Il existe un concept apres self => impossible d'inserer
52          raise AsException("Nom de concept deja defini : %s" % sdnom)
53
54       # ATTENTION : Il ne faut pas ajouter sd dans sds car il s y trouve deja.
55       # Ajoute a la creation (appel de reg_sd).
56       self.sds_dict[sdnom]=sd
57       sd.nom=sdnom
58
59       # En plus si restrict vaut 'non', on insere le concept dans le contexte du JDC
60       if restrict == 'non':
61          self.g_context[sdnom]=sd
62
63 class JDC_INCLUDE(JDC_POURSUITE):
64    def active_etapes(self):
65       for e in self.etapes:
66          e.active()
67
68 class JDC_CATA_INCLUDE(JDC_CATA):
69    class_instance=JDC_INCLUDE
70
71 class JDC_CATA_POURSUITE(JDC_CATA):
72    class_instance=JDC_POURSUITE
73
74 from Accas import AU_MOINS_UN,A_CLASSER
75
76 JdC_include=JDC_CATA_INCLUDE(code='ASTER', execmodul=None)
77
78 JdC_poursuite=JDC_CATA_POURSUITE(code='ASTER', execmodul=None,
79                                  regles = (AU_MOINS_UN('DEBUT','POURSUITE'),
80                                            AU_MOINS_UN('FIN'),
81                                            A_CLASSER(('DEBUT','POURSUITE'),'FIN')
82                                           )
83                                )
84
85