Mercurial > molko
annotate libmlk-ui/mlk/ui/gridmenu.h @ 646:7e1eb7f6c049 default tip @
misc: remove .clang
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 04 Feb 2024 15:24:37 +0100 |
parents | eecdf5140245 |
children |
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 /** |
621
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
150 * (read-write) |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
151 * |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
152 * Padding around items. |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
153 */ |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
154 unsigned int padding; |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
155 |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
156 /** |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
157 * (read-write, borrowed, optional) |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
158 * |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
159 * Font for drawing text. |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
160 */ |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
161 struct mlk_font *font; |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
162 |
608
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, borrowed, 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 * Arbitrary user data. |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
167 */ |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
168 void *data; |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
169 |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
170 /** |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
171 * (read-write, optional) |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
172 * |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
173 * Update the grid menu. |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
174 * |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
175 * \param self this style |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
176 * \param menu the menu to update |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
177 * \param ticks number of ticks since last frame |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
178 */ |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
179 void (*update)(struct mlk_gridmenu_style *self, |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
180 struct mlk_gridmenu *menu, |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
181 unsigned int ticks); |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
182 |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
183 /** |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
184 * (read-write, optional) |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
185 * |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
186 * Draw a frame box for this menu. |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
187 * |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
188 * \param self this style |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
189 * \param menu the underlying menu |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
190 */ |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
191 void (*draw_frame)(struct mlk_gridmenu_style *self, |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
192 struct mlk_gridmenu *menu); |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
193 |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
194 /** |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
195 * (read-write, optional) |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
196 * |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
197 * Draw a specific item. |
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 * \param self this style |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
200 * \param menu the underlying menu |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
201 * \param item the item content |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
202 * \param row the row number (relative) |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
203 * \param col the column number (relative) |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
204 * \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
|
205 */ |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
206 void (*draw_text)(struct mlk_gridmenu_style *self, |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
207 struct mlk_gridmenu *menu, |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
208 const char *item, |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
209 unsigned int row, |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
210 unsigned int col, |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
211 int selected); |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
212 }; |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
213 |
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 * \brief Dark default style for gridmenu. |
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 extern struct mlk_gridmenu_style mlk_gridmenu_style_dark; |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
218 |
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 * \brief Light default style for gridmenu. |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
221 */ |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
222 extern struct mlk_gridmenu_style mlk_gridmenu_style_light; |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
223 |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
224 /** |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
225 * \brief Default style for all gridmenus. |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
226 */ |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
227 extern struct mlk_gridmenu_style *mlk_gridmenu_style; |
505
6100c643dba0
ui: finally ditch theme
David Demelier <markand@malikania.fr>
parents:
495
diff
changeset
|
228 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
229 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
230 extern "C" { |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
231 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
232 |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
233 /** |
621
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
234 * Prepare the grid menu before drawing. |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
235 * |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
236 * This function should be called at least once and/or when the elements are |
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
237 * updated, the geometry or the style changes. |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
238 * |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
239 * \pre menu != NULL |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
240 * \param menu the menu |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
241 */ |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
242 void |
621
eecdf5140245
ui: fix gridmenu padding
David Demelier <markand@malikania.fr>
parents:
620
diff
changeset
|
243 mlk_gridmenu_start(struct mlk_gridmenu *menu); |
181
867b60e6258a
ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
245 /** |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
246 * Handle an event. |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
247 * |
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
248 * \pre menu != NULL |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
249 * \pre ev != NULL |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
250 * \param menu the menu |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
251 * \param ev the event |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
252 * \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
|
253 */ |
395
ef2fc4442ed5
ui: don't use fixed size arrays
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
254 int |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
255 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
|
256 |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
257 /** |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
258 * Invoke ::mlk_gridmenu_style::update. |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
259 */ |
181
867b60e6258a
ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
260 void |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
261 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
|
262 |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
263 /** |
609
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
264 * Invoke the functions: |
d97674d33764
ui: grid menu be more flexible
David Demelier <markand@malikania.fr>
parents:
608
diff
changeset
|
265 * |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
266 * - ::mlk_gridmenu_style::draw_frame, |
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
267 * - ::mlk_gridmenu_style::draw_item. |
608
2527b000aaa5
ui: do the same with gridmenu
David Demelier <markand@malikania.fr>
parents:
517
diff
changeset
|
268 */ |
506
e205625015ba
ui: gridmenu is stylable
David Demelier <markand@malikania.fr>
parents:
505
diff
changeset
|
269 void |
620
91ef0df9f501
ui: simplify gridmenu
David Demelier <markand@malikania.fr>
parents:
609
diff
changeset
|
270 mlk_gridmenu_draw(struct mlk_gridmenu *menu); |
181
867b60e6258a
ui: add gridmenu object, closes #2511 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
271 |
517
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
272 #if defined(__cplusplus) |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
273 } |
6e8f6640e05b
misc: use extern C manually
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
274 #endif |
292
08ab73b32832
misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
275 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
276 #endif /* !MLK_UI_GRIDMENU_H */ |