diff options
Diffstat (limited to 'lib/debugger/src/dbg_ui_interpret.erl')
-rw-r--r-- | lib/debugger/src/dbg_ui_interpret.erl | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/lib/debugger/src/dbg_ui_interpret.erl b/lib/debugger/src/dbg_ui_interpret.erl deleted file mode 100644 index 73392d40cb..0000000000 --- a/lib/debugger/src/dbg_ui_interpret.erl +++ /dev/null @@ -1,161 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2011. 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(dbg_ui_interpret). - --include_lib("kernel/include/file.hrl"). - -%% External exports --export([start/4]). - -%% Internal exports --export([init/6]). - --record(state, {gs, % term() Graphics system id - win, % term() Interpret dialog window data - monitor, % pid() Monitor pid - mode % local | global - }). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% start(GS, Pos, Dir, Mode) -%% GS = Graphics system id -%% Dir = string() -%% Pos = {X,Y} -%% Mode = local | global -%%-------------------------------------------------------------------- -start(GS, Pos, Dir, Mode) -> - Title = "Interpret Dialog", - case dbg_ui_winman:is_started(Title) of - true -> ignore; - false -> - spawn(?MODULE, init, [self(), GS, Pos, Title, Dir, Mode]) - end. - -%%==================================================================== -%% Internal exports -%%==================================================================== - -init(Monitor, GS, Pos, Title, Dir, Mode) -> - Filter = filename:join(Dir, "*.erl"), - Extra = fun(File) -> - case int:interpretable(File) of - true -> - ModS = filename:basename(File, ".erl"), - Mod = list_to_atom(ModS), - case int:file(Mod) of - File -> {true, tag}; - _ -> true % {error,not_loaded} | File2 - end; - _Error -> {true,disable} - end - end, - - %% Create interpret dialog window - Win = dbg_ui_filedialog_win:create_win(GS, Title, Pos, multiselect, - Filter, Extra), - Window = dbg_ui_filedialog_win:get_window(Win), - dbg_ui_winman:insert(Title, Window), - - State = #state{gs=GS, win=Win, monitor=Monitor, mode=Mode}, - loop(State). - - -%%==================================================================== -%% Main loop and message handling -%%==================================================================== - -loop(State) -> - receive - - %% From the GUI - GuiEvent when is_tuple(GuiEvent), element(1, GuiEvent)==gs -> - Cmd = dbg_ui_filedialog_win:handle_event(GuiEvent, - State#state.win), - State2 = gui_cmd(Cmd, State), - loop(State2); - - %% From the dbg_ui_winman process (Debugger window manager) - {dbg_ui_winman, update_windows_menu, _Data} -> - loop(State); - {dbg_ui_winman, destroy} -> - exit(normal) - end. - -gui_cmd(ignore, State) -> - State; -gui_cmd({stopped, Dir}, State) -> - State#state.monitor ! {dbg_ui_interpret, Dir}, - exit(normal); -gui_cmd({win, Win}, State) -> - State#state{win=Win}; -gui_cmd({select, File}, State) -> - Res = case State#state.mode of - local -> int:i(File); - global -> int:ni(File) - end, - - case Res of - %% Interpretation succeeded, tag the file name - {module, _Mod} -> - dbg_ui_filedialog_win:tag(State#state.win, File); - - %% Interpretation failed - error -> - Error = format_error(int:interpretable(File)), - Msg = ["Error when interpreting:", File, Error], - Window = dbg_ui_filedialog_win:get_window(State#state.win), - tool_utils:notify(Window, Msg) - end, - State; -gui_cmd({multiselect, Dir, FileNames}, State) -> - interpret_all(State, Dir, FileNames), - State. - -interpret_all(State, Dir, [File0|Files]) -> - File = filename:join(Dir, File0), - Res = case State#state.mode of - local -> int:i(File); - global -> int:ni(File) - end, - case Res of - {module, _Mod} -> - dbg_ui_filedialog_win:tag(State#state.win, File), - interpret_all(State, Dir, Files); - error -> - Window = dbg_ui_filedialog_win:get_window(State#state.win), - Error = format_error(int:interpretable(File)), - Msg = ["Error when interpreting:", File, Error, - "OK to continue?"], - case tool_utils:confirm(Window, Msg) of - ok -> interpret_all(State, Dir, Files); - cancel -> true - end - end; -interpret_all(_State, _Dir, []) -> - true. - -format_error({error,no_beam}) -> "No BEAM file"; -format_error({error,no_debug_info}) -> "No debug_info in BEAM file"; -format_error({error,badarg}) -> "File does not exist"; -format_error({error,{app,App}}) -> - "Cannot interpret "++atom_to_list(App)++" modules". |