reorganize config struct

This commit is contained in:
Boris Faure 2014-10-14 22:57:22 +02:00
parent 58de591e58
commit d4c2c23394
4 changed files with 48 additions and 13 deletions

View File

@ -7,7 +7,7 @@
#include "col.h"
#include "utils.h"
#define CONF_VER 3
#define CONF_VER 4
#define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;}
@ -158,6 +158,8 @@ config_init(void)
(edd_base, Config, "bell_rings", bell_rings, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_LIST
(edd_base, Config, "keys", keys, edd_keys);
EET_DATA_DESCRIPTOR_ADD_BASIC
(edd_base, Config, "gravatar", gravatar, EET_T_UCHAR);
}
void
@ -255,6 +257,8 @@ config_sync(const Config *config_src, Config *config)
config->colors_use = config_src->colors_use;
memcpy(config->colors, config_src->colors, sizeof(config->colors));
config->mouse_over_focus = config_src->mouse_over_focus;
/* TODO: config->keys */
config->gravatar = config_src->gravatar;
}
static void
@ -451,13 +455,16 @@ config_load(const char *key)
/* upgrade to v3 */
config->active_links = EINA_TRUE;
config->bell_rings = EINA_TRUE;
config->version = 3;
/*pass through*/
case CONF_VER: /* 3 */
case 3:
if (eina_list_count(config->keys) == 0)
{
_add_default_keys(config);
}
/*pass through*/
case CONF_VER: /* 4 */
config->version = CONF_VER;
config->gravatar = EINA_TRUE;
break;
default:
if (config->version < CONF_VER)
@ -491,11 +498,13 @@ config_load(const char *key)
config->helper.local.image = eina_stringshare_add("xdg-open");
config->helper.inline_please = EINA_TRUE;
config->scrollback = 2000;
config->tab_zoom = 0.5;
config->theme = eina_stringshare_add("default.edj");
config->background = NULL;
config->translucent = EINA_FALSE;
config->tab_zoom = 0.5;
config->vidmod = 0;
config->opacity = 50;
config->cg_width = 80;
config->cg_height = 24;
config->jump_on_change = EINA_TRUE;
config->jump_on_keypress = EINA_TRUE;
config->flicker_on_key = EINA_FALSE;
@ -503,7 +512,7 @@ config_load(const char *key)
config->disable_visual_bell = EINA_FALSE;
config->bell_rings = EINA_TRUE;
config->active_links = EINA_TRUE;
config->vidmod = 0;
config->translucent = EINA_FALSE;
config->mute = EINA_FALSE;
config->visualize = EINA_TRUE;
config->urg_bell = EINA_TRUE;
@ -513,10 +522,11 @@ config_load(const char *key)
config->xterm_256color = EINA_FALSE;
config->erase_is_del = EINA_FALSE;
config->custom_geometry = EINA_FALSE;
config->drag_links = EINA_FALSE;
config->login_shell = EINA_FALSE;
config->cg_width = 80;
config->cg_height = 24;
config->mouse_over_focus = EINA_TRUE;
config->colors_use = EINA_FALSE;
config->gravatar = EINA_TRUE;
for (j = 0; j < 4; j++)
{
for (i = 0; i < 12; i++)
@ -530,7 +540,6 @@ config_load(const char *key)
config->colors[(j * 12) + i].a = aa;
}
}
config->mouse_over_focus = EINA_TRUE;
_add_default_keys(config);
}
}
@ -606,6 +615,7 @@ config_fork(Config *config)
CPY(temporary);
SCPY(config_key);
CPY(font_set);
CPY(gravatar);
EINA_LIST_FOREACH(config->keys, l, key)
{
@ -620,6 +630,9 @@ config_fork(Config *config)
eina_stringshare_ref(key->cb);
config2->keys = eina_list_append(config2->keys, key2);
}
CPY(gravatar);
return config2;
}

View File

@ -48,6 +48,9 @@ struct _Config
const char *background;
double tab_zoom;
int vidmod;
int opacity;
int cg_width;
int cg_height;
Eina_Bool jump_on_keypress;
Eina_Bool jump_on_change;
Eina_Bool flicker_on_key;
@ -56,7 +59,6 @@ struct _Config
Eina_Bool bell_rings;
Eina_Bool active_links;
Eina_Bool translucent;
int opacity;
Eina_Bool mute;
Eina_Bool visualize;
Eina_Bool urg_bell;
@ -69,11 +71,9 @@ struct _Config
Eina_Bool drag_links;
Eina_Bool login_shell;
Eina_Bool mouse_over_focus;
int cg_width;
int cg_height;
Eina_Bool colors_use;
Eina_Bool gravatar;
Config_Color colors[(4 * 12)];
Eina_Bool miniview;
Eina_List *keys;
Eina_Bool temporary; /* not in EET */

View File

@ -66,6 +66,9 @@ gravatar_tooltip(Evas_Object *obj, Config *config, char *email)
const char *url;
Gravatar *g;
if (!config->gravatar)
return;
g = calloc(sizeof(Gravatar), 1);
if (!g) return;
g->config = config;

View File

@ -289,6 +289,15 @@ _cb_op_behavior_mouse_over_focus_chg(void *data, Evas_Object *obj, void *event E
config_save(config, NULL);
}
static void
_cb_op_behavior_gravatar_chg(void *data, Evas_Object *obj, void *event EINA_UNUSED)
{
Evas_Object *term = data;
Config *config = termio_config_get(term);
config->gravatar = elm_check_state_get(obj);
config_save(config, NULL);
}
void
options_behavior(Evas_Object *opbox, Evas_Object *term)
{
@ -474,6 +483,16 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
evas_object_smart_callback_add(o, "changed",
_cb_op_behavior_mouse_over_focus_chg, term);
o = elm_check_add(bx);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
elm_object_text_set(o, _("Gravatar integration"));
elm_check_state_set(o, config->gravatar);
elm_box_pack_end(bx, o);
evas_object_show(o);
evas_object_smart_callback_add(o, "changed",
_cb_op_behavior_gravatar_chg, term);
o = elm_check_add(bx);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);