Make all load script dialogs QML and respect previous script location

This commit is contained in:
Brad Davis 2016-01-28 15:53:04 -08:00
parent db7e4eee8f
commit aa03241dd9
6 changed files with 26 additions and 30 deletions

View file

@ -416,7 +416,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) :
_aboutToQuit(false), _aboutToQuit(false),
_notifiedPacketVersionMismatchThisDomain(false), _notifiedPacketVersionMismatchThisDomain(false),
_maxOctreePPS(maxOctreePacketsPerSecond.get()), _maxOctreePPS(maxOctreePacketsPerSecond.get()),
_lastFaceTrackerUpdate(0) _lastFaceTrackerUpdate(0),
_previousScriptLocation("LastScriptLocation", DESKTOP_LOCATION)
{ {
thread()->setObjectName("Main Thread"); thread()->setObjectName("Main Thread");
@ -4501,14 +4502,24 @@ void Application::domainSettingsReceived(const QJsonObject& domainSettingsObject
} }
void Application::loadDialog() { void Application::loadDialog() {
// To be migratd to QML auto scriptEngines = DependencyManager::get<ScriptEngines>();
QString fileNameString = QFileDialog::getOpenFileName( QString fileNameString = OffscreenUi::getOpenFileName(
_glWidget, tr("Open Script"), "", tr("JavaScript Files (*.js)")); _glWidget, tr("Open Script"), getPreviousScriptLocation(), tr("JavaScript Files (*.js)"));
if (!fileNameString.isEmpty()) { if (!fileNameString.isEmpty() && QFile(fileNameString).exists()) {
setPreviousScriptLocation(QFileInfo(fileNameString).absolutePath());
DependencyManager::get<ScriptEngines>()->loadScript(fileNameString, true, false, false, true); // Don't load from cache DependencyManager::get<ScriptEngines>()->loadScript(fileNameString, true, false, false, true); // Don't load from cache
} }
} }
QString Application::getPreviousScriptLocation() {
QString result = _previousScriptLocation.get();
return result;
}
void Application::setPreviousScriptLocation(const QString& location) {
_previousScriptLocation.set(location);
}
void Application::loadScriptURLDialog() { void Application::loadScriptURLDialog() {
auto newScript = OffscreenUi::getText(nullptr, "Open and Run Script", "Script URL"); auto newScript = OffscreenUi::getText(nullptr, "Open and Run Script", "Script URL");
if (!newScript.isEmpty()) { if (!newScript.isEmpty()) {

View file

@ -103,6 +103,9 @@ public:
void postLambdaEvent(std::function<void()> f) override; void postLambdaEvent(std::function<void()> f) override;
QString getPreviousScriptLocation();
void setPreviousScriptLocation(const QString& previousScriptLocation);
void initializeGL(); void initializeGL();
void initializeUi(); void initializeUi();
void paintGL(); void paintGL();
@ -431,6 +434,7 @@ private:
Camera _mirrorCamera; // Cammera for mirror view Camera _mirrorCamera; // Cammera for mirror view
QRect _mirrorViewRect; QRect _mirrorViewRect;
Setting::Handle<QString> _previousScriptLocation;
Setting::Handle<float> _fieldOfView; Setting::Handle<float> _fieldOfView;
float _scaleMirror; float _scaleMirror;

View file

@ -191,10 +191,10 @@ bool ScriptEditorWidget::save() {
bool ScriptEditorWidget::saveAs() { bool ScriptEditorWidget::saveAs() {
auto scriptEngines = DependencyManager::get<ScriptEngines>(); auto scriptEngines = DependencyManager::get<ScriptEngines>();
QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"), QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"),
scriptEngines->getPreviousScriptLocation(), qApp->getPreviousScriptLocation(),
tr("JavaScript Files (*.js)")); tr("JavaScript Files (*.js)"));
if (!fileName.isEmpty()) { if (!fileName.isEmpty()) {
scriptEngines->setPreviousScriptLocation(fileName); qApp->setPreviousScriptLocation(fileName);
return saveFile(fileName); return saveFile(fileName);
} else { } else {
return false; return false;

View file

@ -87,12 +87,11 @@ void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) {
} }
void ScriptEditorWindow::loadScriptClicked() { void ScriptEditorWindow::loadScriptClicked() {
auto scriptEngines = DependencyManager::get<ScriptEngines>();
QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"), QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"),
scriptEngines->getPreviousScriptLocation(), qApp->getPreviousScriptLocation(),
tr("JavaScript Files (*.js)")); tr("JavaScript Files (*.js)"));
if (!scriptName.isEmpty()) { if (!scriptName.isEmpty()) {
scriptEngines->setPreviousScriptLocation(scriptName); qApp->setPreviousScriptLocation(scriptName);
addScriptEditorWidget("loading...")->loadFile(scriptName); addScriptEditorWidget("loading...")->loadFile(scriptName);
updateButtons(); updateButtons();
} }
@ -100,7 +99,7 @@ void ScriptEditorWindow::loadScriptClicked() {
void ScriptEditorWindow::loadMenuAboutToShow() { void ScriptEditorWindow::loadMenuAboutToShow() {
_loadMenu->clear(); _loadMenu->clear();
QStringList runningScripts = DependencyManager::get<ScriptEngines>()->getRunningScripts();; QStringList runningScripts = DependencyManager::get<ScriptEngines>()->getRunningScripts();
if (runningScripts.count() > 0) { if (runningScripts.count() > 0) {
QSignalMapper* signalMapper = new QSignalMapper(this); QSignalMapper* signalMapper = new QSignalMapper(this);
foreach (const QString& runningScript, runningScripts) { foreach (const QString& runningScript, runningScripts) {

View file

@ -34,8 +34,7 @@ ScriptsModel& getScriptsModel() {
} }
ScriptEngines::ScriptEngines() ScriptEngines::ScriptEngines()
: _scriptsLocationHandle("scriptsLocation", DESKTOP_LOCATION), : _scriptsLocationHandle("scriptsLocation", DESKTOP_LOCATION)
_previousScriptLocation("LastScriptLocation", DESKTOP_LOCATION)
{ {
_scriptsModelFilter.setSourceModel(&_scriptsModel); _scriptsModelFilter.setSourceModel(&_scriptsModel);
_scriptsModelFilter.sort(0, Qt::AscendingOrder); _scriptsModelFilter.sort(0, Qt::AscendingOrder);
@ -445,14 +444,3 @@ void ScriptEngines::onScriptEngineError(const QString& scriptFilename) {
qCDebug(scriptengine) << "Application::loadScript(), script failed to load..."; qCDebug(scriptengine) << "Application::loadScript(), script failed to load...";
emit scriptLoadError(scriptFilename, ""); emit scriptLoadError(scriptFilename, "");
} }
QString ScriptEngines::getPreviousScriptLocation() const {
return _previousScriptLocation.get();
}
void ScriptEngines::setPreviousScriptLocation(const QString& previousScriptLocation) {
if (_previousScriptLocation.get() != previousScriptLocation) {
_previousScriptLocation.set(previousScriptLocation);
emit previousScriptLocationChanged();
}
}

View file

@ -30,7 +30,6 @@ class ScriptEngines : public QObject, public Dependency {
Q_PROPERTY(ScriptsModel* scriptsModel READ scriptsModel CONSTANT) Q_PROPERTY(ScriptsModel* scriptsModel READ scriptsModel CONSTANT)
Q_PROPERTY(ScriptsModelFilter* scriptsModelFilter READ scriptsModelFilter CONSTANT) Q_PROPERTY(ScriptsModelFilter* scriptsModelFilter READ scriptsModelFilter CONSTANT)
Q_PROPERTY(QString previousScriptLocation READ getPreviousScriptLocation WRITE setPreviousScriptLocation NOTIFY previousScriptLocationChanged)
public: public:
using ScriptInitializer = std::function<void(ScriptEngine*)>; using ScriptInitializer = std::function<void(ScriptEngine*)>;
@ -48,9 +47,6 @@ public:
QStringList getRunningScripts(); QStringList getRunningScripts();
ScriptEngine* getScriptEngine(const QString& scriptHash); ScriptEngine* getScriptEngine(const QString& scriptHash);
QString getPreviousScriptLocation() const;
void setPreviousScriptLocation(const QString& previousScriptLocation);
ScriptsModel* scriptsModel() { return &_scriptsModel; }; ScriptsModel* scriptsModel() { return &_scriptsModel; };
ScriptsModelFilter* scriptsModelFilter() { return &_scriptsModelFilter; }; ScriptsModelFilter* scriptsModelFilter() { return &_scriptsModelFilter; };
@ -73,7 +69,6 @@ signals:
void scriptCountChanged(); void scriptCountChanged();
void scriptsReloading(); void scriptsReloading();
void scriptLoadError(const QString& filename, const QString& error); void scriptLoadError(const QString& filename, const QString& error);
void previousScriptLocationChanged();
protected slots: protected slots:
void onScriptFinished(const QString& fileNameString, ScriptEngine* engine); void onScriptFinished(const QString& fileNameString, ScriptEngine* engine);
@ -97,7 +92,6 @@ protected:
std::atomic<bool> _stoppingAllScripts { false }; std::atomic<bool> _stoppingAllScripts { false };
std::list<ScriptInitializer> _scriptInitializers; std::list<ScriptInitializer> _scriptInitializers;
mutable Setting::Handle<QString> _scriptsLocationHandle; mutable Setting::Handle<QString> _scriptsLocationHandle;
mutable Setting::Handle<QString> _previousScriptLocation;
ScriptsModel _scriptsModel; ScriptsModel _scriptsModel;
ScriptsModelFilter _scriptsModelFilter; ScriptsModelFilter _scriptsModelFilter;
}; };