Salome HOME
Update copyrights 2014.
[modules/yacs.git] / src / genericgui / Menus.cxx
1 // Copyright (C) 2006-2014  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, 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 #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->_shrinkExpand);
275   menu.addAction(gmain->_computeLinkAct);
276 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
277 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
278 //   menu.addAction(gmain->_toggleForce2NodesLinkAct);
279 //   menu.addAction(gmain->_toggleAddRowColsAct);
280   if (!isEdition)
281     {
282       menu.addAction(gmain->_getErrorReportAct);
283       menu.addAction(gmain->_getErrorDetailsAct);
284       menu.addAction(gmain->_shutdownProcAct);
285     }
286   menu.exec(globalPos);
287 }
288
289 //=======================================================================================
290
291 NodeMenu::NodeMenu() : MenusBase()
292 {
293 }
294
295 NodeMenu::~NodeMenu()
296 {
297 }
298
299 void NodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
300 {
301   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
302   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
303   QMenu menu(m, caller);
304   addHeader(menu, m);
305   if (isEdition)
306     {
307       menu.addAction(gmain->_deleteItemAct);
308       menu.addAction(gmain->_cutItemAct);
309       menu.addAction(gmain->_copyItemAct);
310       menu.addAction(gmain->_pasteItemAct);
311     }
312   menu.addSeparator();
313   menu.addAction(gmain->_showOnlyCtrlLinksAct);
314   menu.addAction(gmain->_showCtrlLinksAct);
315   menu.addAction(gmain->_hideCtrlLinksAct);
316   menu.addAction(gmain->_emphasisPortLinksAct);
317   menu.addAction(gmain->_deEmphasizeAllAct);
318   menu.addSeparator();
319   menu.addAction(gmain->_zoomToBlocAct);
320   menu.addAction(gmain->_centerOnNodeAct);
321   menu.exec(globalPos);
322 }
323
324 //=======================================================================================
325
326 HeaderNodeMenu::HeaderNodeMenu() : MenusBase()
327 {
328 }
329
330 HeaderNodeMenu::~HeaderNodeMenu()
331 {
332 }
333
334 void HeaderNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
335 {
336   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
337   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
338   QMenu menu(m, caller);
339   addHeader(menu, m);
340   if (isEdition)
341     {
342       menu.addAction(gmain->_deleteItemAct);
343     }
344   menu.exec(globalPos);
345 }
346
347 //=======================================================================================
348
349 LinkMenu::LinkMenu() : MenusBase()
350 {
351 }
352
353 LinkMenu::~LinkMenu()
354 {
355 }
356
357 void LinkMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
358 {
359   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
360   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
361   QMenu menu(m, caller);
362   addHeader(menu, m);
363   menu.addAction(gmain->_showOnlyLinkAct);
364   menu.addAction(gmain->_showLinkAct);
365   menu.addAction(gmain->_hideLinkAct);
366   menu.addAction(gmain->_emphasisLinkAct);
367   menu.addAction(gmain->_deEmphasizeAllAct);
368   if (isEdition)
369     {
370       menu.addSeparator();
371       menu.addAction(gmain->_deleteItemAct);
372     }
373   menu.exec(globalPos);
374 }
375
376 //=======================================================================================
377
378 ElementaryNodeMenu::ElementaryNodeMenu() : MenusBase()
379 {
380 }
381
382 ElementaryNodeMenu::~ElementaryNodeMenu()
383 {
384 }
385
386 void ElementaryNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
387 {
388   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
389   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
390   QMenu menu(m, caller);
391   addHeader(menu, m);
392   if (isEdition)
393     {
394 //       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
395 //       SubjectServiceNode *ssn = dynamic_cast<SubjectServiceNode*>(sub);
396 //       if (ssn)
397 //         {
398 //           menu.addAction(gmain->_newContainerAct);
399 //           menu.addSeparator();
400 //         }
401       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
402       SubjectNode *sin = dynamic_cast<SubjectNode*>(sub);
403       if(sin && !sin->isValid())
404         {
405           menu.addAction(gmain->_getErrorReportAct);
406           menu.addSeparator();
407         }
408       menu.addAction(gmain->_deleteItemAct);
409       menu.addAction(gmain->_cutItemAct);
410       menu.addAction(gmain->_copyItemAct);
411       menu.addAction(gmain->_pasteItemAct);
412       menu.addAction(gmain->_putInBlocAct);
413     }
414   else
415     {
416       menu.addAction(gmain->_getErrorReportAct);
417       menu.addAction(gmain->_getErrorDetailsAct);
418       menu.addAction(gmain->_getContainerLogAct);
419     }
420   menu.addSeparator();
421   menu.addAction(gmain->_showOnlyCtrlLinksAct);
422   menu.addAction(gmain->_showCtrlLinksAct);
423   menu.addAction(gmain->_hideCtrlLinksAct);
424   menu.addAction(gmain->_emphasisPortLinksAct);
425   menu.addAction(gmain->_deEmphasizeAllAct);
426   menu.addSeparator();
427   menu.addAction(gmain->_zoomToBlocAct);
428   menu.addAction(gmain->_centerOnNodeAct);
429   menu.addAction(gmain->_shrinkExpand);
430 //   menu.addSeparator();
431 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
432   menu.exec(globalPos);
433 }
434
435 //=======================================================================================
436
437 InPortMenu::InPortMenu() : MenusBase()
438 {
439 }
440
441 InPortMenu::~InPortMenu()
442 {
443 }
444
445 void InPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
446 {
447   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
448   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
449   QMenu menu(m, caller);
450   addHeader(menu, m);
451   menu.addAction(gmain->_showOnlyPortLinksAct);
452   menu.addAction(gmain->_showPortLinksAct);
453   menu.addAction(gmain->_hidePortLinksAct);
454   menu.addAction(gmain->_emphasisPortLinksAct);
455   menu.addAction(gmain->_deEmphasizeAllAct);
456   if (isEdition)
457     {
458       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
459       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
460       Node *parent = 0;
461       if (sdp) parent = sdp->getPort()->getNode();
462       if (parent)
463         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
464           {
465             menu.addSeparator();
466             menu.addAction(gmain->_deleteItemAct);
467           }
468     }
469   menu.exec(globalPos);
470 }
471
472 //=======================================================================================
473
474 OutPortMenu::OutPortMenu() : MenusBase()
475 {
476 }
477
478 OutPortMenu::~OutPortMenu()
479 {
480 }
481
482 void OutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
483 {
484   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
485   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
486   QMenu menu(m, caller);
487   addHeader(menu, m);
488   menu.addAction(gmain->_showOnlyPortLinksAct);
489   menu.addAction(gmain->_showPortLinksAct);
490   menu.addAction(gmain->_hidePortLinksAct);
491   menu.addAction(gmain->_emphasisPortLinksAct);
492   menu.addAction(gmain->_deEmphasizeAllAct);
493   if (isEdition)
494     {
495       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
496       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
497       Node *parent = 0;
498       if (sdp) parent = sdp->getPort()->getNode();
499       if (parent)
500         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
501           {
502             menu.addSeparator();
503             menu.addAction(gmain->_deleteItemAct);
504           }
505     }
506   menu.exec(globalPos);
507 }
508
509 //=======================================================================================
510
511 CtrlInPortMenu::CtrlInPortMenu() : MenusBase()
512 {
513 }
514
515 CtrlInPortMenu::~CtrlInPortMenu()
516 {
517 }
518
519 void CtrlInPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
520 {
521   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
522   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
523   QMenu menu(m, caller);
524   addHeader(menu, m);
525   menu.addAction(gmain->_showOnlyCtrlLinksAct);
526   menu.addAction(gmain->_showCtrlLinksAct);
527   menu.addAction(gmain->_hideCtrlLinksAct);
528   menu.addAction(gmain->_emphasisCtrlLinksAct);
529   menu.addAction(gmain->_deEmphasizeAllAct);
530   if (isEdition)
531     {
532       //menu.addSeparator();
533       //menu.addAction(gmain->_deleteItemAct);
534     }
535   menu.exec(globalPos);
536 }
537
538 //=======================================================================================
539
540 CtrlOutPortMenu::CtrlOutPortMenu() : MenusBase()
541 {
542 }
543
544 CtrlOutPortMenu::~CtrlOutPortMenu()
545 {
546 }
547
548 void CtrlOutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
549 {
550   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
551   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
552   QMenu menu(m, caller);
553   addHeader(menu, m);
554   menu.addAction(gmain->_showOnlyCtrlLinksAct);
555   menu.addAction(gmain->_showCtrlLinksAct);
556   menu.addAction(gmain->_hideCtrlLinksAct);
557   menu.addAction(gmain->_emphasisCtrlLinksAct);
558   menu.addAction(gmain->_deEmphasizeAllAct);
559   if (isEdition)
560     {
561       //menu.addSeparator();
562       //menu.addAction(gmain->_deleteItemAct);
563     }
564   menu.exec(globalPos);
565 }
566
567 //=======================================================================================
568
569 ReferenceMenu::ReferenceMenu() : MenusBase()
570 {
571 }
572
573 ReferenceMenu::~ReferenceMenu()
574 {
575 }
576
577 void ReferenceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
578 {
579   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
580   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
581   QMenu menu(m, caller);
582   addHeader(menu, m);
583   menu.addAction(gmain->_selectReferenceAct);
584   menu.exec(globalPos);
585 }
586
587 //=======================================================================================
588
589 ContainerDirMenu::ContainerDirMenu() : MenusBase()
590 {
591 }
592
593 ContainerDirMenu::~ContainerDirMenu()
594 {
595 }
596
597 void ContainerDirMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
598 {
599   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
600   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
601   QMenu menu(m, caller);
602   addHeader(menu, m);
603   if (isEdition)
604     {
605       menu.addAction(gmain->_newContainerAct);
606     }
607   menu.exec(globalPos);
608 }
609
610 //=======================================================================================
611
612 ComponentInstanceMenu::ComponentInstanceMenu() : MenusBase()
613 {
614 }
615
616 ComponentInstanceMenu::~ComponentInstanceMenu()
617 {
618 }
619
620 void ComponentInstanceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
621 {
622   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
623   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
624   QMenu menu(m, caller);
625   addHeader(menu, m);
626   if (isEdition)
627     {
628       menu.addAction(gmain->_selectComponentInstanceAct);
629       menu.addAction(gmain->_newSalomeComponentAct);
630     }
631   menu.exec(globalPos);
632 }
633
634 //=======================================================================================
635
636 ContainerMenu::ContainerMenu() : MenusBase()
637 {
638 }
639
640 ContainerMenu::~ContainerMenu()
641 {
642 }
643
644 void ContainerMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
645 {
646   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
647   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
648   QMenu menu(m, caller);
649   addHeader(menu, m);
650   if (isEdition)
651     {
652       menu.addAction(gmain->_deleteItemAct);
653     }
654   menu.exec(globalPos);
655 }
656