[gtk+] Add a flow box example to gtk-demo
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add a flow box example to gtk-demo
- Date: Mon, 7 Oct 2013 04:06:13 +0000 (UTC)
commit 98b39ce91176f58eb9abc214f3ef1a6889b7f674
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Oct 7 00:05:21 2013 -0400
Add a flow box example to gtk-demo
demos/gtk-demo/Makefile.am | 1 +
demos/gtk-demo/demo.gresource.xml | 1 +
demos/gtk-demo/flowbox.c | 743 +++++++++++++++++++++++++++++++++++++
3 files changed, 745 insertions(+), 0 deletions(-)
---
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index 101071f..ec2b21d 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -30,6 +30,7 @@ demos = \
infobar.c \
links.c \
listbox.c \
+ flowbox.c \
list_store.c \
menus.c \
offscreen_window.c \
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index 1a32586..9b38c52 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -95,6 +95,7 @@
<file>entry_buffer.c</file>
<file>entry_completion.c</file>
<file>expander.c</file>
+ <file>flowbox.c</file>
<file>hypertext.c</file>
<file>iconview.c</file>
<file>iconview_edit.c</file>
diff --git a/demos/gtk-demo/flowbox.c b/demos/gtk-demo/flowbox.c
new file mode 100644
index 0000000..c0d9217
--- /dev/null
+++ b/demos/gtk-demo/flowbox.c
@@ -0,0 +1,743 @@
+/* Flow Box
+ *
+ * GtkFlowBox allows flexible and responsive grids which reflow
+ * as needed and support sorting and filtering.
+ *
+ * The children of a GtkFlowBox are regular widgets
+ */
+
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <string.h>
+
+static GtkWidget *window = NULL;
+
+static GtkWidget *
+color_swatch_new (const gchar *color)
+{
+ GtkWidget *button, *area;
+ GdkRGBA rgba;
+
+ gdk_rgba_parse (&rgba, color);
+
+ button = gtk_button_new ();
+ area = gtk_drawing_area_new ();
+ gtk_widget_set_size_request (area, 24, 24);
+ gtk_widget_override_background_color (area, 0, &rgba);
+ gtk_container_add (GTK_CONTAINER (button), area);
+ gtk_widget_show_all (button);
+
+ return button;
+}
+
+GtkWidget *
+do_flowbox (GtkWidget *do_widget)
+{
+ GtkWidget *scrolled, *flowbox;
+ const gchar *colors[] = {
+ "AliceBlue",
+ "AntiqueWhite",
+ "AntiqueWhite1",
+ "AntiqueWhite2",
+ "AntiqueWhite3",
+ "AntiqueWhite4",
+ "aqua",
+ "aquamarine",
+ "aquamarine1",
+ "aquamarine2",
+ "aquamarine3",
+ "aquamarine4",
+ "azure",
+ "azure1",
+ "azure2",
+ "azure3",
+ "azure4",
+ "beige",
+ "bisque",
+ "bisque1",
+ "bisque2",
+ "bisque3",
+ "bisque4",
+ "black",
+ "BlanchedAlmond",
+ "blue",
+ "blue1",
+ "blue2",
+ "blue3",
+ "blue4",
+ "BlueViolet",
+ "brown",
+ "brown1",
+ "brown2",
+ "brown3",
+ "brown4",
+ "burlywood",
+ "burlywood1",
+ "burlywood2",
+ "burlywood3",
+ "burlywood4",
+ "CadetBlue",
+ "CadetBlue1",
+ "CadetBlue2",
+ "CadetBlue3",
+ "CadetBlue4",
+ "chartreuse",
+ "chartreuse1",
+ "chartreuse2",
+ "chartreuse3",
+ "chartreuse4",
+ "chocolate",
+ "chocolate1",
+ "chocolate2",
+ "chocolate3",
+ "chocolate4",
+ "coral",
+ "coral1",
+ "coral2",
+ "coral3",
+ "coral4",
+ "CornflowerBlue",
+ "cornsilk",
+ "cornsilk1",
+ "cornsilk2",
+ "cornsilk3",
+ "cornsilk4",
+ "crimson",
+ "cyan",
+ "cyan1",
+ "cyan2",
+ "cyan3",
+ "cyan4",
+ "DarkBlue",
+ "DarkCyan",
+ "DarkGoldenrod",
+ "DarkGoldenrod1",
+ "DarkGoldenrod2",
+ "DarkGoldenrod3",
+ "DarkGoldenrod4",
+ "DarkGray",
+ "DarkGreen",
+ "DarkGrey",
+ "DarkKhaki",
+ "DarkMagenta",
+ "DarkOliveGreen",
+ "DarkOliveGreen1",
+ "DarkOliveGreen2",
+ "DarkOliveGreen3",
+ "DarkOliveGreen4",
+ "DarkOrange",
+ "DarkOrange1",
+ "DarkOrange2",
+ "DarkOrange3",
+ "DarkOrange4",
+ "DarkOrchid",
+ "DarkOrchid1",
+ "DarkOrchid2",
+ "DarkOrchid3",
+ "DarkOrchid4",
+ "DarkRed",
+ "DarkSalmon",
+ "DarkSeaGreen",
+ "DarkSeaGreen1",
+ "DarkSeaGreen2",
+ "DarkSeaGreen3",
+ "DarkSeaGreen4",
+ "DarkSlateBlue",
+ "DarkSlateGray",
+ "DarkSlateGray1",
+ "DarkSlateGray2",
+ "DarkSlateGray3",
+ "DarkSlateGray4",
+ "DarkSlateGrey",
+ "DarkTurquoise",
+ "DarkViolet",
+ "DeepPink",
+ "DeepPink1",
+ "DeepPink2",
+ "DeepPink3",
+ "DeepPink4",
+ "DeepSkyBlue",
+ "DeepSkyBlue1",
+ "DeepSkyBlue2",
+ "DeepSkyBlue3",
+ "DeepSkyBlue4",
+ "DimGray",
+ "DimGrey",
+ "DodgerBlue",
+ "DodgerBlue1",
+ "DodgerBlue2",
+ "DodgerBlue3",
+ "DodgerBlue4",
+ "firebrick",
+ "firebrick1",
+ "firebrick2",
+ "firebrick3",
+ "firebrick4",
+ "FloralWhite",
+ "ForestGreen",
+ "fuchsia",
+ "gainsboro",
+ "GhostWhite",
+ "gold",
+ "gold1",
+ "gold2",
+ "gold3",
+ "gold4",
+ "goldenrod",
+ "goldenrod1",
+ "goldenrod2",
+ "goldenrod3",
+ "goldenrod4",
+ "gray",
+ "gray0",
+ "gray1",
+ "gray10",
+ "gray100",
+ "gray11",
+ "gray12",
+ "gray13",
+ "gray14",
+ "gray15",
+ "gray16",
+ "gray17",
+ "gray18",
+ "gray19",
+ "gray2",
+ "gray20",
+ "gray21",
+ "gray22",
+ "gray23",
+ "gray24",
+ "gray25",
+ "gray26",
+ "gray27",
+ "gray28",
+ "gray29",
+ "gray3",
+ "gray30",
+ "gray31",
+ "gray32",
+ "gray33",
+ "gray34",
+ "gray35",
+ "gray36",
+ "gray37",
+ "gray38",
+ "gray39",
+ "gray4",
+ "gray40",
+ "gray41",
+ "gray42",
+ "gray43",
+ "gray44",
+ "gray45",
+ "gray46",
+ "gray47",
+ "gray48",
+ "gray49",
+ "gray5",
+ "gray50",
+ "gray51",
+ "gray52",
+ "gray53",
+ "gray54",
+ "gray55",
+ "gray56",
+ "gray57",
+ "gray58",
+ "gray59",
+ "gray6",
+ "gray60",
+ "gray61",
+ "gray62",
+ "gray63",
+ "gray64",
+ "gray65",
+ "gray66",
+ "gray67",
+ "gray68",
+ "gray69",
+ "gray7",
+ "gray70",
+ "gray71",
+ "gray72",
+ "gray73",
+ "gray74",
+ "gray75",
+ "gray76",
+ "gray77",
+ "gray78",
+ "gray79",
+ "gray8",
+ "gray80",
+ "gray81",
+ "gray82",
+ "gray83",
+ "gray84",
+ "gray85",
+ "gray86",
+ "gray87",
+ "gray88",
+ "gray89",
+ "gray9",
+ "gray90",
+ "gray91",
+ "gray92",
+ "gray93",
+ "gray94",
+ "gray95",
+ "gray96",
+ "gray97",
+ "gray98",
+ "gray99",
+ "green",
+ "green1",
+ "green2",
+ "green3",
+ "green4",
+ "GreenYellow",
+ "grey",
+ "grey0",
+ "grey1",
+ "grey10",
+ "grey100",
+ "grey11",
+ "grey12",
+ "grey13",
+ "grey14",
+ "grey15",
+ "grey16",
+ "grey17",
+ "grey18",
+ "grey19",
+ "grey2",
+ "grey20",
+ "grey21",
+ "grey22",
+ "grey23",
+ "grey24",
+ "grey25",
+ "grey26",
+ "grey27",
+ "grey28",
+ "grey29",
+ "grey3",
+ "grey30",
+ "grey31",
+ "grey32",
+ "grey33",
+ "grey34",
+ "grey35",
+ "grey36",
+ "grey37",
+ "grey38",
+ "grey39",
+ "grey4",
+ "grey40",
+ "grey41",
+ "grey42",
+ "grey43",
+ "grey44",
+ "grey45",
+ "grey46",
+ "grey47",
+ "grey48",
+ "grey49",
+ "grey5",
+ "grey50",
+ "grey51",
+ "grey52",
+ "grey53",
+ "grey54",
+ "grey55",
+ "grey56",
+ "grey57",
+ "grey58",
+ "grey59",
+ "grey6",
+ "grey60",
+ "grey61",
+ "grey62",
+ "grey63",
+ "grey64",
+ "grey65",
+ "grey66",
+ "grey67",
+ "grey68",
+ "grey69",
+ "grey7",
+ "grey70",
+ "grey71",
+ "grey72",
+ "grey73",
+ "grey74",
+ "grey75",
+ "grey76",
+ "grey77",
+ "grey78",
+ "grey79",
+ "grey8",
+ "grey80",
+ "grey81",
+ "grey82",
+ "grey83",
+ "grey84",
+ "grey85",
+ "grey86",
+ "grey87",
+ "grey88",
+ "grey89",
+ "grey9",
+ "grey90",
+ "grey91",
+ "grey92",
+ "grey93",
+ "grey94",
+ "grey95",
+ "grey96",
+ "grey97",
+ "grey98",
+ "grey99",
+ "honeydew",
+ "honeydew1",
+ "honeydew2",
+ "honeydew3",
+ "honeydew4",
+ "HotPink",
+ "HotPink1",
+ "HotPink2",
+ "HotPink3",
+ "HotPink4",
+ "IndianRed",
+ "IndianRed1",
+ "IndianRed2",
+ "IndianRed3",
+ "IndianRed4",
+ "indigo",
+ "ivory",
+ "ivory1",
+ "ivory2",
+ "ivory3",
+ "ivory4",
+ "khaki",
+ "khaki1",
+ "khaki2",
+ "khaki3",
+ "khaki4",
+ "lavender",
+ "LavenderBlush",
+ "LavenderBlush1",
+ "LavenderBlush2",
+ "LavenderBlush3",
+ "LavenderBlush4",
+ "LawnGreen",
+ "LemonChiffon",
+ "LemonChiffon1",
+ "LemonChiffon2",
+ "LemonChiffon3",
+ "LemonChiffon4",
+ "LightBlue",
+ "LightBlue1",
+ "LightBlue2",
+ "LightBlue3",
+ "LightBlue4",
+ "LightCoral",
+ "LightCyan",
+ "LightCyan1",
+ "LightCyan2",
+ "LightCyan3",
+ "LightCyan4",
+ "LightGoldenrod",
+ "LightGoldenrod1",
+ "LightGoldenrod2",
+ "LightGoldenrod3",
+ "LightGoldenrod4",
+ "LightGoldenrodYellow",
+ "LightGray",
+ "LightGreen",
+ "LightGrey",
+ "LightPink",
+ "LightPink1",
+ "LightPink2",
+ "LightPink3",
+ "LightPink4",
+ "LightSalmon",
+ "LightSalmon1",
+ "LightSalmon2",
+ "LightSalmon3",
+ "LightSalmon4",
+ "LightSeaGreen",
+ "LightSkyBlue",
+ "LightSkyBlue1",
+ "LightSkyBlue2",
+ "LightSkyBlue3",
+ "LightSkyBlue4",
+ "LightSlateBlue",
+ "LightSlateGray",
+ "LightSlateGrey",
+ "LightSteelBlue",
+ "LightSteelBlue1",
+ "LightSteelBlue2",
+ "LightSteelBlue3",
+ "LightSteelBlue4",
+ "LightYellow",
+ "LightYellow1",
+ "LightYellow2",
+ "LightYellow3",
+ "LightYellow4",
+ "lime",
+ "LimeGreen",
+ "linen",
+ "magenta",
+ "magenta1",
+ "magenta2",
+ "magenta3",
+ "magenta4",
+ "maroon",
+ "maroon1",
+ "maroon2",
+ "maroon3",
+ "maroon4",
+ "MediumAquamarine",
+ "MediumBlue",
+ "MediumOrchid",
+ "MediumOrchid1",
+ "MediumOrchid2",
+ "MediumOrchid3",
+ "MediumOrchid4",
+ "MediumPurple",
+ "MediumPurple1",
+ "MediumPurple2",
+ "MediumPurple3",
+ "MediumPurple4",
+ "MediumSeaGreen",
+ "MediumSlateBlue",
+ "MediumSpringGreen",
+ "MediumTurquoise",
+ "MediumVioletRed",
+ "MidnightBlue",
+ "MintCream",
+ "MistyRose",
+ "MistyRose1",
+ "MistyRose2",
+ "MistyRose3",
+ "MistyRose4",
+ "moccasin",
+ "NavajoWhite",
+ "NavajoWhite1",
+ "NavajoWhite2",
+ "NavajoWhite3",
+ "NavajoWhite4",
+ "navy",
+ "NavyBlue",
+ "OldLace",
+ "olive",
+ "OliveDrab",
+ "OliveDrab1",
+ "OliveDrab2",
+ "OliveDrab3",
+ "OliveDrab4",
+ "orange",
+ "orange1",
+ "orange2",
+ "orange3",
+ "orange4",
+ "OrangeRed",
+ "OrangeRed1",
+ "OrangeRed2",
+ "OrangeRed3",
+ "OrangeRed4",
+ "orchid",
+ "orchid1",
+ "orchid2",
+ "orchid3",
+ "orchid4",
+ "PaleGoldenrod",
+ "PaleGreen",
+ "PaleGreen1",
+ "PaleGreen2",
+ "PaleGreen3",
+ "PaleGreen4",
+ "PaleTurquoise",
+ "PaleTurquoise1",
+ "PaleTurquoise2",
+ "PaleTurquoise3",
+ "PaleTurquoise4",
+ "PaleVioletRed",
+ "PaleVioletRed1",
+ "PaleVioletRed2",
+ "PaleVioletRed3",
+ "PaleVioletRed4",
+ "PapayaWhip",
+ "PeachPuff",
+ "PeachPuff1",
+ "PeachPuff2",
+ "PeachPuff3",
+ "PeachPuff4",
+ "peru",
+ "pink",
+ "pink1",
+ "pink2",
+ "pink3",
+ "pink4",
+ "plum",
+ "plum1",
+ "plum2",
+ "plum3",
+ "plum4",
+ "PowderBlue",
+ "purple",
+ "purple1",
+ "purple2",
+ "purple3",
+ "purple4",
+ "red",
+ "red1",
+ "red2",
+ "red3",
+ "red4",
+ "RosyBrown",
+ "RosyBrown1",
+ "RosyBrown2",
+ "RosyBrown3",
+ "RosyBrown4",
+ "RoyalBlue",
+ "RoyalBlue1",
+ "RoyalBlue2",
+ "RoyalBlue3",
+ "RoyalBlue4",
+ "SaddleBrown",
+ "salmon",
+ "salmon1",
+ "salmon2",
+ "salmon3",
+ "salmon4",
+ "SandyBrown",
+ "SeaGreen",
+ "SeaGreen1",
+ "SeaGreen2",
+ "SeaGreen3",
+ "SeaGreen4",
+ "seashell",
+ "seashell1",
+ "seashell2",
+ "seashell3",
+ "seashell4",
+ "sienna",
+ "sienna1",
+ "sienna2",
+ "sienna3",
+ "sienna4",
+ "silver",
+ "SkyBlue",
+ "SkyBlue1",
+ "SkyBlue2",
+ "SkyBlue3",
+ "SkyBlue4",
+ "SlateBlue",
+ "SlateBlue1",
+ "SlateBlue2",
+ "SlateBlue3",
+ "SlateBlue4",
+ "SlateGray",
+ "SlateGray1",
+ "SlateGray2",
+ "SlateGray3",
+ "SlateGray4",
+ "SlateGrey",
+ "snow",
+ "snow1",
+ "snow2",
+ "snow3",
+ "snow4",
+ "SpringGreen",
+ "SpringGreen1",
+ "SpringGreen2",
+ "SpringGreen3",
+ "SpringGreen4",
+ "SteelBlue",
+ "SteelBlue1",
+ "SteelBlue2",
+ "SteelBlue3",
+ "SteelBlue4",
+ "tan",
+ "tan1",
+ "tan2",
+ "tan3",
+ "tan4",
+ "teal",
+ "thistle",
+ "thistle1",
+ "thistle2",
+ "thistle3",
+ "thistle4",
+ "tomato",
+ "tomato1",
+ "tomato2",
+ "tomato3",
+ "tomato4",
+ "turquoise",
+ "turquoise1",
+ "turquoise2",
+ "turquoise3",
+ "turquoise4",
+ "violet",
+ "VioletRed",
+ "VioletRed1",
+ "VioletRed2",
+ "VioletRed3",
+ "VioletRed4",
+ "wheat",
+ "wheat1",
+ "wheat2",
+ "wheat3",
+ "wheat4",
+ "white",
+ "WhiteSmoke",
+ "yellow",
+ "yellow1",
+ "yellow2",
+ "yellow3",
+ "yellow4",
+ "YellowGreen",
+ NULL
+ };
+ gint i;
+
+ if (!window)
+ {
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_screen (GTK_WINDOW (window),
+ gtk_widget_get_screen (do_widget));
+ gtk_window_set_title (GTK_WINDOW (window), "Flow Box");
+ gtk_window_set_default_size (GTK_WINDOW (window), 400, 600);
+
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_widget_destroyed),
+ &window);
+
+ scrolled = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
+ flowbox = gtk_flow_box_new ();
+ gtk_widget_set_valign (flowbox, GTK_ALIGN_START);
+ gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX (flowbox), 30);
+ gtk_flow_box_set_selection_mode (GTK_FLOW_BOX (flowbox), GTK_SELECTION_NONE);
+
+ gtk_container_add (GTK_CONTAINER (scrolled), flowbox);
+ gtk_container_add (GTK_CONTAINER (window), scrolled);
+
+ for (i = 0; colors[i]; i++)
+ {
+ gtk_container_add (GTK_CONTAINER (flowbox), color_swatch_new (colors[i]));
+ }
+
+ gtk_widget_show_all (scrolled);
+ }
+
+ if (!gtk_widget_get_visible (window))
+ gtk_widget_show (window);
+ else
+ gtk_widget_destroy (window);
+
+ return window;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]