Use same load/save dialog behavior as in main application for ScriptEditor, this will keep track of the last directory that was used to load a script.

This commit is contained in:
Thijs Wenker 2014-04-29 21:51:20 +02:00
parent 4bdc945f94
commit df14e1e6e4
4 changed files with 32 additions and 10 deletions

View file

@ -3438,7 +3438,7 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript
return scriptEngine; return scriptEngine;
} }
void Application::loadDialog() { QString Application::getPreviousScriptLocation() {
QString suggestedName; QString suggestedName;
if (_previousScriptLocation.isEmpty()) { if (_previousScriptLocation.isEmpty()) {
@ -3451,13 +3451,22 @@ void Application::loadDialog() {
suggestedName = _previousScriptLocation; suggestedName = _previousScriptLocation;
} }
QString fileNameString = QFileDialog::getOpenFileName(_glWidget, tr("Open Script"), suggestedName, return suggestedName;
tr("JavaScript Files (*.js)")); }
if (!fileNameString.isEmpty()) {
_previousScriptLocation = fileNameString; void Application::setPreviousScriptLocation(QString previousScriptLocation) {
_previousScriptLocation = previousScriptLocation;
QMutexLocker locker(&_settingsMutex); QMutexLocker locker(&_settingsMutex);
_settings->setValue("LastScriptLocation", _previousScriptLocation); _settings->setValue("LastScriptLocation", _previousScriptLocation);
}
void Application::loadDialog() {
QString fileNameString = QFileDialog::getOpenFileName(_glWidget, tr("Open Script"),
getPreviousScriptLocation(),
tr("JavaScript Files (*.js)"));
if (!fileNameString.isEmpty()) {
setPreviousScriptLocation(fileNameString);
loadScript(fileNameString); loadScript(fileNameString);
} }
} }

View file

@ -124,6 +124,9 @@ public:
void restoreSizeAndPosition(); void restoreSizeAndPosition();
ScriptEngine* loadScript(const QString& fileNameString, bool loadScriptFromEditor = false); ScriptEngine* loadScript(const QString& fileNameString, bool loadScriptFromEditor = false);
void loadScripts(); void loadScripts();
QString getPreviousScriptLocation();
void setPreviousScriptLocation(QString previousScriptLocation);
void storeSizeAndPosition(); void storeSizeAndPosition();
void clearScriptsBeforeRunning(); void clearScriptsBeforeRunning();
void saveScripts(); void saveScripts();

View file

@ -128,8 +128,15 @@ bool ScriptEditorWidget::save() {
} }
bool ScriptEditorWidget::saveAs() { bool ScriptEditorWidget::saveAs() {
QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"), QString(), tr("Javascript (*.js)")); QString fileName = QFileDialog::getSaveFileName(this, tr("Save script"),
return !fileName.isEmpty() ? saveFile(fileName) : false; Application::getInstance()->getPreviousScriptLocation(),
tr("JavaScript Files (*.js)"));
if (!fileName.isEmpty()) {
Application::getInstance()->setPreviousScriptLocation(fileName);
return saveFile(fileName);
} else {
return false;
}
} }
void ScriptEditorWidget::setScriptFile(const QString& scriptPath) { void ScriptEditorWidget::setScriptFile(const QString& scriptPath) {

View file

@ -73,8 +73,11 @@ void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) {
} }
void ScriptEditorWindow::loadScriptClicked() { void ScriptEditorWindow::loadScriptClicked() {
QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"), QString(), tr("Javascript (*.js)")); QString scriptName = QFileDialog::getOpenFileName(this, tr("Interface"),
Application::getInstance()->getPreviousScriptLocation(),
tr("JavaScript Files (*.js)"));
if (!scriptName.isEmpty()) { if (!scriptName.isEmpty()) {
Application::getInstance()->setPreviousScriptLocation(scriptName);
addScriptEditorWidget("loading...")->loadFile(scriptName); addScriptEditorWidget("loading...")->loadFile(scriptName);
updateButtons(); updateButtons();
} }