aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx/examples/simple/minimal.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wx/examples/simple/minimal.erl')
-rwxr-xr-xlib/wx/examples/simple/minimal.erl109
1 files changed, 109 insertions, 0 deletions
diff --git a/lib/wx/examples/simple/minimal.erl b/lib/wx/examples/simple/minimal.erl
new file mode 100755
index 0000000000..dca4adc643
--- /dev/null
+++ b/lib/wx/examples/simple/minimal.erl
@@ -0,0 +1,109 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 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%
+%%
+%%%-------------------------------------------------------------------
+%%% File : minimal.erl
+%%% Author : Matthew Harrison <harryhuk at users.sourceforge.net>
+%%% Description : Minimal example of a wxerlang application
+%%%
+%%% Created : 18 Sep 2008 by Matthew Harrison <harryhuk at users.sourceforge.net>
+%%%-------------------------------------------------------------------
+-module(minimal).
+
+-include_lib("wx/include/wx.hrl").
+
+-export([start/0]).
+-compile(export_all).
+
+start() ->
+ Wx = wx:new(),
+ Frame = wx:batch(fun() -> create_window(Wx) end),
+ wxWindow:show(Frame),
+ loop(Frame),
+ wx:destroy(),
+ ok.
+
+create_window(Wx) ->
+ Frame = wxFrame:new(Wx, -1, "Minimal wxErlang App", [{size, {600,400}}]),
+
+ Path = filename:dirname(code:which(?MODULE)),
+ wxFrame:setIcon(Frame, wxIcon:new(filename:join(Path,"sample.xpm"))),
+
+ wxFrame:createStatusBar(Frame,[]),
+ wxFrame:connect(Frame, close_window),
+
+ MenuBar = wxMenuBar:new(),
+ FileM = wxMenu:new([]),
+ HelpM = wxMenu:new([]),
+
+ % unlike wxwidgets the stock menu items still need text to be given,
+ % although help text does appear
+ _QuitMenuItem = wxMenu:append(FileM, ?wxID_EXIT, "&Quit"),
+ % Note the keybord accelerator
+ _AboutMenuItem = wxMenu:append(HelpM, ?wxID_ABOUT, "&About...\tF1"),
+
+ wxMenu:appendSeparator(HelpM),
+ ContentsMenuItem = wxMenu:append(HelpM, ?wxID_HELP_CONTENTS, "&Contents"),
+ wxMenuItem:enable(ContentsMenuItem, [{enable, false}]),
+
+ ok = wxFrame:connect(Frame, command_menu_selected),
+
+ wxMenuBar:append(MenuBar, FileM, "&File"),
+ wxMenuBar:append(MenuBar, HelpM, "&Help"),
+ wxFrame:setMenuBar(Frame, MenuBar),
+
+ ok = wxFrame:setStatusText(Frame, "Welcome to wxErlang!",[]),
+ Frame.
+
+loop(Frame) ->
+ receive
+ #wx{event=#wxClose{}} ->
+ io:format("~p Closing window ~n",[self()]),
+ wxFrame:destroy(Frame),
+ ok;
+ #wx{id=?wxID_EXIT, event=#wxCommand{type=command_menu_selected}} ->
+ wxWindow:destroy(Frame),
+ ok;
+ #wx{id=?wxID_ABOUT, event=#wxCommand{type=command_menu_selected}} ->
+ io:format("Got about ~n", []),
+ dialog(?wxID_ABOUT, Frame),
+ loop(Frame);
+ Msg ->
+ io:format("Got ~p ~n", [Msg]),
+ loop(Frame)
+ after 1000 ->
+ io:fwrite("."),
+ loop(Frame)
+ end.
+
+dialog(?wxID_ABOUT, Frame) ->
+ Str = string:join(["Welcome to wxErlang.",
+ "This is the minimal wxErlang sample\n",
+ "running under ",
+ wx_misc:getOsDescription(),
+ "."],
+ ""),
+ MD = wxMessageDialog:new(Frame,
+ Str,
+ [{style, ?wxOK bor ?wxICON_INFORMATION},
+ {caption, "About wxErlang minimal sample"}]),
+
+ wxDialog:showModal(MD),
+ wxDialog:destroy(MD).
+
+