/* Create the dialog and connects its buttons */ static void ensure_dialog (GtkColorButton *button) { GtkWidget *parent, *dialog; if (button->priv->cs_dialog != NULL) return; parent = gtk_widget_get_toplevel (GTK_WIDGET (button)); button->priv->cs_dialog = dialog = gtk_color_chooser_dialog_new (button->priv->title, NULL); if (gtk_widget_is_toplevel (parent) && GTK_IS_WINDOW (parent)) { if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (dialog))) gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (dialog), gtk_window_get_modal (GTK_WINDOW (parent))); } g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), button); g_signal_connect (dialog, "destroy", G_CALLBACK (dialog_destroy), button); }
static void show_color_chooser (GtkWindow *parent) { GtkWidget *dialog; dialog = gtk_color_chooser_dialog_new ("Builtin", parent); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); }
static void test_color_chooser_dialog_basic (void) { GtkWidget *widget; /* This test also tests the internal GtkColorEditor widget */ widget = gtk_color_chooser_dialog_new (NULL, NULL); g_assert (GTK_IS_COLOR_CHOOSER_DIALOG (widget)); gtk_widget_destroy (widget); }
//================================================================ int GUI_Color_select (int *ir, int *ig, int *ib) { //================================================================ /// \code /// GUI_Color_select select-color-Dialog. Modal (wait). /// Returns 3 colors as 16-bit-integers. /// Returncode 0=OK; -1=cancel. /// \endcode int iRes; // response GtkWidget *wdlg; GtkWidget *wSel; // GdkColor rgb; // 3 x short GdkRGBA rgb; // printf("GUI_ColSel\n"); // wdlg = gtk_color_selection_dialog_new ("select color .."); wdlg = gtk_color_chooser_dialog_new ("select color ..", NULL); // stay on top (modal) // gtk_window_set_transient_for (GTK_WINDOW(wdlg), GTK_WINDOW(UI_MainWin)); // start waiting; does not return until user clicks button. iRes = gtk_dialog_run (GTK_DIALOG (wdlg)); // wait (modal) ! printf(" iRes=%d\n",iRes); // -6=_CANCEL, -5=_OK -4= if((iRes == GTK_RESPONSE_CANCEL) || (iRes == GTK_RESPONSE_DELETE_EVENT)) { gtk_widget_destroy (wdlg); return -1; } // wSel = gtk_color_selection_dialog_get_color_selection ( // GTK_COLOR_SELECTION_DIALOG(wdlg)); // gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (wSel), &rgb); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (wdlg), &rgb); // printf(" sel.Col = %lf %lf %lf\n",rgb.red,rgb.green,rgb.blue); *ir = (int) (rgb.red * 65535.); *ig = (int) (rgb.green * 65535.); *ib = (int) (rgb.blue * 65535.); gtk_widget_destroy (wdlg); // printf(" sel.Col = %d %d %d\n",*ir,*ig,*ib); return 0; }
gint main (gint argc, gchar **argv) { GtkWidget *window; GtkWidget *widget; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Toplevel widget embedding example"); g_signal_connect (window, "destroy", gtk_main_quit, NULL); notebook = gtk_notebook_new (); gtk_notebook_set_scrollable (GTK_NOTEBOOK (notebook), TRUE); gtk_container_add (GTK_CONTAINER (window), notebook); gtk_widget_realize (notebook); widget = gtk_about_dialog_new (); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); widget = gtk_file_chooser_dialog_new ("the chooser", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); widget = gtk_color_chooser_dialog_new ("the colorsel", NULL); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); widget = gtk_font_chooser_dialog_new ("the fontsel", NULL); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); widget = gtk_recent_chooser_dialog_new ("the recent chooser", NULL, "_Cancel", GTK_RESPONSE_CANCEL, "_Open", GTK_RESPONSE_ACCEPT, NULL); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); widget = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Do you have any questions ?"); toplevel_delete_event (widget, NULL, NULL); g_signal_connect (widget, "delete-event", G_CALLBACK (toplevel_delete_event), NULL); gtk_widget_show_all (window); gtk_main (); return 0; }
void WebColorPickerGtk::showColorPicker(const Color& color) { if (!m_client) return; m_initialColor = color; if (!m_colorChooser) { GtkWidget* toplevel = gtk_widget_get_toplevel(m_webView); m_colorChooser = gtk_color_chooser_dialog_new(_("Select Color"), WebCore::widgetIsOnscreenToplevelWindow(toplevel) ? GTK_WINDOW(toplevel) : nullptr); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(m_colorChooser), &m_initialColor); g_signal_connect(m_colorChooser, "notify::rgba", G_CALLBACK(WebColorPickerGtk::colorChooserDialogRGBAChangedCallback), this); g_signal_connect(m_colorChooser, "response", G_CALLBACK(WebColorPickerGtk::colorChooserDialogResponseCallback), this); } else gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(m_colorChooser), &m_initialColor); gtk_widget_show(m_colorChooser); }
static void menu_color_change_cb (col_sel * sel) { GtkWidget *selector; gchar title[20]; GdkRGBA rgba; sprintf (title, "Choose color #%d", sel->index); selector = gtk_color_chooser_dialog_new(title, NULL); sel->selector = selector; rgba = *gtk_databox_graph_get_color (sel->graph); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(sel->selector), &rgba); gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(sel->selector), FALSE); g_signal_connect(G_OBJECT(sel->selector), "response", G_CALLBACK(get_color_cb), (gpointer)sel); gtk_widget_show (GTK_WIDGET (sel->selector)); return; }
static void value_icon_activate (GtkCellRendererToggle *cell_renderer, gchar *path, GladeEPropAttrs *eprop_attrs) { GtkWidget *dialog; GtkTreeIter iter; PangoAttrType type; AttrEditType edit_type; GdkRGBA color = {0,}; gchar *text = NULL, *new_text; /* Find type etc */ if (!gtk_tree_model_get_iter_from_string (eprop_attrs->model, &iter, path)) return; gtk_tree_model_get (eprop_attrs->model, &iter, COLUMN_TEXT, &text, COLUMN_TYPE, &type, COLUMN_EDIT_TYPE, &edit_type, -1); /* Launch dialog etc. */ switch (edit_type) { case EDIT_COLOR: dialog = gtk_color_chooser_dialog_new (_("Select a color"), GTK_WINDOW (glade_app_get_window ())); /* Get response etc... */ if (text && gdk_rgba_parse (&color, text)) gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (dialog), &color); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), &color); /* Use GdkColor string format */ if (((guint8)(color.red * 0xFF)) * 0x101 == (guint16)(color.red * 0xFFFF) && ((guint8)(color.green * 0xFF)) * 0x101 == (guint16)(color.green * 0xFFFF) && ((guint8)(color.blue * 0xFF)) * 0x101 == (guint16)(color.blue * 0xFFFF)) new_text = g_strdup_printf ("#%02X%02X%02X", (guint8)(color.red * 0xFF), (guint8)(color.green * 0xFF), (guint8)(color.blue * 0xFF)); else new_text = g_strdup_printf ("#%04X%04X%04X", (guint16)(color.red * 0xFFFF), (guint16)(color.green * 0xFFFF), (guint16)(color.blue * 0xFFFF)); gtk_list_store_set (GTK_LIST_STORE (eprop_attrs->model), &iter, COLUMN_TEXT, new_text, COLUMN_NAME_WEIGHT, PANGO_WEIGHT_BOLD, COLUMN_TEXT_STYLE, PANGO_STYLE_NORMAL, COLUMN_TEXT_FG, "Black", -1); g_free (new_text); gtk_widget_destroy (dialog); break; case EDIT_FONT: dialog = gtk_font_chooser_dialog_new (_("Select a font"), GTK_WINDOW (glade_app_get_window ())); /* Get response etc... */ if (text) gtk_font_chooser_set_font (GTK_FONT_CHOOSER (dialog), text); gtk_dialog_run (GTK_DIALOG (dialog)); new_text = gtk_font_chooser_get_font (GTK_FONT_CHOOSER (dialog)); gtk_list_store_set (GTK_LIST_STORE (eprop_attrs->model), &iter, COLUMN_TEXT, new_text, COLUMN_NAME_WEIGHT, PANGO_WEIGHT_BOLD, COLUMN_TEXT_STYLE, PANGO_STYLE_NORMAL, COLUMN_TEXT_FG, "Black", -1); g_free (new_text); gtk_widget_destroy (dialog); break; default: break; } sync_object (eprop_attrs, FALSE); g_free (text); }
NS_IMETHODIMP nsColorPicker::Open(nsIColorPickerShownCallback *aColorPickerShownCallback) { // Input color string should be 7 length (i.e. a string representing a valid // simple color) if (mInitialColor.Length() != 7) { return NS_ERROR_FAILURE; } const nsAString& withoutHash = StringTail(mInitialColor, 6); nscolor color; if (!NS_HexToRGBA(withoutHash, nsHexColorType::NoAlpha, &color)) { return NS_ERROR_FAILURE; } if (mCallback) { // It means Open has already been called: this is not allowed NS_WARNING("mCallback is already set. Open called twice?"); return NS_ERROR_FAILURE; } mCallback = aColorPickerShownCallback; nsXPIDLCString title; title.Adopt(ToNewUTF8String(mTitle)); GtkWindow *parent_window = GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); #if defined(ACTIVATE_GTK3_COLOR_PICKER) && GTK_CHECK_VERSION(3,4,0) GtkWidget* color_chooser = gtk_color_chooser_dialog_new(title, parent_window); if (parent_window) { gtk_window_set_destroy_with_parent(GTK_WINDOW(color_chooser), TRUE); } gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(color_chooser), FALSE); GdkRGBA color_rgba = convertToRgbaColor(color); gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(color_chooser), &color_rgba); g_signal_connect(GTK_COLOR_CHOOSER(color_chooser), "color-activated", G_CALLBACK(OnColorChanged), this); #else GtkWidget *color_chooser = gtk_color_selection_dialog_new(title); if (parent_window) { GtkWindow *window = GTK_WINDOW(color_chooser); gtk_window_set_transient_for(window, parent_window); gtk_window_set_destroy_with_parent(window, TRUE); } GdkColor color_gdk = convertToGdkColor(color); gtk_color_selection_set_current_color(WidgetGetColorSelection(color_chooser), &color_gdk); g_signal_connect(WidgetGetColorSelection(color_chooser), "color-changed", G_CALLBACK(OnColorChanged), this); #endif NS_ADDREF_THIS(); g_signal_connect(color_chooser, "response", G_CALLBACK(OnResponse), this); g_signal_connect(color_chooser, "destroy", G_CALLBACK(OnDestroy), this); gtk_widget_show(color_chooser); return NS_OK; }