config: save project config in the project dir

globally storing info about projects loaded, file associations
and the general user preference.

GUI and usage settings stored in <project>/.edi folder
This commit is contained in:
Andy Williams 2015-05-16 09:56:39 +01:00
parent 0da1c9a5e3
commit bf17d7c8af
9 changed files with 222 additions and 122 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@
*.gcno
*.gcda
.dirstamp
.edi
/src/bin/edi
/src/bin/edi_build

View File

@ -33,20 +33,29 @@
# define EDI_CONFIG_HASH(edd, type, member, eddtype) \
EET_DATA_DESCRIPTOR_ADD_HASH(edd, type, #member, member, eddtype)
# define EDI_CONFIG_FILE_EPOCH 0x0002
# define EDI_CONFIG_FILE_GENERATION 0x000b
# define EDI_CONFIG_FILE_EPOCH 0x0003
# define EDI_CONFIG_FILE_GENERATION 0x000c
# define EDI_CONFIG_FILE_VERSION \
((EDI_CONFIG_FILE_EPOCH << 16) | EDI_CONFIG_FILE_GENERATION)
# define EDI_PROJECT_CONFIG_FILE_EPOCH 0x0001
# define EDI_PROJECT_CONFIG_FILE_GENERATION 0x0001
# define EDI_PROJECT_CONFIG_FILE_VERSION \
((EDI_PROJECT_CONFIG_FILE_EPOCH << 16) | EDI_PROJECT_CONFIG_FILE_GENERATION)
typedef Eet_Data_Descriptor Edi_Config_DD;
typedef Eet_Data_Descriptor Edi_Project_Config_DD;
/* local variables */
static Edi_Config_DD *_edi_cfg_edd = NULL;
static Edi_Config_DD *_edi_cfg_proj_edd = NULL;
static Edi_Config_DD *_edi_cfg_mime_edd = NULL;
static Edi_Project_Config_DD *_edi_proj_cfg_edd = NULL;
/* external variables */
Edi_Config *_edi_cfg = NULL;
Edi_Config *_edi_config = NULL;
Edi_Project_Config *_edi_project_config = NULL;
int EDI_EVENT_CONFIG_CHANGED;
const char *
@ -60,6 +69,17 @@ _edi_config_dir_get(void)
return dir;
}
const char *
_edi_project_config_dir_get(void)
{
static char dir[PATH_MAX];
if (!dir[0] && edi_project_get())
snprintf(dir, sizeof(dir), "%s/.edi", edi_project_get());
return dir;
}
/* local functions */
static Edi_Config_DD *
_edi_config_descriptor_new(const char *name, int size)
@ -79,33 +99,40 @@ _edi_config_cb_free(void)
Edi_Config_Project *proj;
Edi_Config_Mime_Association *mime;
EINA_LIST_FREE(_edi_cfg->projects, proj)
EINA_LIST_FREE(_edi_config->projects, proj)
{
if (proj->name) eina_stringshare_del(proj->name);
if (proj->path) eina_stringshare_del(proj->path);
free(proj);
}
EINA_LIST_FREE(_edi_cfg->mime_assocs, mime)
EINA_LIST_FREE(_edi_config->mime_assocs, mime)
{
if (mime->id) eina_stringshare_del(mime->id);
if (mime->mime) eina_stringshare_del(mime->mime);
free(mime);
}
free(_edi_cfg);
_edi_cfg = NULL;
free(_edi_config);
_edi_config = NULL;
}
static void
_edi_project_config_cb_free(void)
{
free(_edi_project_config);
_edi_project_config = NULL;
}
static void *
_edi_config_domain_load(const char *domain, Edi_Config_DD *edd)
_edi_config_domain_load(const char *dir, const char *domain, Eet_Data_Descriptor *edd)
{
Eet_File *ef;
char buff[PATH_MAX];
if (!domain) return NULL;
snprintf(buff, sizeof(buff),
"%s/%s.cfg", _edi_config_dir_get(), domain);
"%s/%s.cfg", dir, domain);
ef = eet_open(buff, EET_FILE_MODE_READ);
if (ef)
{
@ -119,23 +146,21 @@ _edi_config_domain_load(const char *domain, Edi_Config_DD *edd)
}
static Eina_Bool
_edi_config_domain_save(const char *domain, Edi_Config_DD *edd, const void *data)
_edi_config_domain_save(const char *dir, const char *domain, Eet_Data_Descriptor *edd, const void *data)
{
Eet_File *ef;
char buff[PATH_MAX];
const char *configdir;
if (!domain) return 0;
configdir = _edi_config_dir_get();
snprintf(buff, sizeof(buff), "%s/", configdir);
snprintf(buff, sizeof(buff), "%s/", dir);
if (!ecore_file_exists(buff)) ecore_file_mkpath(buff);
snprintf(buff, sizeof(buff), "%s/%s.tmp", configdir, domain);
snprintf(buff, sizeof(buff), "%s/%s.tmp", dir, domain);
ef = eet_open(buff, EET_FILE_MODE_WRITE);
if (ef)
{
char buff2[PATH_MAX];
snprintf(buff2, sizeof(buff2), "%s/%s.cfg", configdir, domain);
snprintf(buff2, sizeof(buff2), "%s/%s.cfg", dir, domain);
if (!eet_data_write(ef, edd, "config", data, 1))
{
eet_close(ef);
@ -179,6 +204,17 @@ _edi_config_init(void)
#define T Edi_Config
#define D _edi_cfg_edd
EDI_CONFIG_VAL(D, T, version, EET_T_INT);
EDI_CONFIG_VAL(D, T, autosave, EET_T_UCHAR);
EDI_CONFIG_LIST(D, T, projects, _edi_cfg_proj_edd);
EDI_CONFIG_LIST(D, T, mime_assocs, _edi_cfg_mime_edd);
_edi_proj_cfg_edd = EDI_CONFIG_DD_NEW("Project_Config", Edi_Project_Config);
#undef T
#undef D
#define T Edi_Project_Config
#define D _edi_proj_cfg_edd
EDI_CONFIG_VAL(D, T, version, EET_T_INT);
EDI_CONFIG_VAL(D, T, font.size, EET_T_INT);
EDI_CONFIG_VAL(D, T, gui.translucent, EET_T_UCHAR);
EDI_CONFIG_VAL(D, T, gui.width, EET_T_INT);
@ -191,9 +227,6 @@ _edi_config_init(void)
EDI_CONFIG_VAL(D, T, gui.show_whitespace, EET_T_UCHAR);
EDI_CONFIG_VAL(D, T, gui.width_marker, EET_T_UINT);
EDI_CONFIG_VAL(D, T, gui.tabstop, EET_T_UINT);
EDI_CONFIG_VAL(D, T, autosave, EET_T_UCHAR);
EDI_CONFIG_LIST(D, T, projects, _edi_cfg_proj_edd);
EDI_CONFIG_LIST(D, T, mime_assocs, _edi_cfg_mime_edd);
_edi_config_load();
@ -204,11 +237,14 @@ Eina_Bool
_edi_config_shutdown(void)
{
_edi_config_cb_free();
_edi_project_config_cb_free();
EDI_CONFIG_DD_FREE(_edi_cfg_proj_edd);
EDI_CONFIG_DD_FREE(_edi_cfg_mime_edd);
EDI_CONFIG_DD_FREE(_edi_cfg_edd);
EDI_CONFIG_DD_FREE(_edi_proj_cfg_edd);
efreet_shutdown();
return EINA_TRUE;
@ -219,17 +255,17 @@ _edi_config_load(void)
{
Eina_Bool save = EINA_FALSE;
_edi_cfg = _edi_config_domain_load(PACKAGE_NAME, _edi_cfg_edd);
if (_edi_cfg)
_edi_config = _edi_config_domain_load(_edi_config_dir_get(), PACKAGE_NAME, _edi_cfg_edd);
if (_edi_config)
{
Eina_Bool reload = EINA_FALSE;
if ((_edi_cfg->version >> 16) < EDI_CONFIG_FILE_EPOCH)
if ((_edi_config->version >> 16) < EDI_CONFIG_FILE_EPOCH)
{
/* config too old */
reload = EINA_TRUE;
}
else if (_edi_cfg->version > EDI_CONFIG_FILE_VERSION)
else if (_edi_config->version > EDI_CONFIG_FILE_VERSION)
{
/* config too new, WTF ? */
reload = EINA_TRUE;
@ -239,48 +275,26 @@ _edi_config_load(void)
if (reload) _edi_config_cb_free();
}
if (!_edi_cfg)
if (!_edi_config)
{
_edi_cfg = calloc(1, sizeof(Edi_Config));
_edi_config = calloc(1, sizeof(Edi_Config));
save = EINA_TRUE;
}
/* define some convenient macros */
#define IFCFG(v) if ((_edi_cfg->version & 0xffff) < (v)) {
#define IFCFG(v) if ((_edi_config->version & 0xffff) < (v)) {
#define IFCFGELSE } else {
#define IFCFGEND }
/* setup defaults */
IFCFG(0x000a);
IFCFG(0x000c);
_edi_cfg->font.size = 12;
_edi_cfg->gui.translucent = EINA_TRUE;
_edi_cfg->gui.width = 640;
_edi_cfg->gui.height = 480;
_edi_cfg->gui.leftsize = 0.25;
_edi_cfg->gui.leftopen = EINA_TRUE;
_edi_cfg->gui.bottomsize = 0.2;
_edi_cfg->gui.bottomopen = EINA_FALSE;
_edi_cfg->gui.bottomtab = 0;
_edi_cfg->autosave = EINA_TRUE;
_edi_cfg->projects = NULL;
_edi_cfg->mime_assocs = NULL;
_edi_config->autosave = EINA_TRUE;
_edi_config->projects = NULL;
_edi_config->mime_assocs = NULL;
IFCFGEND;
IFCFG(0x000b);
_edi_cfg->gui.width_marker = 80;
_edi_cfg->gui.tabstop = 8;
IFCFGEND;
/* limit config values so they are sane */
EDI_CONFIG_LIMIT(_edi_cfg->font.size, 8, 96);
EDI_CONFIG_LIMIT(_edi_cfg->gui.width, 150, 10000);
EDI_CONFIG_LIMIT(_edi_cfg->gui.height, 100, 8000);
EDI_CONFIG_LIMIT(_edi_cfg->gui.leftsize, 0.0, 1.0);
EDI_CONFIG_LIMIT(_edi_cfg->gui.bottomsize, 0.0, 1.0);
EDI_CONFIG_LIMIT(_edi_cfg->gui.tabstop, 1, 32);
_edi_cfg->version = EDI_CONFIG_FILE_VERSION;
_edi_config->version = EDI_CONFIG_FILE_VERSION;
if (save) _edi_config_save();
}
@ -288,7 +302,7 @@ _edi_config_load(void)
void
_edi_config_save(void)
{
if (_edi_config_domain_save(PACKAGE_NAME, _edi_cfg_edd, _edi_cfg))
if (_edi_config_domain_save(_edi_config_dir_get(), PACKAGE_NAME, _edi_cfg_edd, _edi_config))
ecore_event_add(EDI_EVENT_CONFIG_CHANGED, NULL, NULL, NULL);
}
@ -298,16 +312,16 @@ _edi_config_project_add(const char *path)
Edi_Config_Project *project;
Eina_List *list, *next;
EINA_LIST_FOREACH_SAFE(_edi_cfg->projects, list, next, project)
EINA_LIST_FOREACH_SAFE(_edi_config->projects, list, next, project)
{
if (!strncmp(project->path, path, strlen(project->path)))
_edi_cfg->projects = eina_list_remove_list(_edi_cfg->projects, list);
_edi_config->projects = eina_list_remove_list(_edi_config->projects, list);
}
project = malloc(sizeof(*project));
project->path = eina_stringshare_add(path);
project->name = eina_stringshare_add(basename((char*) path));
_edi_cfg->projects = eina_list_prepend(_edi_cfg->projects, project);
_edi_config->projects = eina_list_prepend(_edi_config->projects, project);
_edi_config_save();
}
@ -317,15 +331,13 @@ _edi_config_project_remove(const char *path)
Edi_Config_Project *project;
Eina_List *list, *next;
EINA_LIST_FOREACH_SAFE(_edi_cfg->projects, list, next, project)
EINA_LIST_FOREACH_SAFE(_edi_config->projects, list, next, project)
{
if (!strncmp(project->path, path, strlen(project->path)))
{
break;
}
break;
}
_edi_cfg->projects = eina_list_remove(_edi_cfg->projects, project);
_edi_config->projects = eina_list_remove(_edi_config->projects, project);
_edi_config_save();
}
@ -337,7 +349,7 @@ _edi_config_mime_add(const char *mime, const char *id)
mime_assoc = malloc(sizeof(*mime_assoc));
mime_assoc->id = eina_stringshare_add(id);
mime_assoc->mime = eina_stringshare_add(mime);
_edi_cfg->mime_assocs = eina_list_prepend(_edi_cfg->mime_assocs, mime_assoc);
_edi_config->mime_assocs = eina_list_prepend(_edi_config->mime_assocs, mime_assoc);
_edi_config_save();
}
@ -347,7 +359,7 @@ _edi_config_mime_search(const char *mime)
Edi_Config_Mime_Association *mime_assoc;
Eina_List *list, *next;
EINA_LIST_FOREACH_SAFE(_edi_cfg->mime_assocs, list, next, mime_assoc)
EINA_LIST_FOREACH_SAFE(_edi_config->mime_assocs, list, next, mime_assoc)
{
if (!strncmp(mime_assoc->mime, mime, strlen(mime_assoc->mime)))
{
@ -356,3 +368,77 @@ _edi_config_mime_search(const char *mime)
}
return NULL;
}
void
_edi_project_config_load()
{
Eina_Bool save = EINA_FALSE;
_edi_project_config = _edi_config_domain_load(_edi_project_config_dir_get(), PACKAGE_NAME, _edi_proj_cfg_edd);
if (_edi_project_config)
{
Eina_Bool reload = EINA_FALSE;
if ((_edi_project_config->version >> 16) < EDI_PROJECT_CONFIG_FILE_EPOCH)
{
/* config too old */
reload = EINA_TRUE;
}
else if (_edi_project_config->version > EDI_PROJECT_CONFIG_FILE_VERSION)
{
/* config too new, WTF ? */
reload = EINA_TRUE;
}
/* if too old or too new, clear it so we can create new */
if (reload) _edi_project_config_cb_free();
}
if (!_edi_project_config)
{
_edi_project_config = calloc(1, sizeof(Edi_Project_Config));
save = EINA_TRUE;
}
/* define some convenient macros */
#define IFPCFG(v) if ((_edi_project_config->version & 0xffff) < (v)) {
#define IFPCFGELSE } else {
#define IFPCFGEND }
/* setup defaults */
IFPCFG(0x0001);
_edi_project_config->font.size = 12;
_edi_project_config->gui.translucent = EINA_TRUE;
_edi_project_config->gui.width = 640;
_edi_project_config->gui.height = 480;
_edi_project_config->gui.leftsize = 0.25;
_edi_project_config->gui.leftopen = EINA_TRUE;
_edi_project_config->gui.bottomsize = 0.2;
_edi_project_config->gui.bottomopen = EINA_FALSE;
_edi_project_config->gui.bottomtab = 0;
_edi_project_config->gui.width_marker = 80;
_edi_project_config->gui.tabstop = 8;
IFPCFGEND;
/* limit config values so they are sane */
EDI_CONFIG_LIMIT(_edi_project_config->font.size, 8, 96);
EDI_CONFIG_LIMIT(_edi_project_config->gui.width, 150, 10000);
EDI_CONFIG_LIMIT(_edi_project_config->gui.height, 100, 8000);
EDI_CONFIG_LIMIT(_edi_project_config->gui.leftsize, 0.0, 1.0);
EDI_CONFIG_LIMIT(_edi_project_config->gui.bottomsize, 0.0, 1.0);
EDI_CONFIG_LIMIT(_edi_project_config->gui.tabstop, 1, 32);
_edi_project_config->version = EDI_PROJECT_CONFIG_FILE_VERSION;
if (save) _edi_project_config_save();
}
void
_edi_project_config_save()
{
if (_edi_config_domain_save(_edi_project_config_dir_get(), PACKAGE_NAME, _edi_proj_cfg_edd, _edi_project_config))
ecore_event_add(EDI_EVENT_CONFIG_CHANGED, NULL, NULL, NULL);
}

View File

@ -3,6 +3,8 @@
#include <Eina.h>
#include "Edi.h"
#ifdef __cplusplus
extern "C" {
#endif
@ -13,6 +15,8 @@ typedef struct _Edi_Config_Project Edi_Config_Project;
typedef struct _Edi_Config_Mime_Association Edi_Config_Mime_Association;
typedef struct _Edi_Config Edi_Config;
typedef struct _Edi_Project_Config Edi_Project_Config;
struct _Edi_Config_Project
{
const char *name;
@ -25,7 +29,17 @@ struct _Edi_Config_Mime_Association
const char *mime;
};
struct _Edi_Config
struct _Edi_Config
{
int version;
Eina_Bool autosave;
Eina_List *projects;
Eina_List *mime_assocs;
};
struct _Edi_Project_Config
{
int version;
@ -43,19 +57,17 @@ struct _Edi_Config
Eina_Bool show_whitespace;
unsigned int width_marker, tabstop;
} gui;
Eina_Bool autosave;
Eina_List *projects;
Eina_List *mime_assocs;
};
extern Edi_Config *_edi_cfg;
extern Edi_Config *_edi_config;
extern Edi_Project_Config *_edi_project_config;
Eina_Bool _edi_config_init(void);
Eina_Bool _edi_config_shutdown(void);
void _edi_config_load(void);
void _edi_config_save(void);
void _edi_project_config_load();
void _edi_project_config_save();
void _edi_config_project_add(const char *path);
void _edi_config_project_remove(const char *path);

View File

@ -319,13 +319,13 @@ _edi_consolepanel_config_changed(void *data EINA_UNUSED, int type EINA_UNUSED, v
EINA_LIST_FOREACH(_edi_console_code->widgets, item, widget)
{
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size));
elm_code_widget_font_size_set(_edi_project_config->font.size));
}
EINA_LIST_FOREACH(_edi_test_code->widgets, item, widget)
{
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size));
elm_code_widget_font_size_set(_edi_project_config->font.size));
}
return ECORE_CALLBACK_RENEW;
@ -342,7 +342,7 @@ void edi_consolepanel_add(Evas_Object *parent)
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size),
elm_code_widget_font_size_set(_edi_project_config->font.size),
elm_code_widget_gravity_set(0.0, 1.0),
eo_event_callback_add(&ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_consolepanel_line_cb, NULL),
eo_event_callback_add(ELM_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code));
@ -369,7 +369,7 @@ void edi_testpanel_add(Evas_Object *parent)
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size),
elm_code_widget_font_size_set(_edi_project_config->font.size),
elm_code_widget_gravity_set(0.0, 1.0),
eo_event_callback_add(&ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_testpanel_line_cb, NULL),
eo_event_callback_add(ELM_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code));

View File

@ -50,7 +50,7 @@ static Eina_Bool
_edi_logpanel_config_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
eo_do(_info_widget,
elm_code_widget_font_size_set(_edi_cfg->font.size));
elm_code_widget_font_size_set(_edi_project_config->font.size));
return ECORE_CALLBACK_RENEW;
}
@ -64,7 +64,7 @@ void edi_logpanel_add(Evas_Object *parent)
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size),
elm_code_widget_font_size_set(_edi_project_config->font.size),
elm_code_widget_gravity_set(0.0, 1.0),
eo_event_callback_add(&ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_logpanel_line_cb, NULL));
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

View File

@ -123,25 +123,25 @@ _edi_panel_size_save(Eina_Bool left)
if (left)
{
_edi_cfg->gui.leftopen = open;
_edi_project_config->gui.leftopen = open;
if (open)
_edi_cfg->gui.leftsize = size;
_edi_project_config->gui.leftsize = size;
}
else
{
_edi_cfg->gui.bottomopen = open;
_edi_project_config->gui.bottomopen = open;
if (open)
_edi_cfg->gui.bottomsize = size;
_edi_project_config->gui.bottomsize = size;
}
_edi_config_save();
_edi_project_config_save();
}
static void
_edi_panel_save_tab(int index)
{
_edi_cfg->gui.bottomtab = index;
_edi_config_save();
_edi_project_config->gui.bottomtab = index;
_edi_project_config_save();
}
static void
@ -225,12 +225,12 @@ _edi_toggle_file_panel(void *data, Evas_Object *obj EINA_UNUSED, void *event_inf
if (size == 0.0)
{
elm_icon_standard_set(_edi_filepanel_icon, "stock_left");
_edi_slide_panel_new(_edi_leftpanes, panel, _edi_cfg->gui.leftsize, EINA_TRUE, EINA_TRUE);
_edi_slide_panel_new(_edi_leftpanes, panel, _edi_project_config->gui.leftsize, EINA_TRUE, EINA_TRUE);
}
else
{
elm_icon_standard_set(_edi_filepanel_icon, "stock_right");
_edi_slide_panel_new(_edi_leftpanes, panel, _edi_cfg->gui.leftsize, EINA_FALSE, EINA_TRUE);
_edi_slide_panel_new(_edi_leftpanes, panel, _edi_project_config->gui.leftsize, EINA_FALSE, EINA_TRUE);
}
}
@ -257,7 +257,7 @@ _edi_toggle_panel(void *data, Evas_Object *obj, void *event_info)
{
elm_toolbar_item_icon_set(item, "stock_up");
_edi_slide_panel_new(_edi_bottompanes, panel, _edi_cfg->gui.bottomsize, EINA_FALSE, EINA_FALSE);
_edi_slide_panel_new(_edi_bottompanes, panel, _edi_project_config->gui.bottomsize, EINA_FALSE, EINA_FALSE);
_edi_selected_bottompanel = NULL;
}
else
@ -268,7 +268,7 @@ _edi_toggle_panel(void *data, Evas_Object *obj, void *event_info)
size = elm_panes_content_right_size_get(_edi_bottompanes);
if (size == 0.0)
_edi_slide_panel_new(_edi_bottompanes, panel, _edi_cfg->gui.bottomsize, EINA_TRUE, EINA_FALSE);
_edi_slide_panel_new(_edi_bottompanes, panel, _edi_project_config->gui.bottomsize, EINA_TRUE, EINA_FALSE);
else
evas_object_show(panel);
@ -330,7 +330,7 @@ edi_content_setup(Evas_Object *win, const char *path)
evas_object_size_hint_align_set(content_in, EVAS_HINT_FILL, EVAS_HINT_FILL);
icon = elm_icon_add(content_in);
if (_edi_cfg->gui.leftopen)
if (_edi_project_config->gui.leftopen)
elm_icon_standard_set(icon, "stock_left");
else
elm_icon_standard_set(icon, "stock_right");
@ -357,8 +357,8 @@ edi_content_setup(Evas_Object *win, const char *path)
// add file list
evas_object_size_hint_weight_set(_edi_filepanel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(_edi_filepanel, EVAS_HINT_FILL, EVAS_HINT_FILL);
if (_edi_cfg->gui.leftopen)
elm_panes_content_left_size_set(filepane, _edi_cfg->gui.leftsize);
if (_edi_project_config->gui.leftopen)
elm_panes_content_left_size_set(filepane, _edi_project_config->gui.leftsize);
else
elm_panes_content_left_size_set(filepane, 0.0);
evas_object_smart_callback_add(filepane, "unpress", _edi_panel_dragged_cb, _edi_filepanel);
@ -408,15 +408,15 @@ edi_content_setup(Evas_Object *win, const char *path)
edi_testpanel_add(_edi_testpanel);
elm_table_pack(logpanels, _edi_testpanel, 0, 0, 1, 1);
elm_object_part_content_set(logpane, "bottom", logpanels);
if (_edi_cfg->gui.bottomopen)
if (_edi_project_config->gui.bottomopen)
{
elm_panes_content_right_size_set(logpane, _edi_cfg->gui.bottomsize);
if (_edi_cfg->gui.bottomtab == 1)
elm_panes_content_right_size_set(logpane, _edi_project_config->gui.bottomsize);
if (_edi_project_config->gui.bottomtab == 1)
{
elm_toolbar_item_icon_set(_edi_consolepanel_item, "stock_down");
_edi_selected_bottompanel = _edi_consolepanel_item;
}
else if (_edi_cfg->gui.bottomtab == 2)
else if (_edi_project_config->gui.bottomtab == 2)
{
elm_toolbar_item_icon_set(_edi_testpanel_item, "stock_down");
_edi_selected_bottompanel = _edi_testpanel_item;
@ -429,8 +429,8 @@ edi_content_setup(Evas_Object *win, const char *path)
}
else
elm_panes_content_right_size_set(logpane, 0.0);
if (_edi_cfg->gui.bottomopen)
evas_object_show(_edi_panel_tab_for_index(_edi_cfg->gui.bottomtab));
if (_edi_project_config->gui.bottomopen)
evas_object_show(_edi_panel_tab_for_index(_edi_project_config->gui.bottomtab));
evas_object_smart_callback_add(logpane, "unpress", _edi_panel_dragged_cb, NULL);
evas_object_show(logpane);
@ -755,9 +755,9 @@ _edi_resize_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj,
w /= elm_config_scale_get();
h /= elm_config_scale_get();
_edi_cfg->gui.width = w + 1;
_edi_cfg->gui.height = h + 1;
_edi_config_save();
_edi_project_config->gui.width = w + 1;
_edi_project_config->gui.height = h + 1;
_edi_project_config_save();
}
Evas_Object *
@ -773,6 +773,7 @@ edi_open(const char *inputpath)
return NULL;
}
path = realpath(inputpath, NULL);
_edi_project_config_load(edi_project_get());
elm_need_ethumb();
elm_need_efreet();
@ -801,8 +802,8 @@ edi_open(const char *inputpath)
elm_box_pack_end(vbx, content);
ERR("Loaded project at %s", path);
evas_object_resize(win, _edi_cfg->gui.width * elm_config_scale_get(),
_edi_cfg->gui.height * elm_config_scale_get());
evas_object_resize(win, _edi_project_config->gui.width * elm_config_scale_get(),
_edi_project_config->gui.height * elm_config_scale_get());
evas_object_show(win);
_edi_config_project_add(path);

View File

@ -136,7 +136,7 @@ TODO move this code into elm_code for undo/redo
if (editor->save_timer)
ecore_timer_reset(editor->save_timer);
else if (_edi_cfg->autosave)
else if (_edi_config->autosave)
editor->save_timer = ecore_timer_add(EDI_CONTENT_SAVE_TIMEOUT, _edi_editor_autosave_cb, editor);
}
@ -537,7 +537,7 @@ _unfocused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UN
editor = (Edi_Editor *)data;
if (_edi_cfg->autosave)
if (_edi_config->autosave)
edi_editor_save(editor);
}
@ -578,10 +578,10 @@ _edi_editor_config_changed(void *data, int type EINA_UNUSED, void *event EINA_UN
widget = (Elm_Code_Widget *) data;
eo_do(widget,
elm_code_widget_font_size_set(_edi_cfg->font.size),
elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace),
elm_code_widget_line_width_marker_set(_edi_cfg->gui.width_marker),
elm_code_widget_tabstop_set(_edi_cfg->gui.tabstop));
elm_code_widget_font_size_set(_edi_project_config->font.size),
elm_code_widget_show_whitespace_set(_edi_project_config->gui.show_whitespace),
elm_code_widget_line_width_marker_set(_edi_project_config->gui.width_marker),
elm_code_widget_tabstop_set(_edi_project_config->gui.tabstop));
return ECORE_CALLBACK_RENEW;
}

View File

@ -53,8 +53,8 @@ _edi_settings_display_fontsize_cb(void *data EINA_UNUSED, Evas_Object *obj,
Evas_Object *spinner;
spinner = (Evas_Object *)obj;
_edi_cfg->font.size = (int) elm_spinner_value_get(spinner);
_edi_config_save();
_edi_project_config->font.size = (int) elm_spinner_value_get(spinner);
_edi_project_config_save();
}
static void
@ -64,8 +64,8 @@ _edi_settings_display_whitespace_cb(void *data EINA_UNUSED, Evas_Object *obj,
Evas_Object *check;
check = (Evas_Object *)obj;
_edi_cfg->gui.show_whitespace = elm_check_state_get(check);
_edi_config_save();
_edi_project_config->gui.show_whitespace = elm_check_state_get(check);
_edi_project_config_save();
}
static void
@ -75,8 +75,8 @@ _edi_settings_display_widthmarker_cb(void *data EINA_UNUSED, Evas_Object *obj,
Evas_Object *spinner;
spinner = (Evas_Object *)obj;
_edi_cfg->gui.width_marker = (int) elm_spinner_value_get(spinner);
_edi_config_save();
_edi_project_config->gui.width_marker = (int) elm_spinner_value_get(spinner);
_edi_project_config_save();
}
static void
@ -86,8 +86,8 @@ _edi_settings_display_tabstop_cb(void *data EINA_UNUSED, Evas_Object *obj,
Evas_Object *spinner;
spinner = (Evas_Object *)obj;
_edi_cfg->gui.tabstop = (int) elm_spinner_value_get(spinner);
_edi_config_save();
_edi_project_config->gui.tabstop = (int) elm_spinner_value_get(spinner);
_edi_project_config_save();
}
static Evas_Object *
@ -112,7 +112,7 @@ _edi_settings_display_create(Evas_Object *parent)
evas_object_show(label);
spinner = elm_spinner_add(hbox);
elm_spinner_value_set(spinner, _edi_cfg->font.size);
elm_spinner_value_set(spinner, _edi_project_config->font.size);
elm_spinner_editable_set(spinner, EINA_TRUE);
elm_spinner_label_format_set(spinner, "%1.0fpt");
elm_spinner_step_set(spinner, 1);
@ -127,7 +127,7 @@ _edi_settings_display_create(Evas_Object *parent)
check = elm_check_add(box);
elm_object_text_set(check, "Display whitespace");
elm_check_state_set(check, _edi_cfg->gui.show_whitespace);
elm_check_state_set(check, _edi_project_config->gui.show_whitespace);
elm_box_pack_end(box, check);
evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(check, 0.0, 0.5);
@ -149,7 +149,7 @@ _edi_settings_display_create(Evas_Object *parent)
evas_object_show(label);
spinner = elm_spinner_add(hbox);
elm_spinner_value_set(spinner, _edi_cfg->gui.width_marker);
elm_spinner_value_set(spinner, _edi_project_config->gui.width_marker);
elm_spinner_editable_set(spinner, EINA_TRUE);
elm_spinner_step_set(spinner, 1);
elm_spinner_wrap_set(spinner, EINA_FALSE);
@ -175,7 +175,7 @@ _edi_settings_display_create(Evas_Object *parent)
evas_object_show(label);
spinner = elm_spinner_add(hbox);
elm_spinner_value_set(spinner, _edi_cfg->gui.tabstop);
elm_spinner_value_set(spinner, _edi_project_config->gui.tabstop);
elm_spinner_editable_set(spinner, EINA_TRUE);
elm_spinner_step_set(spinner, 1);
elm_spinner_wrap_set(spinner, EINA_FALSE);
@ -197,7 +197,7 @@ _edi_settings_behaviour_autosave_cb(void *data EINA_UNUSED, Evas_Object *obj,
Evas_Object *check;
check = (Evas_Object *)obj;
_edi_cfg->autosave = elm_check_state_get(check);
_edi_config->autosave = elm_check_state_get(check);
_edi_config_save();
}
@ -211,7 +211,7 @@ _edi_settings_behaviour_create(Evas_Object *parent)
check = elm_check_add(box);
elm_object_text_set(check, "Auto save files");
elm_check_state_set(check, _edi_cfg->autosave);
elm_check_state_set(check, _edi_config->autosave);
elm_box_pack_end(box, check);
evas_object_size_hint_align_set(check, EVAS_HINT_FILL, 0.5);
evas_object_smart_callback_add(check, "changed",

View File

@ -353,7 +353,7 @@ _edi_welcome_add_recent_projects(Evas_Object *box)
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_list_mode_set(list, ELM_LIST_LIMIT);
EINA_LIST_FOREACH(_edi_cfg->projects, listitem, project)
EINA_LIST_FOREACH(_edi_config->projects, listitem, project)
{
format = "<align=right><color=#ffffff><b>%s: </b></color></align>";
displen = strlen(project->path) + strlen(format) - 1;