1 // PARAVIS : ParaView wrapper SALOME module
3 // Copyright (C) 2010-2014 CEA/DEN, EDF R&D
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 // File : PVGUI_Module_MenuActions.cxx
22 // Author : Margarita KARPUNINA
25 #include "PVGUI_Module.h"
26 #include <PVViewer_GUIElements.h>
28 #include <QtxAction.h>
29 #include <QtxActionMenuMgr.h>
30 #include <QtxActionToolMgr.h>
31 #include <SUIT_Desktop.h>
32 #include <SUIT_ResourceMgr.h>
33 #include <SUIT_Session.h>
34 #include <SalomeApp_Application.h> // should ultimately be a LightApp only
35 #include <LightApp_Application.h>
42 #include <pqApplicationCore.h>
43 // #include <pqColorScaleToolbar.h>
44 #include <pqProgressManager.h>
45 //#include <pqRubberBandHelper.h>
46 //#include <pqScalarBarVisibilityAdaptor.h>
47 #include <pqUndoStack.h>
48 #include <pqVCRController.h>
50 #include <pqSaveStateReaction.h>
51 #include <pqLoadDataReaction.h>
52 #include <pqLoadStateReaction.h>
53 #include <pqSaveDataReaction.h>
54 #include <pqSaveScreenshotReaction.h>
55 #include <pqExportReaction.h>
56 #include <pqSaveAnimationReaction.h>
57 #include <pqSaveAnimationGeometryReaction.h>
58 #include <pqServerConnectReaction.h>
59 #include <pqServerDisconnectReaction.h>
60 #include <pqCameraUndoRedoReaction.h>
61 #include <pqUndoRedoReaction.h>
62 #include <pqDeleteReaction.h>
63 #include <pqChangePipelineInputReaction.h>
64 #include <pqApplicationSettingsReaction.h>
65 //#include <pqViewSettingsReaction.h>
66 #include <pqIgnoreSourceTimeReaction.h>
67 #include <pqViewMenuManager.h>
68 #include <pqParaViewMenuBuilders.h>
69 #include <pqProxyGroupMenuManager.h>
70 #include <pqCreateCustomFilterReaction.h>
71 #include <pqManageLinksReaction.h>
72 #include <pqManagePluginsReaction.h>
73 #include <pqCameraLinkReaction.h>
74 #include <pqManageCustomFiltersReaction.h>
75 #include <pqSetName.h>
76 #include <pqPythonShellReaction.h>
77 #include <pqTimerLogReaction.h>
78 #include <pqTestingReaction.h>
79 #include <pqAboutDialogReaction.h>
80 #include <pqHelpReaction.h>
81 #include <pqViewManager.h>
82 #include <pqDataQueryReaction.h>
83 #include <pqRecentFilesMenu.h>
85 #include "PVGUI_Tools.h"
89 \brief Create actions for ParaView GUI operations
90 duplicating menus and toolbars in MainWindow class of
91 the standard ParaView GUI client application.
93 void PVGUI_Module::pvCreateActions()
95 SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
99 //QtxAction* aQtxAction;
104 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_OPEN_FILE"), false );
105 anAction = new QAction(QIcon(aPixmap), tr("MEN_OPEN_FILE"), this);
106 anAction->setToolTip(tr("TOP_OPEN_FILE"));
107 anAction->setStatusTip(tr("STB_OPEN_FILE"));
108 registerAction(OpenFileId, anAction);
109 new pqLoadDataReaction(anAction);
112 anAction = new QAction(tr("MEN_LOAD_STATE"), this);
113 anAction->setToolTip(tr("TOP_LOAD_STATE"));
114 anAction->setStatusTip(tr("STB_LOAD_STATE"));
115 registerAction(LoadStateId, anAction);
116 new pqLoadStateReaction(anAction);
119 anAction = new QAction(tr("MEN_SAVE_STATE"), this);
120 anAction->setToolTip(tr("TOP_SAVE_STATE"));
121 anAction->setStatusTip(tr("STB_SAVE_STATE"));
122 registerAction(SaveStateId, anAction);
123 new pqSaveStateReaction(anAction);
126 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_DATA"), false );
127 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_DATA"), this);
128 anAction->setToolTip(tr("TOP_SAVE_DATA"));
129 anAction->setStatusTip(tr("STB_SAVE_DATA"));
130 registerAction(SaveDataId, anAction);
131 new pqSaveDataReaction(anAction);
134 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_SCREENSHOT"), false );
135 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_SCREENSHOT"), this);
136 anAction->setToolTip(tr("TOP_SAVE_SCREENSHOT"));
137 anAction->setStatusTip(tr("STB_SAVE_SCREENSHOT"));
138 registerAction(SaveScreenshotId, anAction);
139 new pqSaveScreenshotReaction(anAction);
142 anAction = new QAction(tr("MEN_EXPORT"), this);
143 anAction->setToolTip(tr("TOP_EXPORT"));
144 anAction->setStatusTip(tr("STB_EXPORT"));
145 registerAction(ExportId, anAction);
146 new pqExportReaction(anAction);
149 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_ANIMATION"), false );
150 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_ANIMATION"), this);
151 anAction->setToolTip(tr("TOP_SAVE_ANIMATION"));
152 anAction->setStatusTip(tr("STB_SAVE_ANIMATION"));
153 registerAction(SaveAnimationId, anAction);
154 new pqSaveAnimationReaction(anAction);
157 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_GEOMETRY"), false );
158 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_GEOMETRY"), this);
159 anAction->setToolTip(tr("TOP_SAVE_GEOMETRY"));
160 anAction->setStatusTip(tr("STB_SAVE_GEOMETRY"));
161 registerAction(SaveGeometryId, anAction);
162 new pqSaveAnimationGeometryReaction(anAction);
165 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CONNECT"), false );
166 anAction = new QAction(QIcon(aPixmap), tr("MEN_CONNECT"), this);
167 anAction->setToolTip(tr("TOP_CONNECT"));
168 anAction->setStatusTip(tr("STB_CONNECT"));
169 registerAction(ConnectId, anAction);
170 new pqServerConnectReaction(anAction);
173 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_DISCONNECT"), false );
174 anAction = new QAction(QIcon(aPixmap), tr("MEN_DISCONNECT"), this);
175 anAction->setToolTip(tr("TOP_DISCONNECT"));
176 anAction->setStatusTip(tr("STB_DISCONNECT"));
177 registerAction(DisconnectId, anAction);
178 new pqServerDisconnectReaction(anAction);
183 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_UNDO"), false );
184 anAction = new QAction(QIcon(aPixmap), tr("MEN_UNDO"), this);
185 anAction->setToolTip(tr("TOP_UNDO"));
186 anAction->setStatusTip(tr("STB_UNDO"));
187 registerAction(UndoId, anAction);
188 new pqUndoRedoReaction(anAction, true);
191 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_REDO"), false );
192 anAction = new QAction(QIcon(aPixmap), tr("MEN_REDO"), this);
193 anAction->setToolTip(tr("TOP_REDO"));
194 anAction->setStatusTip(tr("STB_REDO"));
195 registerAction(RedoId, anAction);
196 new pqUndoRedoReaction(anAction, false);
199 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CAMERA_UNDO"), false );
200 anAction = new QAction(QIcon(aPixmap), tr("MEN_CAMERA_UNDO"), this);
201 anAction->setToolTip(tr("TOP_CAMERA_UNDO"));
202 anAction->setStatusTip(tr("STB_CAMERA_UNDO"));
203 registerAction(CameraUndoId, anAction);
204 new pqCameraUndoRedoReaction(anAction, true);
207 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CAMERA_REDO"), false );
208 anAction = new QAction(QIcon(aPixmap), tr("MEN_CAMERA_REDO"), this);
209 anAction->setToolTip(tr("TOP_CAMERA_REDO"));
210 anAction->setStatusTip(tr("STB_CAMERA_REDO"));
211 registerAction(CameraRedoId, anAction);
212 new pqCameraUndoRedoReaction(anAction, false);
215 anAction = new QAction(tr("MEN_FIND_DATA"), this);
216 anAction->setToolTip("");
217 anAction->setStatusTip("");
218 registerAction(FindDataId, anAction);
219 new pqDataQueryReaction(anAction);
222 anAction = new QAction(tr("MEN_CHANGE_INPUT"), this);
223 anAction->setToolTip(tr("TOP_CHANGE_INPUT"));
224 anAction->setStatusTip(tr("STB_CHANGE_INPUT"));
225 registerAction(ChangeInputId, anAction);
226 new pqChangePipelineInputReaction(anAction);
228 // Ignore source time
229 anAction = new QAction(tr("MEN_IGNORE_TIME"), this);
230 anAction->setToolTip(tr("TOP_IGNORE_TIME"));
231 anAction->setStatusTip(tr("STB_IGNORE_TIME"));
232 anAction->setCheckable(true);
233 registerAction(IgnoreTimeId, anAction);
234 new pqIgnoreSourceTimeReaction(anAction);
237 anAction = new QAction(tr("MEN_DELETE"), this);
238 anAction->setToolTip(tr("TOP_DELETE"));
239 anAction->setStatusTip(tr("STB_DELETE"));
240 registerAction(DeleteId, anAction);
241 new pqDeleteReaction(anAction);
244 anAction = new QAction(tr("MEN_DELETE_ALL"), this);
245 anAction->setToolTip(tr("TOP_DELETE_ALL"));
246 anAction->setStatusTip(tr("STB_DELETE_ALL"));
247 registerAction(DeleteAllId, anAction);
248 new pqDeleteReaction(anAction, true);
252 /*anAction = new QAction(tr("MEN_SETTINGS"), this);
253 anAction->setToolTip(tr("TOP_SETTINGS"));
254 anAction->setStatusTip(tr("STB_SETTINGS"));
255 registerAction(SettingsId, anAction);
256 new pqApplicationSettingsReaction(anAction);*/
259 // anAction = new QAction(tr("MEN_VIEW_SETTINGS"), this);
260 // anAction->setToolTip(tr("TOP_VIEW_SETTINGS"));
261 // anAction->setStatusTip(tr("STB_VIEW_SETTINGS"));
262 // registerAction(ViewSettingsId, anAction);
263 // new pqViewSettingsReaction(anAction);
266 //pqViewManager* viewManager = qobject_cast<pqViewManager*>(
267 // pqApplicationCore::instance()->manager("MULTIVIEW_WIDGET"));
269 //rnv: Commented to implement issue
270 //21318: EDF 1615 ALL: Display in full screen mode
271 //Switching to the "Full screen" mode added in the SALOME GUI module.
273 //anAction = new QAction("Full Screen", this);
274 //anAction->setObjectName("actionFullScreen");
275 //anAction->setShortcut(QKeySequence("F11"));
276 //connect(anAction, SIGNAL(triggered()), viewManager, SLOT(toggleFullScreen()));
277 //registerAction(FullScreenId, anAction);
281 // Create Custom Filter
282 anAction = new QAction(tr("MEN_CREATE_CUSTOM_FILTER"), this);
283 anAction->setToolTip(tr("TOP_CREATE_CUSTOM_FILTER"));
284 anAction->setStatusTip(tr("STB_CREATE_CUSTOM_FILTER"));
285 registerAction(CreateCustomFilterId, anAction);
286 new pqCreateCustomFilterReaction(anAction << pqSetName("actionToolsCreateCustomFilter"));
288 // Manage Custom Filters
289 anAction = new QAction(tr("MEN_MANAGE_CUSTOM_FILTERS"), this);
290 anAction->setToolTip(tr("TOP_MANAGE_CUSTOM_FILTERS"));
291 anAction->setStatusTip(tr("STB_MANAGE_CUSTOM_FILTERS"));
292 registerAction(ManageCustomFiltersId, anAction);
293 new pqManageCustomFiltersReaction(anAction << pqSetName("actionToolsManageCustomFilters"));
296 anAction = new QAction(tr("MEN_MANAGE_LINKS"), this);
297 anAction->setToolTip(tr("TOP_MANAGE_LINKS"));
298 anAction->setStatusTip(tr("STB_MANAGE_LINKS"));
299 registerAction(ManageLinksId, anAction);
300 new pqManageLinksReaction(anAction << pqSetName("actionToolsManageLinks"));
303 anAction = new QAction(tr("MEN_ADD_CAMERA_LINK"), this);
304 anAction->setToolTip(tr("TOP_ADD_CAMERA_LINK"));
305 anAction->setStatusTip(tr("STB_ADD_CAMERA_LINK"));
306 registerAction(AddCameraLinkId, anAction);
307 new pqCameraLinkReaction(anAction << pqSetName("actionToolsAddCameraLink"));
309 // Manage Plugins/Extensions
310 anAction = new QAction(tr("MEN_MANAGE_PLUGINS"), this);
311 anAction->setToolTip(tr("TOP_MANAGE_PLUGINS"));
312 anAction->setStatusTip(tr("STB_MANAGE_PLUGINS"));
313 registerAction(ManagePluginsExtensionsId, anAction);
314 new pqManagePluginsReaction(anAction << pqSetName("actionManage_Plugins"));
317 anAction = new QAction(tr("MEN_RECORD_TEST"), this);
318 anAction->setToolTip(tr("TOP_RECORD_TEST"));
319 anAction->setStatusTip(tr("STB_RECORD_TEST"));
320 registerAction(RecordTestId, anAction);
321 new pqTestingReaction(anAction << pqSetName("actionToolsRecordTest"), pqTestingReaction::RECORD);
324 anAction = new QAction(tr("MEN_PLAY_TEST"), this);
325 anAction->setToolTip(tr("TOP_PLAY_TEST"));
326 anAction->setStatusTip(tr("STB_PLAY_TEST"));
327 registerAction(PlayTestId, anAction);
328 new pqTestingReaction(anAction << pqSetName("actionToolsPlayTest"), pqTestingReaction::PLAYBACK);
331 anAction = new QAction(tr("MEN_MAX_WINDOW_SIZE"), this);
332 anAction->setToolTip(tr("TOP_MAX_WINDOW_SIZE"));
333 anAction->setStatusTip(tr("PRP_APP_MAX_WINDOW_SIZE"));
334 anAction->setCheckable(true);
335 registerAction(MaxWindowSizeId, anAction);
336 new pqTestingReaction(anAction << pqSetName("actionTesting_Window_Size"),
337 pqTestingReaction::LOCK_VIEW_SIZE);
339 // Custom Window Size
340 anAction = new QAction(tr("MEN_CUSTOM_WINDOW_SIZE"), this);
341 anAction->setToolTip(tr(""));
342 anAction->setStatusTip(tr(""));
343 anAction->setCheckable(true);
344 registerAction(CustomWindowSizeId, anAction);
345 new pqTestingReaction(anAction << pqSetName("actionTesting_Window_Size_Custom"),
346 pqTestingReaction::LOCK_VIEW_SIZE_CUSTOM);
349 anAction = new QAction(tr("MEN_TIMER_LOG"), this);
350 anAction->setToolTip(tr("TOP_TIMER_LOG"));
351 anAction->setStatusTip(tr("STB_TIMER_LOG"));
352 registerAction(TimerLogId, anAction);
353 new pqTimerLogReaction(anAction << pqSetName("actionToolsTimerLog"));
356 anAction = new QAction(tr("MEN_OUTPUT_WINDOW"), this);
357 anAction->setToolTip(tr("TOP_OUTPUT_WINDOW"));
358 anAction->setStatusTip(tr("STB_OUTPUT_WINDOW"));
359 registerAction(OutputWindowId, anAction);
360 anAction << pqSetName("actionToolsOutputWindow");
361 connect(anAction, SIGNAL(triggered()), pqApplicationCore::instance(), SLOT(showOutputWindow()));
364 anAction = new QAction(tr("MEN_PYTHON_SHELL"), this);
365 anAction->setToolTip(tr("TOP_PYTHON_SHELL"));
366 anAction->setStatusTip(tr("STB_PYTHON_SHELL"));
367 registerAction(PythonShellId, anAction);
368 new pqPythonShellReaction(anAction << pqSetName("actionToolsPythonShell"));
371 anAction = new QAction(tr("MEN_SHOW_TRACE"), this);
372 anAction->setToolTip(tr("TOP_SHOW_TRACE"));
373 anAction->setStatusTip(tr("STB_SHOW_TRACE"));
374 connect(anAction, SIGNAL(triggered()), this, SLOT(onShowTrace()));
375 registerAction(ShowTraceId, anAction);
378 anAction = new QAction(tr("MEN_RESTART_TRACE"), this);
379 anAction->setToolTip(tr("TOP_RESTART_TRACE"));
380 anAction->setStatusTip(tr("STB_RESTART_TRACE"));
381 connect(anAction, SIGNAL(triggered()), this, SLOT(onRestartTrace()));
382 registerAction(RestartTraceId, anAction);
387 anAction = new QAction(tr("MEN_ABOUT"), this);
388 anAction->setToolTip(tr("TOP_ABOUT"));
389 anAction->setStatusTip(tr("STB_ABOUT"));
390 registerAction(AboutParaViewId, anAction);
391 new pqAboutDialogReaction(anAction << pqSetName("actionAbout"));
394 // Native ParaView user documentation
395 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_PARAVIEW_HELP"), false );
396 anAction = new QAction(tr("MEN_PARAVIEW_HELP"), this);
397 anAction->setToolTip(tr("TOP_PARAVIEW_HELP"));
398 anAction->setStatusTip(tr("STB_PARAVIEW_HELP"));
399 registerAction(ParaViewHelpId, anAction);
400 new pqHelpReaction(anAction);
405 \brief Create menus for ParaView GUI operations
406 duplicating menus in pqMainWindow ParaView class
408 In particular, ParaView is responsible for updating "Sources" and "Filters" menus.
409 For this, specific menu managers created by pqMainWindowCore class are used, and PVGUI_Module
410 is responsible for creation of corresponding QMenu objects only.
412 void PVGUI_Module::pvCreateMenus()
414 SUIT_Desktop* desk = application()->desktop();
417 int aPVMnu = createMenu( tr( "MEN_DESK_FILE" ), -1, -1 );
419 createMenu( OpenFileId, aPVMnu, 5 );
422 myRecentMenuId = createMenu( tr( "MEN_RECENT_FILES" ), aPVMnu, -1, 5 );
423 QMenu* aMenu = menuMgr()->findMenu( myRecentMenuId );
424 pqRecentFilesMenu* aRecentFilesMenu = new pqRecentFilesMenu( *aMenu, getApp()->desktop() );
425 QList<QAction*> anActns = aMenu->actions();
426 for (int i = 0; i < anActns.size(); ++i)
427 createMenu( anActns.at(i), myRecentMenuId );
429 createMenu( separator(), aPVMnu, -1, 5 );
431 createMenu( LoadStateId, aPVMnu, 15 );
432 createMenu( SaveStateId, aPVMnu, 15 );
433 createMenu( separator(), aPVMnu, -1, 15 );
435 createMenu( SaveDataId, aPVMnu, 25 );
436 createMenu( SaveScreenshotId, aPVMnu, 25 );
437 createMenu( ExportId, aPVMnu, 25 );
438 createMenu( separator(), aPVMnu, -1, 25 );
440 createMenu( SaveAnimationId, aPVMnu, 35 );
441 createMenu( SaveGeometryId, aPVMnu, 35 );
442 createMenu( separator(), aPVMnu, -1, 35 );
444 createMenu( ConnectId, aPVMnu, 45 );
445 createMenu( DisconnectId, aPVMnu, 45 );
446 createMenu( separator(), aPVMnu, -1, 45 );
449 aPVMnu = createMenu( tr( "MEN_DESK_EDIT" ), -1, -1 );
451 createMenu( UndoId, aPVMnu );
452 createMenu( RedoId, aPVMnu );
453 createMenu( separator(), aPVMnu );
455 createMenu( CameraUndoId, aPVMnu );
456 createMenu( CameraRedoId, aPVMnu );
457 createMenu( separator(), aPVMnu );
459 createMenu( FindDataId, aPVMnu );
460 createMenu( ChangeInputId, aPVMnu );
461 createMenu( IgnoreTimeId, aPVMnu );
462 createMenu( DeleteId, aPVMnu );
463 createMenu( DeleteAllId, aPVMnu );
464 createMenu( separator(), aPVMnu );
466 //createMenu( SettingsId, aPVMnu );
467 //createMenu( ViewSettingsId, aPVMnu );
468 createMenu( separator(), aPVMnu );
471 aPVMnu = createMenu( tr( "MEN_DESK_VIEW" ), -1, -1 );
472 /*myToolbarsMenuId = createMenu( "Toolbars", aPVMnu );
473 aMenu = getMenu( myToolbarsMenuId );
476 connect(aMenu, SIGNAL(aboutToShow()), this, SLOT(buildToolbarsMenu()));
478 createMenu( separator(), aPVMnu );*/
480 createMenu( FullScreenId, aPVMnu );
482 // --- Menu "Sources"
483 // Install ParaView managers for "Sources" menu
485 PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desk);
486 mySourcesMenuId = createMenu( tr( "MEN_DESK_SOURCES" ), -1, -1, 60);
487 if ( (aRes = getMenu( mySourcesMenuId )) )
488 guiElements->updateSourcesMenu(aRes);
490 // --- Menu "Filters"
491 // Install ParaView managers for "Filters" menu
492 myFiltersMenuId = createMenu( tr( "MEN_DESK_FILTERS" ), -1, -1, 70 );
493 if ( (aRes = getMenu( myFiltersMenuId )) )
494 guiElements->updateFiltersMenu(aRes);
497 myMacrosMenuId = createMenu( tr( "MEN_MACROS" ), -1, -1, 80 );
498 if ( (aRes = getMenu( myMacrosMenuId )) )
499 guiElements->updateMacrosMenu(aRes);
502 int aToolsMnu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, -1, 90 );
504 createMenu( CreateCustomFilterId, aToolsMnu );
505 createMenu( AddCameraLinkId, aToolsMnu );
506 createMenu( separator(), aToolsMnu );
507 createMenu( ManageCustomFiltersId, aToolsMnu );
508 createMenu( ManageLinksId, aToolsMnu );
509 createMenu( ManagePluginsExtensionsId, aToolsMnu );
510 createMenu( separator(), aToolsMnu );
512 createMenu( RecordTestId, aToolsMnu );
513 createMenu( PlayTestId, aToolsMnu );
514 createMenu( MaxWindowSizeId, aToolsMnu );
515 createMenu( CustomWindowSizeId, aToolsMnu );
516 createMenu( separator(), aToolsMnu );
518 createMenu( TimerLogId, aToolsMnu );
519 createMenu( OutputWindowId, aToolsMnu );
520 createMenu( separator(), aToolsMnu );
522 createMenu( PythonShellId, aToolsMnu );
523 createMenu( separator(), aToolsMnu );
524 createMenu( ShowTraceId, aToolsMnu );
525 createMenu( RestartTraceId, aToolsMnu );
529 int aHelpMnu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1 );
530 int aPVHelpMnu = createMenu( tr( "ParaViS module" ), aHelpMnu, -1, 0 );
532 createMenu( ParaViewHelpId, aPVHelpMnu );
533 createMenu( separator(), aPVHelpMnu );
535 createMenu( AboutParaViewId, aPVHelpMnu );
539 \brief Create toolbars for ParaView GUI operations
540 duplicating toolbars in pqMainWindow ParaView class
542 void PVGUI_Module::pvCreateToolBars()
544 SUIT_Desktop* desk = application()->desktop();
545 pqParaViewMenuBuilders::buildToolbars(*desk);
549 \brief Returns QMenu by its id.
551 QMenu* PVGUI_Module::getMenu( const int id )
554 //SalomeApp_Application* anApp = getApp();
555 LightApp_Application* anApp = getApp();
556 SUIT_Desktop* desk = anApp->desktop();
558 QtxActionMenuMgr* menuMgr = desk->menuMgr();
559 res = menuMgr->findMenu( id );
565 \brief Returns list of ParaView toolbars
567 /*QList<QToolBar*> PVGUI_Module::getParaViewToolbars()
569 QList<QToolBar*> all_toolbars = application()->desktop()->findChildren<QToolBar*>();
570 // First two toolbars has to be ignored because they are not from ParaView
571 if (all_toolbars.size() > 2) {
572 all_toolbars.removeFirst();
573 all_toolbars.removeFirst();
581 \brief Builds a menu which referred to toolbars
583 /*void PVGUI_Module::buildToolbarsMenu()
585 SUIT_Desktop* desk = application()->desktop();
586 QMenu* aMenu = menuMgr()->findMenu( myToolbarsMenuId );
589 QList<QMenu*> child_menus = aMenu->findChildren<QMenu*>();
590 foreach (QMenu* menu, child_menus) {
593 QList<QToolBar*> all_toolbars = getParaViewToolbars();
595 // Add menus for all toolbars and actions from them.
596 // This puts menu actions for all toolbars making it possible to access all
597 // toolbar actions even when the toolbar are not visible.
598 // I wonder if I should ignore the pqMainControlsToolbar since those actions
599 // are already placed at other places.
600 foreach (QToolBar* toolbar, all_toolbars) {
601 QMenu* sub_menu = new QMenu(aMenu) << pqSetName(toolbar->windowTitle());
603 foreach (QAction* action, toolbar->actions()) {
604 if (!action->text().isEmpty()) {
606 sub_menu->addAction(action);
610 QAction* menu_action = aMenu->addMenu(sub_menu);
611 menu_action->setText(toolbar->windowTitle());
616 disconnect(aMenu, SIGNAL(aboutToShow()), this, SLOT(buildToolbarsMenu()));
621 \brief Create actions for ParaViS
623 void PVGUI_Module::createActions()
627 // // New ParaView window
628 // anAction = new QtxAction(tr("MEN_NEW_PV_VIEW"), tr("MEN_NEW_PV_VIEW"), 0,
629 // this, false, "ParaViS:Create new ParaView view");
630 // connect(anAction, SIGNAL(triggered()), this, SLOT(onNewParaViewWindow()));
631 // registerAction(ParaViewNewWindowId, anAction);
633 // Save state under the module root object
634 anAction = new QAction(tr("MEN_SAVE_MULTI_STATE"), this);
635 connect(anAction, SIGNAL(triggered()), this, SLOT(onSaveMultiState()));
636 registerAction(SaveStatePopupId, anAction);
638 // Restore the selected state by merging with the current one
639 anAction = new QAction(tr("MEN_ADD_STATE"), this);
640 connect(anAction, SIGNAL(triggered()), this, SLOT(onAddState()));
641 registerAction(AddStatePopupId, anAction);
643 // Clean the current state and restore the selected one
644 anAction = new QAction(tr("MEN_CLEAN_ADD_STATE"), this);
645 connect(anAction, SIGNAL(triggered()), this, SLOT(onCleanAddState()));
646 registerAction(CleanAndAddStatePopupId, anAction);
648 // Rename the selected object (Object Browser)
649 anAction = new QAction(tr("MEN_PARAVIS_RENAME"), this);
650 connect(anAction, SIGNAL(triggered()), this, SLOT(onRename()));
651 registerAction(ParaVisRenameId, anAction);
653 // Delete the selected object (Object Browser)
654 anAction = new QAction(tr("MEN_PARAVIS_DELETE"), this);
655 connect(anAction, SIGNAL(triggered()), this, SLOT(onDelete()));
656 registerAction(ParaVisDeleteId, anAction);
660 \brief Create actions for ParaViS
662 void PVGUI_Module::createMenus()
664 // "Window" - "New Window" - "ParaView view" menu
665 int aWindowMenu = createMenu(tr( "MEN_DESK_WINDOW" ), -1, -1);
666 int aNewWindowMenu = createMenu(tr( "MEN_DESK_NEWWINDOW"), aWindowMenu, -1, -1);
667 createMenu(ParaViewNewWindowId, aNewWindowMenu);