int main(int argc, char **argv) { Q_INIT_RESOURCE(calculator); QApplication app(argc, argv); //! [0a] QScriptEngine engine; //! [0a] #if !defined(QT_NO_SCRIPTTOOLS) QScriptEngineDebugger debugger; debugger.attachTo(&engine); QMainWindow *debugWindow = debugger.standardWindow(); debugWindow->resize(1024, 640); #endif //! [0b] QString scriptFileName(":/calculator.js"); QFile scriptFile(scriptFileName); scriptFile.open(QIODevice::ReadOnly); engine.evaluate(scriptFile.readAll(), scriptFileName); scriptFile.close(); //! [0b] //! [1] QUiLoader loader; QFile uiFile(":/calculator.ui"); uiFile.open(QIODevice::ReadOnly); QWidget *ui = loader.load(&uiFile); uiFile.close(); //! [1] //! [2] QScriptValue ctor = engine.evaluate("Calculator"); QScriptValue scriptUi = engine.newQObject(ui, QScriptEngine::ScriptOwnership); QScriptValue calc = ctor.construct(QScriptValueList() << scriptUi); //! [2] #if !defined(QT_NO_SCRIPTTOOLS) QLineEdit *display = qFindChild<QLineEdit*>(ui, "display"); QObject::connect(display, SIGNAL(returnPressed()), debugWindow, SLOT(show())); #endif //! [3] ui->show(); return app.exec(); //! [3] }
void readFile(QScriptEngine& engine, const QString& fileName) { QString scriptFileName(QString("/home/mrz/zen/javascript/") + fileName); QFile scriptFile(scriptFileName); if ( scriptFile.open(QIODevice::ReadOnly) ) { QScriptValue result = engine.evaluate(scriptFile.readAll()); scriptFile.close(); if ( engine.hasUncaughtException() ) { qDebug() << "Error in file " << fileName; qDebug() << "Line: " << engine.uncaughtExceptionLineNumber(); qDebug() << engine.uncaughtExceptionBacktrace(); } } else { qDebug() << "Failed to open file " << fileName; } }
NPlayer::NPlayer() { qsrand((uint)QTime::currentTime().msec()); m_settings = NSettings::instance(); NI18NLoader::init(); m_playbackEngine = dynamic_cast<NPlaybackEngineInterface *>(NPluginLoader::getPlugin(N::PlaybackEngine)); m_playbackEngine->setParent(this); #ifndef _N_NO_SKINS_ m_mainWindow = new NMainWindow(NSkinLoader::skinUiFormFile()); #else m_mainWindow = new NMainWindow(); #endif // loading skin script m_scriptEngine = new NScriptEngine(this); #ifndef _N_NO_SKINS_ QString scriptFileName(NSkinLoader::skinScriptFile()); #else QString scriptFileName(":skins/native/script.js"); #endif QFile scriptFile(scriptFileName); scriptFile.open(QIODevice::ReadOnly); m_scriptEngine->evaluate(scriptFile.readAll(), scriptFileName); scriptFile.close(); QScriptValue skinProgram = m_scriptEngine->evaluate("Main").construct(); m_aboutDialog = NULL; m_logDialog = new NLogDialog(m_mainWindow); m_preferencesDialog = new NPreferencesDialog(m_mainWindow); m_volumeSlider = qFindChild<NVolumeSlider *>(m_mainWindow, "volumeSlider"); m_coverWidget = qFindChild<QWidget *>(m_mainWindow, "coverWidget"); m_playlistWidget = qFindChild<NPlaylistWidget *>(m_mainWindow, "playlistWidget"); if (QAbstractButton *repeatButton = qFindChild<QAbstractButton *>(m_mainWindow, "repeatButton")) repeatButton->setChecked(m_playlistWidget->repeatMode()); m_trackInfoWidget = new NTrackInfoWidget(); QVBoxLayout *trackInfoLayout = new QVBoxLayout; trackInfoLayout->setContentsMargins(0, 0, 0, 0); trackInfoLayout->addWidget(m_trackInfoWidget); m_waveformSlider = qFindChild<NWaveformSlider *>(m_mainWindow, "waveformSlider"); m_waveformSlider->setLayout(trackInfoLayout); #ifndef _N_NO_UPDATE_CHECK_ m_versionDownloader = new QNetworkAccessManager(this); connect(m_versionDownloader, SIGNAL(finished(QNetworkReply *)), this, SLOT(on_versionDownloader_finished(QNetworkReply *))); connect(m_preferencesDialog, SIGNAL(versionRequested()), this, SLOT(downloadVersion())); #endif createActions(); loadSettings(); connectSignals(); #ifdef Q_WS_WIN NW7TaskBar::instance()->setWindow(m_mainWindow); NW7TaskBar::instance()->setEnabled(NSettings::instance()->value("TaskbarProgress").toBool()); connect(m_playbackEngine, SIGNAL(positionChanged(qreal)), NW7TaskBar::instance(), SLOT(setProgress(qreal))); #endif #ifdef Q_WS_MAC NMacDock::instance()->registerClickHandler(); connect(NMacDock::instance(), SIGNAL(clicked()), m_mainWindow, SLOT(show())); #endif m_mainWindow->setTitle(QCoreApplication::applicationName() + " " + QCoreApplication::applicationVersion()); m_mainWindow->show(); m_mainWindow->loadSettings(); QResizeEvent e(m_mainWindow->size(), m_mainWindow->size()); QCoreApplication::sendEvent(m_mainWindow, &e); skinProgram.property("afterShow").call(skinProgram); }