1 | |
2 | #include<gtk/gtk.h> |
3 | |
4 | /*#define COLOR " #0f0;"*/ |
5 | #define COLOR " red;" |
6 | |
7 | static const char *css = |
8 | " window { background-color: white; }\n" |
9 | ".one {" |
10 | " all: unset;" |
11 | " min-width: 100px;" |
12 | " min-height:100px;" |
13 | " box-shadow: -10px -20px 5px 40px" COLOR |
14 | "}" |
15 | ".two {" |
16 | " all: unset;" |
17 | " min-width: 100px;" |
18 | " min-height:100px;" |
19 | " box-shadow: -10px -20px 0px 40px" COLOR |
20 | "}" |
21 | ".three {" |
22 | " all: unset;" |
23 | " min-width: 100px;" |
24 | " min-height:100px;" |
25 | " border-radius: 0px;" |
26 | " box-shadow: 0px 0px 10px 20px" COLOR |
27 | "}" |
28 | ".four {" |
29 | " all: unset;" |
30 | " min-width: 100px;" |
31 | " min-height: 100px;" |
32 | " box-shadow: 10px 20px 5px 40px" COLOR |
33 | " border-radius: 30px; " |
34 | " margin-right: 50px;" |
35 | "}" |
36 | ".five {" |
37 | " all: unset;" |
38 | " min-width: 100px;" |
39 | " min-height:100px;" |
40 | " border-radius: 30px; " |
41 | " box-shadow: 10px 20px 0px 40px" COLOR |
42 | "}" |
43 | /* This is the default CSD drop shadow from (current) Adwaita */ |
44 | ".b1 {" |
45 | " all: unset;" |
46 | " min-width: 100px;" |
47 | " min-height: 100px;" |
48 | " border-radius: 7px 7px 0px 0px;" |
49 | " box-shadow: 0px 0px 9px 0px rgba(0, 0, 0, 0.5);" |
50 | "}" |
51 | #if 0 |
52 | ".b2 {" |
53 | " all: unset;" |
54 | " min-width: 100px;" |
55 | " min-height:100px;" |
56 | " border-radius: 7px 7px 0 0;" |
57 | " box-shadow: 0 0 0 30px green;" |
58 | "}" |
59 | ".b3 {" |
60 | " all: unset;" |
61 | " min-width: 100px;" |
62 | " min-height:100px;" |
63 | " border-right: 30px solid blue;" |
64 | " border-radius: 40px;" |
65 | "}" |
66 | ".b4 {" |
67 | " all: unset;" |
68 | " min-width: 100px;" |
69 | " min-height:100px;" |
70 | " border-bottom: 30px solid blue;" |
71 | " border-radius: 40px;" |
72 | "}" |
73 | #endif |
74 | "" |
75 | ; |
76 | |
77 | static void |
78 | quit_cb (GtkWidget *widget, |
79 | gpointer data) |
80 | { |
81 | gboolean *done = data; |
82 | |
83 | *done = TRUE; |
84 | |
85 | g_main_context_wakeup (NULL); |
86 | } |
87 | |
88 | int |
89 | main (int argc, char **argv) |
90 | { |
91 | GtkWidget *window; |
92 | GtkWidget *box; |
93 | GtkWidget *top; |
94 | GtkWidget *bottom; |
95 | GtkWidget *w; |
96 | GtkCssProvider *provider; |
97 | gboolean done = FALSE; |
98 | |
99 | gtk_init (); |
100 | |
101 | provider = gtk_css_provider_new (); |
102 | gtk_css_provider_load_from_data (css_provider: provider, data: css, length: -1); |
103 | gtk_style_context_add_provider_for_display (display: gdk_display_get_default (), |
104 | GTK_STYLE_PROVIDER (provider), |
105 | GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); |
106 | |
107 | window = gtk_window_new (); |
108 | gtk_window_set_decorated (GTK_WINDOW (window), FALSE); |
109 | box = gtk_box_new (orientation: GTK_ORIENTATION_VERTICAL, spacing: 120); |
110 | top = gtk_box_new (orientation: GTK_ORIENTATION_HORIZONTAL, spacing: 120); |
111 | bottom = gtk_box_new (orientation: GTK_ORIENTATION_HORIZONTAL, spacing: 120); |
112 | gtk_widget_set_margin_start (widget: box, margin: 120); |
113 | gtk_widget_set_margin_end (widget: box, margin: 120); |
114 | gtk_widget_set_margin_top (widget: box, margin: 120); |
115 | gtk_widget_set_margin_bottom (widget: box, margin: 120); |
116 | |
117 | w = gtk_button_new (); |
118 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
119 | gtk_widget_add_css_class (widget: w, css_class: "one" ); |
120 | gtk_box_append (GTK_BOX (top), child: w); |
121 | |
122 | w = gtk_button_new (); |
123 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
124 | gtk_widget_add_css_class (widget: w, css_class: "two" ); |
125 | gtk_box_append (GTK_BOX (top), child: w); |
126 | |
127 | w = gtk_button_new (); |
128 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
129 | gtk_widget_add_css_class (widget: w, css_class: "three" ); |
130 | gtk_widget_set_opacity (widget: w, opacity: 0.7); |
131 | gtk_box_append (GTK_BOX (top), child: w); |
132 | |
133 | w = gtk_button_new (); |
134 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
135 | gtk_widget_add_css_class (widget: w, css_class: "four" ); |
136 | gtk_box_append (GTK_BOX (top), child: w); |
137 | |
138 | w = gtk_button_new (); |
139 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
140 | gtk_widget_add_css_class (widget: w, css_class: "five" ); |
141 | gtk_box_append (GTK_BOX (top), child: w); |
142 | |
143 | /* Bottom */ |
144 | w = gtk_button_new (); |
145 | gtk_widget_set_valign (widget: w, align: GTK_ALIGN_CENTER); |
146 | gtk_widget_add_css_class (widget: w, css_class: "b1" ); |
147 | gtk_box_append (GTK_BOX (bottom), child: w); |
148 | |
149 | /*w = gtk_button_new ();*/ |
150 | /*gtk_widget_set_valign (w, GTK_ALIGN_CENTER);*/ |
151 | /*gtk_widget_add_css_class (w, "b2");*/ |
152 | /*gtk_box_append (GTK_BOX (bottom), w);*/ |
153 | |
154 | /*w = gtk_button_new ();*/ |
155 | /*gtk_widget_set_valign (w, GTK_ALIGN_CENTER);*/ |
156 | /*gtk_widget_add_css_class (w, "b3");*/ |
157 | /*gtk_box_append (GTK_BOX (bottom), w);*/ |
158 | |
159 | /*w = gtk_button_new ();*/ |
160 | /*gtk_widget_set_valign (w, GTK_ALIGN_CENTER);*/ |
161 | /*gtk_widget_add_css_class (w, "b4");*/ |
162 | /*gtk_box_append (GTK_BOX (bottom), w);*/ |
163 | |
164 | gtk_box_append (GTK_BOX (box), child: top); |
165 | gtk_box_append (GTK_BOX (box), child: bottom); |
166 | gtk_window_set_child (GTK_WINDOW (window), child: box); |
167 | g_signal_connect (window, "destroy" , G_CALLBACK (quit_cb), &done); |
168 | gtk_widget_show (widget: window); |
169 | |
170 | while (!done) |
171 | g_main_context_iteration (NULL, TRUE); |
172 | } |
173 | |