History

Merge pull request #2642 from Atlante45/persistant_script_location

Persistant script location

Philip Rosedale committed 12 years ago

Commit e08dfea2 parents de6b556 ef89b8c3 files · +83 −48Browse files

Showing the changes to interface/src/Application.cpp (1 of 3 files). Show all

Unified · Split

interface/src/Application.cpp+60−44
@@ -341,11 +341,15 @@ Application::Application(int& argc, char** argv, timeval &startup_time) : · 340 unmodified lines
341341 // clear the scripts, and set out script to our default scripts
342342 clearScriptsBeforeRunning();
343343 loadScript("http://public.highfidelity.io/scripts/defaultScripts.js");
344−
344+
345+ QMutexLocker locker(&_settingsMutex);
345346 _settings->setValue("firstRun",QVariant(false));
346347 } else {
347348 // do this as late as possible so that all required subsystems are inialized
348349 loadScripts();
350+
351+ QMutexLocker locker(&_settingsMutex);
352+ _previousScriptLocation = _settings->value("LastScriptLocation", QVariant("")).toString();
349353 }
350354 }
351355
@@ -355,16 +359,12 @@ Application::~Application() { · 3 unmodified lines
355359
356360 // make sure we don't call the idle timer any more
357361 delete idleTimer;
358−
359− Menu::getInstance()->saveSettings();
360− _rearMirrorTools->saveSettings(_settings);
361−
362+
362363 _sharedVoxelSystem.changeTree(new VoxelTree);
363− if (_voxelImporter) {
364− _voxelImporter->saveSettings(_settings);
365− delete _voxelImporter;
366− }
367− _settings->sync();
364+
365+ saveSettings();
366+
367+ delete _voxelImporter;
368368
369369 // let the avatar mixer know we're out
370370 MyAvatar::sendKillAvatar();
@@ -398,35 +398,45 @@ Application::~Application() { · 27 unmodified lines
398398 AccountManager::getInstance().destroy();
399399 }
400400
401+void Application::saveSettings() {
402+ Menu::getInstance()->saveSettings();
403+ _rearMirrorTools->saveSettings(_settings);
404+
405+ if (_voxelImporter) {
406+ _voxelImporter->saveSettings(_settings);
407+ }
408+ _settings->sync();
409+}
410+
411+
401412 void Application::restoreSizeAndPosition() {
402− QSettings* settings = new QSettings(this);
403413 QRect available = desktop()->availableGeometry();
404414
405− settings->beginGroup("Window");
415+ QMutexLocker locker(&_settingsMutex);
416+ _settings->beginGroup("Window");
406417
407− int x = (int)loadSetting(settings, "x", 0);
408− int y = (int)loadSetting(settings, "y", 0);
418+ int x = (int)loadSetting(_settings, "x", 0);
419+ int y = (int)loadSetting(_settings, "y", 0);
409420 _window->move(x, y);
410421
411− int width = (int)loadSetting(settings, "width", available.width());
412− int height = (int)loadSetting(settings, "height", available.height());
422+ int width = (int)loadSetting(_settings, "width", available.width());
423+ int height = (int)loadSetting(_settings, "height", available.height());
413424 _window->resize(width, height);
414425
415− settings->endGroup();
426+ _settings->endGroup();
416427 }
417428
418429 void Application::storeSizeAndPosition() {
419− QSettings* settings = new QSettings(this);
420−
421− settings->beginGroup("Window");
430+ QMutexLocker locker(&_settingsMutex);
431+ _settings->beginGroup("Window");
422432
423− settings->setValue("width", _window->rect().width());
424− settings->setValue("height", _window->rect().height());
433+ _settings->setValue("width", _window->rect().width());
434+ _settings->setValue("height", _window->rect().height());
425435
426− settings->setValue("x", _window->pos().x());
427− settings->setValue("y", _window->pos().y());
436+ _settings->setValue("x", _window->pos().x());
437+ _settings->setValue("y", _window->pos().y());
428438
429− settings->endGroup();
439+ _settings->endGroup();
430440 }
431441
432442 void Application::initializeGL() {
@@ -3167,35 +3177,36 @@ void Application::packetSent(quint64 length) { · 2734 unmodified lines
31673177
31683178 void Application::loadScripts() {
31693179 // loads all saved scripts
3170− QSettings* settings = new QSettings(this);
3171− int size = settings->beginReadArray("Settings");
3172−
3180+ int size = lockSettings()->beginReadArray("Settings");
3181+ unlockSettings();
31733182 for (int i = 0; i < size; ++i){
3174− settings->setArrayIndex(i);
3175− QString string = settings->value("script").toString();
3176− loadScript(string);
3183+ lockSettings()->setArrayIndex(i);
3184+ QString string = _settings->value("script").toString();
3185+ unlockSettings();
3186+ if (!string.isEmpty()) {
3187+ loadScript(string);
3188+ }
31773189 }
3178−
3179− settings->endArray();
3190+
3191+ QMutexLocker locker(&_settingsMutex);
3192+ _settings->endArray();
31803193 }
31813194
31823195 void Application::clearScriptsBeforeRunning() {
31833196 // clears all scripts from the settings
3184− QSettings* settings = new QSettings(this);
3185− settings->beginWriteArray("Settings");
3186− settings->endArray();
3197+ QMutexLocker locker(&_settingsMutex);
3198+ _settings->remove("Settings");
31873199 }
31883200
31893201 void Application::saveScripts() {
31903202 // saves all current running scripts
3191− QSettings* settings = new QSettings(this);
3192− settings->beginWriteArray("Settings");
3203+ QMutexLocker locker(&_settingsMutex);
3204+ _settings->beginWriteArray("Settings");
31933205 for (int i = 0; i < getRunningScripts().size(); ++i){
3194− settings->setArrayIndex(i);
3195− settings->setValue("script", getRunningScripts().at(i));
3206+ _settings->setArrayIndex(i);
3207+ _settings->setValue("script", getRunningScripts().at(i));
31963208 }
3197−
3198− settings->endArray();
3209+ _settings->endArray();
31993210 }
32003211
32013212 void Application::stopAllScripts() {
@@ -3336,7 +3347,10 @@ void Application::loadDialog() { · 134 unmodified lines
33363347
33373348 if (_previousScriptLocation.isEmpty()) {
33383349 QString desktopLocation = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
3350+// Temporary fix to Qt bug: http://stackoverflow.com/questions/16194475
3351+#ifdef __APPLE__
33393352 suggestedName = desktopLocation.append("/script.js");
3353+#endif
33403354 } else {
33413355 suggestedName = _previousScriptLocation;
33423356 }
@@ -3345,9 +3359,11 @@ void Application::loadDialog() { · 2 unmodified lines
33453359 tr("JavaScript Files (*.js)"));
33463360 if (!fileNameString.isEmpty()) {
33473361 _previousScriptLocation = fileNameString;
3362+ QMutexLocker locker(&_settingsMutex);
3363+ _settings->setValue("LastScriptLocation", _previousScriptLocation);
3364+
3365+ loadScript(fileNameString);
33483366 }
3349−
3350− loadScript(fileNameString);
33513367 }
33523368
33533369 void Application::loadScriptURLDialog() {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t