2022-03-04 06:14:11 -08:00
|
|
|
#ifndef TERMINOLOGY_TERM_CONTAINER_H_
|
|
|
|
#define TERMINOLOGY_TERM_CONTAINER_H_ 1
|
2015-03-22 10:17:16 -07:00
|
|
|
|
|
|
|
|
2022-03-04 06:18:42 -08:00
|
|
|
typedef struct tag_Term_Container Term_Container;
|
|
|
|
typedef struct tag_Sizeinfo Sizeinfo;
|
2015-03-22 10:17:16 -07:00
|
|
|
|
2022-03-04 06:18:42 -08:00
|
|
|
struct tag_Sizeinfo
|
2015-03-22 10:17:16 -07:00
|
|
|
{
|
|
|
|
int min_w;
|
|
|
|
int min_h;
|
|
|
|
int step_x;
|
|
|
|
int step_y;
|
|
|
|
int req_w;
|
|
|
|
int req_h;
|
|
|
|
int bg_min_w;
|
|
|
|
int bg_min_h;
|
|
|
|
int req;
|
|
|
|
};
|
|
|
|
|
2022-03-04 06:18:42 -08:00
|
|
|
typedef enum tag_Term_Container_Type
|
2015-03-22 10:17:16 -07:00
|
|
|
{
|
2020-03-07 05:58:12 -08:00
|
|
|
TERM_CONTAINER_TYPE_UNKNOWN = 0,
|
2015-03-22 10:17:16 -07:00
|
|
|
TERM_CONTAINER_TYPE_SOLO,
|
|
|
|
TERM_CONTAINER_TYPE_SPLIT,
|
|
|
|
TERM_CONTAINER_TYPE_TABS,
|
|
|
|
TERM_CONTAINER_TYPE_WIN
|
|
|
|
} Term_Container_Type;
|
|
|
|
|
2022-03-04 06:18:42 -08:00
|
|
|
typedef enum tag_Split_Direction {
|
2020-02-29 07:18:07 -08:00
|
|
|
SPLIT_DIRECTION_NONE,
|
|
|
|
SPLIT_DIRECTION_LEFT,
|
|
|
|
SPLIT_DIRECTION_RIGHT,
|
|
|
|
SPLIT_DIRECTION_TOP,
|
|
|
|
SPLIT_DIRECTION_BOTTOM,
|
2020-03-25 14:13:43 -07:00
|
|
|
SPLIT_DIRECTION_TABS,
|
2020-02-29 07:18:07 -08:00
|
|
|
} Split_Direction;
|
|
|
|
|
2022-03-04 06:18:42 -08:00
|
|
|
struct tag_Term_Container {
|
2015-03-22 10:17:16 -07:00
|
|
|
Term_Container_Type type;
|
|
|
|
Term_Container *parent;
|
|
|
|
Win *wn;
|
|
|
|
Evas_Object *selector_img;
|
|
|
|
Eina_Bool is_focused;
|
|
|
|
const char *title;
|
|
|
|
|
2017-07-06 11:55:02 -07:00
|
|
|
Term *(*term_next)(const Term_Container *tc, const Term_Container *child);
|
|
|
|
Term *(*term_prev)(const Term_Container *tc, const Term_Container *child);
|
2017-07-10 15:01:29 -07:00
|
|
|
Term *(*term_up)(const Term_Container *tc, const Term_Container *child);
|
|
|
|
Term *(*term_down)(const Term_Container *tc, const Term_Container *child);
|
|
|
|
Term *(*term_left)(const Term_Container *tc, const Term_Container *child);
|
|
|
|
Term *(*term_right)(const Term_Container *tc, const Term_Container *child);
|
2017-07-06 11:55:02 -07:00
|
|
|
Term *(*term_first)(const Term_Container *tc);
|
|
|
|
Term *(*term_last)(const Term_Container *tc);
|
|
|
|
Term *(*focused_term_get)(const Term_Container *tc);
|
|
|
|
Evas_Object* (*get_evas_object)(const Term_Container *container);
|
|
|
|
Term *(*find_term_at_coords)(const Term_Container *container,
|
2015-03-22 10:17:16 -07:00
|
|
|
Evas_Coord mx, Evas_Coord my);
|
|
|
|
void (*split)(Term_Container *tc, Term_Container *child,
|
2015-09-19 05:49:40 -07:00
|
|
|
Term *from, const char *cmd, Eina_Bool is_horizontal);
|
2020-02-29 07:18:07 -08:00
|
|
|
int (*split_direction)(Term_Container *tc,
|
|
|
|
Term_Container *child_orig,
|
|
|
|
Term_Container *child_new,
|
|
|
|
Split_Direction direction);
|
2015-03-22 10:17:16 -07:00
|
|
|
void (*size_eval)(Term_Container *container, Sizeinfo *info);
|
|
|
|
void (*swallow)(Term_Container *container, Term_Container *orig,
|
|
|
|
Term_Container *new_child);
|
|
|
|
void (*focus)(Term_Container *tc, Term_Container *relative);
|
|
|
|
void (*unfocus)(Term_Container *tc, Term_Container *relative);
|
|
|
|
void (*set_title)(Term_Container *tc, Term_Container *child, const char *title);
|
|
|
|
void (*bell)(Term_Container *tc, Term_Container *child);
|
|
|
|
void (*close)(Term_Container *container, Term_Container *child);
|
|
|
|
void (*update)(Term_Container *tc);
|
2020-04-11 01:01:13 -07:00
|
|
|
Eina_Bool (*is_visible)(const Term_Container *tc, const Term_Container *child);
|
2020-02-15 07:47:47 -08:00
|
|
|
/* Only valid for splits/tabs */
|
|
|
|
void (*detach)(Term_Container *container, Term_Container *solo_child);
|
2015-03-22 10:17:16 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|