forked from enlightenment/edi
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:
parent
0da1c9a5e3
commit
bf17d7c8af
|
@ -9,6 +9,7 @@
|
|||
*.gcno
|
||||
*.gcda
|
||||
.dirstamp
|
||||
.edi
|
||||
|
||||
/src/bin/edi
|
||||
/src/bin/edi_build
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue