/* Sets the color in the GtkColorSelection. The widgets are updated to * reflect the new color. */ int clip_GTK_COLORSELECTIONSETCOLOR(ClipMachine * ClipMachineMemory) { C_widget *ccsel = _fetch_cw_arg(ClipMachineMemory); ClipVar *mcolor = _clip_spar(ClipMachineMemory, 2); gdouble color[4]; gdouble k, max; CHECKCWID(ccsel, GTK_IS_COLOR_SELECTION); CHECKOPT(2, MAP_type_of_ClipVarType); if (_clip_parinfo(ClipMachineMemory, 2) == UNDEF_type_of_ClipVarType) gtk_color_selection_get_color(GTK_COLOR_SELECTION(ccsel->widget), color); else _map_get_colors(ClipMachineMemory, mcolor, color); color[0] = color[0] > 0 ? color[0] : 1; color[1] = color[1] > 0 ? color[1] : 1; color[2] = color[2] > 0 ? color[2] : 1; max = color[0] > color[1] ? color[0] : color[1]; max = max > color[2] ? max : color[2]; max = max > 0 ? max : 1; k = 1 / max; color[0] *= k; color[1] *= k; color[2] *= k; gtk_color_selection_set_color(GTK_COLOR_SELECTION(ccsel->widget), color); return 0; err: return 1; }
void dialog_colour_new(GtkWidget *w, gdouble *colour) { GtkWidget *csd; /* create colour selection dialog */ csd = gtk_color_selection_dialog_new("Edit colour"); /* set the initial colour */ gtk_color_selection_set_color(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(csd)->colorsel), colour); /* value colour update */ g_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(csd)->colorsel), "color_changed", GTK_SIGNAL_FUNC(set_colour_value), (gpointer) colour); /* widget colour update */ if (w) g_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(csd)->colorsel), "color_changed", GTK_SIGNAL_FUNC(set_colour_widget), (gpointer) w); g_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(csd)->ok_button), "clicked", GTK_SIGNAL_FUNC(destroy_widget), (gpointer) csd); gtk_widget_hide(GTK_COLOR_SELECTION_DIALOG(csd)->cancel_button); gtk_widget_show(csd); /* g_signal_connect(GTK_OBJECT(w), "destroy", GTK_SIGNAL_FUNC(destroy_widget), csd); */ }
void update_color() { GtkWidget *colorsel; gdouble color[3]; if(curr_obj < 0) return; if(!colorseldlg) return; colorsel = GTK_COLOR_SELECTION_DIALOG(colorseldlg)->colorsel; color[0] = aw_object[curr_obj].color[0]; color[1] = aw_object[curr_obj].color[1]; color[2] = aw_object[curr_obj].color[2]; gtk_color_selection_set_color(GTK_COLOR_SELECTION(colorsel), color); }
void confcolor (GtkWidget * placeholder, GdkColor * confcol) { gdouble c[3] = { 0, 0, 0 }; /* gint x; */ placeholder = gtk_vbox_new (FALSE, 2); if (blah != NULL) { if (this_panel_cb) this_panel_cb (); gtk_widget_destroy (blah); } c[0] = (gdouble) confcol->red / 65536; c[1] = (gdouble) confcol->green / 65536; c[2] = (gdouble) confcol->blue / 65536; blah = gtk_color_selection_new (); gtk_color_selection_set_color (GTK_COLOR_SELECTION (blah), c); /* for (x = 0; x < 8; ++x) GTK_COLOR_SELECTION (blah)->old_values[x] = GTK_COLOR_SELECTION (blah)->values[x]; */ gtk_widget_show (blah); gtk_box_pack_start (GTK_BOX (placeholder), blah, 0, 0, 2); gtk_widget_show (placeholder); gtk_box_pack_start (GTK_BOX (hbox), placeholder, 0, 0, 2); this_panel_cb = update_color; current = confcol; return; }
static int DoColor( COLORREF *c ){ GtkWidget* dlg; double clr[3]; int loop = 1, ret = IDCANCEL; clr[0] = ( (double)GetRValue( *c ) ) / 255.0; clr[1] = ( (double)GetGValue( *c ) ) / 255.0; clr[2] = ( (double)GetBValue( *c ) ) / 255.0; dlg = gtk_color_selection_dialog_new( "Choose Color" ); gtk_color_selection_set_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); gtk_signal_connect( GTK_OBJECT( dlg ), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL ); gtk_signal_connect( GTK_OBJECT( dlg ), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL ); gtk_signal_connect( GTK_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->ok_button ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDOK ) ); gtk_signal_connect( GTK_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->cancel_button ), "clicked", GTK_SIGNAL_FUNC( dialog_button_callback ), GINT_TO_POINTER( IDCANCEL ) ); g_object_set_data( G_OBJECT( dlg ), "loop", &loop ); g_object_set_data( G_OBJECT( dlg ), "ret", &ret ); gtk_widget_show( dlg ); gtk_grab_add( dlg ); while ( loop ) gtk_main_iteration(); gtk_color_selection_get_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); gtk_grab_remove( dlg ); gtk_widget_destroy( dlg ); if ( ret == IDOK ) { *c = RGB( clr[0] * 255, clr[1] * 255, clr[2] * 255 ); } return ret; }
/* * Create dialog window for colour selection. */ int colour_dialog_window(GtkButton * button, gpointer user_data) { GtkWidget *colour_dialog; GtkWidget *cancel_button, *ok_button, *colour_widget; gdouble colour[4]; int red, green, blue; DEBUG("colour_dialog_window"); colour_dialog = gtk_color_selection_dialog_new("XOSD Colour"); assert(colour_dialog); colour_widget = GTK_COLOR_SELECTION_DIALOG(colour_dialog)->colorsel; if (osd) { xosd_get_colour(osd, &red, &green, &blue); colour[0] = (float) red / (float) USHRT_MAX; colour[1] = (float) green / (float) USHRT_MAX; colour[2] = (float) blue / (float) USHRT_MAX; gtk_color_selection_set_color(GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (colour_dialog)->colorsel), colour); } ok_button = GTK_COLOR_SELECTION_DIALOG(colour_dialog)->ok_button; cancel_button = GTK_COLOR_SELECTION_DIALOG(colour_dialog)->cancel_button; gtk_signal_connect_object(GTK_OBJECT(cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(colour_dialog)); gtk_signal_connect(GTK_OBJECT(ok_button), "clicked", GTK_SIGNAL_FUNC(colour_dialog_ok), colour_dialog); gtk_widget_show_all(colour_dialog); return 0; }
bool color_dialog( GtkWidget *parent, Vector3& color, const char* title ){ GtkWidget* dlg; double clr[3]; ModalDialog dialog; clr[0] = color[0]; clr[1] = color[1]; clr[2] = color[2]; dlg = gtk_color_selection_dialog_new( title ); gtk_color_selection_set_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), clr ); g_signal_connect( G_OBJECT( dlg ), "delete_event", G_CALLBACK( dialog_delete_callback ), &dialog ); g_signal_connect( G_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->ok_button ), "clicked", G_CALLBACK( dialog_button_ok ), &dialog ); g_signal_connect( G_OBJECT( GTK_COLOR_SELECTION_DIALOG( dlg )->cancel_button ), "clicked", G_CALLBACK( dialog_button_cancel ), &dialog ); if ( parent != 0 ) { gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( parent ) ); } bool ok = modal_dialog_show( GTK_WINDOW( dlg ), dialog ) == eIDOK; if ( ok ) { GdkColor gdkcolor; gtk_color_selection_get_current_color( GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG( dlg )->colorsel ), &gdkcolor ); clr[0] = gdkcolor.red / 65535.0; clr[1] = gdkcolor.green / 65535.0; clr[2] = gdkcolor.blue / 65535.0; color[0] = (float)clr[0]; color[1] = (float)clr[1]; color[2] = (float)clr[2]; } gtk_widget_destroy( dlg ); return ok; }
void bscope_configure (void) { gdouble color[3]; if(configure_win) return; bscope_read_config(); color[0]=((gdouble)(bscope_cfg.color /0x10000))/256; color[1]=((gdouble)((bscope_cfg.color %0x10000)/0x100))/256; color[2]=((gdouble)(bscope_cfg.color %0x100))/256; configure_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(configure_win), 10); gtk_window_set_title(GTK_WINDOW(configure_win), _("Color Entry")); gtk_window_set_policy(GTK_WINDOW(configure_win), FALSE, FALSE, FALSE); gtk_window_set_position(GTK_WINDOW(configure_win), GTK_WIN_POS_MOUSE); gtk_signal_connect(GTK_OBJECT(configure_win), "destroy", GTK_SIGNAL_FUNC(gtk_widget_destroyed), &configure_win); vbox = gtk_vbox_new(FALSE, 5); options_frame = gtk_frame_new(_("Options:")); gtk_container_set_border_width(GTK_CONTAINER(options_frame), 5); options_vbox = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(options_vbox), 5); options_colorpicker = gtk_color_selection_new(); gtk_color_selection_set_color(GTK_COLOR_SELECTION(options_colorpicker), color); gtk_signal_connect(GTK_OBJECT(options_colorpicker), "color_changed", GTK_SIGNAL_FUNC(color_changed), NULL); gtk_box_pack_start(GTK_BOX(options_vbox), options_colorpicker, FALSE, FALSE, 0); gtk_widget_show(options_colorpicker); gtk_container_add(GTK_CONTAINER(options_frame), options_vbox); gtk_widget_show(options_vbox); gtk_box_pack_start(GTK_BOX(vbox), options_frame, TRUE, TRUE, 0); gtk_widget_show(options_frame); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); ok = gtk_button_new_with_label(_("OK")); gtk_signal_connect(GTK_OBJECT(ok), "clicked", GTK_SIGNAL_FUNC(configure_ok), NULL); GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0); gtk_widget_show(ok); cancel = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(configure_cancel), GUINT_TO_POINTER(bscope_cfg.color)); GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); gtk_widget_show(cancel); gtk_widget_show(bbox); gtk_container_add(GTK_CONTAINER(configure_win), vbox); gtk_widget_show(vbox); gtk_widget_show(configure_win); gtk_widget_grab_default(ok); }