35 |
35 |
36 #ifdef __cplusplus |
36 #ifdef __cplusplus |
37 extern "C" { |
37 extern "C" { |
38 #endif |
38 #endif |
39 |
39 |
40 #define UI_TEXTBUF_INSERT 0 |
|
41 #define UI_TEXTBUF_DELETE 1 |
|
42 typedef struct UiTextBufOp UiTextBufOp; |
|
43 struct UiTextBufOp { |
|
44 UiTextBufOp *prev; |
|
45 UiTextBufOp *next; |
|
46 int type; // UI_TEXTBUF_INSERT, UI_TEXTBUF_DELETE |
|
47 int start; |
|
48 int end; |
|
49 int len; |
|
50 char *text; |
|
51 }; |
|
52 |
|
53 typedef struct UiUndoMgr { |
|
54 UiTextBufOp *begin; |
|
55 UiTextBufOp *end; |
|
56 UiTextBufOp *cur; |
|
57 int length; |
|
58 int event; |
|
59 } UiUndoMgr; |
|
60 |
|
61 typedef struct UiTextArea { |
|
62 UiContext *ctx; |
|
63 int last_selection_state; |
|
64 } UiTextArea; |
|
65 |
|
66 char* ui_textarea_get(UiText *text); |
|
67 void ui_textarea_set(UiText *text, const char *str); |
|
68 char* ui_textarea_getsubstr(UiText *text, int begin, int end); |
|
69 void ui_textarea_insert(UiText *text, int pos, char *str); |
|
70 void ui_textarea_setposition(UiText *text, int pos); |
|
71 int ui_textarea_position(UiText *text); |
|
72 void ui_textarea_selection(UiText *text, int *begin, int *end); |
|
73 int ui_textarea_length(UiText *text); |
|
74 |
|
75 UiUndoMgr* ui_create_undomgr(); |
|
76 void ui_destroy_undomgr(UiUndoMgr *mgr); |
|
77 void ui_text_selection_callback( |
|
78 Widget widget, |
|
79 UiTextArea *textarea, |
|
80 XtPointer data); |
|
81 void ui_text_modify_callback(Widget widget, UiVar *var, XtPointer data); |
|
82 int ui_check_insertstr(char *oldstr, int oldlen, char *newstr, int newlen); |
|
83 void ui_free_textbuf_op(UiTextBufOp *op); |
|
84 |
|
85 char* ui_textfield_get(UiString *str); |
|
86 void ui_textfield_set(UiString *str, char *value); |
|
87 |
|
88 #ifdef __cplusplus |
40 #ifdef __cplusplus |
89 } |
41 } |
90 #endif |
42 #endif |
91 |
43 |
92 #endif /* TEXT_H */ |
44 #endif /* TEXT_H */ |