--- a/ui/ui/container.h Mon Oct 02 19:56:18 2023 +0200 +++ b/ui/ui/container.h Tue Oct 03 12:36:57 2023 +0200 @@ -41,6 +41,15 @@ UI_CONTAINER_GRID } UiSubContainerType; +typedef enum UiTabViewType { + UI_TABVIEW_DEFAULT = 0, + UI_TABVIEW_DOC, + UI_TABVIEW_NAVIGATION_SIDE, + UI_TABVIEW_NAVIGATION_TOP, + UI_TABVIEW_NAVIGATION_TOP2, + UI_TABVIEW_INVISIBLE +} UiTabViewType; + typedef struct UiContainerArgs { UiTri fill; UiBool hexpand; @@ -72,6 +81,27 @@ UiBool isexpanded; } UiFrameArgs; +typedef struct UiTabViewArgs { + UiTri fill; + UiBool hexpand; + UiBool vexpand; + int colspan; + int rowspan; + + UiTabViewType tabview; + + UiSubContainerType subcontainer; + + int margin; + int spacing; + int columnspacing; + int rowspacing; + + const char* label; + UiBool isexpanded; +} UiTabViewArgs; + + #define UI_CTN(obj, ctn) for(ctn;ui_container_finish(obj);ui_container_begin_close(obj)) @@ -81,6 +111,7 @@ #define ui_frame(obj, ...) for(ui_frame_create(obj, (UiFrameArgs){ __VA_ARGS__ });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_expander(obj, ...) for(ui_expander_create(obj, (UiFrameArgs){ __VA_ARGS__ });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_scrolledwindow(obj, ...) for(ui_scrolledwindow_create(obj, (UiFrameArgs){ __VA_ARGS__ });ui_container_finish(obj);ui_container_begin_close(obj)) +#define ui_tabview(obj, ...) for(ui_tabview_create(obj, (UiTabViewArgs){ __VA_ARGS__ });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_vbox0(obj) for(ui_vbox_create(obj, (UiContainerArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_hbox0(obj) for(ui_hbox_create(obj, (UiContainerArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) @@ -88,6 +119,9 @@ #define ui_frame0(obj) for(ui_frame_create(obj, (UiFrameArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_expander0(obj) for(ui_expande_create(obj, (UiFrameArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) #define ui_scrolledwindow0(obj) for(ui_scrolledwindow_create(obj, (UiFrameArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) +#define ui_tabview0(obj) for(ui_tabview_create(obj, (UiTabViewArgs){ 0 });ui_container_finish(obj);ui_container_begin_close(obj)) + +#define ui_tab(obj, label) for(ui_tab_create(obj, label);ui_container_finish(obj);ui_container_begin_close(obj)) void ui_end(UiObject *obj); @@ -97,7 +131,9 @@ UIWIDGET ui_frame_create(UiObject* obj, UiFrameArgs args); UIWIDGET ui_expander_create(UiObject* obj, UiFrameArgs args); UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args); +UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs args); +void ui_tab_create(UiObject* obj, const char* title); UIWIDGET ui_scrolledwindow_deprecated(UiObject *obj); @@ -106,8 +142,8 @@ UIWIDGET ui_hsplitpane(UiObject *obj, int max); UIWIDGET ui_vsplitpane(UiObject *obj, int max); -UIWIDGET ui_tabview(UiObject *obj); -void ui_tab(UiObject *obj, char *title); +UIWIDGET ui_tabview_deprecated(UiObject *obj); + void ui_select_tab(UIWIDGET tabview, int tab); // box container layout functions