-void toolbar_insert( GtkToolbar *toolbar, const char* icon, const char* text, const char* tooltip, IToolbarButton::EType type, GtkSignalFunc handler, gpointer data ){
- gtk_toolbar_append_element( toolbar, gtktoolbarchildtype_for_toolbarbuttontype( type ), 0, text, tooltip, "", GTK_WIDGET( new_plugin_image( icon ) ), handler, data );
+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::ToolItem::from(gtk_separator_tool_item_new());
+ it.show();
+ toolbar.add(it);
+ return;
+ }
+ if (type == IToolbarButton::eButton) {
+ auto button = ui::ToolButton::from(gtk_tool_button_new(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::from(gtk_toggle_tool_button_new());
+ gtk_tool_button_set_icon_widget(button, 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;
+ }
+ ERROR_MESSAGE("invalid toolbar button type");