void XAP_UnixDialog_FontChooser::fgColorChanged(void) { gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(m_colorSelector), &m_currentFGColor); UT_RGBColor * rgbcolor = UT_UnixGdkColorToRGBColor(m_currentFGColor); UT_HashColor hash_color; const char * c = hash_color.setColor(*rgbcolor); addOrReplaceVecProp("color", c + 1); delete rgbcolor; updatePreview(); }
void XAP_UnixDialog_FontChooser::bgColorChanged(void) { gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER(m_bgcolorSelector), &m_currentBGColor); UT_RGBColor * rgbcolor = UT_UnixGdkColorToRGBColor(m_currentBGColor); UT_HashColor hash_color; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_checkTransparency), FALSE); m_currentBGColorTransparent = false; // test for funkyColor-has-been-changed-to-sane-color case addOrReplaceVecProp("bgcolor", hash_color.setColor(*rgbcolor) + 1); delete rgbcolor; updatePreview(); }
/*! * Intercept clicks on the color button and show an own GtkColorSelectionDialog * with palette enabled. */ static gboolean AP_UnixDialog_FormatFrame__onBackgroundColorClicked (GtkWidget *button, GdkEventButton *event, gpointer data) { // only handle left clicks if (event->button != 1) { return FALSE; } AP_UnixDialog_FormatFrame *dlg = static_cast<AP_UnixDialog_FormatFrame *>(data); UT_return_val_if_fail (button && dlg, FALSE); GtkWidget *colordlg = gtk_color_selection_dialog_new (""); gtk_window_set_transient_for (GTK_WINDOW (colordlg), GTK_WINDOW (dlg->getWindow ())); GtkColorSelection *colorsel = GTK_COLOR_SELECTION ((GTK_COLOR_SELECTION_DIALOG (colordlg))->colorsel); gtk_color_selection_set_has_palette (colorsel, TRUE); gint result = gtk_dialog_run (GTK_DIALOG (colordlg)); if (result == GTK_RESPONSE_OK) { // update button GtkColorButton *colorbtn = GTK_COLOR_BUTTON (button); GdkColor color; gtk_color_selection_get_current_color (colorsel, &color); gtk_color_button_set_color (colorbtn, &color); // update dialog UT_RGBColor* rgb = UT_UnixGdkColorToRGBColor (color); dlg->setBGColor (*rgb); DELETEP (rgb); dlg->event_previewExposed (); } // do not propagate further gtk_widget_destroy (colordlg); return TRUE; }