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