1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef UIC_CONTEXT_H
30 #define UIC_CONTEXT_H
31
32 #include "../ui/toolkit.h"
33 #include <ucx/map.h>
34 #include <ucx/mempool.h>
35 #include <ucx/list.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 typedef struct UiVar UiVar;
42 typedef struct UiListPtr UiListPtr;
43 typedef struct UiListVar UiListVar;
44 typedef struct UiGroupWidget UiGroupWidget;
45
46 typedef enum UiVarType UiVarType;
47
48 enum UiVarType {
49 UI_VAR_SPECIAL =
0,
50 UI_VAR_INTEGER,
51 UI_VAR_DOUBLE,
52 UI_VAR_STRING,
53 UI_VAR_TEXT,
54 UI_VAR_LIST,
55 UI_VAR_RANGE
56 };
57
58 struct UiContext {
59 UiContext *parent;
60 UiObject *obj;
61 UcxMempool *mempool;
62
63 void *document;
64 UcxList *documents;
65
66 UcxMap *vars;
67 UcxMap *vars_unbound;
68
69 UcxList *groups;
70 UcxList *group_widgets;
71
72 void (*attach_document)(UiContext *ctx,
void *document);
73 void (*detach_document2)(UiContext *ctx,
void *document);
74
75 char *title;
76
77 #ifdef UI_GTK
78 GtkAccelGroup *accel_group;
79 #endif
80
81 ui_callback close_callback;
82 void *close_data;
83 };
84
85
86 struct UiVar {
87 void *value;
88 UiVarType type;
89 UiVar *from;
90 UiContext *from_ctx;
91 };
92
93 struct UiGroupWidget {
94 void *widget;
95 ui_enablefunc enable;
96 int *groups;
97 int numgroups;
98 };
99
100
101 void uic_init_global_context(
void);
102
103 UiContext* uic_context(UiObject *toplevel, UcxMempool *mp);
104 UiContext* uic_root_context(UiContext *ctx);
105 void uic_context_set_document(UiContext *ctx,
void *document);
106 void uic_context_detach_document(UiContext *ctx);
107
108 void uic_context_attach_document(UiContext *ctx,
void *document);
109 void uic_context_detach_document2(UiContext *ctx,
void *document);
110 void uic_context_detach_all(UiContext *ctx);
111
112 UiVar* uic_get_var(UiContext *ctx,
const char *name);
113 UiVar* uic_create_var(UiContext *ctx,
const char *name, UiVarType type);
114 void* uic_create_value(UiContext *ctx, UiVarType type);
115
116 void uic_copy_binding(UiVar *from, UiVar *to, UiBool copytodoc);
117 void uic_save_var2(UiVar *var);
118 void uic_unbind_var(UiVar *var);
119
120 void uic_reg_var(UiContext *ctx,
char *name, UiVarType type,
void *value);
121
122 void uic_remove_bound_var(UiContext *ctx, UiVar *var);
123
124 void uic_check_group_widgets(UiContext *ctx);
125 void uic_add_group_widget(UiContext *ctx,
void *widget, ui_enablefunc enable, UcxList *groups);
126
127
128 #ifdef __cplusplus
129 }
130 #endif
131
132 #endif
133
134