aboutsummaryrefslogtreecommitdiffstats
path: root/lib/pman/src/pman_buf_printer.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pman/src/pman_buf_printer.erl')
-rw-r--r--lib/pman/src/pman_buf_printer.erl89
1 files changed, 89 insertions, 0 deletions
diff --git a/lib/pman/src/pman_buf_printer.erl b/lib/pman/src/pman_buf_printer.erl
new file mode 100644
index 0000000000..74e935171a
--- /dev/null
+++ b/lib/pman/src/pman_buf_printer.erl
@@ -0,0 +1,89 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(pman_buf_printer).
+
+%%-compile(export_all).
+-export([init/2]).
+
+
+-include("pman_buf.hrl").
+
+%% ---------------------------------------------------------------
+%% Starts the part of the buffer which regulates the flow of data to
+%% be printed in the pid editors
+
+
+init(Editor,Buffer_pid) ->
+ Buffer_pid!{printer,send},
+ printer_loop(Editor,Buffer_pid).
+
+printer_loop(Editor,Buffer_pid)->
+ receive
+ {save_buffer,Name} ->
+ gs:config(Editor,{save,Name}),
+ TT = "Buffer saved in file\n" ++ Name,
+ pman_win:dialog_window(gs:start(),TT),
+ printer_loop(Editor,Buffer_pid);
+ {buffer,Trace} ->
+ case lists:flatlength(Trace) of
+ Len when Len > ?MAX_OUTPUT ->
+ printer_long(lists:flatten(Trace),Editor),
+ Buffer_pid!{printer,send},
+ printer_loop(Editor,Buffer_pid);
+ _ ->
+ Buffer_pid!{printer,send},
+ print_trace(Editor,Trace),
+ printer_loop(Editor,Buffer_pid)
+ end;
+ clear ->
+ pman_win:configeditor(Editor, [{enable, true}]),
+ pman_win:configeditor(Editor,clear),
+ pman_win:configeditor(Editor, [{enable, false}]),
+ printer_loop(Editor,Buffer_pid);
+ _Other ->
+ printer_loop(Editor,Buffer_pid)
+ end.
+
+printer_long([],_) -> ok;
+printer_long(Trace,Editor) ->
+ receive
+ clear ->
+ pman_win:configeditor(Editor, [{enable, true}]),
+ pman_win:configeditor(Editor,clear),
+ pman_win:configeditor(Editor, [{enable, false}])
+ after 0 ->
+ {_Length,Rest,Print} = pman_buf_utils:split(Trace,
+ ?MAX_OUTPUT,
+ 0,
+ []),
+ print_trace(Editor,Print),
+ printer_long(Rest,Editor)
+ end.
+
+
+
+%% ---------------------------------------------------------------
+%% Function which print trace messages on the window
+%% ---------------------------------------------------------------
+
+print_trace(Editor,Elements) ->
+ pman_win:configeditor(Editor, [{enable, true}]),
+ pman_win:configeditor(Editor, [{insert, {'end',Elements}}]),
+ pman_win:configeditor(Editor, [{enable, false}]).