summaryrefslogtreecommitdiffstats
path: root/src/core/ephraim_gui.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ephraim_gui.erl')
-rw-r--r--src/core/ephraim_gui.erl62
1 files changed, 38 insertions, 24 deletions
diff --git a/src/core/ephraim_gui.erl b/src/core/ephraim_gui.erl
index b049da3..92ab521 100644
--- a/src/core/ephraim_gui.erl
+++ b/src/core/ephraim_gui.erl
@@ -1,29 +1,43 @@
-module(ephraim_gui).
--compile([debug_info, export_all]).
+-behaviour(gen_event).
+-export([start/0, stop/0]).
+-export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, code_change/3]).
--spec init() -> ok.
-init() ->
- %{jid,JID} = ephraim_config:get(jid),
+start() ->
+ gen_event:add_handler(ephraim_event_man, ?MODULE, []).
+stop() ->
+ gen_event:delete_handler(ephraim_event_man, ?MODULE, []).
+
+-spec init(term()) -> ok.
+init(_Args) ->
Port = open_port({spawn_executable, "ephraim-gtk"}, [binary, nouse_stdio, {packet, 4}]),
- ephraim ! {register_ui, self()},
- loop(Port),
- ephraim ! {unregister_ui, self()}.
+ {ok, Port}.
+
+handle_event({view_update, Msg}, Port) ->
+ Port ! {self(), {command, term_to_binary(Msg)}},
+ {ok, Port};
+
+handle_event(_Event, Port) ->
+ {ok, Port}.
--spec loop(port()) -> ok.
-loop(Port) ->
- receive
+handle_call(_Msg, Port) ->
+ {noreply, Port}.
+
+handle_info({Port, {data, Data}}, Port) ->
+ Msg = binary_to_term(Data),
+ case Msg of
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.
+ init:stop(),
+ remove_handler;
+ _ ->
+ ephraim:notify({view_event, Msg}),
+ {ok, Port}
+ end;
+
+handle_info(_Msg, Port) ->
+ {ok, Port}.
+
+terminate(_Reason, _Port) ->
+ ok.
+code_change(_OldVersion, Port, _Extra) ->
+ {ok, Port}.