ui/ui/tree.h

changeset 1244
a29b53f97d1a
equal deleted inserted replaced
1243:59d97ac069f0 1244:a29b53f97d1a
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright 2026 Olaf Wintermann. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef UI_TREE_H
30 #define UI_TREE_H
31
32 #include "list.h"
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 typedef struct UiTreeArgs UiTreeArgs;
39
40 typedef int (*ui_tree_getdepthfunc)(UiList *list, void *elm, int row, void *userdata);
41
42 struct UiTreeArgs {
43 UiBool fill;
44 UiBool hexpand;
45 UiBool vexpand;
46 UiBool hfill;
47 UiBool vfill;
48 UiBool override_defaults;
49 int margin;
50 int margin_left;
51 int margin_right;
52 int margin_top;
53 int margin_bottom;
54 int colspan;
55 int rowspan;
56 int width;
57 int height;
58 const char *name;
59 const char *style_class;
60
61 UiList *list;
62 const char* varname;
63 UiModel *model;
64 ui_tree_getdepthfunc getdepth;
65 void *getdepthdata;
66 ui_getvaluefunc2 getvalue;
67 void *getvaluedata;
68
69 ui_callback onactivate;
70 void *onactivatedata;
71 const char *onactivate_action;
72 ui_callback onselection;
73 void *onselectiondata;
74 const char *onselection_action;
75 ui_callback ondragstart;
76 void *ondragstartdata;
77 const char *ondragstart_action;
78 ui_callback ondragcomplete;
79 void *ondragcompletedata;
80 const char *ondragcomplete_action;
81 ui_callback ondrop;
82 void *ondropdata;
83 const char *ondrop_action;
84 UiBool multiselection;
85 UiBool show_header;
86 UiMenuBuilder *contextmenu;
87
88 const int *states;
89 const int *visibility_states;
90 };
91
92 #define ui_treeview(obj, ...) ui_treeview_create(obj, &(UiTreeArgs) { __VA_ARGS__ } )
93
94 UIEXPORT UIWIDGET ui_treeview_create(UiObject *obj, UiTreeArgs *args);
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif /* UI_TREE_H */
101

mercurial