mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 05:09:23 +02:00
Make all load script dialogs QML and respect previous script location
This commit is contained in:
parent
db7e4eee8f
commit
aa03241dd9
6 changed files with 26 additions and 30 deletions
|
@ -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()) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue