editor: add tabstop configuration

Allow setting of the tabstop. App wide for now.
This commit is contained in:
Andy Williams 2015-03-29 20:40:24 +01:00
parent 531d369c5e
commit efec7c1f37
4 changed files with 49 additions and 10 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}