Salome HOME
0022628: [CEA 1202] The default icon disposition is not correct in french and in...
[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->_shrinkExpandChildren);
174   menu.addAction(gmain->_shrinkExpandElementaryRecursively);
175   menu.addAction(gmain->_computeLinkAct);
176 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
177 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
178 //   menu.addAction(gmain->_toggleForce2NodesLinkAct);
179 //   menu.addAction(gmain->_toggleAddRowColsAct);
180   if (isEdition)
181     {
182       menu.addSeparator();
183       menu.addAction(gmain->_deleteItemAct);
184       menu.addAction(gmain->_cutItemAct);
185       menu.addAction(gmain->_copyItemAct);
186       menu.addAction(gmain->_pasteItemAct);
187       menu.addAction(gmain->_putInBlocAct);
188
189       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
190       SubjectNode *sin = dynamic_cast<SubjectNode*>(sub);
191       if(sin && !sin->isValid())
192         {
193           menu.addSeparator();
194           menu.addAction(gmain->_getErrorReportAct);
195           menu.addAction(gmain->_getErrorDetailsAct);
196         }
197     }
198   else
199     {
200       menu.addAction(gmain->_getErrorReportAct);
201       menu.addAction(gmain->_getErrorDetailsAct);
202     }
203   menu.exec(globalPos);
204 }
205
206 //=======================================================================================
207
208 ProcMenu::ProcMenu() : MenusBase()
209 {
210 }
211
212 ProcMenu::~ProcMenu()
213 {
214 }
215
216 void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
217 {
218   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
219   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
220   QMenu menu(m, caller);
221   addHeader(menu, m);
222   QActionGroup actgroup(this);
223   QActionGroup actgroup2(this);
224   if (isEdition)
225     {
226       menu.addAction(gmain->_runLoadedSchemaAct);
227       menu.addSeparator();
228       menu.addAction(gmain->_importDataTypeAct);
229       menu.addAction(gmain->_newContainerAct);
230       QMenu *CNmenu = menu.addMenu(tr("Create Node"));
231       CNmenu->addAction(gmain->_nodeFromCatalogAct);
232       //   CNmenu->addSeparator();
233       //   CNmenu->addAction(gmain->_cppNodeAct);
234       //   CNmenu->addAction(gmain->_XMLNodeAct);
235       CNmenu->addSeparator();
236       CNmenu->addAction(gmain->_inlineScriptNodeAct);
237       CNmenu->addAction(gmain->_inlineFunctionNodeAct);
238       CNmenu->addSeparator();
239       CNmenu->addAction(gmain->_inDataNodeAct);
240       CNmenu->addAction(gmain->_outDataNodeAct);
241       CNmenu->addAction(gmain->_inStudyNodeAct);
242       CNmenu->addAction(gmain->_outStudyNodeAct);
243       CNmenu->addSeparator();
244       CNmenu->addAction(gmain->_blockNodeAct);
245       CNmenu->addSeparator();
246       CNmenu->addAction(gmain->_FORNodeAct);
247       addForEachMenu(CNmenu,&actgroup);
248       CNmenu->addAction(gmain->_WHILENodeAct);
249       CNmenu->addAction(gmain->_SWITCHNodeAct);
250       CNmenu->addAction(gmain->_OptimizerLoopAct);
251       menu.addSeparator();
252       menu.addAction(gmain->_pasteItemAct);
253
254       QMenu *PINmenu = menu.addMenu(tr("Put Graph Content in Node"));
255       PINmenu->addAction(gmain->_putGraphInBlocAct);
256       PINmenu->addSeparator();
257       PINmenu->addAction(gmain->_putGraphInForLoopAct);
258       addForEachMenuToPutGraph(PINmenu,&actgroup2);
259       PINmenu->addAction(gmain->_putGraphInWhileLoopAct);
260       PINmenu->addAction(gmain->_putGraphInOptimizerLoopAct);
261
262       menu.addSeparator();
263     }
264   menu.addAction(gmain->_getYacsContainerLogAct);
265   menu.addSeparator();
266   menu.addAction(gmain->_showAllLinksAct);
267   menu.addAction(gmain->_hideAllLinksAct);
268   menu.addAction(gmain->_deEmphasizeAllAct);
269   menu.addSeparator();
270 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
271   menu.addAction(gmain->_arrangeLocalNodesAct);
272   menu.addAction(gmain->_arrangeRecurseNodesAct);
273   menu.addSeparator();
274   menu.addAction(gmain->_zoomToBlocAct);
275   menu.addAction(gmain->_centerOnNodeAct);
276   menu.addAction(gmain->_shrinkExpand);
277   menu.addAction(gmain->_shrinkExpandChildren);
278   menu.addAction(gmain->_shrinkExpandElementaryRecursively);
279   menu.addAction(gmain->_computeLinkAct);
280 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
281 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
282 //   menu.addAction(gmain->_toggleForce2NodesLinkAct);
283 //   menu.addAction(gmain->_toggleAddRowColsAct);
284   if (!isEdition)
285     {
286       menu.addAction(gmain->_getErrorReportAct);
287       menu.addAction(gmain->_getErrorDetailsAct);
288       menu.addAction(gmain->_shutdownProcAct);
289     }
290   menu.exec(globalPos);
291 }
292
293 //=======================================================================================
294
295 NodeMenu::NodeMenu() : MenusBase()
296 {
297 }
298
299 NodeMenu::~NodeMenu()
300 {
301 }
302
303 void NodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
304 {
305   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
306   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
307   QMenu menu(m, caller);
308   addHeader(menu, m);
309   if (isEdition)
310     {
311       menu.addAction(gmain->_deleteItemAct);
312       menu.addAction(gmain->_cutItemAct);
313       menu.addAction(gmain->_copyItemAct);
314       menu.addAction(gmain->_pasteItemAct);
315     }
316   menu.addSeparator();
317   menu.addAction(gmain->_showOnlyCtrlLinksAct);
318   menu.addAction(gmain->_showCtrlLinksAct);
319   menu.addAction(gmain->_hideCtrlLinksAct);
320   menu.addAction(gmain->_emphasisPortLinksAct);
321   menu.addAction(gmain->_deEmphasizeAllAct);
322   menu.addSeparator();
323   menu.addAction(gmain->_zoomToBlocAct);
324   menu.addAction(gmain->_centerOnNodeAct);
325   menu.exec(globalPos);
326 }
327
328 //=======================================================================================
329
330 HeaderNodeMenu::HeaderNodeMenu() : MenusBase()
331 {
332 }
333
334 HeaderNodeMenu::~HeaderNodeMenu()
335 {
336 }
337
338 void HeaderNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
339 {
340   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
341   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
342   QMenu menu(m, caller);
343   addHeader(menu, m);
344   if (isEdition)
345     {
346       menu.addAction(gmain->_deleteItemAct);
347     }
348   menu.exec(globalPos);
349 }
350
351 //=======================================================================================
352
353 LinkMenu::LinkMenu() : MenusBase()
354 {
355 }
356
357 LinkMenu::~LinkMenu()
358 {
359 }
360
361 void LinkMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
362 {
363   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
364   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
365   QMenu menu(m, caller);
366   addHeader(menu, m);
367   menu.addAction(gmain->_showOnlyLinkAct);
368   menu.addAction(gmain->_showLinkAct);
369   menu.addAction(gmain->_hideLinkAct);
370   menu.addAction(gmain->_emphasisLinkAct);
371   menu.addAction(gmain->_deEmphasizeAllAct);
372   if (isEdition)
373     {
374       menu.addSeparator();
375       menu.addAction(gmain->_deleteItemAct);
376     }
377   menu.exec(globalPos);
378 }
379
380 //=======================================================================================
381
382 ElementaryNodeMenu::ElementaryNodeMenu() : MenusBase()
383 {
384 }
385
386 ElementaryNodeMenu::~ElementaryNodeMenu()
387 {
388 }
389
390 void ElementaryNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
391 {
392   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
393   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
394   QMenu menu(m, caller);
395   addHeader(menu, m);
396   if (isEdition)
397     {
398 //       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
399 //       SubjectServiceNode *ssn = dynamic_cast<SubjectServiceNode*>(sub);
400 //       if (ssn)
401 //         {
402 //           menu.addAction(gmain->_newContainerAct);
403 //           menu.addSeparator();
404 //         }
405       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
406       SubjectNode *sin = dynamic_cast<SubjectNode*>(sub);
407       if(sin && !sin->isValid())
408         {
409           menu.addAction(gmain->_getErrorReportAct);
410           menu.addSeparator();
411         }
412       menu.addAction(gmain->_deleteItemAct);
413       menu.addAction(gmain->_cutItemAct);
414       menu.addAction(gmain->_copyItemAct);
415       menu.addAction(gmain->_pasteItemAct);
416       menu.addAction(gmain->_putInBlocAct);
417     }
418   else
419     {
420       menu.addAction(gmain->_getErrorReportAct);
421       menu.addAction(gmain->_getErrorDetailsAct);
422       menu.addAction(gmain->_getContainerLogAct);
423     }
424   menu.addSeparator();
425   menu.addAction(gmain->_showOnlyCtrlLinksAct);
426   menu.addAction(gmain->_showCtrlLinksAct);
427   menu.addAction(gmain->_hideCtrlLinksAct);
428   menu.addAction(gmain->_emphasisPortLinksAct);
429   menu.addAction(gmain->_deEmphasizeAllAct);
430   menu.addSeparator();
431   menu.addAction(gmain->_zoomToBlocAct);
432   menu.addAction(gmain->_centerOnNodeAct);
433   menu.addAction(gmain->_shrinkExpand);
434 //   menu.addSeparator();
435 //   menu.addAction(gmain->_toggleSceneItemVisibleAct);
436   menu.exec(globalPos);
437 }
438
439 //=======================================================================================
440
441 InPortMenu::InPortMenu() : MenusBase()
442 {
443 }
444
445 InPortMenu::~InPortMenu()
446 {
447 }
448
449 void InPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
450 {
451   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
452   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
453   QMenu menu(m, caller);
454   addHeader(menu, m);
455   menu.addAction(gmain->_showOnlyPortLinksAct);
456   menu.addAction(gmain->_showPortLinksAct);
457   menu.addAction(gmain->_hidePortLinksAct);
458   menu.addAction(gmain->_emphasisPortLinksAct);
459   menu.addAction(gmain->_deEmphasizeAllAct);
460   if (isEdition)
461     {
462       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
463       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
464       Node *parent = 0;
465       if (sdp) parent = sdp->getPort()->getNode();
466       if (parent)
467         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
468           {
469             menu.addSeparator();
470             menu.addAction(gmain->_deleteItemAct);
471           }
472     }
473   menu.exec(globalPos);
474 }
475
476 //=======================================================================================
477
478 OutPortMenu::OutPortMenu() : MenusBase()
479 {
480 }
481
482 OutPortMenu::~OutPortMenu()
483 {
484 }
485
486 void OutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
487 {
488   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
489   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
490   QMenu menu(m, caller);
491   addHeader(menu, m);
492   menu.addAction(gmain->_showOnlyPortLinksAct);
493   menu.addAction(gmain->_showPortLinksAct);
494   menu.addAction(gmain->_hidePortLinksAct);
495   menu.addAction(gmain->_emphasisPortLinksAct);
496   menu.addAction(gmain->_deEmphasizeAllAct);
497   if (isEdition)
498     {
499       Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
500       SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
501       Node *parent = 0;
502       if (sdp) parent = sdp->getPort()->getNode();
503       if (parent)
504         if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
505           {
506             menu.addSeparator();
507             menu.addAction(gmain->_deleteItemAct);
508           }
509     }
510   menu.exec(globalPos);
511 }
512
513 //=======================================================================================
514
515 CtrlInPortMenu::CtrlInPortMenu() : MenusBase()
516 {
517 }
518
519 CtrlInPortMenu::~CtrlInPortMenu()
520 {
521 }
522
523 void CtrlInPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
524 {
525   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
526   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
527   QMenu menu(m, caller);
528   addHeader(menu, m);
529   menu.addAction(gmain->_showOnlyCtrlLinksAct);
530   menu.addAction(gmain->_showCtrlLinksAct);
531   menu.addAction(gmain->_hideCtrlLinksAct);
532   menu.addAction(gmain->_emphasisCtrlLinksAct);
533   menu.addAction(gmain->_deEmphasizeAllAct);
534   if (isEdition)
535     {
536       //menu.addSeparator();
537       //menu.addAction(gmain->_deleteItemAct);
538     }
539   menu.exec(globalPos);
540 }
541
542 //=======================================================================================
543
544 CtrlOutPortMenu::CtrlOutPortMenu() : MenusBase()
545 {
546 }
547
548 CtrlOutPortMenu::~CtrlOutPortMenu()
549 {
550 }
551
552 void CtrlOutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
553 {
554   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
555   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
556   QMenu menu(m, caller);
557   addHeader(menu, m);
558   menu.addAction(gmain->_showOnlyCtrlLinksAct);
559   menu.addAction(gmain->_showCtrlLinksAct);
560   menu.addAction(gmain->_hideCtrlLinksAct);
561   menu.addAction(gmain->_emphasisCtrlLinksAct);
562   menu.addAction(gmain->_deEmphasizeAllAct);
563   if (isEdition)
564     {
565       //menu.addSeparator();
566       //menu.addAction(gmain->_deleteItemAct);
567     }
568   menu.exec(globalPos);
569 }
570
571 //=======================================================================================
572
573 ReferenceMenu::ReferenceMenu() : MenusBase()
574 {
575 }
576
577 ReferenceMenu::~ReferenceMenu()
578 {
579 }
580
581 void ReferenceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
582 {
583   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
584   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
585   QMenu menu(m, caller);
586   addHeader(menu, m);
587   menu.addAction(gmain->_selectReferenceAct);
588   menu.exec(globalPos);
589 }
590
591 //=======================================================================================
592
593 ContainerDirMenu::ContainerDirMenu() : MenusBase()
594 {
595 }
596
597 ContainerDirMenu::~ContainerDirMenu()
598 {
599 }
600
601 void ContainerDirMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
602 {
603   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
604   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
605   QMenu menu(m, caller);
606   addHeader(menu, m);
607   if (isEdition)
608     {
609       menu.addAction(gmain->_newContainerAct);
610     }
611   menu.exec(globalPos);
612 }
613
614 //=======================================================================================
615
616 ComponentInstanceMenu::ComponentInstanceMenu() : MenusBase()
617 {
618 }
619
620 ComponentInstanceMenu::~ComponentInstanceMenu()
621 {
622 }
623
624 void ComponentInstanceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
625 {
626   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
627   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
628   QMenu menu(m, caller);
629   addHeader(menu, m);
630   if (isEdition)
631     {
632       menu.addAction(gmain->_selectComponentInstanceAct);
633       menu.addAction(gmain->_newSalomeComponentAct);
634     }
635   menu.exec(globalPos);
636 }
637
638 //=======================================================================================
639
640 ContainerMenu::ContainerMenu() : MenusBase()
641 {
642 }
643
644 ContainerMenu::~ContainerMenu()
645 {
646 }
647
648 void ContainerMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
649 {
650   GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
651   bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
652   QMenu menu(m, caller);
653   addHeader(menu, m);
654   if (isEdition)
655     {
656       menu.addAction(gmain->_deleteItemAct);
657     }
658   menu.exec(globalPos);
659 }
660