#ifndef WXD_TREECTRL_H
#define WXD_TREECTRL_H
#include <stdint.h>
#include "../wxd_types.h"
WXD_EXPORTED wxd_TreeItemData_t*
wxd_TreeItemData_Create(void* client_data);
WXD_EXPORTED void
wxd_TreeItemData_Free(wxd_TreeItemData_t* data);
WXD_EXPORTED void*
wxd_TreeItemData_GetClientData(wxd_TreeItemData_t* data);
WXD_EXPORTED void
wxd_TreeItemData_SetClientData(wxd_TreeItemData_t* data, void* client_data);
WXD_EXPORTED wxd_TreeCtrl_t*
wxd_TreeCtrl_Create(wxd_Window_t* parent, wxd_Id id, wxd_Point pos, wxd_Size size,
wxd_Style_t style);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_AddRoot(wxd_TreeCtrl_t* self, const char* text, int image, int selImage, void* data);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_AppendItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* parent_id, const char* text,
int image, int selImage, void* data);
WXD_EXPORTED void
wxd_TreeCtrl_Delete(wxd_TreeCtrl_t* self, const wxd_TreeItemId_t* item_id);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetSelection(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_SelectItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id);
WXD_EXPORTED void
wxd_TreeCtrl_Expand(wxd_TreeCtrl_t* self, const wxd_TreeItemId_t* item_id);
WXD_EXPORTED int64_t
wxd_TreeCtrl_GetItemData(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id);
WXD_EXPORTED bool
wxd_TreeCtrl_SetItemData(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id, int64_t data);
WXD_EXPORTED void
wxd_TreeItemId_Free(wxd_TreeItemId_t* item_id);
WXD_EXPORTED bool
wxd_TreeItemId_IsOk(wxd_TreeItemId_t* item_id);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeItemId_Clone(const wxd_TreeItemId_t* item_id);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetRootItem(wxd_TreeCtrl_t* self);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetFirstChild(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id, void** cookie);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetNextChild(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id, void** cookie);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetNextSibling(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id);
WXD_EXPORTED size_t
wxd_TreeCtrl_GetChildrenCount(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* item_id, bool recursively);
typedef enum : int32_t {
WXD_TreeItemIcon_Normal = 0, WXD_TreeItemIcon_Selected, WXD_TreeItemIcon_Expanded, WXD_TreeItemIcon_SelectedExpanded } wxd_TreeItemIconType_t;
WXD_EXPORTED void
wxd_TreeCtrl_SetImageList(wxd_TreeCtrl_t* self, wxd_ImageList_t* imageList);
WXD_EXPORTED wxd_ImageList_t*
wxd_TreeCtrl_GetImageList(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemImage(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, int image,
wxd_TreeItemIconType_t which);
WXD_EXPORTED int
wxd_TreeCtrl_GetItemImage(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId,
wxd_TreeItemIconType_t which);
WXD_EXPORTED int
wxd_TreeCtrl_GetItemText(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, char* buffer, size_t buffer_len);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemText(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, const char* text);
WXD_EXPORTED void
wxd_TreeCtrl_EnsureVisible(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SetFocusedItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetFocusedItem(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_ExpandAll(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_Collapse(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_CollapseAll(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_CollapseAllChildren(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_CollapseAndReset(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_Toggle(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED bool
wxd_TreeCtrl_IsExpanded(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED bool
wxd_TreeCtrl_IsSelected(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_UnselectAll(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_UnselectItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SelectAll(wxd_TreeCtrl_t* self);
WXD_EXPORTED size_t
wxd_TreeCtrl_GetSelections(wxd_TreeCtrl_t* self, wxd_TreeItemId_t** items, size_t max_items);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetItemParent(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetPrevSibling(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_GetLastChild(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED bool
wxd_TreeCtrl_IsVisible(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED bool
wxd_TreeCtrl_ItemHasChildren(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED bool
wxd_TreeCtrl_IsBold(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemBold(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, bool bold);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemTextColour(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, wxd_Colour_t colour);
WXD_EXPORTED wxd_Colour_t
wxd_TreeCtrl_GetItemTextColour(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemBackgroundColour(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, wxd_Colour_t colour);
WXD_EXPORTED wxd_Colour_t
wxd_TreeCtrl_GetItemBackgroundColour(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemFont(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, wxd_Font_t* font);
WXD_EXPORTED wxd_Font_t*
wxd_TreeCtrl_GetItemFont(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_InsertItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* parent, wxd_TreeItemId_t* idPrevious,
const char* text, int image, int selImage, void* data);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_InsertItemBefore(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* parent, size_t pos,
const char* text, int image, int selImage, void* data);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_PrependItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* parent, const char* text,
int image, int selImage, void* data);
WXD_EXPORTED void
wxd_TreeCtrl_DeleteAllItems(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_DeleteChildren(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED size_t
wxd_TreeCtrl_GetCount(wxd_TreeCtrl_t* self);
WXD_EXPORTED wxd_TextCtrl_t*
wxd_TreeCtrl_EditLabel(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_EndEditLabel(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, bool discardChanges);
WXD_EXPORTED wxd_TextCtrl_t*
wxd_TreeCtrl_GetEditControl(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_ScrollTo(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SortChildren(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED wxd_TreeItemId_t*
wxd_TreeCtrl_HitTest(wxd_TreeCtrl_t* self, wxd_Point point, int* flags);
WXD_EXPORTED bool
wxd_TreeCtrl_GetBoundingRect(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, wxd_Rect* rect, bool textOnly);
WXD_EXPORTED void
wxd_TreeCtrl_SetStateImageList(wxd_TreeCtrl_t* self, wxd_ImageList_t* imageList);
WXD_EXPORTED wxd_ImageList_t*
wxd_TreeCtrl_GetStateImageList(wxd_TreeCtrl_t* self);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemState(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, int state);
WXD_EXPORTED int
wxd_TreeCtrl_GetItemState(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId);
WXD_EXPORTED void
wxd_TreeCtrl_SetItemHasChildren(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, bool has);
WXD_EXPORTED void
wxd_TreeCtrl_EnableItem(wxd_TreeCtrl_t* self, wxd_TreeItemId_t* itemId, bool enable);
typedef enum : int32_t {
WXD_TREE_HITTEST_ABOVE = 0x0001,
WXD_TREE_HITTEST_BELOW = 0x0002,
WXD_TREE_HITTEST_NOWHERE = 0x0004,
WXD_TREE_HITTEST_ONITEMBUTTON = 0x0008,
WXD_TREE_HITTEST_ONITEMICON = 0x0010,
WXD_TREE_HITTEST_ONITEMINDENT = 0x0020,
WXD_TREE_HITTEST_ONITEMLABEL = 0x0040,
WXD_TREE_HITTEST_ONITEMRIGHT = 0x0080,
WXD_TREE_HITTEST_ONITEMSTATEICON = 0x0100,
WXD_TREE_HITTEST_TOLEFT = 0x0200,
WXD_TREE_HITTEST_TORIGHT = 0x0400,
WXD_TREE_HITTEST_ONITEMUPPERPART = 0x0800,
WXD_TREE_HITTEST_ONITEMLOWERPART = 0x1000,
WXD_TREE_HITTEST_ONITEM = WXD_TREE_HITTEST_ONITEMICON | WXD_TREE_HITTEST_ONITEMLABEL
} wxd_TreeHitTestFlags;
#endif