forked from enlightenment/enlightenment
Add config struct for illume-keyboard.
SVN revision: 43874
This commit is contained in:
parent
030a78e322
commit
48ce772fd9
|
@ -28,7 +28,9 @@ module_la_SOURCES = e_mod_main.c \
|
|||
e_kbd_buf.c \
|
||||
e_kbd_buf.h \
|
||||
e_kbd_send.c \
|
||||
e_kbd_send.h
|
||||
e_kbd_send.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
|
|
|
@ -542,7 +542,7 @@ _e_kbd_buf_cb_faket(void *data)
|
|||
|
||||
kb = data;
|
||||
kb->lookup.faket = NULL;
|
||||
kb->lookup.func(kb->lookup.data);
|
||||
kb->lookup.func((void *)kb->lookup.data);
|
||||
kb->lookup.func = NULL;
|
||||
kb->lookup.data = NULL;
|
||||
return 0;
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
#include <unistd.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
|
||||
#define MAXLATIN 0x100
|
||||
|
||||
static unsigned char _e_kbd_normalise_base[MAXLATIN];
|
||||
static unsigned char _e_kbd_normalise_ready = 0;
|
||||
|
||||
|
@ -89,8 +89,7 @@ _e_kbd_normalise_init(void)
|
|||
_e_kbd_normalise_base[i] = tolower(i);
|
||||
for (;i < MAXLATIN; i++)
|
||||
{
|
||||
int glyph;
|
||||
int j;
|
||||
int glyph, j;
|
||||
|
||||
for (j = 0; j < 63; j++)
|
||||
{
|
||||
|
@ -133,9 +132,7 @@ _e_kbd_dict_normalized_strcpy(char *dst, const char *src)
|
|||
char *d;
|
||||
|
||||
for (p = src, d = dst; *p; p++, d++)
|
||||
{
|
||||
*d = _e_kbd_dict_letter_normalise(*p);
|
||||
}
|
||||
*d = _e_kbd_dict_letter_normalise(*p);
|
||||
*d = 0;
|
||||
}
|
||||
|
||||
|
@ -169,10 +166,7 @@ _e_kbd_dict_line_next(E_Kbd_Dict *kd, const char *p)
|
|||
|
||||
e = kd->file.dict + kd->file.size;
|
||||
for (pp = p; pp < e; pp++)
|
||||
{
|
||||
if (*pp == '\n')
|
||||
return pp + 1;
|
||||
}
|
||||
if (*pp == '\n') return pp + 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -197,8 +191,7 @@ _e_kbd_dict_line_parse(E_Kbd_Dict *kd, const char *p, int *usage)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_kbd_dict_lookup_build_line(E_Kbd_Dict *kd, const char *p, const char *eol,
|
||||
int *glyphs)
|
||||
_e_kbd_dict_lookup_build_line(E_Kbd_Dict *kd, const char *p, const char *eol, int *glyphs)
|
||||
{
|
||||
char *s;
|
||||
int p2;
|
||||
|
@ -228,8 +221,7 @@ _e_kbd_dict_lookup_build(E_Kbd_Dict *kd)
|
|||
{
|
||||
glyphs[0] = glyphs[1] = 0;
|
||||
_e_kbd_dict_lookup_build_line(kd, p, eol, glyphs);
|
||||
if ((glyphs[1] != pglyphs[1]) ||
|
||||
(glyphs[0] != pglyphs[0]))
|
||||
if ((glyphs[1] != pglyphs[1]) || (glyphs[0] != pglyphs[0]))
|
||||
{
|
||||
int v1, v2;
|
||||
|
||||
|
@ -264,8 +256,7 @@ _e_kbd_dict_open(E_Kbd_Dict *kd)
|
|||
struct stat st;
|
||||
|
||||
kd->file.fd = open(kd->file.file, O_RDONLY);
|
||||
if (kd->file.fd < 0)
|
||||
return 0;
|
||||
if (kd->file.fd < 0) return 0;
|
||||
if (fstat(kd->file.fd, &st) < 0)
|
||||
{
|
||||
close(kd->file.fd);
|
||||
|
@ -380,9 +371,8 @@ e_kbd_dict_save(E_Kbd_Dict *kd)
|
|||
{
|
||||
if (kd->changed.writes)
|
||||
{
|
||||
int writeline;
|
||||
int writeline = 0;
|
||||
|
||||
writeline = 0;
|
||||
while (kd->changed.writes)
|
||||
{
|
||||
E_Kbd_Dict_Word *kw;
|
||||
|
@ -440,8 +430,7 @@ e_kbd_dict_save(E_Kbd_Dict *kd)
|
|||
fclose(f);
|
||||
}
|
||||
_e_kbd_dict_close(kd);
|
||||
if (_e_kbd_dict_open(kd))
|
||||
_e_kbd_dict_lookup_build(kd);
|
||||
if (_e_kbd_dict_open(kd)) _e_kbd_dict_lookup_build(kd);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -450,9 +439,7 @@ _e_kbd_dict_cb_save_flush(void *data)
|
|||
E_Kbd_Dict *kd;
|
||||
|
||||
kd = data;
|
||||
if ((kd->matches.list) ||
|
||||
(kd->word.letters) ||
|
||||
(kd->matches.deadends) ||
|
||||
if ((kd->matches.list) || (kd->word.letters) || (kd->matches.deadends) ||
|
||||
(kd->matches.leads))
|
||||
return 1;
|
||||
kd->changed.flush_timer = NULL;
|
||||
|
@ -470,14 +457,13 @@ _e_kbd_dict_changed_write_add(E_Kbd_Dict *kd, const char *word, int usage)
|
|||
kw->usage = usage;
|
||||
kd->changed.writes = eina_list_prepend(kd->changed.writes, kw);
|
||||
if (eina_list_count(kd->changed.writes) > 64)
|
||||
{
|
||||
e_kbd_dict_save(kd);
|
||||
}
|
||||
e_kbd_dict_save(kd);
|
||||
else
|
||||
{
|
||||
if (kd->changed.flush_timer)
|
||||
ecore_timer_del(kd->changed.flush_timer);
|
||||
kd->changed.flush_timer = ecore_timer_add(5.0, _e_kbd_dict_cb_save_flush, kd);
|
||||
kd->changed.flush_timer =
|
||||
ecore_timer_add(5.0, _e_kbd_dict_cb_save_flush, kd);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -702,11 +688,9 @@ _e_kbd_dict_matches_lookup_iter(E_Kbd_Dict *kd, Eina_List *word,
|
|||
const char *p, *pn;
|
||||
char *base, *buf, *wd, *bufapp;
|
||||
E_Kbd_Dict_Letter *kl;
|
||||
int len, dist = 0, d, baselen, maxdist = 0, md;
|
||||
|
||||
int len = 0, dist = 0, d, baselen, maxdist = 0, md;
|
||||
static int level = 0, lv;
|
||||
|
||||
len = 0;
|
||||
level++;
|
||||
for (l = word; l; l = l->next)
|
||||
{
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#include <Eina.h>
|
||||
|
||||
#include "e.h"
|
||||
#include "e_kbd_buf.h"
|
||||
#include "e_kbd_int.h"
|
||||
#include "e_kbd_send.h"
|
||||
#include "e_mod_config.h"
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -18,7 +17,7 @@ static Evas_Object *_theme_obj_new(Evas *e, const char *custom_dir, const char *
|
|||
|
||||
static void _e_kbd_int_layout_next(E_Kbd_Int *ki);
|
||||
static void _e_kbd_int_zoomkey_down(E_Kbd_Int *ki);
|
||||
static void _e_kbd_int_matches_update(E_Kbd_Int *ki);
|
||||
static void _e_kbd_int_matches_update(void *data);
|
||||
static void _e_kbd_int_dictlist_down(E_Kbd_Int *ki);
|
||||
static void _e_kbd_int_matchlist_down(E_Kbd_Int *ki);
|
||||
static void _e_kbd_int_layoutlist_down(E_Kbd_Int *ki);
|
||||
|
@ -287,12 +286,14 @@ _e_kbd_int_matches_free(E_Kbd_Int *ki)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_kbd_int_matches_update(E_Kbd_Int *ki)
|
||||
_e_kbd_int_matches_update(void *data)
|
||||
{
|
||||
E_Kbd_Int *ki;
|
||||
const Eina_List *l, *matches;
|
||||
const char *actual;
|
||||
Evas_Coord mw, mh, vw, vh;
|
||||
|
||||
if (!(ki = data)) return;
|
||||
evas_event_freeze(ki->win->evas);
|
||||
e_box_freeze(ki->box_obj);
|
||||
_e_kbd_int_matches_free(ki);
|
||||
|
@ -1337,9 +1338,9 @@ _e_kbd_int_cb_dictlist_item_sel(void *data)
|
|||
_e_kbd_int_layout_state_update(ki);
|
||||
}
|
||||
|
||||
//eina_stringshare_replace(&illume_cfg->kbd.dict, str);
|
||||
//e_kbd_buf_dict_set(ki->kbuf, illume_cfg->kbd.dict);
|
||||
//e_config_save_queue();
|
||||
eina_stringshare_replace(&il_kbd_cfg->dict, str);
|
||||
e_kbd_buf_dict_set(ki->kbuf, il_kbd_cfg->dict);
|
||||
e_config_save_queue();
|
||||
|
||||
_e_kbd_int_dictlist_down(ki);
|
||||
}
|
||||
|
@ -1767,9 +1768,9 @@ e_kbd_int_new(const char *themedir, const char *syskbds, const char *sysdicts)
|
|||
evas_object_show(o);
|
||||
ki->box_obj = o;
|
||||
|
||||
// if (illume_cfg->kbd.dict)
|
||||
// ki->kbuf = e_kbd_buf_new(ki->sysdicts, illume_cfg->kbd.dict);
|
||||
// else
|
||||
if (il_kbd_cfg->dict)
|
||||
ki->kbuf = e_kbd_buf_new(ki->sysdicts, il_kbd_cfg->dict);
|
||||
else
|
||||
ki->kbuf = e_kbd_buf_new(ki->sysdicts, "English_(US).dic");
|
||||
|
||||
_e_kbd_int_layouts_list_update(ki);
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
|
||||
EAPI Il_Kbd_Config *il_kbd_cfg = NULL;
|
||||
static E_Config_DD *conf_edd = NULL;
|
||||
|
||||
/* public functions */
|
||||
EAPI int
|
||||
il_kbd_config_init(E_Module *m)
|
||||
{
|
||||
conf_edd = E_CONFIG_DD_NEW("Illume_Kbd_Cfg", Il_Kbd_Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Il_Kbd_Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, version, INT);
|
||||
E_CONFIG_VAL(D, T, use_internal, INT);
|
||||
E_CONFIG_VAL(D, T, run_keyboard, STR);
|
||||
E_CONFIG_VAL(D, T, dict, STR);
|
||||
|
||||
il_kbd_cfg = e_config_domain_load("module.illume-keyboard", conf_edd);
|
||||
if ((il_kbd_cfg) &&
|
||||
((il_kbd_cfg->version >> 16) < IL_CONFIG_MAJ))
|
||||
{
|
||||
E_FREE(il_kbd_cfg);
|
||||
il_kbd_cfg = NULL;
|
||||
}
|
||||
if (!il_kbd_cfg)
|
||||
{
|
||||
il_kbd_cfg = E_NEW(Il_Kbd_Config, 1);
|
||||
il_kbd_cfg->version = 0;
|
||||
il_kbd_cfg->use_internal = 1;
|
||||
il_kbd_cfg->run_keyboard = NULL;
|
||||
il_kbd_cfg->dict = eina_stringshare_add("English_(US).dic");
|
||||
}
|
||||
if (il_kbd_cfg)
|
||||
{
|
||||
/* Add new config variables here */
|
||||
/* if ((il_kbd_cfg->version & 0xffff) < 1) */
|
||||
il_kbd_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN;
|
||||
}
|
||||
|
||||
il_kbd_cfg->mod_dir = eina_stringshare_add(m->dir);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
il_kbd_config_shutdown(void)
|
||||
{
|
||||
if (il_kbd_cfg->mod_dir) eina_stringshare_del(il_kbd_cfg->mod_dir);
|
||||
if (il_kbd_cfg->run_keyboard) eina_stringshare_del(il_kbd_cfg->run_keyboard);
|
||||
if (il_kbd_cfg->dict) eina_stringshare_del(il_kbd_cfg->dict);
|
||||
|
||||
E_FREE(il_kbd_cfg);
|
||||
il_kbd_cfg = NULL;
|
||||
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
il_kbd_config_save(void)
|
||||
{
|
||||
e_config_domain_save("module.illume-keyboard", conf_edd, il_kbd_cfg);
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
|
||||
#define IL_CONFIG_MIN 0
|
||||
#define IL_CONFIG_MAJ 0
|
||||
|
||||
typedef struct _Il_Kbd_Config Il_Kbd_Config;
|
||||
|
||||
struct _Il_Kbd_Config
|
||||
{
|
||||
int version;
|
||||
|
||||
int use_internal;
|
||||
const char *dict, *run_keyboard;
|
||||
|
||||
// Not User Configurable. Placeholders
|
||||
const char *mod_dir;
|
||||
};
|
||||
|
||||
EAPI int il_kbd_config_init(E_Module *m);
|
||||
EAPI int il_kbd_config_shutdown(void);
|
||||
EAPI int il_kbd_config_save(void);
|
||||
|
||||
extern EAPI Il_Kbd_Config *il_kbd_cfg;
|
||||
|
||||
#endif
|
|
@ -1,9 +1,9 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "e_kbd_int.h"
|
||||
|
||||
/* local variables */
|
||||
const char *mod_dir = NULL;
|
||||
static E_Kbd_Int *ki = NULL;
|
||||
|
||||
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume Keyboard" };
|
||||
|
@ -11,8 +11,10 @@ EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume Keyboard" };
|
|||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
mod_dir = eina_stringshare_add(m->dir);
|
||||
if (!il_kbd_config_init(m)) return NULL;
|
||||
|
||||
ki = e_kbd_int_new(mod_dir, mod_dir, mod_dir);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
|
@ -24,12 +26,12 @@ e_modapi_shutdown(E_Module *m)
|
|||
e_kbd_int_free(ki);
|
||||
ki = NULL;
|
||||
}
|
||||
if (mod_dir) eina_stringshare_del(mod_dir);
|
||||
il_kbd_config_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_save(E_Module *m)
|
||||
{
|
||||
return 1;
|
||||
return il_kbd_config_save();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue