static GdkPixbuf * make_icon (GtkAction *a, const char *stock_id, GtkWidget *tool) { GtkIconSize size; GdkPixbuf *res; if (stock_id == NULL) return NULL; size = GTK_IS_TOOL_ITEM (tool) ? gtk_tool_item_get_icon_size (GTK_TOOL_ITEM (tool)) : GTK_ICON_SIZE_MENU; /* This should go away when we assume icon names. */ res = gtk_widget_render_icon_pixbuf (tool, stock_id, size); if (res) return res; return go_gtk_widget_render_icon_pixbuf (tool, stock_id, size); }
static void attr_dialog_add_item (AttrState *state, char const *page_name, char const *icon_name, int page, char const* parent_path) { GtkTreeIter iter, parent; GdkPixbuf *icon = icon_name ? go_gtk_widget_render_icon_pixbuf (GTK_WIDGET (wbcg_toplevel (state->wbcg)), icon_name, GTK_ICON_SIZE_MENU) : NULL; if (parent_path && gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (state->store), &parent, parent_path)) gtk_tree_store_append (state->store, &iter, &parent); else gtk_tree_store_append (state->store, &iter, NULL); gtk_tree_store_set (state->store, &iter, ITEM_ICON, icon, ITEM_NAME, _(page_name), PAGE_NUMBER, page, -1); if (icon != NULL) g_object_unref (icon); }
void dialog_sheet_order (WBCGtk *wbcg) { SheetManager *state; GtkBuilder *gui; GtkGrid *grid; GOColorGroup *cg; Workbook *wb; GtkWidget *widget; GdkPixbuf *icon; g_return_if_fail (wbcg != NULL); widget = GTK_WIDGET (wbcg_toplevel (wbcg)); gui = gnm_gtk_builder_load ("res:ui/sheet-order.ui", NULL, GO_CMD_CONTEXT (wbcg)); if (gui == NULL) return; wb = wb_control_get_workbook (GNM_WBC (wbcg)); if (g_object_get_data (G_OBJECT (wb), SHEET_ORDER_KEY)) { GtkWidget *dialog = gtk_message_dialog_new (wbcg_toplevel (wbcg), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, _("Another view is already managing sheets")); go_gtk_dialog_run (GTK_DIALOG (dialog), wbcg_toplevel (wbcg)); return; } g_object_set_data (G_OBJECT (wb), SHEET_ORDER_KEY, (gpointer) gui); state = g_new0 (SheetManager, 1); state->gui = gui; state->wbcg = wbcg; state->dialog = go_gtk_builder_get_widget (gui, "sheet-order-dialog"); state->warning = go_gtk_builder_get_widget (gui, "warning"); state->up_btn = go_gtk_builder_get_widget (gui, "up_button"); state->down_btn = go_gtk_builder_get_widget (gui, "down_button"); state->add_btn = go_gtk_builder_get_widget (gui, "add_button"); state->append_btn = go_gtk_builder_get_widget (gui, "append_button"); state->duplicate_btn = go_gtk_builder_get_widget (gui, "duplicate_button"); state->delete_btn = go_gtk_builder_get_widget (gui, "delete_button"); state->apply_names_btn = go_gtk_builder_get_widget (gui, "ok_button"); state->sort_asc_btn = go_gtk_builder_get_widget (gui, "sort-asc-button"); state->sort_desc_btn = go_gtk_builder_get_widget (gui, "sort-desc-button"); state->undo_btn = go_gtk_builder_get_widget (gui, "undo-button"); state->cancel_btn = go_gtk_builder_get_widget (gui, "cancel_button"); state->advanced_check = go_gtk_builder_get_widget (gui, "advanced-check"); state->initial_colors_set = FALSE; state->image_padlock = go_gtk_widget_render_icon_pixbuf (widget, "gnumeric-protection-yes", GTK_ICON_SIZE_MENU); state->image_padlock_no = go_gtk_widget_render_icon_pixbuf (widget, "gnumeric-protection-no", GTK_ICON_SIZE_MENU); state->image_visible = go_gtk_widget_render_icon_pixbuf (widget, "gnumeric-visible", GTK_ICON_SIZE_MENU); state->image_ltr = go_gtk_widget_render_icon_pixbuf (widget, "format-text-direction-ltr", GTK_ICON_SIZE_MENU); state->image_rtl = go_gtk_widget_render_icon_pixbuf (widget, "format-text-direction-rtl", GTK_ICON_SIZE_MENU); /* Listen for changes in the sheet order. */ state->sheet_order_changed_listener = g_signal_connect (G_OBJECT (wb), "sheet_order_changed", G_CALLBACK (cb_sheet_order_changed), state); state->sheet_added_listener = g_signal_connect (G_OBJECT (wb), "sheet_added", G_CALLBACK (cb_sheet_added), state); state->sheet_deleted_listener = g_signal_connect (G_OBJECT (wb), "sheet_deleted", G_CALLBACK (cb_sheet_deleted), state); grid = GTK_GRID (go_gtk_builder_get_widget (gui,"main-grid")); cg = go_color_group_fetch ("back_color_group", wb_control_view (GNM_WBC (wbcg))); icon = go_gtk_widget_render_icon_pixbuf (widget, "gnumeric-bucket", GTK_ICON_SIZE_LARGE_TOOLBAR); state->ccombo_back = go_combo_color_new (icon, _("Default"), 0, cg); g_object_unref (icon); g_object_unref (cg); go_combo_color_set_instant_apply ( GO_COMBO_COLOR (state->ccombo_back), TRUE); gtk_grid_attach (grid, state->ccombo_back, 1, 4, 1, 1); gtk_widget_set_sensitive (state->ccombo_back, FALSE); cg = go_color_group_fetch ("fore_color_group", wb_control_view (GNM_WBC (wbcg))); icon = go_gtk_widget_render_icon_pixbuf (widget, "font", GTK_ICON_SIZE_LARGE_TOOLBAR); state->ccombo_fore = go_combo_color_new (icon, _("Default"), 0, cg); g_object_unref (icon); g_object_unref (cg); go_combo_color_set_instant_apply ( GO_COMBO_COLOR (state->ccombo_fore), TRUE); gtk_grid_attach (grid, state->ccombo_fore, 2, 4, 1, 1); gtk_widget_set_sensitive (state->ccombo_fore, FALSE); create_sheet_list (state); populate_sheet_list (state); #define CONNECT(o,s,c) g_signal_connect(G_OBJECT(o),s,G_CALLBACK(c),state) CONNECT (state->up_btn, "clicked", cb_up); CONNECT (state->down_btn, "clicked", cb_down); CONNECT (state->sort_asc_btn, "clicked", cb_asc); CONNECT (state->sort_desc_btn, "clicked", cb_desc); CONNECT (state->add_btn, "clicked", cb_add_clicked); CONNECT (state->append_btn, "clicked", cb_append_clicked); CONNECT (state->duplicate_btn, "clicked", cb_duplicate_clicked); CONNECT (state->delete_btn, "clicked", cb_delete_clicked); CONNECT (state->apply_names_btn, "clicked", cb_apply_names_clicked); CONNECT (state->cancel_btn, "clicked", cb_cancel_clicked); CONNECT (state->undo_btn, "clicked", cb_undo_clicked); CONNECT (state->advanced_check, "toggled", cb_adv_check_toggled); CONNECT (state->ccombo_back, "color_changed", cb_color_changed_back); CONNECT (state->ccombo_fore, "color_changed", cb_color_changed_fore); CONNECT (state->model, "rows-reordered", cb_dialog_order_changed); state->model_row_insertion_listener = CONNECT (state->model, "row-inserted", cb_dialog_order_changed_by_insertion); #undef CONNECT cb_adv_check_toggled (NULL, state); gnm_init_help_button ( go_gtk_builder_get_widget (state->gui, "help_button"), GNUMERIC_HELP_LINK_SHEET_MANAGER); gtk_widget_set_sensitive (state->undo_btn, wb->undo_commands != NULL); gtk_widget_set_sensitive (state->apply_names_btn, FALSE); /* a candidate for merging into attach guru */ wbc_gtk_attach_guru (state->wbcg, GTK_WIDGET (state->dialog)); g_object_set_data_full (G_OBJECT (state->dialog), "state", state, (GDestroyNotify) cb_sheet_order_destroy); g_signal_connect (G_OBJECT (state->dialog), "destroy", G_CALLBACK (destroy_cb), NULL); gnm_restore_window_geometry (GTK_WINDOW (state->dialog), SHEET_ORDER_KEY); go_gtk_nonmodal_dialog (wbcg_toplevel (state->wbcg), GTK_WINDOW (state->dialog)); gtk_widget_show_all (GTK_WIDGET (state->dialog)); }