The Interface Manipulation example creates a starting dialog that allows different options for the GUI to be entered into. One is the normal VRF GUI, one is a "Simple Scenario Player" that allows the user to load terrains or scenarios and observe them - but not interact with them. The other option created by this example is a "Simple Scenario Viewer" that allows the user only to observe simulation activity, but not to interact with it in any way.
#include <vrvCore/DtToolbarConfiguration.h>
#include <vrvCore/DtToolbarPath.h>
#include <vrvCoreQt/DtQApplicationProvider.h>
#include <vrvCore/DtDe.h>
#include <vrvCore/DtDriverManager.h>
#include <vrvCore/DtInputDriver.h>
#include <vrvCore/DtVrvApplication.h>
#include <vrvUtil/DtDeInitializer.h>
#include <QtGui/QApplication>
#include <QtGui/QDialog>
#include <QtGui/QLayout>
#include <QtGui/QPushButton>
#include <QtGui/QLabel>
#include <QtGui/QComboBox>
#include <boost/bind.hpp>
static int theUiType = 0;
{
}
{
if (theUiType > 0)
{
de.driverManager().inputDriver().setTerrainContextEnabled(false);
if (theUiType == 3)
{
}
}
}
void createSimpleScenarioPlayer(makVrv::DtVrvApplication& app, makVrv::DtDe& de)
{
(boost::bind(&sessionStartupDialogLoadOnlyMode, _1));
makVrv::DtMenuConfiguration simplePlayer;
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtFileMenu").item("DtOpenTerrainItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtFileMenu").item("DtLoadScenarioMenuItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtFileMenu").item("DtCloseScenarioMenuItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu(
"DtFileMenu").
separator(
"DtScenarioSeparator"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtFileMenu").item("DtExitItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtViewMenu").item("DtFullScreenItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtSimulationMenu"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtSimulationMenu").item("DtRewindScenarioMenuItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtSimulationMenu").item("DtPlayScenarioMenuItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtSimulationMenu").item("DtPauseScenarioMenuItem"));
app.masterModeMenuConfiguration() = simplePlayer;
makVrv::DtToolbarConfiguration toolbars;
toolbars.addToolbarPath(makVrv::DtToolbarPath::row("Top_Row").toolbar("DtObserverSettingsToolbar"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtObserverSelectionWidget"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtObserverModeSelectionWidget"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar(
"DtObserverSettingsToolbar").
separator(
"DtObserverSettingsToolbarSeparator"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtSetModelSetToolButton"));
app.masterModeToolbarConfiguration() = toolbars;
app.masterModePageConfiguration() = makVrv::DtPageConfiguration();
}
void createSimpleScenarioViewer(makVrv::DtVrvApplication& app, makVrv::DtDe& de)
{
makVrv::DtMenuConfiguration simplePlayer;
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtFileMenu").item("DtExitItem"));
simplePlayer.addMenuPath(makVrv::DtMenuPath::mainMenu("DtViewMenu").item("DtFullScreenItem"));
makVrv::DtToolbarConfiguration toolbars;
toolbars.addToolbarPath(makVrv::DtToolbarPath::row("Top_Row").toolbar("DtObserverSettingsToolbar"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtObserverSelectionWidget"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtObserverModeSelectionWidget"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar(
"DtObserverSettingsToolbar").
separator(
"DtObserverSettingsToolbarSeparator"));
toolbars.addToolbarPath(makVrv::DtToolbarPath::toolbar("DtObserverSettingsToolbar").widget("DtSetModelSetToolButton"));
app.masterModeToolbarConfiguration() = toolbars;
app.masterModeMenuConfiguration() = simplePlayer;
app.masterModePageConfiguration() = makVrv::DtPageConfiguration();
}
void showMapAreaOnly(makVrv::DtVrvApplication& app, makVrv::DtDe& de)
{
makVrv::DtMenuConfiguration simplePlayer;
makVrv::DtToolbarConfiguration toolbars;
app.masterModeToolbarConfiguration() = toolbars;
app.masterModeMenuConfiguration() = simplePlayer;
app.masterModePageConfiguration() = makVrv::DtPageConfiguration();
}
void chooseInterface(makVrv::DtVrvApplication& app, makVrv::DtDe& de)
{
if (!qApp)
{
makVrv::DtQApplicationProvider& appProvider = makVrv::DtQApplicationProvider::instance(de);
appProvider.qAppInstance();
}
QVBoxLayout* lay = new QVBoxLayout(dlg);
dlg->setWindowTitle("Select User Interface");
lay->setMargin(4);
lay->setSpacing(4);
lay->addWidget(combo);
combo->addItem("Default");
combo->addItem("Simple Scenario Player");
combo->addItem("Simple Scenario Viewer");
combo->addItem("Map Area Only");
QSpacerItem* item = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding);
QHBoxLayout* hLay = new QHBoxLayout;
hLay->setMargin(0);
hLay->setSpacing(0);
lay->addLayout(hLay);
hLay->addItem(item);
QObject::connect(ok, SIGNAL(released()), dlg, SLOT(accept()));
hLay->addWidget(ok);
dlg->exec();
theUiType = combo->currentIndex();
if (combo->currentIndex() == 1)
{
createSimpleScenarioPlayer(app, de);
}
else if (combo->currentIndex() == 2)
{
createSimpleScenarioViewer(app, de);
}
else if (combo->currentIndex() == 3)
{
showMapAreaOnly(app, de);
}
delete dlg;
}
{
makVrv::DtVrvApplication* igApp = makVrv::DtVrvApplication::findFromDe(*de);
if(igApp)
{
chooseInterface(*igApp, *de);
return true;
}
else
{
return false;
}
}
{
}