![]() |
VR-Forces 4.0.4 Class Documentation
|
This example shows how to create and modify a toolbar from both new and existing menu items and GUI elements.
The code fragments are from exampleToolbarPluginInit.cxx code.
DtQtMenuAssembler::instance(de).registerMenu(new DtExampleToolbarMenu(de)); DtQtMenuAssembler::instance(de).registerMenu(new DtExampleToolbarMenuItem(de));
DtQtToolbarAssembler::instance(de).registerToolbar(new DtExampleToolbar(de));
igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtWireframeItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtShadowsItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_1")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtExampleToolbarMenuItem"));
igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_2")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").mainMenu("DtFileMenu").menu("DtOpenMenu"));
DtQtMenuAssembler::instance(de).registerMenu(new DtExampleSceneToolbarMenu(de)); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu")); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu").item("DtNewSceneItem")); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu").item("DtOpenSceneItem"));
igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_3")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").mainMenu("DtExampleSceneToolbarMenu"));
DtQtToolbarAssembler::instance(de).registerWidgetBuilder("DtToolbarExampleCombo", new DtToolbarExampleCombo); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_4")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").widget("DtToolbarExampleCombo"));
VR-Vantage includes pre-built versions of the example plug-in. To build it yourself, follow the instructions at Building VR-Vantage Examples, Applications, and Plug-ins.
This example is a plug-in. You can run it by running ./bin/exampleToolbar_stealth.bat (on Windows) or ./bin/exampleToolbar_stealth.sh (on Linux). For more information about running examples, please see Running Applications and Examples.
/****************************************************************************** ** Copyright (c) 2010 MAK Technologies, Inc. ** All rights reserved. ******************************************************************************/ /****************************************************************************** ** $RCSfile: exampleToolbarPluginInit.cxx,v $ $Revision: 1.1 $ $State: Exp $ ******************************************************************************/ #include "exampleToolbarPlugin.h" #include "exampleToolbarPluginInit.h" #include "exampleToolbarMenu.h" #include <vrvCore/DtDe.h> #include <vrvCore/DtVrvApplication.h> #include <vrvCore/DtMenuPath.h> #include <vrvCore/DtToolbarPath.h> #include <vrvCoreQt/DtQtMenuAssembler.h> #include <vrvCoreQt/DtQtToolbarAssembler.h> bool initDeModule(makVrv::DtDe* de) { makVrv::vrvExampleToolbarPlugin::init(*de); return true; } namespace makVrv { namespace vrvExampleToolbarPlugin { void init(DtDe& de) { DT_DE_INIT_ONCE(de); try { // First make sure that the vrvCoreQt module is init'ed. vrvCoreQt::init(de); //Add example menu and example page item. makVrv::DtVrvApplication* igApp = makVrv::DtVrvApplication::findFromDe(de); if(igApp) { DtQtMenuAssembler::instance(de).registerMenu(new DtExampleToolbarMenu(de)); DtQtMenuAssembler::instance(de).registerMenu(new DtExampleToolbarMenuItem(de)); igApp->masterModeMenuConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleToolbarMenu")); igApp->masterModeMenuConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleToolbarMenu").item("DtExampleToolbarMenuItem")); DtQtToolbarAssembler::instance(de).registerToolbar(new DtExampleToolbar(de)); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtWireframeItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtShadowsItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_1")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").item("DtExampleToolbarMenuItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_2")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").mainMenu("DtFileMenu").menu("DtOpenMenu")); DtQtMenuAssembler::instance(de).registerMenu(new DtExampleSceneToolbarMenu(de)); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu")); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu").item("DtNewSceneItem")); igApp->masterModeToolbarConfiguration().addMenuPath( DtMenuPath::mainMenu("DtExampleSceneToolbarMenu").item("DtOpenSceneItem")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_3")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").mainMenu("DtExampleSceneToolbarMenu")); DtQtToolbarAssembler::instance(de).registerWidgetBuilder("DtToolbarExampleCombo", new DtToolbarExampleCombo); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").separator("DtSeparator_4")); igApp->masterModeToolbarConfiguration().addToolbarPath( DtToolbarPath::toolbar("DtExampleToolbar").widget("DtToolbarExampleCombo")); igApp->masterModeMenuConfiguration().addMenuPathAfter(DtMenuPath::mainMenu("DtViewMenu").item("DtExampleToolbar"), DtMenuPath::mainMenu("DtViewMenu").separator("1")); igApp->masterModeMenuConfiguration().addMenuPathAfter(DtMenuPath::mainMenu("DtViewMenu").separator("DtExampleToolbarSeparator"), DtMenuPath::mainMenu("DtViewMenu").item("DtExampleToolbar")); igApp->masterModeToolbarConfiguration().removeToolbarPath( DtToolbarPath::toolbar("DtDisplaySettingsToolbar").item("DtWireframeItem")); igApp->masterModeToolbarConfiguration().removeToolbarPath( DtToolbarPath::toolbar("DtDisplaySettingsToolbar").item("DtShadowsItem")); } } DtCATCH_AND_PROPAGATE(DtCorruptedState) } } }
/****************************************************************************** ** Copyright (c) 2010 MAK Technologies, Inc. ** All rights reserved. ******************************************************************************/ /****************************************************************************** ** $RCSfile: exampleToolbarMen.h,v $ $Revision: 1.1 $ $State: Exp $ ******************************************************************************/ #pragma once #include "exampleToolbarPlugin.h" #include <vrvCoreQt/DtToolbar.h> #include <vrvCoreQt/DtMenu.h> #include <vrvCoreQt/DtMenuItem.h> #include <vrvCoreQt/DtWidgetBuilder.h> namespace makVrv { class DtDe; namespace vrvExampleToolbarPlugin { class DT_DLL_EXAMPLETOOLBAR DtExampleToolbar : public DtToolbar { public: DtExampleToolbar(DtDe&); virtual ~DtExampleToolbar(); virtual QToolBar* createToolbar(DtDe&, QWidget* parent); }; class DT_DLL_EXAMPLETOOLBAR DtExampleToolbarMenu : public DtMenu { public: DtExampleToolbarMenu(DtDe& de); virtual ~DtExampleToolbarMenu(); virtual QMenu* createMenu(DtDe&, QWidget* parent); }; class DT_DLL_EXAMPLETOOLBAR DtExampleSceneToolbarMenu : public DtMenu { public: DtExampleSceneToolbarMenu(DtDe& de); virtual ~DtExampleSceneToolbarMenu(); virtual QMenu* createMenu(DtDe&, QWidget* parent); }; class DT_DLL_EXAMPLETOOLBAR DtExampleToolbarMenuItem : public DtMenuItem { public: DtExampleToolbarMenuItem(makVrv::DtDe& de); virtual ~DtExampleToolbarMenuItem(); virtual QAction* createAction( DtDe&, QWidget* parent ); virtual void on_triggered(); }; class DT_DLL_EXAMPLETOOLBAR DtToolbarExampleCombo : public DtWidgetBuilder { public: DtToolbarExampleCombo(); virtual ~DtToolbarExampleCombo(); virtual QWidget* create( makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags); }; } }
/****************************************************************************** ** Copyright (c) 2010 MAK Technologies, Inc. ** All rights reserved. ******************************************************************************/ /****************************************************************************** ** $RCSfile: exampleToolberMenu.cxx,v $ $Revision: 1.1 $ $State: Exp $ ******************************************************************************/ #include "exampleToolbarMenu.h" #include <vrvCore/DtDe.h> #include <vrvUtil/DtDeConfiguration.h> #include <QtGui/QToolBar> #include <QtGui/QAction> #include <QtGui/QMessageBox> #include <QtGui/QMenu> #include <QtGui/QComboBox> namespace makVrv { namespace vrvExampleToolbarPlugin { DtExampleToolbar::DtExampleToolbar(DtDe& de) : DtToolbar(de, "DtExampleToolbar") { } DtExampleToolbar::~DtExampleToolbar() { } QToolBar* DtExampleToolbar::createToolbar(DtDe&, QWidget* parent) { QToolBar* bar = new QToolBar(parent); bar->setWindowTitle(QObject::tr("Example Toolbar")); bar->setObjectName(QObject::tr("Example Toolbar")); return bar; } DtExampleToolbarMenu::DtExampleToolbarMenu(DtDe& de) : DtMenu(de, std::string("DtExampleToolbarMenu")) { } DtExampleToolbarMenu::~DtExampleToolbarMenu() { } QMenu* DtExampleToolbarMenu::createMenu( DtDe&, QWidget* parent ) { QMenu* menu = new QMenu(QMenu::tr("&Toolbars Example"),parent); return menu; } DtExampleSceneToolbarMenu::DtExampleSceneToolbarMenu(DtDe& de) : DtMenu(de, std::string("DtExampleSceneToolbarMenu")) { } DtExampleSceneToolbarMenu::~DtExampleSceneToolbarMenu() { } QMenu* DtExampleSceneToolbarMenu::createMenu( DtDe&, QWidget* parent ) { QMenu* menu = new QMenu(QMenu::tr("&Scene Toolbars Example"),parent); menu->setIcon(QIcon(QString::fromStdString(myDe.dePathConfiguration().dataPath() + std::string("/Icons/TerrainScene.svg")))); return menu; } DtExampleToolbarMenuItem::DtExampleToolbarMenuItem(DtDe& de) : DtMenuItem(std::string("DtExampleToolbarMenuItem")) { } DtExampleToolbarMenuItem::~DtExampleToolbarMenuItem() { } QAction* DtExampleToolbarMenuItem::createAction( DtDe&, QWidget* parent ) { QAction* act = new QAction(parent); act->setText(DtMenuItem::tr("&Example Toolbar Item...")); return act; } void DtExampleToolbarMenuItem::on_triggered() { QAction* action = dynamic_cast<QAction*>(sender()); QWidget* parent = 0; if(action) { parent = action->parentWidget(); } QMessageBox::information(parent, "Toolbar Example", "This dialog was triggered from the toolbar example menu item"); } DtToolbarExampleCombo::DtToolbarExampleCombo() : DtWidgetBuilder() { } DtToolbarExampleCombo::~DtToolbarExampleCombo() { } QWidget* DtToolbarExampleCombo::create( makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags) { QComboBox* combo = new QComboBox(parent); combo->addItem("Item 1"); combo->addItem("Item 2"); combo->addItem("Item 3"); return combo; } } }