summaryrefslogtreecommitdiffstats
path: root/src/core/ephraim_gui.erl
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2010-07-11 12:04:48 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2010-07-11 12:04:48 +0200
commit80ea35c67df70b6fd4f444c6f932b355ee245396 (patch)
tree8fc5719912fedf7b6cfdef3b02520a12eb2dce51 /src/core/ephraim_gui.erl
parentad56d57251f67ac416ff7ad71a76f30836d2ccb3 (diff)
downloadephraim-80ea35c67df70b6fd4f444c6f932b355ee245396.tar
ephraim-80ea35c67df70b6fd4f444c6f932b355ee245396.zip
Migrated from erl_interface to Eva
Diffstat (limited to 'src/core/ephraim_gui.erl')
-rw-r--r--src/core/ephraim_gui.erl28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/core/ephraim_gui.erl b/src/core/ephraim_gui.erl
new file mode 100644
index 0000000..79433e0
--- /dev/null
+++ b/src/core/ephraim_gui.erl
@@ -0,0 +1,28 @@
+-module(ephraim_gui).
+-compile([debug_info, export_all]).
+
+-spec init() -> ok.
+init() ->
+ Port = open_port({spawn_executable, "ephraim-gtk"}, [binary, nouse_stdio, {packet, 4}]),
+ ephraim ! {register_ui, self()},
+ loop(Port),
+ ephraim ! {unregister_ui, self()}.
+
+-spec loop(port()) -> ok.
+loop(Port) ->
+ receive
+ stop ->
+ ok;
+ {Port, {data, Data}} ->
+ Msg = binary_to_term(Data),
+ case Msg of
+ stop ->
+ ok;
+ _ ->
+ ephraim ! Msg,
+ loop(Port)
+ end;
+ Msg ->
+ Port ! {self(), {command, term_to_binary(Msg)}},
+ loop(Port)
+ end.