]> SALOME platform Git repositories - modules/yacs.git/blob - src/genericgui/Menus.cxx
Salome HOME
1) Fix problem that new node does not have the usual ports ("nbBranches", evalSample...
[modules/yacs.git] / src / genericgui / Menus.cxx
1 // Copyright (C) 2006-2013  CEA/DEN, EDF R&D
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.
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 #include "Menus.hxx"
21 #include "QtGuiContext.hxx"
22 #include "guiObservers.hxx"
23 #include "DataPort.hxx"
24 #include "DataNode.hxx"
25 #include "ServiceNode.hxx"
26 #include "InlineNode.hxx"
27
28 #include <QMenu>
29
30 //#define _DEVDEBUG_
31 #include "YacsTrace.hxx"
32
33 using namespace std;
34 using namespace YACS::HMI;
35 using namespace YACS::ENGINE;
36
37 //=======================================================================================
38
39 MenusBase::MenusBase()
40 {
41   _dummyAct = new QAction(tr("Elapse Time Statistics"), this);
42 //   _dummyAct->setShortcut(tr("Ctrl+y"));
43   _dummyAct->setStatusTip(tr("Elapse Time Statistics"));
44   _dummyAct->setToolTip(tr("Elapse Time Statistics"));
45   connect(_dummyAct, SIGNAL(triggered()), this, SLOT(dummyAction()));
46 }
47
48 MenusBase::~MenusBase()
49 {
50 }
51
52 void MenusBase::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
53 {
54   QMenu menu(m, caller);
55   menu.addAction(_dummyAct);
56   menu.exec(globalPos);
57 }
58
59 void MenusBase::dummyAction()
60 {
61   DEBTRACE("MenusBase::dummyAction");
62   QtGuiContext::_counters->stats();
63 }
64
65 void MenusBase::foreachAction(QAction* act)
66 {
67   DEBTRACE(act->text().toStdString());
68   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
69   gmain->createForEachLoop(act->text().toStdString());
70 }
71
72 void MenusBase::putGraphInForeachAction(QAction* act)
73 {
74   DEBTRACE(act->text().toStdString());
75   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
76   gmain->putGraphInForeachLoop(act->text().toStdString());
77 }
78
79 void MenusBase::addHeader(QMenu &m, const QString &h)
80 {
81   m.addAction(_dummyAct);
82   _dummyAct->setText(h);
83   QFont f = _dummyAct->font();
84   f.setBold(true);
85   _dummyAct->setFont(f);
86   m.addSeparator();
87 }
88
89 void MenusBase::buildForEachMenu(QMenu *m, QActionGroup* actgroup)
90 {
91   QPixmap pixmap;
92   pixmap.load("icons:new_foreach_loop_node.png");
93
94   QMenu *ForEachMenu=m->addMenu(QIcon(pixmap),"ForEach Loop");
95
96   Proc* proc = GuiContext::getCurrent()->getProc();
97   std::map<std::string, TypeCode*>::const_iterator it = proc->typeMap.begin();
98   QAction* act;
99   for (; it != proc->typeMap.end(); ++it)
100     {
101       act=actgroup->addAction((*it).first.c_str());
102       ForEachMenu->addAction(act);
103     }
104 }
105
106 void MenusBase::addForEachMenu(QMenu *m, QActionGroup* actgroup)
107 {
108   buildForEachMenu(m, actgroup);
109   connect(actgroup, SIGNAL(triggered(QAction*)), this, SLOT(foreachAction(QAction*)));
110 }
111
112 void MenusBase::addForEachMenuToPutGraph(QMenu *m, QActionGroup* actgroup)
113 {
114   buildForEachMenu(m, actgroup);
115   connect(actgroup, SIGNAL(triggered(QAction*)), this, SLOT(putGraphInForeachAction(QAction*)));
116 }
117
118 //=======================================================================================
119
120 ComposedNodeMenu::ComposedNodeMenu() : MenusBase()
121 {
122 }
123
124 ComposedNodeMenu::~ComposedNodeMenu()
125 {
126 }
127
128 void ComposedNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
129 {
130   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
131   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
132   QMenu menu(m, caller);
133   QActionGroup actgroup(this);
134   addHeader(menu, m);
135   if (isEdition)
136     {
137       QMenu *CNmenu = menu.addMenu(tr("Create Node"));
138       CNmenu->addAction(gmain->_nodeFromCatalogAct);
139       //   CNmenu->addSeparator();
140       //   CNmenu->addAction(gmain->_cppNodeAct);
141       //   CNmenu->addAction(gmain->_XMLNodeAct);
142       CNmenu->addSeparator();
143       CNmenu->addAction(gmain->_inlineScriptNodeAct);
144       CNmenu->addAction(gmain->_inlineFunctionNodeAct);
145       CNmenu->addSeparator();
146       CNmenu->addAction(gmain->_inDataNodeAct);
147       CNmenu->addAction(gmain->_outDataNodeAct);
148       CNmenu->addAction(gmain->_inStudyNodeAct);
149       CNmenu->addAction(gmain->_outStudyNodeAct);
150       CNmenu->addSeparator();
151       CNmenu->addAction(gmain->_blockNodeAct);
152       CNmenu->addSeparator();
153       CNmenu->addAction(gmain->_FORNodeAct);
154       addForEachMenu(CNmenu,&actgroup);
155       CNmenu->addAction(gmain->_WHILENodeAct);
156       CNmenu->addAction(gmain->_SWITCHNodeAct);
157       CNmenu->addAction(gmain->_OptimizerLoopAct);
158       menu.addSeparator();
159     }
160 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
161   menu.addAction(gmain->_arrangeLocalNodesAct);
162   menu.addAction(gmain->_arrangeRecurseNodesAct);
163   menu.addSeparator();
164   menu.addAction(gmain->_showOnlyCtrlLinksAct);
165   menu.addAction(gmain->_showCtrlLinksAct);
166   menu.addAction(gmain->_hideCtrlLinksAct);
167   menu.addAction(gmain->_emphasisPortLinksAct);
168   menu.addAction(gmain->_deEmphasizeAllAct);
169   menu.addSeparator();
170   menu.addAction(gmain->_zoomToBlocAct);
171   menu.addAction(gmain->_centerOnNodeAct);
172   menu.addAction(gmain->_shrinkExpand);
173   menu.addAction(gmain->_computeLinkAct);
174 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
175 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
176 //   menu.addAction(gmain->_toggleForce2NodesLinkAct);
177 //   menu.addAction(gmain->_toggleAddRowColsAct);
178   if (isEdition)
179     {
180       menu.addSeparator();
181       menu.addAction(gmain->_deleteItemAct);
182       menu.addAction(gmain->_cutItemAct);
183       menu.addAction(gmain->_copyItemAct);
184       menu.addAction(gmain->_pasteItemAct);
185       menu.addAction(gmain->_putInBlocAct);
186
187       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
188       SubjectNode *sin = dynamic_cast<SubjectNode*>(sub);
189       if(sin && !sin->isValid())
190         {
191           menu.addSeparator();
192           menu.addAction(gmain->_getErrorReportAct);
193           menu.addAction(gmain->_getErrorDetailsAct);
194         }
195     }
196   else
197     {
198       menu.addAction(gmain->_getErrorReportAct);
199       menu.addAction(gmain->_getErrorDetailsAct);
200     }
201   menu.exec(globalPos);
202 }
203
204 //=======================================================================================
205
206 ProcMenu::ProcMenu() : MenusBase()
207 {
208 }
209
210 ProcMenu::~ProcMenu()
211 {
212 }
213
214 void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
215 {
216   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
217   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
218   QMenu menu(m, caller);
219   addHeader(menu, m);
220   QActionGroup actgroup(this);
221   QActionGroup actgroup2(this);
222   if (isEdition)
223     {
224       menu.addAction(gmain->_runLoadedSchemaAct);
225       menu.addSeparator();
226       menu.addAction(gmain->_importDataTypeAct);
227       menu.addAction(gmain->_newContainerAct);
228       QMenu *CNmenu = menu.addMenu(tr("Create Node"));
229       CNmenu->addAction(gmain->_nodeFromCatalogAct);
230       //   CNmenu->addSeparator();
231       //   CNmenu->addAction(gmain->_cppNodeAct);
232       //   CNmenu->addAction(gmain->_XMLNodeAct);
233       CNmenu->addSeparator();
234       CNmenu->addAction(gmain->_inlineScriptNodeAct);
235       CNmenu->addAction(gmain->_inlineFunctionNodeAct);
236       CNmenu->addSeparator();
237       CNmenu->addAction(gmain->_inDataNodeAct);
238       CNmenu->addAction(gmain->_outDataNodeAct);
239       CNmenu->addAction(gmain->_inStudyNodeAct);
240       CNmenu->addAction(gmain->_outStudyNodeAct);
241       CNmenu->addSeparator();
242       CNmenu->addAction(gmain->_blockNodeAct);
243       CNmenu->addSeparator();
244       CNmenu->addAction(gmain->_FORNodeAct);
245       addForEachMenu(CNmenu,&actgroup);
246       CNmenu->addAction(gmain->_WHILENodeAct);
247       CNmenu->addAction(gmain->_SWITCHNodeAct);
248       CNmenu->addAction(gmain->_OptimizerLoopAct);
249       menu.addSeparator();
250       menu.addAction(gmain->_pasteItemAct);
251
252       QMenu *PINmenu = menu.addMenu(tr("Put Graph Content in Node"));
253       PINmenu->addAction(gmain->_putGraphInBlocAct);
254       PINmenu->addSeparator();
255       PINmenu->addAction(gmain->_putGraphInForLoopAct);
256       addForEachMenuToPutGraph(PINmenu,&actgroup2);
257       PINmenu->addAction(gmain->_putGraphInWhileLoopAct);
258       PINmenu->addAction(gmain->_putGraphInOptimizerLoopAct);
259
260       menu.addSeparator();
261     }
262   menu.addAction(gmain->_getYacsContainerLogAct);
263   menu.addSeparator();
264   menu.addAction(gmain->_showAllLinksAct);
265   menu.addAction(gmain->_hideAllLinksAct);
266   menu.addAction(gmain->_deEmphasizeAllAct);
267   menu.addSeparator();
268 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
269   menu.addAction(gmain->_arrangeLocalNodesAct);
270   menu.addAction(gmain->_arrangeRecurseNodesAct);
271   menu.addSeparator();
272   menu.addAction(gmain->_zoomToBlocAct);
273   menu.addAction(gmain->_centerOnNodeAct);
274   menu.addAction(gmain->_computeLinkAct);
275 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
276 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
277 //   menu.addAction(gmain->_toggleForce2NodesLinkAct);
278 //   menu.addAction(gmain->_toggleAddRowColsAct);
279   if (!isEdition)
280     {
281       menu.addAction(gmain->_getErrorReportAct);
282       menu.addAction(gmain->_getErrorDetailsAct);
283       menu.addAction(gmain->_shutdownProcAct);
284     }
285   menu.exec(globalPos);
286 }
287
288 //=======================================================================================
289
290 NodeMenu::NodeMenu() : MenusBase()
291 {
292 }
293
294 NodeMenu::~NodeMenu()
295 {
296 }
297
298 void NodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
299 {
300   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
301   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
302   QMenu menu(m, caller);
303   addHeader(menu, m);
304   if (isEdition)
305     {
306       menu.addAction(gmain->_deleteItemAct);
307       menu.addAction(gmain->_cutItemAct);
308       menu.addAction(gmain->_copyItemAct);
309       menu.addAction(gmain->_pasteItemAct);
310     }
311   menu.addSeparator();
312   menu.addAction(gmain->_showOnlyCtrlLinksAct);
313   menu.addAction(gmain->_showCtrlLinksAct);
314   menu.addAction(gmain->_hideCtrlLinksAct);
315   menu.addAction(gmain->_emphasisPortLinksAct);
316   menu.addAction(gmain->_deEmphasizeAllAct);
317   menu.addSeparator();
318   menu.addAction(gmain->_zoomToBlocAct);
319   menu.addAction(gmain->_centerOnNodeAct);
320   menu.exec(globalPos);
321 }
322
323 //=======================================================================================
324
325 HeaderNodeMenu::HeaderNodeMenu() : MenusBase()
326 {
327 }
328
329 HeaderNodeMenu::~HeaderNodeMenu()
330 {
331 }
332
333 void HeaderNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
334 {
335   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
336   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
337   QMenu menu(m, caller);
338   addHeader(menu, m);
339   if (isEdition)
340     {
341       menu.addAction(gmain->_deleteItemAct);
342     }
343   menu.exec(globalPos);
344 }
345
346 //=======================================================================================
347
348 LinkMenu::LinkMenu() : MenusBase()
349 {
350 }
351
352 LinkMenu::~LinkMenu()
353 {
354 }
355
356 void LinkMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
357 {
358   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
359   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
360   QMenu menu(m, caller);
361   addHeader(menu, m);
362   menu.addAction(gmain->_showOnlyLinkAct);
363   menu.addAction(gmain->_showLinkAct);
364   menu.addAction(gmain->_hideLinkAct);
365   menu.addAction(gmain->_emphasisLinkAct);
366   menu.addAction(gmain->_deEmphasizeAllAct);
367   if (isEdition)
368     {
369       menu.addSeparator();
370       menu.addAction(gmain->_deleteItemAct);
371     }
372   menu.exec(globalPos);
373 }
374
375 //=======================================================================================
376
377 ElementaryNodeMenu::ElementaryNodeMenu() : MenusBase()
378 {
379 }
380
381 ElementaryNodeMenu::~ElementaryNodeMenu()
382 {
383 }
384
385 void ElementaryNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
386 {
387   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
388   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
389   QMenu menu(m, caller);
390   addHeader(menu, m);
391   if (isEdition)
392     {
393 //       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
394 //       SubjectServiceNode *ssn = dynamic_cast<SubjectServiceNode*>(sub);
395 //       if (ssn)
396 //         {
397 //           menu.addAction(gmain->_newContainerAct);
398 //           menu.addSeparator();
399 //         }
400       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
401       SubjectNode *sin = dynamic_cast<SubjectNode*>(sub);
402       if(sin && !sin->isValid())
403         {
404           menu.addAction(gmain->_getErrorReportAct);
405           menu.addSeparator();
406         }
407       menu.addAction(gmain->_deleteItemAct);
408       menu.addAction(gmain->_cutItemAct);
409       menu.addAction(gmain->_copyItemAct);
410       menu.addAction(gmain->_pasteItemAct);
411       menu.addAction(gmain->_putInBlocAct);
412     }
413   else
414     {
415       menu.addAction(gmain->_getErrorReportAct);
416       menu.addAction(gmain->_getErrorDetailsAct);
417       menu.addAction(gmain->_getContainerLogAct);
418     }
419   menu.addSeparator();
420   menu.addAction(gmain->_showOnlyCtrlLinksAct);
421   menu.addAction(gmain->_showCtrlLinksAct);
422   menu.addAction(gmain->_hideCtrlLinksAct);
423   menu.addAction(gmain->_emphasisPortLinksAct);
424   menu.addAction(gmain->_deEmphasizeAllAct);
425   menu.addSeparator();
426   menu.addAction(gmain->_zoomToBlocAct);
427   menu.addAction(gmain->_centerOnNodeAct);
428   menu.addAction(gmain->_shrinkExpand);
429 //   menu.addSeparator();
430 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
431   menu.exec(globalPos);
432 }
433
434 //=======================================================================================
435
436 InPortMenu::InPortMenu() : MenusBase()
437 {
438 }
439
440 InPortMenu::~InPortMenu()
441 {
442 }
443
444 void InPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
445 {
446   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
447   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
448   QMenu menu(m, caller);
449   addHeader(menu, m);
450   menu.addAction(gmain->_showOnlyPortLinksAct);
451   menu.addAction(gmain->_showPortLinksAct);
452   menu.addAction(gmain->_hidePortLinksAct);
453   menu.addAction(gmain->_emphasisPortLinksAct);
454   menu.addAction(gmain->_deEmphasizeAllAct);
455   if (isEdition)
456     {
457       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
458       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
459       Node *parent = 0;
460       if (sdp) parent = sdp->getPort()->getNode();
461       if (parent)
462         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
463           {
464             menu.addSeparator();
465             menu.addAction(gmain->_deleteItemAct);
466           }
467     }
468   menu.exec(globalPos);
469 }
470
471 //=======================================================================================
472
473 OutPortMenu::OutPortMenu() : MenusBase()
474 {
475 }
476
477 OutPortMenu::~OutPortMenu()
478 {
479 }
480
481 void OutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
482 {
483   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
484   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
485   QMenu menu(m, caller);
486   addHeader(menu, m);
487   menu.addAction(gmain->_showOnlyPortLinksAct);
488   menu.addAction(gmain->_showPortLinksAct);
489   menu.addAction(gmain->_hidePortLinksAct);
490   menu.addAction(gmain->_emphasisPortLinksAct);
491   menu.addAction(gmain->_deEmphasizeAllAct);
492   if (isEdition)
493     {
494       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
495       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
496       Node *parent = 0;
497       if (sdp) parent = sdp->getPort()->getNode();
498       if (parent)
499         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
500           {
501             menu.addSeparator();
502             menu.addAction(gmain->_deleteItemAct);
503           }
504     }
505   menu.exec(globalPos);
506 }
507
508 //=======================================================================================
509
510 CtrlInPortMenu::CtrlInPortMenu() : MenusBase()
511 {
512 }
513
514 CtrlInPortMenu::~CtrlInPortMenu()
515 {
516 }
517
518 void CtrlInPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
519 {
520   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
521   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
522   QMenu menu(m, caller);
523   addHeader(menu, m);
524   menu.addAction(gmain->_showOnlyCtrlLinksAct);
525   menu.addAction(gmain->_showCtrlLinksAct);
526   menu.addAction(gmain->_hideCtrlLinksAct);
527   menu.addAction(gmain->_emphasisCtrlLinksAct);
528   menu.addAction(gmain->_deEmphasizeAllAct);
529   if (isEdition)
530     {
531       //menu.addSeparator();
532       //menu.addAction(gmain->_deleteItemAct);
533     }
534   menu.exec(globalPos);
535 }
536
537 //=======================================================================================
538
539 CtrlOutPortMenu::CtrlOutPortMenu() : MenusBase()
540 {
541 }
542
543 CtrlOutPortMenu::~CtrlOutPortMenu()
544 {
545 }
546
547 void CtrlOutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
548 {
549   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
550   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
551   QMenu menu(m, caller);
552   addHeader(menu, m);
553   menu.addAction(gmain->_showOnlyCtrlLinksAct);
554   menu.addAction(gmain->_showCtrlLinksAct);
555   menu.addAction(gmain->_hideCtrlLinksAct);
556   menu.addAction(gmain->_emphasisCtrlLinksAct);
557   menu.addAction(gmain->_deEmphasizeAllAct);
558   if (isEdition)
559     {
560       //menu.addSeparator();
561       //menu.addAction(gmain->_deleteItemAct);
562     }
563   menu.exec(globalPos);
564 }
565
566 //=======================================================================================
567
568 ReferenceMenu::ReferenceMenu() : MenusBase()
569 {
570 }
571
572 ReferenceMenu::~ReferenceMenu()
573 {
574 }
575
576 void ReferenceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
577 {
578   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
579   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
580   QMenu menu(m, caller);
581   addHeader(menu, m);
582   menu.addAction(gmain->_selectReferenceAct);
583   menu.exec(globalPos);
584 }
585
586 //=======================================================================================
587
588 ContainerDirMenu::ContainerDirMenu() : MenusBase()
589 {
590 }
591
592 ContainerDirMenu::~ContainerDirMenu()
593 {
594 }
595
596 void ContainerDirMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
597 {
598   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
599   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
600   QMenu menu(m, caller);
601   addHeader(menu, m);
602   if (isEdition)
603     {
604       menu.addAction(gmain->_newContainerAct);
605     }
606   menu.exec(globalPos);
607 }
608
609 //=======================================================================================
610
611 ComponentInstanceMenu::ComponentInstanceMenu() : MenusBase()
612 {
613 }
614
615 ComponentInstanceMenu::~ComponentInstanceMenu()
616 {
617 }
618
619 void ComponentInstanceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
620 {
621   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
622   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
623   QMenu menu(m, caller);
624   addHeader(menu, m);
625   if (isEdition)
626     {
627       menu.addAction(gmain->_selectComponentInstanceAct);
628       menu.addAction(gmain->_newSalomeComponentAct);
629     }
630   menu.exec(globalPos);
631 }
632
633 //=======================================================================================
634
635 ContainerMenu::ContainerMenu() : MenusBase()
636 {
637 }
638
639 ContainerMenu::~ContainerMenu()
640 {
641 }
642
643 void ContainerMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
644 {
645   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
646   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
647   QMenu menu(m, caller);
648   addHeader(menu, m);
649   if (isEdition)
650     {
651       menu.addAction(gmain->_deleteItemAct);
652     }
653   menu.exec(globalPos);
654 }
655