]> uap-core.de Git - note.git/commitdiff
implement new toolkit icon definitions
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 18 Jun 2026 16:11:23 +0000 (18:11 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 18 Jun 2026 16:11:23 +0000 (18:11 +0200)
14 files changed:
application/src/main.rs
ui-rs/src/ui/icon.rs
ui/common/args.c
ui/common/args.h
ui/common/icons.c
ui/common/toolbar.c
ui/common/toolbar.h
ui/gtk/button.c
ui/gtk/button.h
ui/gtk/headerbar.c
ui/gtk/headerbar.h
ui/ui/button.h
ui/ui/icons.h
ui/ui/toolbar.h

index 2e7901b6651f699254a280f870418734f339bb3b..12aa03c86a2b9802ff405856f9be77f1cf52e5eb 100644 (file)
@@ -150,8 +150,7 @@ fn create_toolbar(app: &AppContext<MainWindow>) {
     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);
index 327ee094e90749cf11263ff98f9569f68a1b328d..2b568e373ffd2e5cf62fb9266a53a05abe8fcc7d 100644 (file)
@@ -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 {
index 77b302b0409e0232c1420eadb158e351138e01da..8c1e2b4027c13f9dbee4d61c17a0ae8493c64681 100644 (file)
@@ -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 ----------------------------*/
 
 
index 5f4171fc869f93b7ad5ddfa9186dcafabb48e709..7a8dbd73025e8521ab2d6bf49e2b57d960dbb3a4 100644 (file)
@@ -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);
index decf61648b3a28e56dd0ced42d2edff168e4cb3b..e5b710bd16743fe120741f280a4c8d6b09e0cf95 100644 (file)
 
 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;
 }
index 9a389d0f18d6d6c24d21f806619c63668092e2d0..552b8e12dc26d279c94a77bbe555094ebe8182ca 100644 (file)
@@ -85,6 +85,25 @@ static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args
     return newargs;\r
 }\r
 \r
+static UiToolbarContentToggleItemArgs contenttoggleitemargs_copy(UiToolbarContentToggleItemArgs *args, size_t *ngroups, size_t *nvstates) {\r
+    UiToolbarContentToggleItemArgs newargs;\r
+    newargs.label0 = nl_strdup(args->label0);\r
+    newargs.icon0 = nl_strdup(args->icon0);\r
+    newargs.tooltip0 = nl_strdup(args->tooltip0);\r
+    newargs.label1 = nl_strdup(args->label1);\r
+    newargs.icon1 = nl_strdup(args->icon1);\r
+    newargs.tooltip1 = nl_strdup(args->tooltip1);\r
+    newargs.varname = nl_strdup(args->varname);\r
+    newargs.onchange = args->onchange;\r
+    newargs.onchangedata = args->onchangedata;\r
+    newargs.action = nl_strdup(args->action);\r
+    newargs.toggled_by_state = args->toggled_by_state;\r
+    newargs.istogglebutton = args->istogglebutton;\r
+    newargs.states = uic_copy_states(args->states, ngroups);\r
+    newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates);\r
+    return newargs;\r
+}\r
+\r
 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) {\r
     UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem));\r
     item->item.type = UI_TOOLBAR_TOGGLEITEM;\r
@@ -92,6 +111,13 @@ void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *arg
     cxMapPut(toolbar_items, name, item);\r
 }\r
 \r
+void ui_toolbar_content_toggleitem_create(const char* name, UiToolbarContentToggleItemArgs *args) {\r
+    UiToolbarContentToggleItem* item = malloc(sizeof(UiToolbarContentToggleItem));\r
+    item->item.type = UI_TOOLBAR_CONTENT_TOGGLEITEM;\r
+    item->args = contenttoggleitemargs_copy(args, &item->nstates, &item->nvstates);\r
+    cxMapPut(toolbar_items, name, item);\r
+}\r
+\r
 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) {\r
     UiToolbarMenuArgs newargs;\r
     newargs.label = nl_strdup(args->label);\r
index 9ae60f07cb5b0c04a0cd70b2ae0bcd70441ae49f..dd792644c20b5d7ec5b50e6ff3bdc11befb31d9e 100644 (file)
 extern "C" {\r
 #endif\r
 \r
-typedef struct UiToolbarItemI      UiToolbarItemI;\r
+typedef struct UiToolbarItemI               UiToolbarItemI;\r
 \r
-typedef struct UiToolbarItem       UiToolbarItem;\r
-typedef struct UiToolbarToggleItem UiToolbarToggleItem;\r
+typedef struct UiToolbarItem                UiToolbarItem;\r
+typedef struct UiToolbarToggleItem          UiToolbarToggleItem;\r
+typedef struct UiToolbarContentToggleItem   UiToolbarContentToggleItem;\r
 \r
-typedef struct UiToolbarMenuItem   UiToolbarMenuItem;\r
+typedef struct UiToolbarMenuItem            UiToolbarMenuItem;\r
 \r
 enum UiToolbarItemType {\r
     UI_TOOLBAR_ITEM = 0,\r
     UI_TOOLBAR_TOGGLEITEM,\r
+    UI_TOOLBAR_CONTENT_TOGGLEITEM,\r
     UI_TOOLBAR_MENU\r
 };\r
 \r
@@ -73,6 +75,13 @@ struct UiToolbarToggleItem {
     size_t nvstates;\r
 };\r
 \r
+struct UiToolbarContentToggleItem {\r
+    UiToolbarItemI item;\r
+    UiToolbarContentToggleItemArgs args;\r
+    size_t nstates;\r
+    size_t nvstates;\r
+};\r
+\r
 struct UiToolbarMenuItem {\r
     UiToolbarItemI item;\r
     UiMenu menu;\r
index 5bcc71cc8c0fdee1c459a82b9d3d4444034f3bcd..dd6431cca7dfb7eee44c5787281298bcd19ed23a 100644 (file)
@@ -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) 
index 1c4355b411bf20617028d9a41efa282140aa41ee..4972f35f9dde75615b8ccc65bfc6c5d81646afd2 100644 (file)
 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);
 
index ac435aae0f5eeba29b3537d635c3e760c3839e46..a8ba5356908836fcf80ad9d986eddab2b6a0863d 100644 (file)
@@ -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,
index e957c6c4bbf189d2b7b0c2b3ea135786406d0b57..50e877b15409e9871200c633bf753e2ac57a1e55 100644 (file)
@@ -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,
index 83d6fd0f04213f2209d306c259466653f4072cc4..ae9155f7fa110b91dc55460b69831cfbb3b15113 100644 (file)
@@ -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);
 
index 326b5687db509c2c067a1aa5b843eeac9093258f..fba5c73b8b6aae719ab5f0e3bc6bd6d5c5282599 100644 (file)
@@ -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);
index 29319ecb9172235af0e7e7b2722e8bedb8c40c94..d52523123cf83bc732e197c999b1c37d939a4b1c 100644 (file)
@@ -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);