1 // Copyright (C) 2006-2008 CEA/DEN, EDF R&D
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.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "QtGuiContext.hxx"
21 #include "guiObservers.hxx"
22 #include "DataPort.hxx"
23 #include "DataNode.hxx"
24 #include "InlineNode.hxx"
29 #include "YacsTrace.hxx"
32 using namespace YACS::HMI;
33 using namespace YACS::ENGINE;
35 //=======================================================================================
37 MenusBase::MenusBase()
39 _dummyAct = new QAction(tr("No Action"), this);
40 // _dummyAct->setShortcut(tr("Ctrl+y"));
41 _dummyAct->setStatusTip(tr("This is just the title"));
42 _dummyAct->setToolTip(tr("the menu title"));
43 connect(_dummyAct, SIGNAL(triggered()), this, SLOT(dummyAction()));
46 MenusBase::~MenusBase()
50 void MenusBase::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
52 QMenu menu(m, caller);
53 menu.addAction(_dummyAct);
57 void MenusBase::dummyAction()
59 DEBTRACE("MenusBase::dummyAction");
62 void MenusBase::addHeader(QMenu &m, const QString &h)
64 m.addAction(_dummyAct);
65 _dummyAct->setText(h);
66 QFont f = _dummyAct->font();
68 _dummyAct->setFont(f);
72 //=======================================================================================
74 ComposedNodeMenu::ComposedNodeMenu() : MenusBase()
78 ComposedNodeMenu::~ComposedNodeMenu()
82 void ComposedNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
84 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
85 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
86 QMenu menu(m, caller);
90 QMenu *CNmenu = menu.addMenu(tr("Create Node"));
91 CNmenu->addAction(gmain->_nodeFromCatalogAct);
92 // CNmenu->addSeparator();
93 // CNmenu->addAction(gmain->_cppNodeAct);
94 // CNmenu->addAction(gmain->_XMLNodeAct);
95 CNmenu->addSeparator();
96 CNmenu->addAction(gmain->_inlineScriptNodeAct);
97 CNmenu->addAction(gmain->_inlineFunctionNodeAct);
98 CNmenu->addSeparator();
99 CNmenu->addAction(gmain->_inDataNodeAct);
100 CNmenu->addAction(gmain->_outDataNodeAct);
101 CNmenu->addAction(gmain->_inStudyNodeAct);
102 CNmenu->addAction(gmain->_outStudyNodeAct);
103 CNmenu->addSeparator();
104 CNmenu->addAction(gmain->_blockNodeAct);
105 CNmenu->addSeparator();
106 CNmenu->addAction(gmain->_FORNodeAct);
107 CNmenu->addAction(gmain->_FOREACHNodeAct);
108 CNmenu->addAction(gmain->_WHILENodeAct);
109 CNmenu->addAction(gmain->_SWITCHNodeAct);
112 menu.addAction(gmain->_toggleSceneItemVisibleAct);
113 menu.addAction(gmain->_arrangeLocalNodesAct);
114 menu.addAction(gmain->_arrangeRecurseNodesAct);
116 menu.addAction(gmain->_computeLinkAct);
117 menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
118 menu.addAction(gmain->_toggleSimplifyLinkAct);
119 menu.addAction(gmain->_toggleForce2NodesLinkAct);
123 menu.addAction(gmain->_deleteItemAct);
124 menu.addAction(gmain->_cutItemAct);
125 menu.addAction(gmain->_copyItemAct);
126 menu.addAction(gmain->_pasteItemAct);
128 menu.exec(globalPos);
131 //=======================================================================================
133 ProcMenu::ProcMenu() : MenusBase()
137 ProcMenu::~ProcMenu()
141 void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
143 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
144 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
145 QMenu menu(m, caller);
149 menu.addAction(gmain->_runLoadedSchemaAct);
151 menu.addAction(gmain->_importDataTypeAct);
152 menu.addAction(gmain->_newContainerAct);
153 QMenu *CNmenu = menu.addMenu(tr("Create Node"));
154 CNmenu->addAction(gmain->_nodeFromCatalogAct);
155 // CNmenu->addSeparator();
156 // CNmenu->addAction(gmain->_cppNodeAct);
157 // CNmenu->addAction(gmain->_XMLNodeAct);
158 CNmenu->addSeparator();
159 CNmenu->addAction(gmain->_inlineScriptNodeAct);
160 CNmenu->addAction(gmain->_inlineFunctionNodeAct);
161 CNmenu->addSeparator();
162 CNmenu->addAction(gmain->_inDataNodeAct);
163 CNmenu->addAction(gmain->_outDataNodeAct);
164 CNmenu->addAction(gmain->_inStudyNodeAct);
165 CNmenu->addAction(gmain->_outStudyNodeAct);
166 CNmenu->addSeparator();
167 CNmenu->addAction(gmain->_blockNodeAct);
168 CNmenu->addSeparator();
169 CNmenu->addAction(gmain->_FORNodeAct);
170 CNmenu->addAction(gmain->_FOREACHNodeAct);
171 CNmenu->addAction(gmain->_WHILENodeAct);
172 CNmenu->addAction(gmain->_SWITCHNodeAct);
174 menu.addAction(gmain->_pasteItemAct);
177 menu.addAction(gmain->_getYacsContainerLogAct);
179 menu.addAction(gmain->_toggleSceneItemVisibleAct);
180 menu.addAction(gmain->_arrangeLocalNodesAct);
181 menu.addAction(gmain->_arrangeRecurseNodesAct);
183 menu.addAction(gmain->_computeLinkAct);
184 menu.addAction(gmain->_toggleAutomaticComputeLinkAct);
185 menu.addAction(gmain->_toggleSimplifyLinkAct);
186 menu.addAction(gmain->_toggleForce2NodesLinkAct);
187 menu.exec(globalPos);
191 //=======================================================================================
193 NodeMenu::NodeMenu() : MenusBase()
197 NodeMenu::~NodeMenu()
201 void NodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
203 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
204 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
205 QMenu menu(m, caller);
209 menu.addAction(gmain->_deleteItemAct);
210 menu.addAction(gmain->_cutItemAct);
211 menu.addAction(gmain->_copyItemAct);
212 menu.addAction(gmain->_pasteItemAct);
214 menu.exec(globalPos);
217 //=======================================================================================
219 HeaderNodeMenu::HeaderNodeMenu() : MenusBase()
223 HeaderNodeMenu::~HeaderNodeMenu()
227 void HeaderNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
229 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
230 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
231 QMenu menu(m, caller);
235 menu.addAction(gmain->_deleteItemAct);
237 menu.exec(globalPos);
240 //=======================================================================================
242 LinkMenu::LinkMenu() : MenusBase()
246 LinkMenu::~LinkMenu()
250 void LinkMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
252 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
253 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
254 QMenu menu(m, caller);
258 menu.addAction(gmain->_deleteItemAct);
260 menu.exec(globalPos);
263 //=======================================================================================
265 ElementaryNodeMenu::ElementaryNodeMenu() : MenusBase()
269 ElementaryNodeMenu::~ElementaryNodeMenu()
273 void ElementaryNodeMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
275 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
276 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
277 QMenu menu(m, caller);
281 menu.addAction(gmain->_deleteItemAct);
282 menu.addAction(gmain->_cutItemAct);
283 menu.addAction(gmain->_copyItemAct);
284 menu.addAction(gmain->_pasteItemAct);
288 menu.addAction(gmain->_getErrorReportAct);
289 menu.addAction(gmain->_getErrorDetailsAct);
290 menu.addAction(gmain->_getContainerLogAct);
293 menu.addAction(gmain->_toggleSceneItemVisibleAct);
294 menu.exec(globalPos);
297 //=======================================================================================
299 InPortMenu::InPortMenu() : MenusBase()
303 InPortMenu::~InPortMenu()
307 void InPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
309 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
310 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
311 QMenu menu(m, caller);
315 Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
316 SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
318 if (sdp) parent = sdp->getPort()->getNode();
320 if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
321 menu.addAction(gmain->_deleteItemAct);
323 menu.exec(globalPos);
326 //=======================================================================================
328 OutPortMenu::OutPortMenu() : MenusBase()
332 OutPortMenu::~OutPortMenu()
336 void OutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
338 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
339 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
340 QMenu menu(m, caller);
344 Subject* sub = QtGuiContext::getQtCurrent()->getSelectedSubject();
345 SubjectDataPort *sdp = dynamic_cast<SubjectDataPort*>(sub);
347 if (sdp) parent = sdp->getPort()->getNode();
349 if (dynamic_cast<DataNode*>(parent) || dynamic_cast<InlineNode*>(parent))
350 menu.addAction(gmain->_deleteItemAct);
352 menu.exec(globalPos);
355 //=======================================================================================
357 CtrlInPortMenu::CtrlInPortMenu() : MenusBase()
361 CtrlInPortMenu::~CtrlInPortMenu()
365 void CtrlInPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
367 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
368 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
369 QMenu menu(m, caller);
373 //menu.addAction(gmain->_deleteItemAct);
375 menu.exec(globalPos);
378 //=======================================================================================
380 CtrlOutPortMenu::CtrlOutPortMenu() : MenusBase()
384 CtrlOutPortMenu::~CtrlOutPortMenu()
388 void CtrlOutPortMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
390 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
391 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
392 QMenu menu(m, caller);
396 //menu.addAction(gmain->_deleteItemAct);
398 menu.exec(globalPos);
401 //=======================================================================================
403 ReferenceMenu::ReferenceMenu() : MenusBase()
407 ReferenceMenu::~ReferenceMenu()
411 void ReferenceMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString& m)
413 GenericGui *gmain = QtGuiContext::getQtCurrent()->getGMain();
414 bool isEdition = QtGuiContext::getQtCurrent()->isEdition();
415 QMenu menu(m, caller);
417 menu.addAction(gmain->_selectReferenceAct);
418 menu.exec(globalPos);