diff options
Diffstat (limited to 'lib/wx/api_gen/wx_extra')
-rw-r--r-- | lib/wx/api_gen/wx_extra/bugs.h | 36 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxEvtHandler.c_src | 66 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxEvtHandler.erl | 183 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxListCtrl.c_src | 24 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxListCtrl.erl | 39 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxPrintout.c_src | 30 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxPrintout.erl | 102 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxXmlResource.c_src | 3 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxXmlResource.erl | 43 | ||||
-rw-r--r-- | lib/wx/api_gen/wx_extra/wxe_evth.h | 25 |
10 files changed, 551 insertions, 0 deletions
diff --git a/lib/wx/api_gen/wx_extra/bugs.h b/lib/wx/api_gen/wx_extra/bugs.h new file mode 100644 index 0000000000..b8f3dfcb00 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/bugs.h @@ -0,0 +1,36 @@ + +// I have added this doxygen seems to get lost in some macros +// in sashwin.h + +enum wxSashDragStatus + { + wxSASH_STATUS_OK, + wxSASH_STATUS_OUT_OF_RANGE + }; + +// Macro needed in erlang +class WXDLLIMPEXP_XRC wxXmlResource : public wxObject +{ + public: + wxObject xrcctrl(wxWindow *Window, wxString Name, wxString Type); +}; + +// The generater needs constructors +class WXDLLIMPEXP_ADV wxGridCellBoolRenderer : public wxGridCellRenderer +{ + public: + wxGridCellBoolRenderer(); +}; + +class WXDLLIMPEXP_ADV wxGridCellStringRenderer : public wxGridCellRenderer +{ + public: + wxGridCellStringRenderer(); +}; + +class WXDLLIMPEXP_ADV wxGridCellNumberRenderer : public wxGridCellStringRenderer +{ + public: + wxGridCellNumberRenderer(); +}; + diff --git a/lib/wx/api_gen/wx_extra/wxEvtHandler.c_src b/lib/wx/api_gen/wx_extra/wxEvtHandler.c_src new file mode 100644 index 0000000000..4e492db045 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxEvtHandler.c_src @@ -0,0 +1,66 @@ +case 98: { // wxeEvtListener::wxeEvtListener + wxeEvtListener *Result = new wxeEvtListener(Ecmd.port); + rt.addRef(getRef((void *)Result,memenv), "wxeEvtListener"); + break; +} +case 99: { // wxeEvtListener::destroy + wxObject *This = (wxObject *) getPtr(bp,memenv); + rt.addAtom("ok"); + delete This; + break; +} + +case 100: { // wxEvtHandler::Connect + wxeEvtListener *Listener = (wxeEvtListener *) getPtr(bp,memenv); bp += 4; + wxEvtHandler *This = (wxEvtHandler *) getPtr(bp, memenv); bp += 4; + int * winid = (int *) bp; bp += 4; + int * lastId = (int *) bp; bp += 4; + int * skip = (int *) bp; bp += 4; + int * haveUserData = (int *) bp; bp += 4; + wxeErlTerm * userData = NULL; + int * fun_cb = (int *) bp; bp += 4; + int * eventTypeLen = (int *) bp; bp += 4; + int * class_nameLen = (int *) bp; bp += 4; + + if(*haveUserData) { + userData = new wxeErlTerm(Ecmd.bin[0]); + } + + int eventType = wxeEventTypeFromAtom(bp); bp += *eventTypeLen; + char *class_name = bp; bp+= *class_nameLen; + if(eventType > 0 ) { + wxeCallbackData * Evt_cb = new wxeCallbackData(Ecmd.caller,(void *) This, + class_name,*fun_cb, + *skip, userData); + This->Connect((int) *winid,(int) *lastId,eventType, + (wxObjectEventFunction)(wxEventFunction) &wxeEvtListener::forward, + Evt_cb, Listener); + rt.addAtom("ok"); + } else { + rt.addAtom("badarg"); + rt.addAtom("event_type"); + rt.addTupleCount(2); + } + break; +} +case 101: { // wxEvtHandler::Disconnect + wxeEvtListener *Listener = (wxeEvtListener *) getPtr(bp,memenv); bp += 4; + wxEvtHandler *This = (wxEvtHandler *) getPtr(bp, memenv); bp += 4; + int * winid = (int *) bp; bp += 4; + int * lastId = (int *) bp; bp += 4; + int * eventTypeLen = (int *) bp; bp += 4; + + int eventType = wxeEventTypeFromAtom(bp); bp += *eventTypeLen; + if(eventType > 0) { + bool Result = This->Disconnect((int) *winid,(int) *lastId,eventType, + (wxObjectEventFunction)(wxEventFunction) + &wxeEvtListener::forward, + NULL, Listener); + rt.addBool(Result); + } else { + rt.addAtom("badarg"); + rt.addAtom("event_type"); + rt.addTupleCount(2); + } + break; +} diff --git a/lib/wx/api_gen/wx_extra/wxEvtHandler.erl b/lib/wx/api_gen/wx_extra/wxEvtHandler.erl new file mode 100644 index 0000000000..c6810eb32c --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxEvtHandler.erl @@ -0,0 +1,183 @@ +%% This module is actually handwritten see ../api_gen/wx_extra/wxEvtHandler.erl +%% +%% @doc The Event handler. +%% +%% To get events from wxwidgets objects you subscribe to them by +%% calling connect/[2-3]. Events are sent as messages, if no callback +%% was supplied These messages will be {@link wx(). #wx{}} where +%% EventRecord is a record that depends on the {@link +%% wxEventType(). event type}. The records are defined in: +%% wx/include/wx.hrl. +%% +%% If a callback was supplied to connect, the callback will be invoked +%% (in another process) to handle the event. The callback should be of +%% arity 2. fun(EventRecord::wx(), EventObject::wxObject()). +%% +%% Beware that the callback will be in executed in new process each time. +%% +%% <a href="http://www.wxwidgets.org/manuals/stable/wx_wxevthandler.html"> +%% The orginal documentation</a>. +%% +%% @headerfile "../../include/wx.hrl" +%% +%%@type wxEvtHandler(). An object reference + +-module(wxEvtHandler). +-include("wxe.hrl"). +-include("../include/wx.hrl"). + +%% API +-export([connect/2, connect/3, disconnect/1, disconnect/2, disconnect/3]). + +%% internal exports +-export([connect_impl/3, disconnect_impl/2, disconnect_impl/3, + new_evt_listener/0, destroy_evt_listener/1, + get_callback/1, replace_fun_with_id/2]). + +-record(evh, {et=null,id=?wxID_ANY,lastId=?wxID_ANY,skip=undefined,userdata=[],cb=0}). + + + +%% @spec (This::wxEvtHandler(), EventType::wxEventType()) -> ok +%% @doc Equivalent to {@link connect/3. connect(This, EventType, [])} + +connect(This, EventType) -> + connect(This, EventType, []). + +%% @spec (This::wxEvtHandler(), EventType::wxEventType(), [Options]) -> ok +%% @doc This function subscribes the to events of EventType, +%% in the range id, lastId. The events will be received as messages +%% if no callback is supplied. +%% +%% Options: +%% {id, integer()}, The identifier (or first of the identifier range) to be +%% associated with this event handler. +%% Default ?wxID_ANY +%% {lastId, integer()}, The second part of the identifier range. +%% If used 'id' must be set as the starting identifier range. +%% Default ?wxID_ANY +%% {skip, boolean()}, If skip is true further event_handlers will be called. +%% This is not used if the 'callback' option is used. +%% Default false. +%% {callback, function()} Use a callback fun(EventRecord::wx(), EventObject::wxObject()) +%% to process the event. Default not specfied i.e. a message will +%% be delivered to the process calling this function. +%% {userData, term()} An erlang term that will be sent with the event. Default: []. +connect(This=#wx_ref{type=ThisT}, EventType, Options) -> + EvH = parse_opts(Options, #evh{et=EventType}), + ?CLASS(ThisT,wxEvtHandler), + case wxe_util:connect_cb(This, EvH) of + ok -> ok; + {badarg, event_type} -> + erlang:error({badarg,EventType}) + end. + +parse_opts([{callback,Fun}|R], Opts) when is_function(Fun) -> + %% Check Fun Arity? + parse_opts(R, Opts#evh{cb=Fun}); +parse_opts([callback|R], Opts) -> + parse_opts(R, Opts#evh{cb=1}); +parse_opts([{userData, UserData}|R],Opts) -> + parse_opts(R, Opts#evh{userdata=UserData}); +parse_opts([{skip, Skip}|R],Opts) when is_boolean(Skip) -> + parse_opts(R, Opts#evh{skip=Skip}); +parse_opts([{id, Id}|R],Opts) when is_integer(Id) -> + parse_opts(R, Opts#evh{id=Id}); +parse_opts([{lastId, Id}|R],Opts) when is_integer(Id) -> + parse_opts(R, Opts#evh{lastId=Id}); +parse_opts([_BadArg|R], Opts) -> + parse_opts(R, Opts); +parse_opts([], Opts = #evh{id=Id,lastId=Lid,skip=Skip, cb=CB}) -> + if + Skip =/= undefined andalso CB =/= 0 -> + erlang:error({badarg, {combined, skip, callback}}); + Lid =/= ?wxID_ANY andalso Id =:= ?wxID_ANY -> + erlang:error({badarg, no_start_identifier_range}); + Skip =:= undefined -> %% Default + Opts#evh{skip=false}; + true -> + Opts + end. + +%% @spec (This::wxEvtHandler()) -> true | false +%% @doc Equivalent to {@link disconnect/3. disconnect(This, null, [])} +%% Can also have an optional callback Fun() as an additional last argument. + +disconnect(This=#wx_ref{type=ThisT,ref=_ThisRef}) -> + ?CLASS(ThisT,wxEvtHandler), + disconnect(This, null, []). + +%% @spec (This::wxEvtHandler(), EventType::wxEventType()) -> true | false +%% @doc Equivalent to {@link disconnect/3. disconnect(This, EventType, [])} +disconnect(This=#wx_ref{type=ThisT,ref=_ThisRef}, EventType) when is_atom(EventType) -> + ?CLASS(ThisT,wxEvtHandler), + disconnect(This, EventType, []). + +%% @spec (This::wxEvtHandler(), EventType::wxEventType(), Opts) -> true | false +%% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxevthandler.html#wxevthandlerdisconnect">external documentation</a> +%% This function unsubscribes the process or callback fun from the event handler. +%% EventType may be the atom 'null' to match any eventtype. +%% Notice that the options skip and userdata is not used to match the eventhandler. +disconnect(This=#wx_ref{type=ThisT,ref=_ThisRef}, EventType, Opts) -> + ?CLASS(ThisT,wxEvtHandler), + EvH = parse_opts(Opts, #evh{et=EventType}), + case wxe_util:disconnect_cb(This, EvH) of + {badarg, event_type} -> + erlang:error({badarg,EventType}); + Bool -> + Bool + end. + + +%% @hidden +connect_impl(#wx_ref{type=wxeEvtListener,ref=EvtList}, + #wx_ref{type=ThisT,ref=ThisRef}, + #evh{id=Winid, lastId=LastId, et=EventType, + skip=Skip, userdata=Userdata, cb=FunID}) + when is_integer(FunID)-> + EventTypeBin = list_to_binary([atom_to_list(EventType)|[0]]), + ThisTypeBin = list_to_binary([atom_to_list(ThisT)|[0]]), + UD = if Userdata =:= [] -> 0; + true -> + wxe_util:send_bin(term_to_binary(Userdata)), + 1 + end, + wxe_util:call(100, <<EvtList:32/?UI,ThisRef:32/?UI, + Winid:32/?UI,LastId:32/?UI, + (wxe_util:from_bool(Skip)):32/?UI, + UD:32/?UI, + FunID:32/?UI, + (size(EventTypeBin)):32/?UI, + (size(ThisTypeBin)):32/?UI, + %% Note no alignment + EventTypeBin/binary,ThisTypeBin/binary>>). + +%% @hidden +disconnect_impl(Listener, Object) -> + disconnect_impl(Listener, Object, #evh{}). +%% @hidden +disconnect_impl(#wx_ref{type=wxeEvtListener,ref=EvtList}, + #wx_ref{type=_ThisT,ref=ThisRef}, + #evh{id=Winid, lastId=LastId, et=EventType}) -> + EventTypeBin = list_to_binary([atom_to_list(EventType)|[0]]), + wxe_util:call(101, <<EvtList:32/?UI, + ThisRef:32/?UI,Winid:32/?UI,LastId:32/?UI, + (size(EventTypeBin)):32/?UI, + %% Note no alignment + EventTypeBin/binary>>). + +%% @hidden +new_evt_listener() -> + wxe_util:call(98, <<>>). + +%% @hidden +destroy_evt_listener(#wx_ref{type=wxeEvtListener,ref=EvtList}) -> + wxe_util:call(99, <<EvtList:32/?UI>>). + +%% @hidden +get_callback(#evh{cb=Callback}) -> + Callback. + +%% @hidden +replace_fun_with_id(Evh, Id) -> + Evh#evh{cb=Id}. diff --git a/lib/wx/api_gen/wx_extra/wxListCtrl.c_src b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src new file mode 100644 index 0000000000..cd3074e481 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxListCtrl.c_src @@ -0,0 +1,24 @@ +<<SortItems +case ~s: { // wxListCtrl::SortItems taylormade + wxListCtrl *This = (wxListCtrl *) getPtr(bp,memenv); bp += 4; + int sortCallback=*(int *) bp; bp += 4; + if(!This) throw wxe_badarg(0); + + callbackInfo* cb = new callbackInfo(); + cb->port = Ecmd.port; + cb->callbackID = sortCallback; + bool Result = This->SortItems(wxEListCtrlCompare, (long)cb); + delete cb; + + /* Destroy the callback, see wxEPrintout::clear_cb */ + wxeReturn cbrt = wxeReturn(WXE_DRV_PORT, memenv->owner, false); + // NOTE: Remove this later when changing from funs to gen_server + cbrt.addAtom("wx_delete_cb"); + cbrt.addInt(sortCallback); + cbrt.addTupleCount(2); + cbrt.send(); + + rt.addBool(Result); + break; +} +SortItems>> diff --git a/lib/wx/api_gen/wx_extra/wxListCtrl.erl b/lib/wx/api_gen/wx_extra/wxListCtrl.erl new file mode 100644 index 0000000000..e6470182cb --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxListCtrl.erl @@ -0,0 +1,39 @@ +%% +%% %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% +%% +<<EXPORT:SortItems sortItems/2 SortItems:EXPORT>> + +<<SortItems +%% @spec (This::wxListCtrl(), SortCallBack::function()) -> boolean() +%% @doc Sort the items in the list control<br /> +%% <pre>SortCalBack(Item1,Item2) -> integer()</pre> +%% <br /> SortCallBack receives the client data associated with two items +%% to compare, and should return 0 if the items are equal, a negative +%% value if the first item is less than the second one and a positive +%% value if the first item is greater than the second one. +%% <br /> NOTE: The callback may not call other processes. +sortItems(#wx_ref{type=ThisT,ref=ThisRef}, SortCallBack) + when is_function(SortCallBack, 2) -> + ?CLASS(ThisT,wxListCtrl), + Sort = fun([Item1,Item2]) -> + Result = SortCallBack(Item1,Item2), + <<Result:32/?UI>> + end, + SortId = wxe_util:get_cbId(Sort), + wxe_util:call(~s, <<ThisRef:32/?UI,SortId:32/?UI>>). +SortItems>> diff --git a/lib/wx/api_gen/wx_extra/wxPrintout.c_src b/lib/wx/api_gen/wx_extra/wxPrintout.c_src new file mode 100644 index 0000000000..c088a95e73 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxPrintout.c_src @@ -0,0 +1,30 @@ +<<wxPrintout +case ~s: { // wxPrintout::wxPrintout taylormade + int onPreparePrinting=0,onBeginPrinting=0,onEndPrinting=0,onBeginDocument=0, + onEndDocument=0,hasPage=0,getPageInfo=0; + int * titleLen = (int *) bp; bp += 4; + wxString title = wxString(bp, wxConvUTF8); + bp += *titleLen+((8-((4+ *titleLen) & 7)) & 7); + int onPrintPage=*(int *) bp; bp += 4; + while( * (int*) bp) { + switch (* (int*) bp) { + case 1: {bp += 4; onPreparePrinting = *(int *) bp; bp += 4;} break; + case 2: {bp += 4; onBeginPrinting = *(int *) bp; bp += 4;} break; + case 3: {bp += 4; onEndPrinting = *(int *) bp; bp += 4;} break; + case 4: {bp += 4; onBeginDocument = *(int *) bp; bp += 4;} break; + case 5: {bp += 4; onEndDocument = *(int *) bp; bp += 4;} break; + case 6: {bp += 4; hasPage = *(int *) bp; bp += 4;} break; + case 7: {bp += 4; getPageInfo = *(int *) bp; bp += 4;} break; + } + } + wxEPrintout *Result = new wxEPrintout(title,onPrintPage, + onPreparePrinting, + onBeginPrinting,onEndPrinting, + onBeginDocument,onEndDocument, + hasPage,getPageInfo, Ecmd.port); + + rt.addRef(getRef((void *)Result,memenv), "wxPrintout"); + break; +} +wxPrintout>> + diff --git a/lib/wx/api_gen/wx_extra/wxPrintout.erl b/lib/wx/api_gen/wx_extra/wxPrintout.erl new file mode 100644 index 0000000000..be8f2e2fa5 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxPrintout.erl @@ -0,0 +1,102 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2008-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% +%% +<<EXPORT:wxPrintout new/2,new/3 wxPrintout:EXPORT>> + +<<wxPrintout +%% @spec (Title::string(), OnPrintPage::function()) -> wxPrintout:wxPrintout() +%% @doc @equiv new(Title, OnPrintPage, []) +new(Title, OnPrintPage) -> + new(Title, OnPrintPage, []). + +%% @spec (Title::string(), OnPrintPage::function(), [Option]) -> wxPrintout:wxPrintout() +%% Option = {onPreparePrinting, OnPreparePrinting::function()} | +%% {onBeginPrinting, OnBeginPrinting::function()} | +%% {onEndPrinting, OnEndPrinting::function()} | +%% {onBeginDocument, OnBeginDocument::function()} | +%% {onEndDocument, OnEndDocument::function()} | +%% {hasPage, HasPage::function()} | +%% {getPageInfo, GetPageInfo::function()} +%% @doc Creates a wxPrintout object with a callback fun and optionally other callback funs.<br /> +%% <pre>OnPrintPage(This,Page) -> boolean() </pre> +%% <pre>OnPreparePrinting(This) -> term() </pre> +%% <pre>OnBeginPrinting(This) -> term() </pre> +%% <pre>OnEndPrinting(This) -> term() </pre> +%% <pre>OnBeginDocument(This,StartPage,EndPage) -> boolean() </pre> +%% <pre>OnEndDocument(This) -> term() </pre> +%% <pre>HasPage(This,Page)} -> boolean() </pre> +%% <pre>GetPageInfo(This) -> {MinPage:.integer(), MaxPage::integer(), PageFrom::integer(), PageTo::integer()} </pre> +%% The <b>This</b> argument is the wxPrintout object reference to this object +%% <br /> NOTE: The callbacks may not call other processes. +new(Title, OnPrintPage, Opts) when is_list(Title), is_function(OnPrintPage), is_list(Opts) -> + OnPrint = fun([This,Page]) -> + Bool = OnPrintPage(This,Page), + <<(wxe_util:from_bool(Bool)):32/?UI>> + end, + OnPrintPageId = wxe_util:get_cbId(OnPrint), + MOpts = fun({onPreparePrinting, F},Acc) when is_function(F) -> + Fun = fun([This]) -> + F(This), + <<>> + end, + [<<1:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onBeginPrinting, F},Acc) when is_function(F) -> + Fun = fun([This]) -> + F(This), + <<>> + end, + [<<2:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onEndPrinting, F},Acc) when is_function(F) -> + Fun = fun([This]) -> + F(This), + <<>> + end, + [<<3:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onBeginDocument, F},Acc) when is_function(F) -> + Fun = fun([This,S,E]) -> + BegD = F(This,S,E), + <<(wxe_util:from_bool(BegD)):32/?UI>> + end, + [<<4:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({onEndDocument, F},Acc) when is_function(F) -> + Fun = fun([This]) -> + F(This), + <<>> + end, + [<<5:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({hasPage, F},Acc) when is_function(F) -> + Fun = fun([This,Page]) -> + HasP = F(This,Page), + <<(wxe_util:from_bool(HasP)):32/?UI>> + end, + [<<6:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc]; + ({getPageInfo, F},Acc) when is_function(F) -> + Fun = fun([This]) -> + {Min,Max,PF,PT} = F(This), + <<Min:32/?UI,Max:32/?UI,PF:32/?UI,PT:32/?UI>> + end, + [<<7:32/?UI,(wxe_util:get_cbId(Fun)):32/?UI>>|Acc] + end, + BinOpt = list_to_binary(lists:foldl(MOpts, [<<0:32>>], Opts)), + Title_UC = unicode:characters_to_binary([Title,0]), + wxe_util:call(~s, << (byte_size(Title_UC)):32/?UI,Title_UC/binary, + 0:(((8- ((4+byte_size(Title_UC)) band 16#7)) band 16#7))/unit:8, + OnPrintPageId:32/?UI, + BinOpt/binary>>). + +wxPrintout>> diff --git a/lib/wx/api_gen/wx_extra/wxXmlResource.c_src b/lib/wx/api_gen/wx_extra/wxXmlResource.c_src new file mode 100644 index 0000000000..152e83fe32 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxXmlResource.c_src @@ -0,0 +1,3 @@ +<<xrcctrl +// XRCTRL macro implemented in erlang funcid ~s +xrcctrl>>
\ No newline at end of file diff --git a/lib/wx/api_gen/wx_extra/wxXmlResource.erl b/lib/wx/api_gen/wx_extra/wxXmlResource.erl new file mode 100644 index 0000000000..cd2bea6a1d --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxXmlResource.erl @@ -0,0 +1,43 @@ + +%% +%% %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% +%% +<<EXPORT:xrcctrl xrcctrl/3 xrcctrl:EXPORT>> + +<<xrcctrl +%% @spec (Window::wxWindow:wxWindow(),Name::string(), Type::atom()) -> wx:wxObject() + +%% @doc Looks up a control with Name in a window created with XML +%% resources. You can use it to set/get values from controls. +%% The object is type casted to <b>Type</b>. +%% Example: <br /> +%% Xrc = wxXmlResource:get(), <br /> +%% Dlg = wxDialog:new(), <br /> +%% true = wxXmlResource:loadDialog(Xrc, Dlg, Frame, "controls_dialog"), <br /> +%% LCtrl = xrcctrl(Dlg, "controls_listctrl", wxListCtrl), <br /> +%% wxListCtrl:insertColumn(LCtrl, 0, "Name", [{width, 200}]), <br /> + +xrcctrl(Window = #wx_ref{}, Name, Type) when is_list(Name), is_atom(Type) -> + %% Func Id ~s + ID = wxXmlResource:getXRCID(Name), + Res = wxWindow:findWindow(Window,ID), + wx:typeCast(Res, Type). + +xrcctrl>> + + diff --git a/lib/wx/api_gen/wx_extra/wxe_evth.h b/lib/wx/api_gen/wx_extra/wxe_evth.h new file mode 100644 index 0000000000..9af603b9e2 --- /dev/null +++ b/lib/wx/api_gen/wx_extra/wxe_evth.h @@ -0,0 +1,25 @@ + +// This add some extra functions, special code is in the compiler +// this file is currently not used at all except to get the inherited +// functions in the erlang modules. + + +class wxeEvtHandler : public wxObject +{ + public: + // Dynamic association of a member function handler with the event handler, + // winid and event type + void Connect(int eventType, + int options = -1); + + // Disconnect + + // Convenience function: take just one id + void Disconnect(int eventType, int winid = -1); + + // Even more convenient: without id (same as using id of wxID_ANY) + void Disconnect(int eventType); + + void Disconnect(); + +} |