Пример #1
0
/* 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;
}
Пример #2
0
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);
*/
}
Пример #3
0
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);
}
Пример #4
0
Файл: conf.c Проект: erikg/bmud
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;
}
Пример #5
0
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;
}
Пример #6
0
/*
 * 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;
}
Пример #7
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;
}
Пример #8
0
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);
}