annotate libmlk-ui/mlk/ui/gridmenu.h @ 620:91ef0df9f501

ui: simplify gridmenu
author David Demelier <markand@malikania.fr>
date Tue, 22 Aug 2023 19:23:00 +0200
parents d97674d33764
children eecdf5140245
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * gridmenu.h -- GUI grid menu
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 433
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
19 #ifndef MLK_UI_GRIDMENU_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_UI_GRIDMENU_H
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <stddef.h>
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
24 struct mlk_font;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
25 struct mlk_gridmenu;
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
26 struct mlk_gridmenu_style;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
28 union mlk_event;
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
29
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
30 struct mlk_gridmenu {
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
31 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
32 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
33 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
34 * Position in x.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
35 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
36 int x;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
38 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
39 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
40 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
41 * Position in y.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
42 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
43 int y;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
44
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
45 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
46 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
47 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
48 * Menu frame width.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
49 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
50 unsigned int w;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
51
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
52 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
53 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
54 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
55 * Menu frame height.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
56 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
57 unsigned int h;
507
d49a05e7a5b5 ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents: 506
diff changeset
58
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
59 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
60 * (read-write, borrowed)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
61 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
62 * List of strings to show.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
63 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
64 const char * const *items;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
65
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
66 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
67 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
68 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
69 * Number of items in ::mlk_gridmenu::items.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
70 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
71 size_t itemsz;
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
73 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
74 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
75 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
76 * Current selected item in the grid.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
77 */
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
78 size_t selected;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
79
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
80 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
81 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
82 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
83 * Number of rows to be shown within the frame height.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
84 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 unsigned int nrows;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
86
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
87 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
88 * (read-write)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
89 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
90 * Number of colums to be shown within the frame width.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
91 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 unsigned int ncols;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
93
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
94 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
95 * (read-write, borrowed)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
96 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
97 * Style to use for drawing this menu.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
98 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
99 struct mlk_gridmenu_style *style;
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
100
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
101 /** \cond MLK_PRIVATE_DECLS */
395
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
102 unsigned int eltw; /* maximum entry label width */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
103 unsigned int elth; /* maximum entry label height */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
104 unsigned int spacew; /* space between element horizontally */
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
105 unsigned int spaceh; /* and vertically */
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
106 /** \endcond MLK_PRIVATE_DECLS */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 };
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
109 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
110 * \struct mlk_gridmenu_style
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
111 * \brief Grid menu style.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
112 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
113 struct mlk_gridmenu_style {
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
114 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
115 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
116 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
117 * Background color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
118 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
119 unsigned long background;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
120
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
121 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
122 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
123 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
124 * Border color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
125 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
126 unsigned long border;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
127
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
128 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
129 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
130 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
131 * Border size.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
132 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
133 unsigned int border_size;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
134
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
135 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
136 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
137 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
138 * Text color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
139 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
140 unsigned long color;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
141
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
142 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
143 * (read-write)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
144 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
145 * Selected color.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
146 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
147 unsigned long color_selected;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
148
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
149 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
150 * (read-write, borrowed, optional)
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
151 *
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
152 * Font for drawing text.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
153 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
154 struct mlk_font *font;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
155
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
156 /*
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
157 * (read-write, borrowed, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
158 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
159 * Arbitrary user data.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
160 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
161 void *data;
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
162
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
163 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
164 * (read-write, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
165 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
166 * Update the grid menu.
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
167 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
168 * \param self this style
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
169 * \param menu the menu to update
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
170 * \param ticks number of ticks since last frame
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
171 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
172 void (*update)(struct mlk_gridmenu_style *self,
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
173 struct mlk_gridmenu *menu,
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
174 unsigned int ticks);
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
175
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
176 /**
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
177 * (read-write, optional)
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
178 *
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
179 * Draw a frame box for this menu.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
180 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
181 * \param self this style
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
182 * \param menu the underlying menu
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
183 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
184 void (*draw_frame)(struct mlk_gridmenu_style *self,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
185 struct mlk_gridmenu *menu);
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
186
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
187 /**
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
188 * (read-write, optional)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
189 *
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
190 * Draw a specific item.
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
191 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
192 * \param self this style
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
193 * \param menu the underlying menu
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
194 * \param item the item content
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
195 * \param row the row number (relative)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
196 * \param col the column number (relative)
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
197 * \param selected non-zero if the item is currently selected
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
198 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
199 void (*draw_text)(struct mlk_gridmenu_style *self,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
200 struct mlk_gridmenu *menu,
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
201 const char *item,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
202 unsigned int row,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
203 unsigned int col,
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
204 int selected);
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
205 };
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
206
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
207 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
208 * \brief Dark default style for gridmenu.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
209 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
210 extern struct mlk_gridmenu_style mlk_gridmenu_style_dark;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
211
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
212 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
213 * \brief Light default style for gridmenu.
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
214 */
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
215 extern struct mlk_gridmenu_style mlk_gridmenu_style_light;
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
216
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
217 /**
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
218 * \brief Default style for all gridmenus.
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
219 */
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
220 extern struct mlk_gridmenu_style *mlk_gridmenu_style;
505
6100c643dba0 ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents: 495
diff changeset
221
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
222 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
223 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
224 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
225
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
226 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
227 * Resize the grid menu window.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
228 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
229 * \pre menu != NULL
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
230 * \param menu the menu
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
231 */
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
232 void
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
233 mlk_gridmenu_resize(struct mlk_gridmenu *menu);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
234
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
235 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
236 * Handle an event.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
237 *
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
238 * \pre menu != NULL
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
239 * \pre ev != NULL
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
240 * \param menu the menu
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
241 * \param ev the event
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
242 * \return non-zero if a new item is selected, 0 otherwise
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
243 */
395
ef2fc4442ed5 ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
244 int
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
245 mlk_gridmenu_handle(struct mlk_gridmenu *menu, const union mlk_event *ev);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
246
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
247 /**
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
248 * Invoke ::mlk_gridmenu_style::update.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
249 */
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 void
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
251 mlk_gridmenu_update(struct mlk_gridmenu *menu, unsigned int ticks);
506
e205625015ba ui: gridmenu is stylable
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
252
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
253 /**
609
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
254 * Invoke the functions:
d97674d33764 ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents: 608
diff changeset
255 *
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
256 * - ::mlk_gridmenu_style::draw_frame,
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
257 * - ::mlk_gridmenu_style::draw_item.
608
2527b000aaa5 ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
258 */
506
e205625015ba ui: gridmenu is stylable
David Demelier <markand@malikania.fr>
parents: 505
diff changeset
259 void
620
91ef0df9f501 ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents: 609
diff changeset
260 mlk_gridmenu_draw(struct mlk_gridmenu *menu);
181
867b60e6258a ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff changeset
261
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
262 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
263 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 507
diff changeset
264 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
265
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
266 #endif /* !MLK_UI_GRIDMENU_H */