[apps/code] Add a model program

Change-Id: I79b74f1f245d98d1ce02a590ee25de2c4fbb3c59
This commit is contained in:
Émilie Feral
2017-08-10 11:05:00 +02:00
parent 587406bccd
commit eec8c7f1ce
5 changed files with 77 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ app_objs += $(addprefix apps/code/,\
app.o\
editor_controller.o\
menu_controller.o\
program.o\
)
app_images += apps/code/code_icon.png

View File

@@ -18,6 +18,11 @@ const Image * App::Descriptor::icon() {
return ImageStore::CodeIcon;
}
App::Snapshot::Snapshot() :
m_program()
{
}
App * App::Snapshot::unpack(Container * container) {
return new App(container, this);
}
@@ -27,6 +32,14 @@ App::Descriptor * App::Snapshot::descriptor() {
return &descriptor;
}
void App::Snapshot::reset() {
m_program.setContent("");
}
Program * App::Snapshot::program() {
return &m_program;
}
App::App(Container * container, Snapshot * snapshot) :
::App(container, snapshot, &m_menuController, I18n::Message::Warning),
m_betaVersionController(I18n::Message::BetaVersion, I18n::Message::BetaVersionMessage1, I18n::Message::BetaVersionMessage2, I18n::Message::BetaVersionMessage3, I18n::Message::BetaVersionMessage4),

View File

@@ -3,6 +3,7 @@
#include <escher.h>
#include "menu_controller.h"
#include "program.h"
#include "../shared/message_controller.h"
namespace Code {
@@ -17,12 +18,14 @@ public:
};
class Snapshot : public ::App::Snapshot {
public:
Snapshot();
App * unpack(Container * container) override;
void reset() override;
Descriptor * descriptor() override;
Program * program();
private:
Program m_program;
};
//int numberOfTimers() override;
//Timer * timerAtIndex(int i) override;
//bool processEvent(Ion::Events::Event) override;
void didBecomeActive(Window * window) override;
private:
App(Container * container, Snapshot * snapshot);

35
apps/code/program.cpp Normal file
View File

@@ -0,0 +1,35 @@
#include "program.h"
namespace Code {
Program::Program() :
m_buffer("")
{
const char * program =
"import kandinsky\n"
"red = kandinsky.color(255,0,0)\n"
"blue = kandinsky.color(0,0,255)\n"
"for i in range(100):\n"
" for j in range(100):\n"
" if ((i+j)%2 == 0):\n"
" kandinsky.set_pixel(i, j, red)\n"
" else:\n"
" kandinsky.set_pixel(i, j, blue)\n";
memcpy(m_buffer, program, 1024);
}
const char * Program::readOnlyContent() const {
return m_buffer;
}
char * Program::editableContent() {
return m_buffer;
}
void Program::setContent(const char * program) {
memcpy(m_buffer, program, k_bufferSize);
}
}

22
apps/code/program.h Normal file
View File

@@ -0,0 +1,22 @@
#ifndef CODE_PROGRAM_H
#define CODE_PROGRAM_H
#include <escher.h>
namespace Code {
class Program {
public:
Program();
const char * readOnlyContent() const;
char * editableContent();
void setContent(const char * program);
private:
constexpr static int k_bufferSize = 1024;
char m_buffer[k_bufferSize];
};
}
#endif