elm_code: Update style and alignment of gutter

This commit is contained in:
Andy Williams 2015-01-29 14:05:20 +00:00
parent 4686fd172c
commit 1995b167e5
4 changed files with 25 additions and 17 deletions

View File

@ -63,7 +63,6 @@ _elm_code_test_welcome_setup(Evas_Object *parent)
elm_code_file_line_token_add(code->file, 1, 14, 21, ELM_CODE_TOKEN_TYPE_COMMENT); elm_code_file_line_token_add(code->file, 1, 14, 21, ELM_CODE_TOKEN_TYPE_COMMENT);
_append_line(code->file, ""); _append_line(code->file, "");
_append_line(code->file, "This is a demo of elm_code's capabilities."); _append_line(code->file, "This is a demo of elm_code's capabilities.");
_append_line(code->file, "*** Currently experimental ***"); _append_line(code->file, "*** Currently experimental ***");
elm_code_file_line_status_set(code->file, 4, ELM_CODE_STATUS_TYPE_ERROR); elm_code_file_line_status_set(code->file, 4, ELM_CODE_STATUS_TYPE_ERROR);

View File

@ -26,12 +26,10 @@ typedef enum {
ELM_CODE_TOKEN_TYPE_DEFAULT = ELM_CODE_STATUS_TYPE_COUNT, ELM_CODE_TOKEN_TYPE_DEFAULT = ELM_CODE_STATUS_TYPE_COUNT,
ELM_CODE_TOKEN_TYPE_COMMENT, ELM_CODE_TOKEN_TYPE_COMMENT,
ELM_CODE_TOKEN_TYPE_ADDED, ELM_CODE_TOKEN_TYPE_ADDED,
ELM_CODE_TOKEN_TYPE_REMOVED, ELM_CODE_TOKEN_TYPE_REMOVED,
ELM_CODE_TOKEN_TYPE_CHANGED, ELM_CODE_TOKEN_TYPE_CHANGED,
ELM_CODE_TOKEN_TYPE_CURSOR, // a pseudo type used for styling but may not be set on a cell
ELM_CODE_TOKEN_TYPE_COUNT ELM_CODE_TOKEN_TYPE_COUNT
} Elm_Code_Token_Type; } Elm_Code_Token_Type;

View File

@ -5,6 +5,14 @@
#include <Elm_Code.h> #include <Elm_Code.h>
#include "elm_code_private.h" #include "elm_code_private.h"
typedef enum {
ELM_CODE_WIDGET_COLOR_GUTTER_BG = ELM_CODE_TOKEN_TYPE_COUNT,
ELM_CODE_WIDGET_COLOR_GUTTER_FG,
ELM_CODE_WIDGET_COLOR_CURSOR,
ELM_CODE_WIDGET_COLOR_COUNT
} Elm_Code_Widget_Colors;
Eina_Unicode status_icons[] = { Eina_Unicode status_icons[] = {
' ', ' ',
'!', '!',
@ -146,22 +154,21 @@ _elm_code_widget_fill_line(Elm_Code_Widget *widget, Evas_Textgrid_Cell *cells, E
length = line->length; length = line->length;
evas_object_textgrid_size_get(pd->grid, &w, NULL); evas_object_textgrid_size_get(pd->grid, &w, NULL);
cells[0].codepoint = status_icons[line->status]; cells[gutter-1].codepoint = status_icons[line->status];
cells[0].bold = 1; cells[gutter-1].bold = 1;
cells[0].fg = ELM_CODE_TOKEN_TYPE_DEFAULT; cells[gutter-1].fg = ELM_CODE_WIDGET_COLOR_GUTTER_FG;
cells[0].bg = line->status; cells[gutter-1].bg = (line->status == ELM_CODE_STATUS_TYPE_DEFAULT) ? ELM_CODE_WIDGET_COLOR_GUTTER_BG : line->status;
if (pd->show_line_numbers) if (pd->show_line_numbers)
{ {
number = malloc(sizeof(char) * gutter); number = malloc(sizeof(char) * gutter);
snprintf(number, gutter, "%d", line->number); snprintf(number, gutter, "%*d", gutter - 1, line->number);
for (g = 1; g < gutter; g++) for (g = 0; g < gutter - 1; g++)
{ {
// TODO style this properly cells[g].codepoint = *(number + g);
cells[g].codepoint = (g == gutter - 1) ? '|' : *(number + g - 1); cells[g].fg = ELM_CODE_WIDGET_COLOR_GUTTER_FG;
cells[g].fg = ELM_CODE_TOKEN_TYPE_DEFAULT; cells[g].bg = ELM_CODE_WIDGET_COLOR_GUTTER_BG;
cells[g].bg = ELM_CODE_STATUS_TYPE_DEFAULT;
} }
free(number); free(number);
} }
@ -187,7 +194,7 @@ _elm_code_widget_fill_line(Elm_Code_Widget *widget, Evas_Textgrid_Cell *cells, E
if (pd->editable && pd->focussed && pd->cursor_line == line->number) if (pd->editable && pd->focussed && pd->cursor_line == line->number)
{ {
if (pd->cursor_col + gutter - 1 < (unsigned int) w) if (pd->cursor_col + gutter - 1 < (unsigned int) w)
cells[pd->cursor_col + gutter - 1].bg = ELM_CODE_TOKEN_TYPE_CURSOR; cells[pd->cursor_col + gutter - 1].bg = ELM_CODE_WIDGET_COLOR_CURSOR;
} }
evas_object_textgrid_update_add(pd->grid, 0, line->number - 1, w, 1); evas_object_textgrid_update_add(pd->grid, 0, line->number - 1, w, 1);
@ -623,9 +630,13 @@ _elm_code_widget_setup_palette(Evas_Object *o)
evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_TOKEN_TYPE_CHANGED, evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_TOKEN_TYPE_CHANGED,
54, 54, 255, 255); 54, 54, 255, 255);
// the style for a cursor - this is a special token and will be applied to the background // other styles that the widget uses
evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_TOKEN_TYPE_CURSOR, evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_WIDGET_COLOR_CURSOR,
205, 205, 54, 255); 205, 205, 54, 255);
evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_WIDGET_COLOR_GUTTER_BG,
75, 75, 75, 255);
evas_object_textgrid_palette_set(o, EVAS_TEXTGRID_PALETTE_STANDARD, ELM_CODE_WIDGET_COLOR_GUTTER_FG,
139, 139, 139, 255);
} }
EOLIAN static void EOLIAN static void

View File

@ -29,7 +29,7 @@ elm_code_widget_text_left_gutter_width_get(Elm_Code_Widget *widget)
pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); pd = eo_data_scope_get(widget, ELM_CODE_WIDGET_CLASS);
if (pd->show_line_numbers) if (pd->show_line_numbers)
width += elm_code_widget_text_line_number_width_get(widget) + 1; width += elm_code_widget_text_line_number_width_get(widget);
return width; return width;
} }