History

Wait for scripts to finish before restarting them.

Andrzej Kapolka committed 12 years ago

Commit b9fecb81 parent 55c92822 files · +63 −67Browse files

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

Unified · Split

interface/src/Application.cpp+61−65
@@ -3374,71 +3374,6 @@ void Application::saveScripts() { · 3373 unmodified lines
3374 _settings->endArray();3374 _settings->endArray();
3375}3375}
3376 3376
3377void Application::stopAllScripts() {
3378 // stops all current running scripts
3379 for (int i = 0; i < _scriptEnginesHash.size(); ++i) {
3380 _scriptEnginesHash.values().at(i)->stop();
3381 qDebug() << "stopping script..." << getRunningScripts().at(i);
3382 }
3383 _scriptEnginesHash.clear();
3384 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3385 bumpSettings();
3386}
3387
3388void Application::stopScript(const QString &scriptName) {
3389 if (_scriptEnginesHash.contains(scriptName)) {
3390 _scriptEnginesHash.value(scriptName)->stop();
3391 qDebug() << "stopping script..." << scriptName;
3392 _scriptEnginesHash.remove(scriptName);
3393 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3394 bumpSettings();
3395 }
3396}
3397
3398void Application::reloadAllScripts() {
3399 // remember all the current scripts so we can reload them
3400 QStringList reloadList = getRunningScripts();
3401 // reloads all current running scripts
3402 stopAllScripts();
3403
3404 foreach (QString scriptName, reloadList){
3405 qDebug() << "reloading script..." << scriptName;
3406 loadScript(scriptName);
3407 }
3408}
3409
3410void Application::manageRunningScriptsWidgetVisibility(bool shown) {
3411 if (_runningScriptsWidgetWasVisible && shown) {
3412 _runningScriptsWidget->show();
3413 } else if (_runningScriptsWidgetWasVisible && !shown) {
3414 _runningScriptsWidget->hide();
3415 }
3416}
3417
3418void Application::toggleRunningScriptsWidget() {
3419 if (_runningScriptsWidgetWasVisible) {
3420 _runningScriptsWidget->hide();
3421 _runningScriptsWidgetWasVisible = false;
3422 } else {
3423 _runningScriptsWidget->setBoundary(QRect(_window->geometry().topLeft(),
3424 _window->size()));
3425 _runningScriptsWidget->show();
3426 _runningScriptsWidgetWasVisible = true;
3427 }
3428}
3429
3430void Application::uploadHead() {
3431 uploadModel(HEAD_MODEL);
3432}
3433
3434void Application::uploadSkeleton() {
3435 uploadModel(SKELETON_MODEL);
3436}
3437
3438void Application::uploadAttachment() {
3439 uploadModel(ATTACHMENT_MODEL);
3440}
3441
3442ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {3377ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScriptFromEditor) {
3443 if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){3378 if(loadScriptFromEditor && _scriptEnginesHash.contains(scriptName) && !_scriptEnginesHash[scriptName]->isFinished()){
3444 return _scriptEnginesHash[scriptName];3379 return _scriptEnginesHash[scriptName];
@@ -3518,6 +3453,67 @@ ScriptEngine* Application::loadScript(const QString& scriptName, bool loadScript · 73 unmodified lines
3518 return scriptEngine;3453 return scriptEngine;
3519}3454}
3520 3455
3456void Application::stopAllScripts(bool restart) {
3457 // stops all current running scripts
3458 for (QHash<QString, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
3459 it != _scriptEnginesHash.constEnd(); it++) {
3460 if (restart) {
3461 connect(it.value(), SIGNAL(finished(const QString&)), SLOT(loadScript(const QString&)));
3462 }
3463 it.value()->stop();
3464 qDebug() << "stopping script..." << it.key();
3465 }
3466 _scriptEnginesHash.clear();
3467 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3468 bumpSettings();
3469}
3470
3471void Application::stopScript(const QString &scriptName) {
3472 if (_scriptEnginesHash.contains(scriptName)) {
3473 _scriptEnginesHash.value(scriptName)->stop();
3474 qDebug() << "stopping script..." << scriptName;
3475 _scriptEnginesHash.remove(scriptName);
3476 _runningScriptsWidget->setRunningScripts(getRunningScripts());
3477 bumpSettings();
3478 }
3479}
3480
3481void Application::reloadAllScripts() {
3482 stopAllScripts(true);
3483}
3484
3485void Application::manageRunningScriptsWidgetVisibility(bool shown) {
3486 if (_runningScriptsWidgetWasVisible && shown) {
3487 _runningScriptsWidget->show();
3488 } else if (_runningScriptsWidgetWasVisible && !shown) {
3489 _runningScriptsWidget->hide();
3490 }
3491}
3492
3493void Application::toggleRunningScriptsWidget() {
3494 if (_runningScriptsWidgetWasVisible) {
3495 _runningScriptsWidget->hide();
3496 _runningScriptsWidgetWasVisible = false;
3497 } else {
3498 _runningScriptsWidget->setBoundary(QRect(_window->geometry().topLeft(),
3499 _window->size()));
3500 _runningScriptsWidget->show();
3501 _runningScriptsWidgetWasVisible = true;
3502 }
3503}
3504
3505void Application::uploadHead() {
3506 uploadModel(HEAD_MODEL);
3507}
3508
3509void Application::uploadSkeleton() {
3510 uploadModel(SKELETON_MODEL);
3511}
3512
3513void Application::uploadAttachment() {
3514 uploadModel(ATTACHMENT_MODEL);
3515}
3516
3521QString Application::getPreviousScriptLocation() {3517QString Application::getPreviousScriptLocation() {
3522 QString suggestedName;3518 QString suggestedName;
3523 if (_previousScriptLocation.isEmpty()) {3519 if (_previousScriptLocation.isEmpty()) {

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