Salome HOME
Merge branch 'V7_dev'
[modules/yacs.git] / src / genericgui / Menus.cxx
index 48509553a787257ef06d6975d4bf25bd2f267550..8d3f8bac5323fb5145aaad3651479f5e54270b7b 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2006-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2016  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -29,6 +29,7 @@
 
 //#define _DEVDEBUG_
 #include "YacsTrace.hxx"
+#include "chrono.hxx"
 
 using namespace std;
 using namespace YACS::HMI;
@@ -69,6 +70,13 @@ void MenusBase::foreachAction(QAction* act)
   gmain->createForEachLoop(act->text().toStdString());
 }
 
+void MenusBase::putGraphInForeachAction(QAction* act)
+{
+  DEBTRACE(act->text().toStdString());
+  GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
+  gmain->putGraphInForeachLoop(act->text().toStdString());
+}
+
 void MenusBase::addHeader(QMenu &m, const QString &h)
 {
   m.addAction(_dummyAct);
@@ -79,12 +87,12 @@ void MenusBase::addHeader(QMenu &m, const QString &h)
   m.addSeparator();
 }
 
-void MenusBase::addForEachMenu(QMenu *m, QActionGroup* actgroup)
+void MenusBase::buildForEachMenu(QMenu *m, QActionGroup* actgroup)
 {
   QPixmap pixmap;
   pixmap.load("icons:new_foreach_loop_node.png");
 
-  QMenu *ForEachMenu=m->addMenu(QIcon(pixmap),"ForEachLoop");
+  QMenu *ForEachMenu=m->addMenu(QIcon(pixmap),"ForEach Loop");
 
   Proc* proc = GuiContext::getCurrent()->getProc();
   std::map<std::string, TypeCode*>::const_iterator it = proc->typeMap.begin();
@@ -94,9 +102,18 @@ void MenusBase::addForEachMenu(QMenu *m, QActionGroup* actgroup)
       act=actgroup->addAction((*it).first.c_str());
       ForEachMenu->addAction(act);
     }
+}
 
+void MenusBase::addForEachMenu(QMenu *m, QActionGroup* actgroup)
+{
+  buildForEachMenu(m, actgroup);
   connect(actgroup, SIGNAL(triggered(QAction*)), this, SLOT(foreachAction(QAction*)));
+}
 
+void MenusBase::addForEachMenuToPutGraph(QMenu *m, QActionGroup* actgroup)
+{
+  buildForEachMenu(m, actgroup);
+  connect(actgroup, SIGNAL(triggered(QAction*)), this, SLOT(putGraphInForeachAction(QAction*)));
 }
 
 //=======================================================================================
@@ -154,6 +171,8 @@ void ComposedNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const
   menu.addAction(gmain->_zoomToBlocAct);
   menu.addAction(gmain->_centerOnNodeAct);
   menu.addAction(gmain->_shrinkExpand);
+  menu.addAction(gmain->_shrinkExpandChildren);
+  menu.addAction(gmain->_shrinkExpandElementaryRecursively);
   menu.addAction(gmain->_computeLinkAct);
 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
@@ -202,12 +221,14 @@ void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString
   QMenu menu(m, caller);
   addHeader(menu, m);
   QActionGroup actgroup(this);
+  QActionGroup actgroup2(this);
   if (isEdition)
     {
       menu.addAction(gmain->_runLoadedSchemaAct);
       menu.addSeparator();
       menu.addAction(gmain->_importDataTypeAct);
       menu.addAction(gmain->_newContainerAct);
+      menu.addAction(gmain->_newHPContainerAct);
       QMenu *CNmenu = menu.addMenu(tr("Create Node"));
       CNmenu->addAction(gmain->_nodeFromCatalogAct);
       //   CNmenu->addSeparator();
@@ -231,6 +252,15 @@ void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString
       CNmenu->addAction(gmain->_OptimizerLoopAct);
       menu.addSeparator();
       menu.addAction(gmain->_pasteItemAct);
+
+      QMenu *PINmenu = menu.addMenu(tr("Put Graph Content in Node"));
+      PINmenu->addAction(gmain->_putGraphInBlocAct);
+      PINmenu->addSeparator();
+      PINmenu->addAction(gmain->_putGraphInForLoopAct);
+      addForEachMenuToPutGraph(PINmenu,&actgroup2);
+      PINmenu->addAction(gmain->_putGraphInWhileLoopAct);
+      PINmenu->addAction(gmain->_putGraphInOptimizerLoopAct);
+
       menu.addSeparator();
     }
   menu.addAction(gmain->_getYacsContainerLogAct);
@@ -245,6 +275,9 @@ void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString
   menu.addSeparator();
   menu.addAction(gmain->_zoomToBlocAct);
   menu.addAction(gmain->_centerOnNodeAct);
+  menu.addAction(gmain->_shrinkExpand);
+  menu.addAction(gmain->_shrinkExpandChildren);
+  menu.addAction(gmain->_shrinkExpandElementaryRecursively);
   menu.addAction(gmain->_computeLinkAct);
 //   menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
 //   menu.addAction(gmain->_toggleSimplifyLinkAct);
@@ -576,6 +609,7 @@ void ContainerDirMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const
   if (isEdition)
     {
       menu.addAction(gmain->_newContainerAct);
+      menu.addAction(gmain->_newHPContainerAct);
     }
   menu.exec(globalPos);
 }