forked from enlightenment/terminology
options: select default cursor
This commit is contained in:
parent
740e96da66
commit
f03b84b869
|
@ -28,8 +28,8 @@ struct _Config_Color
|
||||||
typedef enum _Cursor_Shape
|
typedef enum _Cursor_Shape
|
||||||
{
|
{
|
||||||
CURSOR_SHAPE_BLOCK = 0,
|
CURSOR_SHAPE_BLOCK = 0,
|
||||||
CURSOR_SHAPE_BAR = 1,
|
CURSOR_SHAPE_UNDERLINE = 1,
|
||||||
CURSOR_SHAPE_UNDERLINE = 2
|
CURSOR_SHAPE_BAR = 2
|
||||||
} Cursor_Shape;
|
} Cursor_Shape;
|
||||||
|
|
||||||
struct _Config
|
struct _Config
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "options_behavior.h"
|
#include "options_behavior.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
typedef struct _Behavior_Ctx {
|
typedef struct _Behavior_Ctx {
|
||||||
Evas_Object *op_w;
|
Evas_Object *op_w;
|
||||||
|
@ -35,7 +36,6 @@ _cb_op_behavior_##_cfg_name(void *data, Evas_Object *obj, \
|
||||||
|
|
||||||
CB(jump_on_change, 0);
|
CB(jump_on_change, 0);
|
||||||
CB(jump_on_keypress, 0);
|
CB(jump_on_keypress, 0);
|
||||||
CB(disable_cursor_blink, 1);
|
|
||||||
CB(disable_visual_bell, 1);
|
CB(disable_visual_bell, 1);
|
||||||
CB(bell_rings, 0);
|
CB(bell_rings, 0);
|
||||||
CB(flicker_on_key, 0);
|
CB(flicker_on_key, 0);
|
||||||
|
@ -182,6 +182,174 @@ _parent_del_cb(void *data,
|
||||||
free(ctx);
|
free(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cursors_changed_cb(void *data, Evas_Object *obj,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Behavior_Ctx *ctx = data;
|
||||||
|
Config *config = ctx->config;
|
||||||
|
int value = elm_radio_value_get(obj) - 1;
|
||||||
|
|
||||||
|
config->disable_cursor_blink = value % 2;
|
||||||
|
config->cursor_shape = value / 2;
|
||||||
|
|
||||||
|
termio_config_update(ctx->term);
|
||||||
|
windows_update();
|
||||||
|
config_save(config, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_add_cursors_option(Evas_Object *bx,
|
||||||
|
Behavior_Ctx *ctx)
|
||||||
|
{
|
||||||
|
Evas_Object *o, *lbl, *rd, *rdg, *layout, *oe;
|
||||||
|
|
||||||
|
o = elm_separator_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_separator_horizontal_set(o, EINA_TRUE);
|
||||||
|
elm_box_pack_end(bx, o);
|
||||||
|
evas_object_show(o);
|
||||||
|
|
||||||
|
lbl = elm_label_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(lbl, 0.0, 0.0);
|
||||||
|
elm_layout_text_set(lbl, NULL, _("Default cursor:"));
|
||||||
|
elm_box_pack_end(bx, lbl);
|
||||||
|
evas_object_show(lbl);
|
||||||
|
|
||||||
|
/* Blinking Block */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
rdg = rd;
|
||||||
|
elm_object_text_set(rd, _("Blinking Block"));
|
||||||
|
elm_radio_state_value_set(rd, 1);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
/* Steady Block */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_object_text_set(rd, _("Steady Block"));
|
||||||
|
elm_radio_state_value_set(rd, 2);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in,noblink", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
/* Blinking Underline */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_object_text_set(rd, _("Blinking Underline"));
|
||||||
|
elm_radio_state_value_set(rd, 3);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor_underline");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
/* Steady Underline */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_object_text_set(rd, _("Steady Underline"));
|
||||||
|
elm_radio_state_value_set(rd, 4);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor_underline");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in,noblink", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
/* Blinking Bar */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_object_text_set(rd, _("Blinking Bar"));
|
||||||
|
elm_radio_state_value_set(rd, 5);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor_bar");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
/* Steady Bar */
|
||||||
|
rd = elm_radio_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_object_text_set(rd, _("Steady Bar"));
|
||||||
|
elm_radio_state_value_set(rd, 6);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
layout = elm_layout_add(rd);
|
||||||
|
oe = elm_layout_edje_get(layout);
|
||||||
|
theme_apply(oe, ctx->config, "terminology/cursor_bar");
|
||||||
|
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_image_resizable_set(layout, EINA_FALSE, EINA_FALSE);
|
||||||
|
elm_object_part_content_set(rd, "icon", layout);
|
||||||
|
elm_box_pack_end(bx, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
edje_object_signal_emit(oe, "focus,out", "terminology");
|
||||||
|
edje_object_signal_emit(oe, "focus,in,noblink", "terminology");
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cursors_changed_cb, ctx);
|
||||||
|
|
||||||
|
o = elm_separator_add(bx);
|
||||||
|
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_separator_horizontal_set(o, EINA_TRUE);
|
||||||
|
elm_box_pack_end(bx, o);
|
||||||
|
evas_object_show(o);
|
||||||
|
|
||||||
|
elm_radio_value_set(rdg,
|
||||||
|
1 + 2 * ctx->config->cursor_shape + (ctx->config->disable_cursor_blink ? 1 : 0));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
options_behavior(Evas_Object *opbox, Evas_Object *term)
|
options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
{
|
{
|
||||||
|
@ -235,8 +403,10 @@ options_behavior(Evas_Object *opbox, Evas_Object *term)
|
||||||
|
|
||||||
CX(_("Scroll to bottom on new content"), jump_on_change, 0);
|
CX(_("Scroll to bottom on new content"), jump_on_change, 0);
|
||||||
CX(_("Scroll to bottom when a key is pressed"), jump_on_keypress, 0);
|
CX(_("Scroll to bottom when a key is pressed"), jump_on_keypress, 0);
|
||||||
|
|
||||||
|
_add_cursors_option(bx, ctx);
|
||||||
|
|
||||||
CX(_("React to key presses"), flicker_on_key, 0);
|
CX(_("React to key presses"), flicker_on_key, 0);
|
||||||
CX(_("Cursor blinking"), disable_cursor_blink, 1);
|
|
||||||
CX(_("Visual Bell"), disable_visual_bell, 1);
|
CX(_("Visual Bell"), disable_visual_bell, 1);
|
||||||
CX(_("Bell rings"), bell_rings, 0);
|
CX(_("Bell rings"), bell_rings, 0);
|
||||||
CX(_("Urgent Bell"), urg_bell, 0);
|
CX(_("Urgent Bell"), urg_bell, 0);
|
||||||
|
|
Loading…
Reference in New Issue