[apps/code] Refresh view in printText

This commit is contained in:
Léa Saviot
2020-01-17 10:04:28 +01:00
parent f20bb1fcf2
commit f47f1f0543
5 changed files with 18 additions and 0 deletions

View File

@@ -7,6 +7,7 @@
#include <escher/metric.h>
#include <apps/global_preferences.h>
#include <apps/apps_container.h>
#include <python/port/helpers.h>
extern "C" {
#include <stdlib.h>
@@ -364,9 +365,16 @@ void ConsoleController::resetSandbox() {
m_sandboxController.reset();
}
void ConsoleController::refreshPrintOutput() {
m_selectableTableView.reloadData();
m_selectableTableView.selectCellAtLocation(0, m_consoleStore.numberOfLines());
AppsContainer::sharedAppsContainer()->redrawWindow();
}
/* printText is called by the Python machine.
* The text argument is not always null-terminated. */
void ConsoleController::printText(const char * text, size_t length) {
micropython_port_vm_hook_loop_content();
size_t textCutIndex = firstNewLineCharIndex(text, length);
if (textCutIndex >= length) {
/* If there is no new line in text, just append it to the output

View File

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

View File

@@ -1,4 +1,5 @@
#include "helpers.h"
#include "port.h"
#include <ion.h>
extern "C" {
#include "mphalport.h"
@@ -18,6 +19,12 @@ bool micropython_port_vm_hook_loop() {
return false;
}
return micropython_port_vm_hook_loop_content();
}
bool micropython_port_vm_hook_loop_content() {
assert(MicroPython::ExecutionEnvironment::currentExecutionEnvironment() != nullptr);
MicroPython::ExecutionEnvironment::currentExecutionEnvironment()->refreshPrintOutput();
// Check if the user asked for an interruption from the keyboard
return micropython_port_interrupt_if_needed();
}

View File

@@ -10,6 +10,7 @@ extern "C" {
// These methods return true if they have been interrupted
bool micropython_port_vm_hook_loop();
bool micropython_port_vm_hook_loop_content();
bool micropython_port_interruptible_msleep(int32_t delay);
bool micropython_port_interrupt_if_needed();
int micropython_port_random();

View File

@@ -22,6 +22,7 @@ public:
virtual void hideSandbox() {}
virtual void resetSandbox() {}
virtual void printText(const char * text, size_t length) {}
virtual void refreshPrintOutput() {}
void interrupt();
void setSandboxIsDisplayed(bool display);
protected: