int main( int argc, char ** argv ) { QApplication::setColorSpec( QApplication::CustomColor ); QApplication a( argc, argv ); a.setApplicationVersion( APP_VERSION ); QSplashScreen* splash = new QSplashScreen; splash->setPixmap( QPixmap(":/icons/tonatiuhsplash.png") ); splash->show(); Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop; splash->showMessage(QObject::tr("Loading libraries..."), topRight, Qt::black); QApplication::addLibraryPath( QApplication::applicationDirPath() + QDir::separator() + "marble" ); SoQt::init( (QWidget *) NULL ); //MFVec2::initClass(); UserMField::initClass(); UserSField::initClass(); TSceneKit::initClass(); TMaterial::initClass(); TDefaultMaterial::initClass(); TSeparatorKit::initClass(); TShape::initClass(); TCube::initClass(); TLightShape::initClass(); TShapeKit::initClass(); TAnalyzerKit::initClass(); TAnalyzerResultKit::initClass(); TAnalyzerParameter::initClass(); TAnalyzerResult::initClass(); TAnalyzerLevel::initClass(); TSquare::initClass(); TLightKit::initClass(); TSunShape::initClass(); TDefaultSunShape::initClass(); TTracker::initClass(); TTrackerForAiming::initClass(); TDefaultTracker::initClass(); TSceneTracker::initClass(); GraphicRootTracker::initClass(); TTransmissivity::initClass(); TDefaultTransmissivity::initClass(); splash->showMessage( QObject::tr("Setting up the main window..."), topRight, Qt::black ); QDir pluginsDirectory( qApp->applicationDirPath() ); pluginsDirectory.cd( "plugins" ); PluginManager pluginManager; pluginManager.LoadAvailablePlugins( pluginsDirectory ); int exit; if( argc > 1 ) { QString tonatiuhFile = argv[1]; QFileInfo fileInfo( tonatiuhFile ); if( fileInfo.completeSuffix() == QLatin1String( "tnhs") ) { QString fileName( argv[1] ); QFileInfo fileInfo( fileName ); QDir testDirectory( fileInfo.absolutePath() ); testDirectory.cd( "." ); QScriptEngine* interpreter = new QScriptEngine; qScriptRegisterSequenceMetaType<QVector<QVariant> >(interpreter); MainWindow* mw = new MainWindow( QLatin1String("") ); mw->SetPluginManager( &pluginManager ); QScriptValue tonatiuh = interpreter->newQObject( mw ); interpreter->globalObject().setProperty( "tonatiuh", tonatiuh ); QFile scriptFile( fileName ); if( !scriptFile.open( QIODevice::ReadOnly) ) { QString errorMessage = QString( "Cannot open file %1." ).arg( fileName ); std::cerr<<errorMessage.toStdString()<<std::endl; } QTextStream in( &scriptFile ); QString program = in.readAll(); scriptFile.close(); QScriptSyntaxCheckResult checkResult = interpreter->checkSyntax( program ); if( checkResult.state() != QScriptSyntaxCheckResult::Valid ) { QString errorMessage = QString( "Script Syntaxis Error.\n" "Line: %1. %2" ).arg( QString::number( checkResult.errorLineNumber() ), checkResult.errorMessage () ); std::cerr<<errorMessage.toStdString()<<std::endl; return -1; } QScriptValue result = interpreter->evaluate( program ); if( result.isError () ) { QScriptValue lineNumber = result.property( "lineNumber"); QString errorMessage = QString( "Script Execution Error.\nLine %1. %2" ).arg( QString::number( lineNumber.toNumber() ), result.toString() ); std::cerr<<errorMessage.toStdString()<<std::endl; return -1; } delete mw; delete interpreter; exit = 0; } else { MainWindow* mw = new MainWindow( tonatiuhFile ); mw->SetPluginManager( &pluginManager ); mw->show(); splash->finish( mw ); delete splash; exit = a.exec(); delete mw; } } else { MainWindow* mw = new MainWindow(""); mw->SetPluginManager( &pluginManager ); mw->show(); splash->finish( mw ); delete splash; exit = a.exec(); delete mw; } return exit; }