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 QScreen *screen = QGuiApplication::primaryScreen();
274 QRect rect = screen->geometry();
276 uint width = rect.width();
277 if ( width > 1000 ) {
281 uint height = rect.height();
282 if ( height > 1000 ) {
287 width = rect.width() - 300;
288 height = rect.height() - 150;
300 QString titleInfo = OpenFlipper::Options::windowTitle();
303 titleInfo = titleInfo +
" [DEBUG]";
306 if ( OpenFlipper::Options::coreProfile() )
307 titleInfo = titleInfo +
" CoreProfile";
309 titleInfo = titleInfo +
" CompatProfile";
322 connect(
this,SIGNAL(
log(QString )),newlog,SLOT(
slotLog(QString )),Qt::DirectConnection);
325 if ( OpenFlipper::Options::gui() )
337 if ( OpenFlipper::Options::gui() ){
355 omerr().connect(*newlog);
356 omerr().disconnect(std::cerr);
361 if ( OpenFlipper::Options::gui() )
372 omout().connect(*newlog);
373 omout().disconnect(std::cout);
378 if ( OpenFlipper::Options::gui() )
389 omlog().connect(*newlog);
394 if ( OpenFlipper::Options::gui() )
409 if ( OpenFlipper::Options::gui() )
417 connect(
this,SIGNAL(
scriptLog(QString )),newlog,SLOT(
slotLog(QString )),Qt::DirectConnection);
434 printFunction.setProperty(
"textedit",
scriptEngine_.newQObject(
this));
435 scriptEngine_.globalObject().setProperty(
"print", printFunction);
439 scriptEngine_.globalObject().setProperty(
"printToFile", printToFileFunc);
452 qScriptRegisterSequenceMetaType< QVector< int > >(&
scriptEngine_);
459 fromScriptValueVector,
463 QScriptValue ctorVec3 =
scriptEngine_.newFunction(createVector);
464 scriptEngine_.globalObject().setProperty(
"Vector", ctorVec3);
470 toScriptValueVector4,
471 fromScriptValueVector4,
475 QScriptValue ctorVec4 =
scriptEngine_.newFunction(createVector4);
476 scriptEngine_.globalObject().setProperty(
"Vector4", ctorVec4);
484 toScriptValueDataType,
485 fromScriptValueDataType,
489 QScriptValue dataTypector = scriptEngine_.newFunction(createDataType);
490 scriptEngine_.globalObject().setProperty(
"DataType", dataTypector);
497 qScriptRegisterMetaType(&scriptEngine_,
498 toScriptValueMatrix4x4 ,
499 fromScriptValueMatrix4x4,
503 QScriptValue matrix4x4ctor = scriptEngine_.newFunction(createMatrix4x4);
504 scriptEngine_.globalObject().setProperty(
"Matrix4x4", matrix4x4ctor);
510 QScriptValue scriptInstance = scriptEngine_.newQObject(
this,
511 QScriptEngine::QtOwnership,
512 QScriptEngine::ExcludeChildObjects |
513 QScriptEngine::ExcludeSuperClassMethods |
514 QScriptEngine::ExcludeSuperClassProperties
517 scriptEngine_.globalObject().setProperty(
"core", scriptInstance);
519 QScriptValueIterator it(scriptInstance);
520 while (it.hasNext()) {
533 if ( OpenFlipper::Options::gui() ) {
541 if ( OpenFlipper::Options::currentViewMode( ) !=
"" )
547 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
572 QString rendererDefault;
574 if ( OpenFlipper::Options::coreProfile() )
575 rendererDefault =
"Shader Pipeline Renderer Plugin";
577 rendererDefault =
"Default Classical Renderer Plugin";
581 QString rendererKey =
"Viewer" + QString::number(i)+
"/DefaultRenderer";
585 int rendererId = renderManager().
getRendererId(rendererName);
587 if ( rendererId == -1 ) {
590 emit
log(
LOGERR,tr(
"Stored default renderer \"") + rendererName + tr(
"\" is not available, trying") + rendererDefault +
"!");
596 if ( rendererId != -1 ) {
600 emit
log(
LOGERR,rendererDefault + tr(
" renderer is also not available. Trying to use any other renderer i can find!"));
603 const unsigned int rendererCount = renderManager().
available();
604 emit
log(
LOGERR,tr(
"Currently ") + QString::number(rendererCount) + tr(
" renderers are available:") );
605 for (
unsigned int rendererId = 0 ; rendererId < rendererCount ; ++rendererId )
606 emit
log(
LOGERR, tr(
"Renderer ") + QString::number(rendererId) +
": " + renderManager()[rendererId]->name );
616 if ( renderManager().available() == 1 ) {
618 emit
log(
LOGERR,tr(
"No external plugin renderers available!"));
619 emit
log(
LOGERR,tr(
"The build in renderer is only a very limited one and is missing many features!"));
620 emit
log(
LOGERR,tr(
"You should build and use the other renderers!"));
622 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."));
631 QStringList optionFiles = OpenFlipper::Options::optionFiles();
632 for (
int i = 0 ; i < (int)optionFiles.size(); ++i) {
635 splash_->showMessage(tr(
"Loading Configuration File %1/%2").arg(i+1).arg(optionFiles.size()),
636 Qt::AlignBottom | Qt::AlignLeft , Qt::white);
641 if ( OpenFlipper::Options::gui() )
654 if ( OpenFlipper::Options::lang().contains(
"UTF") || OpenFlipper::Options::lang().contains(
"utf") ) {
662 if ( OpenFlipper::Options::gui() ) {
664 QFile statesFile(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat");
666 if (statesFile.exists() ) {
667 QSettings windowStates(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat", QSettings::IniFormat);
670 coreWidget_->restoreState (windowStates.value(
"Core/Window/State").toByteArray ());
672 coreWidget_->restoreGeometry (windowStates.value(
"Core/Window/Geometry").toByteArray ());
681 windowStates.beginGroup (
"Core");
682 windowStates.beginGroup (
"LogSlider");
684 windowStates.endGroup ();
686 windowStates.endGroup ();
690 if ( windowStates.value(
"Core/Window/WindowState",
false).toBool() )
703 splash_->showMessage(tr(
"Ready."), Qt::AlignBottom | Qt::AlignLeft , Qt::white);
713 OpenFlipper::Options::finishedStartup();
719 #ifdef PYTHON_ENABLED 733 if ( OpenFlipper::Options::gui())
740 std::cerr <<
"Connected logger!!! " << std::endl;
758 for ( uint i = 0 ; i <
loggers_.size(); ++i )
767 return PluginStorage::plugins();
780 if(_event->button() != Qt::LeftButton)
return;
781 if(_event->type() != QEvent::MouseButtonRelease)
return;
783 const QObject* senderPointer = sender();
784 unsigned int examinerId = 0;
786 if ( senderPointer == 0 ) {
787 std::cerr <<
"Error : slotMouseEventIdentify directly called! This should only be called by an examiner" << std::endl;
789 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
792 if ( OpenFlipper::Options::doSlotDebugging() )
793 emit
log(
LOGINFO,tr(
"slotMouseEventIdentify from examiner ") + QString::number(i) );
803 size_t node_idx, target_idx;
813 infoPlugin = getInfoPlugin(object->
dataType());
825 const QObject* senderPointer = sender();
826 unsigned int examinerId = 0;
828 if ( senderPointer == 0 ) {
829 std::cerr <<
"Error : slotMouseEventLight directly called! This should only be called by an examiner" << std::endl;
831 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
834 if ( OpenFlipper::Options::doSlotDebugging() )
835 emit
log(
LOGINFO,tr(
"slotMouseEventLight from examiner ") + QString::number(i) );
859 const QObject* senderPointer = sender();
860 unsigned int examinerId = 0;
862 if ( senderPointer == 0 ) {
863 std::cerr <<
"Error : slotMouseEvent directly called! This should only be called by an examiner" << std::endl;
865 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
868 if ( OpenFlipper::Options::doSlotDebugging() ) {
869 QString message = tr(
"slotMouseEvent from examiner ") + QString::number(i) +
" with ";
871 if ( _event->type() == QEvent::MouseButtonRelease )
872 message +=
" MouseButtonRelease";
873 else if ( _event->type() == QEvent::MouseButtonPress )
874 message +=
" MouseButtonRelease";
875 else if ( _event->type() == QEvent::MouseButtonDblClick )
876 message +=
" MouseButtonDblClick";
877 else if ( _event->type() == QEvent::MouseMove )
878 message +=
" MouseMove";
880 message += tr(
"unknown event type");
902 const QObject* senderPointer = sender();
903 unsigned int examinerId = 0;
905 if ( senderPointer == 0 ) {
906 std::cerr <<
"Error : slotWheelEvent directly called! This should only be called by an examiner" << std::endl;
908 for (
unsigned int i = 0 ; i < OpenFlipper::Options::examinerWidgets(); ++i ) {
926 if ( OpenFlipper::Options::gui() )
936 if ( OpenFlipper::Options::gui() )
948 if (OpenFlipper::Options::doSlotDebugging()) {
950 if (sender()->metaObject() != 0) {
951 emit
log(
LOGINFO, tr(
"updateView() called by ") + QString(sender()->metaObject()->className()));
956 if (!OpenFlipper::Options::gui())
963 if (elapsed < 1000 /
OpenFlipperSettings().value(
"Core/Gui/glViewer/maxFrameRate", 35).toInt()) {
966 if (OpenFlipper::Options::doSlotDebugging())
968 tr(
"Too early for redraw! Delaying request from ") + QString(sender()->metaObject()->className()));
982 if (!OpenFlipper::Options::sceneGraphUpdatesBlocked() && !OpenFlipper::Options::redrawDisabled()) {
984 for (
unsigned int i = 0; i < OpenFlipper::Options::examinerWidgets(); ++i)
997 QApplication::processEvents();
1004 OpenFlipper::Options::blockSceneGraphUpdates();
1006 OpenFlipper::Options::unblockSceneGraphUpdates();
1021 if ( action.isDirty () )
1060 QTimer* timer =
new QTimer();
1061 connect(timer, SIGNAL(timeout()),
this, SLOT(
slotExit()));
1065 QApplication::quit();
1071 if ( OpenFlipper::Options::gui() )
1078 if ( OpenFlipper::Options::gui() ) {
1087 if ( OpenFlipper::Options::gui() &&
1088 (state == OpenFlipper::Options::Hidden ||
1089 state == OpenFlipper::Options::InScene ||
1090 state == OpenFlipper::Options::Normal))
1097 std::cerr <<
"Script" << std::endl;
1106 if ( OpenFlipper::Options::gui() ) {
1120 if ( OpenFlipper::Options::gui() )
1127 if ( OpenFlipper::Options::gui() )
1134 if ( !OpenFlipper::Options::gui() || !
OpenFlipperSettings().value(
"Core/Gui/glViewer/useMultipleViewers",
true).toBool() )
1155 QString actionTypeName = _action->data().toString();
1158 for (
int i = 0 ; i < recentFiles.size() ; ++i )
1161 if ( (recentFiles[i] == _action->text()) && ( actionTypeName == recentTypes[i] ) ){
1163 OpenFlipper::Options::loadingRecentFile(
true);
1166 OpenFlipper::Options::loadingRecentFile(
false);
1171 emit
log(
LOGERR, tr(
"Unable to open recent. Unable to find %1 with datatype %2 in recent files list.").arg(_action->text()).arg(actionTypeName) );
1179 QString inifile = OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"OpenFlipper.ini";
1183 if ( ! ini.
connect( inifile,
true) ) {
1184 emit
log(
LOGERR,tr(
"Can not create user ini file"));
1192 if ( OpenFlipper::Options::gui() ) {
1194 QSettings windowStates(OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat", QSettings::IniFormat);
1196 windowStates.setValue(
"Core/Window/State",
coreWidget_->saveState ());
1197 windowStates.setValue(
"Core/Window/Geometry",
coreWidget_->saveGeometry ());
1198 windowStates.setValue(
"Core/Window/WindowState",
coreWidget_->isMaximized() );
1203 windowStates.beginGroup (
"Core");
1204 windowStates.beginGroup (
"LogSlider");
1206 windowStates.endGroup ();
1208 windowStates.endGroup ();
1224 for ( uint i = 0 ; i <
plugins().size() ; ++i ){
1241 OpenFlipper::Options::closeSettings();
1245 if(OpenFlipper::Options::deleteIniFile()) {
1246 bool success =
true;
1249 QStringList optionFiles = OpenFlipper::Options::optionFiles();
1250 for (
int i = 0 ; i < (int)optionFiles.size(); ++i) {
1251 success &= QFile::remove(optionFiles[i]);
1255 QMessageBox::warning(0, tr(
"Warning"),
1256 tr(
"One or more files could not be removed.\nDelete files manually."),
1282 qApp->exit(EXIT_FAILURE);
1302 QFileInfo fi( fileName );
1304 if ( fileName ==
"" || !fi.dir().exists() ) {
1305 OpenFlipperSettings().
setValue(
"Core/Log/logFile", OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"OpenFlipper.log");
1309 if (
logFile_->open(QFile::WriteOnly) ) {
1312 emit
log(
LOGERR, tr(
"Unable to open logfile!"));
1319 (*logStream_) <<
"INFO:";
break;
1321 (*logStream_) <<
"OUT :";
break;
1323 (*logStream_) <<
"WARN:";
break;
1325 (*logStream_) <<
"ERR :";
break;
1327 (*logStream_) <<
"STAT:";
break;
1330 #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) 1331 (*logStream_) << _message <<
"\n" << flush;
1333 (*logStream_) << _message <<
"\n" << Qt::flush;
1340 QStringList _parameters, QStringList _descriptions)
1343 if (sender() ==
this){
1345 info.slotName = _slotName;
1346 info.slotDescription = _slotDescription;
1347 info.parameters = _parameters;
1348 info.descriptions = _descriptions;
1359 for (uint i=0; i <
plugins().size(); i++)
1360 if (
plugins()[i].plugin == sender())
1363 if (pluginInfo == 0){
1364 emit
log(
LOGERR, tr(
"Unable to set slot-description. Plugin not found!"));
1369 info.slotName = _slotName;
1370 info.slotDescription = _slotDescription;
1371 info.parameters = _parameters;
1372 info.descriptions = _descriptions;
1379 QStringList _parameters, QStringList _descriptions)
1382 info.slotName = _functionName;
1383 info.slotDescription = _slotDescription;
1384 info.parameters = _parameters;
1385 info.descriptions = _descriptions;
1392 QStringList& _parameters, QStringList& _descriptions )
1394 QString pluginName = _function.section(
".", 0, 0);
1395 QString slotName = _function.section(
".", 1, 1);
1398 if ( !_function.contains(
".") ) {
1401 slotName = pluginName;
1416 if (pluginName ==
"core"){
1418 _fnDescription =
"";
1419 _parameters.clear();
1420 _descriptions.clear();
1424 _fnDescription =
coreSlots_[i].slotDescription;
1437 for (uint i=0; i <
plugins().size(); i++)
1438 if (
plugins()[i].rpcName == pluginName)
1441 if (pluginInfo == 0){
1442 emit
log(
LOGERR, tr(
"Unable to get slot-description. Plugin not found!"));
1446 _fnDescription =
"";
1447 _parameters.clear();
1448 _descriptions.clear();
1451 for (
int i=0; i < pluginInfo->
slotInfos.count(); i++)
1452 if (pluginInfo->
slotInfos[i].slotName == slotName){
1453 _fnDescription = pluginInfo->
slotInfos[i].slotDescription;
1454 _parameters = pluginInfo->
slotInfos[i].parameters;
1455 _descriptions = pluginInfo->
slotInfos[i].descriptions;
1462 if ( OpenFlipper::Options::gui() ) {
1463 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1464 emit
log(
LOGERR,tr(
"Unable to snapshotBaseFileName for viewer ") + QString::number(_viewerId) );
1475 if ( OpenFlipper::Options::gui() ) {
1476 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1477 emit
log(
LOGERR,tr(
"Unable to snapshotFileType for viewer ") + QString::number(_viewerId) );
1489 if ( OpenFlipper::Options::gui() ) {
1490 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1491 emit
log(
LOGERR,tr(
"Unable to snapshotFileType for viewer ") + QString::number(_viewerId) );
1500 void Core::snapshot(
unsigned int _viewerId,
int _width,
int _height,
bool _alpha,
bool _hideCoordsys,
int _numSamples ){
1503 if ( OpenFlipper::Options::gui() ) {
1504 if ( _viewerId >= OpenFlipper::Options::examinerWidgets() ) {
1505 emit
log(
LOGERR,tr(
"Unable to create snapshot for viewer ") + QString::number(_viewerId) );
1515 if ( OpenFlipper::Options::gui() )
1521 if ( OpenFlipper::Options::gui() )
1527 if ( OpenFlipper::Options::gui() )
1532 bool comments_visible_only,
bool comments_targeted_only,
1533 bool store_material_info,
int snapshot_width,
int snapshot_height,
1534 bool snapshot_transparent,
bool hide_coord_sys,
1535 int snapshot_multisampling,
bool store_view) {
1537 if ( OpenFlipper::Options::gui() )
1539 comments_visible_only, comments_targeted_only,
1540 store_material_info, snapshot_width, snapshot_height,
1541 snapshot_transparent, hide_coord_sys, snapshot_multisampling,
1547 if ( OpenFlipper::Options::gui() ){
1558 if ( OpenFlipper::Options::gui() ){
1571 if ( ! ini.
connect(_filename,
true) ) {
1572 emit
log(
LOGERR,tr(
"Failed to connect to _ini file") + _filename);
1577 if ( OpenFlipper::Options::isWindows() )
1578 ini.
add_entry(
"Core" ,
"VersionWindows" , OpenFlipper::Options::coreVersion() );
1580 ini.
add_entry(
"Core" ,
"VersionLinux" , OpenFlipper::Options::coreVersion() );
1583 for (uint i=0; i <
plugins().size(); i++){
1585 if ( OpenFlipper::Options::isWindows() )
1600 foreach (QString s, _types)
1604 if (_selection ==
"source")
1606 else if (_selection ==
"target")
1610 rv.append (o_it->id ());
1621 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(
";")));
1625 emit
setSlotDescription(
"deleteObject(int)", tr(
"Delete an object from the scene."), QStringList(
"ObjectId"), QStringList(tr(
"Id of the object to delete")));
1626 emit
setSlotDescription(
"updateView()", tr(
"Redraw the contents of the viewer."), QStringList(), QStringList());
1627 emit
setSlotDescription(
"clearAll()", tr(
"Clear all data objects."), QStringList(), QStringList());
1628 emit
setSlotDescription(
"exitApplication()", tr(
"Quit OpenFlipper"), QStringList(), QStringList());
1630 QStringList(tr(
"enabled")) ,
1631 QStringList(tr(
"Enable or disable fullscreen mode")));
1632 emit
setSlotDescription(
"showViewModeControls(bool)", tr(
"Show or hide the view mode control box"),
1633 QStringList(tr(
"Show?")) ,
1635 emit
setSlotDescription(
"loggerState(int)", tr(
"Change the logger window state"), QStringList(tr(
"Change the logger window state")), QStringList());
1636 emit
setSlotDescription(
"enableOpenMeshErrorLog(bool)", tr(
"Enable or disable OpenMesh error logging"), QStringList(tr(
"OpenMesh error logging enabled")), QStringList());
1637 emit
setSlotDescription(
"showToolbox(bool)", tr(
"Show or hide toolbox"), QStringList(tr(
"Show or hide the toolbox")), QStringList());
1638 emit
setSlotDescription(
"showStatusBar(bool)", tr(
"Show or hide status bar"), QStringList(tr(
"Show or hide the status bar")), QStringList());
1640 QStringList(tr(
"Mode")), QStringList(tr(
"0: One Viewer\n1: Double Viewer\n2: Grid \n3: Horizontal split ")));
1642 emit
setSlotDescription(
"restrictFrameRate(bool)", tr(
"Restrict FrameRate to MaxFrameRate"),
1643 QStringList(tr(
"enabled")), QStringList(tr(
"restriction switch")));
1644 emit
setSlotDescription(
"setMaxFrameRate(int)", tr(
"set the maximal framerate (automatically enables framerate restriction)"),
1645 QStringList(tr(
"frameRate")), QStringList(tr(
"Maximum frameRate")));
1646 emit
setSlotDescription(
"snapshotBaseFileName(QString)", tr(
"Set a filename for storing snapshots.")
1647 , QStringList(), QStringList());
1648 emit
setSlotDescription(
"snapshotFileType(QString)", tr(
"Set a filetype for storing snapshots.")
1649 , QStringList(), QStringList());
1650 emit
setSlotDescription(
"snapshotCounterStart(int)", tr(
"Set the starting number for the snapshot counter.")
1651 , QStringList(
"StartValue"), QStringList(
"Starting number for the counter"));
1652 emit
setSlotDescription(
"snapshot()", tr(
"Make a snapshot of the viewer. If no filename" 1653 " was set using snapshotBaseFileName() the snapshot is stored" 1654 " in snap.png in the current directory. The captured image will have " 1655 " the same dimensions as the current viewport. " 1656 "For every snapshot a counter is added to the filename."), QStringList(), QStringList());
1657 emit
setSlotDescription(
"snapshot(uint)", tr(
"Make a snapshot of the viewer with id viewerId. If no filename" 1658 " was set using snapshotBaseFileName() the snapshot is stored" 1659 " in snap.png in the current directory. For every snapshot" 1660 " a counter is added to the filename."), QStringList(
"viewerId"), QStringList(
"Id of viewer to be captured (default is 0)"));
1661 emit
setSlotDescription(
"snapshot(uint,int,int)", tr(
"Make a snapshot of the viewer with id viewerId." 1662 " Pass 0 as viewerId parameter to capture the current viewer. " 1663 " The captured image will have the specified dimensions. " 1664 " If 0 is passed as either width or height parameter, the value will " 1665 " automatically be set to hold the right aspect ratio, respectively. " 1666 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1667 " in snap.png in the current directory. For every snapshot" 1668 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height").split(
";")),
1669 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image").split(
";")));
1670 emit
setSlotDescription(
"snapshot(uint,int,int,bool)", tr(
"Make a snapshot of the viewer with id viewerId." 1671 " Pass 0 as viewerId parameter to capture the current viewer. " 1672 " The captured image will have the specified dimensions. " 1673 " If 0 is passed as either width or height parameter, the value will " 1674 " automatically be set to hold the right aspect ratio, respectively. " 1675 " If 0 is passed for both width and height values, the viewport's current " 1676 " dimension is used. Set alpha to true if you want the background to be transparent. " 1677 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1678 " in snap.png in the current directory. For every snapshot" 1679 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha").split(
";")),
1680 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image;Transparent background").split(
";")));
1681 emit
setSlotDescription(
"snapshot(uint,int,int,bool,bool)", tr(
"Make a snapshot of the viewer with id viewerId." 1682 " Pass 0 as viewerId parameter to capture the current viewer. " 1683 " The captured image will have the specified dimensions. " 1684 " If 0 is passed as either width or height parameter, the value will " 1685 " automatically be set to hold the right aspect ratio, respectively. " 1686 " If 0 is passed for both width and height values, the viewport's current " 1687 " dimension is used. Set alpha to true if you want the background to be transparent. " 1688 " The fifth parameter is used to hide the coordinate system in the upper right corner of the screen. " 1689 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1690 " in snap.png in the current directory. For every snapshot" 1691 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha;hideCoordsys").split(
";")),
1692 QStringList(QString(
"Id of viewer (default is 0);Width of image;Height of image;Transparent background;Hide coordsys node").split(
";")));
1693 emit
setSlotDescription(
"snapshot(uint,int,int,bool,bool,int)", tr(
"Make a snapshot of the viewer with id viewerId." 1694 " Pass 0 as viewerId parameter to capture the current viewer. " 1695 " The captured image will have the specified dimensions. " 1696 " If 0 is passed as either width or height parameter, the value will " 1697 " automatically be set to hold the right aspect ratio, respectively. " 1698 " If 0 is passed for both width and height values, the viewport's current " 1699 " dimension is used. Set alpha to true if you want the background to be transparent. " 1700 " The fifth parameter is used to hide the coordinate system in the upper right corner of the screen. " 1701 " If no filename was set using snapshotBaseFileName() the snapshot is stored" 1702 " in snap.png in the current directory. For every snapshot" 1703 " a counter is added to the filename."), QStringList(QString(
"viewerId;width;height;alpha;hideCoordsys;numSamples").split(
";")),
1704 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(
";")));
1706 QString(tr(
"width,height")).split(
","),
1707 QString(tr(
"new width for the viewer,new height for the viewer")).split(
","));
1708 emit
setSlotDescription(
"writeVersionNumbers(QString)", tr(
"write the current versions of all plugins to INI file"),
1709 QStringList(tr(
"filename")),
1710 QStringList(tr(
"fullpath to a file where the versions should be written to.")));
1712 emit
setSlotDescription(
"saveObject(int,QString)", tr(
"Save object to file. If the file exists it will be overwritten."),
1713 QString(tr(
"object-id,filename")).split(
","),
1714 QString(tr(
"id of the object, complete path and filename")).split(
","));
1715 emit
setSlotDescription(
"saveObjectTo(int,QString)", tr(
"Save object to file. The location can be chosen in a dialog. " 1716 "(only works if GUI is available)"),
1717 QString(tr(
"object-id,filename")).split(
","),
1718 QString(tr(
"id of the object, initial filename for the dialog")).split(
","));
1720 "If no filename is available a dialog is shown. (only works if GUI is available)"),QStringList(), QStringList());
1721 emit
setSlotDescription(
"saveAllObjectsTo()", tr(
"Saves all target objects. The locations can be chosen in dialogs. " 1722 "(only works if GUI is available)"),QStringList(), QStringList());
1723 emit
setSlotDescription(
"saveSettings()", tr(
"Show the dialog to save the current setting. (only works if GUI is available)"),QStringList(), QStringList());
1724 emit
setSlotDescription(
"saveSettings(QString, bool, bool, bool, bool, bool, bool)", tr(
"Save the current setting to the supplied file."),
1725 QStringList(tr(
"filePath,is_saveObjectInfo,is_targetOnly,is_saveAll,is_askOverwrite,is_saveProgramSettings,is_savePluginSettings").split(
",")),
1726 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(
";")));
1728 emit
setSlotDescription(
"loadObject()", tr(
"Show the dialog to load an object. (only works if GUI is available)"),QStringList(), QStringList());
1729 emit
setSlotDescription(
"loadObject(QString)", tr(
"Load an object specified in file filename. This automatically determines which file plugin to use."),
1730 QStringList(tr(
"filename")), QStringList(tr(
"Filename")));
1731 emit
setSlotDescription(
"getObjectId(QString)", tr(
"Return identifier of object with specified name. Returns -1 if object was not found."),QStringList(), QStringList());
1732 emit
setSlotDescription(
"loadSettings()", tr(
"Show the dialog to load settings. (only works if GUI is available)"),QStringList(), QStringList());
1733 emit
setSlotDescription(
"loadSettings(QString)", tr(
"load settings from file."),QStringList(), QStringList());
1735 emit
setSlotDescription(
"createWidget(QString,QString)", tr(
"Create a widget from an ui file"),
1736 QString(tr(
"Object name,ui file")).split(
","),
1737 QString(tr(
"Name of the new widget in script,ui file to load")).split(
","));
1739 emit
setSlotDescription(
"addToolbox(QString,QWidget*)", tr(
"Add a widget as a toolbox"),
1740 QString(tr(
"Toolbox Entry name,Widget")).split(
","),
1741 QString(tr(
"Name of the new widget in the toolbox,Pointer to the new widget")).split(
","));
1743 emit
setSlotDescription(
"addToolbox(QString,QWidget*,QIcon*)", tr(
"Add a widget as a toolbox"),
1744 QString(tr(
"Toolbox Entry name,Widget,Icon")).split(
","),
1745 QString(tr(
"Name of the new widget in the toolbox,Pointer to the new widget,Pointer to icon")).split(
","));
1747 emit
setSlotDescription(
"serializeMaterialProperties(int)", tr(
"Serialize and return the material properties of the supplied object."),
1748 QString(tr(
"ObjectId")).split(
","),
1749 QString(tr(
"ID of the object")).split(
","));
1751 emit
setSlotDescription(
"deserializeMaterialProperties(int, QString)", tr(
"Deserialize the supplied material properties into the supplied object."),
1752 QString(tr(
"ObjectId, SerializedProps")).split(
","),
1753 QString(tr(
"ID of the object,The serialized material properties.")).split(
","));
1755 emit
setSlotDescription(
"addViewModeToolboxes(QString,QString)", tr(
"Set toolboxes for a viewmode (This automatically adds the view mode if it does not exist)"),
1756 QString(tr(
"Name,Toolbox List")).split(
","),
1757 QString(tr(
"Name of the Viewmode,seperated list of toolboxes visible in this viewmode")).split(
","));
1759 emit
setSlotDescription(
"addViewModeToolbars(QString,QString)", tr(
"Set toolbars for a viewmode (This automatically adds the view mode if it does not exist)"),
1760 QString(tr(
"Name,Toolbar List")).split(
","),
1761 QString(tr(
"Name of the Viewmode,seperated list of toolbars visible in this viewmode")).split(
","));
1763 emit
setSlotDescription(
"addViewModeContextMenus(QString,QString)", tr(
"Set context Menus for a viewmode (This automatically adds the view mode if it does not exist)"),
1764 QString(tr(
"Name,Context Menu List")).split(
","),
1765 QString(tr(
"Name of the Viewmode,seperated list of Context Menus visible in this viewmode")).split(
","));
1767 emit
setSlotDescription(
"addViewModeIcon(QString,QString)", tr(
"Set Icon for a viewmode (This automatically adds the view mode if it does not exist)"),
1768 QString(tr(
"Name,Icon filename")).split(
","),
1769 QString(tr(
"Name of the Viewmode,filename of the icon (will be taken from OpenFlippers icon directory)")).split(
","));
1771 emit
setSlotDescription(
"objectList(QString,QStringList)", tr(
"Returns object list"),
1772 QString(tr(
"Selection type,Object types")).split(
","),
1773 QString(tr(
"Type of object selection (all,source,target),Object type (All,PolyMesh,TriangleMesh,...)")).split(
";"));
1775 emit
setSlotDescription(
"setToolBoxSide(QString)", tr(
"Determine whether the toolboxes should be displayed on the right or on the left side."),
1776 QStringList(tr(
"side")), QStringList(tr(
"The desired side of the toolboxes (either 'left' or 'right')")));
1778 emit
setSlotDescription(
"getToolbox(QString,QString)", tr(
"Returns a pointer to the requested toolbox widget if it was found, nullptr, otherwise."),
1779 tr(
"Plugin Name\rToolbox Name").split(
"\r"),
1780 tr(
"The plugin which the requested toolbox belongs to.\rThe name of the requested toolbox.").split(
"\r"));
1782 emit
setSlotDescription(
"blockSceneGraphUpdates()", tr(
"Disable Scenegraph Updates (e.g. before loading or adding a large number of files)"),QStringList(), QStringList());
1783 emit
setSlotDescription(
"unblockSceneGraphUpdates()", tr(
"Enable Scenegraph Updates (e.g. before loading or adding a large number of files)"),QStringList(), QStringList());
1784 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.)")));
1797 std::cerr <<
"Error while deleting object, does not exist!!" << std::endl;
1804 object->deleteSubtree();
1807 object->parent()->removeChild(
object);
1818 if ( _objId == -1 )
return;
1823 std::cerr <<
"No such object." << std::endl;
1829 std::cerr <<
"No suitable object found." << std::endl;
1837 if ( _objId == -1 )
return QString();
1842 std::cerr <<
"No such object." << std::endl;
1848 std::cerr <<
"No suitable object found." << std::endl;
1857 if ( _id == -1 )
return;
1862 std::cerr <<
"No such object." << std::endl;
1870 if ( _id == -1 )
return;
1875 std::cerr <<
"No such object." << std::endl;
1883 if ( _id == -1 )
return;
1888 std::cerr <<
"No such object." << std::endl;
1899 std::vector< int > ids;
1904 ids.push_back( current->
id() );
1905 current = current->
next();
1908 for ( uint i = 0 ; i < ids.size(); ++i ) {
1929 QString qtCompiledVersion = QString( QT_VERSION_STR );
1930 QString qtCurrentVersion = qVersion();
1932 if ( qtCompiledVersion != qtCurrentVersion ) {
1933 messages += tr(
"QT Library Version mismatch!\n");
1935 messages += tr(
"Currently used QT Version:\t") + qVersion() +
"\n";
1936 messages += tr(
"Link time QT Version:\t\t") + QString( QT_VERSION_STR ) +
"\n";
1937 messages += tr(
"This inconsistency may lead to an unstable behavior of OpenFlipper!");
1975 std::cerr <<
"Library Check succeeded" << std::endl;
1989 if ( OpenFlipper::Options::nogui() )
1998 QOpenGLContext* context = QOpenGLContext::currentContext();
2002 QSurfaceFormat format = context->format();
2004 if ( (format.majorVersion() < 2) ) {
2007 missing += tr(
"OpenGL Version less then 2.0!\n");
2013 missing += tr(
"No OpenGL support found!\n");
2018 QString message = tr(
"Error! \nThe OpenGL capabilities of your current machine/driver are not sufficient!\n\n");
2019 message += tr(
"The following checks failed:\n\n");
2021 message += tr(
"\n\nPlease update your driver or graphics card.\n");
2023 message += tr(
"If you have more than one GPU (e.g. MacBook) don't use the internal one!\n");
2026 std::cerr << message.toStdString() << std::endl;
2030 QMessageBox::StandardButton button = StaysOnTopMessageBox::critical ( 0, tr(
"Insufficient OpenGL Capabilities!"),message,QMessageBox::Abort|QMessageBox::Ignore , QMessageBox::Abort);
2033 if ( button == QMessageBox::Abort )
2036 StaysOnTopMessageBox::warning(0,tr(
"Insufficient OpenGL Capabilities!"),tr(
"Ignoring OpenGL capabilities might lead to unstable Operation! Do it at your own risk!"));
2041 }
else if ( warn ) {
2043 QString message = tr(
"Warning! Automatic system environment checks discovered some possible problems!\n\n");
2044 message += tr(
"The following checks failed:\n\n");
2047 std::cerr << message.toStdString() << std::endl;
2049 StaysOnTopMessageBox::warning ( 0, tr(
"Detected possible problems!"),message );
2054 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 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.
QElapsedTimer * redrawTime_
Holds the time since last redraw.
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 setTraverseMode(unsigned int _mode)
Set traverse mode for node.
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.
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
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.
ObjectRange objects(IteratorRestriction _restriction, DataType _dataType)
Iterable object range.
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.