syntax: Actually use the elm_code parser api.

Improve the API to allow passing of user data to the calls.
Yes, I forgot about this, it works well so remove the STYLE_SET callback
This commit is contained in:
Andy Williams 2015-02-24 00:32:40 +00:00
commit c98ba7d1e8
8 changed files with 22 additions and 29 deletions

View File

@ -12,8 +12,6 @@
static int _elm_code_init = 0;
int _elm_code_lib_log_dom = -1;
EAPI const Eo_Event_Description ELM_CODE_EVENT_LINE_STYLE_SET =
EO_EVENT_DESCRIPTION("line,style,set", "");
EAPI const Eo_Event_Description ELM_CODE_EVENT_LINE_LOAD_DONE =
EO_EVENT_DESCRIPTION("line,load,done", "");
EAPI const Eo_Event_Description ELM_CODE_EVENT_FILE_LOAD_DONE =

View File

@ -4,9 +4,7 @@
typedef struct _Elm_Code Elm_Code;
typedef struct _Elm_Code_File Elm_Code_File;
/** Event used to notify that a line's style callbacks have completed */
EAPI extern const Eo_Event_Description ELM_CODE_EVENT_LINE_STYLE_SET;
/** Event marking that a single line has loaded and ready to be styled */
/** Event marking that a single line has loaded or changed */
EAPI extern const Eo_Event_Description ELM_CODE_EVENT_LINE_LOAD_DONE;
/** Event that marks a file load has been completed */
EAPI extern const Eo_Event_Description ELM_CODE_EVENT_FILE_LOAD_DONE;

View File

@ -47,9 +47,6 @@ static void _elm_code_file_line_append_data(Elm_Code_File *file, const char *con
{
elm_code_parse_line(file->parent, line);
elm_code_callback_fire(file->parent, &ELM_CODE_EVENT_LINE_LOAD_DONE, line);
// this is called so we can refresh after any styling changes from LOAD_DONE
elm_code_callback_fire(file->parent, &ELM_CODE_EVENT_LINE_STYLE_SET, line);
}
}

View File

@ -13,7 +13,8 @@ EAPI void elm_code_parse_line(Elm_Code *code, Elm_Code_Line *line)
EINA_LIST_FOREACH(code->parsers, item, parser)
{
parser->parse_line(line);
if (parser->parse_line)
parser->parse_line(line, parser->data);
}
}
@ -24,13 +25,14 @@ EAPI void elm_code_parse_file(Elm_Code *code, Elm_Code_File *file)
EINA_LIST_FOREACH(code->parsers, item, parser)
{
parser->parse_file(file);
if (parser->parse_file)
parser->parse_file(file, parser->data);
}
}
EAPI void elm_code_parser_add(Elm_Code *code,
void (*parse_line)(Elm_Code_Line *),
void (*parse_file)(Elm_Code_File *))
void (*parse_line)(Elm_Code_Line *, void *),
void (*parse_file)(Elm_Code_File *, void *), void *data)
{
Elm_Code_Parser *parser;
@ -40,6 +42,7 @@ EAPI void elm_code_parser_add(Elm_Code *code,
parser->parse_line = parse_line;
parser->parse_file = parse_file;
parser->data = data;
code->parsers = eina_list_append(code->parsers, parser);
}

View File

@ -12,9 +12,11 @@ extern "C" {
typedef struct _Elm_Code_Parser
{
void (*parse_line)(Elm_Code_Line *);
void (*parse_line)(Elm_Code_Line *, void *);
void (*parse_file)(Elm_Code_File *);
void (*parse_file)(Elm_Code_File *, void *);
void *data;
} Elm_Code_Parser;
/**
@ -27,8 +29,8 @@ typedef struct _Elm_Code_Parser
*
*/
EAPI void elm_code_parser_add(Elm_Code *code, void (*parse_line)(Elm_Code_Line *),
void (*parse_file)(Elm_Code_File *));
EAPI void elm_code_parser_add(Elm_Code *code, void (*parse_line)(Elm_Code_Line *, void *),
void (*parse_file)(Elm_Code_File *, void *), void *data);
EAPI void elm_code_parse_line(Elm_Code *code, Elm_Code_Line *line);

View File

@ -859,7 +859,7 @@ _elm_code_widget_evas_object_smart_add(Eo *obj, Elm_Code_Widget_Data *pd)
evas_object_smart_callback_add(obj, "unfocused", _elm_code_widget_unfocused_event_cb, obj);
eo_do(obj,
eo_event_callback_add(&ELM_CODE_EVENT_LINE_STYLE_SET, _elm_code_widget_line_cb, obj);
eo_event_callback_add(&ELM_CODE_EVENT_LINE_LOAD_DONE, _elm_code_widget_line_cb, obj);
eo_event_callback_add(&ELM_CODE_EVENT_FILE_LOAD_DONE, _elm_code_widget_file_cb, obj));
_elm_code_widget_font_size_set(obj, pd, 10);

View File

@ -7,12 +7,12 @@
static int line_calls, file_calls;
static void _parser_line_callback(Elm_Code_Line *line EINA_UNUSED)
static void _parser_line_callback(Elm_Code_Line *line EINA_UNUSED, void *data EINA_UNUSED)
{
line_calls++;
}
static void _parser_file_callback(Elm_Code_File *file EINA_UNUSED)
static void _parser_file_callback(Elm_Code_File *file EINA_UNUSED, void *data EINA_UNUSED)
{
file_calls++;
}
@ -28,7 +28,7 @@ START_TEST (elm_code_parse_hook_memory_test)
code = elm_code_create();
file = elm_code_file_new(code);
elm_code_parser_add(code, _parser_line_callback, _parser_file_callback);
elm_code_parser_add(code, _parser_line_callback, _parser_file_callback, NULL);
elm_code_file_line_append(file, "some \"test content\" for parsing", 31, NULL);
ck_assert_int_eq(1, line_calls);
@ -49,7 +49,7 @@ START_TEST (elm_code_parse_hook_file_test)
code = elm_code_create();
elm_code_parser_add(code, _parser_line_callback, _parser_file_callback);
elm_code_parser_add(code, _parser_line_callback, _parser_file_callback, NULL);
file = elm_code_file_open(code, path);
ck_assert_int_eq(4, line_calls);

View File

@ -559,16 +559,13 @@ _unfocused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UN
edi_editor_save(editor);
}
static Eina_Bool
_edi_editor_file_load_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
static void
_edi_editor_parse_file_cb(Elm_Code_File *file EINA_UNUSED, void *data)
{
Edi_Editor *editor;
editor = (Edi_Editor *)data;
_reset_highlight(editor);
return EO_CALLBACK_CONTINUE;
}
Evas_Object *
@ -625,9 +622,7 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item)
*/
evas_object_smart_callback_add(widget, "unfocused", _unfocused_cb, editor);
eo_do(widget,
eo_event_callback_add(&ELM_CODE_EVENT_FILE_LOAD_DONE, _edi_editor_file_load_cb, editor));
elm_code_parser_add(code, NULL, _edi_editor_parse_file_cb, editor);
elm_code_file_open(code, item->path);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);