1 // PARAVIS : ParaView wrapper SALOME module
3 // Copyright (C) 2010-2016 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>
27 #include <PVViewer_ViewManager.h>
29 #include <QtxAction.h>
30 #include <QtxActionMenuMgr.h>
31 #include <QtxActionToolMgr.h>
32 #include <SUIT_Desktop.h>
33 #include <SUIT_ResourceMgr.h>
34 #include <SUIT_Session.h>
35 #include <LightApp_Application.h>
42 #include <pqApplicationCore.h>
44 #include <pqSaveStateReaction.h>
45 #include <pqLoadDataReaction.h>
46 #include <pqLoadStateReaction.h>
47 #include <pqSaveDataReaction.h>
48 #include <pqSaveScreenshotReaction.h>
49 #include <pqExportReaction.h>
50 #include <pqSaveAnimationReaction.h>
51 #include <pqSaveAnimationGeometryReaction.h>
52 #include <pqServerConnectReaction.h>
53 #include <pqServerDisconnectReaction.h>
54 #include <pqCameraUndoRedoReaction.h>
55 #include <pqUndoRedoReaction.h>
56 #include <pqDeleteReaction.h>
57 #include <pqChangePipelineInputReaction.h>
58 #include <pqApplicationSettingsReaction.h>
59 #include <pqIgnoreSourceTimeReaction.h>
60 #include <pqCreateCustomFilterReaction.h>
61 #include <pqManageLinksReaction.h>
62 #include <pqManagePluginsReaction.h>
63 #include <pqCameraLinkReaction.h>
64 #include <pqManageCustomFiltersReaction.h>
65 #include <pqTimerLogReaction.h>
66 #include <pqTestingReaction.h>
67 #include <pqAboutDialogReaction.h>
68 #include <pqHelpReaction.h>
69 #include <pqDataQueryReaction.h>
70 #include <pqPythonShellReaction.h>
72 #include <pqViewManager.h>
73 #include <pqViewMenuManager.h>
74 #include <pqParaViewMenuBuilders.h>
75 #include <pqProxyGroupMenuManager.h>
76 #include <pqSetName.h>
77 #include <pqRecentFilesMenu.h>
78 #include <pqPipelineBrowserWidget.h>
81 \brief Create actions for ParaView GUI operations
82 duplicating menus and toolbars in MainWindow class of
83 the standard ParaView GUI client application.
85 void PVGUI_Module::pvCreateActions()
87 SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
95 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_OPEN_FILE"), false );
96 anAction = new QAction(QIcon(aPixmap), tr("MEN_OPEN_FILE"), this);
97 anAction->setToolTip(tr("TOP_OPEN_FILE"));
98 anAction->setStatusTip(tr("STB_OPEN_FILE"));
99 registerAction(OpenFileId, anAction);
100 new pqLoadDataReaction(anAction);
103 anAction = new QAction(tr("MEN_LOAD_STATE"), this);
104 anAction->setToolTip(tr("TOP_LOAD_STATE"));
105 anAction->setStatusTip(tr("STB_LOAD_STATE"));
106 registerAction(LoadStateId, anAction);
107 new pqLoadStateReaction(anAction);
110 anAction = new QAction(tr("MEN_SAVE_STATE"), this);
111 anAction->setToolTip(tr("TOP_SAVE_STATE"));
112 anAction->setStatusTip(tr("STB_SAVE_STATE"));
113 registerAction(SaveStateId, anAction);
114 new pqSaveStateReaction(anAction);
117 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_DATA"), false );
118 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_DATA"), this);
119 anAction->setToolTip(tr("TOP_SAVE_DATA"));
120 anAction->setStatusTip(tr("STB_SAVE_DATA"));
121 registerAction(SaveDataId, anAction);
122 new pqSaveDataReaction(anAction);
125 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_SCREENSHOT"), false );
126 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_SCREENSHOT"), this);
127 anAction->setToolTip(tr("TOP_SAVE_SCREENSHOT"));
128 anAction->setStatusTip(tr("STB_SAVE_SCREENSHOT"));
129 registerAction(SaveScreenshotId, anAction);
130 new pqSaveScreenshotReaction(anAction);
133 anAction = new QAction(tr("MEN_EXPORT"), this);
134 anAction->setToolTip(tr("TOP_EXPORT"));
135 anAction->setStatusTip(tr("STB_EXPORT"));
136 registerAction(ExportId, anAction);
137 new pqExportReaction(anAction);
140 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_ANIMATION"), false );
141 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_ANIMATION"), this);
142 anAction->setToolTip(tr("TOP_SAVE_ANIMATION"));
143 anAction->setStatusTip(tr("STB_SAVE_ANIMATION"));
144 registerAction(SaveAnimationId, anAction);
145 new pqSaveAnimationReaction(anAction);
148 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_SAVE_GEOMETRY"), false );
149 anAction = new QAction(QIcon(aPixmap), tr("MEN_SAVE_GEOMETRY"), this);
150 anAction->setToolTip(tr("TOP_SAVE_GEOMETRY"));
151 anAction->setStatusTip(tr("STB_SAVE_GEOMETRY"));
152 registerAction(SaveGeometryId, anAction);
153 new pqSaveAnimationGeometryReaction(anAction);
156 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CONNECT"), false );
157 anAction = new QAction(QIcon(aPixmap), tr("MEN_CONNECT"), this);
158 anAction->setToolTip(tr("TOP_CONNECT"));
159 anAction->setStatusTip(tr("STB_CONNECT"));
160 registerAction(ConnectId, anAction);
161 new pqServerConnectReaction(anAction);
164 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_DISCONNECT"), false );
165 anAction = new QAction(QIcon(aPixmap), tr("MEN_DISCONNECT"), this);
166 anAction->setToolTip(tr("TOP_DISCONNECT"));
167 anAction->setStatusTip(tr("STB_DISCONNECT"));
168 registerAction(DisconnectId, anAction);
169 new pqServerDisconnectReaction(anAction);
174 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_UNDO"), false );
175 anAction = new QAction(QIcon(aPixmap), tr("MEN_UNDO"), this);
176 anAction->setToolTip(tr("TOP_UNDO"));
177 anAction->setStatusTip(tr("STB_UNDO"));
178 registerAction(UndoId, anAction);
179 new pqUndoRedoReaction(anAction, true);
182 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_REDO"), false );
183 anAction = new QAction(QIcon(aPixmap), tr("MEN_REDO"), this);
184 anAction->setToolTip(tr("TOP_REDO"));
185 anAction->setStatusTip(tr("STB_REDO"));
186 registerAction(RedoId, anAction);
187 new pqUndoRedoReaction(anAction, false);
190 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CAMERA_UNDO"), false );
191 anAction = new QAction(QIcon(aPixmap), tr("MEN_CAMERA_UNDO"), this);
192 anAction->setToolTip(tr("TOP_CAMERA_UNDO"));
193 anAction->setStatusTip(tr("STB_CAMERA_UNDO"));
194 registerAction(CameraUndoId, anAction);
195 new pqCameraUndoRedoReaction(anAction, true);
198 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_CAMERA_REDO"), false );
199 anAction = new QAction(QIcon(aPixmap), tr("MEN_CAMERA_REDO"), this);
200 anAction->setToolTip(tr("TOP_CAMERA_REDO"));
201 anAction->setStatusTip(tr("STB_CAMERA_REDO"));
202 registerAction(CameraRedoId, anAction);
203 new pqCameraUndoRedoReaction(anAction, false);
206 anAction = new QAction(tr("MEN_FIND_DATA"), this);
207 anAction->setToolTip("");
208 anAction->setStatusTip("");
209 registerAction(FindDataId, anAction);
210 new pqDataQueryReaction(anAction);
213 anAction = new QAction(tr("MEN_CHANGE_INPUT"), this);
214 anAction->setToolTip(tr("TOP_CHANGE_INPUT"));
215 anAction->setStatusTip(tr("STB_CHANGE_INPUT"));
216 registerAction(ChangeInputId, anAction);
217 new pqChangePipelineInputReaction(anAction);
219 // Ignore source time
220 anAction = new QAction(tr("MEN_IGNORE_TIME"), this);
221 anAction->setToolTip(tr("TOP_IGNORE_TIME"));
222 anAction->setStatusTip(tr("STB_IGNORE_TIME"));
223 anAction->setCheckable(true);
224 registerAction(IgnoreTimeId, anAction);
225 new pqIgnoreSourceTimeReaction(anAction);
228 anAction = new QAction(tr("MEN_DELETE"), this);
229 anAction->setToolTip(tr("TOP_DELETE"));
230 anAction->setStatusTip(tr("STB_DELETE"));
231 registerAction(DeleteId, anAction);
232 new pqDeleteReaction(anAction);
235 anAction = new QAction(tr("MEN_DELETE_ALL"), this);
236 anAction->setToolTip(tr("TOP_DELETE_ALL"));
237 anAction->setStatusTip(tr("STB_DELETE_ALL"));
238 registerAction(DeleteAllId, anAction);
239 new pqDeleteReaction(anAction, true);
243 /*anAction = new QAction(tr("MEN_SETTINGS"), this);
244 anAction->setToolTip(tr("TOP_SETTINGS"));
245 anAction->setStatusTip(tr("STB_SETTINGS"));
246 registerAction(SettingsId, anAction);
247 new pqApplicationSettingsReaction(anAction);*/
250 // anAction = new QAction(tr("MEN_VIEW_SETTINGS"), this);
251 // anAction->setToolTip(tr("TOP_VIEW_SETTINGS"));
252 // anAction->setStatusTip(tr("STB_VIEW_SETTINGS"));
253 // registerAction(ViewSettingsId, anAction);
254 // new pqViewSettingsReaction(anAction);
257 //pqViewManager* viewManager = qobject_cast<pqViewManager*>(
258 // pqApplicationCore::instance()->manager("MULTIVIEW_WIDGET"));
260 //rnv: Commented to implement issue
261 //21318: EDF 1615 ALL: Display in full screen mode
262 //Switching to the "Full screen" mode added in the SALOME GUI module.
264 //anAction = new QAction("Full Screen", this);
265 //anAction->setObjectName("actionFullScreen");
266 //anAction->setShortcut(QKeySequence("F11"));
267 //connect(anAction, SIGNAL(triggered()), viewManager, SLOT(toggleFullScreen()));
268 //registerAction(FullScreenId, anAction);
272 // Create Custom Filter
273 anAction = new QAction(tr("MEN_CREATE_CUSTOM_FILTER"), this);
274 anAction->setToolTip(tr("TOP_CREATE_CUSTOM_FILTER"));
275 anAction->setStatusTip(tr("STB_CREATE_CUSTOM_FILTER"));
276 registerAction(CreateCustomFilterId, anAction);
277 new pqCreateCustomFilterReaction(anAction << pqSetName("actionToolsCreateCustomFilter"));
279 // Manage Custom Filters
280 anAction = new QAction(tr("MEN_MANAGE_CUSTOM_FILTERS"), this);
281 anAction->setToolTip(tr("TOP_MANAGE_CUSTOM_FILTERS"));
282 anAction->setStatusTip(tr("STB_MANAGE_CUSTOM_FILTERS"));
283 registerAction(ManageCustomFiltersId, anAction);
284 new pqManageCustomFiltersReaction(anAction << pqSetName("actionToolsManageCustomFilters"));
287 anAction = new QAction(tr("MEN_MANAGE_LINKS"), this);
288 anAction->setToolTip(tr("TOP_MANAGE_LINKS"));
289 anAction->setStatusTip(tr("STB_MANAGE_LINKS"));
290 registerAction(ManageLinksId, anAction);
291 new pqManageLinksReaction(anAction << pqSetName("actionToolsManageLinks"));
294 anAction = new QAction(tr("MEN_ADD_CAMERA_LINK"), this);
295 anAction->setToolTip(tr("TOP_ADD_CAMERA_LINK"));
296 anAction->setStatusTip(tr("STB_ADD_CAMERA_LINK"));
297 registerAction(AddCameraLinkId, anAction);
298 new pqCameraLinkReaction(anAction << pqSetName("actionToolsAddCameraLink"));
300 // Manage Plugins/Extensions
301 anAction = new QAction(tr("MEN_MANAGE_PLUGINS"), this);
302 anAction->setToolTip(tr("TOP_MANAGE_PLUGINS"));
303 anAction->setStatusTip(tr("STB_MANAGE_PLUGINS"));
304 registerAction(ManagePluginsExtensionsId, anAction);
305 new pqManagePluginsReaction(anAction << pqSetName("actionManage_Plugins"));
308 anAction = new QAction(tr("MEN_RECORD_TEST"), this);
309 anAction->setToolTip(tr("TOP_RECORD_TEST"));
310 anAction->setStatusTip(tr("STB_RECORD_TEST"));
311 registerAction(RecordTestId, anAction);
312 new pqTestingReaction(anAction << pqSetName("actionToolsRecordTest"), pqTestingReaction::RECORD);
315 anAction = new QAction(tr("MEN_PLAY_TEST"), this);
316 anAction->setToolTip(tr("TOP_PLAY_TEST"));
317 anAction->setStatusTip(tr("STB_PLAY_TEST"));
318 registerAction(PlayTestId, anAction);
319 new pqTestingReaction(anAction << pqSetName("actionToolsPlayTest"), pqTestingReaction::PLAYBACK);
322 anAction = new QAction(tr("MEN_MAX_WINDOW_SIZE"), this);
323 anAction->setToolTip(tr("TOP_MAX_WINDOW_SIZE"));
324 anAction->setStatusTip(tr("PRP_APP_MAX_WINDOW_SIZE"));
325 anAction->setCheckable(true);
326 registerAction(MaxWindowSizeId, anAction);
327 new pqTestingReaction(anAction << pqSetName("actionTesting_Window_Size"),
328 pqTestingReaction::LOCK_VIEW_SIZE);
330 // Custom Window Size
331 anAction = new QAction(tr("MEN_CUSTOM_WINDOW_SIZE"), this);
332 anAction->setToolTip(tr(""));
333 anAction->setStatusTip(tr(""));
334 anAction->setCheckable(true);
335 registerAction(CustomWindowSizeId, anAction);
336 new pqTestingReaction(anAction << pqSetName("actionTesting_Window_Size_Custom"),
337 pqTestingReaction::LOCK_VIEW_SIZE_CUSTOM);
340 anAction = new QAction(tr("MEN_TIMER_LOG"), this);
341 anAction->setToolTip(tr("TOP_TIMER_LOG"));
342 anAction->setStatusTip(tr("STB_TIMER_LOG"));
343 registerAction(TimerLogId, anAction);
344 new pqTimerLogReaction(anAction << pqSetName("actionToolsTimerLog"));
347 anAction = new QAction(tr("MEN_PYTHON_SHELL"), this);
348 anAction->setToolTip(tr("TOP_PYTHON_SHELL"));
349 anAction->setStatusTip(tr("STB_PYTHON_SHELL"));
350 registerAction(PythonShellId, anAction);
351 new pqPythonShellReaction(anAction << pqSetName("actionToolsPythonShell"));
354 anAction = new QAction(tr("MEN_SHOW_TRACE"), this);
355 anAction->setToolTip(tr("TOP_SHOW_TRACE"));
356 anAction->setStatusTip(tr("STB_SHOW_TRACE"));
357 connect(anAction, SIGNAL(triggered()), this, SLOT(onShowTrace()));
358 registerAction(ShowTraceId, anAction);
361 anAction = new QAction(tr("MEN_RESTART_TRACE"), this);
362 anAction->setToolTip(tr("TOP_RESTART_TRACE"));
363 anAction->setStatusTip(tr("STB_RESTART_TRACE"));
364 connect(anAction, SIGNAL(triggered()), this, SLOT(onRestartTrace()));
365 registerAction(RestartTraceId, anAction);
370 anAction = new QAction(tr("MEN_ABOUT"), this);
371 anAction->setToolTip(tr("TOP_ABOUT"));
372 anAction->setStatusTip(tr("STB_ABOUT"));
373 registerAction(AboutParaViewId, anAction);
374 new pqAboutDialogReaction(anAction << pqSetName("actionAbout"));
377 // Native ParaView user documentation
378 aPixmap = resMgr->loadPixmap( "ParaView", tr("ICON_PARAVIEW_HELP"), false );
379 anAction = new QAction(tr("MEN_PARAVIEW_HELP"), this);
380 anAction->setToolTip(tr("TOP_PARAVIEW_HELP"));
381 anAction->setStatusTip(tr("STB_PARAVIEW_HELP"));
382 registerAction(ParaViewHelpId, anAction);
383 new pqHelpReaction(anAction);
388 \brief Create menus for ParaView GUI operations
389 duplicating menus in pqMainWindow ParaView class
391 In particular, ParaView is responsible for updating "Sources" and "Filters" menus.
392 For this, specific menu managers created by pqMainWindowCore class are used, and PVGUI_Module
393 is responsible for creation of corresponding QMenu objects only.
395 void PVGUI_Module::pvCreateMenus()
397 SUIT_Desktop* desk = application()->desktop();
400 int aPVMnu = createMenu( tr( "MEN_DESK_FILE" ), -1, -1 );
402 createMenu( OpenFileId, aPVMnu, 5 );
405 myRecentMenuId = createMenu( tr( "MEN_RECENT_FILES" ), aPVMnu, -1, 5 );
406 QMenu* aMenu = menuMgr()->findMenu( myRecentMenuId );
407 pqRecentFilesMenu* aRecentFilesMenu = new pqRecentFilesMenu( *aMenu, getApp()->desktop() );
408 QList<QAction*> anActns = aMenu->actions();
409 for (int i = 0; i < anActns.size(); ++i)
410 createMenu( anActns.at(i), myRecentMenuId );
412 createMenu( separator(), aPVMnu, -1, 5 );
414 createMenu( LoadStateId, aPVMnu, 15 );
415 createMenu( SaveStateId, aPVMnu, 15 );
416 createMenu( separator(), aPVMnu, -1, 15 );
418 createMenu( SaveDataId, aPVMnu, 25 );
419 createMenu( SaveScreenshotId, aPVMnu, 25 );
420 createMenu( ExportId, aPVMnu, 25 );
421 createMenu( separator(), aPVMnu, -1, 25 );
423 createMenu( SaveAnimationId, aPVMnu, 35 );
424 createMenu( SaveGeometryId, aPVMnu, 35 );
425 createMenu( separator(), aPVMnu, -1, 35 );
427 createMenu( ConnectId, aPVMnu, 45 );
428 createMenu( DisconnectId, aPVMnu, 45 );
429 createMenu( separator(), aPVMnu, -1, 45 );
432 aPVMnu = createMenu( tr( "MEN_DESK_EDIT" ), -1, -1 );
434 createMenu( UndoId, aPVMnu );
435 createMenu( RedoId, aPVMnu );
436 createMenu( separator(), aPVMnu );
438 createMenu( CameraUndoId, aPVMnu );
439 createMenu( CameraRedoId, aPVMnu );
440 createMenu( separator(), aPVMnu );
442 createMenu( FindDataId, aPVMnu );
443 createMenu( ChangeInputId, aPVMnu );
444 createMenu( IgnoreTimeId, aPVMnu );
445 createMenu( DeleteId, aPVMnu );
446 createMenu( DeleteAllId, aPVMnu );
447 createMenu( separator(), aPVMnu );
449 //createMenu( SettingsId, aPVMnu );
450 //createMenu( ViewSettingsId, aPVMnu );
451 createMenu( separator(), aPVMnu );
454 aPVMnu = createMenu( tr( "MEN_DESK_VIEW" ), -1, -1 );
456 createMenu( FullScreenId, aPVMnu );
458 // --- Menu "Sources"
459 // Install ParaView managers for "Sources" menu
461 PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desk);
462 aRes = guiElements->getSourcesMenu();
463 mySourcesMenuId = createMenu( tr( "MEN_DESK_SOURCES" ), -1, -1, 60, -1, aRes);
465 // --- Menu "Filters"
466 // Install ParaView managers for "Filters" menu
467 aRes = guiElements->getFiltersMenu();
468 myFiltersMenuId = createMenu( tr( "MEN_DESK_FILTERS" ), -1, -1, 70, -1, aRes);
471 aRes = guiElements->getMacrosMenu();
472 myMacrosMenuId = createMenu( tr( "MEN_MACROS" ), -1, -1, 80, -1, aRes);
475 int aToolsMnu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, -1, 90 );
477 createMenu( CreateCustomFilterId, aToolsMnu );
478 createMenu( AddCameraLinkId, aToolsMnu );
479 createMenu( separator(), aToolsMnu );
480 createMenu( ManageCustomFiltersId, aToolsMnu );
481 createMenu( ManageLinksId, aToolsMnu );
482 createMenu( ManagePluginsExtensionsId, aToolsMnu );
483 createMenu( separator(), aToolsMnu );
485 createMenu( RecordTestId, aToolsMnu );
486 createMenu( PlayTestId, aToolsMnu );
487 createMenu( MaxWindowSizeId, aToolsMnu );
488 createMenu( CustomWindowSizeId, aToolsMnu );
489 createMenu( separator(), aToolsMnu );
491 createMenu( TimerLogId, aToolsMnu );
492 createMenu( separator(), aToolsMnu );
494 createMenu( PythonShellId, aToolsMnu );
495 createMenu( separator(), aToolsMnu );
496 createMenu( ShowTraceId, aToolsMnu );
497 createMenu( RestartTraceId, aToolsMnu );
499 // --- Menu "Catalyst"
500 aRes = guiElements->getCatalystMenu();
501 myCatalystMenuId = createMenu( tr( "MEN_DESK_CATALYST" ), -1, -1, 100, -1, aRes);
505 int aHelpMnu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1 );
506 int aUsersGuide = createMenu( tr( "User's Guide" ), aHelpMnu, -1 );
507 int aPVHelpMnu = createMenu( tr( "ParaViS module" ), aUsersGuide, -1, 5 );
509 createMenu( ParaViewHelpId, aPVHelpMnu );
510 createMenu( separator(), aPVHelpMnu );
512 createMenu( AboutParaViewId, aPVHelpMnu );
514 // -- Context menu in the pipeline browser
515 pqPipelineBrowserWidget * pq = guiElements->getPipelineBrowserWidget();
516 pqParaViewMenuBuilders::buildPipelineBrowserContextMenu( *(pq->contextMenu()) );
520 \brief Create toolbars for ParaView GUI operations
521 duplicating toolbars in pqMainWindow ParaView class
523 void PVGUI_Module::pvCreateToolBars()
525 SUIT_Desktop* desk = application()->desktop();
526 // pqParaViewMenuBuilders::buildToolbars(*desk);
527 PVViewer_GUIElements * guiElements = PVViewer_GUIElements::GetInstance(desk);
528 guiElements->setToolBarVisible(true);