diff --git a/elm_code/lib/elm_code_common.h b/elm_code/lib/elm_code_common.h index ce0993b..5e288bf 100644 --- a/elm_code/lib/elm_code_common.h +++ b/elm_code/lib/elm_code_common.h @@ -3,6 +3,21 @@ #include +typedef enum { + ELM_CODE_STATUS_TYPE_DEFAULT = 0, + ELM_CODE_STATUS_TYPE_ERROR, + + ELM_CODE_STATUS_TYPE_COUNT +} Elm_Code_Status_Type; + + +typedef enum { + ELM_CODE_TOKEN_TYPE_DEFAULT = ELM_CODE_STATUS_TYPE_COUNT, + + ELM_CODE_TOKEN_TYPE_COUNT +} Elm_Code_Token_Type; + + #include "elm_code_file.h" #ifdef __cplusplus diff --git a/elm_code/lib/elm_code_file.c b/elm_code/lib/elm_code_file.c index cd6aa97..b05a8d0 100644 --- a/elm_code/lib/elm_code_file.c +++ b/elm_code/lib/elm_code_file.c @@ -15,6 +15,7 @@ static Elm_Code_Line *_elm_code_blank_create(int line) if (!ecl) return NULL; ecl->number = line; + ecl->status = ELM_CODE_STATUS_TYPE_DEFAULT; return ecl; } @@ -120,12 +121,16 @@ EAPI void elm_code_file_line_append(Elm_Code_File *file, const char *line) _elm_code_file_line_append_data(file, line, strlen(line), row+1); } -EAPI char *elm_code_file_line_content_get(Elm_Code_File *file, int number) +EAPI Elm_Code_Line *elm_code_file_line_get(Elm_Code_File *file, unsigned int number) +{ + return eina_list_nth(file->lines, number - 1); +} + +EAPI char *elm_code_file_line_content_get(Elm_Code_File *file, unsigned int number) { Elm_Code_Line *line; - line = eina_list_nth(file->lines, number - 1); - printf("N %d\n", number); + line = elm_code_file_line_get(file, number); if (!line) return NULL; diff --git a/elm_code/lib/elm_code_file.h b/elm_code/lib/elm_code_file.h index 4f7d095..726684b 100644 --- a/elm_code/lib/elm_code_file.h +++ b/elm_code/lib/elm_code_file.h @@ -3,6 +3,8 @@ #include +#include "elm_code_common.h" + #ifdef __cplusplus extern "C" { #endif @@ -17,6 +19,8 @@ typedef struct _Elm_Code_Line char *content; unsigned int number; + Elm_Code_Status_Type status; + } Elm_Code_Line; typedef struct _Elm_Code_File @@ -64,7 +68,9 @@ EAPI unsigned int elm_code_file_lines_get(Elm_Code_File *file); EAPI void elm_code_file_line_append(Elm_Code_File *file, const char *line); -EAPI char *elm_code_file_line_content_get(Elm_Code_File *file, int line); +EAPI Elm_Code_Line *elm_code_file_line_get(Elm_Code_File *file, unsigned int line); + +EAPI char *elm_code_file_line_content_get(Elm_Code_File *file, unsigned int line); /** * @} diff --git a/elm_code/lib/elm_code_widget.c b/elm_code/lib/elm_code_widget.c index 297cd3d..a0cb66e 100644 --- a/elm_code/lib/elm_code_widget.c +++ b/elm_code/lib/elm_code_widget.c @@ -10,8 +10,9 @@ EAPI void elm_code_widget_fill(Evas_Object *o, Elm_Code *code) { + Elm_Code_Line *line; Evas_Textgrid_Cell *cells; - const char *line, *chr; + const char *content, *chr; unsigned int length; int w, h, cw, ch; unsigned int x, y; @@ -24,17 +25,18 @@ EAPI void elm_code_widget_fill(Evas_Object *o, Elm_Code *code) for (y = 1; y <= elm_code_file_lines_get(code->file); y++) { - line = elm_code_file_line_content_get(code->file, y); - chr = line; + line = elm_code_file_line_get(code->file, y); + content = elm_code_file_line_content_get(code->file, y); + chr = content; cells = evas_object_textgrid_cellrow_get(o, y - 1); - length = strlen(line); + length = strlen(content); for (x = 0; x < (unsigned int) w && x < length; x++) { cells[x].codepoint = *chr; - cells[x].bg = 0; - cells[x].fg = 1; + cells[x].bg = line->status; + cells[x].fg = ELM_CODE_TOKEN_TYPE_DEFAULT; chr++; } @@ -59,9 +61,14 @@ EAPI Evas_Object *elm_code_widget_add(Evas_Object *parent, Elm_Code *code) evas_object_textgrid_font_set(o, "Mono", 10 * elm_config_scale_get()); - evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, 0, + // setup status colors + evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_STATUS_TYPE_DEFAULT, 54, 54, 54, 255); - evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, 1, + evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_STATUS_TYPE_ERROR, + 205, 54, 54, 255); + + // setup token colors + evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_TOKEN_TYPE_DEFAULT, 205, 205, 205, 255); evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _elm_code_widget_resize_cb, code); diff --git a/src/bin/edi_logpanel.c b/src/bin/edi_logpanel.c index 2a79814..17b8ae8 100644 --- a/src/bin/edi_logpanel.c +++ b/src/bin/edi_logpanel.c @@ -21,7 +21,8 @@ void print_cb(const Eina_Log_Domain *domain, EINA_UNUSED void *data, va_list args) { - unsigned int printed, buffer_len = 512; + Elm_Code_Line *code_line; + unsigned int printed, line_count, buffer_len = 512; char buffer [buffer_len]; printed = snprintf(buffer, buffer_len, "%s:%s:%s (%d): ", @@ -29,12 +30,13 @@ void print_cb(const Eina_Log_Domain *domain, vsnprintf(buffer + printed, buffer_len - printed, fmt, args); elm_code_file_line_append(_elm_code->file, buffer); -/* if (level <= EINA_LOG_LEVEL_ERR) - evas_object_color_set(txt, 255, 63, 63, 255); - else - evas_object_color_set(txt, 255, 255, 255, 255); -*/ + { + line_count = elm_code_file_lines_get(_elm_code->file); + code_line = elm_code_file_line_get(_elm_code->file, line_count); + + code_line->status = ELM_CODE_STATUS_TYPE_ERROR; + } } void edi_logpanel_add(Evas_Object *parent)