diff options
Diffstat (limited to '')
-rw-r--r-- | src/fe-text/gui-entry.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/fe-text/gui-entry.h b/src/fe-text/gui-entry.h new file mode 100644 index 0000000..97dcee2 --- /dev/null +++ b/src/fe-text/gui-entry.h @@ -0,0 +1,92 @@ +#ifndef IRSSI_FE_TEXT_GUI_ENTRY_H +#define IRSSI_FE_TEXT_GUI_ENTRY_H + +typedef struct { + int cutbuffer_len; + unichar *cutbuffer; +} GUI_ENTRY_CUTBUFFER_REC; + +typedef struct { + int text_len, text_alloc; /* as shorts, not chars */ + unichar *text; + char **extents; + + GSList *kill_ring; + + /* all as shorts, not chars */ + int xpos, ypos, width; /* entry position in screen */ + int pos, scrstart, scrpos; /* cursor position */ + int hidden; /* print the chars as spaces in input line (useful for passwords) */ + + int promptlen; + char *prompt; + + int redraw_needed_from; + unsigned int utf8:1; + + unsigned int previous_append_next_kill:1; + unsigned int append_next_kill:1; + unsigned int yank_preceded:1; + unsigned int uses_extents:1; +} GUI_ENTRY_REC; + +typedef enum { + CUTBUFFER_UPDATE_NOOP, + CUTBUFFER_UPDATE_REPLACE, + CUTBUFFER_UPDATE_APPEND, + CUTBUFFER_UPDATE_PREPEND +} CUTBUFFER_UPDATE_OP; + +extern GUI_ENTRY_REC *active_entry; + +GUI_ENTRY_REC *gui_entry_create(int xpos, int ypos, int width, int utf8); +void gui_entry_destroy(GUI_ENTRY_REC *entry); + +void gui_entry_move(GUI_ENTRY_REC *entry, int xpos, int ypos, int width); +void gui_entry_set_active(GUI_ENTRY_REC *entry); + +void gui_entry_set_prompt(GUI_ENTRY_REC *entry, const char *str); +void gui_entry_set_hidden(GUI_ENTRY_REC *entry, int hidden); +void gui_entry_set_utf8(GUI_ENTRY_REC *entry, int utf8); + +void gui_entry_set_text(GUI_ENTRY_REC *entry, const char *str); +char *gui_entry_get_text(GUI_ENTRY_REC *entry); +char *gui_entry_get_text_and_pos(GUI_ENTRY_REC *entry, int *pos); +void gui_entry_set_text_and_pos_bytes(GUI_ENTRY_REC *entry, const char *str, int pos_bytes); + +void gui_entry_insert_text(GUI_ENTRY_REC *entry, const char *str); +void gui_entry_insert_char(GUI_ENTRY_REC *entry, unichar chr); + +char *gui_entry_get_cutbuffer(GUI_ENTRY_REC *entry); +char *gui_entry_get_next_cutbuffer(GUI_ENTRY_REC *entry); +void gui_entry_erase_to(GUI_ENTRY_REC *entry, int pos, CUTBUFFER_UPDATE_OP update_cutbuffer); +void gui_entry_erase(GUI_ENTRY_REC *entry, int size, CUTBUFFER_UPDATE_OP update_cutbuffer); +void gui_entry_erase_cell(GUI_ENTRY_REC *entry); +void gui_entry_erase_word(GUI_ENTRY_REC *entry, int to_space, CUTBUFFER_UPDATE_OP cutbuffer_op); +void gui_entry_erase_next_word(GUI_ENTRY_REC *entry, int to_space, CUTBUFFER_UPDATE_OP cutbuffer_op); + +void gui_entry_transpose_chars(GUI_ENTRY_REC *entry); +void gui_entry_transpose_words(GUI_ENTRY_REC *entry); + +void gui_entry_capitalize_word(GUI_ENTRY_REC *entry); +void gui_entry_downcase_word(GUI_ENTRY_REC *entry); +void gui_entry_upcase_word(GUI_ENTRY_REC *entry); + +int gui_entry_get_pos(GUI_ENTRY_REC *entry); +void gui_entry_set_pos(GUI_ENTRY_REC *entry, int pos); +void gui_entry_move_pos(GUI_ENTRY_REC *entry, int pos); +void gui_entry_move_words(GUI_ENTRY_REC *entry, int count, int to_space); + +void gui_entry_redraw(GUI_ENTRY_REC *entry); + +void gui_entry_set_extent(GUI_ENTRY_REC *entry, int pos, const char *text); +void gui_entry_set_extents(GUI_ENTRY_REC *entry, int pos, int len, const char *left, const char *right); +void gui_entry_clear_extents(GUI_ENTRY_REC *entry, int pos, int len); +char *gui_entry_get_extent(GUI_ENTRY_REC *entry, int pos); +GSList *gui_entry_get_text_and_extents(GUI_ENTRY_REC *entry); +void gui_entry_set_text_and_extents(GUI_ENTRY_REC *entry, GSList *list); + +void gui_entry_init(void); +void gui_entry_deinit(void); + +#endif |