From f1571f296eed83f26bfff4f73655628ba94e0cb3 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 28 Mar 2015 00:45:20 +0000 Subject: [PATCH] settings: Allow configuration of line width marker --- src/bin/edi_config.c | 6 +++++ src/bin/edi_config.h | 1 + src/bin/editor/edi_editor.c | 3 ++- src/bin/screens/edi_settings.c | 41 ++++++++++++++++++++++++++++++++-- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/bin/edi_config.c b/src/bin/edi_config.c index 125c458..40e85a2 100644 --- a/src/bin/edi_config.c +++ b/src/bin/edi_config.c @@ -188,6 +188,8 @@ _edi_config_init(void) 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.bottomtab, EET_T_INT); + EDI_CONFIG_VAL(D, T, gui.width_marker, EET_T_UINT); + EDI_CONFIG_VAL(D, T, gui.show_whitespace, EET_T_UCHAR); 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); @@ -264,6 +266,10 @@ _edi_config_load(void) _edi_cfg->mime_assocs = NULL; IFCFGEND; + IFCFG(0x000b); + _edi_cfg->gui.width_marker = 80; + 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); diff --git a/src/bin/edi_config.h b/src/bin/edi_config.h index 772c305..55b6fae 100644 --- a/src/bin/edi_config.h +++ b/src/bin/edi_config.h @@ -41,6 +41,7 @@ struct _Edi_Config double leftsize, bottomsize; Eina_Bool leftopen, bottomopen; Eina_Bool show_whitespace; + unsigned int width_marker; } gui; Eina_Bool autosave; diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index 0a8a4a9..a323ee3 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -604,6 +604,7 @@ _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_line_width_marker_set(_edi_cfg->gui.width_marker), elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace)); return ECORE_CALLBACK_RENEW; @@ -650,7 +651,7 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) elm_code_widget_font_size_set(_edi_cfg->font.size), elm_code_widget_editable_set(EINA_TRUE), elm_code_widget_line_numbers_set(EINA_TRUE), - elm_code_widget_line_width_marker_set(80), + elm_code_widget_line_width_marker_set(_edi_cfg->gui.width_marker), elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace)); editor = calloc(1, sizeof(*editor)); diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index b1ee2fe..3ebe4f8 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -68,6 +68,17 @@ _edi_settings_display_whitespace_cb(void *data EINA_UNUSED, Evas_Object *obj, _edi_config_save(); } +static void +_edi_settings_display_widthmarker_cb(void *data EINA_UNUSED, Evas_Object *obj, + void *event EINA_UNUSED) +{ + Evas_Object *spinner; + + spinner = (Evas_Object *)obj; + _edi_cfg->gui.width_marker = (int) elm_spinner_value_get(spinner); + _edi_config_save(); +} + static Evas_Object * _edi_settings_display_create(Evas_Object *parent) { @@ -107,12 +118,38 @@ _edi_settings_display_create(Evas_Object *parent) elm_object_text_set(check, "Display whitespace"); elm_check_state_set(check, _edi_cfg->gui.show_whitespace); elm_box_pack_end(box, check); - evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.5); - evas_object_size_hint_align_set(check, 0.0, 0.05); + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(check, 0.0, 0.5); evas_object_smart_callback_add(check, "changed", _edi_settings_display_whitespace_cb, NULL); evas_object_show(check); + hbox = elm_box_add(parent); + elm_box_horizontal_set(hbox, EINA_TRUE); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.5); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, 0.05); + elm_box_pack_end(box, hbox); + evas_object_show(hbox); + + label = elm_label_add(hbox); + elm_object_text_set(label, "Line width marker"); + evas_object_size_hint_align_set(label, EVAS_HINT_EXPAND, 0.5); + elm_box_pack_end(hbox, label); + evas_object_show(label); + + spinner = elm_spinner_add(hbox); + elm_spinner_value_set(spinner, _edi_cfg->gui.width_marker); + elm_spinner_editable_set(spinner, EINA_TRUE); + elm_spinner_step_set(spinner, 1); + elm_spinner_wrap_set(spinner, EINA_FALSE); + elm_spinner_min_max_set(spinner, 0, 1024); + evas_object_size_hint_weight_set(spinner, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(spinner, 0.0, 0.95); + evas_object_smart_callback_add(spinner, "changed", + _edi_settings_display_widthmarker_cb, NULL); + elm_box_pack_end(hbox, spinner); + evas_object_show(spinner); + return frame; }