config.h (1728B)
1 #ifndef LTK_CONFIG_H 2 #define LTK_CONFIG_H 3 4 #include <stddef.h> 5 6 #include "eventdefs.h" 7 8 typedef enum{ 9 LTK_KEY_BINDING_NOFLAGS = 0, 10 LTK_KEY_BINDING_RUN_ALWAYS = 1, 11 } ltk_key_binding_flags; 12 13 typedef struct { 14 char *text; 15 char *rawtext; 16 ltk_keysym sym; 17 ltk_mod_type mods; 18 ltk_key_binding_flags flags; 19 } ltk_keypress_binding; 20 21 typedef struct { 22 ltk_keysym sym; 23 ltk_mod_type mods; 24 ltk_key_binding_flags flags; 25 } ltk_keyrelease_binding; 26 27 typedef struct{ 28 char *from; 29 char *to; 30 } ltk_keytext_mapping; 31 32 typedef struct { 33 char *lang; 34 ltk_keytext_mapping *mappings; 35 size_t mappings_alloc, mappings_len; 36 } ltk_language_mapping; 37 38 typedef struct { 39 char *line_editor; 40 char explicit_focus; 41 char all_activatable; 42 } ltk_general_config; 43 44 typedef struct { 45 ltk_language_mapping *mappings; 46 size_t mappings_alloc, mappings_len; 47 ltk_general_config general; 48 } ltk_config; 49 50 typedef int (*keypress_binding_handler)(const char *widget_name, size_t wlen, const char *name, size_t nlen, ltk_keypress_binding b); 51 typedef int (*keyrelease_binding_handler)(const char *widget_name, size_t wlen, const char *name, size_t nlen, ltk_keyrelease_binding b); 52 53 void ltk_config_cleanup(void); 54 ltk_config *ltk_config_get(void); 55 int ltk_config_get_language_index(char *lang, size_t *idx_ret); 56 ltk_language_mapping *ltk_config_get_language_mapping(size_t idx); 57 int ltk_config_parsefile( 58 const char *filename, 59 keypress_binding_handler press_handler, 60 keyrelease_binding_handler release_handler, 61 char **errstr 62 ); 63 int ltk_config_load_default( 64 keypress_binding_handler press_handler, 65 keyrelease_binding_handler release_handler, 66 char **errstr 67 ); 68 void ltk_keypress_binding_destroy(ltk_keypress_binding b); 69 70 #endif /* LTK_CONFIG_H */