Mercurial > molko
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 |
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 */ |