forked from enlightenment/edi
config: add settings screen
Add a new autosave flag, upgrade config so it's set. Listen to a config_changed event to update UI where required.
This commit is contained in:
parent
fcac809e97
commit
e62ddd5bc1
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2015-03-08 ajwillia.ms (Andy Williams)
|
||||||
|
|
||||||
|
* Add a settings screen
|
||||||
|
|
||||||
|
2015-02-28 Vincent Torri
|
||||||
|
|
||||||
|
* Fix username lookup for Windows
|
||||||
|
|
||||||
|
2015-02-21 ajwillia.ms (Andy Williams)
|
||||||
|
|
||||||
|
* Release 0.0.1
|
||||||
|
|
||||||
2015-02-11 ajwillia.ms (Andy Williams)
|
2015-02-11 ajwillia.ms (Andy Williams)
|
||||||
|
|
||||||
* Make sure clang syntax loading follows auto saves
|
* Make sure clang syntax loading follows auto saves
|
||||||
|
|
|
@ -35,6 +35,7 @@ editor/edi_editor.c \
|
||||||
edi_content_provider.c \
|
edi_content_provider.c \
|
||||||
screens/edi_welcome.c \
|
screens/edi_welcome.c \
|
||||||
screens/edi_about.c \
|
screens/edi_about.c \
|
||||||
|
screens/edi_settings.c \
|
||||||
edi_filepanel.c \
|
edi_filepanel.c \
|
||||||
edi_logpanel.c \
|
edi_logpanel.c \
|
||||||
edi_consolepanel.c \
|
edi_consolepanel.c \
|
||||||
|
|
|
@ -33,8 +33,8 @@
|
||||||
# define EDI_CONFIG_HASH(edd, type, member, eddtype) \
|
# define EDI_CONFIG_HASH(edd, type, member, eddtype) \
|
||||||
EET_DATA_DESCRIPTOR_ADD_HASH(edd, type, #member, member, eddtype)
|
EET_DATA_DESCRIPTOR_ADD_HASH(edd, type, #member, member, eddtype)
|
||||||
|
|
||||||
# define EDI_CONFIG_FILE_EPOCH 0x0001
|
# define EDI_CONFIG_FILE_EPOCH 0x0002
|
||||||
# define EDI_CONFIG_FILE_GENERATION 0x000a
|
# define EDI_CONFIG_FILE_GENERATION 0x000b
|
||||||
# define EDI_CONFIG_FILE_VERSION \
|
# define EDI_CONFIG_FILE_VERSION \
|
||||||
((EDI_CONFIG_FILE_EPOCH << 16) | EDI_CONFIG_FILE_GENERATION)
|
((EDI_CONFIG_FILE_EPOCH << 16) | EDI_CONFIG_FILE_GENERATION)
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ static Edi_Config_DD *_edi_cfg_mime_edd = NULL;
|
||||||
|
|
||||||
/* external variables */
|
/* external variables */
|
||||||
Edi_Config *_edi_cfg = NULL;
|
Edi_Config *_edi_cfg = NULL;
|
||||||
|
int EDI_EVENT_CONFIG_CHANGED;
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
_edi_config_dir_get(void)
|
_edi_config_dir_get(void)
|
||||||
|
@ -154,6 +155,7 @@ _edi_config_init(void)
|
||||||
{
|
{
|
||||||
elm_need_efreet();
|
elm_need_efreet();
|
||||||
if (!efreet_init()) return EINA_FALSE;
|
if (!efreet_init()) return EINA_FALSE;
|
||||||
|
EDI_EVENT_CONFIG_CHANGED = ecore_event_type_new();
|
||||||
|
|
||||||
_edi_cfg_proj_edd = EDI_CONFIG_DD_NEW("Config_Project", Edi_Config_Project);
|
_edi_cfg_proj_edd = EDI_CONFIG_DD_NEW("Config_Project", Edi_Config_Project);
|
||||||
#undef T
|
#undef T
|
||||||
|
@ -186,6 +188,7 @@ _edi_config_init(void)
|
||||||
EDI_CONFIG_VAL(D, T, gui.bottomsize, EET_T_DOUBLE);
|
EDI_CONFIG_VAL(D, T, gui.bottomsize, EET_T_DOUBLE);
|
||||||
EDI_CONFIG_VAL(D, T, gui.bottomopen, EET_T_UCHAR);
|
EDI_CONFIG_VAL(D, T, gui.bottomopen, EET_T_UCHAR);
|
||||||
EDI_CONFIG_VAL(D, T, gui.bottomtab, EET_T_INT);
|
EDI_CONFIG_VAL(D, T, gui.bottomtab, 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, projects, _edi_cfg_proj_edd);
|
||||||
EDI_CONFIG_LIST(D, T, mime_assocs, _edi_cfg_mime_edd);
|
EDI_CONFIG_LIST(D, T, mime_assocs, _edi_cfg_mime_edd);
|
||||||
|
|
||||||
|
@ -249,13 +252,14 @@ _edi_config_load(void)
|
||||||
|
|
||||||
_edi_cfg->font.size = 12;
|
_edi_cfg->font.size = 12;
|
||||||
_edi_cfg->gui.translucent = EINA_TRUE;
|
_edi_cfg->gui.translucent = EINA_TRUE;
|
||||||
_edi_cfg->gui.width = 560;
|
_edi_cfg->gui.width = 640;
|
||||||
_edi_cfg->gui.height = 420;
|
_edi_cfg->gui.height = 480;
|
||||||
_edi_cfg->gui.leftsize = 0.25;
|
_edi_cfg->gui.leftsize = 0.25;
|
||||||
_edi_cfg->gui.leftopen = EINA_TRUE;
|
_edi_cfg->gui.leftopen = EINA_TRUE;
|
||||||
_edi_cfg->gui.bottomsize = 0.2;
|
_edi_cfg->gui.bottomsize = 0.2;
|
||||||
_edi_cfg->gui.bottomopen = EINA_FALSE;
|
_edi_cfg->gui.bottomopen = EINA_FALSE;
|
||||||
_edi_cfg->gui.bottomtab = 0;
|
_edi_cfg->gui.bottomtab = 0;
|
||||||
|
_edi_cfg->autosave = EINA_TRUE;
|
||||||
_edi_cfg->projects = NULL;
|
_edi_cfg->projects = NULL;
|
||||||
_edi_cfg->mime_assocs = NULL;
|
_edi_cfg->mime_assocs = NULL;
|
||||||
IFCFGEND;
|
IFCFGEND;
|
||||||
|
@ -276,9 +280,7 @@ void
|
||||||
_edi_config_save(void)
|
_edi_config_save(void)
|
||||||
{
|
{
|
||||||
if (_edi_config_domain_save(PACKAGE_NAME, _edi_cfg_edd, _edi_cfg))
|
if (_edi_config_domain_save(PACKAGE_NAME, _edi_cfg_edd, _edi_cfg))
|
||||||
{
|
ecore_event_add(EDI_EVENT_CONFIG_CHANGED, NULL, NULL, NULL);
|
||||||
/* perform any UI updates required */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern int EDI_EVENT_CONFIG_CHANGED;
|
||||||
|
|
||||||
typedef struct _Edi_Config_Project Edi_Config_Project;
|
typedef struct _Edi_Config_Project Edi_Config_Project;
|
||||||
typedef struct _Edi_Config_Mime_Association Edi_Config_Mime_Association;
|
typedef struct _Edi_Config_Mime_Association Edi_Config_Mime_Association;
|
||||||
typedef struct _Edi_Config Edi_Config;
|
typedef struct _Edi_Config Edi_Config;
|
||||||
|
@ -40,6 +42,8 @@ struct _Edi_Config
|
||||||
Eina_Bool leftopen, bottomopen;
|
Eina_Bool leftopen, bottomopen;
|
||||||
} gui;
|
} gui;
|
||||||
|
|
||||||
|
Eina_Bool autosave;
|
||||||
|
|
||||||
Eina_List *projects;
|
Eina_List *projects;
|
||||||
Eina_List *mime_assocs;
|
Eina_List *mime_assocs;
|
||||||
};
|
};
|
||||||
|
|
|
@ -308,6 +308,27 @@ static void _edi_test_line_callback(const char *content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_edi_consolepanel_config_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_List *item;
|
||||||
|
Eo *widget;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(_edi_console_code->widgets, item, widget)
|
||||||
|
{
|
||||||
|
eo_do(widget,
|
||||||
|
elm_code_widget_font_size_set(_edi_cfg->font.size));
|
||||||
|
}
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(_edi_test_code->widgets, item, widget)
|
||||||
|
{
|
||||||
|
eo_do(widget,
|
||||||
|
elm_code_widget_font_size_set(_edi_cfg->font.size));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_RENEW;
|
||||||
|
}
|
||||||
|
|
||||||
void edi_consolepanel_add(Evas_Object *parent)
|
void edi_consolepanel_add(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
Elm_Code *code;
|
Elm_Code *code;
|
||||||
|
@ -332,6 +353,7 @@ void edi_consolepanel_add(Evas_Object *parent)
|
||||||
|
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _exe_data, NULL);
|
ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _exe_data, NULL);
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error, NULL);
|
ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_error, NULL);
|
||||||
|
ecore_event_handler_add(EDI_EVENT_CONFIG_CHANGED, _edi_consolepanel_config_changed, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void edi_testpanel_add(Evas_Object *parent)
|
void edi_testpanel_add(Evas_Object *parent)
|
||||||
|
|
|
@ -46,6 +46,15 @@ _edi_logpanel_line_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
|
||||||
return EO_CALLBACK_CONTINUE;
|
return EO_CALLBACK_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_RENEW;
|
||||||
|
}
|
||||||
|
|
||||||
void edi_logpanel_add(Evas_Object *parent)
|
void edi_logpanel_add(Evas_Object *parent)
|
||||||
{
|
{
|
||||||
Elm_Code_Widget *widget;
|
Elm_Code_Widget *widget;
|
||||||
|
@ -69,4 +78,5 @@ void edi_logpanel_add(Evas_Object *parent)
|
||||||
eina_log_color_disable_set(EINA_TRUE);
|
eina_log_color_disable_set(EINA_TRUE);
|
||||||
|
|
||||||
elm_box_pack_end(parent, widget);
|
elm_box_pack_end(parent, widget);
|
||||||
|
ecore_event_handler_add(EDI_EVENT_CONFIG_CHANGED, _edi_logpanel_config_changed, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -650,6 +650,12 @@ _tb_about_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_i
|
||||||
edi_about_show(_edi_main_win);
|
edi_about_show(_edi_main_win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_tb_settings_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
edi_settings_show(_edi_main_win);
|
||||||
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
edi_toolbar_setup(Evas_Object *win)
|
edi_toolbar_setup(Evas_Object *win)
|
||||||
{
|
{
|
||||||
|
@ -712,6 +718,7 @@ edi_toolbar_setup(Evas_Object *win)
|
||||||
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
|
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
|
||||||
evas_object_size_hint_weight_set(tb, 0.14, 0.0);
|
evas_object_size_hint_weight_set(tb, 0.14, 0.0);
|
||||||
|
|
||||||
|
tb_it = elm_toolbar_item_append(tb, "preferences-desktop", "Settings", _tb_settings_cb, NULL);
|
||||||
tb_it = elm_toolbar_item_append(tb, "help-about", "About", _tb_about_cb, NULL);
|
tb_it = elm_toolbar_item_append(tb, "help-about", "About", _tb_about_cb, NULL);
|
||||||
|
|
||||||
elm_box_pack_end(box, tb);
|
elm_box_pack_end(box, tb);
|
||||||
|
|
|
@ -26,7 +26,6 @@ extern int _edi_log_dom;
|
||||||
#endif
|
#endif
|
||||||
#define DBG(...) EINA_LOG_DOM_DBG(_edi_log_dom, __VA_ARGS__)
|
#define DBG(...) EINA_LOG_DOM_DBG(_edi_log_dom, __VA_ARGS__)
|
||||||
|
|
||||||
#define EDI_CONTENT_AUTOSAVE EINA_TRUE
|
|
||||||
#define EDI_CONTENT_SAVE_TIMEOUT 5
|
#define EDI_CONTENT_SAVE_TIMEOUT 5
|
||||||
|
|
||||||
Evas_Object *edi_open(const char *path);
|
Evas_Object *edi_open(const char *path);
|
||||||
|
|
|
@ -42,8 +42,6 @@ static Edi_Color EDI_COLOR_SEVIRITY_WARNING = "<backing_color=#ff9900>";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *_default_font;
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
|
@ -96,16 +94,14 @@ _edi_editor_autosave_cb(void *data)
|
||||||
static const char *
|
static const char *
|
||||||
_edi_editor_font_get()
|
_edi_editor_font_get()
|
||||||
{
|
{
|
||||||
char *format;
|
const char *format;
|
||||||
|
char *font;
|
||||||
if (_default_font)
|
|
||||||
return _default_font;
|
|
||||||
|
|
||||||
format = "DEFAULT='font=Monospace font_size=%d'";
|
format = "DEFAULT='font=Monospace font_size=%d'";
|
||||||
|
|
||||||
_default_font = malloc(sizeof(char) * (strlen(format) + 4));
|
font = malloc(sizeof(char) * (strlen(format) + 4));
|
||||||
snprintf(_default_font, strlen(format) + 4, format, _edi_cfg->font.size);
|
snprintf(font, strlen(format) + 4, format, _edi_cfg->font.size);
|
||||||
return _default_font;
|
return font;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -190,7 +186,7 @@ _changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
|
|
||||||
if (editor->save_timer)
|
if (editor->save_timer)
|
||||||
ecore_timer_reset(editor->save_timer);
|
ecore_timer_reset(editor->save_timer);
|
||||||
else
|
else if (_edi_cfg->autosave)
|
||||||
editor->save_timer = ecore_timer_add(EDI_CONTENT_SAVE_TIMEOUT, _edi_editor_autosave_cb, editor);
|
editor->save_timer = ecore_timer_add(EDI_CONTENT_SAVE_TIMEOUT, _edi_editor_autosave_cb, editor);
|
||||||
|
|
||||||
_update_lines(editor);
|
_update_lines(editor);
|
||||||
|
@ -758,6 +754,7 @@ _unfocused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UN
|
||||||
|
|
||||||
editor = (Edi_Editor *)data;
|
editor = (Edi_Editor *)data;
|
||||||
|
|
||||||
|
if (_edi_cfg->autosave)
|
||||||
edi_editor_save(editor);
|
edi_editor_save(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,8 @@ extern "C" {
|
||||||
* Initialize a new Edi welcome window and display it.
|
* Initialize a new Edi welcome window and display it.
|
||||||
*
|
*
|
||||||
* @return The welcome window that is created
|
* @return The welcome window that is created
|
||||||
* * @ingroup UI
|
*
|
||||||
|
* @ingroup UI
|
||||||
*/
|
*/
|
||||||
Evas_Object *edi_welcome_show();
|
Evas_Object *edi_welcome_show();
|
||||||
|
|
||||||
|
@ -35,10 +36,20 @@ Evas_Object *edi_welcome_show();
|
||||||
* Initialize a new Edi about window and display it.
|
* Initialize a new Edi about window and display it.
|
||||||
*
|
*
|
||||||
* @return The about window that is created
|
* @return The about window that is created
|
||||||
* * @ingroup UI
|
*
|
||||||
|
* @ingroup UI
|
||||||
*/
|
*/
|
||||||
Evas_Object *edi_about_show(Evas_Object *mainwin);
|
Evas_Object *edi_about_show(Evas_Object *mainwin);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a new Edi settings window and display it.
|
||||||
|
*
|
||||||
|
* @return The settings window that is created
|
||||||
|
*
|
||||||
|
* @ingroup UI
|
||||||
|
*/
|
||||||
|
Evas_Object *edi_settings_show(Evas_Object *mainwin);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -0,0 +1,182 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Elementary.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
|
||||||
|
#include "edi_config.h"
|
||||||
|
|
||||||
|
#include "edi_private.h"
|
||||||
|
|
||||||
|
static Elm_Naviframe_Item *_edi_settings_display, *_edi_settings_behaviour;
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_settings_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
evas_object_del(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_settings_category_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Elm_Naviframe_Item *item;
|
||||||
|
|
||||||
|
item = (Elm_Naviframe_Item *)data;
|
||||||
|
elm_naviframe_item_promote(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_edi_settings_panel_create(Evas_Object *parent, const char *title)
|
||||||
|
{
|
||||||
|
Evas_Object *box, *frame;
|
||||||
|
|
||||||
|
box = elm_box_add(parent);
|
||||||
|
elm_box_horizontal_set(box, EINA_FALSE);
|
||||||
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_show(box);
|
||||||
|
|
||||||
|
frame = elm_frame_add(parent);
|
||||||
|
elm_object_part_text_set(frame, "default", title);
|
||||||
|
elm_object_part_content_set(frame, "default", box);
|
||||||
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_settings_display_fontsize_cb(void *data EINA_UNUSED, Evas_Object *obj,
|
||||||
|
void *event EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *spinner;
|
||||||
|
|
||||||
|
spinner = (Evas_Object *)obj;
|
||||||
|
_edi_cfg->font.size = (int) elm_spinner_value_get(spinner);
|
||||||
|
_edi_config_save();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_edi_settings_display_create(Evas_Object *parent)
|
||||||
|
{
|
||||||
|
Evas_Object *box, *hbox, *frame, *label, *spinner;
|
||||||
|
|
||||||
|
frame = _edi_settings_panel_create(parent, "Display");
|
||||||
|
box = elm_object_part_content_get(frame, "default");
|
||||||
|
|
||||||
|
hbox = elm_box_add(parent);
|
||||||
|
elm_box_horizontal_set(hbox, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_box_pack_end(box, hbox);
|
||||||
|
evas_object_show(hbox);
|
||||||
|
|
||||||
|
label = elm_label_add(hbox);
|
||||||
|
elm_object_text_set(label, "Font size");
|
||||||
|
evas_object_size_hint_align_set(label, 0.0, 0.5);
|
||||||
|
elm_box_pack_end(hbox, label);
|
||||||
|
evas_object_show(label);
|
||||||
|
|
||||||
|
spinner = elm_spinner_add(hbox);
|
||||||
|
elm_spinner_value_set(spinner, _edi_cfg->font.size);
|
||||||
|
elm_spinner_editable_set(spinner, EINA_TRUE);
|
||||||
|
elm_spinner_label_format_set(spinner, "%1.0fpt");
|
||||||
|
elm_spinner_step_set(spinner, 1);
|
||||||
|
elm_spinner_wrap_set(spinner, EINA_FALSE);
|
||||||
|
elm_spinner_min_max_set(spinner, 8, 48);
|
||||||
|
evas_object_size_hint_align_set(spinner, 0.0, 0.5);
|
||||||
|
evas_object_size_hint_weight_set(spinner, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_smart_callback_add(spinner, "changed",
|
||||||
|
_edi_settings_display_fontsize_cb, NULL);
|
||||||
|
elm_box_pack_end(hbox, spinner);
|
||||||
|
evas_object_show(spinner);
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edi_settings_behaviour_autosave_cb(void *data EINA_UNUSED, Evas_Object *obj,
|
||||||
|
void *event EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *check;
|
||||||
|
|
||||||
|
check = (Evas_Object *)obj;
|
||||||
|
_edi_cfg->autosave = elm_check_state_get(check);
|
||||||
|
_edi_config_save();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_edi_settings_behaviour_create(Evas_Object *parent)
|
||||||
|
{
|
||||||
|
Evas_Object *box, *frame, *check;
|
||||||
|
|
||||||
|
frame = _edi_settings_panel_create(parent, "Behaviour");
|
||||||
|
box = elm_object_part_content_get(frame, "default");
|
||||||
|
|
||||||
|
check = elm_check_add(box);
|
||||||
|
elm_object_text_set(check, "Auto save files");
|
||||||
|
elm_check_state_set(check, _edi_cfg->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",
|
||||||
|
_edi_settings_behaviour_autosave_cb, NULL);
|
||||||
|
evas_object_show(check);
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
Evas_Object *
|
||||||
|
edi_settings_show(Evas_Object *mainwin)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *table, *naviframe, *tb;
|
||||||
|
Elm_Object_Item *tb_it;
|
||||||
|
|
||||||
|
win = elm_win_add(mainwin, "settings", ELM_WIN_DIALOG_BASIC);
|
||||||
|
if (!win) return NULL;
|
||||||
|
|
||||||
|
elm_win_title_set(win, "Edi Settings");
|
||||||
|
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
|
||||||
|
evas_object_smart_callback_add(win, "delete,request", _edi_settings_exit, win);
|
||||||
|
|
||||||
|
table = elm_table_add(win);
|
||||||
|
evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_win_resize_object_add(win, table);
|
||||||
|
evas_object_show(table);
|
||||||
|
|
||||||
|
tb = elm_toolbar_add(table);
|
||||||
|
elm_toolbar_homogeneous_set(tb, EINA_TRUE);
|
||||||
|
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_SCROLL);
|
||||||
|
elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);
|
||||||
|
elm_toolbar_align_set(tb, 0.0);
|
||||||
|
elm_toolbar_horizontal_set(tb, EINA_FALSE);
|
||||||
|
elm_toolbar_icon_order_lookup_set(tb, ELM_ICON_LOOKUP_FDO_THEME);
|
||||||
|
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(tb, 0.0, EVAS_HINT_FILL);
|
||||||
|
elm_table_pack(table, tb, 0, 0, 1, 5);
|
||||||
|
evas_object_show(tb);
|
||||||
|
|
||||||
|
naviframe = elm_naviframe_add(table);
|
||||||
|
evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_table_pack(table, naviframe, 1, 0, 4, 5);
|
||||||
|
|
||||||
|
_edi_settings_display = elm_naviframe_item_push(naviframe, "", NULL, NULL,
|
||||||
|
_edi_settings_display_create(naviframe), NULL);
|
||||||
|
elm_naviframe_item_title_enabled_set(_edi_settings_display, EINA_FALSE, EINA_FALSE);
|
||||||
|
_edi_settings_behaviour = elm_naviframe_item_push(naviframe, "", NULL, NULL,
|
||||||
|
_edi_settings_behaviour_create(naviframe), NULL);
|
||||||
|
elm_naviframe_item_title_enabled_set(_edi_settings_behaviour, EINA_FALSE, EINA_FALSE);
|
||||||
|
|
||||||
|
tb_it = elm_toolbar_item_append(tb, "preferences-desktop", "Display",
|
||||||
|
_edi_settings_category_cb, _edi_settings_display);
|
||||||
|
tb_it = elm_toolbar_item_append(tb, "preferences-other", "Behaviour",
|
||||||
|
_edi_settings_category_cb, _edi_settings_behaviour);
|
||||||
|
|
||||||
|
evas_object_show(naviframe);
|
||||||
|
evas_object_resize(win, 480 * elm_config_scale_get(), 320 * elm_config_scale_get());
|
||||||
|
evas_object_show(win);
|
||||||
|
|
||||||
|
return win;
|
||||||
|
}
|
Loading…
Reference in New Issue