ui/gtk/text.h

changeset 431
bb7da585debc
parent 402
96a055be7f0b
--- a/ui/gtk/text.h	Sun May 23 09:44:43 2021 +0200
+++ b/ui/gtk/text.h	Sat Jan 04 16:38:48 2025 +0100
@@ -31,7 +31,7 @@
 
 #include "../ui/text.h"
 #include "toolkit.h"
-#include <ucx/list.h>
+#include <cx/linked_list.h>
 #include "../common/context.h"
 
 #ifdef	__cplusplus
@@ -40,38 +40,79 @@
 
 #define UI_TEXTBUF_INSERT 0
 #define UI_TEXTBUF_DELETE 1
-typedef struct UiTextBufOp {
+    
+typedef struct UiTextBufOp UiTextBufOp;
+struct UiTextBufOp {
+    UiTextBufOp *prev;
+    UiTextBufOp *next;
     int  type; // UI_TEXTBUF_INSERT, UI_TEXTBUF_DELETE
     int  start;
     int  end;
     int  len;
     char *text;
-} UiTextBufOp;
+};
 
 typedef struct UiUndoMgr {
-    UcxList *begin;
-    UcxList *cur;
-    int     length;
-    int     event;
+    UiTextBufOp  *begin;
+    UiTextBufOp  *end;
+    UiTextBufOp  *cur;
+    int          length;
+    int          event;
 } UiUndoMgr;
 
 typedef struct UiTextArea {
-    UiContext *ctx;
-    UiVar    *var;
-    int       last_selection_state;
+    UiObject    *obj;
+    UiContext   *ctx;
+    UiVar       *var;
+    int         last_selection_state;
+    ui_callback onchange;
+    void        *onchangedata;
 } UiTextArea;
 
 typedef struct UiTextField {
-    UiContext *ctx;
-    UiVar    *var;
-    // TODO: validatefunc
+    UiObject    *obj;
+    UiVar       *var;
+    ui_callback onchange;
+    void        *onchangedata;
+    ui_callback onactivate;
+    void        *onactivatedata;
 } UiTextField;
 
+typedef struct UiPathTextField {
+    UiObject *obj;
+    
+    GtkWidget *stack;
+    GtkWidget *hbox;
+    GtkWidget *entry_box;
+    GtkWidget *entry;
+#if GTK_MAJOR_VERSION == 3
+    GtkWidget *buttonbox;
+#endif
+    
+    char *current_path;
+    UiPathElm *current_pathelms;
+    GtkWidget **current_path_buttons;
+    size_t current_nelm;
+    
+    ui_pathelm_func getpathelm;
+    void* getpathelmdata;
+
+    ui_callback onactivate;
+    void* onactivatedata;
+    
+    ui_callback ondragstart;
+    void* ondragstartdata;
+    ui_callback ondragcomplete;
+    void* ondragcompletedata;
+    ui_callback ondrop;
+    void* ondropdata;
+} UiPathTextField;
+
 UIWIDGET ui_textarea_var(UiObject *obj, UiVar *var);
 void ui_textarea_destroy(GtkWidget *object, UiTextArea *textarea);
 
 char* ui_textarea_get(UiText *text);
-void ui_textarea_set(UiText *text, char *str);
+void ui_textarea_set(UiText *text, const char *str);
 char* ui_textarea_getsubstr(UiText *text, int begin, int end);
 void ui_textarea_insert(UiText *text, int pos, char *str);
 void ui_textarea_setposition(UiText *text, int pos);
@@ -95,14 +136,21 @@
         GtkTextIter *end,
         void *data);
 UiUndoMgr* ui_create_undomgr();
+void ui_destroy_undomgr(UiUndoMgr *mgr);
 void ui_free_textbuf_op(UiTextBufOp *op);
 int ui_check_insertstr(char *oldstr, int oldlen, char *newstr, int newlen);
 
 void ui_textfield_destroy(GtkWidget *object, UiTextField *textfield);
 void ui_textfield_changed(GtkEditable *editable, UiTextField *textfield);
+void ui_textfield_activate(GtkEntry* self, UiTextField *textfield);
 
 char* ui_textfield_get(UiString *str);
-void ui_textfield_set(UiString *str, char *value);
+void ui_textfield_set(UiString *str, const char *value);
+
+int ui_pathtextfield_update(UiPathTextField* pathtf, const char *full_path);
+int ui_pathtextfield_update_widget(UiPathTextField* pathtf);
+char* ui_path_textfield_get(UiString *str);
+void ui_path_textfield_set(UiString *str, const char *value);
 
 #ifdef	__cplusplus
 }

mercurial