aboutsummaryrefslogtreecommitdiffstats
path: root/lib/debugger/src/dbg_ui_win.erl
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2013-12-20 10:44:42 +0100
committerDan Gudmundsson <[email protected]>2013-12-20 10:44:42 +0100
commit6f0b3bd3fc28de703490470630922873775c97f5 (patch)
tree520b662b4459499e8c58b658285368d81334d326 /lib/debugger/src/dbg_ui_win.erl
parent0b68c48630311c5c97db50159c3076fa5b17a43d (diff)
parent560f73141afbc1ef41d6c8acb3974b3632ad6f25 (diff)
downloadotp-6f0b3bd3fc28de703490470630922873775c97f5.tar.gz
otp-6f0b3bd3fc28de703490470630922873775c97f5.tar.bz2
otp-6f0b3bd3fc28de703490470630922873775c97f5.zip
Merge branch 'dgud/remove-gs-apps/OTP-10915'
Diffstat (limited to 'lib/debugger/src/dbg_ui_win.erl')
-rw-r--r--lib/debugger/src/dbg_ui_win.erl281
1 files changed, 0 insertions, 281 deletions
diff --git a/lib/debugger/src/dbg_ui_win.erl b/lib/debugger/src/dbg_ui_win.erl
deleted file mode 100644
index 1c7a80a1c4..0000000000
--- a/lib/debugger/src/dbg_ui_win.erl
+++ /dev/null
@@ -1,281 +0,0 @@
-%%
-%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2002-2012. 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_win).
--compile([{nowarn_deprecated_function,{gs,config,2}},
- {nowarn_deprecated_function,{gs,destroy,1}},
- {nowarn_deprecated_function,{gs,menu,2}},
- {nowarn_deprecated_function,{gs,menu,3}},
- {nowarn_deprecated_function,{gs,menubutton,2}},
- {nowarn_deprecated_function,{gs,menuitem,2}},
- {nowarn_deprecated_function,{gs,menuitem,3}},
- {nowarn_deprecated_function,{gs,read,2}},
- {nowarn_deprecated_function,{gs,start,1}}]).
-
-%% External exports
--export([init/0,
- font/1, min_size/3, min_size/4,
- create_menus/2, select/2, selected/1,
- add_break/2, update_break/2, delete_break/1,
- motion/2
- ]).
-
--record(break, {mb, smi, emi, dimi, demi}).
-
-%%====================================================================
-%% External exports
-%%====================================================================
-
-%%--------------------------------------------------------------------
-%% init() -> GS
-%% GS = term()
-%%--------------------------------------------------------------------
-init() ->
- gs:start([{kernel, true}]).
-
-%%--------------------------------------------------------------------
-%% font(Style) -> Font
-%% Style = normal | bold
-%% Select a suitable font. Defaults to {screen,12} and, if it does not
-%% exist, {courier,12}.
-%%--------------------------------------------------------------------
-font(Style) ->
- GS = init(),
- Style2 = if
- Style =:= normal -> [];
- true -> [Style]
- end,
- case gs:read(GS, {choose_font, {screen,Style2,12}}) of
- Font when element(1, Font) =:= screen ->
- Font;
- _ ->
- gs:read(GS, {choose_font, {courier,Style2,12}})
- end.
-
-%%--------------------------------------------------------------------
-%% min_size(Strings, MinW, MinH) -> {W, H}
-%% min_size(Font, Strings, MinW, MinH) -> {W, H}
-%% Font = GS font - defaults to dbg_ui_win:font(normal)
-%% Strings = [string()]
-%% MinW = MinH = int()
-%% W = H = int()
-%%--------------------------------------------------------------------
-min_size(Strings, MinW, MinH) ->
- min_size(font(normal), Strings, MinW, MinH).
-
-min_size(Font, Strings, MinW, MinH) ->
- GS = init(),
- min_size(GS, Font, Strings, MinW, MinH).
-
-min_size(GS, Font, [String|Strings], MinW, MinH) ->
- {W, H} = gs:read(GS, {font_wh, {Font, String}}),
- min_size(GS, Font, Strings, erlang:max(MinW, W), erlang:max(MinH, H));
-min_size(_GS, _Font, [], W, H) ->
- {W, H}.
-
-%%--------------------------------------------------------------------
-%% create_menus(MenuBar, [Menu])
-%% MenuBar = gsobj()
-%% Menu = {Name, [Item]}
-%% Name = atom()
-%% Item = {Name, N} | {Name, N, Type} | {Name, N, cascade, [Item]}
-%% | separator
-%% N = no | integer()
-%% Type = check | radio
-%% Create the specified menus and menuitems.
-%%
-%% Normal menuitems are specified as {Name, N}. Generates the event:
-%% {gs, _Id, click, {menuitem, Name}, _Arg}
-%%
-%% Check and radio menuitems are specified as {Name, N, check|radio}.
-%% They are assumed to be children to a cascade menuitem! (And all children
-%% to one cascade menuitem are assumed to be either check OR radio
-%% menuitems)!
-%% Selecting a check/radio menuitem generates the event:
-%% {gs, _Id, click, {menu, Menu}, _Arg}
-%% where Menu is the name of the parent, the cascade menuitem.
-%% Use selected(Menu) to retrieve which check/radio menuitems are
-%% selected.
-%%--------------------------------------------------------------------
-create_menus(MenuBar, [{Title, Items}|Menus]) ->
- Title2 = " "++(atom_to_list(Title))++" ",
- MenuBtn = gs:menubutton(MenuBar, [{label, {text,Title2}},
- {font, font(normal)}]),
- case Title of
- 'Help' -> gs:config(MenuBtn, {side, right});
- _ -> ignore
- end,
- Menu = gs:menu(Title, MenuBtn, []),
- create_items(Menu, Items, Title),
- create_menus(MenuBar, Menus);
-create_menus(_MenuBar, []) ->
- done.
-
-create_items(Menu, [Item|Items], Group) ->
- create_item(Menu, Item, Group),
- create_items(Menu, Items, Group);
-create_items(_Menu, [], _Group) ->
- done.
-
-create_item(Menu, {Name, _N, cascade, Items}, _Group) ->
- MenuBtn = gs:menuitem(Menu, [{label, {text,Name}},
- {font, font(normal)},
- {itemtype, cascade}]),
- SubMenu = gs:menu(Name, MenuBtn, []),
- create_items(SubMenu, Items, Name);
-create_item(Menu, separator, _Group) ->
- gs:menuitem(Menu, [{itemtype, separator}]);
-create_item(Menu, MenuItem, Group) ->
- Options = case MenuItem of
- {Name, N} ->
- [{data, {menuitem,Name}}];
- {Name, N, check} ->
- [{itemtype, check}, {data, {menu, Group}}];
- {Name, N, radio} ->
- [{itemtype, radio}, {data, {menu, Group}},
- {group, group(Group)}]
- end,
- gs:menuitem(Name, Menu, [{label, {text,Name}},
- {font, font(normal)} | Options]),
- if
- is_integer(N) -> gs:config(Name, {underline, N});
- true -> ignore
- end.
-
-%% When grouping radio buttons, the group id must be an atom unique for
-%% each window.
-group(Group) ->
- list_to_atom(atom_to_list(Group)++pid_to_list(self())).
-
-%%--------------------------------------------------------------------
-%% select(MenuItem, Bool)
-%% MenuItem = atom()
-%% Bool = boolean()
-%%--------------------------------------------------------------------
-select(MenuItem, Bool) ->
- gs:config(MenuItem, {select, Bool}).
-
-%%--------------------------------------------------------------------
-%% selected(Menu) -> [Name]
-%% Menu = Name = atom()
-%%--------------------------------------------------------------------
-selected(Menu) ->
- Children = gs:read(Menu, children),
- Selected = [gs:read(Child, select) || Child <- Children],
- lists:map(fun(Child) ->
- {text, Name} = gs:read(Child, label),
- list_to_atom(Name)
- end,
- Selected).
-
-%%--------------------------------------------------------------------
-%% add_break(Name, Point) -> #break{}
-%% Name = atom()
-%% Point = {Mod, Line}
-%% The break will generate the following events:
-%% {gs, _Id, click, {break, Point, Event}, _Arg}
-%% Event = delete | {trigger, Action} | {status, Status}
-%% Action = enable | disable | delete
-%% Status = active | inactive
-%%--------------------------------------------------------------------
-add_break(Menu, Point) ->
- Font = font(normal),
-
- %% Create a name for the breakpoint
- {Mod, Line} = Point,
- Label = io_lib:format("~w ~5w", [Mod, Line]),
-
- %% Create a menu for the breakpoint
- MenuBtn = gs:menuitem(Menu, [{label, {text,Label}}, {font, Font},
- {itemtype, cascade}]),
- SubMenu = gs:menu(MenuBtn, []),
- SMI = gs:menuitem(SubMenu, [{data, {break,Point,null}}]),
- gs:menuitem(SubMenu, [{label, {text,"Delete"}}, {font, Font},
- {data, {break,Point,delete}}]),
- TriggerMenuBtn = gs:menuitem(SubMenu,
- [{label,{text,"Trigger Action"}},
- {font, Font},
- {itemtype, cascade}]),
- TriggerMenu = gs:menu(TriggerMenuBtn, []),
- Group = element(3, erlang:now()),
- EMI = gs:menuitem(TriggerMenu, [{label, {text,"Enable"}},
- {font, Font},
- {itemtype, radio}, {group, Group},
- {data,
- {break,Point,{trigger,enable}}}]),
- DiMI = gs:menuitem(TriggerMenu, [{label, {text,"Disable"}},
- {font, Font},
- {itemtype, radio}, {group, Group},
- {data,
- {break,Point,{trigger,disable}}}]),
- DeMI = gs:menuitem(TriggerMenu, [{label, {text,"Delete"}},
- {font, Font},
- {itemtype, radio}, {group, Group},
- {data,
- {break,Point,{trigger,delete}}}]),
-
- #break{mb=MenuBtn, smi=SMI, emi=EMI, dimi=DiMI, demi=DeMI}.
-
-%%--------------------------------------------------------------------
-%% update_break(Break, Options)
-%% Break = #break{}
-%% Options = [Status, Action, Mods, Cond]
-%% Status = active | inactive
-%% Action = enable | disable | delete
-%% Mods = null (not used)
-%% Cond = null | {Mod, Func}
-%%--------------------------------------------------------------------
-update_break(Break, Options) ->
- [Status, Trigger|_] = Options,
- {break, Point, _Status} = gs:read(Break#break.smi, data),
-
- {Label, Data} = case Status of
- active ->
- {"Disable", {break,Point,{status,inactive}}};
- inactive ->
- {"Enable", {break,Point,{status,active}}}
- end,
- gs:config(Break#break.smi, [{label, {text,Label}},
- {font, font(normal)},
- {data, Data}]),
-
- TriggerMI = case Trigger of
- enable -> Break#break.emi;
- disable -> Break#break.dimi;
- delete -> Break#break.demi
- end,
- gs:config(TriggerMI, {select, true}).
-
-%%--------------------------------------------------------------------
-%% delete_break(Break)
-%% Break = #break{}
-%%--------------------------------------------------------------------
-delete_break(Break) ->
- gs:destroy(Break#break.mb).
-
-%%--------------------------------------------------------------------
-%% motion(X, Y) -> {X, Y}
-%% X = Y = integer()
-%%--------------------------------------------------------------------
-motion(X, Y) ->
- receive
- {gs, _Id, motion, _Data, [NX,NY]} ->
- motion(NX, NY)
- after 0 ->
- {X, Y}
- end.