mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[code] Script editor and Console are stacked.
Before, they appeared in modal views. Change-Id: I42ea742370cd3cf0854965f67fc44b43db4cc309
This commit is contained in:
@@ -209,7 +209,7 @@ bool ConsoleController::textFieldDidFinishEditing(TextField * textField, const c
|
||||
}
|
||||
|
||||
bool ConsoleController::textFieldDidAbortEditing(TextField * textField, const char * text) {
|
||||
app()->dismissModalViewController();
|
||||
stackViewController()->pop();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -298,4 +298,8 @@ int ConsoleController::firstNewLineCharIndex(const char * text, size_t length) {
|
||||
return index;
|
||||
}
|
||||
|
||||
StackViewController * ConsoleController::stackViewController() {
|
||||
return static_cast<StackViewController *>(parentResponder());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ public:
|
||||
void viewWillAppear() override;
|
||||
void didBecomeFirstResponder() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
ViewController::DisplayParameter displayParameter() override { return ViewController::DisplayParameter::WantsMaximumSpace; }
|
||||
|
||||
// ListViewDataSource
|
||||
int numberOfRows() override;
|
||||
@@ -70,6 +71,7 @@ private:
|
||||
void appendTextToOutputAccumulationBuffer(const char * text, size_t length);
|
||||
void emptyOutputAccumulationBuffer();
|
||||
int firstNewLineCharIndex(const char * text, size_t length);
|
||||
StackViewController * stackViewController();
|
||||
int m_rowHeight;
|
||||
ConsoleStore m_consoleStore;
|
||||
SelectableTableView m_selectableTableView;
|
||||
|
||||
@@ -18,8 +18,8 @@ void EditorController::setScript(Script script){
|
||||
}
|
||||
|
||||
bool EditorController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK) {
|
||||
app()->dismissModalViewController();
|
||||
if (event == Ion::Events::OK || event == Ion::Events::Back) {
|
||||
stackController()->pop();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -112,4 +112,8 @@ bool EditorController::textAreaDidReceiveEvent(TextArea * textArea, Ion::Events:
|
||||
return false;
|
||||
}
|
||||
|
||||
StackViewController * EditorController::stackController() {
|
||||
return static_cast<StackViewController *>(parentResponder());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ public:
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
void viewDidDisappear() override;
|
||||
ViewController::DisplayParameter displayParameter() override { return ViewController::DisplayParameter::WantsMaximumSpace; }
|
||||
|
||||
/* TextAreaDelegate */
|
||||
bool textAreaShouldFinishEditing(TextArea * textArea, Ion::Events::Event event) override;
|
||||
@@ -26,6 +27,7 @@ public:
|
||||
|
||||
private:
|
||||
static constexpr int k_indentationSpacesNumber = 2;
|
||||
StackViewController * stackController();
|
||||
TextArea m_textArea;
|
||||
ScriptParameterController * m_scriptParameterController;
|
||||
};
|
||||
|
||||
@@ -15,7 +15,7 @@ MenuController::MenuController(Responder * parentResponder, ScriptStore * script
|
||||
m_consoleButton(this, I18n::Message::Console, Invocation([](void * context, void * sender) {
|
||||
MenuController * menu = (MenuController *)context;
|
||||
if (menu->consoleController()->loadPythonEnvironment()) {
|
||||
menu->app()->displayModalViewController(menu->consoleController(), 0.5f, 0.5f);
|
||||
menu->stackViewController()->push(menu->consoleController());
|
||||
return;
|
||||
}
|
||||
//TODO: Pop up warning message: not enough space to load Python
|
||||
@@ -34,15 +34,13 @@ MenuController::MenuController(Responder * parentResponder, ScriptStore * script
|
||||
m_selectableTableView.selectCellAtLocation(0, 0);
|
||||
}
|
||||
|
||||
ConsoleController * MenuController::consoleController() {
|
||||
return &m_consoleController;
|
||||
}
|
||||
|
||||
View * MenuController::view() {
|
||||
return &m_selectableTableView;
|
||||
}
|
||||
|
||||
void MenuController::didBecomeFirstResponder() {
|
||||
if (m_selectableTableView.selectedRow() < 0) {
|
||||
assert(footer()->selectedButton() == 0);
|
||||
app()->setFirstResponder(&m_consoleButton);
|
||||
return;
|
||||
}
|
||||
assert(m_selectableTableView.selectedRow() < numberOfRows());
|
||||
app()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
@@ -114,10 +112,6 @@ int MenuController::numberOfRows() {
|
||||
//TODO do not add the addScript row if there can be no more scripts stored.
|
||||
};
|
||||
|
||||
KDCoordinate MenuController::cellHeight() {
|
||||
return k_rowHeight;
|
||||
}
|
||||
|
||||
KDCoordinate MenuController::rowHeight(int j) {
|
||||
return cellHeight();
|
||||
}
|
||||
@@ -213,19 +207,6 @@ bool MenuController::textFieldDidAbortEditing(TextField * textField, const char
|
||||
return true;
|
||||
}
|
||||
|
||||
Toolbox * MenuController::toolboxForTextField(TextField * textFied) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int MenuController::numberOfButtons(ButtonRowController::Position position) const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
Button * MenuController::buttonAtIndex(int index, ButtonRowController::Position position) const {
|
||||
assert(index == 0);
|
||||
return const_cast<Button *>(&m_consoleButton);
|
||||
}
|
||||
|
||||
StackViewController * MenuController::stackViewController() {
|
||||
return static_cast<StackViewController *>(parentResponder()->parentResponder());
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ class MenuController : public ViewController, public ListViewDataSource, public
|
||||
public:
|
||||
MenuController(Responder * parentResponder, ScriptStore * scriptStore, ButtonRowController * footer);
|
||||
|
||||
ConsoleController * consoleController();
|
||||
ConsoleController * consoleController() { return &m_consoleController; }
|
||||
StackViewController * stackViewController();
|
||||
void configureScript();
|
||||
void setParameteredScript();
|
||||
@@ -25,13 +25,13 @@ public:
|
||||
void reloadConsole();
|
||||
|
||||
/* ViewController */
|
||||
View * view() override;
|
||||
View * view() override { return &m_selectableTableView; }
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
|
||||
/* ListViewDataSource */
|
||||
int numberOfRows() override;
|
||||
KDCoordinate cellHeight();
|
||||
KDCoordinate cellHeight() { return k_rowHeight; }
|
||||
KDCoordinate rowHeight(int j) override;
|
||||
KDCoordinate cumulatedHeightFromIndex(int j) override;
|
||||
int indexFromCumulatedHeight(KDCoordinate offsetY) override;
|
||||
@@ -45,11 +45,14 @@ public:
|
||||
bool textFieldDidReceiveEvent(TextField * textField, Ion::Events::Event event) override;
|
||||
bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
|
||||
bool textFieldDidAbortEditing(TextField * textField, const char * text) override;
|
||||
Toolbox * toolboxForTextField(TextField * textFied) override;
|
||||
Toolbox * toolboxForTextField(TextField * textFied) override { return nullptr; }
|
||||
|
||||
/* ButtonRowDelegate */
|
||||
int numberOfButtons(ButtonRowController::Position position) const override;
|
||||
Button * buttonAtIndex(int index, ButtonRowController::Position position) const override;
|
||||
int numberOfButtons(ButtonRowController::Position position) const override { return 1; }
|
||||
Button * buttonAtIndex(int index, ButtonRowController::Position position) const override {
|
||||
assert(index == 0);
|
||||
return const_cast<Button *>(&m_consoleButton);
|
||||
}
|
||||
|
||||
private:
|
||||
static constexpr int k_maxNumberOfDisplayableScriptCells = 7; //TODO
|
||||
|
||||
@@ -49,7 +49,7 @@ bool ScriptParameterController::handleEvent(Ion::Events::Event event) {
|
||||
int i = m_currentScriptIndex;
|
||||
switch (selectedRow()) {
|
||||
case 0:
|
||||
app()->displayModalViewController(&m_editorController, 0.5f, 0.5f);
|
||||
stackController()->push(&m_editorController);
|
||||
return true;
|
||||
case 1:
|
||||
dismissScriptParameterController();
|
||||
@@ -101,7 +101,7 @@ int ScriptParameterController::reusableCellCount() {
|
||||
}
|
||||
|
||||
int ScriptParameterController::numberOfRows() {
|
||||
return k_totalNumberOfCell;
|
||||
return k_totalNumberOfCell;
|
||||
}
|
||||
|
||||
void ScriptParameterController::willDisplayCellForIndex(HighlightCell * cell, int index) {
|
||||
@@ -115,7 +115,7 @@ void ScriptParameterController::willDisplayCellForIndex(HighlightCell * cell, in
|
||||
}
|
||||
|
||||
StackViewController * ScriptParameterController::stackController() {
|
||||
return static_cast<StackViewController *>(parentResponder());
|
||||
return static_cast<StackViewController *>(parentResponder());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <escher/i18n.h>
|
||||
#include <escher/button.h>
|
||||
#include <escher/app.h>
|
||||
#include <assert.h>
|
||||
|
||||
class ButtonRowDelegate;
|
||||
|
||||
@@ -21,10 +22,11 @@ public:
|
||||
EmbossedGrey
|
||||
};
|
||||
ButtonRowController(Responder * parentResponder, ViewController * mainViewController, ButtonRowDelegate * delegate, Position position = Position::Top, Style = Style::PlainWhite);
|
||||
View * view() override;
|
||||
View * view() override { return &m_contentView; }
|
||||
const char * title() override;
|
||||
void didBecomeFirstResponder() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
int selectedButton();
|
||||
bool setSelectedButton(int selectedButton);
|
||||
void viewWillAppear() override;
|
||||
void viewDidDisappear() override;
|
||||
@@ -40,9 +42,9 @@ private:
|
||||
void layoutSubviews() override;
|
||||
void drawRect(KDContext * ctx, KDRect rect) const override;
|
||||
bool setSelectedButton(int selectedButton, App * app);
|
||||
int selectedButton();
|
||||
ViewController * mainViewController() const;
|
||||
ButtonRowDelegate * buttonRowDelegate() const;
|
||||
int selectedButton() const { return m_selectedButton; }
|
||||
ViewController * mainViewController() const { return m_mainViewController; }
|
||||
ButtonRowDelegate * buttonRowDelegate() const { return m_delegate; }
|
||||
private:
|
||||
constexpr static KDCoordinate k_plainStyleHeight = 20;
|
||||
constexpr static KDCoordinate k_embossedStyleHeight = 36;
|
||||
@@ -61,10 +63,13 @@ private:
|
||||
class ButtonRowDelegate {
|
||||
public:
|
||||
ButtonRowDelegate(ButtonRowController * header, ButtonRowController * footer);
|
||||
virtual int numberOfButtons(ButtonRowController::Position position) const;
|
||||
virtual Button * buttonAtIndex(int index, ButtonRowController::Position position) const;
|
||||
ButtonRowController * header();
|
||||
ButtonRowController * footer();
|
||||
virtual int numberOfButtons(ButtonRowController::Position position) const { return 0; }
|
||||
virtual Button * buttonAtIndex(int index, ButtonRowController::Position position) const {
|
||||
assert(false);
|
||||
return nullptr;
|
||||
}
|
||||
ButtonRowController * header() { return m_header; }
|
||||
ButtonRowController * footer() { return m_footer; }
|
||||
private:
|
||||
ButtonRowController * m_header;
|
||||
ButtonRowController * m_footer;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <escher/button_row_controller.h>
|
||||
#include <escher/palette.h>
|
||||
#include <assert.h>
|
||||
#include <cmath>
|
||||
|
||||
ButtonRowDelegate::ButtonRowDelegate(ButtonRowController * header, ButtonRowController * footer) :
|
||||
@@ -9,23 +8,6 @@ ButtonRowDelegate::ButtonRowDelegate(ButtonRowController * header, ButtonRowCont
|
||||
{
|
||||
}
|
||||
|
||||
int ButtonRowDelegate::numberOfButtons(ButtonRowController::Position position) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Button * ButtonRowDelegate::buttonAtIndex(int index, ButtonRowController::Position position) const {
|
||||
assert(false);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ButtonRowController * ButtonRowDelegate::footer() {
|
||||
return m_footer;
|
||||
}
|
||||
|
||||
ButtonRowController * ButtonRowDelegate::header() {
|
||||
return m_header;
|
||||
}
|
||||
|
||||
ButtonRowController::ContentView::ContentView(ViewController * mainViewController, ButtonRowDelegate * delegate, Position position, Style style) :
|
||||
View(),
|
||||
m_mainViewController(mainViewController),
|
||||
@@ -165,28 +147,12 @@ bool ButtonRowController::ContentView::setSelectedButton(int selectedButton, App
|
||||
return false;
|
||||
}
|
||||
|
||||
int ButtonRowController::ContentView::selectedButton() {
|
||||
return m_selectedButton;
|
||||
}
|
||||
|
||||
ViewController * ButtonRowController::ContentView::mainViewController() const {
|
||||
return m_mainViewController;
|
||||
}
|
||||
|
||||
ButtonRowDelegate * ButtonRowController::ContentView::buttonRowDelegate() const {
|
||||
return m_delegate;
|
||||
}
|
||||
|
||||
ButtonRowController::ButtonRowController(Responder * parentResponder, ViewController * mainViewController, ButtonRowDelegate * delegate, Position position, Style style) :
|
||||
ViewController(parentResponder),
|
||||
m_contentView(mainViewController, delegate, position, style)
|
||||
{
|
||||
}
|
||||
|
||||
View * ButtonRowController::view() {
|
||||
return &m_contentView;
|
||||
}
|
||||
|
||||
const char * ButtonRowController::title() {
|
||||
return m_contentView.mainViewController()->title();
|
||||
}
|
||||
@@ -195,6 +161,10 @@ void ButtonRowController::didBecomeFirstResponder(){
|
||||
app()->setFirstResponder(m_contentView.mainViewController());
|
||||
}
|
||||
|
||||
int ButtonRowController::selectedButton() {
|
||||
return m_contentView.selectedButton();
|
||||
}
|
||||
|
||||
bool ButtonRowController::setSelectedButton(int selectedButton) {
|
||||
App * application = app();
|
||||
return m_contentView.setSelectedButton(selectedButton, application);
|
||||
|
||||
Reference in New Issue
Block a user