diff --git a/apps/code/Makefile b/apps/code/Makefile index 680f1e1f5..b5fc02884 100644 --- a/apps/code/Makefile +++ b/apps/code/Makefile @@ -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 diff --git a/apps/code/app.cpp b/apps/code/app.cpp index ab817c88b..c22ae73f9 100644 --- a/apps/code/app.cpp +++ b/apps/code/app.cpp @@ -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), diff --git a/apps/code/app.h b/apps/code/app.h index d8ca9edf5..dd2e18320 100644 --- a/apps/code/app.h +++ b/apps/code/app.h @@ -3,6 +3,7 @@ #include #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); diff --git a/apps/code/program.cpp b/apps/code/program.cpp new file mode 100644 index 000000000..a335f743d --- /dev/null +++ b/apps/code/program.cpp @@ -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); +} + +} diff --git a/apps/code/program.h b/apps/code/program.h new file mode 100644 index 000000000..810e675aa --- /dev/null +++ b/apps/code/program.h @@ -0,0 +1,22 @@ +#ifndef CODE_PROGRAM_H +#define CODE_PROGRAM_H + +#include + +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 +