/usr/share/doc/fp-units-gtk2/3.0.0/examples/gtk2/gtk_demo/colorsel.inc is in fp-units-gtk2-3.0.0 3.0.0+dfsg-11+deb9u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | (* Color Selector
*
* GtkColorSelection lets the user choose a color. GtkColorSelectionDialog is
* a prebuilt dialog containing a GtkColorSelection.
*
*)
var
colorsel_window,
colorsel_da,
colorsel_frame : PGtkWidget;
colorsel_color : TGdkColor;
procedure change_color_callback (button : PGtkWidget;
data : gpointer); cdecl;
var
dialog : PGtkWidget;
colorsel : PGtkColorSelection;
response : gint;
begin
dialog := gtk_color_selection_dialog_new ('Changing color');
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (colorsel_window));
colorsel := PGtkColorSelection ( PGtkColorSelectionDialog(dialog)^.colorsel );
gtk_color_selection_set_previous_color (colorsel, @colorsel_color);
gtk_color_selection_set_current_color (colorsel, @colorsel_color);
gtk_color_selection_set_has_palette (colorsel, TRUE);
response := gtk_dialog_run (GTK_DIALOG (dialog));
if response = GTK_RESPONSE_OK then
begin
gtk_color_selection_get_current_color (colorsel, @colorsel_color);
gtk_widget_modify_bg (colorsel_da, GTK_STATE_NORMAL, @colorsel_color);
end;
gtk_widget_destroy (dialog);
end;
function do_colorsel : PGtkWidget;
var
vbox,
button,
alignment : PGtkWidget;
begin
if colorsel_window = NULL then
begin
colorsel_color.red := $0;
colorsel_color.blue := $ffff;
colorsel_color.green := $0;
colorsel_window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (colorsel_window), 'Color Selection');
g_signal_connect (colorsel_window, 'destroy',
G_CALLBACK (@gtk_widget_destroyed), @colorsel_window);
gtk_container_set_border_width (GTK_CONTAINER (colorsel_window), 8);
vbox := gtk_vbox_new (FALSE, 8);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
gtk_container_add (GTK_CONTAINER (colorsel_window), vbox);
(*
* Create the color swatch area
*)
colorsel_frame := gtk_frame_new (NULL);
gtk_frame_set_shadow_type (GTK_FRAME (colorsel_frame), GTK_SHADOW_IN);
gtk_box_pack_start (GTK_BOX (vbox), colorsel_frame, TRUE, TRUE, 0);
colorsel_da := gtk_drawing_area_new ();
(* set a minimum size *)
gtk_widget_set_size_request (colorsel_da, 200, 200);
(* set the color *)
gtk_widget_modify_bg (colorsel_da, GTK_STATE_NORMAL, @colorsel_color);
gtk_container_add (GTK_CONTAINER (colorsel_frame), colorsel_da);
alignment := gtk_alignment_new (1.0, 0.5, 0.0, 0.0);
button := gtk_button_new_with_mnemonic ('_Change the above color');
gtk_container_add (GTK_CONTAINER (alignment), button);
gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
g_signal_connect (button, 'clicked',
G_CALLBACK (@change_color_callback), NULL);
end;
if not GTK_WIDGET_VISIBLE (colorsel_window) then
gtk_widget_show_all (colorsel_window)
else begin
gtk_widget_destroy (colorsel_window);
colorsel_window := NULL;
end;
do_colorsel := colorsel_window;
end;
|