Files
Upsilon/apps/code/sandbox_controller.cpp
Léa Saviot 4b306791c0 [python/turtle] Turtle::m_drawn is false if sandbox not displayed
This way, Turtle::draw() and erase() are more symetrical and no not
perform themselves if the turtle is already drawn / erased.
2018-12-18 12:05:46 +01:00

51 lines
1.4 KiB
C++

#include "sandbox_controller.h"
#include <apps/apps_container.h>
namespace Code {
SandboxController::SandboxController(Responder * parentResponder, MicroPython::ExecutionEnvironment * executionEnvironment) :
ViewController(parentResponder),
m_solidColorView(KDColorWhite),
m_executionEnvironment(executionEnvironment)
{
assert(executionEnvironment != nullptr);
}
StackViewController * SandboxController::stackViewController() {
return static_cast<StackViewController *>(parentResponder());
}
void SandboxController::reset() {
m_solidColorView.reload();
redrawWindow();
}
void SandboxController::viewWillAppear() {
assert(m_executionEnvironment != nullptr);
m_executionEnvironment->setSandboxIsDisplayed(true);
redrawWindow();
}
void SandboxController::viewDidDisappear() {
assert(m_executionEnvironment != nullptr);
m_executionEnvironment->setSandboxIsDisplayed(false);
}
bool SandboxController::handleEvent(Ion::Events::Event event) {
// The sandbox handles or "absorbs" all keyboard events except Home and OnOff
if (event == Ion::Events::Home || event == Ion::Events::OnOff) {
stackViewController()->pop();
return false;
}
if (event == Ion::Events::OK || event == Ion::Events::Back) {
stackViewController()->pop();
}
return event.isKeyboardEvent();
}
void SandboxController::redrawWindow() {
static_cast<AppsContainer *>(const_cast<Container *>(app()->container()))->redrawWindow();
}
}