From: Olaf Wintermann Date: Thu, 18 Jun 2026 16:11:23 +0000 (+0200) Subject: implement new toolkit icon definitions X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=4912667fab61b71855d9ef44613ce2aa3dc8b745;p=note.git implement new toolkit icon definitions --- diff --git a/application/src/main.rs b/application/src/main.rs index 2e7901b..12aa03c 100644 --- a/application/src/main.rs +++ b/application/src/main.rs @@ -150,8 +150,7 @@ fn create_toolbar(app: &AppContext) { app.toolbar_item("new_notebook").icon(UiIconSet::NewFolder.as_str()).action("new_notebook").create(); app.toolbar_item("go_back").icon(UiIconSet::GoBack.as_str()).action("go_back").create(); app.toolbar_item("go_forward").icon(UiIconSet::GoForward.as_str()).action("go_forward").create(); - app.toolbar_item("new_note").icon(UiIconSet::Add.as_str()).action("new_note").states(&[AppStates::NoteEnableNew as i32]).create(); - app.toolbar_item("show_list").icon(UiIconSet::List.as_str()).action("show_list").create(); + app.toolbar_item("new_note").icon(UiIconSet::NewDocument.as_str()).action("new_note").states(&[AppStates::NoteEnableNew as i32]).create(); app.toolbar_add_default("new_notebook", ToolbarItemPosition::SidebarLeft); app.toolbar_add_default("go_back", ToolbarItemPosition::Left); diff --git a/ui-rs/src/ui/icon.rs b/ui-rs/src/ui/icon.rs index 327ee09..2b568e3 100644 --- a/ui-rs/src/ui/icon.rs +++ b/ui-rs/src/ui/icon.rs @@ -33,19 +33,45 @@ use std::fmt::{Display, Formatter}; pub enum UiIconSet { Home = 0, NewWindow, - Refresh, + NewTab, NewFolder, + NewDocument, + NewAppointment, + NewChatMessage, + NewContact, + NewMail, + AddBookmark, + AddImage, + AddLink, + AddText, Add, + Remove, + Refresh, Upload, SaveLocal, - Delete, - DockLeft, - DockRight, + EditCopy, + EditCut, + EditDelete, + EditPaste, + Undo, + Redo, + SidebarLeft, + SidebarRight, GoBack, GoForward, GoUp, GoDown, - List + ViewList, + ViewGrid, + ViewDual, + ViewFullscreen, + ViewRestore, + TextBold, + TextItalic, + TextUnderline, + ListBullet, + ListOrdered, + ListCheck, } impl UiIconSet { diff --git a/ui/common/args.c b/ui/common/args.c index 77b302b..8c1e2b4 100644 --- a/ui/common/args.c +++ b/ui/common/args.c @@ -406,6 +406,81 @@ void ui_toolbar_toggleitem_args_free(UiToolbarToggleItemArgs *args) { free(args); } +/* ---------------------------- UiToolbarContentToggleItemArgs ---------------------------- */ + +UiToolbarContentToggleItemArgs* ui_toolbar_content_toggleitem_args_new(void) { + UiToolbarContentToggleItemArgs *args = malloc(sizeof(UiToolbarContentToggleItemArgs)); + memset(args, 0, sizeof(UiToolbarContentToggleItemArgs)); + return args; +} + +void ui_toolbar_content_toggleitem_args_set_label0(UiToolbarContentToggleItemArgs *args, const char *label) { + args->label0 = strdup(label); +} + +void ui_toolbar_content_toggleitem_args_set_icon0(UiToolbarContentToggleItemArgs *args, const char *icon) { + args->icon0 = strdup(icon); +} + +void ui_toolbar_content_toggleitem_args_set_tooltip0(UiToolbarContentToggleItemArgs *args, const char *tooltip) { + args->tooltip0 = strdup(tooltip); +} + +void ui_toolbar_content_toggleitem_args_set_label1(UiToolbarContentToggleItemArgs *args, const char *label) { + args->label1 = strdup(label); +} + +void ui_toolbar_content_toggleitem_args_set_icon1(UiToolbarContentToggleItemArgs *args, const char *icon) { + args->icon1 = strdup(icon); +} + +void ui_toolbar_content_toggleitem_args_set_tooltip1(UiToolbarContentToggleItemArgs *args, const char *tooltip) { + args->tooltip1 = strdup(tooltip); +} + +void ui_toolbar_content_toggleitem_args_set_varname(UiToolbarContentToggleItemArgs *args, const char *varname) { + args->varname = strdup(varname); +} + +void ui_toolbar_content_toggleitem_args_set_action(UiToolbarContentToggleItemArgs *args, const char *action) { + args->action = strdup(action); +} + +void ui_toolbar_content_toggleitem_args_set_onchange(UiToolbarContentToggleItemArgs *args, ui_callback callback) { + args->onchange = callback; +} + +void ui_toolbar_content_toggleitem_args_set_onchangedata(UiToolbarContentToggleItemArgs *args, void *onchangedata) { + args->onchangedata = onchangedata; +} + +void ui_toolbar_content_toggleitem_args_set_istogglebutton(UiToolbarContentToggleItemArgs *args, UiBool value) { + args->istogglebutton = value; +} + +void ui_toolbar_content_toggleitem_args_set_toggled_by_state(UiToolbarContentToggleItemArgs *args, int state) { + args->toggled_by_state = state; +} + +void ui_toolbar_content_toggleitem_args_set_states(UiToolbarContentToggleItemArgs *args,int *states, int numstates) { + args->states = calloc(numstates+1, sizeof(int)); + memcpy((void*)args->states, states, numstates * sizeof(int)); + ((int*)args->states)[numstates] = -1; +} + +void ui_toolbar_content_toggleitem_args_free(UiToolbarContentToggleItemArgs *args) { + free((void*)args->label0); + free((void*)args->icon0); + free((void*)args->tooltip0); + free((void*)args->label1); + free((void*)args->icon1); + free((void*)args->tooltip1); + free((void*)args->varname); + free((void*)args->action); + free((void*)args->states); + free(args); +} + /* ---------------------------- UiToolbarMenuArgs ---------------------------- */ @@ -1632,6 +1707,164 @@ void ui_toggle_args_free(UiToggleArgs *args) { free(args); } +/* ------------------------- UiContentToggleArgs ----------------------------*/ + + +UiContentToggleArgs* ui_content_toggle_args_new(void) { + UiContentToggleArgs *args = malloc(sizeof(UiContentToggleArgs)); + memset(args, 0, sizeof(UiContentToggleArgs)); + return args; +} + +void ui_content_toggle_args_set_fill(UiContentToggleArgs *args, UiBool fill) { + args->fill = fill; +} + +void ui_content_toggle_args_set_hexpand(UiContentToggleArgs *args, UiBool value) { + args->hexpand = value; +} + +void ui_content_toggle_args_set_vexpand(UiContentToggleArgs *args, UiBool value) { + args->vexpand = value; +} + +void ui_content_toggle_args_set_hfill(UiContentToggleArgs *args, UiBool value) { + args->hfill = value; +} + +void ui_content_toggle_args_set_vfill(UiContentToggleArgs *args, UiBool value) { + args->vfill = value; +} + +void ui_content_toggle_args_set_override_defaults(UiContentToggleArgs *args, UiBool value) { + args->override_defaults = value; +} + +void ui_content_toggle_args_set_margin(UiContentToggleArgs *args, int value) { + args->margin = value; +} + +void ui_content_toggle_args_set_margin_left(UiContentToggleArgs *args, int value) { + args->margin_left = value; +} + +void ui_content_toggle_args_set_margin_right(UiContentToggleArgs *args, int value) { + args->margin_right = value; +} + +void ui_content_toggle_args_set_margin_top(UiContentToggleArgs *args, int value) { + args->margin_top = value; +} + +void ui_content_toggle_args_set_margin_bottom(UiContentToggleArgs *args, int value) { + args->margin_bottom = value; +} + +void ui_content_toggle_args_set_colspan(UiContentToggleArgs *args, int colspan) { + args->colspan = colspan; +} + +void ui_content_toggle_args_set_rowspan(UiContentToggleArgs *args, int rowspan) { + args->rowspan = rowspan; +} + + +void ui_content_toggle_args_set_name(UiContentToggleArgs *args, const char *name) { + args->name = strdup(name); +} + +void ui_content_toggle_args_set_style_class(UiContentToggleArgs *args, const char *classname) { + args->style_class = strdup(classname); +} + +void ui_content_toggle_args_set_label0(UiContentToggleArgs *args, const char *label){ + args->label0 = strdup(label); +} + +void ui_content_toggle_args_set_icon0(UiContentToggleArgs *args, const char *icon){ + args->icon0 = strdup(icon); +} + +void ui_content_toggle_args_set_tooltip0(UiContentToggleArgs *args, const char *tooltip) { + args->tooltip0 = strdup(tooltip); +} + +void ui_content_toggle_args_set_label1(UiContentToggleArgs *args, const char *label){ + args->label1 = strdup(label); +} + +void ui_content_toggle_args_set_icon1(UiContentToggleArgs *args, const char *icon){ + args->icon1 = strdup(icon); +} + +void ui_content_toggle_args_set_tooltip1(UiContentToggleArgs *args, const char *tooltip) { + args->tooltip1 = strdup(tooltip); +} + +void ui_content_toggle_args_set_labeltype(UiContentToggleArgs *args, int labeltype){ + args->labeltype = labeltype; +} + +void ui_content_toggle_args_set_onchange(UiContentToggleArgs *args, ui_callback callback){ + args->onchange = callback; +} + +void ui_content_toggle_args_set_onchangedata(UiContentToggleArgs *args, void *onchangedata){ + args->onchangedata = onchangedata; +} + +void ui_content_toggle_args_set_action(UiContentToggleArgs *args, const char *action) { + args->action = strdup(action); +} + +void ui_content_toggle_args_set_varname(UiContentToggleArgs *args, const char *varname) { + args->varname = strdup(varname); +} + +void ui_content_toggle_args_set_value(UiContentToggleArgs *args, UiInteger *value) { + args->value = value; +} + +void ui_content_toggle_args_set_toggled_by_state(UiContentToggleArgs *args, int state) { + args->toggled_by_state = state; +} + +void ui_content_toggle_args_set_istogglebutton(UiContentToggleArgs *args, UiBool value) { + args->istogglebutton = value; +} + +void ui_content_toggle_args_set_enablestate(UiContentToggleArgs *args, int state) { + args->enable_state = state; +} + +void ui_content_toggle_args_set_states(UiContentToggleArgs *args, int *states, int numstates) { + args->states = calloc(numstates+1, sizeof(int)); + memcpy((void*)args->states, states, numstates * sizeof(int)); + ((int*)args->states)[numstates] = -1; +} + +void ui_content_toggle_args_set_visibility_states(UiContentToggleArgs *args, int *states, int numstates) { + args->visibility_states = calloc(numstates+1, sizeof(int)); + memcpy((void*)args->visibility_states, states, numstates * sizeof(int)); + ((int*)args->visibility_states)[numstates] = -1; +} + +void ui_content_toggle_args_free(UiContentToggleArgs *args) { + free((void*)args->name); + free((void*)args->style_class); + free((void*)args->label0); + free((void*)args->icon0); + free((void*)args->tooltip0); + free((void*)args->label1); + free((void*)args->icon1); + free((void*)args->tooltip1); + free((void*)args->varname); + free((void*)args->action); + free((void*)args->states); + free((void*)args->visibility_states); + free(args); +} + /* ------------------------- UiLinkButtonArgs ----------------------------*/ diff --git a/ui/common/args.h b/ui/common/args.h index 5f4171f..7a8dbd7 100644 --- a/ui/common/args.h +++ b/ui/common/args.h @@ -126,6 +126,22 @@ UIEXPORT void ui_toolbar_toggleitem_args_set_onchangedata(UiToolbarToggleItemArg UIEXPORT void ui_toolbar_toggleitem_args_set_states(UiToolbarToggleItemArgs *args, int *states, int numstates); UIEXPORT void ui_toolbar_toggleitem_args_free(UiToolbarToggleItemArgs *args); +UIEXPORT UiToolbarContentToggleItemArgs* ui_toolbar_content_toggleitem_args_new(void); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_label0(UiToolbarContentToggleItemArgs *args, const char *label); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_icon0(UiToolbarContentToggleItemArgs *args, const char *icon); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_tooltip0(UiToolbarContentToggleItemArgs *args, const char *tooltip); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_label1(UiToolbarContentToggleItemArgs *args, const char *label); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_icon1(UiToolbarContentToggleItemArgs *args, const char *icon); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_tooltip1(UiToolbarContentToggleItemArgs *args, const char *tooltip); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_varname(UiToolbarContentToggleItemArgs *args, const char *varname); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_action(UiToolbarContentToggleItemArgs *args, const char *action); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_onchange(UiToolbarContentToggleItemArgs *args, ui_callback callback); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_onchangedata(UiToolbarContentToggleItemArgs *args, void *onchangedata); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_states(UiToolbarContentToggleItemArgs *args, int *states, int numstates); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_istogglebutton(UiToolbarContentToggleItemArgs *args, UiBool value); +UIEXPORT void ui_toolbar_content_toggleitem_args_set_toggled_by_state(UiToolbarContentToggleItemArgs *args, int state); +UIEXPORT void ui_toolbar_content_toggleitem_args_free(UiToolbarContentToggleItemArgs *args); + UIEXPORT UiToolbarMenuArgs* ui_toolbar_menu_args_new(void); UIEXPORT void ui_toolbar_menu_args_set_label(UiToolbarMenuArgs *args, const char *label); UIEXPORT void ui_toolbar_menu_args_set_icon(UiToolbarMenuArgs *args, const char *icon); @@ -394,6 +410,41 @@ UIEXPORT void ui_toggle_args_set_states(UiToggleArgs *args, int *states, int num UIEXPORT void ui_toggle_args_set_visibility_states(UiToggleArgs *args, int *states, int numstates); UIEXPORT void ui_toggle_args_free(UiToggleArgs *args); +UIEXPORT UiContentToggleArgs* ui_content_toggle_args_new(void); +UIEXPORT void ui_content_toggle_args_set_fill(UiContentToggleArgs *args, UiBool fill); +UIEXPORT void ui_content_toggle_args_set_hexpand(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_vexpand(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_hfill(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_vfill(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_override_defaults(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_margin(UiContentToggleArgs *args, int value); +UIEXPORT void ui_content_toggle_args_set_margin_left(UiContentToggleArgs *args, int value); +UIEXPORT void ui_content_toggle_args_set_margin_right(UiContentToggleArgs *args, int value); +UIEXPORT void ui_content_toggle_args_set_margin_top(UiContentToggleArgs *args, int value); +UIEXPORT void ui_content_toggle_args_set_margin_bottom(UiContentToggleArgs *args, int value); +UIEXPORT void ui_content_toggle_args_set_colspan(UiContentToggleArgs *args, int colspan); +UIEXPORT void ui_content_toggle_args_set_rowspan(UiContentToggleArgs *args, int rowspan); +UIEXPORT void ui_content_toggle_args_set_name(UiContentToggleArgs *args, const char *name); +UIEXPORT void ui_content_toggle_args_set_style_class(UiContentToggleArgs *args, const char *classname); +UIEXPORT void ui_content_toggle_args_set_label0(UiContentToggleArgs *args, const char *label); +UIEXPORT void ui_content_toggle_args_set_icon0(UiContentToggleArgs *args, const char *icon); +UIEXPORT void ui_content_toggle_args_set_tooltip0(UiContentToggleArgs *args, const char *tooltip); +UIEXPORT void ui_content_toggle_args_set_label1(UiContentToggleArgs *args, const char *label); +UIEXPORT void ui_content_toggle_args_set_icon1(UiContentToggleArgs *args, const char *icon); +UIEXPORT void ui_content_toggle_args_set_tooltip1(UiContentToggleArgs *args, const char *tooltip); +UIEXPORT void ui_content_toggle_args_set_labeltype(UiContentToggleArgs *args, int labeltype); +UIEXPORT void ui_content_toggle_args_set_onchange(UiContentToggleArgs *args, ui_callback callback); +UIEXPORT void ui_content_toggle_args_set_onchangedata(UiContentToggleArgs *args, void *onchangedata); +UIEXPORT void ui_content_toggle_args_set_action(UiContentToggleArgs *args, const char *action); +UIEXPORT void ui_content_toggle_args_set_varname(UiContentToggleArgs *args, const char *varname); +UIEXPORT void ui_content_toggle_args_set_value(UiContentToggleArgs *args, UiInteger *value); +UIEXPORT void ui_content_toggle_args_set_toggled_by_state(UiContentToggleArgs *args, int state); +UIEXPORT void ui_content_toggle_args_set_istogglebutton(UiContentToggleArgs *args, UiBool value); +UIEXPORT void ui_content_toggle_args_set_enablestate(UiContentToggleArgs *args, int state); +UIEXPORT void ui_content_toggle_args_set_states(UiContentToggleArgs *args, int *states, int numstates); +UIEXPORT void ui_content_toggle_args_set_visibility_states(UiContentToggleArgs *args, int *states, int numstates); +UIEXPORT void ui_content_toggle_args_free(UiContentToggleArgs *args); + UIEXPORT UiLinkButtonArgs* ui_linkbutton_args_new(void); UIEXPORT void ui_linkbutton_args_set_fill(UiLinkButtonArgs *args, UiBool fill); UIEXPORT void ui_linkbutton_args_set_hexpand(UiLinkButtonArgs *args, UiBool value); diff --git a/ui/common/icons.c b/ui/common/icons.c index decf616..e5b710b 100644 --- a/ui/common/icons.c +++ b/ui/common/icons.c @@ -30,21 +30,47 @@ const char* ui_icon_name(enum UiIconId icon_id) { switch(icon_id) { - case UI_ICON_ID_HOME : return UI_ICON_HOME; - case UI_ICON_ID_NEW_WINDOW : return UI_ICON_NEW_WINDOW; - case UI_ICON_ID_REFRESH : return UI_ICON_REFRESH; - case UI_ICON_ID_NEW_FOLDER : return UI_ICON_NEW_FOLDER; - case UI_ICON_ID_ADD : return UI_ICON_ADD; - case UI_ICON_ID_UPLOAD : return UI_ICON_UPLOAD; - case UI_ICON_ID_SAVE_LOCAL : return UI_ICON_SAVE_LOCAL; - case UI_ICON_ID_DELETE : return UI_ICON_DELETE; - case UI_ICON_ID_DOCK_LEFT : return UI_ICON_DOCK_LEFT; - case UI_ICON_ID_DOCK_RIGHT : return UI_ICON_DOCK_RIGHT; - case UI_ICON_ID_GO_BACK : return UI_ICON_GO_BACK; - case UI_ICON_ID_GO_FORWARD : return UI_ICON_GO_FORWARD; - case UI_ICON_ID_GO_UP : return UI_ICON_GO_UP; - case UI_ICON_ID_GO_DOWN : return UI_ICON_GO_DOWN; - case UI_ICON_ID_LIST : return UI_ICON_LIST; + case UI_ICON_ID_HOME : return UI_ICON_HOME; + case UI_ICON_ID_NEW_WINDOW : return UI_ICON_NEW_WINDOW; + case UI_ICON_ID_NEW_TAB : return UI_ICON_NEW_TAB; + case UI_ICON_ID_NEW_FOLDER : return UI_ICON_NEW_FOLDER; + case UI_ICON_ID_NEW_DOCUMENT : return UI_ICON_NEW_DOCUMENT; + case UI_ICON_ID_NEW_APPOINTMENT : return UI_ICON_NEW_APPOINTMENT; + case UI_ICON_ID_NEW_CHAT_MESSAGE : return UI_ICON_NEW_CHAT_MESSAGE; + case UI_ICON_ID_NEW_CONTACT : return UI_ICON_NEW_CONTACT; + case UI_ICON_ID_NEW_MAIL : return UI_ICON_NEW_MAIL; + case UI_ICON_ID_ADD_BOOKMARK : return UI_ICON_ADD_BOOKMARK; + case UI_ICON_ID_ADD_IMAGE : return UI_ICON_ADD_IMAGE; + case UI_ICON_ID_ADD_LINK : return UI_ICON_ADD_LINK; + case UI_ICON_ID_ADD_TEXT : return UI_ICON_ADD_TEXT; + case UI_ICON_ID_ADD : return UI_ICON_ADD; + case UI_ICON_ID_REMOVE : return UI_ICON_REMOVE; + case UI_ICON_ID_REFRESH : return UI_ICON_REFRESH; + case UI_ICON_ID_UPLOAD : return UI_ICON_UPLOAD; + case UI_ICON_ID_SAVE_LOCAL : return UI_ICON_SAVE_LOCAL; + case UI_ICON_ID_EDIT_COPY : return UI_ICON_EDIT_COPY; + case UI_ICON_ID_EDIT_CUT : return UI_ICON_EDIT_CUT; + case UI_ICON_ID_EDIT_DELETE : return UI_ICON_EDIT_DELETE; + case UI_ICON_ID_EDIT_PASTE : return UI_ICON_EDIT_PASTE ; + case UI_ICON_ID_UNDO : return UI_ICON_UNDO; + case UI_ICON_ID_REDO : return UI_ICON_REDO; + case UI_ICON_ID_SIDEBAR_LEFT : return UI_ICON_SIDEBAR_LEFT; + case UI_ICON_ID_SIDEBAR_RIGHT : return UI_ICON_SIDEBAR_RIGHT; + case UI_ICON_ID_GO_BACK : return UI_ICON_GO_BACK; + case UI_ICON_ID_GO_FORWARD : return UI_ICON_GO_FORWARD ; + case UI_ICON_ID_GO_UP : return UI_ICON_GO_UP; + case UI_ICON_ID_GO_DOWN : return UI_ICON_GO_DOWN; + case UI_ICON_ID_VIEW_LIST : return UI_ICON_VIEW_LIST; + case UI_ICON_ID_VIEW_GRID : return UI_ICON_VIEW_GRID; + case UI_ICON_ID_VIEW_DUAL : return UI_ICON_VIEW_DUAL; + case UI_ICON_ID_VIEW_FULLSCREEN : return UI_ICON_VIEW_FULLSCREEN; + case UI_ICON_ID_VIEW_RESTORE : return UI_ICON_VIEW_RESTORE; + case UI_ICON_ID_TEXT_BOLD : return UI_ICON_TEXT_BOLD; + case UI_ICON_ID_TEXT_ITALIC : return UI_ICON_TEXT_ITALIC; + case UI_ICON_ID_TEXT_UNDERLINE : return UI_ICON_TEXT_UNDERLINE; + case UI_ICON_ID_LIST_BULLET : return UI_ICON_LIST_BULLET ; + case UI_ICON_ID_LIST_ORDERED : return UI_ICON_LIST_ORDERED; + case UI_ICON_ID_LIST_CHECK : return UI_ICON_LIST_CHECK; } return NULL; } diff --git a/ui/common/toolbar.c b/ui/common/toolbar.c index 9a389d0..552b8e1 100644 --- a/ui/common/toolbar.c +++ b/ui/common/toolbar.c @@ -85,6 +85,25 @@ static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args return newargs; } +static UiToolbarContentToggleItemArgs contenttoggleitemargs_copy(UiToolbarContentToggleItemArgs *args, size_t *ngroups, size_t *nvstates) { + UiToolbarContentToggleItemArgs newargs; + newargs.label0 = nl_strdup(args->label0); + newargs.icon0 = nl_strdup(args->icon0); + newargs.tooltip0 = nl_strdup(args->tooltip0); + newargs.label1 = nl_strdup(args->label1); + newargs.icon1 = nl_strdup(args->icon1); + newargs.tooltip1 = nl_strdup(args->tooltip1); + newargs.varname = nl_strdup(args->varname); + newargs.onchange = args->onchange; + newargs.onchangedata = args->onchangedata; + newargs.action = nl_strdup(args->action); + newargs.toggled_by_state = args->toggled_by_state; + newargs.istogglebutton = args->istogglebutton; + newargs.states = uic_copy_states(args->states, ngroups); + newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates); + return newargs; +} + void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) { UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem)); item->item.type = UI_TOOLBAR_TOGGLEITEM; @@ -92,6 +111,13 @@ void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *arg cxMapPut(toolbar_items, name, item); } +void ui_toolbar_content_toggleitem_create(const char* name, UiToolbarContentToggleItemArgs *args) { + UiToolbarContentToggleItem* item = malloc(sizeof(UiToolbarContentToggleItem)); + item->item.type = UI_TOOLBAR_CONTENT_TOGGLEITEM; + item->args = contenttoggleitemargs_copy(args, &item->nstates, &item->nvstates); + cxMapPut(toolbar_items, name, item); +} + static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) { UiToolbarMenuArgs newargs; newargs.label = nl_strdup(args->label); diff --git a/ui/common/toolbar.h b/ui/common/toolbar.h index 9ae60f0..dd79264 100644 --- a/ui/common/toolbar.h +++ b/ui/common/toolbar.h @@ -40,16 +40,18 @@ extern "C" { #endif -typedef struct UiToolbarItemI UiToolbarItemI; +typedef struct UiToolbarItemI UiToolbarItemI; -typedef struct UiToolbarItem UiToolbarItem; -typedef struct UiToolbarToggleItem UiToolbarToggleItem; +typedef struct UiToolbarItem UiToolbarItem; +typedef struct UiToolbarToggleItem UiToolbarToggleItem; +typedef struct UiToolbarContentToggleItem UiToolbarContentToggleItem; -typedef struct UiToolbarMenuItem UiToolbarMenuItem; +typedef struct UiToolbarMenuItem UiToolbarMenuItem; enum UiToolbarItemType { UI_TOOLBAR_ITEM = 0, UI_TOOLBAR_TOGGLEITEM, + UI_TOOLBAR_CONTENT_TOGGLEITEM, UI_TOOLBAR_MENU }; @@ -73,6 +75,13 @@ struct UiToolbarToggleItem { size_t nvstates; }; +struct UiToolbarContentToggleItem { + UiToolbarItemI item; + UiToolbarContentToggleItemArgs args; + size_t nstates; + size_t nvstates; +}; + struct UiToolbarMenuItem { UiToolbarItemI item; UiMenu menu; diff --git a/ui/gtk/button.c b/ui/gtk/button.c index 5bcc71c..dd6431c 100644 --- a/ui/gtk/button.c +++ b/ui/gtk/button.c @@ -334,7 +334,7 @@ void ui_bind_togglebutton( event); } - if(onchange) { + if(onchange || action) { UiEventData *event = malloc(sizeof(UiEventData)); event->obj = obj; event->userdata = onchangedata; @@ -577,6 +577,163 @@ UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { #endif +static void content_toggle_button_changed(UiContentToggleButton *button) { + if(button->toggled) { + gtk_button_set_label(GTK_BUTTON(button->widget), button->label1); + ui_button_set_icon_name(button->widget, button->icon1); + gtk_widget_set_tooltip_text(button->widget, button->tooltip1); + } else { + gtk_button_set_label(GTK_BUTTON(button->widget), button->label0); + ui_button_set_icon_name(button->widget, button->icon0); + gtk_widget_set_tooltip_text(button->widget, button->tooltip0); + } + + UiEvent e; + e.obj = button->obj; + e.window = button->obj->window; + e.document = button->obj->ctx->document; + e.eventdata = NULL; + e.eventdatatype = 0; + e.intval = button->toggled; + e.set = ui_get_setop(); + + if(button->onchange) { + button->onchange(&e, button->onchangedata); + } + + if(button->onchange_action) { + uic_action_callback(&e, button->onchange_action); + } +} + +static void ui_content_toggle_button_toggled(GtkWidget *widget, UiContentToggleButton *button) { + button->toggled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); + if(ui_get_setop() == 0) { + content_toggle_button_changed(button); + } +} + +static void ui_content_toggle_button_clicked(GtkWidget *widget, UiContentToggleButton *button) { + button->toggled = !button->toggled; + content_toggle_button_changed(button); +} + +static void ui_destroy_content_togglebutton(GtkWidget *widget, UiContentToggleButton *button) { + free(button->label0); + free(button->icon0); + free(button->tooltip0); + free(button->label1); + free(button->icon1); + free(button->tooltip1); + free(button->onchange_action); + free(button); +} + +static void ui_content_togglebutton_enabled_by_state(void *data, int enabled) { + UiContentToggleButton *button = data; + if(button->toggled != enabled) { + button->toggled = enabled; + content_toggle_button_changed(button); + } +} + +UIWIDGET ui_create_content_togglebutton(UiObject *obj, UiContentToggleArgs *args) { + UiContentToggleButton *button = malloc(sizeof(UiContentToggleButton)); + memset(button, 0, sizeof(UiContentToggleButton)); + button->obj = obj; + button->label0 = args->label0 ? strdup(args->label0) : NULL; + button->icon0 = args->icon0 ? strdup(args->icon0) : NULL; + button->tooltip0 = args->tooltip0 ? strdup(args->tooltip0) : NULL; + button->label1 = args->label1 ? strdup(args->label1) : NULL; + button->icon1 = args->icon1 ? strdup(args->icon1) : NULL; + button->tooltip1 = args->tooltip1 ? strdup(args->tooltip1) : NULL; + button->enable_state = args->enable_state; + button->var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); + button->onchange = args->onchange; + button->onchangedata = args->onchangedata; + button->onchange_action = args->action ? strdup(args->action) : NULL; + + const char *label = args->label0; + const char *icon = args->icon0; + const char *tooltip = args->tooltip0; + if(button->var) { + UiInteger *i = button->var->value; + i->obj = button; + i->get = ui_ctntogglebutton_get; + i->set = ui_ctntogglebutton_set; + + if(i->value) { + label = args->label1; + icon = args->label1; + tooltip = args->tooltip1; + button->toggled = 1; + } + } + + GtkWidget *widget; + if(args->istogglebutton) { + widget = gtk_toggle_button_new_with_label(label); + + g_signal_connect( + widget, + "toggled", + G_CALLBACK(ui_content_toggle_button_toggled), + button); + } else { + widget = gtk_button_new_with_label(label); + + g_signal_connect( + widget, + "clicked", + G_CALLBACK(ui_content_toggle_button_clicked), + button); + } + ui_button_set_icon_name(widget, icon); + gtk_widget_set_tooltip_text(widget, tooltip); + button->widget = widget; + + if(args->toggled_by_state != 0) { + CxList *ls = cxArrayListCreate(NULL, sizeof(int), 1); + cxListAdd(ls, &args->toggled_by_state); + uic_add_state_widget(obj->ctx, button, ui_content_togglebutton_enabled_by_state, ls); + cxListFree(ls); + } + + g_signal_connect( + widget, + "destroy", + G_CALLBACK(ui_destroy_content_togglebutton), + button); + + g_object_set_data(G_OBJECT(widget), "ui_content_togglebutton", button); + return widget; +} + +UIWIDGET ui_content_togglebutton_create(UiObject *obj, UiContentToggleArgs *args) { + GtkWidget *widget = ui_create_content_togglebutton(obj, args); + + ui_set_name_and_style(widget, args->name, args->style_class); + ui_set_widget_states(obj->ctx, widget, args->states); + UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; + UiLayout layout = UI_ARGS2LAYOUT(args); + ct->add(ct, widget, &layout); + uic_widget_set_visibility_states(obj->ctx, widget, args->visibility_states); + return widget; +} + +int64_t ui_ctntogglebutton_get(UiInteger *value) { + UiContentToggleButton *button = value->obj; + value->value = button->toggled; + return value->value; +} + +void ui_ctntogglebutton_set(UiInteger *value, int64_t i) { + UiContentToggleButton *button = value->obj; + button->toggled = i != 0; + value->value = button->toggled; + content_toggle_button_changed(button); +} + #if GTK_MAJOR_VERSION >= 4 #define RADIOBUTTON_NEW(group, label) gtk_check_button_new_with_label(label) #define RADIOBUTTON_SET_GROUP(button, group) diff --git a/ui/gtk/button.h b/ui/gtk/button.h index 1c4355b..4972f35 100644 --- a/ui/gtk/button.h +++ b/ui/gtk/button.h @@ -37,6 +37,23 @@ extern "C" { #endif +typedef struct UiContentToggleButton { + UiObject *obj; + UiVar *var; + GtkWidget *widget; + char *label0; + char *icon0; + char *tooltip0; + char *label1; + char *icon1; + char *tooltip1; + ui_callback onchange; + void *onchangedata; + char *onchange_action; + int toggled; + int enable_state; +} UiContentToggleButton; + typedef struct UiLinkButton { UiObject *obj; GtkWidget *widget; @@ -101,9 +118,14 @@ UIWIDGET ui_radiobutton_var(UiObject *obj, char *label, UiVar *var); void ui_radio_obs(GtkToggleButton *widget, UiVarEventData *event); +UIWIDGET ui_create_content_togglebutton(UiObject *obj, UiContentToggleArgs *args); + int64_t ui_switch_get(UiInteger *value); void ui_switch_set(UiInteger *value, int64_t i); +int64_t ui_ctntogglebutton_get(UiInteger *value); +void ui_ctntogglebutton_set(UiInteger *value, int64_t i); + int64_t ui_radiobutton_get(UiInteger *value); void ui_radiobutton_set(UiInteger *value, int64_t i); diff --git a/ui/gtk/headerbar.c b/ui/gtk/headerbar.c index ac435aa..a8ba535 100644 --- a/ui/gtk/headerbar.c +++ b/ui/gtk/headerbar.c @@ -120,6 +120,9 @@ static GtkWidget* create_item(UiObject *obj, GtkWidget *headerbar, GtkWidget *bo case UI_TOOLBAR_TOGGLEITEM: { return ui_add_headerbar_toggleitem(headerbar, box, (UiToolbarToggleItem*)i, obj, pos); } + case UI_TOOLBAR_CONTENT_TOGGLEITEM: { + return ui_add_headerbar_content_toggleitem(headerbar, box, (UiToolbarContentToggleItem*)i, obj, pos); + } case UI_TOOLBAR_MENU: { return ui_add_headerbar_menu(headerbar, box, (UiToolbarMenuItem*)i, obj, pos); } @@ -206,6 +209,33 @@ GtkWidget* ui_add_headerbar_toggleitem( return button; } +GtkWidget* ui_add_headerbar_content_toggleitem( + GtkWidget *headerbar, + GtkWidget *box, + UiToolbarContentToggleItem *item, + UiObject *obj, + enum UiToolbarPos pos) +{ + UiContentToggleArgs args = { 0 }; + args.label0 = item->args.label0; + args.icon0 = item->args.icon0; + args.tooltip0 = item->args.tooltip0; + args.label1 = item->args.label1; + args.icon1 = item->args.icon1; + args.tooltip1 = item->args.tooltip1; + args.varname = item->args.varname; + args.onchange = item->args.onchange; + args.onchangedata = item->args.onchangedata; + args.action = item->args.action; + args.istogglebutton = item->args.istogglebutton; + args.toggled_by_state = item->args.toggled_by_state; + + GtkWidget *button = ui_create_content_togglebutton(obj, &args); + WIDGET_ADD_CSS_CLASS(button, "flat"); + headerbar_add(headerbar, box, button, pos); + return button; +} + GtkWidget* ui_add_headerbar_menu( GtkWidget *headerbar, GtkWidget *box, diff --git a/ui/gtk/headerbar.h b/ui/gtk/headerbar.h index e957c6c..50e877b 100644 --- a/ui/gtk/headerbar.h +++ b/ui/gtk/headerbar.h @@ -81,6 +81,13 @@ GtkWidget* ui_add_headerbar_toggleitem( UiObject *obj, enum UiToolbarPos pos); +GtkWidget* ui_add_headerbar_content_toggleitem( + GtkWidget *headerbar, + GtkWidget *box, + UiToolbarContentToggleItem *item, + UiObject *obj, + enum UiToolbarPos pos); + GtkWidget* ui_add_headerbar_menu( GtkWidget *headerbar, GtkWidget *box, diff --git a/ui/ui/button.h b/ui/ui/button.h index 83d6fd0..ae9155f 100644 --- a/ui/ui/button.h +++ b/ui/ui/button.h @@ -102,6 +102,43 @@ typedef struct UiToggleArgs { const int *visibility_states; } UiToggleArgs; +typedef struct UiContentToggleArgs { + UiBool fill; + UiBool hexpand; + UiBool vexpand; + UiBool hfill; + UiBool vfill; + UiBool override_defaults; + int margin; + int margin_left; + int margin_right; + int margin_top; + int margin_bottom; + int colspan; + int rowspan; + const char *name; + const char *style_class; + + const char *label0; + const char *icon0; + const char *tooltip0; + const char *label1; + const char *icon1; + const char *tooltip1; + UiLabelType labeltype; + UiInteger *value; + const char *varname; + ui_callback onchange; + void *onchangedata; + const char *action; + UiBool istogglebutton; + int enable_state; + int toggled_by_state; + + const int *states; + const int *visibility_states; +} UiContentToggleArgs; + typedef struct UiLinkButtonArgs { UiBool fill; UiBool hexpand; @@ -137,6 +174,7 @@ typedef struct UiLinkButtonArgs { #define ui_togglebutton(obj, ...) ui_togglebutton_create(obj, &(UiToggleArgs){ __VA_ARGS__ } ) #define ui_checkbox(obj, ...) ui_checkbox_create(obj, &(UiToggleArgs){ __VA_ARGS__ } ) #define ui_switch(obj, ...) ui_switch_create(obj, &(UiToggleArgs){ __VA_ARGS__ } ) +#define ui_content_togglebutton(obj, ...) ui_content_togglebutton_create(obj, &(UiContentToggleArgs){ __VA_ARGS__ } ) #define ui_radiobutton(obj, ...) ui_radiobutton_create(obj, &(UiToggleArgs){ __VA_ARGS__ } ) #define ui_linkbutton(obj, ...) ui_linkbutton_create(obj, &(UiLinkButtonArgs){ __VA_ARGS__ }) @@ -144,6 +182,7 @@ UIEXPORT UIWIDGET ui_button_create(UiObject *obj, UiButtonArgs *args); UIEXPORT UIWIDGET ui_togglebutton_create(UiObject *obj, UiToggleArgs *args); UIEXPORT UIWIDGET ui_checkbox_create(UiObject *obj, UiToggleArgs *args); UIEXPORT UIWIDGET ui_switch_create(UiObject *obj, UiToggleArgs *args); +UIEXPORT UIWIDGET ui_content_togglebutton_create(UiObject *obj, UiContentToggleArgs *args); UIEXPORT UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs *args); UIEXPORT UIWIDGET ui_linkbutton_create(UiObject *obj, UiLinkButtonArgs *args); diff --git a/ui/ui/icons.h b/ui/ui/icons.h index 326b568..fba5c73 100644 --- a/ui/ui/icons.h +++ b/ui/ui/icons.h @@ -38,40 +38,92 @@ extern "C" { #ifdef UI_GTK #define UI_ICON_HOME "go-home" -#define UI_ICON_NEW_WINDOW "list-add" -#define UI_ICON_REFRESH "view-refresh" +#define UI_ICON_NEW_WINDOW "window-new" +#define UI_ICON_NEW_TAB "tab-new" #define UI_ICON_NEW_FOLDER "folder-new" -#define UI_ICON_ADD "document-new" +#define UI_ICON_NEW_DOCUMENT "document-new" +#define UI_ICON_NEW_APPOINTMENT "appointment-new" +#define UI_ICON_NEW_CHAT_MESSAGE "chat-message-new" +#define UI_ICON_NEW_CONTACT "contact-new" +#define UI_ICON_NEW_MAIL "mail-message-new" +#define UI_ICON_ADD_BOOKMARK "bookmark-new" +#define UI_ICON_ADD_IMAGE "insert-image" +#define UI_ICON_ADD_LINK "insert-link" +#define UI_ICON_ADD_TEXT "insert-text" +#define UI_ICON_ADD "list-add" +#define UI_ICON_REMOVE "list-remove" +#define UI_ICON_REFRESH "view-refresh" #define UI_ICON_UPLOAD "document-open" #define UI_ICON_SAVE_LOCAL "document-save-as" -#define UI_ICON_DELETE "edit-delete" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" +#define UI_ICON_EDIT_COPY "edit-copy" +#define UI_ICON_EDIT_CUT "edit-cut" +#define UI_ICON_EDIT_DELETE "edit-delete" +#define UI_ICON_EDIT_PASTE "edit-paste" +#define UI_ICON_UNDO "edit-undo" +#define UI_ICON_REDO "edit-redo" +#define UI_ICON_SIDEBAR_LEFT "sidebar-show" +#define UI_ICON_SIDEBAR_RIGHT "sidebar-show-right" #define UI_ICON_GO_BACK "go-previous" #define UI_ICON_GO_FORWARD "go-next" #define UI_ICON_GO_UP "go-up" #define UI_ICON_GO_DOWN "go-down" -#define UI_ICON_LIST "view-list" +#define UI_ICON_VIEW_LIST "view-list" +#define UI_ICON_VIEW_GRID "view-grid" +#define UI_ICON_VIEW_DUAL "view-dual" +#define UI_ICON_VIEW_FULLSCREEN "view-fullscreen" +#define UI_ICON_VIEW_RESTORE "view-restore" +#define UI_ICON_TEXT_BOLD "format-text-bold" +#define UI_ICON_TEXT_ITALIC "format-text-italic" +#define UI_ICON_TEXT_UNDERLINE "format-text-underline" +#define UI_ICON_LIST_BULLET "view-list-bullet" +#define UI_ICON_LIST_ORDERED "view-list-ordered" +#define UI_ICON_LIST_CHECK "checkbox-checked" #endif /* UI_GTK */ #ifdef UI_QT #define UI_ICON_HOME "go-home" -#define UI_ICON_NEW_WINDOW "list-add" -#define UI_ICON_REFRESH "view-refresh" +#define UI_ICON_NEW_WINDOW "window-new" +#define UI_ICON_NEW_TAB "tab-new" #define UI_ICON_NEW_FOLDER "folder-new" -#define UI_ICON_ADD "document-new" +#define UI_ICON_NEW_DOCUMENT "document-new" +#define UI_ICON_NEW_APPOINTMENT "appointment-new" +#define UI_ICON_NEW_CHAT_MESSAGE "chat-message-new" +#define UI_ICON_NEW_CONTACT "contact-new" +#define UI_ICON_NEW_MAIL "mail-message-new" +#define UI_ICON_ADD_BOOKMARK "bookmark-new" +#define UI_ICON_ADD_IMAGE "insert-image" +#define UI_ICON_ADD_LINK "insert-link" +#define UI_ICON_ADD_TEXT "insert-text" +#define UI_ICON_ADD "list-add" +#define UI_ICON_REMOVE "list-remove" +#define UI_ICON_REFRESH "view-refresh" #define UI_ICON_UPLOAD "document-open" #define UI_ICON_SAVE_LOCAL "document-save-as" -#define UI_ICON_DELETE "edit-delete" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" +#define UI_ICON_EDIT_COPY "edit-copy" +#define UI_ICON_EDIT_CUT "edit-cut" +#define UI_ICON_EDIT_DELETE "edit-delete" +#define UI_ICON_EDIT_PASTE "edit-paste" +#define UI_ICON_UNDO "edit-undo" +#define UI_ICON_REDO "edit-redo" +#define UI_ICON_SIDEBAR_LEFT "sidebar-show" +#define UI_ICON_SIDEBAR_RIGHT "sidebar-show-right" #define UI_ICON_GO_BACK "go-previous" #define UI_ICON_GO_FORWARD "go-next" #define UI_ICON_GO_UP "go-up" #define UI_ICON_GO_DOWN "go-down" -#define UI_ICON_LIST "view-list" +#define UI_ICON_VIEW_LIST "view-list" +#define UI_ICON_VIEW_GRID "view-grid" +#define UI_ICON_VIEW_DUAL "view-dual" +#define UI_ICON_VIEW_FULLSCREEN "view-fullscreen" +#define UI_ICON_VIEW_RESTORE "view-restore" +#define UI_ICON_TEXT_BOLD "format-text-bold" +#define UI_ICON_TEXT_ITALIC "format-text-italic" +#define UI_ICON_TEXT_UNDERLINE "format-text-underline" +#define UI_ICON_LIST_BULLET "view-list-bullet" +#define UI_ICON_LIST_ORDERED "view-list-ordered" +#define UI_ICON_LIST_CHECK "checkbox-checked" #endif /* UI_QT */ @@ -97,21 +149,47 @@ extern "C" { #ifdef UI_COCOA -#define UI_ICON_HOME "NSImageNameHomeTemplate" -#define UI_ICON_NEW_WINDOW "" -#define UI_ICON_REFRESH "NSImageNameRefreshTemplate" -#define UI_ICON_NEW_FOLDER "" -#define UI_ICON_ADD "NSImageNameAddTemplate" -#define UI_ICON_UPLOAD "" -#define UI_ICON_SAVE_LOCAL "" -#define UI_ICON_DELETE "" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" -#define UI_ICON_GO_BACK "NSImageNameGoLeftTemplate" -#define UI_ICON_GO_FORWARD "NSImageNameGoRightTemplate" -#define UI_ICON_GO_UP "" -#define UI_ICON_GO_DOWN "" -#define UI_ICON_LIST "" +#define UI_ICON_HOME "go-home" +#define UI_ICON_NEW_WINDOW "macwindow.badge.plus" +#define UI_ICON_NEW_TAB "plus.square" +#define UI_ICON_NEW_FOLDER "folder.badge.plus" +#define UI_ICON_NEW_DOCUMENT "document.badge.plus" +#define UI_ICON_NEW_APPOINTMENT "calendar.badge.plus" +#define UI_ICON_NEW_CHAT_MESSAGE "plus.bubble" +#define UI_ICON_NEW_CONTACT "person.badge.plus" +#define UI_ICON_NEW_MAIL "envelope.badge.plus" +#define UI_ICON_ADD_BOOKMARK "book.badge.plus" +#define UI_ICON_ADD_IMAGE "photo.badge.plus" +#define UI_ICON_ADD_LINK "link.badge.plus" +#define UI_ICON_ADD_TEXT "text.badge.plus" +#define UI_ICON_ADD "plus" +#define UI_ICON_REMOVE "minus" +#define UI_ICON_REFRESH "arrow.clockwise" +#define UI_ICON_UPLOAD "square.and.arrow.up" +#define UI_ICON_SAVE_LOCAL "square.and.arrow.down" +#define UI_ICON_EDIT_COPY "document.on.document" +#define UI_ICON_EDIT_CUT "scissors" +#define UI_ICON_EDIT_DELETE "minus.circle" +#define UI_ICON_EDIT_PASTE "document.on.clipboard" +#define UI_ICON_UNDO "arrow.uturn.backward" +#define UI_ICON_REDO "arrow.uturn.forward" +#define UI_ICON_SIDEBAR_LEFT "sidebar.left" +#define UI_ICON_SIDEBAR_RIGHT "sidebar.right" +#define UI_ICON_GO_BACK "chevron.left" +#define UI_ICON_GO_FORWARD "chevron.right" +#define UI_ICON_GO_UP "chevron.up" +#define UI_ICON_GO_DOWN "chevron.down" +#define UI_ICON_VIEW_LIST "list.bullet" +#define UI_ICON_VIEW_GRID "square.grid.2x2" +#define UI_ICON_VIEW_DUAL "rectangle.split.2x1" +#define UI_ICON_VIEW_FULLSCREEN "arrow.up.left.and.arrow.down.right.rectangle" +#define UI_ICON_VIEW_RESTORE "arrow.down.forward.and.arrow.up.backward.rectangle" +#define UI_ICON_TEXT_BOLD "bold" +#define UI_ICON_TEXT_ITALIC "italic" +#define UI_ICON_TEXT_UNDERLINE "underline" +#define UI_ICON_LIST_BULLET "list.bullet" +#define UI_ICON_LIST_ORDERED "list.number" +#define UI_ICON_LIST_CHECK "checklist" #endif /* UI_COCOA */ @@ -119,19 +197,45 @@ extern "C" { #define UI_ICON_HOME "" #define UI_ICON_NEW_WINDOW "" -#define UI_ICON_REFRESH "" +#define UI_ICON_NEW_TAB "" #define UI_ICON_NEW_FOLDER "" +#define UI_ICON_NEW_DOCUMENT "" +#define UI_ICON_NEW_APPOINTMENT "" +#define UI_ICON_NEW_CHAT_MESSAGE "" +#define UI_ICON_NEW_CONTACT "" +#define UI_ICON_NEW_MAIL "" +#define UI_ICON_ADD_BOOKMARK "" +#define UI_ICON_ADD_IMAGE "" +#define UI_ICON_ADD_LINK "" +#define UI_ICON_ADD_TEXT "" #define UI_ICON_ADD "" +#define UI_ICON_REMOVE "" +#define UI_ICON_REFRESH "" #define UI_ICON_UPLOAD "" #define UI_ICON_SAVE_LOCAL "" -#define UI_ICON_DELETE "" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" +#define UI_ICON_EDIT_COPY "" +#define UI_ICON_EDIT_CUT "" +#define UI_ICON_EDIT_DELETE "" +#define UI_ICON_EDIT_PASTE "" +#define UI_ICON_UNDO "" +#define UI_ICON_REDO "" +#define UI_ICON_SIDEBAR_LEFT "" +#define UI_ICON_SIDEBAR_RIGHT "" #define UI_ICON_GO_BACK "" #define UI_ICON_GO_FORWARD "" #define UI_ICON_GO_UP "" -#define UI_ICON_GO_DOWN "" -#define UI_ICON_LIST "" +#define UI_ICON_GO_DOWN "" +#define UI_ICON_VIEW_LIST "" +#define UI_ICON_VIEW_GRID "" +#define UI_ICON_VIEW_DUAL "" +#define UI_ICON_VIEW_FULLSCREEN "" +#define UI_ICON_VIEW_RESTORE "" +#define UI_ICON_TEXT_BOLD "" +#define UI_ICON_TEXT_ITALIC "" +#define UI_ICON_TEXT_UNDERLINE "" +#define UI_ICON_LIST_BULLET "" +#define UI_ICON_LIST_ORDERED "" +#define UI_ICON_LIST_CHECK "" #endif /* UI_MOTIF */ @@ -139,39 +243,91 @@ extern "C" { #define UI_ICON_HOME "" #define UI_ICON_NEW_WINDOW "" -#define UI_ICON_REFRESH "" +#define UI_ICON_NEW_TAB "" #define UI_ICON_NEW_FOLDER "" +#define UI_ICON_NEW_DOCUMENT "" +#define UI_ICON_NEW_APPOINTMENT "" +#define UI_ICON_NEW_CHAT_MESSAGE "" +#define UI_ICON_NEW_CONTACT "" +#define UI_ICON_NEW_MAIL "" +#define UI_ICON_ADD_BOOKMARK "" +#define UI_ICON_ADD_IMAGE "" +#define UI_ICON_ADD_LINK "" +#define UI_ICON_ADD_TEXT "" #define UI_ICON_ADD "" +#define UI_ICON_REMOVE "" +#define UI_ICON_REFRESH "" #define UI_ICON_UPLOAD "" #define UI_ICON_SAVE_LOCAL "" -#define UI_ICON_DELETE "" -#define UI_ICON_DOCK_LEFT "" -#define UI_ICON_DOCK_RIGHT "" +#define UI_ICON_EDIT_COPY "" +#define UI_ICON_EDIT_CUT "" +#define UI_ICON_EDIT_DELETE "" +#define UI_ICON_EDIT_PASTE "" +#define UI_ICON_UNDO "" +#define UI_ICON_REDO "" +#define UI_ICON_SIDEBAR_LEFT "" +#define UI_ICON_SIDEBAR_RIGHT "" #define UI_ICON_GO_BACK "" #define UI_ICON_GO_FORWARD "" #define UI_ICON_GO_UP "" -#define UI_ICON_GO_DOWN "" -#define UI_ICON_LIST "" +#define UI_ICON_GO_DOWN "" +#define UI_ICON_VIEW_LIST "" +#define UI_ICON_VIEW_GRID "" +#define UI_ICON_VIEW_DUAL "" +#define UI_ICON_VIEW_FULLSCREEN "" +#define UI_ICON_VIEW_RESTORE "" +#define UI_ICON_TEXT_BOLD "" +#define UI_ICON_TEXT_ITALIC "" +#define UI_ICON_TEXT_UNDERLINE "" +#define UI_ICON_LIST_BULLET "" +#define UI_ICON_LIST_ORDERED "" +#define UI_ICON_LIST_CHECK "" #endif /* UI_MOTIF */ enum UiIconId { - UI_ICON_ID_HOME = 0, + UI_ICON_ID_HOME, UI_ICON_ID_NEW_WINDOW, - UI_ICON_ID_REFRESH, + UI_ICON_ID_NEW_TAB, UI_ICON_ID_NEW_FOLDER, + UI_ICON_ID_NEW_DOCUMENT, + UI_ICON_ID_NEW_APPOINTMENT, + UI_ICON_ID_NEW_CHAT_MESSAGE, + UI_ICON_ID_NEW_CONTACT, + UI_ICON_ID_NEW_MAIL, + UI_ICON_ID_ADD_BOOKMARK, + UI_ICON_ID_ADD_IMAGE, + UI_ICON_ID_ADD_LINK, + UI_ICON_ID_ADD_TEXT, UI_ICON_ID_ADD, + UI_ICON_ID_REMOVE, + UI_ICON_ID_REFRESH, UI_ICON_ID_UPLOAD, UI_ICON_ID_SAVE_LOCAL, - UI_ICON_ID_DELETE, - UI_ICON_ID_DOCK_LEFT, - UI_ICON_ID_DOCK_RIGHT, + UI_ICON_ID_EDIT_COPY, + UI_ICON_ID_EDIT_CUT, + UI_ICON_ID_EDIT_DELETE, + UI_ICON_ID_EDIT_PASTE, + UI_ICON_ID_UNDO, + UI_ICON_ID_REDO, + UI_ICON_ID_SIDEBAR_LEFT, + UI_ICON_ID_SIDEBAR_RIGHT, UI_ICON_ID_GO_BACK, UI_ICON_ID_GO_FORWARD, UI_ICON_ID_GO_UP, UI_ICON_ID_GO_DOWN, - UI_ICON_ID_LIST + UI_ICON_ID_VIEW_LIST, + UI_ICON_ID_VIEW_GRID, + UI_ICON_ID_VIEW_DUAL, + UI_ICON_ID_VIEW_FULLSCREEN, + UI_ICON_ID_VIEW_RESTORE, + UI_ICON_ID_TEXT_BOLD, + UI_ICON_ID_TEXT_ITALIC, + UI_ICON_ID_TEXT_UNDERLINE, + UI_ICON_ID_LIST_BULLET, + UI_ICON_ID_LIST_ORDERED, + UI_ICON_ID_LIST_CHECK }; UIEXPORT UiIcon* ui_icon(const char* name, size_t size); diff --git a/ui/ui/toolbar.h b/ui/ui/toolbar.h index 29319ec..d525231 100644 --- a/ui/ui/toolbar.h +++ b/ui/ui/toolbar.h @@ -67,6 +67,28 @@ typedef struct UiToolbarToggleItemArgs { const int *visibility_states; } UiToolbarToggleItemArgs; +typedef struct UiToolbarContentToggleItemArgs { + const char *label0; + const char *icon0; + const char *tooltip0; + const char *label1; + const char *icon1; + const char *tooltip1; + + const char *varname; + ui_callback onchange; + void *onchangedata; + const char *action; + const char *accelerator; + const char *accelerator_text; + + int toggled_by_state; + UiBool istogglebutton; + + const int *states; + const int *visibility_states; +} UiToolbarContentToggleItemArgs; + typedef struct UiToolbarMenuArgs { const char *label; const char *icon; @@ -87,6 +109,7 @@ enum UiToolbarPos { #define ui_toolbar_item(name, ...) ui_toolbar_item_create(name, &(UiToolbarItemArgs){ __VA_ARGS__ } ) #define ui_toolbar_toggleitem(name, ...) ui_toolbar_toggleitem_create(name, &(UiToolbarToggleItemArgs){ __VA_ARGS__ } ) +#define ui_toolbar_content_toggleitem(name, ...) ui_toolbar_toggleitem_create(name, &(UiToolbarToggleItemArgs){ __VA_ARGS__ } ) #define ui_toolbar_menu(name, ...) for(ui_toolbar_menu_create(name, &(UiToolbarMenuArgs){ __VA_ARGS__ });ui_menu_is_open();ui_menu_close()) #define ui_toolbar_appmenu() for(ui_toolbar_menu_create(NULL, &(UiToolbarMenuArgs){ 0 });ui_menu_is_open();ui_menu_close()) @@ -94,6 +117,7 @@ enum UiToolbarPos { UIEXPORT void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args); UIEXPORT void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args); +UIEXPORT void ui_toolbar_content_toggleitem_create(const char* name, UiToolbarContentToggleItemArgs *args); UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs *args); UIEXPORT void ui_toolbar_add_default(const char *name, enum UiToolbarPos pos);