Merge branch 'master' into elm_code

Conflicts:
	elm_code/src/lib/elm_code_diff_widget.c
This commit is contained in:
Andy Williams 2015-02-28 15:31:57 +00:00
commit 3800160732
6 changed files with 71 additions and 17 deletions

View File

@ -69,9 +69,9 @@ _elm_code_test_welcome_setup(Evas_Object *parent)
Elm_Code_Widget *widget;
code = elm_code_create();
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent);
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_code_set(code),
elm_code_widget_font_size_set(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));
@ -95,9 +95,9 @@ _elm_code_test_editor_setup(Evas_Object *parent)
Elm_Code_Widget *widget;
code = elm_code_create();
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent);
widget = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_code_widget_code_set(code));
eo_do(widget,
elm_code_widget_code_set(code),
elm_code_widget_font_size_set(14),
elm_code_widget_editable_set(EINA_TRUE),
elm_code_widget_show_whitespace_set(EINA_TRUE),
@ -127,9 +127,8 @@ _elm_code_test_diff_inline_setup(Evas_Object *parent)
code = elm_code_create();
elm_code_file_open(code, path);
diff = eo_add(ELM_CODE_WIDGET_CLASS, parent);
eo_do(diff,
elm_code_widget_code_set(code));
diff = eo_add(ELM_CODE_WIDGET_CLASS, parent,
elm_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);

View File

@ -94,10 +94,9 @@ elm_code_diff_widget_add(Evas_Object *parent, Elm_Code *code)
// left side of diff
wcode1 = elm_code_create();
widget_left = eo_add(ELM_CODE_WIDGET_CLASS, parent);
eo_do(widget_left,
elm_code_widget_code_set(wcode1));
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));
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);
@ -107,10 +106,9 @@ elm_code_diff_widget_add(Evas_Object *parent, Elm_Code *code)
// right side of diff
wcode2 = elm_code_create();
widget_right = eo_add(ELM_CODE_WIDGET_CLASS, parent);
eo_do(widget_right,
elm_code_widget_code_set(wcode2));
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));
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);

View File

@ -32,9 +32,15 @@ Eina_Unicode status_icons[] = {
0
};
#define EO_CONSTRUCTOR_CHECK_RETURN(obj) \
if (eo_do(obj, eo_finalized_get())) \
{ \
ERR("This function is only allowed during construction."); \
return; \
}
EOLIAN static void
_elm_code_widget_eo_base_constructor(Eo *obj, Elm_Code_Widget_Data *pd EINA_UNUSED)
_elm_code_widget_eo_base_constructor(Eo *obj, Elm_Code_Widget_Data *pd)
{
eo_do_super(obj, ELM_CODE_WIDGET_CLASS, eo_constructor());
@ -42,6 +48,18 @@ _elm_code_widget_eo_base_constructor(Eo *obj, Elm_Code_Widget_Data *pd EINA_UNUS
pd->cursor_col = 1;
}
EOLIAN static Eo *
_elm_code_widget_eo_base_finalize(Eo *obj, Elm_Code_Widget_Data *pd)
{
eo_do_super(obj, ELM_CODE_WIDGET_CLASS, eo_finalize());
if (pd->code)
return obj;
ERR("Elm_Code_Widget cannot finalize without calling elm_code_widget_code_set.");
return NULL;
}
EOLIAN static void
_elm_code_widget_class_constructor(Eo_Class *klass EINA_UNUSED)
{
@ -723,8 +741,10 @@ _elm_code_widget_font_size_get(Eo *obj EINA_UNUSED, Elm_Code_Widget_Data *pd)
}
EOLIAN static void
_elm_code_widget_code_set(Eo *obj, Elm_Code_Widget_Data *pd EINA_UNUSED, Elm_Code *code)
_elm_code_widget_code_set(Eo *obj, Elm_Code_Widget_Data *pd, Elm_Code *code)
{
EO_CONSTRUCTOR_CHECK_RETURN(obj);
pd->code = code;
code->widgets = eina_list_append(code->widgets, obj);

View File

@ -5,7 +5,9 @@ class Elm_Code_Widget (Elm_Layout, Elm_Interface_Atspi_Text)
code {
set {
/*@
Set the underlying code object that this widget renders
Set the underlying code object that this widget renders.
This can only be set during construction, once the widget is created the
backing code object cannot be changed.
@ingroup Data */
}
@ -169,6 +171,7 @@ class Elm_Code_Widget (Elm_Layout, Elm_Interface_Atspi_Text)
implements {
class.constructor;
Eo.Base.constructor;
Eo.Base.finalize;
Evas.Object_Smart.add;
Elm_Widget.focus_next_manager_is;
Elm_Widget.focus_direction_manager_is;

View File

@ -6,7 +6,7 @@
START_TEST (elm_code_create_test)
{
char *path = "elm_code/tests/testfile.txt";
char *path = "elm_code/src/tests/testfile.txt";
Elm_Code *code;
code = elm_code_create();

View File

@ -41,8 +41,42 @@ START_TEST (elm_code_widget_token_render_simple_test)
}
END_TEST
START_TEST (elm_code_widget_construct)
{
Elm_Code *code;
Elm_Code_Widget *widget, *win;
elm_init(1, NULL);
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));
ck_assert(!!widget);
elm_code_free(code);
elm_shutdown();
}
END_TEST
START_TEST (elm_code_widget_construct_nocode)
{
Elm_Code_Widget *widget, *win;
elm_init(1, NULL);
win = elm_win_add(NULL, "entry", ELM_WIN_BASIC);
widget = eo_add(ELM_CODE_WIDGET_CLASS, win);
ck_assert(!widget);
elm_shutdown();
}
END_TEST
void elm_code_test_widget(TCase *tc)
{
tcase_add_test(tc, elm_code_widget_token_render_simple_test);
tcase_add_test(tc, elm_code_widget_construct);
tcase_add_test(tc, elm_code_widget_construct_nocode);
}