// menu.item("Open").create();
//});
+ create_toolbar(app);
+
create_window(app);
}
}
+
+fn create_toolbar(app: &AppContext<MainWindow>) {
+ app.toolbar_item("go_back").icon("go-previous").action("go_back").create();
+ app.toolbar_item("go_forward").icon("go-next").action("go_forward").create();
+ app.toolbar_item("new_note").icon("document-new").action("new_note").create();
+
+ app.toolbar_add_default("go_back", ToolbarItemPosition::Left);
+ app.toolbar_add_default("go_forward", ToolbarItemPosition::Left);
+ app.toolbar_add_default("new_note", ToolbarItemPosition::Left);
+}
\ No newline at end of file
pub use button::*;
pub use text::*;
pub use list::*;
+pub use toolbar::*;
+pub use menu::*;
args->tooltip = strdup(tooltip);
}
+void ui_toolbar_item_args_set_action(UiToolbarItemArgs *args, const char *action) {
+ args->action = strdup(action);
+}
+
void ui_toolbar_item_args_set_onclick(UiToolbarItemArgs *args, ui_callback callback) {
args->onclick = callback;
}
free((void*)args->label);
free((void*)args->icon);
free((void*)args->tooltip);
+ free((void*)args->action);
free((void*)args->states);
free(args);
}
args->varname = strdup(varname);
}
+void ui_toolbar_toggleitem_args_set_action(UiToolbarToggleItemArgs *args, const char *action) {
+ args->action = strdup(action);
+}
+
void ui_toolbar_toggleitem_args_set_onchange(UiToolbarToggleItemArgs *args, ui_callback callback) {
args->onchange = callback;
}
free((void*)args->icon);
free((void*)args->tooltip);
free((void*)args->varname);
+ free((void*)args->action);
free((void*)args->states);
free(args);
}
UIEXPORT void ui_toolbar_item_args_set_label(UiToolbarItemArgs *args, const char *label);
UIEXPORT void ui_toolbar_item_args_set_icon(UiToolbarItemArgs *args, const char *icon);
UIEXPORT void ui_toolbar_item_args_set_tooltip(UiToolbarItemArgs *args, const char *tooltip);
+UIEXPORT void ui_toolbar_item_args_set_action(UiToolbarItemArgs *args, const char *action);
UIEXPORT void ui_toolbar_item_args_set_onclick(UiToolbarItemArgs *args, ui_callback callback);
UIEXPORT void ui_toolbar_item_args_set_onclickdata(UiToolbarItemArgs *args, void *onclickdata);
UIEXPORT void ui_toolbar_item_args_set_states(UiToolbarItemArgs *args, int *states, int numstates);
UIEXPORT void ui_toolbar_toggleitem_args_set_icon(UiToolbarToggleItemArgs *args, const char *icon);
UIEXPORT void ui_toolbar_toggleitem_args_set_tooltip(UiToolbarToggleItemArgs *args, const char *tooltip);
UIEXPORT void ui_toolbar_toggleitem_args_set_varname(UiToolbarToggleItemArgs *args, const char *varname);
+UIEXPORT void ui_toolbar_toggleitem_args_set_action(UiToolbarToggleItemArgs *args, const char *action);
UIEXPORT void ui_toolbar_toggleitem_args_set_onchange(UiToolbarToggleItemArgs *args, ui_callback callback);
UIEXPORT void ui_toolbar_toggleitem_args_set_onchangedata(UiToolbarToggleItemArgs *args, void *onchangedata);
UIEXPORT void ui_toolbar_toggleitem_args_set_states(UiToolbarToggleItemArgs *args, int *states, int numstates);
e.eventdatatype = 0;
e.intval = gtk_toggle_button_get_active(widget);
e.set = ui_get_setop();
- event->callback(&e, event->userdata);
+
+ if(event->callback) {
+ event->callback(&e, event->userdata);
+ }
+
+ if(event->action) {
+ uic_action_callback(&e, event->action);
+ }
}
static void ui_togglebutton_enable_state_callback(GtkToggleButton *widget, UiEventData *event) {
UiInteger *value,
ui_callback onchange,
void *onchangedata,
+ const char *action,
int enable_state)
{
if(label) {
gtk_widget_set_tooltip_text(togglebutton, tooltip);
}
+ if(action) {
+ uic_bind_action(obj->ctx, action, togglebutton, (ui_enablefunc)ui_set_enabled);
+ UiAction *ui_action = uic_resolve_action(obj->ctx, action);
+ if(!ui_action) {
+ ui_set_enabled(togglebutton, FALSE);
+ }
+ }
+
ui_bind_togglebutton(
obj,
togglebutton,
(ui_toggled_func)ui_toggled_callback,
onchange,
onchangedata,
+ action,
(ui_toggled_func)ui_togglebutton_enable_state_callback,
enable_state
);
void (*toggled_callback)(void*, void*),
ui_callback onchange,
void *onchangedata,
+ const char *action,
void (*enable_state_func)(void*, void*),
int enable_state)
{
event->obj = obj;
event->userdata = onchangedata;
event->callback = onchange;
+ event->action = action ? strdup(action) : NULL,
event->value = 0;
event->customdata = NULL;
event->customint = 0;
g_signal_connect(
widget,
"destroy",
- G_CALLBACK(ui_destroy_userdata),
+ G_CALLBACK(ui_destroy_eventdata),
event);
}
-
+
if(enable_state > 0) {
UiEventData *event = malloc(sizeof(UiEventData));
event->obj = obj;
args->value,
args->onchange,
args->onchangedata,
+ args->action,
args->enable_state);
ui_set_name_and_style(widget, args->name, args->style_class);
ui_set_widget_states(obj->ctx, widget, args->states);
(ui_toggled_func)ui_checkbox_callback,
args->onchange,
args->onchangedata,
+ args->action,
(ui_toggled_func)ui_checkbox_enable_state,
args->enable_state);
UiInteger *value,
ui_callback onchange,
void *onchangedata,
+ const char *action,
int enable_state);
void ui_bind_togglebutton(
void (*toggled_callback)(void*, void*),
ui_callback onchange,
void *onchangedata,
+ const char *action,
void (*enable_state_func)(void*, void*),
int enable_state);
ui_set_widget_states(obj->ctx, button, item->args.states);
ui_set_widget_visibility_states(obj->ctx, button, item->args.visibility_states);
WIDGET_ADD_CSS_CLASS(button, "flat");
- ui_setup_togglebutton(obj, button, item->args.label, item->args.icon, item->args.tooltip, item->args.varname, NULL, item->args.onchange, item->args.onchangedata, 0);
+ ui_setup_togglebutton(obj, button, item->args.label, item->args.icon, item->args.tooltip, item->args.varname, NULL, item->args.onchange, item->args.onchangedata, item->args.action, 0);
headerbar_add(headerbar, box, button, pos);
}
ui_set_widget_nstates(obj->ctx, GTK_WIDGET(button), item->args.states, item->nstates);
- if(item->args.onclick) {
+ if(item->args.onclick || item->args.action) {
UiEventData *event = cxMalloc(
obj->ctx->allocator,
sizeof(UiEventData));
event->obj = obj;
event->callback = item->args.onclick;
event->userdata = item->args.onclickdata;
+ event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;
event->customdata = NULL;
event->customint = 0;
event->value = 0;
event->obj = obj;
event->callback = item->args.onchange;
event->userdata = item->args.onchangedata;
+ event->action = item->args.action ? ui_strdup(obj->ctx, item->args.action) : NULL;;
event->var = var;
g_signal_connect(
if(i) {
ui_notify_evt(i->observers, &e);
}
+
+ if(event->action) {
+ uic_action_callback(&e, event->action);
+ }
}
int64_t ui_tool_toggle_button_get(UiInteger *integer) {
#if UI_GTK2 || UI_GTK3
-typedef struct UiToolItemI UiToolItemI;
-typedef struct UiToolItem UiToolItem;
-typedef struct UiStToolItem UiStToolItem;
-typedef struct UiToggleToolItem UiToggleToolItem;
-
-typedef struct UiToolbarComboBox UiToolbarComboBox;
-typedef struct UiToolbarComboBoxNV UiToolbarComboBoxNV;
-
-typedef void(*ui_toolbar_add_f)(GtkToolbar*, UiToolItemI*, UiObject*);
-
-struct UiToolItemI {
- ui_toolbar_add_f add_to;
-};
-
-struct UiToolItem {
- UiToolItemI item;
- const char *label;
- const char *image;
- ui_callback callback;
- void *userdata;
- const char *varname;
- CxList *groups;
- int isimportant;
-};
-
-struct UiStToolItem {
- UiToolItemI item;
- const char *stockid;
- ui_callback callback;
- void *userdata;
- const char *varname;
- CxList *groups;
- int isimportant;
-};
-
-struct UiToggleToolItem {
- UiToolItemI item;
- const char *label;
- const char *image;
- const char *stockid;
- UiInteger *value;
- const char *var;
- CxList *groups;
- int isimportant;
-};
-
-struct UiToolbarComboBox {
- UiToolItemI item;
- UiVar *var;
- ui_getvaluefunc getvalue;
- ui_callback callback;
- void *userdata;
-};
-
-struct UiToolbarComboBoxNV {
- UiToolItemI item;
- char *listname;
- ui_getvaluefunc getvalue;
- ui_callback callback;
- void *userdata;
-};
-
void ui_toolitem_vstgr(
char *name,
UiVar *var;
UiObserver **observers;
ui_callback callback;
+ char *action;
void *userdata;
int customint1;
int customint2;