-inline GtkToolbarChildType gtktoolbarchildtype_for_toolbarbuttontype( IToolbarButton::EType type ){
- switch ( type )
- {
- case IToolbarButton::eSpace:
- return GTK_TOOLBAR_CHILD_SPACE;
- case IToolbarButton::eButton:
- return GTK_TOOLBAR_CHILD_BUTTON;
- case IToolbarButton::eToggleButton:
- return GTK_TOOLBAR_CHILD_TOGGLEBUTTON;
- case IToolbarButton::eRadioButton:
- return GTK_TOOLBAR_CHILD_RADIOBUTTON;
+void toolbar_insert( ui::Toolbar toolbar, const char* icon, const char* text, const char* tooltip, IToolbarButton::EType type, GCallback handler, gpointer data ){
+ if (type == IToolbarButton::eSpace) {
+ auto it = ui::Widget(GTK_WIDGET(gtk_separator_tool_item_new()));
+ it.show();
+ toolbar.add(it);
+ return;
+ }
+ if (type == IToolbarButton::eButton) {
+ auto button = ui::ToolButton(GTK_TOOL_BUTTON(gtk_tool_button_new(GTK_WIDGET(new_plugin_image(icon)), text)));
+ gtk_widget_set_tooltip_text(button, tooltip);
+ gtk_widget_show_all(button);
+ button.connect("clicked", G_CALLBACK(handler), data);
+ toolbar.add(button);
+ return;
+ }
+ if (type == IToolbarButton::eToggleButton) {
+ auto button = ui::ToolButton(GTK_TOOL_BUTTON(gtk_toggle_tool_button_new()));
+ gtk_tool_button_set_icon_widget(button, GTK_WIDGET(new_plugin_image(icon)));
+ gtk_tool_button_set_label(button, text);
+ gtk_widget_set_tooltip_text(button, tooltip);
+ gtk_widget_show_all(button);
+ button.connect("toggled", G_CALLBACK(handler), data);
+ toolbar.add(button);
+ return;