From efec7c1f3726c42f0ef28d11432d41b4869d451d Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sun, 29 Mar 2015 20:40:24 +0100 Subject: [PATCH] editor: add tabstop configuration Allow setting of the tabstop. App wide for now. --- src/bin/edi_config.c | 5 +++- src/bin/edi_config.h | 2 +- src/bin/editor/edi_editor.c | 9 ++++--- src/bin/screens/edi_settings.c | 43 +++++++++++++++++++++++++++++++--- 4 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/bin/edi_config.c b/src/bin/edi_config.c index 40e85a2..3049e8a 100644 --- a/src/bin/edi_config.c +++ b/src/bin/edi_config.c @@ -188,8 +188,9 @@ _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, 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); @@ -268,6 +269,7 @@ _edi_config_load(void) IFCFG(0x000b); _edi_cfg->gui.width_marker = 80; + _edi_cfg->gui.tabstop = 8; IFCFGEND; /* limit config values so they are sane */ @@ -276,6 +278,7 @@ _edi_config_load(void) 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; diff --git a/src/bin/edi_config.h b/src/bin/edi_config.h index 55b6fae..041f296 100644 --- a/src/bin/edi_config.h +++ b/src/bin/edi_config.h @@ -41,7 +41,7 @@ struct _Edi_Config double leftsize, bottomsize; Eina_Bool leftopen, bottomopen; Eina_Bool show_whitespace; - unsigned int width_marker; + unsigned int width_marker, tabstop; } gui; Eina_Bool autosave; diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index a323ee3..aacd289 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -604,8 +604,9 @@ _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_show_whitespace_set(_edi_cfg->gui.show_whitespace)); + elm_code_widget_tabstop_set(_edi_cfg->gui.tabstop)); return ECORE_CALLBACK_RENEW; } @@ -648,11 +649,9 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) widget = eo_add(ELM_CODE_WIDGET_CLASS, vbox, elm_code_widget_code_set(code)); eo_do(widget, - 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(_edi_cfg->gui.width_marker), - elm_code_widget_show_whitespace_set(_edi_cfg->gui.show_whitespace)); + elm_code_widget_line_numbers_set(EINA_TRUE)); + _edi_editor_config_changed(widget, 0, NULL); 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 3ebe4f8..8ead3f6 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -79,6 +79,17 @@ _edi_settings_display_widthmarker_cb(void *data EINA_UNUSED, Evas_Object *obj, _edi_config_save(); } +static void +_edi_settings_display_tabstop_cb(void *data EINA_UNUSED, Evas_Object *obj, + void *event EINA_UNUSED) +{ + Evas_Object *spinner; + + spinner = (Evas_Object *)obj; + _edi_cfg->gui.tabstop = (int) elm_spinner_value_get(spinner); + _edi_config_save(); +} + static Evas_Object * _edi_settings_display_create(Evas_Object *parent) { @@ -124,10 +135,10 @@ _edi_settings_display_create(Evas_Object *parent) _edi_settings_display_whitespace_cb, NULL); evas_object_show(check); - hbox = elm_box_add(parent); + hbox = elm_box_add(box); 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); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, 0.5); elm_box_pack_end(box, hbox); evas_object_show(hbox); @@ -150,6 +161,32 @@ _edi_settings_display_create(Evas_Object *parent) elm_box_pack_end(hbox, spinner); evas_object_show(spinner); + 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, "Tabstop"); + 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.tabstop); + 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, 1, 32); + 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_tabstop_cb, NULL); + elm_box_pack_end(hbox, spinner); + evas_object_show(spinner); + return frame; }