enventor/src/lib/enventor_private.h

286 lines
11 KiB
C

#ifndef __ENVENTOR_PRIVATE_H__
#define __ENVENTOR_PRIVATE_H__
/***
* Compatible ABI for Win32
***/
#ifdef _WIN32
# ifdef EAPI
# undef EAPI
# endif
# ifdef ENVENTOR_WIN32_BUILD_SUPPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI __declspec(dllimport)
# endif
# ifdef EOAPI
# undef EOAPI
# endif
#define EOAPI EAPI
#endif
#include "common.h"
#define QUOT """
#define QUOT_LEN 6
#define QUOT_UTF8 "\""
#define QUOT_UTF8_LEN 1
#define EOL "<br/>"
#define EOL_LEN 5
#define TAB "<tab/>"
#define TAB_LEN 6
#define TAB_SPACE 3
#define REL1_X 0.25f
#define REL1_Y 0.25f
#define REL2_X 0.75f
#define REL2_Y 0.75f
#define VIEW_DATA edj_mgr_view_get(NULL)
#define ATTR_VALUE_MAX_CNT 4
extern const char SIG_CURSOR_LINE_CHANGED[];
extern const char SIG_CURSOR_GROUP_CHANGED[];
extern const char SIG_MAX_LINE_CHANGED[];
extern const char SIG_COMPILE_ERROR[];
extern const char SIG_LIVE_VIEW_LOADED[];
extern const char SIG_LIVE_VIEW_UPDATED[];
extern const char SIG_LIVE_VIEW_CURSOR_MOVED[];
extern const char SIG_LIVE_VIEW_RESIZED[];
extern const char SIG_PROGRAM_RUN[];
extern const char SIG_CTXPOPUP_CHANGED[];
extern const char SIG_CTXPOPUP_DISMISSED[];
extern const char SIG_EDC_MODIFIED[];
extern const char SIG_FOCUSED[];
typedef struct viewer_s view_data;
typedef struct syntax_color_s color_data;
typedef struct parser_s parser_data;
typedef struct attr_value_s attr_value;
typedef struct syntax_helper_s syntax_helper;
typedef struct indent_s indent_data;
typedef struct redoundo_s redoundo_data;
typedef struct editor_s edit_data;
typedef struct state_info_s state_info;
typedef enum attr_value_type
{
ATTR_VALUE_BOOLEAN = 1,
ATTR_VALUE_INTEGER = 2,
ATTR_VALUE_FLOAT = 4,
ATTR_VALUE_CONSTANT = 8,
ATTR_VALUE_PART = 16,
ATTR_VALUE_STATE = 32,
ATTR_VALUE_IMAGE = 64,
ATTR_VALUE_PROGRAM = 128
} attr_value_type;
struct attr_value_s
{
Eina_Array *strs;
int cnt;
float val[ATTR_VALUE_MAX_CNT];
float min;
float max;
attr_value_type type;
const char *prepend_str;
const char *append_str;
Eina_Bool program : 1;
};
struct state_info_s
{
double value;
const char *part;
const char *state;
};
/* auto_comp */
void autocomp_init(void);
void autocomp_term(void);
void autocomp_target_set(edit_data *ed);
void autocomp_enabled_set(Eina_Bool enabled);
Eina_Bool autocomp_enabled_get(void);
Eina_Bool autocomp_event_dispatch(const char *key);
void autocomp_list_show(void);
void autocomp_reset(void);
/* syntax color */
color_data *color_init(Eina_Strbuf *strbuf);
void color_term(color_data *cd);
void color_set(color_data *cd, Enventor_Syntax_Color_Type color_type, const char *val);
const char *color_get(color_data *cd, Enventor_Syntax_Color_Type color_type);
const char *color_cancel(color_data *cd, const char *str, int length, int from_pos, int to_pos, char **from, char **to);
const char *color_apply(color_data *cd, const char *str, int length, char *from, char *to);
Eina_Bool color_ready(color_data *cd);
/*parser */
parser_data *parser_init(void);
void parser_term(parser_data *pd);
Eina_Stringshare *parser_first_group_name_get(parser_data *pd, Evas_Object *entry);
void parser_cur_group_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *state_name, double state_value, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
void parser_cur_state_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *state_name, double state_value, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
Eina_Stringshare *parser_cur_name_fast_get(Evas_Object *entry, const char *scope);
Eina_Bool parser_type_name_compare(parser_data *pd, const char *str);
attr_value *parser_attribute_get(parser_data *pd, const char *text, const char *cur, const char *selected);
void parser_attribute_value_set(attr_value *attr, char *cur);
Eina_Stringshare *parser_paragh_name_get(parser_data *pd, Evas_Object *entry);
char *parser_name_get(parser_data *pd, const char *cur);
void parser_cancel(parser_data *pd);
int parser_line_cnt_get(parser_data *pd EINA_UNUSED, const char *src);
Eina_List *parser_states_filtered_name_get(Eina_List *states);
int parser_end_of_parts_block_pos_get(const Evas_Object *entry, const char *group_name);
Eina_Bool parser_images_pos_get(const Evas_Object *entry, int *ret);
Eina_Bool parser_styles_pos_get(const Evas_Object *entry, int *ret);
const char *parser_colon_pos_get(parser_data *pd EINA_UNUSED, const char *cur);
Eina_Bool parser_state_info_get(Evas_Object *entry, state_info *info);
/* syntax helper */
syntax_helper *syntax_init(void);
void syntax_term(syntax_helper *sh);
color_data *syntax_color_data_get(syntax_helper *sh);
indent_data *syntax_indent_data_get(syntax_helper *sh);
/* indent */
indent_data *indent_init(Eina_Strbuf *strbuf);
void indent_term(indent_data *id);
int indent_space_get(indent_data *id, Evas_Object *entry);
int indent_insert_apply(indent_data *id, Evas_Object *entry, const char *insert, int cur_line);
Eina_Bool indent_delete_apply(indent_data *id, Evas_Object *entry, const char *del, int cur_line);
/* build */
void build_edc(void);
void build_init(void);
void build_term(void);
Eina_Bool build_path_set(Enventor_Path_Type type, const Eina_List *pathes);
Eina_List *build_path_get(Enventor_Path_Type type);
void build_edc_path_set(const char *edc_path);
const char *build_edc_path_get(void);
const char *build_edj_path_get(void);
void build_err_noti_cb_set(void (*cb)(void *data, const char *msg), void *data);
/* dummy_obj */
void dummy_obj_new(Evas_Object *layout);
void dummy_obj_del(Evas_Object *layout);
void dummy_obj_update(Evas_Object *layout);
/* edj_mgr */
void edj_mgr_init(Evas_Object *enventor);
void edj_mgr_term(void);
view_data * edj_mgr_view_new(const char *group);
view_data *edj_mgr_view_get(Eina_Stringshare *group);
Evas_Object * edj_mgr_obj_get(void);
view_data *edj_mgr_view_switch_to(view_data *vd);
void edj_mgr_view_del(view_data *vd);
void edj_mgr_reload_need_set(Eina_Bool reload);
Eina_Bool edj_mgr_reload_need_get(void);
void edj_mgr_clear(void);
void edj_mgr_view_scale_set(double scale);
double edj_mgr_view_scale_get(void);
void edj_mgr_all_views_reload(void);
/* redoundo */
redoundo_data *redoundo_init(Evas_Object *entry);
void redoundo_term(redoundo_data *rd);
void redoundo_clear(redoundo_data *rd);
void redoundo_text_push(redoundo_data *rd, const char *text, int pos, int length, Eina_Bool insert);
void redoundo_text_relative_push(redoundo_data *rd, const char *text);
void redoundo_entry_region_push(redoundo_data *rd, int cursor_pos, int cursor_pos2);
int redoundo_undo(redoundo_data *rd, Eina_Bool *changed);
int redoundo_redo(redoundo_data *rd, Eina_Bool *changed);
void redoundo_n_diff_cancel(redoundo_data *rd, unsigned int n);
void redoundo_smart_set(redoundo_data *rd, Eina_Bool status);
/* edj_viewer */
view_data * view_init(Evas_Object *enventor, const char *group, void (*del_cb)(void *data), void *data);
void view_term(view_data *vd);
Evas_Object *view_obj_get(view_data *vd);
void view_new(view_data *vd, const char *group);
void view_part_highlight_set(view_data *vd, const char *part_name);
void view_dummy_set(view_data *vd, Eina_Bool dummy_on);
void view_program_run(view_data *vd, const char *program);
Eina_Stringshare *view_group_name_get(view_data *vd);
void *view_data_get(view_data *vd);
void view_scale_set(view_data *vd, double scale);
void view_size_get(view_data *vd, Evas_Coord *w, Evas_Coord *h);
void view_size_set(view_data *vd, Evas_Coord w, Evas_Coord h);
Eina_List *view_parts_list_get(view_data *vd);
Eina_List *view_images_list_get(view_data *vd);
Eina_List *view_programs_list_get(view_data *vd);
Eina_List *view_part_states_list_get(view_data *vd, const char *part);
Eina_List *view_program_targets_get(view_data *vd, const char *prog);
void view_string_list_free(Eina_List *list);
void view_part_state_set(view_data *vd, const char *part, const char *description, const double state);
void view_obj_need_reload_set(view_data *vd);
/* template */
Eina_Bool template_part_insert(edit_data *ed, Edje_Part_Type part_type, Enventor_Template_Insert_Type insert_type, float rel1_x, float rel1_y, float rel2_x, float rel2_y, const Eina_Stringshare *group_name, char *syntax, size_t n);
Eina_Bool template_insert(edit_data *ed, Enventor_Template_Insert_Type insert_type, char *syntax, size_t n);
/* ctxpopup */
Evas_Object *ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_changed_cb);
Evas_Object *ctxpopup_img_preview_create(edit_data*ed, const char *imgpath, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_relay_cb);
/* edc_editor */
edit_data *edit_init(Evas_Object *enventor);
void edit_term(edit_data *ed);
Evas_Object *edit_obj_get(edit_data *ed);
Eina_Bool edit_changed_get(edit_data *ed);
void edit_changed_set(edit_data *ed, Eina_Bool changed);
void edit_linenumber_set(edit_data *ed, Eina_Bool linenumber);
Eina_Bool edit_linenumber_get(edit_data *ed);
Eina_Bool edit_saved_get(edit_data *ed);
void edit_saved_set(edit_data *ed, Eina_Bool saved);
Eina_Bool edit_save(edit_data *ed, const char *file);
void edit_new(edit_data* ed);
void edit_view_sync_cb_set(edit_data *ed, void (*cb)(void *data, Eina_Stringshare *state_name, double state_value, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
void edit_view_sync(edit_data *ed);
void edit_font_scale_set(edit_data *ed, double font_scale);
double edit_font_scale_get(edit_data *ed);
void edit_font_set(edit_data *ed, const char *font_name, const char *font_style);
void edit_font_get(edit_data *ed, const char **font_name, const char **font_style);
void edit_part_highlight_toggle(edit_data *ed, Eina_Bool msg);
void edit_line_delete(edit_data *ed);
Eina_Stringshare *edit_cur_prog_name_get(edit_data *ed);
Eina_Stringshare *edit_cur_part_name_get(edit_data *ed);
Eina_Stringshare *edit_cur_paragh_get(edit_data *ed);
int edit_max_line_get(edit_data *ed);
void edit_goto(edit_data *ed, int line);
void edit_syntax_color_set(edit_data *ed, Enventor_Syntax_Color_Type color_type, const char *val);
const char *edit_syntax_color_get(edit_data *ed, Enventor_Syntax_Color_Type color_type);
void edit_syntax_color_full_apply(edit_data *ed, Eina_Bool force);
void edit_syntax_color_partial_apply(edit_data *ed, double interval);
Evas_Object *edit_entry_get(edit_data *ed);
void edit_line_increase(edit_data *ed, int cnt);
void edit_line_decrease(edit_data *ed, int cnt);
int edit_cur_indent_depth_get(edit_data *ed);
void edit_redoundo_region_push(edit_data *ed, int cursor_pos1, int cursor_pos2);
void edit_auto_indent_set(edit_data *ed, Eina_Bool auto_indent);
Eina_Bool edit_auto_indent_get(edit_data *ed);
void edit_part_highlight_set(edit_data *ed, Eina_Bool part_highlight);
Eina_Bool edit_part_highlight_get(edit_data *ed);
void edit_ctxpopup_enabled_set(edit_data *ed, Eina_Bool enabled);
Eina_Bool edit_ctxpopup_enabled_get(edit_data *ed);
Eina_Bool edit_ctxpopup_visible_get(edit_data *ed);
void edit_smart_undo_redo_set(edit_data *ed, Eina_Bool smart_undo_redo);
Eina_Bool edit_smart_undo_redo_get(edit_data *ed);
void edit_ctxpopup_dismiss(edit_data *ed);
Eina_Bool edit_load(edit_data *ed, const char *edc_path);
void edit_selection_clear(edit_data *ed);
Eina_Bool edit_redoundo(edit_data *ed, Eina_Bool undo);
void edit_disabled_set(edit_data *ed, Eina_Bool disabled);
void edit_error_set(edit_data *ed, int line, const char *target);
void edit_text_insert(edit_data *ed, const char *text);
#endif