From 05d2434a2ccfe94ea7c7db50189ff440b1517fbe Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Thu, 8 Nov 2012 08:00:20 +0100 Subject: wx: Update examples so they work with both wxWidgets 2.8 and 2.9 --- lib/wx/examples/demo/demo.erl | 20 ++++++++++++-------- lib/wx/examples/demo/ex_aui.erl | 19 ++++++++++--------- lib/wx/examples/demo/ex_canvas_paint.erl | 19 +++++++++++-------- lib/wx/examples/demo/ex_gl.erl | 4 ++-- lib/wx/examples/demo/ex_graphicsContext.erl | 25 ++++++++----------------- lib/wx/examples/demo/ex_textCtrl.erl | 20 ++++++++------------ 6 files changed, 51 insertions(+), 56 deletions(-) (limited to 'lib/wx/examples/demo') diff --git a/lib/wx/examples/demo/demo.erl b/lib/wx/examples/demo/demo.erl index 61e71af021..b0802a5c32 100644 --- a/lib/wx/examples/demo/demo.erl +++ b/lib/wx/examples/demo/demo.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -78,6 +78,7 @@ init(Options) -> wxFrame:setMenuBar(Frame,MB), wxFrame:connect(Frame, command_menu_selected), + wxFrame:connect(Frame, close_window), _SB = wxFrame:createStatusBar(Frame,[]), @@ -179,6 +180,8 @@ create_subwindow(Parent, BoxLabel, Funs) -> %% Handled as in normal gen_server callbacks handle_info({'EXIT',_, wx_deleted}, State) -> {noreply,State}; +handle_info({'EXIT',_, shutdown}, State) -> + {noreply,State}; handle_info({'EXIT',_, normal}, State) -> {noreply,State}; handle_info(Msg, State) -> @@ -197,13 +200,13 @@ handle_cast(Msg, State) -> handle_event(#wx{event=#wxCommand{type=command_listbox_selected, cmdString=Ex}}, State = #state{demo={_,DemoSz}, example=Example, code=Code}) -> case Ex of - [] -> + [] -> {noreply, State}; _ -> wxSizer:detach(DemoSz, Example), - wxWindow:destroy(Example), + exit(wx_object:get_pid(Example), shutdown), unload_code(Code), - NewExample = load_example(Ex, State), + NewExample = load_example(Ex, State), wxSizer:add(DemoSz, NewExample, [{proportion,1}, {flag, ?wxEXPAND}]), wxSizer:layout(DemoSz), {noreply, State#state{example=NewExample}} @@ -247,9 +250,10 @@ handle_event(#wx{id = Id, ?wxICON_INFORMATION bor ?wxSTAY_ON_TOP}, {caption, "About"}])), - {noreply, State}; + {noreply, State}; ?wxID_EXIT -> - wx_object:get_pid(State#state.example) ! stop, + exit(wx_object:get_pid(State#state.example), shutdown), + timer:sleep(100), %% Give the example process some time to cleanup. {stop, normal, State}; _ -> {noreply, State} @@ -266,8 +270,8 @@ code_change(_, _, State) -> {stop, not_yet_implemented, State}. terminate(_Reason, State) -> - wx_object:get_pid(State#state.example) ! stop, - timer:sleep(200), %% Give the example process some time to cleanup. + exit(wx_object:get_pid(State#state.example), shutdown), + timer:sleep(100), %% Give the example process some time to cleanup. wx:destroy(). %%%%%%%%%%%%%%%%% Internals %%%%%%%%%% diff --git a/lib/wx/examples/demo/ex_aui.erl b/lib/wx/examples/demo/ex_aui.erl index 50f077638d..dc7416a116 100644 --- a/lib/wx/examples/demo/ex_aui.erl +++ b/lib/wx/examples/demo/ex_aui.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -32,7 +32,8 @@ -record(state, { parent, - config + config, + aui }). start(Config) -> @@ -47,12 +48,10 @@ init(Config) -> do_init(Config) -> Parent = proplists:get_value(parent, Config), Panel = wxPanel:new(Parent, []), - %% Setup sizers MainSizer = wxBoxSizer:new(?wxVERTICAL), - Manager = wxAuiManager:new([{managed_wnd, Panel} - ]), + Manager = wxAuiManager:new([{managed_wnd, Panel}]), Pane = ?pi:new(), ?pi:closeButton(Pane), @@ -79,8 +78,8 @@ do_init(Config) -> wxAuiManager:connect(Manager, aui_pane_button, [{skip,true}]), wxAuiManager:connect(Manager, aui_pane_maximize, [{skip,true}]), wxAuiManager:update(Manager), - - {Panel, #state{parent=Panel, config=Config}}. + process_flag(trap_exit, true), + {Panel, #state{parent=Panel, config=Config, aui=Manager}}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Callbacks handled as normal gen_server callbacks @@ -134,11 +133,13 @@ handle_event(Ev = #wx{}, State) -> io:format("~p\n", [Ev]), {noreply, State}. - code_change(_, _, State) -> {stop, ignore, State}. -terminate(_Reason, _State) -> +terminate(_Reason, #state{aui=Manager, parent=Panel}) -> + wxAuiManager:unInit(Manager), + wxAuiManager:destroy(Manager), + wxPanel:destroy(Panel), ok. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/lib/wx/examples/demo/ex_canvas_paint.erl b/lib/wx/examples/demo/ex_canvas_paint.erl index 9bc083766a..17c7ad9cac 100644 --- a/lib/wx/examples/demo/ex_canvas_paint.erl +++ b/lib/wx/examples/demo/ex_canvas_paint.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -239,14 +239,17 @@ draw(Canvas, Bitmap, Fun) -> wxMemoryDC:destroy(MemoryDC). redraw(DC, Bitmap) -> - MemoryDC = wxMemoryDC:new(Bitmap), - - wxDC:blit(DC, {0,0}, - {wxBitmap:getWidth(Bitmap), wxBitmap:getHeight(Bitmap)}, - MemoryDC, {0,0}), + try + MemoryDC = wxMemoryDC:new(Bitmap), - wxMemoryDC:destroy(MemoryDC). + wxDC:blit(DC, {0,0}, + {wxBitmap:getWidth(Bitmap), wxBitmap:getHeight(Bitmap)}, + MemoryDC, {0,0}), + wxMemoryDC:destroy(MemoryDC) + catch error:{{badarg,_},_} -> %% Bitmap have been deleted + ok + end. -getPageInfo(_This) -> +getPageInfo(_This) -> {1,1,1,1}. diff --git a/lib/wx/examples/demo/ex_gl.erl b/lib/wx/examples/demo/ex_gl.erl index 72dad2cf9d..501aed8feb 100644 --- a/lib/wx/examples/demo/ex_gl.erl +++ b/lib/wx/examples/demo/ex_gl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -67,7 +67,7 @@ do_init(Config) -> ?WX_GL_DEPTH_SIZE,24,0]}], Canvas = wxGLCanvas:new(Panel,Opts ++ GLAttrib), wxGLCanvas:connect(Canvas, size), - + %% Demo window is already shown so we can setCurrent directly wxGLCanvas:setCurrent(Canvas), Image = wxImage:scale(wxImage:new("image.jpg"), 128,128), GL = setup_gl(Canvas,Image), diff --git a/lib/wx/examples/demo/ex_graphicsContext.erl b/lib/wx/examples/demo/ex_graphicsContext.erl index c356500d99..15492ecc66 100644 --- a/lib/wx/examples/demo/ex_graphicsContext.erl +++ b/lib/wx/examples/demo/ex_graphicsContext.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -58,7 +58,7 @@ do_init(Config) -> Win = wxPanel:new(Panel, []), Pen = wxPen:new(), - Brush = wxBrush:new(?wxBLACK), + Brush = wxBrush:new({30, 175, 23, 127}), Font = wxFont:new(), wxFont:setWeight(Font, ?wxBOLD), @@ -112,36 +112,27 @@ terminate(_Reason, _State) -> %% Local functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -draw(Win, Pen0, _Brush0, Font0) -> +draw(Win, Pen, Brush, Font0) -> try Canvas = wxGraphicsContext:create(Win), - Pen = wxGraphicsContext:createPen(Canvas, Pen0), wxGraphicsContext:setPen(Canvas, Pen), - Brush = wxGraphicsContext:createLinearGradientBrush(Canvas, 0.0,0.0, 30.0,30.0, - {200,50,50,50}, - {200,50,50,200}), wxGraphicsContext:setBrush(Canvas, Brush), Font = wxGraphicsContext:createFont(Canvas, Font0), wxGraphicsContext:setFont(Canvas, Font), wxGraphicsContext:drawRoundedRectangle(Canvas, 35.0,35.0, 100.0, 50.0, 10.0), - wxGraphicsContext:drawText(Canvas, "Welcome", 60.0, 55.0), + wxGraphicsContext:drawText(Canvas, "This text should be antialised", 60.0, 55.0), Path = wxGraphicsContext:createPath(Canvas), wxGraphicsPath:addCircle(Path, 0.0, 0.0, 40.0), wxGraphicsPath:closeSubpath(Path), - wxGraphicsContext:translate(Canvas, 100.0, 100.0), - - Brush2 = wxGraphicsContext:createLinearGradientBrush(Canvas, 0.0,0.0, 30.0,30.0, - {50,200,50,50}, - {50,50,200,50}), - wxGraphicsContext:setBrush(Canvas, Brush2), + wxGraphicsContext:translate(Canvas, 100.0, 250.0), - F = fun(_) -> + F = fun(N) -> wxGraphicsContext:scale(Canvas, 1.1, 1.1), - wxGraphicsContext:translate(Canvas, 3.0,3.0), + wxGraphicsContext:translate(Canvas, 15.0,-1.0*N), wxGraphicsContext:drawPath(Canvas, Path) end, - wx:foreach(F, lists:seq(1,5)), + wx:foreach(F, lists:seq(1,10)), ok catch _:{not_supported, _} -> Err = "wxGraphicsContext not available in this build of wxwidgets", diff --git a/lib/wx/examples/demo/ex_textCtrl.erl b/lib/wx/examples/demo/ex_textCtrl.erl index d82884f30b..3eadb2bd8f 100644 --- a/lib/wx/examples/demo/ex_textCtrl.erl +++ b/lib/wx/examples/demo/ex_textCtrl.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2011. All Rights Reserved. +%% Copyright Ericsson AB 2009-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 @@ -51,27 +51,23 @@ do_init(Config) -> Sizer3 = wxStaticBoxSizer:new(?wxVERTICAL, Panel, [{label, "wxTextCtrl multiline"}]), - TextCtrl = wxTextCtrl:new(Panel, 1, [{value, "This is a single line wxTextCtrl"}, + TextCtrl = wxTextCtrl:new(Panel, 1, [{value, "This is a single line wxTextCtrl"}, {style, ?wxDEFAULT}]), TextCtrl2 = wxTextCtrl:new(Panel, 2, [{value, "password"}, - {style, ?wxDEFAULT bor - ?wxTE_PASSWORD}]), - TextCtrl3 = wxTextCtrl:new(Panel, 3, [{value, "This is a\n" - "multiline\n" - "wxTextCtrl"}, - {style, ?wxDEFAULT bor - ?wxTE_MULTILINE}]), + {style, ?wxDEFAULT bor ?wxTE_PASSWORD}]), + TextCtrl3 = wxTextCtrl:new(Panel, 3, [{value, "This is a\nmultiline\nwxTextCtrl"}, + {style, ?wxDEFAULT bor ?wxTE_MULTILINE}]), %% Add to sizers - wxSizer:add(Sizer, TextCtrl, [{flag, ?wxEXPAND}]), + wxSizer:add(Sizer, TextCtrl, [{flag, ?wxEXPAND}]), wxSizer:add(Sizer2, TextCtrl2, []), - wxSizer:add(Sizer3, TextCtrl3, [{flag, ?wxEXPAND}]), + wxSizer:add(Sizer3, TextCtrl3, [{flag, ?wxEXPAND}, {proportion, 1}]), wxSizer:add(MainSizer, Sizer, [{flag, ?wxEXPAND}]), wxSizer:addSpacer(MainSizer, 10), wxSizer:add(MainSizer, Sizer2, [{flag, ?wxEXPAND}]), wxSizer:addSpacer(MainSizer, 10), - wxSizer:add(MainSizer, Sizer3, [{flag, ?wxEXPAND}]), + wxSizer:add(MainSizer, Sizer3, [{flag, ?wxEXPAND}, {proportion, 1}]), wxPanel:setSizer(Panel, MainSizer), {Panel, #state{parent=Panel, config=Config}}. -- cgit v1.2.3