From 0509eb1841c6f7ddaab9c31b9360becfa350b0f0 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 14 Mar 2015 13:10:38 +0000 Subject: [PATCH] settings: configure the display of whitespace Refresh this when config changes --- src/bin/edi_config.h | 1 + src/bin/editor/edi_editor.c | 5 +++-- src/bin/screens/edi_settings.c | 31 ++++++++++++++++++++++++++----- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/bin/edi_config.h b/src/bin/edi_config.h index 4f60fac..772c305 100644 --- a/src/bin/edi_config.h +++ b/src/bin/edi_config.h @@ -40,6 +40,7 @@ struct _Edi_Config int width, height, bottomtab; double leftsize, bottomsize; Eina_Bool leftopen, bottomopen; + Eina_Bool show_whitespace; } gui; Eina_Bool autosave; diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index 2b29356..a4b236f 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -576,7 +576,8 @@ _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_font_size_set(_edi_cfg->font.size), + elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace)); return ECORE_CALLBACK_RENEW; } @@ -623,7 +624,7 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) 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_show_whitespace_set(EINA_TRUE)); + elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace)); editor = calloc(1, sizeof(*editor)); editor->entry = widget; diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index 0a586aa..84754cc 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -57,24 +57,35 @@ _edi_settings_display_fontsize_cb(void *data EINA_UNUSED, Evas_Object *obj, _edi_config_save(); } +static void +_edi_settings_display_whitespace_cb(void *data EINA_UNUSED, Evas_Object *obj, + void *event EINA_UNUSED) +{ + Evas_Object *check; + + check = (Evas_Object *)obj; + _edi_cfg->gui.show_whitespace = elm_check_state_get(check); + _edi_config_save(); +} + static Evas_Object * _edi_settings_display_create(Evas_Object *parent) { - Evas_Object *box, *hbox, *frame, *label, *spinner; + Evas_Object *box, *hbox, *frame, *label, *spinner, *check; 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); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.5); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, 0.95); 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); + evas_object_size_hint_align_set(label, EVAS_HINT_EXPAND, 0.5); elm_box_pack_end(hbox, label); evas_object_show(label); @@ -85,13 +96,23 @@ _edi_settings_display_create(Evas_Object *parent) 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_size_hint_align_set(spinner, 0.0, 0.95); evas_object_smart_callback_add(spinner, "changed", _edi_settings_display_fontsize_cb, NULL); elm_box_pack_end(hbox, spinner); evas_object_show(spinner); + check = elm_check_add(box); + 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_smart_callback_add(check, "changed", + _edi_settings_display_whitespace_cb, NULL); + evas_object_show(check); + return frame; }