ui/common/context.h

changeset 115
e57ca2747782
parent 110
c00e968d018b
--- a/ui/common/context.h	Sun Dec 07 20:00:33 2025 +0100
+++ b/ui/common/context.h	Sat Dec 13 15:58:58 2025 +0100
@@ -43,7 +43,7 @@
 typedef struct UiVar            UiVar;
 typedef struct UiListPtr        UiListPtr;
 typedef struct UiListVar        UiListVar;
-typedef struct UiGroupWidget    UiGroupWidget;
+typedef struct UiStateWidget    UiStateWidget;
 typedef struct UiDestroyHandler UiDestroyHandler;
 
 typedef enum UiVarType {
@@ -69,8 +69,8 @@
     
     CxMap         *vars;
     
-    CxList        *groups; // int list
-    CxList        *group_widgets; // UiGroupWidget list
+    CxList        *states; // int list
+    CxList        *state_widgets; // UiGroupWidget list
     
     void (*attach_document)(UiContext *ctx, void *document);
     void (*detach_document2)(UiContext *ctx, void *document); 
@@ -84,8 +84,10 @@
     GtkAccelGroup *accel_group;
 #endif 
 #endif
-
-
+    
+    // allow only one document to be attached
+    // attaching a document will automatically detach the current document
+    UiBool single_document_mode;
     
     ui_callback   close_callback;
     void          *close_data;
@@ -97,13 +99,14 @@
     UiVarType type;
     UiVar     *from;
     UiContext *from_ctx;
+    UiBool    bound;
 };
 
-struct UiGroupWidget {
+struct UiStateWidget {
     void          *widget;
     ui_enablefunc enable;
-    int           *groups;
-    int           numgroups;
+    int           *states;
+    int           numstates;
 };
 
 struct UiDestroyHandler {
@@ -127,25 +130,27 @@
 void uic_context_detach_all(UiContext *ctx);
 
 UiVar* uic_get_var(UiContext *ctx, const char *name);
+UiVar* uic_get_var_t(UiContext *ctx, const char *name, UiVarType type);
 UiVar* uic_create_var(UiContext *ctx, const char *name, UiVarType type);
 UiVar* uic_create_value_var(UiContext *ctx, void *value);
 void* uic_create_value(UiContext *ctx, UiVarType type);
+void uic_destroy_value(UiContext *ctx, UiVarType type, void *value);
 
 UiVar* uic_widget_var(UiContext *toplevel, UiContext *current, void *value, const char *varname, UiVarType type);
 
-void uic_copy_binding(UiVar *from, UiVar *to, UiBool copytodoc);
+void uic_copy_var_binding(UiVar *from, UiVar *to, UiBool copytodoc);
+void uic_copy_value_binding(UiVarType type, void *from, void *to);
 void uic_save_var(UiVar *var);
 void uic_unbind_var(UiVar *var);
+const char *uic_type2str(UiVarType type);
 
 void uic_reg_var(UiContext *ctx, const char *name, UiVarType type, void *value);
 
-void uic_remove_bound_var(UiContext *ctx, UiVar *var);
-
-size_t uic_group_array_size(const int *groups);
-void uic_check_group_widgets(UiContext *ctx);
-void uic_add_group_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *groups);
-void uic_add_group_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *groups, size_t numgroups);
-void uic_remove_group_widget(UiContext *ctx, void *widget);
+size_t uic_state_array_size(const int *states);
+void uic_check_state_widgets(UiContext *ctx);
+void uic_add_state_widget(UiContext *ctx, void *widget, ui_enablefunc enable, CxList *states);
+void uic_add_state_widget_i(UiContext *ctx, void *widget, ui_enablefunc enable, const int *states, size_t numstates);
+void uic_remove_state_widget(UiContext *ctx, void *widget);
 
 #ifdef	__cplusplus
 }

mercurial