# `wxTreebook` [🔗](https://github.com/kikofernandez/otp/blob/kiko/otp/release-gh-action-backup-continuation/OTP-20040/lib/wx/src/gen/wxTreebook.erl#L58) This class is an extension of the `m:wxNotebook` class that allows a tree structured set of pages to be shown in a control. A classic example is a netscape preferences dialog that shows a tree of preference sections on the left and select section page on the right. To use the class simply create it and populate with pages using `insertPage/5`, `insertSubPage/5`, `addPage/4`, `AddSubPage()` (not implemented in wx). If your tree is no more than 1 level in depth then you could simply use `addPage/4` and `AddSubPage()` (not implemented in wx) to sequentially populate your tree by adding at every step a page or a subpage to the end of the tree. See: * ?wxBookCtrl * `m:wxBookCtrlEvent` * `m:wxNotebook` * `m:wxTreeCtrl` * `m:wxImageList` * [Overview bookctrl](https://docs.wxwidgets.org/3.2/overview_bookctrl.html#overview_bookctrl) * [Examples](https://docs.wxwidgets.org/3.2/page_samples.html#page_samples_notebook) This class is derived, and can use functions, from: * `m:wxBookCtrlBase` * `m:wxControl` * `m:wxWindow` * `m:wxEvtHandler` wxWidgets docs: [wxTreebook](https://docs.wxwidgets.org/3.2/classwx_treebook.html) ## Events Event types emitted from this class: * [`treebook_page_changed`](`m:wxBookCtrlEvent`) * [`treebook_page_changing`](`m:wxBookCtrlEvent`) # `wxTreebook` ```elixir -type wxTreebook() :: wx:wx_object(). ``` # `addPage` ```elixir -spec addPage(This, Page, Text) -> boolean() when This :: wxTreebook(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(). ``` # `addPage` ```elixir -spec addPage(This, Page, Text, [Option]) -> boolean() when This :: wxTreebook(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(), Option :: {bSelect, boolean()} | {imageId, integer()}. ``` Adds a new page. The page is placed at the topmost level after all other pages. NULL could be specified for page to create an empty page. # `advanceSelection` ```elixir -spec advanceSelection(This) -> ok when This :: wxTreebook(). ``` # `advanceSelection` ```elixir -spec advanceSelection(This, [Option]) -> ok when This :: wxTreebook(), Option :: {forward, boolean()}. ``` Cycles through the tabs. The call to this function generates the page changing events. # `assignImageList` ```elixir -spec assignImageList(This, ImageList) -> ok when This :: wxTreebook(), ImageList :: wxImageList:wxImageList(). ``` Sets the image list for the page control and takes ownership of the list. See: * `m:wxImageList` * `setImageList/2` # `changeSelection` ```elixir -spec changeSelection(This, Page) -> integer() when This :: wxTreebook(), Page :: integer(). ``` Changes the selection to the given page, returning the previous selection. This function behaves as `setSelection/2` but does `not` generate the page changing events. See overview_events_prog for more information. # `create` ```elixir -spec create(This, Parent, Id) -> boolean() when This :: wxTreebook(), Parent :: wxWindow:wxWindow(), Id :: integer(). ``` # `create` ```elixir -spec create(This, Parent, Id, [Option]) -> boolean() when This :: wxTreebook(), Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}. ``` Creates a treebook control. See `new/3` for the description of the parameters. # `deleteAllPages` ```elixir -spec deleteAllPages(This) -> boolean() when This :: wxTreebook(). ``` Deletes all pages. # `destroy` ```elixir -spec destroy(This :: wxTreebook()) -> ok. ``` Destroys the object # `expandNode` ```elixir -spec expandNode(This, PageId) -> boolean() when This :: wxTreebook(), PageId :: integer(). ``` # `expandNode` ```elixir -spec expandNode(This, PageId, [Option]) -> boolean() when This :: wxTreebook(), PageId :: integer(), Option :: {expand, boolean()}. ``` Expands (collapses) the `pageId` node. Returns the previous state. May generate page changing events (if selected page is under the collapsed branch, then its parent is autoselected). # `getCurrentPage` ```elixir -spec getCurrentPage(This) -> wxWindow:wxWindow() when This :: wxTreebook(). ``` Returns the currently selected page or NULL. # `getImageList` ```elixir -spec getImageList(This) -> wxImageList:wxImageList() when This :: wxTreebook(). ``` Returns the associated image list, may be NULL. See: * `m:wxImageList` * `setImageList/2` # `getPage` ```elixir -spec getPage(This, Page) -> wxWindow:wxWindow() when This :: wxTreebook(), Page :: integer(). ``` Returns the window at the given page position. # `getPageCount` ```elixir -spec getPageCount(This) -> integer() when This :: wxTreebook(). ``` Returns the number of pages in the control. # `getPageImage` ```elixir -spec getPageImage(This, NPage) -> integer() when This :: wxTreebook(), NPage :: integer(). ``` Returns the image index for the given page. # `getPageText` ```elixir -spec getPageText(This, NPage) -> unicode:charlist() when This :: wxTreebook(), NPage :: integer(). ``` Returns the string for the given page. # `getSelection` ```elixir -spec getSelection(This) -> integer() when This :: wxTreebook(). ``` Returns the currently selected page, or `wxNOT\_FOUND` if none was selected. Note: This method may return either the previously or newly selected page when called from the EVT_TREEBOOK_PAGE_CHANGED() handler depending on the platform and so `wxBookCtrlEvent:getSelection/1` should be used instead in this case. # `hitTest` ```elixir -spec hitTest(This, Pt) -> Result when Result :: {Res :: integer(), Flags :: integer()}, This :: wxTreebook(), Pt :: {X :: integer(), Y :: integer()}. ``` Returns the index of the tab at the specified position or `wxNOT\_FOUND` if none. If `flags` parameter is non-NULL, the position of the point inside the tab is returned as well. Return: Returns the zero-based tab index or `wxNOT_FOUND` if there is no tab at the specified position. # `insertPage` ```elixir -spec insertPage(This, PagePos, Page, Text) -> boolean() when This :: wxTreebook(), PagePos :: integer(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(). ``` # `insertPage` ```elixir -spec insertPage(This, PagePos, Page, Text, [Option]) -> boolean() when This :: wxTreebook(), PagePos :: integer(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(), Option :: {bSelect, boolean()} | {imageId, integer()}. ``` Inserts a new page just before the page indicated by `pagePos`. The new page is placed before `pagePos` page and on the same level. NULL could be specified for page to create an empty page. # `insertSubPage` ```elixir -spec insertSubPage(This, PagePos, Page, Text) -> boolean() when This :: wxTreebook(), PagePos :: integer(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(). ``` # `insertSubPage` ```elixir -spec insertSubPage(This, PagePos, Page, Text, [Option]) -> boolean() when This :: wxTreebook(), PagePos :: integer(), Page :: wxWindow:wxWindow(), Text :: unicode:chardata(), Option :: {bSelect, boolean()} | {imageId, integer()}. ``` Inserts a sub page under the specified page. NULL could be specified for page to create an empty page. # `isNodeExpanded` ```elixir -spec isNodeExpanded(This, PageId) -> boolean() when This :: wxTreebook(), PageId :: integer(). ``` Returns true if the page represented by `pageId` is expanded. # `new` ```elixir -spec new() -> wxTreebook(). ``` Default constructor. # `new` ```elixir -spec new(Parent, Id) -> wxTreebook() when Parent :: wxWindow:wxWindow(), Id :: integer(). ``` # `new` ```elixir -spec new(Parent, Id, [Option]) -> wxTreebook() when Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}. ``` Creates an empty `m:wxTreebook`. # `setImageList` ```elixir -spec setImageList(This, ImageList) -> ok when This :: wxTreebook(), ImageList :: wxImageList:wxImageList(). ``` Sets the image list to use. It does not take ownership of the image list, you must delete it yourself. See: * `m:wxImageList` * `assignImageList/2` # `setPageImage` ```elixir -spec setPageImage(This, Page, Image) -> boolean() when This :: wxTreebook(), Page :: integer(), Image :: integer(). ``` Sets the image index for the given page. `image` is an index into the image list which was set with `setImageList/2`. # `setPageSize` ```elixir -spec setPageSize(This, Size) -> ok when This :: wxTreebook(), Size :: {W :: integer(), H :: integer()}. ``` Sets the width and height of the pages. Note: This method is currently not implemented for wxGTK. # `setPageText` ```elixir -spec setPageText(This, Page, Text) -> boolean() when This :: wxTreebook(), Page :: integer(), Text :: unicode:chardata(). ``` Sets the text for the given page. # `setSelection` ```elixir -spec setSelection(This, Page) -> integer() when This :: wxTreebook(), Page :: integer(). ``` Sets the selection to the given page, returning the previous selection. Notice that the call to this function generates the page changing events, use the `changeSelection/2` function if you don't want these events to be generated. See: `wxBookCtrlBase:getSelection/1` --- *Consult [api-reference.md](api-reference.md) for complete listing*