forked from AuroraMiddleware/gtk
d732c869c2
Add the names of the main widgets as keywords to our demos, but also things like "game". This helps finding relevant demos in our growing list. You can now for example type "label", and find the "error states" and "links" demos showing GtkLabel features.
114 lines
4.1 KiB
C
114 lines
4.1 KiB
C
/* Pickers
|
|
* #Keywords: GtkColorChooser, GtkFontChooser, GtkFileChooser,
|
|
* #Keywords: GtkApplicationChooser
|
|
*
|
|
* These widgets are mainly intended for use in preference dialogs.
|
|
* They allow to select colors, fonts, files, directories and applications.
|
|
*/
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
#define COLOR(r,g,b) { r/255., g/255., b/255., 1.0 }
|
|
|
|
GtkWidget *
|
|
do_pickers (GtkWidget *do_widget)
|
|
{
|
|
static GtkWidget *window = NULL;
|
|
GtkWidget *table, *label, *picker;
|
|
GdkRGBA solarized[] = {
|
|
COLOR (0xff, 0xff, 0xff),
|
|
COLOR (0x07, 0x36, 0x42),
|
|
COLOR (0xdc, 0x32, 0x2f),
|
|
COLOR (0x85, 0x99, 0x00),
|
|
COLOR (0xb5, 0x89, 0x00),
|
|
COLOR (0x26, 0x8b, 0xd2),
|
|
COLOR (0xd3, 0x36, 0x82),
|
|
COLOR (0x2a, 0xa1, 0x98),
|
|
COLOR (0xee, 0xe8, 0xd5),
|
|
|
|
COLOR (0x00, 0x00, 0x00),
|
|
COLOR (0x00, 0x2b, 0x36),
|
|
COLOR (0xcb, 0x4b, 0x16),
|
|
COLOR (0x58, 0x6e, 0x75),
|
|
COLOR (0x65, 0x7b, 0x83),
|
|
COLOR (0x83, 0x94, 0x96),
|
|
COLOR (0x6c, 0x71, 0xc4),
|
|
COLOR (0x93, 0xa1, 0xa1),
|
|
COLOR (0xfd, 0xf6, 0xe3),
|
|
};
|
|
|
|
if (!window)
|
|
{
|
|
window = gtk_window_new ();
|
|
gtk_window_set_display (GTK_WINDOW (window),
|
|
gtk_widget_get_display (do_widget));
|
|
gtk_window_set_title (GTK_WINDOW (window), "Pickers");
|
|
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
|
|
|
table = gtk_grid_new ();
|
|
gtk_widget_set_margin_start (table, 20);
|
|
gtk_widget_set_margin_end (table, 20);
|
|
gtk_widget_set_margin_top (table, 20);
|
|
gtk_widget_set_margin_bottom (table, 20);
|
|
gtk_grid_set_row_spacing (GTK_GRID (table), 3);
|
|
gtk_grid_set_column_spacing (GTK_GRID (table), 10);
|
|
gtk_window_set_child (GTK_WINDOW (window), table);
|
|
|
|
label = gtk_label_new ("Color:");
|
|
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
|
gtk_widget_set_hexpand (label, TRUE);
|
|
picker = gtk_color_button_new ();
|
|
gtk_color_button_set_title (GTK_COLOR_BUTTON (picker), "Solarized colors");
|
|
gtk_color_chooser_add_palette (GTK_COLOR_CHOOSER (picker),
|
|
GTK_ORIENTATION_HORIZONTAL,
|
|
9,
|
|
18,
|
|
solarized);
|
|
|
|
gtk_grid_attach (GTK_GRID (table), label, 0, 0, 1, 1);
|
|
gtk_grid_attach (GTK_GRID (table), picker, 1, 0, 1, 1);
|
|
|
|
label = gtk_label_new ("Font:");
|
|
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
|
gtk_widget_set_hexpand (label, TRUE);
|
|
picker = gtk_font_button_new ();
|
|
gtk_grid_attach (GTK_GRID (table), label, 0, 1, 1, 1);
|
|
gtk_grid_attach (GTK_GRID (table), picker, 1, 1, 1, 1);
|
|
|
|
label = gtk_label_new ("File:");
|
|
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
|
gtk_widget_set_hexpand (label, TRUE);
|
|
picker = gtk_file_chooser_button_new ("Pick a File",
|
|
GTK_FILE_CHOOSER_ACTION_OPEN);
|
|
gtk_grid_attach (GTK_GRID (table), label, 0, 2, 1, 1);
|
|
gtk_grid_attach (GTK_GRID (table), picker, 1, 2, 1, 1);
|
|
|
|
label = gtk_label_new ("Folder:");
|
|
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
|
picker = gtk_file_chooser_button_new ("Pick a Folder",
|
|
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
|
gtk_grid_attach (GTK_GRID (table), label, 0, 3, 1, 1);
|
|
gtk_grid_attach (GTK_GRID (table), picker, 1, 3, 1, 1);
|
|
|
|
label = gtk_label_new ("Mail:");
|
|
gtk_widget_set_halign (label, GTK_ALIGN_START);
|
|
gtk_widget_set_valign (label, GTK_ALIGN_CENTER);
|
|
gtk_widget_set_hexpand (label, TRUE);
|
|
picker = gtk_app_chooser_button_new ("x-scheme-handler/mailto");
|
|
gtk_app_chooser_button_set_show_dialog_item (GTK_APP_CHOOSER_BUTTON (picker), TRUE);
|
|
gtk_grid_attach (GTK_GRID (table), label, 0, 4, 1, 1);
|
|
gtk_grid_attach (GTK_GRID (table), picker, 1, 4, 1, 1);
|
|
}
|
|
|
|
if (!gtk_widget_get_visible (window))
|
|
gtk_widget_show (window);
|
|
else
|
|
gtk_window_destroy (GTK_WINDOW (window));
|
|
|
|
return window;
|
|
}
|