aboutsummaryrefslogtreecommitdiffstats
path: root/lib/gs/src/gse.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gs/src/gse.erl')
-rw-r--r--lib/gs/src/gse.erl725
1 files changed, 725 insertions, 0 deletions
diff --git a/lib/gs/src/gse.erl b/lib/gs/src/gse.erl
new file mode 100644
index 0000000000..b3ea2af4d4
--- /dev/null
+++ b/lib/gs/src/gse.erl
@@ -0,0 +1,725 @@
+%%
+%% %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%
+%%
+
+%%
+%%%----------------------------------------------------------------------
+%%% Purpose : Wrapper library for GS to provide proper error handling
+%%%----------------------------------------------------------------------
+
+-module(gse).
+
+%%-compile(export_all).
+-export([
+ start/0,
+ start/1,
+ create/3,
+ create_named/4,
+ config/2,
+ read/2,
+ destroy/1,
+ create_tree/2,
+ window/2,
+ named_window/3,
+ button/2,
+ named_button/3,
+ checkbutton/2,
+ named_checkbutton/3,
+ radiobutton/2,
+ named_radiobutton/3,
+ frame/2,
+ named_frame/3,
+ canvas/2,
+ named_canvas/3,
+ label/2,
+ named_label/3,
+ message/2,
+ named_message/3,
+ listbox/2,
+ named_listbox/3,
+ entry/2,
+ named_entry/3,
+ scrollbar/2,
+ named_scrollbar/3,
+ scale/2,
+ named_scale/3,
+ editor/2,
+ named_editor/3,
+ prompter/2,
+ named_prompter/3,
+ line/2,
+ named_line/3,
+ oval/2,
+ named_oval/3,
+ rectangle/2,
+ named_rectangle/3,
+ polygon/2,
+ named_polygon/3,
+ text/2,
+ named_text/3,
+ image/2,
+ named_image/3,
+ arc/2,
+ named_arc/3,
+ menu/2,
+ named_menu/3,
+ menubutton/2,
+ named_menubutton/3,
+ menubar/2,
+ named_menubar/3,
+ menuitem/2,
+ named_menuitem/3,
+ grid/2,
+ named_grid/3,
+ gridline/2,
+ named_gridline/3,
+ %% Convenience functions
+ enable/1,
+ disable/1,
+ select/1,
+ deselect/1,
+ map/1,
+ unmap/1,
+ resize/3,
+ name_occupied/1
+
+ ]).
+
+
+%%
+%% gse:start()
+%% Returns:
+%% An identifier to a top object for the graphic system
+%%
+%% Errors:
+%% Exits with a {?MODULE,start,Reason} if there is a problem
+%% creating the top level graphic object.
+%%
+
+
+start() ->
+ case gs:start() of
+ {error,Reason} ->
+ exit({?MODULE, start,Reason});
+ Return -> Return
+ end.
+
+%%
+%% gse:start(Opts)
+%% Returns:
+%% An identifier to a top object for the graphic system
+%%
+%% Errors:
+%% Exits with a {?MODULE,start,Reason} if there is a problem
+%% creating the top level graphic object.
+%%
+
+
+start(Opts) ->
+ case gs:start(Opts) of
+ {error,Reason} ->
+ exit({?MODULE, start,Reason});
+ Return -> Return
+ end.
+
+%%
+%% gse:create(Objtype,Parent,Opts) replaces
+%% the unnecessary functions:
+%% gs:create(Obj,Parent)
+%% gs:create(Obj,Parent,Opt)
+%% gs:create(Obj,Parent)
+%% gs:create(Obj,Parent)
+%%
+%% Returns:
+%% An identifier for the created object
+%%
+%% Errors: {?MODULE, create, Reason}, where Reason is one of:
+%% {no_such_parent, Parent}
+%% {unknown_type, Type}
+%% {incvalid_option, Type, {Option,Value}}
+%%
+%%
+create(Objtype,Parent,Opts) when is_list(Opts) ->
+ case gs:create(Objtype,Parent,Opts) of
+ {error,Reason} ->
+ exit({?MODULE, create,Reason});
+ Return -> Return
+ end.
+
+
+%%
+%% gse:create_named(Name, Objtype,Parent, Opts) replaces
+%% the confusing
+%% gs:create(Name,Objtype, Parent, Opts)
+%%
+%% Returns:
+%% An identifier for the created object
+%%
+%% Errors: {?MODULE, create, Reason}, where Reason is one of:
+%% {no_such_parent, Parent}
+%% {unknown_type, Type}
+%% {incvalid_option, Type, {Option,Value}}
+%% {name_occupied,Name}
+%%
+
+create_named(Name,Objtype,Parent,Opts) when is_list(Opts) ->
+ case gs:create(Objtype,Name,Parent,Opts) of
+ {error,Reason} ->
+ exit({?MODULE, create_named,Reason});
+ Return -> Return
+ end.
+
+
+
+%%
+%% gse:config(Object, Options) replaces
+%% the unnecessary
+%% gs:config(Object, Opt)
+%%
+
+config(Object,Opts) when is_list(Opts) ->
+ case gs:config(Object,Opts) of
+ {error,Reason} ->
+ exit({?MODULE, config,Reason});
+ Return -> Return
+ end.
+
+%%
+%% gs:read(Object, OptionKey)
+%%
+read(Object,OptionKey) ->
+ case gs:read(Object,OptionKey) of
+ {error,Reason} ->
+ exit({?MODULE, read,Reason});
+ Return -> Return
+ end.
+
+%%
+%% gs:destroy(Object)
+%%
+
+destroy(Object)->
+ case gs:destroy(Object) of
+ {error,Reason} ->
+ exit({?MODULE, destroy,Reason});
+ Return -> Return
+ end.
+
+%%
+%% gs:create_tree
+%%
+
+create_tree(Parent, Tree)->
+ case gs:create_tree(Parent,Tree) of
+ {error,Reason} ->
+ exit({?MODULE, create_tree,Reason});
+ Return -> Return
+ end.
+
+
+window(Parent,Options) when is_list(Options) ->
+ case gs:window(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,window,Reason});
+ Return -> Return
+ end.
+
+named_window(Name,Parent,Options) when is_list(Options) ->
+ case gs:window(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_window,Reason});
+ Return -> Return
+ end.
+
+
+button(Parent,Options) when is_list(Options) ->
+ case gs:button(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,button,Reason});
+ Return -> Return
+ end.
+
+
+named_button(Name,Parent,Options) when is_list(Options) ->
+ case gs:button(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_button,Reason});
+ Return -> Return
+ end.
+
+
+checkbutton(Parent,Options) when is_list(Options) ->
+ case gs:checkbutton(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,checkbutton,Reason});
+ Return -> Return
+ end.
+
+
+named_checkbutton(Name,Parent,Options) when is_list(Options) ->
+ case gs:checkbutton(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_checkbutton,Reason});
+ Return -> Return
+ end.
+
+
+radiobutton(Parent,Options) when is_list(Options) ->
+ case gs:radiobutton(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,radiobutton,Reason});
+ Return -> Return
+ end.
+
+
+named_radiobutton(Name,Parent,Options) when is_list(Options) ->
+ case gs:radiobutton(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_radiobutton,Reason});
+ Return -> Return
+ end.
+
+
+frame(Parent,Options) when is_list(Options) ->
+ case gs:frame(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,frame,Reason});
+ Return -> Return
+ end.
+
+
+named_frame(Name,Parent,Options) when is_list(Options) ->
+ case gs:frame(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_frame,Reason});
+ Return -> Return
+ end.
+
+
+canvas(Parent,Options) when is_list(Options) ->
+ case gs:canvas(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,canvas,Reason});
+ Return -> Return
+ end.
+
+
+named_canvas(Name,Parent,Options) when is_list(Options) ->
+ case gs:canvas(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_canvas,Reason});
+ Return -> Return
+ end.
+
+
+label(Parent,Options) when is_list(Options) ->
+ case gs:label(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,label,Reason});
+ Return -> Return
+ end.
+
+
+named_label(Name,Parent,Options) when is_list(Options) ->
+ case gs:label(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_label,Reason});
+ Return -> Return
+ end.
+
+
+message(Parent,Options) when is_list(Options) ->
+ case gs:message(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,message,Reason});
+ Return -> Return
+ end.
+
+
+named_message(Name,Parent,Options) when is_list(Options) ->
+ case gs:message(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_message,Reason});
+ Return -> Return
+ end.
+
+
+listbox(Parent,Options) when is_list(Options) ->
+ case gs:listbox(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,listbox,Reason});
+ Return -> Return
+ end.
+
+
+named_listbox(Name,Parent,Options) when is_list(Options) ->
+ case gs:listbox(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_listbox,Reason});
+ Return -> Return
+ end.
+
+
+entry(Parent,Options) when is_list(Options) ->
+ case gs:entry(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,entry,Reason});
+ Return -> Return
+ end.
+
+
+named_entry(Name,Parent,Options) when is_list(Options) ->
+ case gs:entry(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_entry,Reason});
+ Return -> Return
+ end.
+
+
+scrollbar(Parent,Options) when is_list(Options) ->
+ case gs:scrollbar(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,scrollbar,Reason});
+ Return -> Return
+ end.
+
+
+named_scrollbar(Name,Parent,Options) when is_list(Options) ->
+ case gs:scrollbar(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_scrollbar,Reason});
+ Return -> Return
+ end.
+
+
+scale(Parent,Options) when is_list(Options) ->
+ case gs:scale(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,scale,Reason});
+ Return -> Return
+ end.
+
+
+named_scale(Name,Parent,Options) when is_list(Options) ->
+ case gs:scale(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_scale,Reason});
+ Return -> Return
+ end.
+
+
+editor(Parent,Options) when is_list(Options) ->
+ case gs:editor(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,editor,Reason});
+ Return -> Return
+ end.
+
+
+named_editor(Name,Parent,Options) when is_list(Options) ->
+ case gs:editor(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_editor,Reason});
+ Return -> Return
+ end.
+
+
+prompter(Parent,Options) when is_list(Options) ->
+ case gs:prompter(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,prompter,Reason});
+ Return -> Return
+ end.
+
+
+named_prompter(Name,Parent,Options) when is_list(Options) ->
+ case gs:prompter(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_prompter,Reason});
+ Return -> Return
+ end.
+
+
+line(Parent,Options) when is_list(Options) ->
+ case gs:line(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,line,Reason});
+ Return -> Return
+ end.
+
+
+named_line(Name,Parent,Options) when is_list(Options) ->
+ case gs:line(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_line,Reason});
+ Return -> Return
+ end.
+
+
+oval(Parent,Options) when is_list(Options) ->
+ case gs:oval(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,oval,Reason});
+ Return -> Return
+ end.
+
+
+named_oval(Name,Parent,Options) when is_list(Options) ->
+ case gs:oval(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_oval,Reason});
+ Return -> Return
+ end.
+
+
+rectangle(Parent,Options) when is_list(Options) ->
+ case gs:rectangle(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,rectangle,Reason});
+ Return -> Return
+ end.
+
+
+named_rectangle(Name,Parent,Options) when is_list(Options) ->
+ case gs:rectangle(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_rectangle,Reason});
+ Return -> Return
+ end.
+
+
+polygon(Parent,Options) when is_list(Options) ->
+ case gs:polygon(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,polygon,Reason});
+ Return -> Return
+ end.
+
+
+named_polygon(Name,Parent,Options) when is_list(Options) ->
+ case gs:polygon(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_polygon,Reason});
+ Return -> Return
+ end.
+
+
+text(Parent,Options) when is_list(Options) ->
+ case gs:text(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,text,Reason});
+ Return -> Return
+ end.
+
+
+named_text(Name,Parent,Options) when is_list(Options) ->
+ case gs:text(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_text,Reason});
+ Return -> Return
+ end.
+
+
+image(Parent,Options) when is_list(Options) ->
+ case gs:image(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,image,Reason});
+ Return -> Return
+ end.
+
+
+named_image(Name,Parent,Options) when is_list(Options) ->
+ case gs:image(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_image,Reason});
+ Return -> Return
+ end.
+
+
+arc(Parent,Options) when is_list(Options) ->
+ case gs:arc(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,arc,Reason});
+ Return -> Return
+ end.
+
+
+named_arc(Name,Parent,Options) when is_list(Options) ->
+ case gs:arc(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_arc,Reason});
+ Return -> Return
+ end.
+
+
+menu(Parent,Options) when is_list(Options) ->
+ case gs:menu(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,menu,Reason});
+ Return -> Return
+ end.
+
+
+named_menu(Name,Parent,Options) when is_list(Options) ->
+ case gs:menu(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_menu,Reason});
+ Return -> Return
+ end.
+
+
+menubutton(Parent,Options) when is_list(Options) ->
+ case gs:menubutton(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,menubutton,Reason});
+ Return -> Return
+ end.
+
+
+named_menubutton(Name,Parent,Options) when is_list(Options) ->
+ case gs:menubutton(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_menubutton,Reason});
+ Return -> Return
+ end.
+
+
+menubar(Parent,Options) when is_list(Options) ->
+ case gs:menubar(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,menubar,Reason});
+ Return -> Return
+ end.
+
+
+named_menubar(Name,Parent,Options) when is_list(Options) ->
+ case gs:menubar(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_menubar,Reason});
+ Return -> Return
+ end.
+
+
+menuitem(Parent,Options) when is_list(Options) ->
+ case gs:menuitem(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,menuitem,Reason});
+ Return -> Return
+ end.
+
+
+named_menuitem(Name,Parent,Options) when is_list(Options) ->
+ case gs:menuitem(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_menuitem,Reason});
+ Return -> Return
+ end.
+
+
+grid(Parent,Options) when is_list(Options) ->
+ case gs:grid(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,grid,Reason});
+ Return -> Return
+ end.
+
+
+named_grid(Name,Parent,Options) when is_list(Options) ->
+ case gs:grid(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_grid,Reason});
+ Return -> Return
+ end.
+
+
+gridline(Parent,Options) when is_list(Options) ->
+ case gs:gridline(Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,gridline,Reason});
+ Return -> Return
+ end.
+
+
+named_gridline(Name,Parent,Options) when is_list(Options) ->
+ case gs:gridline(Name, Parent,Options) of
+ {error, Reason} ->
+ exit({?MODULE,named_gridline,Reason});
+ Return -> Return
+ end.
+
+
+
+%% gs:config - Utility functions
+
+
+%%
+%% enable/disable
+%%
+
+enable(Object) ->
+ gse:config(Object,[{enable,true}]).
+
+disable(Object) ->
+ gse:config(Object,[{enable,false}]).
+
+
+
+%%
+%% select/deselect
+%%
+
+deselect(Object) ->
+ gse:config(Object,[{select,false}]).
+
+select(Object) ->
+ gse:config(Object,[{select,true}]).
+
+
+%%
+%% map/unmap
+%%
+
+map(Object) ->
+ gse:config(Object,[{map,true}]).
+
+unmap(Object) ->
+ gse:config(Object,[{map,false}]).
+
+
+
+%%
+%% resize
+%%
+
+resize(Object, Width, Height) ->
+ gse:config(Object,[{width,Width}, {height, Height}]).
+
+
+
+%%
+%% Misc utility functions
+%%
+
+name_occupied(Name) ->
+ case gs:read(Name,id) of
+ {error,_Reason} ->
+ false;
+ _Id -> true
+ end.
+
+