From 1b69cd09de1e70d36cbca5f0c4a3f289ec684343 Mon Sep 17 00:00:00 2001 From: s-ol Date: Mon, 2 Dec 2019 21:33:28 +0100 Subject: more janet bindings --- src/livecode/context.h | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'src/livecode/context.h') diff --git a/src/livecode/context.h b/src/livecode/context.h index fb6b59ff7..4ebb73609 100644 --- a/src/livecode/context.h +++ b/src/livecode/context.h @@ -16,6 +16,8 @@ #include <2geom/point.h> #include <2geom/rect.h> #include +#include +#include #include #include "xml/repr.h" @@ -26,15 +28,30 @@ class SPDocument; class SPItem; -namespace Gio { -class File; -}; - namespace Inkscape { namespace Livecode { class Mouse; +class Script { +public: + Script(JanetTable *env, std::string const &path); + + void frame(); + void commit(); + +private: + JanetTable *env; + JanetFunction *function; + Glib::RefPtr file; + Glib::RefPtr monitor; + + void reload(); + void file_changed(const Glib::RefPtr& file, + const Glib::RefPtr& other_file, + Gio::FileMonitorEvent event); +}; + class Context { public: Context(SPDesktop *desktop); @@ -54,8 +71,7 @@ public: void draw_ui(Glib::ustring const &id, Inkscape::XML::Node *item); void push_event(GdkEvent *event); - void setup_frame(); - void finish_frame(); + void frame(); inline Geom::Affine ui2dt() const { return doc_root->i2doc_affine(); @@ -81,13 +97,15 @@ public: void load_script(Glib::ustring const &path); private: + void setup_frame(); + void finish_frame(); + SPDesktop *desktop; SPItem *doc_root, *ui_root; JanetTable *env; - JanetFunction *script_function; - Glib::RefPtr script_file; + std::unique_ptr