#ifndef ELM_CODE_WIDGET_PRIVATE_H # define ELM_CODE_WIDGET_PRIVATE_H /** * Structure holding the info about a selected region. */ typedef enum { ELM_CODE_WIDGET_SELECTION_KEYBOARD, ELM_CODE_WIDGET_SELECTION_MOUSE, } Elm_Code_Widget_Selection_Type; typedef struct { unsigned int start_line, end_line; unsigned int start_col, end_col; Elm_Code_Widget_Selection_Type type; Eina_Bool in_progress; } Elm_Code_Widget_Selection_Data; typedef struct { Elm_Code *code; Eina_List *grids; unsigned int col_count; Evas_Object *scroller, *gridbox, *background; Evas_Object *expander; const char *font_name; Evas_Font_Size font_size; double gravity_x, gravity_y; unsigned int cursor_line, cursor_col; Evas_Object *cursor_rect; Eina_Bool visible, editable, focused; Eina_Bool show_line_numbers; unsigned int line_width_marker, tabstop; Eina_Bool show_whitespace, tab_inserts_spaces; int alpha; Elm_Code_Widget_Selection_Data *selection; /* Undo stack */ Eina_List *undo_stack; Eina_List *undo_stack_ptr; Evas_Object *hoversel; } Elm_Code_Widget_Data; typedef struct { char *content; unsigned int length; unsigned int start_line, start_col, end_line, end_col; Eina_Bool insert : 1; /**< True if the change is an insertion */ } Elm_Code_Widget_Change_Info; /* Private widget methods */ void _elm_code_widget_cell_size_get(Elm_Code_Widget *widget, Evas_Coord *width, Evas_Coord *height); void _elm_code_widget_text_at_cursor_insert_no_undo(Elm_Code_Widget *widget, const char *text, unsigned int length); void _elm_code_widget_newline(Elm_Code_Widget *widget); void _elm_code_widget_backspace(Elm_Code_Widget *widget); void _elm_code_widget_delete(Elm_Code_Widget *widget); EAPI Elm_Code_Widget_Selection_Data *elm_code_widget_selection_normalized_get(Evas_Object *widget); void _elm_code_widget_selection_delete_no_undo(Elm_Code_Widget *widget); void _elm_code_widget_undo_change_add(Evas_Object *widget, Elm_Code_Widget_Change_Info *info); void _elm_code_widget_change_selection_add(Evas_Object *widget); void _elm_code_widget_selection_in_progress_set(Evas_Object *widget, Eina_Bool state); void _elm_code_widget_selection_type_set(Evas_Object *widget, Elm_Code_Widget_Selection_Type type); #endif