static void set_sheet_info_at_iter (SheetManager *state, GtkTreeIter *iter, Sheet *sheet) { GdkRGBA cback, *color = NULL; GdkRGBA cfore, *text_color = NULL; if (sheet->tab_color) color = go_color_to_gdk_rgba (sheet->tab_color->go_color, &cback); if (sheet->tab_text_color) text_color = go_color_to_gdk_rgba (sheet->tab_text_color->go_color, &cfore); gtk_list_store_set (state->model, iter, SHEET_LOCKED, sheet->is_protected, SHEET_LOCK_IMAGE, (sheet->is_protected ? state->image_padlock : state->image_padlock_no), SHEET_VISIBLE, (sheet->visibility == GNM_SHEET_VISIBILITY_VISIBLE), SHEET_VISIBLE_IMAGE, (sheet->visibility == GNM_SHEET_VISIBILITY_VISIBLE ? state->image_visible : NULL), SHEET_ROW_MAX, gnm_sheet_get_max_rows (sheet), SHEET_COL_MAX, gnm_sheet_get_max_cols (sheet), SHEET_NAME, sheet->name_unquoted, SHEET_NEW_NAME, "", SHEET_POINTER, sheet, BACKGROUND_COLOUR, color, FOREGROUND_COLOUR, text_color, SHEET_DIRECTION, sheet->text_is_rtl, SHEET_DIRECTION_IMAGE, (sheet->text_is_rtl ? state->image_rtl : state->image_ltr), -1); }
/* * Create the individual color buttons * * Utility function */ static GtkWidget * go_color_palette_button_new (GOColorPalette *pal, GtkGrid *grid, GONamedColor const *color_name, gint col, gint row) { GtkWidget *button, *swatch, *box; GdkRGBA gdk; swatch = gtk_drawing_area_new (); g_signal_connect (G_OBJECT (swatch), "draw", G_CALLBACK (draw_color_cb), GUINT_TO_POINTER (color_name->color)); gtk_widget_override_background_color (swatch, GTK_STATE_FLAG_NORMAL, go_color_to_gdk_rgba (color_name->color, &gdk)); gtk_widget_set_size_request (swatch, COLOR_PREVIEW_WIDTH, COLOR_PREVIEW_HEIGHT); /* Wrap inside a vbox with a border so that we can see the focus indicator */ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (box), 2); gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (swatch), TRUE, TRUE, 0); button = gtk_button_new (); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_container_add (GTK_CONTAINER (button), box); gtk_widget_set_tooltip_text (button, _(color_name->name)); gtk_grid_attach (grid, button, col, row, 1, 1); g_object_connect (button, "signal::button_release_event", G_CALLBACK (cb_swatch_release_event), pal, "signal::key_press_event", G_CALLBACK (cb_swatch_key_press), pal, NULL); return swatch; }
static void cb_history_changed (GOColorPalette *pal) { int i; GdkRGBA gdk; GOColorGroup *group = pal->group; for (i = 0 ; i < GO_COLOR_GROUP_HISTORY_SIZE ; i++) gtk_widget_override_background_color (pal->swatches [i], GTK_STATE_FLAG_NORMAL, go_color_to_gdk_rgba (group->history[i], &gdk)); }
static void cb_color_changed_back (G_GNUC_UNUSED GOComboColor *go_combo_color, GOColor color, G_GNUC_UNUSED gboolean custom, G_GNUC_UNUSED gboolean by_user, G_GNUC_UNUSED gboolean is_default, SheetManager *state) { GList *selected_rows, *l; GtkTreeSelection *selection = gtk_tree_view_get_selection (state->sheet_list); WorkbookSheetState *old_state; WorkbookControl *wbc = GNM_WBC (state->wbcg); Workbook *wb = wb_control_get_workbook (wbc); GdkRGBA gdk_color; GdkRGBA *p_gdk_color; GnmColor *gnm_color; g_return_if_fail (selection != NULL); selected_rows = gtk_tree_selection_get_selected_rows (selection, NULL); p_gdk_color = (color == 0) ? NULL : go_color_to_gdk_rgba (color, &gdk_color); gnm_color = (color == 0) ? NULL : gnm_color_new_gdk (&gdk_color); old_state = workbook_sheet_state_new (wb); for (l = selected_rows; l != NULL; l = l->next) { Sheet *this_sheet; GtkTreeIter sel_iter; GtkTreePath *path = l->data; gtk_tree_model_get_iter (GTK_TREE_MODEL (state->model), &sel_iter, path); gtk_tree_model_get (GTK_TREE_MODEL (state->model), &sel_iter, SHEET_POINTER, &this_sheet, -1); if (color_equal (p_gdk_color, this_sheet->tab_color)) continue; gtk_list_store_set (state->model, &sel_iter, BACKGROUND_COLOUR, p_gdk_color, -1); g_object_set (this_sheet, "tab-background", gnm_color, NULL); } style_color_unref (gnm_color); cmd_reorganize_sheets (wbc, old_state, NULL); update_undo (state, wbc); g_list_free_full (selected_rows, (GDestroyNotify) gtk_tree_path_free); }
static void cb_history_changed (GOColorPalette *pal) { int i; GdkRGBA gdk; GOColorGroup *group = pal->group; for (i = 0 ; i < GO_COLOR_GROUP_HISTORY_SIZE ; i++) gtk_widget_override_background_color (pal->swatches [i], GTK_STATE_FLAG_NORMAL, go_color_to_gdk_rgba (group->history[i], &gdk)); #if 0 if (next_swatch != NULL) { next_swatch->style->bg[GTK_STATE_NORMAL] = *new_color; gnome_color_picker_set_i16 (GNOME_COLOR_PICKER (pal->picker), new_color->red, new_color->green, new_color->blue, 0); } #endif }
static GtkWidget * create_color_sel (GObject *action_proxy, GOColor c, GCallback handler, gboolean allow_alpha) { char *title = g_object_get_data (G_OBJECT (action_proxy), "title"); GtkWidget *w = gtk_color_selection_dialog_new (title), *hb; GtkColorSelectionDialog *dialog = GTK_COLOR_SELECTION_DIALOG (w); GtkColorSelection *colorsel = GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (dialog)); GdkRGBA gdk; g_object_get (G_OBJECT (w), "help-button", &hb, NULL); gtk_widget_hide (hb); gtk_color_selection_set_has_opacity_control (colorsel, allow_alpha); gtk_color_selection_set_current_rgba (colorsel, go_color_to_gdk_rgba (c, &gdk)); g_signal_connect_object (dialog, "response", handler, action_proxy, 0); /* require an explicit show _after_ the custom-dialog signal fires */ return w; }
static GtkWidget * create_color_sel (GtkWidget *parent_widget, GObject *action_proxy, GOColor c, GCallback handler, gboolean allow_alpha) { const char *title = g_object_get_data (G_OBJECT (action_proxy), "title"); GtkWidget *toplevel = gtk_widget_get_toplevel (parent_widget); GtkWidget *dialog = gtk_dialog_new_with_buttons (title, (gtk_widget_is_toplevel (toplevel) ? GTK_WINDOW (toplevel) : NULL), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); GtkWidget *ccw = gtk_color_chooser_widget_new (); GtkWidget *dca = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); GdkRGBA gdk; g_object_set_data (G_OBJECT (dialog), CCW_KEY, ccw); gtk_container_add (GTK_CONTAINER (dca), ccw); go_color_to_gdk_rgba (c, &gdk); g_object_set (G_OBJECT (ccw), "use-alpha", allow_alpha, "rgba", &gdk, "show-editor", TRUE, NULL); g_signal_connect_object (dialog, "response", handler, action_proxy, 0); /* require an explicit show _after_ the custom-dialog signal fires */ return dialog; }