Version: 9.16.0
guiObservers.hxx
Go to the documentation of this file.
1// Copyright (C) 2006-2026 CEA, EDF
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20#ifndef _GUIOBSERVERS_HXX_
21#define _GUIOBSERVERS_HXX_
22
23#include <set>
24#include <string>
25#include <map>
26#include <vector>
27#include <list>
28#include "HMIExport.hxx"
29#include "Dispatcher.hxx"
30#include "commandsProc.hxx"
31
32namespace YACS
33{
34 namespace ENGINE
35 {
36 class Node;
37 class ComposedNode;
38 class Bloc;
39 class Proc;
40 class ForLoop;
41 class DynParaLoop;
42 class ForEachLoop;
43 class ForEachLoopGen;
44 class WhileLoop;
45 class Switch;
46 class OptimizerLoop;
47 class ElementaryNode;
48 class InlineNode;
49 class ServiceNode;
50 class PythonNode;
51 class PyFuncNode;
52 class CORBANode;
53 class CppNode;
54 class SalomeNode;
55 class SalomePythonNode;
56 class XmlNode;
57 class SplitterNode;
58 class DataNode;
59 class PresetNode;
60 class OutNode;
61 class StudyInNode;
62 class StudyOutNode;
63 class DataPort;
64 class InputPort;
65 class OutputPort;
66 class InPort;
67 class OutPort;
68 class InputDataStreamPort;
69 class OutputDataStreamPort;
70 class Catalog;
71 class ComponentInstance;
72 class Container;
73 class HomogeneousPoolContainer;
74 class TypeCode;
75 class OutGate;
76 class InGate;
77 }
78
79 namespace HMI
80 {
81
82 typedef enum
83 {
112
113 class ProcInvoc;
114 class GuiObserver;
115
116 class SubjectReference;
118 {
119 public:
121 Subject(Subject *parent=0);
122 virtual ~Subject();
123 virtual void attach(GuiObserver *obs);
124 virtual void detach(GuiObserver *obs);
125 virtual void select(bool isSelected);
126 virtual void update(GuiEvent event, int type, Subject* son);
127 virtual std::string getName();
128 virtual bool setName(std::string name);
129 virtual bool setProperties(std::map<std::string, std::string> properties);
130 virtual std::map<std::string, std::string> getProperties();
131 virtual std::vector<std::string> knownProperties();
132 virtual Subject* getParent();
133 virtual void setParent(Subject* son);
134 virtual bool destroy(Subject *son);
135 virtual void loadChildren();
136 virtual void loadLinks();
137 virtual void addSubjectReference(Subject *ref);
138 virtual void clean(Command *command=0);
139 void localclean(Command *command=0);
140 void registerUndoDestroy();
141 void askRegisterUndoDestroy() {_askRegisterUndo=true; };
142 bool isDestructible() { return _destructible; };
143 static void erase(Subject* sub, Command *command=0, bool post=false);
144 virtual TypeOfElem getType(){return UNKNOWN;}
145 virtual void setProgress( std::string newProgress );
146 virtual std::string getProgress() { return _progress; };
147 protected:
148 std::set<GuiObserver *> _setObs;
152 std::string _progress;
153 };
154
156 {
157 public:
158 GuiObserver();
159 virtual ~GuiObserver();
160 virtual void select(bool isSelected);
161 virtual void update(GuiEvent event, int type, Subject* son);
162 virtual void incrementSubjects(Subject *subject);
163 virtual void decrementSubjects(Subject *subject);
164 int getNbSubjects();
165 bool isDestructible() { return _destructible; };
166 static std::string eventName(GuiEvent event);
167 static void setEventMap();
168 protected:
169 std::set<Subject*> _subjectSet;
171 static std::map<int, std::string> _eventNameMap;
172 };
173
175 {
176 public:
178 virtual ~SubjectObserver();
179 virtual void select(bool isSelected);
180 virtual void update(GuiEvent event, int type, Subject* son);
181 protected:
183 };
184
186 {
187 public:
189 virtual ~SubjectReference();
190 virtual std::string getName();
191 virtual Subject* getReference() const;
192 virtual void reparent(Subject *parent);
193 virtual void clean(Command *command=0);
194 void localclean(Command *command=0);
195 virtual TypeOfElem getType(){return REFERENCE;}
196 protected:
199 };
200
201 class SubjectLink;
202 class SubjectControlLink;
204 {
205 public:
207 virtual ~SubjectDataPort();
208 virtual std::string getName();
209 virtual bool setName(std::string name);
210 virtual YACS::ENGINE::DataPort* getPort();
211 static bool tryCreateLink(SubjectDataPort *subOutport, SubjectDataPort *subInport,bool control=true);
212 virtual void clean(Command *command=0);
213 void localclean(Command *command=0);
214 void addSubjectLink(SubjectLink* subject) { _listSubjectLink.push_back(subject); };
215 void removeSubjectLink(SubjectLink* subject) { _listSubjectLink.remove(subject); };
216 std::list<SubjectLink*> getListOfSubjectLink() { return _listSubjectLink; };
217 virtual bool setValue(std::string value);
218 void setExecValue(std::string value);
219 std::string getExecValue();
220 void registerUndoDestroy();
221 protected:
223 std::list<SubjectLink*> _listSubjectLink;
224 std::string _execValue;
225 };
226
228 {
229 public:
231 virtual ~SubjectInputPort();
232 virtual void clean(Command *command=0);
233 void localclean(Command *command=0);
234 virtual bool setValue(std::string value);
235 virtual TypeOfElem getType(){return INPUTPORT;}
236 protected:
238 };
239
241 {
242 public:
244 virtual ~SubjectOutputPort();
245 virtual void clean(Command *command=0);
246 void localclean(Command *command=0);
247 virtual bool setValue(std::string value);
248 virtual TypeOfElem getType(){return OUTPUTPORT;}
249 protected:
251 };
252
254 {
255 public:
258 virtual bool setProperties(std::map<std::string, std::string> properties);
259 virtual std::map<std::string, std::string> getProperties();
260 virtual std::vector<std::string> knownProperties();
261 virtual void clean(Command *command=0);
262 void localclean(Command *command=0);
264 void registerUndoDestroy();
265 protected:
267 };
268
270 {
271 public:
274 virtual bool setProperties(std::map<std::string, std::string> properties);
275 virtual std::map<std::string, std::string> getProperties();
276 virtual void clean(Command *command=0);
277 void localclean(Command *command=0);
279 void registerUndoDestroy();
280 protected:
282 };
283
284
286 {
287 public:
292 SubjectNode(YACS::ENGINE::Node *node, Subject *parent);
293 virtual ~SubjectNode();
294 virtual bool setProperties(std::map<std::string, std::string> properties);
295 virtual std::map<std::string, std::string> getProperties();
296 virtual bool reparent(Subject* parent);
297 virtual bool copy(Subject* parent);
298 virtual std::string getName();
299 virtual bool setName(std::string name);
300 virtual YACS::ENGINE::Node* getNode();
301 virtual void clean(Command *command=0);
302 void registerUndoDestroy();
303 SubjectControlLink* addSubjectControlLink(SubjectControlLink *sub) { _listSubjectControlLink.push_back(sub); return sub; };
304 void removeSubjectControlLink(SubjectControlLink* sub) { _listSubjectControlLink.remove(sub); };
305 std::list<SubjectLink*> getSubjectLinks() const { return _listSubjectLink; };
306 std::list<SubjectControlLink*> getSubjectControlLinks() const { return _listSubjectControlLink; };
307 std::list<SubjectInputPort*> getSubjectInputPorts() const { return _listSubjectInputPort; };
308 std::list<SubjectOutputPort*> getSubjectOutputPorts() const { return _listSubjectOutputPort; };
309 std::list<SubjectInputDataStreamPort*> getSubjectInputDataStreamPorts() const { return _listSubjectIDSPort; };
310 std::list<SubjectOutputDataStreamPort*> getSubjectOutputDataStreamPorts() const { return _listSubjectODSPort; };
311 void localclean(Command *command=0);
312 virtual void update(GuiEvent event, int type, Subject* son);
313 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
314 virtual void removeExternalLinks();
315 virtual void removeExternalControlLinks();
316 virtual void saveLinks();
317 virtual void restoreLinks();
318 virtual bool putInComposedNode(std::string name,std::string type, bool toSaveRestoreLinks=true);
319 virtual int isValid();
320 void setExecState(int execState);
321 static bool tryCreateLink(SubjectNode *subOutNode, SubjectNode *subInNode);
322
323 protected:
324 virtual SubjectInputPort* addSubjectInputPort(YACS::ENGINE::InputPort *port,
325 std::string name = "");
326 virtual SubjectOutputPort* addSubjectOutputPort(YACS::ENGINE::OutputPort *port,
327 std::string name = "");
328 virtual SubjectInputDataStreamPort* addSubjectIDSPort(YACS::ENGINE::InputDataStreamPort *port,
329 std::string name = "");
331 std::string name = "");
332 virtual void notifyObserver(YACS::ENGINE::Node* object,const std::string& event);
333
335 std::list<SubjectInputPort*> _listSubjectInputPort;
336 std::list<SubjectOutputPort*> _listSubjectOutputPort;
337 std::list<SubjectInputDataStreamPort*> _listSubjectIDSPort;
338 std::list<SubjectOutputDataStreamPort*> _listSubjectODSPort;
339 std::list<SubjectLink*> _listSubjectLink;
340 std::list<SubjectControlLink*> _listSubjectControlLink;
342 std::list<YACS::ENGINE::OutGate *> loutgate;
343 std::list<YACS::ENGINE::InGate *> singate;
344 std::vector< std::pair<YACS::ENGINE::OutPort *, YACS::ENGINE::InPort *> > dataLinks;
345 std::vector< std::pair<YACS::ENGINE::OutPort *, YACS::ENGINE::InPort *> > dataflowLinks;
346 };
347
349 {
350 public:
352 virtual ~SubjectComposedNode();
353 virtual SubjectNode* addNode(YACS::ENGINE::Catalog *catalog,
354 std::string compo,
355 std::string type,
356 std::string name,
357 bool newCompoInst);
358 virtual SubjectNode* getChild(YACS::ENGINE::Node* node=0) const { return 0; }
359 virtual void loadChildren();
360 virtual void loadLinks();
361 virtual void completeChildrenSubjectList(SubjectNode *son);
363 std::string name = "",
364 YACS::ENGINE::Catalog *catalog = 0,
365 std::string compo = "",
366 std::string type ="");
368 SubjectDataPort *spo,
369 SubjectNode *sni,
370 SubjectDataPort *spi);
372 SubjectNode *sni);
373 virtual void removeLink(SubjectLink* link);
374 virtual void removeControlLink(SubjectControlLink* link);
375 virtual void removeExternalControlLinks();
376 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son);
377 virtual bool hasValue();
378 virtual std::string getValue();
379 virtual void clean(Command *command=0);
380 void localclean(Command *command=0);
382 protected:
384 std::string compo,
385 std::string type,
386 std::string name,
387 bool newCompoInst,
388 int swCase=0);
390 };
391
393 {
394 public:
395 SubjectBloc(YACS::ENGINE::Bloc *bloc, Subject *parent);
396 virtual ~SubjectBloc();
397 virtual SubjectNode* addNode(YACS::ENGINE::Catalog *catalog,
398 std::string compo,
399 std::string type,
400 std::string name,
401 bool newCompoInst);
402 virtual void removeNode(SubjectNode* child);
403 virtual void completeChildrenSubjectList(SubjectNode *son);
404 virtual SubjectNode* getChild(YACS::ENGINE::Node* node=0) const;
405 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
406 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son);
407 virtual void clean(Command *command=0);
408 void localclean(Command *command=0);
409 virtual TypeOfElem getType(){return BLOC;}
410 protected:
412 std::set<SubjectNode*> _children;
413 };
414
415 class SubjectComponent;
417 {
418 public:
419 static SubjectContainerBase *New(YACS::ENGINE::Container* container, Subject *parent);
421 virtual ~SubjectContainerBase();
422 virtual std::string getName();
423 virtual std::string getLabelForHuman() const = 0;
424 virtual bool setName(std::string name);
425 virtual YACS::ENGINE::Container *getContainer() const { return _container; }
426 virtual std::map<std::string, std::string> getProperties();
427 virtual bool setProperties(std::map<std::string, std::string> properties);
428 virtual SubjectReference* attachComponent(SubjectComponent* component);
429 virtual void detachComponent(SubjectComponent* component);
430 virtual void moveComponent(SubjectReference* reference);
431 virtual void removeSubComponentFromSet(SubjectComponent *component);
432 virtual void notifyComponentsChange(GuiEvent event, int type, Subject* son);
433 virtual void clean(Command *command=0);
434 void localclean(Command *command=0);
435 bool isUsed() { return !_subComponentSet.empty(); }
437 protected:
439 std::set<SubjectComponent*> _subComponentSet;
440 std::map<SubjectComponent*,SubjectReference*> _subReferenceMap;
441 };
442
444 {
445 public:
447 void registerUndoDestroy();
448 std::string getLabelForHuman() const { return std::string("Salome Container"); }
449 };
450
452 {
453 public:
455 void registerUndoDestroy();
456 YACS::ENGINE::Container *getContainer() const;
457 std::string getLabelForHuman() const { return std::string("Salome Homogeneous Pool Container"); }
458 };
459
460 class SubjectServiceNode;
462 {
463 public:
464 friend class SubjectNode;
466 virtual ~SubjectComponent();
467 virtual std::string getName();
468 virtual void setContainer();
469 virtual bool associateToContainer(SubjectContainerBase *subcont);
470 virtual SubjectReference* attachService(SubjectServiceNode* service);
471 virtual void detachService(SubjectServiceNode* service);
472 virtual void moveService(SubjectReference* reference);
473 virtual void removeSubServiceFromSet(SubjectServiceNode *service);
474 virtual bool setProperties(std::map<std::string, std::string> properties);
475 virtual std::map<std::string, std::string> getProperties();
476 virtual void notifyServicesChange(GuiEvent event, int type, Subject* son);
477 virtual std::pair<std::string, int> getKey();
478 virtual void clean(Command *command=0);
479 bool hasServices() { return !_subServiceSet.empty(); };
480 void localclean(Command *command=0);
481 YACS::ENGINE::ComponentInstance* getComponent() const;
482 virtual TypeOfElem getType(){return COMPONENT;}
484 protected:
485 int _id;
487 std::set<SubjectServiceNode*> _subServiceSet;
488 std::map<SubjectServiceNode*,SubjectReference*> _subReferenceMap;
489 };
490
492 {
493 public:
494 SubjectDataType(YACS::ENGINE::TypeCode *typeCode, Subject *parent, std::string alias);
495 virtual ~SubjectDataType();
496 virtual std::string getName();
497 virtual std::string getAlias();
499 virtual void clean(Command *command=0);
500 void localclean(Command *command=0);
501 virtual TypeOfElem getType(){return DATATYPE;}
502 protected:
504 std::string _alias;
505 };
506
508 {
509 public:
510 SubjectProc(YACS::ENGINE::Proc *proc, Subject *parent);
511 virtual ~SubjectProc();
512 void loadProc();
513 void loadComponents();
514 void loadContainers();
515 void loadTypes();
516 virtual SubjectComponent* addComponent(std::string compoName, std::string containerName="");
517 virtual SubjectContainerBase* addContainer(std::string name, std::string ref="");
518 virtual SubjectContainerBase* addHPContainer(std::string name, std::string ref="");
519 virtual bool addDataType(YACS::ENGINE::Catalog* catalog, std::string typeName);
524 void removeSubjectDataType(std::string typeName);
526 virtual void clean(Command *command=0);
527 void localclean(Command *command=0);
528 void addPostErase(Subject* sub) {_postEraseList.push_back(sub); };
529 void cleanPostErase();
530 virtual TypeOfElem getType(){return SALOMEPROC;}
531 protected:
533 std::vector<Subject*> _postEraseList;
534 };
535
537 {
538 public:
540 virtual ~SubjectForLoop();
541 virtual SubjectNode* addNode(YACS::ENGINE::Catalog *catalog,
542 std::string compo,
543 std::string type,
544 std::string name,
545 bool newCompoInst);
546 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
547 virtual void completeChildrenSubjectList(SubjectNode *son);
548 virtual SubjectNode* getChild(YACS::ENGINE::Node* node=0) const { return _body; }
549 virtual bool setNbSteps(std::string nbSteps);
550 virtual bool hasValue();
551 virtual std::string getValue();
552 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son);
553 virtual void clean(Command *command=0);
554 void localclean(Command *command=0);
555 virtual TypeOfElem getType(){return FORLOOP;}
556 protected:
559 };
560
562 {
563 public:
565 virtual ~SubjectWhileLoop();
566 virtual SubjectNode* addNode(YACS::ENGINE::Catalog *catalog,
567 std::string compo,
568 std::string type,
569 std::string name,
570 bool newCompoInst);
571 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
572 virtual void completeChildrenSubjectList(SubjectNode *son);
573 virtual SubjectNode* getChild(YACS::ENGINE::Node* node=0) const { return _body; }
574 virtual bool setCondition(std::string condition);
575 virtual bool hasValue();
576 virtual std::string getValue();
577 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son);
578 virtual void clean(Command *command=0);
579 void localclean(Command *command=0);
580 virtual TypeOfElem getType(){return WHILELOOP;}
581 protected:
584 };
585
587 {
588 public:
589 SubjectSwitch(YACS::ENGINE::Switch *aSwitch, Subject *parent);
590 virtual ~SubjectSwitch();
591 virtual SubjectNode* addNode(YACS::ENGINE::Catalog *catalog,
592 std::string compo,
593 std::string type,
594 std::string name,
595 bool newCompoInst,
596 int swCase,
597 bool replace = false);
598 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
599 virtual void removeNode(SubjectNode* son);
600 std::map<int, SubjectNode*> getBodyMap();
601 virtual void completeChildrenSubjectList(SubjectNode *son);
602 virtual SubjectNode* getChild(YACS::ENGINE::Node* node=0) const;
603 virtual bool setSelect(std::string select);
604 virtual bool setCase(std::string caseId, SubjectNode* snode);
605 virtual bool hasValue();
606 virtual std::string getValue();
607 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son);
608 virtual void clean(Command *command=0);
609 void localclean(Command *command=0);
610 virtual TypeOfElem getType(){return SWITCH;}
611 protected:
613 std::map<int, SubjectNode*> _bodyMap;
614 };
615
617 {
618 public:
620 virtual ~SubjectDynParaLoop();
621 virtual SubjectNode * addNode(YACS::ENGINE::Catalog * catalog,
622 std::string compo,
623 std::string type,
624 std::string name,
625 bool newCompoInst);
626 virtual void recursiveUpdate(GuiEvent event, int type, Subject * son);
627 virtual void completeChildrenSubjectList(SubjectNode * son);
628 virtual void removeNode(SubjectNode * child);
629 virtual SubjectNode * getChild(YACS::ENGINE::Node * node = NULL) const;
630 virtual bool setNbBranches(std::string nbBranches);
631 virtual bool hasValue();
632 virtual std::string getValue();
633 virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode * son);
634 virtual void clean(Command * command = NULL);
635 void localclean(Command * command = NULL);
636 protected:
641 };
642
644 {
645 public:
647 virtual ~SubjectForEachLoop();
648 virtual void completeChildrenSubjectList(SubjectNode *son);
649 virtual void removeNode(SubjectNode * child);
650 virtual void clean(Command *command=0);
651 void localclean(Command *command=0);
652 virtual TypeOfElem getType(){return FOREACHLOOP;}
653 protected:
656 };
657
659 {
660 public:
662 virtual ~SubjectOptimizerLoop();
663 virtual void clean(Command *command=0);
664 void localclean(Command *command=0);
666 virtual bool setAlgorithm(const std::string& alglib,const std::string& symbol);
667 protected:
669 };
670
672 {
673 public:
675 virtual ~SubjectElementaryNode();
676 virtual void recursiveUpdate(GuiEvent event, int type, Subject* son);
677 virtual SubjectDataPort* addInputPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name);
678 virtual SubjectDataPort* addOutputPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name);
679 virtual SubjectDataPort* addIDSPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name);
680 virtual SubjectDataPort* addODSPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name);
681 virtual bool OrderDataPorts(SubjectDataPort* portToMove, int isUp);
682 virtual void removePort(SubjectDataPort* port);
683 virtual void loadChildren();
684 virtual void clean(Command *command=0);
685 void localclean(Command *command=0);
686 virtual void saveLinks();
687 virtual void restoreLinks();
688 protected:
690 };
691
693 {
694 public:
696 virtual ~SubjectInlineNode();
697 virtual bool setScript(std::string script);
698 virtual std::string getScript();
699 virtual void clean(Command *command=0);
700 void localclean(Command *command=0);
701 virtual bool setContainer(SubjectContainerBase *scont);
702 virtual bool setExecutionMode(const std::string& mode);
703 protected:
705 };
706
708 {
709 public:
711 virtual ~SubjectPythonNode();
712 virtual void clean(Command *command=0);
713 void localclean(Command *command=0);
714 virtual TypeOfElem getType(){return PYTHONNODE;}
715 protected:
717 };
718
720 {
721 public:
723 virtual ~SubjectPyFuncNode();
724 virtual bool setFunctionName(std::string funcName);
725 virtual void clean(Command *command=0);
726 void localclean(Command *command=0);
727 virtual TypeOfElem getType(){return PYFUNCNODE;}
728 protected:
730 };
731
733 {
736 public:
738 virtual ~SubjectServiceNode();
740 std::string compo,
741 std::string service);
742 virtual void setComponent();
743 virtual bool associateToComponent(SubjectComponent *subcomp);
746 virtual void addSubjectReference(Subject *ref);
748 virtual void clean(Command *command=0);
749 void localclean(Command *command=0);
750 protected:
754 };
755
757 {
758 public:
760 virtual ~SubjectCORBANode();
761 virtual void clean(Command *command=0);
762 void localclean(Command *command=0);
763 virtual TypeOfElem getType(){return CORBANODE;}
764 protected:
766 };
767
769 {
770 public:
772 virtual ~SubjectCppNode();
773 virtual void clean(Command *command=0);
774 void localclean(Command *command=0);
775 virtual TypeOfElem getType(){return CPPNODE;}
776 protected:
778 };
779
781 {
782 public:
784 virtual ~SubjectSalomeNode();
785 virtual void clean(Command *command=0);
786 void localclean(Command *command=0);
787 virtual TypeOfElem getType(){return SALOMENODE;}
788 protected:
790 };
791
793 {
794 public:
796 Subject *parent);
797 virtual ~SubjectSalomePythonNode();
798 virtual void clean(Command *command=0);
799 void localclean(Command *command=0);
801 protected:
803 };
804
806 {
807 public:
809 virtual ~SubjectXmlNode();
810 virtual void clean(Command *command=0);
811 void localclean(Command *command=0);
812 virtual TypeOfElem getType(){return XMLNODE;}
813 protected:
815 };
816
818 {
819 public:
821 virtual ~SubjectSplitterNode();
822 virtual std::string getName();
823 virtual void clean(Command *command=0);
824 void localclean(Command *command=0);
825 virtual TypeOfElem getType(){return SPLITTERNODE;}
826 protected:
828 };
829
831 {
832 public:
834 virtual ~SubjectDataNode();
835 virtual void clean(Command *command=0);
836 void localclean(Command *command=0);
837 protected:
839 };
840
842 {
843 public:
845 virtual ~SubjectPresetNode();
846 virtual void clean(Command *command=0);
847 void localclean(Command *command=0);
848 virtual TypeOfElem getType(){return PRESETNODE;}
849 protected:
851 };
852
854 {
855 public:
857 virtual ~SubjectOutNode();
858 virtual void clean(Command *command=0);
859 void localclean(Command *command=0);
860 virtual TypeOfElem getType(){return OUTNODE;}
861 protected:
863 };
864
866 {
867 public:
869 virtual ~SubjectStudyInNode();
870 virtual void clean(Command *command=0);
871 void localclean(Command *command=0);
872 virtual TypeOfElem getType(){return STUDYINNODE;}
873 protected:
875 };
876
878 {
879 public:
881 virtual ~SubjectStudyOutNode();
882 virtual void clean(Command *command=0);
883 void localclean(Command *command=0);
884 virtual TypeOfElem getType(){return STUDYOUTNODE;}
885 protected:
887 };
888
889 class SubjectLink: public Subject
890 {
891 public:
892 SubjectLink(SubjectNode* subOutNode,
893 SubjectDataPort* outPort,
894 SubjectNode* subInNode,
895 SubjectDataPort* inPort,
896 Subject *parent);
897 virtual ~SubjectLink();
898 virtual std::string getName();
899 virtual void clean(Command *command=0);
900 void localclean(Command *command=0);
905 virtual bool setProperties(std::map<std::string, std::string> properties);
906 virtual std::map<std::string, std::string> getProperties();
907 virtual std::vector<std::string> knownProperties();
908 virtual TypeOfElem getType(){return DATALINK;}
909 void registerUndoDestroy();
910 protected:
915 std::string _name;
919 };
920
922 {
923 public:
925 SubjectNode* subInNode,
926 Subject *parent);
927 virtual ~SubjectControlLink();
928 virtual std::string getName();
929 virtual void clean(Command *command=0);
930 void localclean(Command *command=0);
933 virtual TypeOfElem getType(){return CONTROLLINK;}
934 void registerUndoDestroy();
935 protected:
938 std::string _name;
940 };
941
942 }
943}
944#endif
#define HMI_EXPORT
Definition: HMIExport.hxx:30
Composed node to group elementary and composed nodes.
Definition: Bloc.hxx:36
Class for CORBA Service Node.
Definition: CORBANode.hxx:45
class for YACS catalogs.
Definition: Catalog.hxx:42
Base class for all component instances.
Base class for all composed nodes.
Class for C++ Nodes (in process component)
Definition: CppNode.hxx:47
Class for data parameters specification.
Definition: DataNode.hxx:38
Base class for dynamically (fully or semifully) built graphs.
Definition: DynParaLoop.hxx:41
Base class for all calculation nodes.
Class for for loop node.
Definition: ForLoop.hxx:33
Class for calculation node (script) inlined (and executed) in the schema.
Definition: InlineNode.hxx:44
Base class for Input Ports.
Definition: InputPort.hxx:44
Base class for all nodes.
Definition: Node.hxx:70
Base class for observer in observer pattern.
Definition: Dispatcher.hxx:46
class to build optimization loops
Class for data out node.
Definition: OutNode.hxx:30
Class for data in node.
Definition: PresetNode.hxx:31
Base class for all schema objects.
Definition: Proc.hxx:44
Class for Salome component Service Node.
Definition: CORBANode.hxx:68
Class for calculation node associated with a component service.
Definition: ServiceNode.hxx:35
Control node that emulates the C switch.
Definition: Switch.hxx:85
Base class for all type objects.
Definition: TypeCode.hxx:68
Class for a while loop.
Definition: WhileLoop.hxx:39
static std::map< int, std::string > _eventNameMap
std::set< Subject * > _subjectSet
virtual void clean(Command *command=0)
virtual void removeNode(SubjectNode *child)
virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son)
virtual TypeOfElem getType()
YACS::ENGINE::Bloc * _bloc
virtual void completeChildrenSubjectList(SubjectNode *son)
void localclean(Command *command=0)
virtual SubjectNode * addNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst)
std::set< SubjectNode * > _children
SubjectBloc(YACS::ENGINE::Bloc *bloc, Subject *parent)
virtual void recursiveUpdate(GuiEvent event, int type, Subject *son)
virtual SubjectNode * getChild(YACS::ENGINE::Node *node=0) const
SubjectCORBANode(YACS::ENGINE::CORBANode *corbaNode, Subject *parent)
virtual TypeOfElem getType()
YACS::ENGINE::CORBANode * _corbaNode
virtual void clean(Command *command=0)
void localclean(Command *command=0)
std::map< SubjectServiceNode *, SubjectReference * > _subReferenceMap
virtual TypeOfElem getType()
YACS::ENGINE::ComponentInstance * _compoInst
std::set< SubjectServiceNode * > _subServiceSet
SubjectReference * _subRefContainer
virtual void removeExternalControlLinks()
virtual SubjectNode * addNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst)
SubjectControlLink * addSubjectControlLink(SubjectNode *sno, SubjectNode *sni)
virtual SubjectNode * getChild(YACS::ENGINE::Node *node=0) const
virtual void clean(Command *command=0)
void localclean(Command *command=0)
SubjectComposedNode(YACS::ENGINE::ComposedNode *composedNode, Subject *parent)
virtual void removeControlLink(SubjectControlLink *link)
virtual std::string getValue()
SubjectNode * addSubjectNode(YACS::ENGINE::Node *node, std::string name="", YACS::ENGINE::Catalog *catalog=0, std::string compo="", std::string type="")
virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son)
virtual void removeLink(SubjectLink *link)
SubjectLink * addSubjectLink(SubjectNode *sno, SubjectDataPort *spo, SubjectNode *sni, SubjectDataPort *spi)
static SubjectComposedNode * getLowestCommonAncestor(SubjectNode *snode1, SubjectNode *snode2)
Retrieves the lowest common ancestor of 2 nodes.
virtual SubjectNode * createNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst, int swCase=0)
virtual void completeChildrenSubjectList(SubjectNode *son)
YACS::ENGINE::ComposedNode * _composedNode
virtual YACS::ENGINE::Container * getContainer() const
std::map< SubjectComponent *, SubjectReference * > _subReferenceMap
virtual std::string getLabelForHuman() const =0
std::set< SubjectComponent * > _subComponentSet
YACS::ENGINE::Container * _container
std::string getLabelForHuman() const
virtual TypeOfElem getType()
YACS::ENGINE::CppNode * _cppNode
SubjectCppNode(YACS::ENGINE::CppNode *cppNode, Subject *parent)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
YACS::ENGINE::DataNode * _dataNode
void localclean(Command *command=0)
virtual void clean(Command *command=0)
SubjectDataNode(YACS::ENGINE::DataNode *dataNode, Subject *parent)
void addSubjectLink(SubjectLink *subject)
std::list< SubjectLink * > _listSubjectLink
std::list< SubjectLink * > getListOfSubjectLink()
void removeSubjectLink(SubjectLink *subject)
YACS::ENGINE::DataPort * _dataPort
virtual YACS::ENGINE::TypeCode * getTypeCode()
YACS::ENGINE::TypeCode * _typeCode
virtual TypeOfElem getType()
void localclean(Command *command=0)
SubjectDataType(YACS::ENGINE::TypeCode *typeCode, Subject *parent, std::string alias)
virtual std::string getAlias()
virtual std::string getName()
virtual void clean(Command *command=0)
virtual void clean(Command *command=NULL)
virtual SubjectNode * addNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst)
virtual SubjectNode * getChild(YACS::ENGINE::Node *node=NULL) const
YACS::ENGINE::DynParaLoop * _dynParaLoop
virtual std::string getValue()
virtual void removeNode(SubjectNode *child)
virtual void recursiveUpdate(GuiEvent event, int type, Subject *son)
virtual bool setNbBranches(std::string nbBranches)
void localclean(Command *command=NULL)
SubjectDynParaLoop(YACS::ENGINE::DynParaLoop *dynParaLoop, Subject *parent)
virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son)
virtual void completeChildrenSubjectList(SubjectNode *son)
virtual bool OrderDataPorts(SubjectDataPort *portToMove, int isUp)
SubjectElementaryNode(YACS::ENGINE::ElementaryNode *elementaryNode, Subject *parent)
void localclean(Command *command=0)
virtual SubjectDataPort * addInputPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name)
virtual void clean(Command *command=0)
virtual SubjectDataPort * addIDSPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name)
virtual void removePort(SubjectDataPort *port)
virtual SubjectDataPort * addODSPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name)
YACS::ENGINE::ElementaryNode * _elementaryNode
virtual void recursiveUpdate(GuiEvent event, int type, Subject *son)
virtual SubjectDataPort * addOutputPort(YACS::ENGINE::Catalog *catalog, std::string type, std::string name)
virtual TypeOfElem getType()
SubjectForEachLoop(YACS::ENGINE::ForEachLoopGen *forEachLoop, Subject *parent)
YACS::ENGINE::ForEachLoopGen * _forEachLoop
virtual void removeNode(SubjectNode *child)
virtual void completeChildrenSubjectList(SubjectNode *son)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son)
virtual SubjectNode * addNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst)
YACS::ENGINE::ForLoop * _forLoop
SubjectForLoop(YACS::ENGINE::ForLoop *forLoop, Subject *parent)
virtual void clean(Command *command=0)
virtual std::string getValue()
virtual void completeChildrenSubjectList(SubjectNode *son)
virtual bool setNbSteps(std::string nbSteps)
virtual void recursiveUpdate(GuiEvent event, int type, Subject *son)
virtual SubjectNode * getChild(YACS::ENGINE::Node *node=0) const
virtual TypeOfElem getType()
void localclean(Command *command=0)
std::string getLabelForHuman() const
virtual bool setScript(std::string script)
SubjectInlineNode(YACS::ENGINE::InlineNode *inlineNode, Subject *parent)
void localclean(Command *command=0)
YACS::ENGINE::InlineNode * _inlineNode
virtual std::string getScript()
virtual bool setExecutionMode(const std::string &mode)
virtual void clean(Command *command=0)
virtual bool setContainer(SubjectContainerBase *scont)
virtual void clean(Command *command=0)
YACS::ENGINE::InputDataStreamPort * _inputDataStreamPort
void localclean(Command *command=0)
virtual std::map< std::string, std::string > getProperties()
SubjectInputDataStreamPort(YACS::ENGINE::InputDataStreamPort *port, Subject *parent)
virtual std::vector< std::string > knownProperties()
virtual bool setProperties(std::map< std::string, std::string > properties)
SubjectInputPort(YACS::ENGINE::InputPort *port, Subject *parent)
virtual void clean(Command *command=0)
void localclean(Command *command=0)
virtual bool setValue(std::string value)
YACS::ENGINE::InputPort * _inputPort
virtual TypeOfElem getType()
std::list< YACS::ENGINE::OutGate * > loutgate
void removeSubjectControlLink(SubjectControlLink *sub)
std::list< SubjectControlLink * > getSubjectControlLinks() const
std::list< SubjectOutputPort * > _listSubjectOutputPort
std::list< SubjectInputPort * > getSubjectInputPorts() const
YACS::ENGINE::Node * _node
SubjectControlLink * addSubjectControlLink(SubjectControlLink *sub)
std::vector< std::pair< YACS::ENGINE::OutPort *, YACS::ENGINE::InPort * > > dataLinks
std::list< SubjectLink * > _listSubjectLink
std::list< SubjectLink * > getSubjectLinks() const
std::list< SubjectInputDataStreamPort * > getSubjectInputDataStreamPorts() const
std::vector< std::pair< YACS::ENGINE::OutPort *, YACS::ENGINE::InPort * > > dataflowLinks
std::list< SubjectInputPort * > _listSubjectInputPort
std::list< SubjectOutputDataStreamPort * > getSubjectOutputDataStreamPorts() const
std::list< SubjectOutputDataStreamPort * > _listSubjectODSPort
std::list< SubjectInputDataStreamPort * > _listSubjectIDSPort
std::list< SubjectControlLink * > _listSubjectControlLink
std::list< SubjectOutputPort * > getSubjectOutputPorts() const
std::list< YACS::ENGINE::InGate * > singate
YACS::ENGINE::OptimizerLoop * _optimizerLoop
virtual TypeOfElem getType()
SubjectOptimizerLoop(YACS::ENGINE::OptimizerLoop *optimizerLoop, Subject *parent)
virtual bool setAlgorithm(const std::string &alglib, const std::string &symbol)
virtual void clean(Command *command=0)
void localclean(Command *command=0)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
virtual TypeOfElem getType()
SubjectOutNode(YACS::ENGINE::OutNode *outNode, Subject *parent)
YACS::ENGINE::OutNode * _outNode
virtual bool setProperties(std::map< std::string, std::string > properties)
YACS::ENGINE::OutputDataStreamPort * _outputDataStreamPort
virtual std::map< std::string, std::string > getProperties()
SubjectOutputDataStreamPort(YACS::ENGINE::OutputDataStreamPort *port, Subject *parent)
virtual void clean(Command *command=0)
YACS::ENGINE::OutputPort * _outputPort
virtual void clean(Command *command=0)
void localclean(Command *command=0)
virtual bool setValue(std::string value)
virtual TypeOfElem getType()
SubjectOutputPort(YACS::ENGINE::OutputPort *port, Subject *parent)
virtual TypeOfElem getType()
YACS::ENGINE::PresetNode * _presetNode
SubjectPresetNode(YACS::ENGINE::PresetNode *presetNode, Subject *parent)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
std::vector< Subject * > _postEraseList
YACS::ENGINE::Proc * _proc
SubjectProc(YACS::ENGINE::Proc *proc, Subject *parent)
virtual SubjectContainerBase * addHPContainer(std::string name, std::string ref="")
SubjectContainerBase * addSubjectContainer(YACS::ENGINE::Container *cont, std::string name="")
virtual SubjectComponent * addComponent(std::string compoName, std::string containerName="")
virtual bool addDataType(YACS::ENGINE::Catalog *catalog, std::string typeName)
virtual void clean(Command *command=0)
virtual SubjectContainerBase * addContainer(std::string name, std::string ref="")
void addPostErase(Subject *sub)
virtual TypeOfElem getType()
SubjectDataType * addSubjectDataType(YACS::ENGINE::TypeCode *type, std::string alias)
void loadTypes()
Load types for a SubjectProc.
SubjectDataType * addComSubjectDataType(YACS::ENGINE::TypeCode *type, std::string alias)
void localclean(Command *command=0)
void removeSubjectContainer(SubjectContainerBase *scont)
SubjectComponent * addSubjectComponent(YACS::ENGINE::ComponentInstance *compo)
void removeSubjectDataType(std::string typeName)
SubjectPyFuncNode(YACS::ENGINE::PyFuncNode *pyFuncNode, Subject *parent)
virtual bool setFunctionName(std::string funcName)
virtual void clean(Command *command=0)
YACS::ENGINE::PyFuncNode * _pyFuncNode
void localclean(Command *command=0)
virtual TypeOfElem getType()
YACS::ENGINE::PythonNode * _pythonNode
virtual TypeOfElem getType()
virtual void clean(Command *command=0)
SubjectPythonNode(YACS::ENGINE::PythonNode *pythonNode, Subject *parent)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
virtual TypeOfElem getType()
SubjectReference(Subject *ref, Subject *parent)
void localclean(Command *command=0)
virtual void reparent(Subject *parent)
virtual Subject * getReference() const
virtual std::string getName()
SubjectSalomeNode(YACS::ENGINE::SalomeNode *salomeNode, Subject *parent)
virtual TypeOfElem getType()
void localclean(Command *command=0)
virtual void clean(Command *command=0)
YACS::ENGINE::SalomeNode * _salomeNode
void localclean(Command *command=0)
virtual void clean(Command *command=0)
YACS::ENGINE::SalomePythonNode * _salomePythonNode
SubjectSalomePythonNode(YACS::ENGINE::SalomePythonNode *salomePythonNode, Subject *parent)
SubjectReference * _subjectReference
void localclean(Command *command=0)
virtual void clean(Command *command=0)
SubjectReference * _subRefComponent
virtual SubjectReference * getSubjectReference()
virtual void setComponentFromCatalog(YACS::ENGINE::Catalog *catalog, std::string compo, std::string service)
YACS::ENGINE::ServiceNode * _serviceNode
virtual void removeSubRefComponent()
virtual bool associateToComponent(SubjectComponent *subcomp)
virtual void addSubjectReference(Subject *ref)
SubjectServiceNode(YACS::ENGINE::ServiceNode *serviceNode, Subject *parent)
virtual void removeSubjectReference()
virtual TypeOfElem getType()
virtual std::string getName()
void localclean(Command *command=0)
YACS::ENGINE::SplitterNode * _splitterNode
SubjectSplitterNode(YACS::ENGINE::SplitterNode *splitterNode, Subject *parent)
virtual void clean(Command *command=0)
virtual TypeOfElem getType()
void localclean(Command *command=0)
SubjectStudyInNode(YACS::ENGINE::StudyInNode *studyInNode, Subject *parent)
YACS::ENGINE::StudyInNode * _studyInNode
virtual void clean(Command *command=0)
YACS::ENGINE::StudyOutNode * _studyOutNode
virtual TypeOfElem getType()
SubjectStudyOutNode(YACS::ENGINE::StudyOutNode *studyOutNode, Subject *parent)
void localclean(Command *command=0)
virtual void clean(Command *command=0)
YACS::ENGINE::Switch * _switch
virtual TypeOfElem getType()
std::map< int, SubjectNode * > _bodyMap
virtual std::string getValue()
virtual void completeChildrenSubjectList(SubjectNode *son)
virtual bool setCondition(std::string condition)
SubjectWhileLoop(YACS::ENGINE::WhileLoop *whileLoop, Subject *parent)
virtual void clean(Command *command=0)
YACS::ENGINE::WhileLoop * _whileLoop
virtual SubjectNode * addNode(YACS::ENGINE::Catalog *catalog, std::string compo, std::string type, std::string name, bool newCompoInst)
virtual void recursiveUpdate(GuiEvent event, int type, Subject *son)
virtual void houseKeepingAfterCutPaste(bool isCut, SubjectNode *son)
void localclean(Command *command=0)
virtual SubjectNode * getChild(YACS::ENGINE::Node *node=0) const
virtual TypeOfElem getType()
SubjectXmlNode(YACS::ENGINE::XmlNode *xmlNode, Subject *parent)
YACS::ENGINE::XmlNode * _xmlNode
virtual void clean(Command *command=0)
virtual TypeOfElem getType()
void localclean(Command *command=0)
std::string _progress
std::set< GuiObserver * > _setObs
virtual TypeOfElem getType()
virtual std::string getProgress()
@ OUTPUTDATASTREAMPORT
@ INPUTDATASTREAMPORT
def ref(target, callback=None)
Definition: CONNECTOR.py:120