ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/edi.git/commit/?id=bf17d7c8af73dece708d501c900499428709cd74
commit bf17d7c8af73dece708d501c900499428709cd74 Author: Andy Williams <a...@andywilliams.me> Date: Sat May 16 09:56:39 2015 +0100 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 --- .gitignore | 1 + src/bin/edi_config.c | 212 +++++++++++++++++++++++++++++------------ src/bin/edi_config.h | 26 +++-- src/bin/edi_consolepanel.c | 8 +- src/bin/edi_logpanel.c | 4 +- src/bin/edi_main.c | 51 +++++----- src/bin/editor/edi_editor.c | 12 +-- src/bin/screens/edi_settings.c | 28 +++--- src/bin/screens/edi_welcome.c | 2 +- 9 files changed, 222 insertions(+), 122 deletions(-) diff --git a/.gitignore b/.gitignore index 8a3af95..39c72e7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ *.gcno *.gcda .dirstamp +.edi /src/bin/edi /src/bin/edi_build diff --git a/src/bin/edi_config.c b/src/bin/edi_config.c index 3049e8a..4b02c60 100644 --- a/src/bin/edi_config.c +++ b/src/bin/edi_config.c @@ -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); - - _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; - IFCFGEND; + IFCFG(0x000c); - IFCFG(0x000b); - _edi_cfg->gui.width_marker = 80; - _edi_cfg->gui.tabstop = 8; + _edi_config->autosave = EINA_TRUE; + _edi_config->projects = NULL; + _edi_config->mime_assocs = NULL; 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); +} + diff --git a/src/bin/edi_config.h b/src/bin/edi_config.h index 041f296..fc7b022 100644 --- a/src/bin/edi_config.h +++ b/src/bin/edi_config.h @@ -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); diff --git a/src/bin/edi_consolepanel.c b/src/bin/edi_consolepanel.c index 579c091..d80fdf4 100644 --- a/src/bin/edi_consolepanel.c +++ b/src/bin/edi_consolepanel.c @@ -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)); diff --git a/src/bin/edi_logpanel.c b/src/bin/edi_logpanel.c index 353e9e3..c12d7c5 100644 --- a/src/bin/edi_logpanel.c +++ b/src/bin/edi_logpanel.c @@ -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); diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index a9016eb..390ee77 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -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); diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index 8d36407..0e17ea9 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -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; } diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index 5cf3c36..e54bf39 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -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", diff --git a/src/bin/screens/edi_welcome.c b/src/bin/screens/edi_welcome.c index 0027380..fd3b945 100644 --- a/src/bin/screens/edi_welcome.c +++ b/src/bin/screens/edi_welcome.c @@ -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; --