 609e04ddcf
			
		
	
	609e04ddcf
	
	
	
		
			
			Clean up the code of many examples in minor ways, fix some memory leaks, and avoid the use of dialogs where a regular toplevel works just as well.
		
			
				
	
	
		
			753 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			753 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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 gboolean
 | |
| draw_color (GtkWidget  *drawingarea,
 | |
|             cairo_t    *cr,
 | |
|             const char *color_name)
 | |
| {
 | |
|   GdkRGBA rgba;
 | |
| 
 | |
|   if (gdk_rgba_parse (&rgba, color_name))
 | |
|     {
 | |
|       gdk_cairo_set_source_rgba (cr, &rgba);
 | |
|       cairo_paint (cr);
 | |
|     }
 | |
| 
 | |
|   return FALSE;
 | |
| }
 | |
| 
 | |
| static GtkWidget *
 | |
| color_swatch_new (const gchar *color)
 | |
| {
 | |
|   GtkWidget *button, *area;
 | |
| 
 | |
|   button = gtk_button_new ();
 | |
|   area = gtk_drawing_area_new ();
 | |
|   g_signal_connect (area, "draw", G_CALLBACK (draw_color), (gpointer) color);
 | |
|   gtk_widget_set_size_request (area, 24, 24);
 | |
|   gtk_container_add (GTK_CONTAINER (button), area);
 | |
|   gtk_widget_show_all (button);
 | |
| 
 | |
|   return button;
 | |
| }
 | |
| 
 | |
| GtkWidget *
 | |
| do_flowbox (GtkWidget *do_widget)
 | |
| {
 | |
|   static GtkWidget *window = NULL;
 | |
|   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;
 | |
| }
 |