elm_code: add legacy API.

Refactor eo API in line with elm_obj_* elsewhere
This commit is contained in:
Andy Williams 2015-06-02 08:22:36 +01:00
parent 72c3cc924a
commit ac21aac0e1
10 changed files with 85 additions and 65 deletions

View File

@ -69,9 +69,9 @@ _elm_code_test_welcome_setup(Evas_Object *parent)
code = elm_code_create();
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
elm_obj_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_set(NULL, 12),
elm_obj_code_widget_font_set(NULL, 12),
eo_event_callback_add(&ELM_CODE_EVENT_LINE_LOAD_DONE, _elm_code_test_line_done_cb, NULL);
eo_event_callback_add(ELM_CODE_WIDGET_EVENT_LINE_CLICKED, _elm_code_test_line_clicked_cb, code));
@ -99,12 +99,12 @@ _elm_code_test_editor_setup(Evas_Object *parent)
code = elm_code_create();
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
elm_obj_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_set(NULL, 14),
elm_code_widget_editable_set(EINA_TRUE),
elm_code_widget_show_whitespace_set(EINA_TRUE),
elm_code_widget_line_numbers_set(EINA_TRUE));
elm_obj_code_widget_font_set(NULL, 14),
elm_obj_code_widget_editable_set(EINA_TRUE),
elm_obj_code_widget_show_whitespace_set(EINA_TRUE),
elm_obj_code_widget_line_numbers_set(EINA_TRUE));
_append_line(code->file, "Edit me :)");
_append_line(code->file, "");
@ -128,10 +128,10 @@ _elm_code_test_mirror_setup(Elm_Code *code, char *font_name, Evas_Object *parent
Elm_Code_Widget *widget;
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
elm_obj_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_font_set(font_name, 11),
elm_code_widget_line_numbers_set(EINA_TRUE));
elm_obj_code_widget_font_set(font_name, 11),
elm_obj_code_widget_line_numbers_set(EINA_TRUE));
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -153,7 +153,7 @@ _elm_code_test_diff_inline_setup(Evas_Object *parent)
elm_code_file_open(code, path);
diff = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
elm_obj_code_widget_code_set(code));
evas_object_size_hint_weight_set(diff, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(diff, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -209,7 +209,7 @@ _elm_code_test_welcome_mirror_cb(void *data, Evas_Object *obj EINA_UNUSED, void
widget = _elm_code_test_editor_setup(screen);
eo_do(widget,
code = elm_code_widget_code_get());
code = elm_obj_code_widget_code_get());
elm_box_pack_end(screen, widget);
elm_box_pack_end(screen, _elm_code_test_mirror_setup(code, "Mono:style=Oblique", screen));

View File

@ -39,6 +39,7 @@
#include "elm_code_file.h"
#include "elm_code_parse.h"
#include "widget/elm_code_widget.eo.h"
#include "widget/elm_code_widget_legacy.h"
#include "widget/elm_code_widget_selection.h"
#include "elm_code_diff_widget.h"

View File

@ -24,6 +24,7 @@ elm_code_text.h \
elm_code_file.h \
elm_code_parse.h \
widget/elm_code_widget.eo.h \
widget/elm_code_widget.eo.legacy.h \
widget/elm_code_widget_selection.h \
elm_code_diff_widget.h \
Elm_Code.h
@ -51,10 +52,12 @@ widget/elm_code_widget.eo
elm_code_eolian_c = $(elm_code_eolian_files:%.eo=%.eo.c)
elm_code_eolian_h = $(elm_code_eolian_files:%.eo=%.eo.h)
elm_code_eolian_legacy_h = $(elm_code_eolian_files:%.eo=%.eo.legacy.h)
BUILT_SOURCES = \
$(elm_code_eolian_c) \
$(elm_code_eolian_h)
$(elm_code_eolian_h) \
$(elm_code_eolian_legacy_h)
elmcodeeolianfilesdir = $(datadir)/eolian/include/elm_code-@VMAJ@
elmcodeeolianfiles_DATA = $(elm_code_eolian_files)

View File

@ -96,7 +96,7 @@ elm_code_diff_widget_add(Evas_Object *parent, Elm_Code *code)
wcode1 = elm_code_create();
elm_code_parser_standard_add(wcode1, ELM_CODE_PARSER_STANDARD_DIFF);
widget_left = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(wcode1));
elm_obj_code_widget_code_set(wcode1));
evas_object_size_hint_weight_set(widget_left, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget_left, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -108,7 +108,7 @@ elm_code_diff_widget_add(Evas_Object *parent, Elm_Code *code)
wcode2 = elm_code_create();
elm_code_parser_standard_add(wcode2, ELM_CODE_PARSER_STANDARD_DIFF);
widget_right = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(wcode2));
elm_obj_code_widget_code_set(wcode2));
evas_object_size_hint_weight_set(widget_right, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget_right, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -126,8 +126,8 @@ elm_code_diff_widget_font_set(Evas_Object *widget, const char *name, int size)
Elm_Code_Widget *child;
child = (Elm_Code_Widget *) evas_object_data_get(widget, _ELM_CODE_DIFF_WIDGET_LEFT);
eo_do(child, elm_code_widget_font_set(name, size));
eo_do(child, elm_obj_code_widget_font_set(name, size));
child = (Elm_Code_Widget *) evas_object_data_get(widget, _ELM_CODE_DIFF_WIDGET_RIGHT);
eo_do(child, elm_code_widget_font_set(name, size));
eo_do(child, elm_obj_code_widget_font_set(name, size));
}

View File

@ -6,6 +6,8 @@
#include "elm_code_private.h"
#include "elm_code_widget_private.h"
#define MY_CLASS ELM_CODE_WIDGET_CLASS
typedef enum {
ELM_CODE_WIDGET_COLOR_GUTTER_BG = ELM_CODE_TOKEN_TYPE_COUNT,
ELM_CODE_WIDGET_COLOR_GUTTER_FG,
@ -45,6 +47,15 @@ Eina_Unicode status_icons[] = {
} \
} while (0)
EAPI Evas_Object *
elm_code_widget_add(Evas_Object *parent, Elm_Code *code)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
Evas_Object *obj = eo_add(MY_CLASS, parent,
elm_obj_code_widget_code_set(code));
return obj;
}
EOLIAN static Eo *
_elm_code_widget_eo_base_constructor(Eo *obj, Elm_Code_Widget_Data *pd)
{
@ -101,7 +112,7 @@ _elm_code_widget_resize(Elm_Code_Widget *widget)
Elm_Code_Widget_Data *pd;
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
if (!pd->code)
return;
@ -172,7 +183,7 @@ _elm_code_widget_fill_line_tokens(Elm_Code_Widget *widget, Evas_Textgrid_Cell *c
unsigned int token_start_col, token_end_col;
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
eo_do(widget, offset = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, offset = elm_obj_code_widget_text_left_gutter_width_get());
start = offset;
length = elm_code_line_text_column_width(line, pd->tabstop) + offset;
@ -205,7 +216,7 @@ _elm_code_widget_fill_gutter(Elm_Code_Widget *widget, Evas_Textgrid_Cell *cells,
Elm_Code_Widget_Data *pd;
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
evas_object_textgrid_size_get(pd->grid, &w, NULL);
@ -320,7 +331,7 @@ _elm_code_widget_fill_line(Elm_Code_Widget *widget, Elm_Code_Line *line)
Elm_Code_Widget_Data *pd;
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
evas_object_textgrid_size_get(pd->grid, &w, NULL);
cells = evas_object_textgrid_cellrow_get(pd->grid, line->number - 1);
@ -373,7 +384,7 @@ _elm_code_widget_empty_line(Elm_Code_Widget *widget, unsigned int number)
Elm_Code_Widget_Data *pd;
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
evas_object_textgrid_size_get(pd->grid, &w, NULL);
cells = evas_object_textgrid_cellrow_get(pd->grid, number - 1);
@ -424,7 +435,7 @@ _elm_code_widget_line_cb(void *data, Eo *obj EINA_UNUSED,
line = (Elm_Code_Line *)event_info;
widget = (Elm_Code_Widget *)data;
eo_do(widget, visible = elm_code_widget_line_visible_get(line));
eo_do(widget, visible = elm_obj_code_widget_line_visible_get(line));
if (!visible)
return EO_CALLBACK_CONTINUE;
@ -534,7 +545,7 @@ _elm_code_widget_cursor_ensure_visible(Elm_Code_Widget *widget)
elm_scroller_region_get(pd->scroller, &viewx, &viewy, &vieww, &viewh);
evas_object_textgrid_cell_size_get(pd->grid, &cellw, &cellh);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
curx = (pd->cursor_col + gutter - 1) * cellw;
cury = (pd->cursor_line - 1) * cellh;
@ -588,7 +599,7 @@ _elm_code_widget_position_at_coordinates_get(Elm_Code_Widget *widget, Elm_Code_W
y = y + sy - oy;
evas_object_textgrid_cell_size_get(pd->grid, &cw, &ch);
eo_do(widget, gutter = elm_code_widget_text_left_gutter_width_get());
eo_do(widget, gutter = elm_obj_code_widget_text_left_gutter_width_get());
number = ((double) y / ch) + 1;
if (col)
*col = ((double) x / cw) - gutter + 1;
@ -866,7 +877,7 @@ _elm_code_widget_cursor_move_page_height_get(Elm_Code_Widget *widget)
{
unsigned int lines;
eo_do(widget, lines = elm_code_widget_lines_visible_get());
eo_do(widget, lines = elm_obj_code_widget_lines_visible_get());
return lines * 0.85;
}
@ -949,8 +960,8 @@ _elm_code_widget_text_at_cursor_insert(Elm_Code_Widget *widget, const char *text
_elm_code_widget_delete_selection(widget);
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
line = elm_code_file_line_get(code->file, row);
position = elm_code_line_text_position_for_column_get(line, col - 1, pd->tabstop);
@ -959,7 +970,7 @@ _elm_code_widget_text_at_cursor_insert(Elm_Code_Widget *widget, const char *text
elm_code_line_text_column_width_to_position(line, position, pd->tabstop);
eo_do(widget,
elm_code_widget_cursor_position_set(col + col_width, row),
elm_obj_code_widget_cursor_position_set(col + col_width, row),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
@ -975,15 +986,15 @@ _elm_code_widget_newline(Elm_Code_Widget *widget)
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
_elm_code_widget_delete_selection(widget);
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
line = elm_code_file_line_get(code->file, row);
position = elm_code_line_text_position_for_column_get(line, col - 1, pd->tabstop);
elm_code_line_split_at(line, position);
eo_do(widget,
elm_code_widget_cursor_position_set(1, row + 1),
elm_obj_code_widget_cursor_position_set(1, row + 1),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}
@ -1001,8 +1012,8 @@ _elm_code_widget_backspaceline(Elm_Code_Widget *widget, Eina_Bool nextline)
unsigned int length1, length2;
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
line = elm_code_file_line_get(code->file, row);
if (nextline)
@ -1033,7 +1044,7 @@ _elm_code_widget_backspaceline(Elm_Code_Widget *widget, Eina_Bool nextline)
position = elm_code_line_text_column_width_to_position(line, length1, pd->tabstop);
eo_do(widget,
elm_code_widget_cursor_position_set(position + 1, row - 1));
elm_obj_code_widget_cursor_position_set(position + 1, row - 1));
}
// TODO construct and pass a change object
eo_do(widget, eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
@ -1051,8 +1062,8 @@ _elm_code_widget_backspace(Elm_Code_Widget *widget)
return;
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
if (col <= 1)
@ -1073,7 +1084,7 @@ _elm_code_widget_backspace(Elm_Code_Widget *widget)
elm_code_line_text_remove(line, position, char_width?char_width:1);
eo_do(widget,
elm_code_widget_cursor_position_set(start_col + 1, row));
elm_obj_code_widget_cursor_position_set(start_col + 1, row));
// TODO construct and pass a change object
eo_do(widget, eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
@ -1093,8 +1104,8 @@ _elm_code_widget_delete(Elm_Code_Widget *widget)
return;
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
line = elm_code_file_line_get(code->file, row);
if (col > elm_code_line_text_column_width(line, pd->tabstop))
{
@ -1112,7 +1123,7 @@ _elm_code_widget_delete(Elm_Code_Widget *widget)
elm_code_line_text_remove(line, position, char_width?char_width:1);
eo_do(widget,
elm_code_widget_cursor_position_set(start_col + 1, row),
elm_obj_code_widget_cursor_position_set(start_col + 1, row),
// TODO construct and pass a change object
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_CHANGED_USER, NULL));
}

View File

@ -1,6 +1,7 @@
class Elm_Code_Widget (Elm.Layout, Elm_Interface_Atspi_Text)
class Elm.Code_Widget (Elm.Layout, Elm_Interface_Atspi_Text)
{
eo_prefix: elm_code_widget;
eo_prefix: elm_obj_code_widget;
legacy_prefix: elm_code_widget;
methods {
@property code {
set {

View File

@ -0,0 +1,13 @@
/**
* @brief Add a new elm_code widget to the parent
*
* @param parent The parent object
* @return The new object or NULL if it cannot be created
*
* @see elm_code_widget_code_set
*
* @ingroup Data
*/
EAPI Evas_Object *elm_code_widget_add(Evas_Object *parent, Elm_Code *code);
#include "elm_code_widget.eo.legacy.h"

View File

@ -62,7 +62,7 @@ elm_code_widget_selection_start(Evas_Object *widget,
pd->selection->start_col = col;
eo_do(widget,
eo_event_callback_call(ELM_CODE_WIDGET_EVENT_SELECTION_CHANGED, widget),
elm_code_widget_cursor_position_set(col, line));
elm_obj_code_widget_cursor_position_set(col, line));
}
EAPI void
@ -311,7 +311,7 @@ _selection_paste_single(Elm_Code_Widget *widget, Elm_Code_Widget_Data *pd, Elm_C
newcol = elm_code_line_text_column_width_to_position(line, position + len, pd->tabstop);
eo_do(widget,
elm_code_widget_cursor_position_set(newcol + 1, row));
elm_obj_code_widget_cursor_position_set(newcol + 1, row));
}
static void
@ -364,8 +364,8 @@ _selection_paste_cb(void *data, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data
return EINA_TRUE;
eo_do(widget,
code = elm_code_widget_code_get(),
elm_code_widget_cursor_position_get(&col, &row));
code = elm_obj_code_widget_code_get(),
elm_obj_code_widget_cursor_position_get(&col, &row));
if (elm_code_text_newlinenpos(ev->data, ev->len, NULL) == ELM_CODE_TEXT_NOT_FOUND)
_selection_paste_single(widget, pd, code, col, row, ev->data, ev->len - 1);

View File

@ -28,8 +28,7 @@ START_TEST (elm_code_widget_token_render_simple_test)
code = elm_code_create();
win = elm_win_add(NULL, "code", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
file = code->file;
elm_code_file_line_append(file, "some \"test content\", 45", 23, NULL);
@ -62,8 +61,7 @@ START_TEST (elm_code_widget_construct)
code = elm_code_create();
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
ck_assert(!!widget);
elm_code_free(code);

View File

@ -19,8 +19,7 @@ START_TEST (elm_code_test_widget_selection_set)
elm_code_file_line_append(file, "test", 4, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
elm_code_widget_selection_start(widget, 1, 2);
elm_code_widget_selection_end(widget, 1, 3);
@ -45,8 +44,7 @@ START_TEST (elm_code_test_widget_selection_text_get)
elm_code_file_line_append(file, "test", 4, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
ck_assert_str_eq("", elm_code_widget_selection_text_get(widget));
@ -80,8 +78,7 @@ START_TEST (elm_code_test_widget_selection_text_get_twoline)
elm_code_file_line_append(file, "test", 4, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
elm_code_widget_selection_start(widget, 1, 3);
elm_code_widget_selection_end(widget, 2, 2);
@ -111,8 +108,7 @@ START_TEST (elm_code_test_widget_selection_text_get_multiline)
elm_code_file_line_append(file, "test", 4, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
elm_code_widget_selection_start(widget, 1, 3);
elm_code_widget_selection_end(widget, 3, 2);
@ -141,8 +137,7 @@ START_TEST (elm_code_test_widget_selection_delete)
elm_code_file_line_append(file, "text", 4, NULL);
win = elm_win_add(NULL, "code", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
line = elm_code_file_line_get(file, 1);
text = elm_code_line_text_get(line, NULL);
ck_assert_str_eq("text", text);
@ -176,8 +171,7 @@ START_TEST (elm_code_test_widget_selection_delete_twoline)
elm_code_file_line_append(file, "TEXT", 4, NULL);
win = elm_win_add(NULL, "code", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
line = elm_code_file_line_get(file, 1);
text = elm_code_line_text_get(line, NULL);
ck_assert_str_eq("text", text);
@ -214,8 +208,7 @@ START_TEST (elm_code_test_widget_selection_delete_multiline)
elm_code_file_line_append(file, "TEXT", 4, NULL);
win = elm_win_add(NULL, "code", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win,
elm_code_widget_code_set(code));
widget = elm_code_widget_add(win, code);
line = elm_code_file_line_get(file, 1);
text = elm_code_line_text_get(line, NULL);
ck_assert_str_eq("text", text);