wx_object(3erl)

๐Ÿ“ฆ
version 25.3.2.8 ยท 5 versions
, in ubuntu noble

๐Ÿ’… wx_object โ€” Erlang Module Definition ๐Ÿ’…

okay bestie, this is the manual page for wx_object(3erl) โ€” we're folding that manual name right in here so the header line doesn't have to be copy-pasted, periodt. โœจ

๐ŸŒธ NAME ๐ŸŒธ

wx_object - wx_object - Generic wx object behaviour. ๐Ÿ’–

โœจ DESCRIPTION โœจ

wx_object - Generic wx object behaviour ๐Ÿฆ‹

This is a behaviour module that can be used for "sub classing" wx objects. It works like a regular gen_server module and creates a server per object. ๐Ÿ‘‘

NOTE: Currently no form of inheritance is implemented. ๐Ÿšจ not me expecting inheritance and getting none ๐Ÿ˜ญ

The user module should export:

init(Args) should return
{wxObject, State} | {wxObject, State, Timeout} | ignore | {stop, Reason}

Asynchronous window event handling:

handle_event(#wx{}, State) should return
{noreply, State} | {noreply, State, Timeout} | {stop, Reason, State}

The user module can export the following callback functions:

handle_call(Msg, {From, Tag}, State) should return
{reply, Reply, State} | {reply, Reply, State, Timeout} | {noreply,
State} | {noreply, State, Timeout} | {stop, Reason, Reply, State}
handle_cast(Msg, State) should return
{noreply, State} | {noreply, State, Timeout} | {stop, Reason, State}

If the above are not exported but called, the wx_object process will crash. ๐Ÿ’€ The user module can also export:

Info is message e.g. {'EXIT', P, R}, {nodedown, N}, ...
handle_info(Info, State) should return , ...
{noreply, State} | {noreply, State, Timeout} | {stop, Reason, State}

If a message is sent to the wx_object process when handle_info is not exported, the message will be dropped and ignored. ๐Ÿ™ˆ

When stop is returned in one of the functions above with Reason = normal | shutdown | Term, terminate(State) is called. It lets the user module clean up, it is always called when server terminates or when wx_object() in the driver is deleted. If the Parent process terminates the Module:terminate/2 function is called. ๐Ÿซถ

terminate(Reason, State)

Example:

-module(myDialog).
-export([new/2, show/1, destroy/1]).  %% API
-export([init/1, handle_call/3, handle_event/2,
         handle_info/2, code_change/3, terminate/2]).
         new/2, showModal/1, destroy/1]).  %% Callbacks

%% Client API
new(Parent, Msg) ->
   wx_object:start(?MODULE, [Parent,Id], []).

show(Dialog) ->
   wx_object:call(Dialog, show_modal).

destroy(Dialog) ->
   wx_object:call(Dialog, destroy).

%% Server Implementation ala gen_server
init([Parent, Str]) ->
   Dialog = wxDialog:new(Parent, 42, "Testing", []),
   ...
   wxDialog:connect(Dialog, command_button_clicked),
   {Dialog, MyState}.

handle_call(show, _From, State) ->
   wxDialog:show(State#state.win),
   {reply, ok, State};
...
handle_event(#wx{}, State) ->
   io:format("Users clicked button~n",[]),
   {noreply, State};
...

๐Ÿฆ‹ DATA TYPES ๐Ÿฆ‹

request_id() = term():

server_ref() = wx:wx_object() | atom() | pid():

๐Ÿ”ฅ EXPORTS ๐Ÿ”ฅ

  • start(Name, Mod, Args, Options) -> wxWindow:wxWindow() | {error, term()} โ€” Starts a generic wx_object server and invokes Mod:init(Args) in the new process. โœจ
    • Types:
      • Name = {local, atom()}
      • Mod = atom()
      • Args = term()
      • Flag = trace | log | {logfile, string()} | statistics | debug
      • Options = [{timeout, timeout()} | {debug, [Flag]}]
  • start_link(Mod, Args, Options) -> wxWindow:wxWindow() | {error, term()} โ€” Starts a generic wx_object server and invokes Mod:init(Args) in the new process. ๐Ÿ’–
    • Types:
      • Mod = atom()
      • Args = term()
      • Flag = trace | log | {logfile, string()} | statistics | debug
      • Options = [{timeout, timeout()} | {debug, [Flag]}]
  • start_link(Name, Mod, Args, Options) -> wxWindow:wxWindow() | {error, term()} โ€” Starts a generic wx_object server and invokes Mod:init(Args) in the new process. ๐ŸŽ€
    • Types:
      • Name = {local, atom()}
      • Mod = atom()
      • Args = term()
      • Flag = trace | log | {logfile, string()} | statistics | debug
      • Options = [{timeout, timeout()} | {debug, [Flag]}]
  • stop(Obj) -> ok โ€” Stops a generic wx_object server with reason 'normal'. Invokes terminate(Reason,State) in the server. The call waits until the process is terminated. If the process does not exist, an exception is raised. ๐Ÿ˜ญ
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
  • stop(Obj, Reason, Timeout) -> ok โ€” Stops a generic wx_object server with the given Reason. Invokes terminate(Reason,State) in the server. The call waits until the process is terminated. If the call times out, or if the process does not exist, an exception is raised. ๐Ÿ’€
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
      • Reason = term()
      • Timeout = timeout()
  • call(Obj, Request) -> term() โ€” Make a call to a wx_object server. The call waits until it gets a result. Invokes handle_call(Request, From, State) in the server. ๐Ÿ“ž
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
      • Request = term()
  • call(Obj, Request, Timeout) -> term() โ€” Make a call to a wx_object server with a timeout. Invokes handle_call(Request, From, State) in server. โณ
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
      • Request = term()
      • Timeout = integer()
  • send_request(Obj, Request::term()) -> request_id() โ€” Make an send_request to a generic server and return a RequestId which can/should be used with wait_response/[1|2]. Invokes handle_call(Request, From, State) in server. ๐Ÿš€
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
  • wait_response(RequestId::request_id()) -> {reply, Reply::term()} | {error, {term(), server_ref()}} โ€” Wait infinitely for a reply from a generic server. โ™พ๏ธ
  • wait_response(Key::request_id(), Timeout::timeout()) -> {reply, Reply::term()} | timeout | {error, {term(), server_ref()}} โ€” Wait 'timeout' for a reply from a generic server. โฐ
  • check_response(Msg::term(), Key::request_id()) -> {reply, Reply::term()} | false | {error, {term(), server_ref()}} โ€” Check if a received message was a reply to a RequestId. ๐Ÿ”
  • cast(Obj, Request) -> ok โ€” Make a cast to a wx_object server. Invokes handle_cast(Request, State) in the server. ๐Ÿ’…
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
      • Request = term()
  • get_pid(Obj) -> pid() โ€” Get the pid of the object handle. ๐Ÿ†”
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
  • set_pid(Obj, Pid::pid()) -> wx:wx_object() โ€” Sets the controlling process of the object handle. ๐ŸŽฎ
    • Types:
      • Obj = wx:wx_object() | atom() | pid()
  • reply(X1::{pid(), Tag::term()}, Reply::term()) -> pid() โ€” Get the pid of the object handle. (yes, same desc again, we don't make the rules ๐Ÿ˜ญ)

๐ŸŒˆ AUTHORS ๐ŸŒˆ

<> ๐Ÿซถ


source/version: wx 2.2.2.1; manual: wx_object(3erl); date: not shown in the footer, bestie. that's the whole sign-off, stay iconic ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from