61 #include <ACG/QtWidgets/QtFileDialog.hh> 69 #include "OpenFlipper/BasePlugin/TextureInterface.hh" 70 #include "OpenFlipper/BasePlugin/INIInterface.hh" 72 #include <OpenFlipper/common/RecentFiles.hh> 74 #include "OpenFlipper/BasePlugin/PluginFunctionsCore.hh" 83 #include <OpenFlipper/widgets/messageBox/StaysOnTopMessageBox.hh> 87 #include <ACG/Scenegraph/MaterialNode.hh> 88 #include <ACG/Scenegraph/SeparatorNode.hh> 91 #include <PythonInterpreter/PythonInterpreter.hh> 94 #define WIDGET_HEIGHT 800 95 #define WIDGET_WIDTH 800 113 nextBackupGroupId_(0),
146 vm->
icon =
"viewmode_all.png";
153 std::vector< Viewer::ViewerProperties* > viewerProperties;
155 for (
int i=0; i < 4; i++) {
158 viewerProperties.push_back( viewerProperty );
164 OpenFlipper::Options::defaultViewingDirection( PluginFunctions::VIEW_FREE, 0 );
165 OpenFlipper::Options::defaultViewingDirection( PluginFunctions::VIEW_TOP, 1 );
166 OpenFlipper::Options::defaultViewingDirection( PluginFunctions::VIEW_LEFT, 2 );
167 OpenFlipper::Options::defaultViewingDirection( PluginFunctions::VIEW_FRONT, 3 );
179 initializeUpdateTypes();
216 if ( OpenFlipper::Options::gui() ) {
233 QPixmap splashPixmap(OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"splash.png");
235 splash_ =
new QSplashScreen(splashPixmap, Qt::SplashScreen | Qt::WindowStaysOnTopHint);
238 splash_->showMessage(tr(
"Initializing mainwindow") ,
239 Qt::AlignBottom | Qt::AlignLeft , Qt::white);
273 QRect rect = QApplication::desktop()->screenGeometry();
275 uint width = rect.width();
276 if ( width > 1000 ) {
280 uint height = rect.height();
281 if ( height > 1000 ) {
286 width = rect.width() - 300;
287 height = rect.height() - 150;
299 QString titleInfo = OpenFlipper::Options::windowTitle();
302 titleInfo = titleInfo +
" [DEBUG]";
305 if ( OpenFlipper::Options::coreProfile() )
306 titleInfo = titleInfo +
" CoreProfile";
308 titleInfo = titleInfo +
" CompatProfile";
321 connect(
this,SIGNAL(
log(QString )),newlog,SLOT(
slotLog(QString )),Qt::DirectConnection);
324 if ( OpenFlipper::Options::gui() )
336 if ( OpenFlipper::Options::gui() ){
354 omerr().connect(*newlog);
355 omerr().disconnect(std::cerr);
360 if ( OpenFlipper::Options::gui() )
371 omout().connect(*newlog);
372 omout().disconnect(std::cout);
377 if ( OpenFlipper::Options::gui() )
388 omlog().connect(*newlog);
393 if ( OpenFlipper::Options::gui() )
408 if ( OpenFlipper::Options::gui() )
416 connect(
this,SIGNAL(
scriptLog(QString )),newlog,SLOT(
slotLog(QString )),Qt::DirectConnection);
433 printFunction.setProperty(
"textedit",
scriptEngine_.newQObject(
this));
434 scriptEngine_.globalObject().setProperty(
"print", printFunction);
438 scriptEngine_.globalObject().setProperty(
"printToFile", printToFileFunc);
451 qScriptRegisterSequenceMetaType< QVector< int > >(&
scriptEngine_);
458 fromScriptValueVector,
462 QScriptValue ctorVec3 =
scriptEngine_.newFunction(createVector);
463 scriptEngine_.globalObject().setProperty(
"Vector", ctorVec3);
469 toScriptValueVector4,
470 fromScriptValueVector4,
474 QScriptValue ctorVec4 =
scriptEngine_.newFunction(createVector4);
475 scriptEngine_.globalObject().setProperty(
"Vector4", ctorVec4);
483 toScriptValueDataType,
484 fromScriptValueDataType,
488 QScriptValue dataTypector = scriptEngine_.newFunction(createDataType);
489 scriptEngine_.globalObject().setProperty(
"DataType", dataTypector);
496 qScriptRegisterMetaType(&scriptEngine_,
497 toScriptValueMatrix4x4 ,
498 fromScriptValueMatrix4x4,
502 QScriptValue matrix4x4ctor = scriptEngine_.newFunction(createMatrix4x4);
503 scriptEngine_.globalObject().setProperty(
"Matrix4x4", matrix4x4ctor);
509 QScriptValue scriptInstance = scriptEngine_.newQObject(
this,
510 QScriptEngine::QtOwnership,
511 QScriptEngine::ExcludeChildObjects |
512 QScriptEngine::ExcludeSuperClassMethods |
513 QScriptEngine::ExcludeSuperClassProperties
516 scriptEngine_.globalObject().setProperty(
"core", scriptInstance);
518 QScriptValueIterator it(scriptInstance);
519 while (it.hasNext()) {
532 if ( OpenFlipper::Options::gui() ) {
540 if ( OpenFlipper::Options::currentViewMode( ) !=
"" )
546 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
571 QString rendererDefault;
573 if ( OpenFlipper::Options::coreProfile() )
574 rendererDefault =
"Shader Pipeline Renderer Plugin";
576 rendererDefault =
"Default Classical Renderer Plugin";
580 QString rendererKey =
"Viewer" + QString::number(i)+
"/DefaultRenderer";
584 int rendererId = renderManager().
getRendererId(rendererName);
586 if ( rendererId == -1 ) {
589 emit
log(
LOGERR,tr(
"Stored default renderer \"") + rendererName + tr(
"\" is not available, trying") + rendererDefault +
"!");
595 if ( rendererId != -1 ) {
599 emit
log(
LOGERR,rendererDefault + tr(
" renderer is also not available. Trying to use any other renderer i can find!"));
602 const unsigned int rendererCount = renderManager().
available();
603 emit
log(
LOGERR,tr(
"Currently ") + QString::number(rendererCount) + tr(
" renderers are available:") );
604 for (
unsigned int rendererId = 0 ; rendererId < rendererCount ; ++rendererId )
605 emit
log(
LOGERR, tr(
"Renderer ") + QString::number(rendererId) +
": " + renderManager()[rendererId]->name );
615 if ( renderManager().available() == 1 ) {
617 emit
log(
LOGERR,tr(
"No external plugin renderers available!"));
618 emit
log(
LOGERR,tr(
"The build in renderer is only a very limited one and is missing many features!"));
619 emit
log(
LOGERR,tr(
"You should build and use the other renderers!"));
621 StaysOnTopMessageBox::warning(0,tr(
"No external plugin renderers available!"),tr(
"The build in renderer is only a very limited one and is missing many features.\nYou should build and use the other free renderers shipped with OpenFlipper."));
630 QStringList optionFiles = OpenFlipper::Options::optionFiles();
631 for (
int i = 0 ; i < (int)optionFiles.size(); ++i) {
634 splash_->showMessage(tr(
"Loading Configuration File %1/%2").arg(i+1).arg(optionFiles.size()),
635 Qt::AlignBottom | Qt::AlignLeft , Qt::white);
640 if ( OpenFlipper::Options::gui() )
653 if ( OpenFlipper::Options::lang().contains(
"UTF") || OpenFlipper::Options::lang().contains(
"utf") ) {
661 if ( OpenFlipper::Options::gui() ) {
663 QFile statesFile(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat");
665 if (statesFile.exists() ) {
666 QSettings windowStates(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat", QSettings::IniFormat);
669 coreWidget_->restoreState (windowStates.value(
"Core/Window/State").toByteArray ());
671 coreWidget_->restoreGeometry (windowStates.value(
"Core/Window/Geometry").toByteArray ());
680 windowStates.beginGroup (
"Core");
681 windowStates.beginGroup (
"LogSlider");
683 windowStates.endGroup ();
685 windowStates.endGroup ();
689 if ( windowStates.value(
"Core/Window/WindowState",
false).toBool() )
702 splash_->showMessage(tr(
"Ready."), Qt::AlignBottom | Qt::AlignLeft , Qt::white);
712 OpenFlipper::Options::finishedStartup();
718 #ifdef PYTHON_ENABLED 732 if ( OpenFlipper::Options::gui())
739 std::cerr <<
"Connected logger!!! " << std::endl;
757 for ( uint i = 0 ; i <
loggers_.size(); ++i )
766 return PluginStorage::plugins();
779 if(_event->button() != Qt::LeftButton)
return;
781 const QObject* senderPointer = sender();
782 unsigned int examinerId = 0;
784 if ( senderPointer == 0 ) {
785 std::cerr <<
"Error : slotMouseEventIdentify directly called! This should only be called by an examiner" << std::endl;
787 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
790 if ( OpenFlipper::Options::doSlotDebugging() )
791 emit
log(
LOGINFO,tr(
"slotMouseEventIdentify from examiner ") + QString::number(i) );
801 size_t node_idx, target_idx;
811 infoPlugin = getInfoPlugin(object->
dataType());
823 const QObject* senderPointer = sender();
824 unsigned int examinerId = 0;
826 if ( senderPointer == 0 ) {
827 std::cerr <<
"Error : slotMouseEventLight directly called! This should only be called by an examiner" << std::endl;
829 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
832 if ( OpenFlipper::Options::doSlotDebugging() )
833 emit
log(
LOGINFO,tr(
"slotMouseEventLight from examiner ") + QString::number(i) );
857 const QObject* senderPointer = sender();
858 unsigned int examinerId = 0;
860 if ( senderPointer == 0 ) {
861 std::cerr <<
"Error : slotMouseEvent directly called! This should only be called by an examiner" << std::endl;
863 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
866 if ( OpenFlipper::Options::doSlotDebugging() ) {
867 QString message = tr(
"slotMouseEvent from examiner ") + QString::number(i) +
" with ";
869 if ( _event->type() == QEvent::MouseButtonRelease )
870 message +=
" MouseButtonRelease";
871 else if ( _event->type() == QEvent::MouseButtonPress )
872 message +=
" MouseButtonRelease";
873 else if ( _event->type() == QEvent::MouseButtonDblClick )
874 message +=
" MouseButtonDblClick";
875 else if ( _event->type() == QEvent::MouseMove )
876 message +=
" MouseMove";
878 message += tr(
"unknown event type");
900 const QObject* senderPointer = sender();
901 unsigned int examinerId = 0;
903 if ( senderPointer == 0 ) {
904 std::cerr <<
"Error : slotWheelEvent directly called! This should only be called by an examiner" << std::endl;
906 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
924 if ( OpenFlipper::Options::gui() )
934 if ( OpenFlipper::Options::gui() )
946 if (OpenFlipper::Options::doSlotDebugging()) {
948 if (sender()->metaObject() != 0) {
949 emit
log(
LOGINFO, tr(
"updateView() called by ") + QString(sender()->metaObject()->className()));
954 if (!OpenFlipper::Options::gui())
961 if (elapsed < 1000 /
OpenFlipperSettings().value(
"Core/Gui/glViewer/maxFrameRate", 35).toInt()) {
964 if (OpenFlipper::Options::doSlotDebugging())
966 tr(
"Too early for redraw! Delaying request from ") + QString(sender()->metaObject()->className()));
980 if (!OpenFlipper::Options::sceneGraphUpdatesBlocked() && !OpenFlipper::Options::redrawDisabled()) {
982 for (
unsigned int i = 0; i < OpenFlipper::Options::examinerWidgets(); ++i)
995 QApplication::processEvents();
1002 OpenFlipper::Options::blockSceneGraphUpdates();
1004 OpenFlipper::Options::unblockSceneGraphUpdates();
1019 if ( action.isDirty () )
1058 QTimer* timer =
new QTimer();
1059 connect(timer, SIGNAL(timeout()),
this, SLOT(
slotExit()));
1063 QApplication::quit();
1069 if ( OpenFlipper::Options::gui() )
1076 if ( OpenFlipper::Options::gui() ) {
1085 if ( OpenFlipper::Options::gui() &&
1086 (state == OpenFlipper::Options::Hidden ||
1087 state == OpenFlipper::Options::InScene ||
1088 state == OpenFlipper::Options::Normal))
1095 std::cerr <<
"Script" << std::endl;
1104 if ( OpenFlipper::Options::gui() ) {
1118 if ( OpenFlipper::Options::gui() )
1125 if ( OpenFlipper::Options::gui() )
1132 if ( !OpenFlipper::Options::gui() || !
OpenFlipperSettings().value(
"Core/Gui/glViewer/useMultipleViewers",
true).toBool() )
1153 QString actionTypeName = _action->data().toString();
1156 for (
int i = 0 ; i < recentFiles.size() ; ++i )
1159 if ( (recentFiles[i] == _action->text()) && ( actionTypeName == recentTypes[i] ) ){
1161 OpenFlipper::Options::loadingRecentFile(
true);
1164 OpenFlipper::Options::loadingRecentFile(
false);
1169 emit
log(
LOGERR, tr(
"Unable to open recent. Unable to find %1 with datatype %2 in recent files list.").arg(_action->text()).arg(actionTypeName) );
1177 QString inifile = OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"OpenFlipper.ini";
1181 if ( ! ini.
connect( inifile,
true) ) {
1182 emit
log(
LOGERR,tr(
"Can not create user ini file"));
1190 if ( OpenFlipper::Options::gui() ) {
1192 QSettings windowStates(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat", QSettings::IniFormat);
1194 windowStates.setValue(
"Core/Window/State",
coreWidget_->saveState ());
1195 windowStates.setValue(
"Core/Window/Geometry",
coreWidget_->saveGeometry ());
1196 windowStates.setValue(
"Core/Window/WindowState",
coreWidget_->isMaximized() );
1201 windowStates.beginGroup (
"Core");
1202 windowStates.beginGroup (
"LogSlider");
1204 windowStates.endGroup ();
1206 windowStates.endGroup ();
1222 for ( uint i = 0 ; i <
plugins().size() ; ++i ){
1239 OpenFlipper::Options::closeSettings();
1243 if(OpenFlipper::Options::deleteIniFile()) {
1244 bool success =
true;
1247 QStringList optionFiles = OpenFlipper::Options::optionFiles();
1248 for (
int i = 0 ; i < (int)optionFiles.size(); ++i) {
1249 success &= QFile::remove(optionFiles[i]);
1253 QMessageBox::warning(0, tr(
"Warning"),
1254 tr(
"One or more files could not be removed.\nDelete files manually."),
1280 qApp->exit(EXIT_FAILURE);
1300 QFileInfo fi( fileName );
1302 if ( fileName ==
"" || !fi.dir().exists() ) {
1303 OpenFlipperSettings().
setValue(
"Core/Log/logFile", OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"OpenFlipper.log");
1307 if (
logFile_->open(QFile::WriteOnly) ) {
1310 emit
log(
LOGERR, tr(
"Unable to open logfile!"));
1317 (*logStream_) <<
"INFO:";
break;
1319 (*logStream_) <<
"OUT :";
break;
1321 (*logStream_) <<
"WARN:";
break;
1323 (*logStream_) <<
"ERR :";
break;
1325 (*logStream_) <<
"STAT:";
break;
1328 (*logStream_) << _message <<
"\n" << flush;
1334 QStringList _parameters, QStringList _descriptions)
1337 if (sender() ==
this){
1339 info.slotName = _slotName;
1340 info.slotDescription = _slotDescription;
1341 info.parameters = _parameters;
1342 info.descriptions = _descriptions;
1353 for (uint i=0; i <
plugins().size(); i++)
1354 if (
plugins()[i].plugin == sender())
1357 if (pluginInfo == 0){
1358 emit
log(
LOGERR, tr(
"Unable to set slot-description. Plugin not found!"));
1363 info.slotName = _slotName;
1364 info.slotDescription = _slotDescription;
1365 info.parameters = _parameters;
1366 info.descriptions = _descriptions;
1373 QStringList _parameters, QStringList _descriptions)
1376 info.slotName = _functionName;
1377 info.slotDescription = _slotDescription;
1378 info.parameters = _parameters;
1379 info.descriptions = _descriptions;
1386 QStringList& _parameters, QStringList& _descriptions )
1388 QString pluginName = _function.section(
".", 0, 0);
1389 QString slotName = _function.section(
".", 1, 1);
1392 if ( !_function.contains(
".") ) {
1395 slotName = pluginName;
1410 if (pluginName ==
"core"){
1412 _fnDescription =
"";
1413 _parameters.clear();
1414 _descriptions.clear();
1418 _fnDescription =
coreSlots_[i].slotDescription;
1431 for (uint i=0; i <
plugins().size(); i++)
1432 if (
plugins()[i].rpcName == pluginName)
1435 if (pluginInfo == 0){
1436 emit
log(
LOGERR, tr(
"Unable to get slot-description. Plugin not found!"));
1440 _fnDescription =
"";
1441 _parameters.clear();
1442 _descriptions.clear();
1445 for (
int i=0; i < pluginInfo->
slotInfos.count(); i++)
1446 if (pluginInfo->
slotInfos[i].slotName == slotName){
1447 _fnDescription = pluginInfo->
slotInfos[i].slotDescription;
1448 _parameters = pluginInfo->
slotInfos[i].parameters;
1449 _descriptions = pluginInfo->
slotInfos[i].descriptions;
1456 if ( OpenFlipper::Options::gui() ) {
1457 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1458 emit
log(
LOGERR,tr(
"Unable to snapshotBaseFileName for viewer ") + QString::number(_viewerId) );
1469 if ( OpenFlipper::Options::gui() ) {
1470 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1471 emit
log(
LOGERR,tr(
"Unable to snapshotFileType for viewer ") + QString::number(_viewerId) );
1483 if ( OpenFlipper::Options::gui() ) {
1484 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1485 emit
log(
LOGERR,tr(
"Unable to snapshotFileType for viewer ") + QString::number(_viewerId) );
1494 void Core::snapshot(
unsigned int _viewerId,
int _width,
int _height,
bool _alpha,
bool _hideCoordsys,
int _numSamples ){
1497 if ( OpenFlipper::Options::gui() ) {
1498 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1499 emit
log(
LOGERR,tr(
"Unable to create snapshot for viewer ") + QString::number(_viewerId) );
1509 if ( OpenFlipper::Options::gui() )
1515 if ( OpenFlipper::Options::gui() )
1521 if ( OpenFlipper::Options::gui() )
1526 bool comments_visible_only,
bool comments_targeted_only,
1527 bool store_material_info,
int snapshot_width,
int snapshot_height,
1528 bool snapshot_transparent,
bool hide_coord_sys,
1529 int snapshot_multisampling,
bool store_view) {
1531 if ( OpenFlipper::Options::gui() )
1533 comments_visible_only, comments_targeted_only,
1534 store_material_info, snapshot_width, snapshot_height,
1535 snapshot_transparent, hide_coord_sys, snapshot_multisampling,
1541 if ( OpenFlipper::Options::gui() ){
1552 if ( OpenFlipper::Options::gui() ){
1565 if ( ! ini.
connect(_filename,
true) ) {
1566 emit
log(
LOGERR,tr(
"Failed to connect to _ini file") + _filename);
1571 if ( OpenFlipper::Options::isWindows() )
1572 ini.
add_entry(
"Core" ,
"VersionWindows" , OpenFlipper::Options::coreVersion() );
1574 ini.
add_entry(
"Core" ,
"VersionLinux" , OpenFlipper::Options::coreVersion() );
1577 for (uint i=0; i <
plugins().size(); i++){
1579 if ( OpenFlipper::Options::isWindows() )
1594 foreach (QString s, _types)
1598 if (_selection ==
"source")
1600 else if (_selection ==
"target")
1605 rv.append (o_it->id ());
1615 emit
slotSetSlotDescriptionGlobalFunction(
"printToFile(QString,QString)", tr(
"Print a message to a file"), QStringList(QString(
"Filename;Values").split(
";")), QStringList(QString(
"Filename to print into;Arbitrary number of arguments").split(
";")));
1619 emit
setSlotDescription(
"deleteObject(int)", tr(
"Delete an object from the scene."), QStringList(
"ObjectId"), QStringList(tr(
"Id of the object to delete")));
1620 emit
setSlotDescription(
"updateView()", tr(
"Redraw the contents of the viewer."), QStringList(), QStringList());
1621 emit
setSlotDescription(
"clearAll()", tr(
"Clear all data objects."), QStringList(), QStringList());
1622 emit
setSlotDescription(
"exitApplication()", tr(
"Quit OpenFlipper"), QStringList(), QStringList());
1624 QStringList(tr(
"enabled")) ,
1625 QStringList(tr(
"Enable or disable fullscreen mode")));
1626 emit
setSlotDescription(
"showViewModeControls(bool)", tr(
"Show or hide the view mode control box"),
1627 QStringList(tr(
"Show?")) ,
1629 emit
setSlotDescription(
"loggerState(int)", tr(
"Change the logger window state"), QStringList(tr(
"Change the logger window state")), QStringList());
1630 emit
setSlotDescription(
"enableOpenMeshErrorLog(bool)", tr(
"Enable or disable OpenMesh error logging"), QStringList(tr(
"OpenMesh error logging enabled")), QStringList());
1631 emit
setSlotDescription(
"showToolbox(bool)", tr(
"Show or hide toolbox"), QStringList(tr(
"Show or hide the toolbox")), QStringList());
1632 emit
setSlotDescription(
"showStatusBar(bool)", tr(
"Show or hide status bar"), QStringList(tr(
"Show or hide the status bar")), QStringList());
1634 QStringList(tr(
"Mode")), QStringList(tr(
"0: One Viewer\n1: Double Viewer\n2: Grid \n3: Horizontal split ")));
1636 emit
setSlotDescription(
"restrictFrameRate(bool)", tr(
"Restrict FrameRate to MaxFrameRate"),
1637 QStringList(tr(
"enabled")), QStringList(tr(
"restriction switch")));
1638 emit
setSlotDescription(
"setMaxFrameRate(int)", tr(
"set the maximal framerate (automatically enables framerate restriction)"),
1639 QStringList(tr(
"frameRate")), QStringList(tr(
"Maximum frameRate")));
1640 emit
setSlotDescription(
"snapshotBaseFileName(QString)", tr(
"Set a filename for storing snapshots.")
1641 , QStringList(), QStringList());
1642 emit
setSlotDescription(
"snapshotFileType(QString)", tr(
"Set a filetype for storing snapshots.")
1643 , QStringList(), QStringList());
1644 emit
setSlotDescription(
"snapshotCounterStart(int)", tr(
"Set the starting number for the snapshot counter.")
1645 , QStringList(
"StartValue"), QStringList(
"Starting number for the counter"));
1646 emit
setSlotDescription(
"snapshot()", tr(
"Make a snapshot of the viewer. If no filename" 1647 " was set using snapshotBaseFileName() the snapshot is stored" 1648 " in snap.png in the current directory. The captured image will have " 1649 " the same dimensions as the current viewport. " 1650 "For every snapshot a counter is added to the filename."), QStringList(), QStringList());
1651 emit
setSlotDescription(
"snapshot(uint)", tr(
"Make a snapshot of the viewer with id viewerId. If no filename" 1652 " was set using snapshotBaseFileName() the snapshot is stored" 1653 " in snap.png in the current directory. For every snapshot" 1654 " a counter is added to the filename."), QStringList(
"viewerId"), QStringList(
"Id of viewer to be captured (default is 0)"));
1655 emit
setSlotDescription(
"snapshot(uint,int,int)", tr(
"Make a snapshot of the viewer with id viewerId." 1656 " Pass 0 as viewerId parameter to capture the current viewer. " 1657 " The captured image will have the specified dimensions. " 1658 " If 0 is passed as either width or height parameter, the value will " 1659 " automatically be set to hold the right aspect ratio, respectively. " 1660 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1661 " in snap.png in the current directory. For every snapshot" 1662 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height").split(
";")),
1663 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image").split(
";")));
1664 emit
setSlotDescription(
"snapshot(uint,int,int,bool)", tr(
"Make a snapshot of the viewer with id viewerId." 1665 " Pass 0 as viewerId parameter to capture the current viewer. " 1666 " The captured image will have the specified dimensions. " 1667 " If 0 is passed as either width or height parameter, the value will " 1668 " automatically be set to hold the right aspect ratio, respectively. " 1669 " If 0 is passed for both width and height values, the viewport's current " 1670 " dimension is used. Set alpha to true if you want the background to be transparent. " 1671 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1672 " in snap.png in the current directory. For every snapshot" 1673 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha").split(
";")),
1674 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image;Transparent background").split(
";")));
1675 emit
setSlotDescription(
"snapshot(uint,int,int,bool,bool)", tr(
"Make a snapshot of the viewer with id viewerId." 1676 " Pass 0 as viewerId parameter to capture the current viewer. " 1677 " The captured image will have the specified dimensions. " 1678 " If 0 is passed as either width or height parameter, the value will " 1679 " automatically be set to hold the right aspect ratio, respectively. " 1680 " If 0 is passed for both width and height values, the viewport's current " 1681 " dimension is used. Set alpha to true if you want the background to be transparent. " 1682 " The fifth parameter is used to hide the coordinate system in the upper right corner of the screen. " 1683 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1684 " in snap.png in the current directory. For every snapshot" 1685 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha;hideCoordsys").split(
";")),
1686 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image;Transparent background;Hide coordsys node").split(
";")));
1687 emit
setSlotDescription(
"snapshot(uint,int,int,bool,bool,int)", tr(
"Make a snapshot of the viewer with id viewerId." 1688 " Pass 0 as viewerId parameter to capture the current viewer. " 1689 " The captured image will have the specified dimensions. " 1690 " If 0 is passed as either width or height parameter, the value will " 1691 " automatically be set to hold the right aspect ratio, respectively. " 1692 " If 0 is passed for both width and height values, the viewport's current " 1693 " dimension is used. Set alpha to true if you want the background to be transparent. " 1694 " The fifth parameter is used to hide the coordinate system in the upper right corner of the screen. " 1695 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1696 " in snap.png in the current directory. For every snapshot" 1697 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha;hideCoordsys;numSamples").split(
";")),
1698 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image;Transparent background;Hide coordsys node;Number of samples per pixel").split(
";")));
1700 QString(tr(
"width,height")).split(
","),
1701 QString(tr(
"new width for the viewer,new height for the viewer")).split(
","));
1702 emit
setSlotDescription(
"writeVersionNumbers(QString)", tr(
"write the current versions of all plugins to INI file"),
1703 QStringList(tr(
"filename")),
1704 QStringList(tr(
"fullpath to a file where the versions should be written to.")));
1706 emit
setSlotDescription(
"saveObject(int,QString)", tr(
"Save object to file. If the file exists it will be overwritten."),
1707 QString(tr(
"object-id,filename")).split(
","),
1708 QString(tr(
"id of the object, complete path and filename")).split(
","));
1709 emit
setSlotDescription(
"saveObjectTo(int,QString)", tr(
"Save object to file. The location can be chosen in a dialog. " 1710 "(only works if GUI is available)"),
1711 QString(tr(
"object-id,filename")).split(
","),
1712 QString(tr(
"id of the object, initial filename for the dialog")).split(
","));
1714 "If no filename is available a dialog is shown. (only works if GUI is available)"),QStringList(), QStringList());
1715 emit
setSlotDescription(
"saveAllObjectsTo()", tr(
"Saves all target objects. The locations can be chosen in dialogs. " 1716 "(only works if GUI is available)"),QStringList(), QStringList());
1717 emit
setSlotDescription(
"saveSettings()", tr(
"Show the dialog to save the current setting. (only works if GUI is available)"),QStringList(), QStringList());
1718 emit
setSlotDescription(
"saveSettings(QString, bool, bool, bool, bool, bool, bool)", tr(
"Save the current setting to the supplied file."),
1719 QStringList(tr(
"filePath,is_saveObjectInfo,is_targetOnly,is_saveAll,is_askOverwrite,is_saveProgramSettings,is_savePluginSettings").split(
",")),
1720 QStringList(tr(
"Path of the file to save the settings to.;Save objects in current setting.;Restrict to targeted objects.;<no idea what this parameter does>;Prompt before overwriting files that already exist (gui mode only).;Save " TOSTRING( PRODUCT_NAME )
" program settings.;Save plugin settings.").split(
";")));
1722 emit
setSlotDescription(
"loadObject()", tr(
"Show the dialog to load an object. (only works if GUI is available)"),QStringList(), QStringList());
1723 emit
setSlotDescription(
"loadObject(QString)", tr(
"Load an object specified in file filename. This automatically determines which file plugin to use."),
1724 QStringList(tr(
"filename")), QStringList(tr(
"Filename")));
1725 emit
setSlotDescription(
"getObjectId(QString)", tr(
"Return identifier of object with specified name. Returns -1 if object was not found."),QStringList(), QStringList());
1726 emit
setSlotDescription(
"loadSettings()", tr(
"Show the dialog to load settings. (only works if GUI is available)"),QStringList(), QStringList());
1727 emit
setSlotDescription(
"loadSettings(QString)", tr(
"load settings from file."),QStringList(), QStringList());
1729 emit
setSlotDescription(
"createWidget(QString,QString)", tr(
"Create a widget from an ui file"),
1730 QString(tr(
"Object name,ui file")).split(
","),
1731 QString(tr(
"Name of the new widget in script,ui file to load")).split(
","));
1733 emit
setSlotDescription(
"addToolbox(QString,QWidget*)", tr(
"Add a widget as a toolbox"),
1734 QString(tr(
"Toolbox Entry name,Widget")).split(
","),
1735 QString(tr(
"Name of the new widget in the toolbox,Pointer to the new widget")).split(
","));
1737 emit
setSlotDescription(
"addToolbox(QString,QWidget*,QIcon*)", tr(
"Add a widget as a toolbox"),
1738 QString(tr(
"Toolbox Entry name,Widget,Icon")).split(
","),
1739 QString(tr(
"Name of the new widget in the toolbox,Pointer to the new widget,Pointer to icon")).split(
","));
1741 emit
setSlotDescription(
"serializeMaterialProperties(int)", tr(
"Serialize and return the material properties of the supplied object."),
1742 QString(tr(
"ObjectId")).split(
","),
1743 QString(tr(
"ID of the object")).split(
","));
1745 emit
setSlotDescription(
"deserializeMaterialProperties(int, QString)", tr(
"Deserialize the supplied material properties into the supplied object."),
1746 QString(tr(
"ObjectId, SerializedProps")).split(
","),
1747 QString(tr(
"ID of the object,The serialized material properties.")).split(
","));
1749 emit
setSlotDescription(
"addViewModeToolboxes(QString,QString)", tr(
"Set toolboxes for a viewmode (This automatically adds the view mode if it does not exist)"),
1750 QString(tr(
"Name,Toolbox List")).split(
","),
1751 QString(tr(
"Name of the Viewmode,seperated list of toolboxes visible in this viewmode")).split(
","));
1753 emit
setSlotDescription(
"addViewModeToolbars(QString,QString)", tr(
"Set toolbars for a viewmode (This automatically adds the view mode if it does not exist)"),
1754 QString(tr(
"Name,Toolbar List")).split(
","),
1755 QString(tr(
"Name of the Viewmode,seperated list of toolbars visible in this viewmode")).split(
","));
1757 emit
setSlotDescription(
"addViewModeContextMenus(QString,QString)", tr(
"Set context Menus for a viewmode (This automatically adds the view mode if it does not exist)"),
1758 QString(tr(
"Name,Context Menu List")).split(
","),
1759 QString(tr(
"Name of the Viewmode,seperated list of Context Menus visible in this viewmode")).split(
","));
1761 emit
setSlotDescription(
"addViewModeIcon(QString,QString)", tr(
"Set Icon for a viewmode (This automatically adds the view mode if it does not exist)"),
1762 QString(tr(
"Name,Icon filename")).split(
","),
1763 QString(tr(
"Name of the Viewmode,filename of the icon (will be taken from OpenFlippers icon directory)")).split(
","));
1765 emit
setSlotDescription(
"objectList(QString,QStringList)", tr(
"Returns object list"),
1766 QString(tr(
"Selection type,Object types")).split(
","),
1767 QString(tr(
"Type of object selection (all,source,target),Object type (All,PolyMesh,TriangleMesh,...)")).split(
";"));
1769 emit
setSlotDescription(
"setToolBoxSide(QString)", tr(
"Determine whether the toolboxes should be displayed on the right or on the left side."),
1770 QStringList(tr(
"side")), QStringList(tr(
"The desired side of the toolboxes (either 'left' or 'right')")));
1772 emit
setSlotDescription(
"getToolbox(QString,QString)", tr(
"Returns a pointer to the requested toolbox widget if it was found, nullptr, otherwise."),
1773 tr(
"Plugin Name\rToolbox Name").split(
"\r"),
1774 tr(
"The plugin which the requested toolbox belongs to.\rThe name of the requested toolbox.").split(
"\r"));
1776 emit
setSlotDescription(
"blockSceneGraphUpdates()", tr(
"Disable Scenegraph Updates (e.g. before loading or adding a large number of files)"),QStringList(), QStringList());
1777 emit
setSlotDescription(
"unblockSceneGraphUpdates()", tr(
"Enable Scenegraph Updates (e.g. before loading or adding a large number of files)"),QStringList(), QStringList());
1778 emit
setSlotDescription(
"setView", tr(
"Set the encoded view for the primary viewport."), QStringList(tr(
"view")), QStringList(tr(
"The encoded view. (You can obtain one through \"Copy View\" in the context menu of the coordinates.)")));
1791 std::cerr <<
"Error while deleting object, does not exist!!" << std::endl;
1798 object->deleteSubtree();
1801 object->parent()->removeChild(
object);
1812 if ( _objId == -1 )
return;
1817 std::cerr <<
"No such object." << std::endl;
1823 std::cerr <<
"No suitable object found." << std::endl;
1831 if ( _objId == -1 )
return QString();
1836 std::cerr <<
"No such object." << std::endl;
1842 std::cerr <<
"No suitable object found." << std::endl;
1851 if ( _id == -1 )
return;
1856 std::cerr <<
"No such object." << std::endl;
1864 if ( _id == -1 )
return;
1869 std::cerr <<
"No such object." << std::endl;
1877 if ( _id == -1 )
return;
1882 std::cerr <<
"No such object." << std::endl;
1893 std::vector< int > ids;
1898 ids.push_back( current->
id() );
1899 current = current->
next();
1902 for ( uint i = 0 ; i < ids.size(); ++i ) {
1923 QString qtCompiledVersion = QString( QT_VERSION_STR );
1924 QString qtCurrentVersion = qVersion();
1926 if ( qtCompiledVersion != qtCurrentVersion ) {
1927 messages += tr(
"QT Library Version mismatch!\n");
1929 messages += tr(
"Currently used QT Version:\t") + qVersion() +
"\n";
1930 messages += tr(
"Link time QT Version:\t\t") + QString( QT_VERSION_STR ) +
"\n";
1931 messages += tr(
"This inconsistency may lead to an unstable behavior of OpenFlipper!");
1969 std::cerr <<
"Library Check succeeded" << std::endl;
1983 if ( OpenFlipper::Options::nogui() )
1992 QOpenGLContext* context = QOpenGLContext::currentContext();
1996 QSurfaceFormat format = context->format();
1998 if ( (format.majorVersion() < 2) ) {
2001 missing += tr(
"OpenGL Version less then 2.0!\n");
2007 missing += tr(
"No OpenGL support found!\n");
2012 QString message = tr(
"Error! \nThe OpenGL capabilities of your current machine/driver are not sufficient!\n\n");
2013 message += tr(
"The following checks failed:\n\n");
2015 message += tr(
"\n\nPlease update your driver or graphics card.\n");
2017 message += tr(
"If you have more than one GPU (e.g. MacBook) don't use the internal one!\n");
2020 std::cerr << message.toStdString() << std::endl;
2024 QMessageBox::StandardButton button = StaysOnTopMessageBox::critical ( 0, tr(
"Insufficient OpenGL Capabilities!"),message,QMessageBox::Abort|QMessageBox::Ignore , QMessageBox::Abort);
2027 if ( button == QMessageBox::Abort )
2030 StaysOnTopMessageBox::warning(0,tr(
"Insufficient OpenGL Capabilities!"),tr(
"Ignoring OpenGL capabilities might lead to unstable Operation! Do it at your own risk!"));
2035 }
else if ( warn ) {
2037 QString message = tr(
"Warning! Automatic system environment checks discovered some possible problems!\n\n");
2038 message += tr(
"The following checks failed:\n\n");
2041 std::cerr << message.toStdString() << std::endl;
2043 StaysOnTopMessageBox::warning ( 0, tr(
"Detected possible problems!"),message );
2048 std::cerr <<
"OpenGL Version Check succeeded" << std::endl;
void allCleared()
Signal send to plugins when whole scene is cleared.
bool scenegraphPick(ACG::SceneGraph::PickTarget _pickTarget, const QPoint &_mousePos, size_t &_nodeIdx, size_t &_targetIdx, ACG::Vec3d *_hitPointPtr=0)
Execute picking operation on scenegraph.
void setTraverseMode(unsigned int _mode)
Set traverse mode for node.
void saveAllObjectsTo()
Slot for saving objects to a new location.
QList< SlotInfo > globalFunctions_
Core scripting engine.
void setDescriptions()
set the descriptions for scriptable slots of the core
SeparatorNode * dataRootNode_
Root Node for data objects.
void exitFailure()
Aborts the application with an error code.
void slotRecentOpen(QAction *_action)
Open Recent file.
void clearAllComments(int objId)
Called when a plugin requests an update in the viewer.
void setDataRoot(BaseObject *_root)
QList< int > objectList(QString _selection, QStringList _types)
return the list of available object that has the given selection and type
void startVideoCapture(QString _baseName, int _fps, bool _captureViewers)
Start video capturing.
prototypeVec3d vec3dPrototype_
Prototype for the Vector type.
void writeApplicationOptions(INIFile &_ini)
Write Application options to ini file.
static void loadSavedPostProcessors(const unsigned _examiner)
append all saved post processors
void clearAll()
Clear all data objects.
void snapshotFileType(QString _type, unsigned int _viewerId=0)
Set the file type for snapshots.
ACG::SceneGraph::CoordsysNode * coordsysNode_
Node for the coordinate system.
void showStatusBar(bool _state)
Show or hide Status Bar.
SeparatorNode * root_node_scenegraph_
Scenegraphs root node.
QTextStream * logStream_
stream for logging to file
ViewMode struct This struct contains a ViewMode and its status information such as used widgets...
void showToolbox(bool _state)
Show or hide toolbox.
void clearAllComments()
Get comment for the specified key.
void saveOptions()
Save the current options to the standard ini file.
void disconnect()
Remove connection of this object to a file.
BaseObject * objectRoot_
Pointer to the data rootNode;.
void openIniFile(QString _filename, bool _coreSettings, bool _perPluginSettings, bool _loadObjects)
Load information from an ini file.
void setSlotDescription(QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
Core scripting engine.
QList< SlotInfo > slotInfos
This list contains Descriptions about public slots if available.
bool checkSignal(QObject *_plugin, const char *_signalSignature)
Check if a plugin has a signal.
void viewUpdated()
Slot called everytime the view is updated.
void setActive(unsigned int _active, int _id)
set the active renderer
void add_entry(const QString &_section, const QString &_key, const QString &_value)
Addition / modification of a string entry.
int getRendererId(QString _name)
get renderer id with the given name
void loadSettings()
Load status from file.
void slotWheelEvent(QWheelEvent *_event, const std::string &_mode)
Gets called by examiner widget when Wheel is moved in picking mode.
QString & getCommentByKey(const QString &key)
Get comment for the specified key.
SeparatorNode * root_node_scenegraph_global_
Seperator node for global nodes.
QTimer * scenegraphCheckTimer_
Timer that starts scenegraph check.
void slotExecuteAfterStartup()
Executed after loading core completly to load files from commandline.
void fullscreen(bool _state)
set fullscreen mode
int lastWidth_
Slot called everytime the view is updated.
static PythonInterpreter * getInstance()
Creates or returns an instance of the interpreter.
prototypeVec4d vec4dPrototype_
Prototype for the Vector type.
void slotObjectUpdated(int _identifier, const UpdateType &_type=UPDATE_ALL)
Called by the plugins if they changed something in the object list (deleted, added, or other property changes)
void loadPlugins()
Load all plugins from default plugin directory and from INI-File.
Logtype
Log types for Message Window.
QList< SlotInfo > coreSlots_
Core scripting engine.
Draw node in second pass.
void PluginMouseEventLight(QMouseEvent *)
Emitted when an light event occurs.
void deserializeMaterialProperties(int _objId, QString _props)
Serialize material properties.
void slotSetSlotDescription(QString _slotName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
set a description for one of the plugin's public slots
const QStringList SOURCE_OBJECTS("source")
Iterable object range.
prototypeDataType DataTypePrototype_
Prototype for the DataType.
const QStringList ALL_OBJECTS
Iterable object range.
QScriptValue helpFunction(QScriptContext *context, QScriptEngine *engine)
Function to print help about scripting functions.
void deleteObject(int _id)
Called to delete an object.
void setMaxFrameRate(int _rate)
set the maximal framerate ( automatically enables framerate restriction )
void slotShowPlugins()
Show Plugins Dialog.
prototypeMatrix4x4 matrix4x4Prototype_
Prototype for the Matrix type.
QScriptValue printToFileFunction(QScriptContext *context, QScriptEngine *engine)
Special print function for sending output to a file.
void saveSettings()
Save current status to a settings file. Solicit file name through dialog.
void restoreState(QSettings &_settings)
restores the state
void showViewModeControls(bool _show)
Show or Hide the viewmode control widget.
void log(Logtype _type, QString _message)
Logg with OUT,WARN or ERR as type.
void applyOptions()
after ini-files have been loaded and core is up or if options have been changed -> apply Options ...
BaseObject * childExists(int _objectId)
Check if the element exists in the subtree of this element.
bool dataType(DataType _type) const
void setDataSeparatorNodes(SeparatorNode *_dataSeparatorNode)
Set the internal data root node pointers ( DO NOT USE!! )
int lastHeight_
Slot called everytime the view is updated.
DLLEXPORT ObjectIterator objectsEnd()
Return Iterator to Object End.
LoggerState
State of the logging widget.
QSplashScreen * splash_
SplashScreen, only used in gui mode.
void deleteSubtree()
delete the whole subtree below this item ( The item itself is not touched )
void updateUI()
process events during script execution to keep the ui alive
void slotMouseEventIdentify(QMouseEvent *_event)
Handle Mouse events when in Identifier mode.
ACG::SceneGraph::SeparatorNode SeparatorNode
Seperator Node.
CoreWidget * coreWidget_
The main applications widget ( only created in gui mode )
void resizeViewers(int _width, int _height)
resize the examinerViewer
void setScriptEngine(QScriptEngine *_engine)
DONT USE! (Function to set the internal reference to the script Engine)
QStringList scriptingFunctions_
List of all registered scripting functions.
void setSceneGraphRootNode(SeparatorNode *_root_node)
void slotMouseEventLight(QMouseEvent *_event)
Handle Mouse events when in Light mode.
void slotCall(QString _pluginName, QString _functionName, bool &_success)
void slotExit()
Exit Application.
This class provides OpenFlippers Python interpreter.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
pick any of the prior targets (should be implemented for all nodes)
void snapshot(unsigned int _viewerId=0, int _width=0, int _height=0, bool _alpha=false, bool _hideCoordsys=false, int _numSamples=1)
void slotAddPickMode(const std::string &_mode)
Add a new picking mode to the examiner_widget_.
void saveState(QSettings &_settings)
saves the current state
void resizeApplication(int _width, int _height)
resize the whole Application
void snapshotBaseFileName(const QString &_fname)
void slotAddHiddenPickMode(const std::string &_mode)
Add a new and invisible picking mode to the examiner_widget_.
QScriptEngine scriptEngine_
Core scripting engine.
void loggerState(int _state)
Change the logging window state.
void exitApplication()
exit the current application
void slotLog(Logtype _type, QString _message)
Console logger.
void multiViewMode(int _mode)
Switch the multiView Mode.
void saveState(QSettings &_settings)
returns the current state
QTime * redrawTime_
Holds the time since last redraw.
void checkScenegraphDirty()
Called to check if the scenegraph needs to be redrawn.
void slotAddEmptyObjectMenu()
Open the add Empty dialog.
void enableOpenMeshErrorLog(bool _state)
Enable or disable OpenMesh error logging.
void slotGetDescription(QString _function, QString &_fnDescription, QStringList &_parameters, QStringList &_descriptions)
get available descriptions for a given public slot
bool checkLibraryVersions()
Checks for library inconsistencies.
void setupOptions()
Get all ini files and set basic paths and options.
void snapshotCounter(const int _counter)
void snapshotCounterStart(const int _counter, unsigned int _viewerId=0)
Set the start index for the snapshot counter.
QStringList IteratorRestriction
Iterable object range.
QVector< ViewMode * > viewModes_
List of available draw modes.
void PluginWheelEvent(QWheelEvent *, const std::string &)
When this Signal is emitted when a Wheel Event occures.
void slotDeleteAllObjects()
Called when a plugin wants to delete all objects.
const QStringList TARGET_OBJECTS("target")
Iterable object range.
QString name
Name of the View Mode.
QScriptValue myPrintFunction(QScriptContext *context, QScriptEngine *engine)
Special print function for core logger.
MaterialNode * materialNode()
get a pointer to the materialnode
void slotScriptError(const QScriptValue &error)
Core scripting engine.
void setActiveExaminer(const unsigned int _id)
Set the active id of the examiner which got the last mouse events.
void updateView()
Called when a plugin requests an update in the viewer.
Execute action on node first and then on its children.
void pluginSceneDrawn()
This signal is emitted after the scene has been drawn.
void snapshotBaseFileName(QString _fname, unsigned int _viewerId=0)
QStringList visibleToolboxes
List of Visible Toolboxes in this view mode.
Class for the handling of simple configuration files.
void deletedObject(int _objectId)
This slot is called by the object manager when an object is deleted.
ACG::SceneGraph::MaterialNode * coordsysMaterialNode_
Node for coordsys Material.
void saveAllObjects()
Slot for saving objects from Menu.
void slotSetSlotDescriptionGlobalFunction(QString _functionName, QString _slotDescription, QStringList _parameters, QStringList _descriptions)
set a description for a global scripting function
bool connect(const QString &name, const bool create)
Connect INIFile object with given filename.
Viewer::ViewerProperties & viewerProperties(int _id)
Get the viewer properties Use this functions to get basic viewer properties such as backgroundcolor o...
void snapshotFileType(const QString &_type)
void applicationSnapshotName(QString _name)
Set the baseName for the application snapshot.
void showReducedMenuBar(bool reduced)
Core scripting engine.
void slotLogToFile(Logtype _type, QString _message)
log to file
ACG::SceneGraph::MaterialNode MaterialNode
Materialnode.
void restoreKeyBindings()
Restore key assignments from configs files.
std::vector< PluginLogger * > loggers_
Logger interfaces between plugins and core logger.
#define TOSTRING(x)
QSettings object containing all program settings of OpenFlipper.
void slotMouseEvent(QMouseEvent *_event)
Gets called by examiner widget when mouse is moved in picking mode.
void loadObject()
Open Load Widget.
void finishSplash()
exit the current application
size_t available()
number of available renderers
bool custom
Is this a user defined custom view mode or a plugin generated one.
std::vector< PluginInfo > & plugins()
Index of Plugins toolbox widget.
ACG::SceneGraph::CoordinateSystemNode CoordsysNode
Simple Name for CoordsysNode.
void blockScenegraphUpdates(bool _block)
Called when a plugin wants to lock or unlock scenegraph updates.
void scriptLog(QString _message)
Logging signal for ScriptEngine.
bool checkOpenGLCapabilities()
OpenGL capability check.
void slotScriptInfo(QString _pluginName, QString _functionName)
Core scripting engine.
void setValue(const QString &key, const QVariant &value)
Wrapper function which makes it possible to enable Debugging output with -DOPENFLIPPER_SETTINGS_DEBUG...
void setViewerProperties(const std::vector< Viewer::ViewerProperties * > &_viewerProperties)
Set the internal viewerProperties pointer ( DO NOT USE!! )
void objectDeleted(int)
Called after an object has been deleted.
DLLEXPORT OpenFlipperQSettings & OpenFlipperSettings()
QSettings object containing all program settings of OpenFlipper.
QString serializeMaterialProperties(int _objId)
Serialize material properties.
bool getPickedObject(const size_t _node_idx, BaseObjectData *&_object)
Get the picked mesh.
SeparatorNode * core_nodes_
Separator Node holding all core scenegraph nodes.
void viewerSnapshot()
Take a snapshot from all viewers.
void clearObjectComment(int objId, QString key)
Called when a plugin requests an update in the viewer.
void restrictFrameRate(bool _enable)
Enable or disable framerate restriction.
void init()
Second initialization stage.
void newObject(int _objectId)
This slot is called by the object manager when a new object is created.
void restoreState(QSettings &_settings)
restores the state
SeparatorNode * dataSeparatorNode_
Toplevel Nodes for data objects.
void setObjectComment(int objId, QString key, QString comment)
Called when a plugin requests an update in the viewer.
QTimer * redrawTimer_
If enabled, this timer will block screen refresh if done more then 30 times per second.
Interface class from which all plugins have to be created.
void traverse(BaseNode *_node, Action &_action)
void applicationSnapshot()
Take a snapshot from the whole app.
ACG::SceneGraph::Material & material()
Get material object reference.
DLLEXPORT DataType typeId(QString _name)
Given a dataType Identifier string this function will return the id of the datatype.
void writeOnExit()
Called if app is closed and writes all information to ini file.
void PluginMouseEvent(QMouseEvent *)
When this Signal is emitted when a Mouse Event occures.
void writeVersionNumbers(QString _filename)
write the current versions of all plugins to ini file
void stopVideoCapture()
Stop video capturing.
void setSceneGraphRootNodeGlobal(SeparatorNode *_root_node)
void clearComment(const QString &key)
Get comment for the specified key.