@ -1,3 +1,6 @@
# ifndef ENLIGHTENMENT_H
# define ENLIGHTENMENT_H
# include "../config.h"
# include <X11/Xlib.h>
# include <stdio.h>
@ -21,7 +24,6 @@
# include <Ebits.h>
# include <Ecore.h>
# include <Edb.h>
# include <libefsd.h>
/* macros for allowing sections of code to be runtime profiled */
# define E_PROF 1
@ -112,108 +114,6 @@ _e_obj->e_obj_free = (void *) _e_obj_free_func; \
# define ACT_KEY_DOWN 8
# define ACT_KEY_UP 9
/* config macros */
/* something to check validity of config files where we get data from */
/* for now its just a 5 second timout so it will only invalidate */
/* if we havent looked for 5 seconds... BUT later when efsd is more solid */
/* we should use that to tell us when its invalid */
# define E_CFG_FILE(_var, _src) \
static E_Config_File _var = { _src , 0.0 }
# define E_CONFIG_CHECK_VALIDITY(_var, _src) \
{ \
double __time ; \
__time = e_get_time ( ) ; \
if ( _var . last_fetch < ( __time - 5.0 ) ) { \
_var . last_fetch = __time ;
# define E_CONFIG_CHECK_VALIDITY_END \
} \
}
# define E_CFG_INT_T 123
# define E_CFG_FLOAT_T 1234
# define E_CFG_STR_T 12345
# define E_CFG_DATA_T 123456
# define E_CFG_INT(_var, _src, _key, _default) \
static E_Config_Element _var = { _src , _key , 0.0 , E_CFG_INT_T , \
_default , 0.0 , NULL , NULL , 0 , \
0 , 0.0 , NULL , NULL , 0 , \
}
# define E_CFG_FLOAT(_var, _src, _key, _default) \
static E_Config_Element _var = { _src , _key , 0.0 , E_CFG_FLOAT_T , \
0 , _default , NULL , NULL , 0 , \
0 , 0.0 , NULL , NULL , 0 , \
}
# define E_CFG_STR(_var, _src, _key, _default) \
static E_Config_Element _var = { _src , _key , 0.0 , E_CFG_STR_T , \
0 , 0.0 , _default , NULL , 0 , \
0 , 0.0 , NULL , NULL , 0 , \
}
# define E_CFG_DATA(_var, _src, _key, _default, _default_size) \
static E_Config_Element _var = { _src , _key , 0.0 , E_CFG_DATAT_T , \
0 , 0.0 , NULL , _default , _default_size , \
0 , 0.0 , NULL , NULL , 0 , \
}
/* yes for now it only fetches them every 5 seconds - in the end i need a */
/* validity flag for the database file to know if it changed and only then */
/* get the value again. this is waiting for efsd to become more solid */
# define E_CFG_VALIDITY_CHECK(_var) \
{ \
double __time ; \
__time = e_get_time ( ) ; \
if ( _var . last_fetch < ( __time - 5.0 ) ) { \
int __cfg_ok = 0 ; \
_var . last_fetch = __time ;
# define E_CFG_END_VALIDITY_CHECK \
} \
}
# define E_CONFIG_INT_GET(_var, _val) \
{ { \
E_CFG_VALIDITY_CHECK ( _var ) \
E_DB_INT_GET ( e_config_get ( _var . src ) , _var . key , _var . cur_int_val , __cfg_ok ) ; \
if ( ! __cfg_ok ) _var . cur_int_val = _var . def_int_val ; \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var . cur_int_val ; }
# define E_CONFIG_FLOAT_GET(_var, _val) \
{ { \
E_CFG_VALIDITY_CHECK ( _var ) \
E_DB_FLOAT_GET ( e_config_get ( _var . src ) , _var . key , _var . cur_float_val , __cfg_ok ) ; \
if ( ! __cfg_ok ) _var . cur_float_val = _var . def_float_val ; \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var . cur_float_val ; }
# define E_CONFIG_STR_GET(_var, _val) \
{ { \
E_CFG_VALIDITY_CHECK ( _var ) \
if ( _var . cur_str_val ) free ( _var . cur_str_val ) ; \
_var . cur_str_val = NULL ; \
E_DB_STR_GET ( e_config_get ( _var . src ) , _var . key , _var . cur_str_val , __cfg_ok ) ; \
if ( ! __cfg_ok ) _var . cur_str_val = _var . def_str_val \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var . cur_str_val ; }
# define E_CONFIG_DATA_GET(_var, _val, _size) \
{ { \
E_CFG_VALIDITY_CHECK ( _var ) \
if ( _var . cur_data_val ) free ( _var . cur_data_val ) ; \
_var . cur_data_val = NULL ; \
_var . cur_data_size = 0 ; \
{ E_DB_File * __db ; \
__db = e_db_open_read ( e_config_get ( _var . src ) ) ; \
if ( __db ) { \
_var . cur_data_val = e_db_data_get ( __db , _var . key , & ( _var . cur_data_size ) ) ; \
if ( _var . cur_data_val ) __cfg_ok = 1 ; \
e_db_close ( __db ) ; \
} \
} \
if ( ! __cfg_ok ) { \
_var . cur_data_val = e_memdup ( _var . def_data_val , _var . def_data_size ) ; \
_var . cur_data_size = _var . def_data_size ; \
} \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var . cur_data_val ; \
_size = _var . cur_data_size ; }
/* misc util macros */
# define INTERSECTS(x, y, w, h, xx, yy, ww, hh) \
( ( x < ( xx + ww ) ) & & \
@ -223,34 +123,26 @@ _size = _var.cur_data_size;}
# define SPANS_COMMON(x1, w1, x2, w2) \
( ! ( ( ( ( x2 ) + ( w2 ) ) < = ( x1 ) ) | | ( ( x2 ) > = ( ( x1 ) + ( w1 ) ) ) ) )
# define UN(_blah) _blah = 0
# define SET_BORDER_GRAVITY(_b, _grav) \
e_window_gravity_set ( _b - > win . container , _grav ) ; \
e_window_gravity_set ( _b - > win . input , _grav ) ; \
e_window_gravity_set ( _b - > win . l , _grav ) ; \
e_window_gravity_set ( _b - > win . r , _grav ) ; \
e_window_gravity_set ( _b - > win . t , _grav ) ; \
e_window_gravity_set ( _b - > win . b , _grav ) ;
/* data types */
typedef struct _E_Object E_Object ;
typedef struct _E_Border E_Border ;
typedef struct _E_Grab E_Grab ;
typedef struct _E_Action E_Action ;
typedef struct _E_Action_Proto E_Action_Proto ;
typedef struct _E_Desktop E_Desktop ;
typedef struct _E_Rect E_Rect ;
typedef struct _E_Active_Action_Timer E_Active_Action_Timer ;
typedef struct _E_View E_View ;
typedef struct _E_Icon E_Icon ;
typedef struct _E_Background E_Background ;
typedef struct _E_Background_Layer E_Background_Layer ;
typedef struct _E_Menu E_Menu ;
typedef struct _E_Menu_Item E_Menu_Item ;
typedef struct _E_Border E_Border ;
typedef struct _E_Build_Menu E_Build_Menu ;
typedef struct _E_Config_File E_Config_File ;
typedef struct _E_Config_Element E_Config_Element ;
typedef struct _E_Desktop E_Desktop ;
typedef struct _E_Entry E_Entry ;
typedef struct _E_FS_Restarter E_FS_Restarter ;
typedef struct _E_Config_File E_Config_File ;
typedef struct _E_Config_Element E_Config_Element ;
typedef struct _E_Grab E_Grab ;
typedef struct _E_Icon E_Icon ;
typedef struct _E_Menu E_Menu ;
typedef struct _E_Menu_Item E_Menu_Item ;
typedef struct _E_Object E_Object ;
typedef struct _E_Rect E_Rect ;
typedef struct _E_View E_View ;
/* actual fdata struct members */
struct _E_Object
@ -258,744 +150,4 @@ struct _E_Object
OBJ_PROPERTIES ;
} ;
struct _E_Border
{
OBJ_PROPERTIES ;
struct {
Window main ;
Window l , r , t , b ;
Window input ;
Window container ;
Window client ;
} win ;
struct {
Evas l , r , t , b ;
} evas ;
struct {
struct {
Evas_Object l , r , t , b ;
} title ;
struct {
Evas_Object l , r , t , b ;
} title_clip ;
} obj ;
struct {
Pixmap l , r , t , b ;
} pixmap ;
struct {
int new ;
Ebits_Object l , r , t , b ;
} bits ;
struct {
struct {
int x , y , w , h ;
int visible ;
int dx , dy ;
} requested ;
int x , y , w , h ;
int visible ;
int selected ;
int select_lost_from_grab ;
int shaded ;
int has_shape ;
int shape_changes ;
int shaped_client ;
} current , previous ;
struct {
struct {
int w , h ;
double aspect ;
} base , min , max , step ;
int layer ;
char * title ;
char * name ;
char * class ;
char * command ;
Window group ;
int takes_focus ;
int sticky ;
Colormap colormap ;
int fixed ;
int arrange_ignore ;
int hidden ;
int iconified ;
int titlebar ;
int border ;
int handles ;
int w , h ;
struct {
int requested ;
int x , y ;
int gravity ;
} pos ;
} client ;
struct {
int move , resize ;
} mode ;
struct {
int x , y , w , h ;
int is ;
} max ;
int ignore_unmap ;
int shape_changed ;
int placed ;
Evas_List grabs ;
E_Desktop * desk ;
char * border_file ;
int first_expose ;
int changed ;
} ;
struct _E_Grab
{
int button ;
Ev_Key_Modifiers mods ;
int any_mod ;
int remove_after ;
int allow ;
} ;
struct _E_Action
{
OBJ_PROPERTIES ;
char * name ;
char * action ;
char * params ;
int event ;
int button ;
char * key ;
int modifiers ;
E_Action_Proto * action_proto ;
void * object ;
int started ;
int grabbed ;
} ;
struct _E_Action_Proto
{
OBJ_PROPERTIES ;
char * action ;
void ( * func_start ) ( void * o , E_Action * a , void * data , int x , int y , int rx , int ry ) ;
void ( * func_stop ) ( void * o , E_Action * a , void * data , int x , int y , int rx , int ry ) ;
void ( * func_go ) ( void * o , E_Action * a , void * data , int x , int y , int rx , int ry , int dx , int dy ) ;
} ;
struct _E_Desktop
{
OBJ_PROPERTIES ;
char * name ;
char * dir ;
struct {
Window main ;
Window container ;
Window desk ;
} win ;
E_View * view ;
int x , y ;
struct {
int w , h ;
} real , virt ;
Evas_List windows ;
int changed ;
} ;
struct _E_Rect
{
int x , y , w , h ;
int v1 , v2 , v3 , v4 ;
} ;
struct _E_Active_Action_Timer
{
void * object ;
char * name ;
} ;
struct _E_View
{
OBJ_PROPERTIES ;
char * dir ;
struct {
Evas_Render_Method render_method ;
int back_pixmap ;
} options ;
Evas evas ;
struct {
Window base ;
Window main ;
} win ;
Pixmap pmap ;
struct {
int w , h ;
} size ;
struct {
int x , y ;
} location ;
struct {
/* +-----------------+
* | Wt |
* | + - - - - - - - - - - - + |
* | Wl | | Wr |
* | | [ I ] Is | |
* | | Ig | |
* | | [ txt ] | |
* | | Ib | |
* | + - - - - - - - - - - - + |
* | Wb |
* + - - - - - - - - - - - - - - - - - +
*/
struct {
int l , r , t , b ;
} window ;
struct {
int s , g , b ;
} icon ;
} spacing ;
struct {
int on ;
int x , y , w , h ;
struct {
int x , y ;
} down ;
struct {
struct {
int r , g , b , a ;
}
edge_l , edge_r , edge_t , edge_b ,
middle ,
grad_l , grad_r , grad_t , grad_b ;
struct {
int l , r , t , b ;
} grad_size ;
} config ;
struct {
Evas_Object clip ;
Evas_Object edge_l ;
Evas_Object edge_r ;
Evas_Object edge_t ;
Evas_Object edge_b ;
Evas_Object middle ;
Evas_Object grad_l ;
Evas_Object grad_r ;
Evas_Object grad_t ;
Evas_Object grad_b ;
} obj ;
} select ;
struct {
int started ;
Window win ;
int x , y ;
struct {
int x , y ;
} offset ;
int update ;
} drag ;
Evas_Object obj_bg ;
E_Background * bg ;
int is_listing ;
int monitor_id ;
E_FS_Restarter * restarter ;
Evas_List icons ;
int is_desktop ;
int have_resort_queued ;
int sel_count ;
int changed ;
} ;
struct _E_Icon
{
OBJ_PROPERTIES ;
char * file ;
E_View * view ;
struct {
char * icon ;
char * custom_icon ;
char * link ;
struct {
char * base ;
char * type ;
} mime ;
} info ;
struct {
Evas_Object icon ;
Evas_Object text ;
Evas_Object event1 ;
Evas_Object event2 ;
struct {
struct {
Ebits_Object icon ;
Ebits_Object text ;
} over , under ;
} sel ;
} obj ;
struct {
int hilited ;
int clicked ;
int selected ;
int running ;
int disabled ;
int visible ;
int just_selected ;
int just_executed ;
} state ;
struct {
int x , y , w , h ;
struct {
int w , h ;
} icon ;
struct {
int w , h ;
} text ;
} geom ;
int changed ;
} ;
struct _E_Background_Layer
{
int mode ;
int type ;
int inlined ;
struct {
float x , y ;
} scroll ;
struct {
float x , y ;
} pos ;
struct {
float w , h ;
struct {
int w , h ;
} orig ;
} size , fill ;
char * color_class ;
char * file ;
double angle ;
struct {
int r , g , b , a ;
} fg , bg ;
double x , y , w , h , fw , fh ;
Evas_Object obj ;
} ;
struct _E_Background
{
OBJ_PROPERTIES ;
Evas evas ;
char * file ;
struct {
int sx , sy ;
int w , h ;
} geom ;
Evas_List layers ;
Evas_Object base_obj ;
} ;
struct _E_Menu
{
OBJ_PROPERTIES ;
struct {
int x , y , w , h ;
int visible ;
} current , previous ;
struct {
int l , r , t , b ;
} border , sel_border ;
struct {
Window main , evas ;
} win ;
Evas evas ;
Ebits_Object bg ;
Evas_List entries ;
char * bg_file ;
int first_expose ;
int recalc_entries ;
int redo_sel ;
int changed ;
struct {
int state , icon , text ;
} size ;
struct {
int icon , state ;
} pad ;
E_Menu_Item * selected ;
Time time ;
} ;
struct _E_Menu_Item
{
OBJ_PROPERTIES ;
int x , y ;
struct {
struct {
int w , h ;
} min ;
int w , h ;