[apps/code] Hide the sandbox between script importations

This commit is contained in:
Léa Saviot
2019-02-05 16:15:41 +01:00
committed by EmilieNumworks
parent 4a8c0a6bd0
commit a021af46fe
5 changed files with 20 additions and 0 deletions

View File

@@ -332,6 +332,13 @@ void ConsoleController::displaySandbox() {
stackViewController()->push(&m_sandboxController);
}
void ConsoleController::hideSandbox() {
if (!sandboxIsDisplayed()) {
return;
}
m_sandboxController.hide();
}
void ConsoleController::resetSandbox() {
if (!sandboxIsDisplayed()) {
return;
@@ -364,6 +371,12 @@ void ConsoleController::printText(const char * text, size_t length) {
}
void ConsoleController::autoImportScript(Script script, bool force) {
if (sandboxIsDisplayed()) {
/* The sandbox might be displayed, for instance if we are auto-importing
* several scripts that draw at importation. In this case, we want to remove
* the sandbox. */
hideSandbox();
}
if (script.importationStatus() || force) {
// Step 1 - Create the command "from scriptName import *".

View File

@@ -62,6 +62,7 @@ public:
// MicroPython::ExecutionEnvironment
void displaySandbox() override;
void hideSandbox() override;
void resetSandbox() override;
void printText(const char * text, size_t length) override;
const char * inputText(const char * prompt) override;

View File

@@ -20,6 +20,10 @@ void SandboxController::reset() {
redrawWindow();
}
void SandboxController::hide() {
stackViewController()->pop();
}
void SandboxController::viewWillAppear() {
assert(m_executionEnvironment != nullptr);
m_executionEnvironment->setSandboxIsDisplayed(true);

View File

@@ -14,6 +14,7 @@ public:
SandboxController(Responder * parentResponder, MicroPython::ExecutionEnvironment * executionEnvironment);
StackViewController * stackViewController();
void reset();
void hide();
// ViewController
View * view() override { return &m_solidColorView; }

View File

@@ -19,6 +19,7 @@ public:
void runCode(const char * );
virtual const char * inputText(const char * prompt) { return nullptr; }
virtual void displaySandbox() {}
virtual void hideSandbox() {}
virtual void resetSandbox() {}
virtual void printText(const char * text, size_t length) {}
void interrupt();