parent
34ad3b788a
commit
f7027577cc
11 changed files with 533 additions and 99 deletions
@ -0,0 +1,208 @@ |
||||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 |
||||
*/ |
||||
#include "e.h" |
||||
|
||||
/* PROTOTYPES - same all the time */ |
||||
typedef struct _CFData CFData; |
||||
|
||||
static void *_create_data(E_Config_Dialog *cfd); |
||||
static void _free_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); |
||||
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); |
||||
|
||||
/* Actual config data we will be playing with whil the dialog is active */ |
||||
struct _CFData |
||||
{ |
||||
/*- BASIC -*/ |
||||
int move_resize_info; |
||||
int animate_shading; |
||||
int placement; |
||||
/*- ADVANCED -*/ |
||||
int window_placement_policy; |
||||
int move_info_visible; |
||||
int move_info_follows; |
||||
int resize_info_visible; |
||||
int resize_info_follows; |
||||
int border_shade_animate; |
||||
int border_shade_transition; |
||||
double border_shade_speed; |
||||
}; |
||||
|
||||
/* a nice easy setup function that does the dirty work */ |
||||
E_Config_Dialog * |
||||
e_int_config_window_display(E_Container *con) |
||||
{ |
||||
E_Config_Dialog *cfd; |
||||
E_Config_Dialog_View v; |
||||
|
||||
/* methods */ |
||||
v.create_cfdata = _create_data; |
||||
v.free_cfdata = _free_data; |
||||
v.basic.apply_cfdata = _basic_apply_data; |
||||
v.basic.create_widgets = _basic_create_widgets; |
||||
v.advanced.apply_cfdata = _advanced_apply_data; |
||||
v.advanced.create_widgets = _advanced_create_widgets; |
||||
/* create config diaolg for NULL object/data */ |
||||
cfd = e_config_dialog_new(con, _("Window Display"), NULL, 0, &v, NULL); |
||||
return cfd; |
||||
} |
||||
|
||||
/**--CREATE--**/ |
||||
static void |
||||
_fill_data(CFData *cfdata) |
||||
{ |
||||
cfdata->window_placement_policy = e_config->window_placement_policy; |
||||
cfdata->move_info_visible = e_config->move_info_visible; |
||||
cfdata->move_info_follows = e_config->move_info_follows; |
||||
cfdata->resize_info_visible = e_config->resize_info_visible; |
||||
cfdata->resize_info_follows = e_config->resize_info_follows; |
||||
cfdata->border_shade_animate = e_config->border_shade_animate; |
||||
cfdata->border_shade_transition = e_config->border_shade_transition; |
||||
cfdata->border_shade_speed = e_config->border_shade_speed; |
||||
if (cfdata->move_info_visible || |
||||
cfdata->resize_info_follows) cfdata->move_resize_info = 1; |
||||
if (cfdata->border_shade_animate) cfdata->animate_shading = 1; |
||||
cfdata->placement = cfdata->window_placement_policy; |
||||
} |
||||
|
||||
static void * |
||||
_create_data(E_Config_Dialog *cfd) |
||||
{ |
||||
/* Create cfdata - cfdata is a temporary block of config data that this
|
||||
* dialog will be dealing with while configuring. it will be applied to |
||||
* the running systems/config in the apply methods |
||||
*/ |
||||
CFData *cfdata; |
||||
|
||||
cfdata = E_NEW(CFData, 1); |
||||
_fill_data(cfdata); |
||||
return cfdata; |
||||
} |
||||
|
||||
static void |
||||
_free_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Free the cfdata */ |
||||
free(cfdata); |
||||
} |
||||
|
||||
/**--APPLY--**/ |
||||
static int |
||||
_basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Actually take our cfdata settings and apply them in real life */ |
||||
if (cfdata->move_resize_info) |
||||
{ |
||||
e_config->move_info_visible = 1; |
||||
e_config->resize_info_visible = 1; |
||||
} |
||||
e_config->window_placement_policy = cfdata->placement; |
||||
e_config->border_shade_animate = cfdata->animate_shading; |
||||
e_config_save_queue(); |
||||
return 1; /* Apply was OK */ |
||||
} |
||||
|
||||
static int |
||||
_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Actually take our cfdata settings and apply them in real life */ |
||||
e_config->window_placement_policy = cfdata->window_placement_policy; |
||||
e_config->move_info_visible = cfdata->move_info_visible; |
||||
e_config->move_info_follows = cfdata->move_info_follows; |
||||
e_config->resize_info_visible = cfdata->resize_info_visible; |
||||
e_config->resize_info_follows = cfdata->resize_info_follows; |
||||
e_config->border_shade_animate = cfdata->border_shade_animate; |
||||
e_config->border_shade_transition = cfdata->border_shade_transition; |
||||
e_config->border_shade_speed = cfdata->border_shade_speed; |
||||
e_config_save_queue(); |
||||
return 1; /* Apply was OK */ |
||||
} |
||||
|
||||
/**--GUI--**/ |
||||
static Evas_Object * |
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) |
||||
{ |
||||
/* generate the core widget layout for a basic dialog */ |
||||
Evas_Object *o, *of, *ob; |
||||
E_Radio_Group *rg; |
||||
|
||||
_fill_data(cfdata); |
||||
|
||||
o = e_widget_list_add(evas, 0, 0); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Display"), 0); |
||||
ob = e_widget_check_add(evas, _("Show window geometry information when moving or resizing"), &(cfdata->move_resize_info)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_check_add(evas, _("Animate the shading and unshading of windows"), &(cfdata->animate_shading)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Automatic New Window Placement"), 0); |
||||
rg = e_widget_radio_group_new(&(cfdata->placement)); |
||||
ob = e_widget_radio_add(evas, _("Smart Placement"), E_WINDOW_PLACEMENT_SMART, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Place at mouse pointer"), E_WINDOW_PLACEMENT_CURSOR, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Place manually with the mouse"), E_WINDOW_PLACEMENT_MANUAL, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
return o; |
||||
} |
||||
|
||||
static Evas_Object * |
||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) |
||||
{ |
||||
/* generate the core widget layout for an advanced dialog */ |
||||
Evas_Object *o, *ob, *of, *of2; |
||||
E_Radio_Group *rg; |
||||
|
||||
_fill_data(cfdata); |
||||
|
||||
o = e_widget_list_add(evas, 0, 0); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Window Move Geometry"), 0); |
||||
ob = e_widget_check_add(evas, _("Display information"), &(cfdata->move_info_visible)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_check_add(evas, _("Follow the window as it moves"), &(cfdata->move_info_follows)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Window Resize Geometry"), 0); |
||||
ob = e_widget_check_add(evas, _("Display information"), &(cfdata->resize_info_visible)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_check_add(evas, _("Follow the window as it resizes"), &(cfdata->resize_info_follows)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Window Shading"), 0); |
||||
ob = e_widget_check_add(evas, _("Animate shading and unshading of windows"), &(cfdata->border_shade_animate)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_slider_add(evas, 1, 0, _("%4.0f pixels/sec"), 100, 9900, 100, 0, &(cfdata->border_shade_speed), NULL, 200); |
||||
e_widget_framelist_object_append(of, ob); |
||||
rg = e_widget_radio_group_new(&(cfdata->border_shade_transition)); |
||||
ob = e_widget_radio_add(evas, _("Linear"), E_TRANSITION_LINEAR, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Smooth accelerate and decelerate"), E_TRANSITION_SINUSOIDAL, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Accelerate"), E_TRANSITION_ACCELERATE, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Decelerate"), E_TRANSITION_DECELERATE, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Automatic New Window Placement"), 0); |
||||
rg = e_widget_radio_group_new(&(cfdata->placement)); |
||||
ob = e_widget_radio_add(evas, _("Smart Placement"), E_WINDOW_PLACEMENT_SMART, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Place at mouse pointer"), E_WINDOW_PLACEMENT_CURSOR, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Place manually with the mouse"), E_WINDOW_PLACEMENT_MANUAL, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
return o; |
||||
} |
@ -0,0 +1,12 @@ |
||||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 |
||||
*/ |
||||
#ifdef E_TYPEDEFS |
||||
#else |
||||
#ifndef E_INT_CONFIG_WINDOW_DISPLAY_H |
||||
#define E_INT_CONFIG_WINDOW_DISPLAY_H |
||||
|
||||
EAPI E_Config_Dialog *e_int_config_window_display(E_Container *con); |
||||
|
||||
#endif |
||||
#endif |
@ -0,0 +1,202 @@ |
||||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 |
||||
*/ |
||||
#include "e.h" |
||||
|
||||
/* PROTOTYPES - same all the time */ |
||||
typedef struct _CFData CFData; |
||||
|
||||
static void *_create_data(E_Config_Dialog *cfd); |
||||
static void _free_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata); |
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); |
||||
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); |
||||
|
||||
/* Actual config data we will be playing with whil the dialog is active */ |
||||
struct _CFData |
||||
{ |
||||
/*- BASIC -*/ |
||||
int auto_raise; |
||||
int resist; |
||||
int maximize; |
||||
/*- ADVANCED -*/ |
||||
int use_auto_raise; |
||||
double auto_raise_delay; |
||||
int use_resist; |
||||
int desk_resist; |
||||
int window_resist; |
||||
int gadget_resist; |
||||
int maximize_policy; |
||||
}; |
||||
|
||||
/* a nice easy setup function that does the dirty work */ |
||||
E_Config_Dialog * |
||||
e_int_config_window_manipulation(E_Container *con) |
||||
{ |
||||
E_Config_Dialog *cfd; |
||||
E_Config_Dialog_View v; |
||||
|
||||
/* methods */ |
||||
v.create_cfdata = _create_data; |
||||
v.free_cfdata = _free_data; |
||||
v.basic.apply_cfdata = _basic_apply_data; |
||||
v.basic.create_widgets = _basic_create_widgets; |
||||
v.advanced.apply_cfdata = _advanced_apply_data; |
||||
v.advanced.create_widgets = _advanced_create_widgets; |
||||
/* create config diaolg for NULL object/data */ |
||||
cfd = e_config_dialog_new(con, _("Window Manipulation"), NULL, 0, &v, NULL); |
||||
return cfd; |
||||
} |
||||
|
||||
/**--CREATE--**/ |
||||
static void |
||||
_fill_data(CFData *cfdata) |
||||
{ |
||||
cfdata->use_auto_raise = e_config->use_auto_raise; |
||||
cfdata->auto_raise_delay = e_config->auto_raise_delay; |
||||
cfdata->use_resist = e_config->use_resist; |
||||
cfdata->desk_resist = e_config->desk_resist; |
||||
cfdata->window_resist = e_config->window_resist; |
||||
cfdata->gadget_resist = e_config->gadget_resist; |
||||
cfdata->maximize_policy = e_config->maximize_policy; |
||||
if (cfdata->maximize_policy == E_MAXIMIZE_NONE) |
||||
cfdata->maximize_policy = E_MAXIMIZE_FULLSCREEN; |
||||
if (cfdata->use_auto_raise) cfdata->auto_raise = 1; |
||||
if (cfdata->use_resist) cfdata->resist = 1; |
||||
cfdata->maximize = cfdata->maximize_policy; |
||||
} |
||||
|
||||
static void * |
||||
_create_data(E_Config_Dialog *cfd) |
||||
{ |
||||
/* Create cfdata - cfdata is a temporary block of config data that this
|
||||
* dialog will be dealing with while configuring. it will be applied to |
||||
* the running systems/config in the apply methods |
||||
*/ |
||||
CFData *cfdata; |
||||
|
||||
cfdata = E_NEW(CFData, 1); |
||||
_fill_data(cfdata); |
||||
return cfdata; |
||||
} |
||||
|
||||
static void |
||||
_free_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Free the cfdata */ |
||||
free(cfdata); |
||||
} |
||||
|
||||
/**--APPLY--**/ |
||||
static int |
||||
_basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Actually take our cfdata settings and apply them in real life */ |
||||
e_config->use_auto_raise = cfdata->auto_raise; |
||||
cfdata->use_resist = cfdata->resist; |
||||
e_config->maximize_policy = cfdata->maximize; |
||||
e_config_save_queue(); |
||||
return 1; /* Apply was OK */ |
||||
} |
||||
|
||||
static int |
||||
_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata) |
||||
{ |
||||
/* Actually take our cfdata settings and apply them in real life */ |
||||
e_config->use_auto_raise = cfdata->use_auto_raise; |
||||
e_config->auto_raise_delay = cfdata->auto_raise_delay; |
||||
e_config->use_resist = cfdata->use_resist; |
||||
e_config->desk_resist = cfdata->desk_resist; |
||||
e_config->window_resist = cfdata->window_resist; |
||||
e_config->gadget_resist = cfdata->gadget_resist; |
||||
e_config->maximize_policy = cfdata->maximize_policy; |
||||
e_config_save_queue(); |
||||
return 1; /* Apply was OK */ |
||||
} |
||||
|
||||
/**--GUI--**/ |
||||
static Evas_Object * |
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) |
||||
{ |
||||
/* generate the core widget layout for a basic dialog */ |
||||
Evas_Object *o, *of, *ob; |
||||
E_Radio_Group *rg; |
||||
|
||||
_fill_data(cfdata); |
||||
|
||||
o = e_widget_list_add(evas, 0, 0); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Miscellaneous Options"), 0); |
||||
ob = e_widget_check_add(evas, _("Automatically raise windows on mouse over"), &(cfdata->auto_raise)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_check_add(evas, _("When moving or resizing windows, resist at the boundaries"), &(cfdata->resist)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Maximize Policy"), 0); |
||||
rg = e_widget_radio_group_new(&(cfdata->maximize)); |
||||
ob = e_widget_radio_add(evas, _("Fullscreen"), E_MAXIMIZE_FULLSCREEN, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Smart expansion"), E_MAXIMIZE_SMART, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Expand the window"), E_MAXIMIZE_EXPAND, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Fill available space"), E_MAXIMIZE_FILL, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
return o; |
||||
} |
||||
|
||||
static Evas_Object * |
||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) |
||||
{ |
||||
/* generate the core widget layout for an advanced dialog */ |
||||
Evas_Object *o, *ob, *of; |
||||
E_Radio_Group *rg; |
||||
|
||||
_fill_data(cfdata); |
||||
|
||||
o = e_widget_list_add(evas, 0, 0); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Autoraise"), 0); |
||||
ob = e_widget_check_add(evas, _("Automatically raise windows on mouse over"), &(cfdata->use_auto_raise)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_label_add(evas, _("Delay before raising:")); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 9.9, 0.1, 0, &(cfdata->auto_raise_delay), NULL, 200); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Resistance"), 0); |
||||
ob = e_widget_check_add(evas, _("Resist moving or resizing a window over an obstacle"), &(cfdata->use_resist)); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_label_add(evas, _("Resistance between windows:")); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_slider_add(evas, 1, 0, _("%2.0f pixels"), 0, 64.0, 1.0, 0, NULL, &(cfdata->window_resist), 200); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_label_add(evas, _("Resistance at the edge of the screen:")); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_slider_add(evas, 1, 0, _("%2.0f pixels"), 0, 64.0, 1.0, 0, NULL, &(cfdata->desk_resist), 200); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_label_add(evas, _("Resistance to desktop gadgets:")); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_slider_add(evas, 1, 0, _("%2.0f pixels"), 0, 64.0, 1.0, 0, NULL, &(cfdata->gadget_resist), 200); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
of = e_widget_framelist_add(evas, _("Maximize Policy"), 0); |
||||
rg = e_widget_radio_group_new(&(cfdata->maximize_policy)); |
||||
ob = e_widget_radio_add(evas, _("Fullscreen"), E_MAXIMIZE_FULLSCREEN, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Smart expansion"), E_MAXIMIZE_SMART, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Expand the window"), E_MAXIMIZE_EXPAND, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
ob = e_widget_radio_add(evas, _("Fill available space"), E_MAXIMIZE_FILL, rg); |
||||
e_widget_framelist_object_append(of, ob); |
||||
e_widget_list_object_append(o, of, 1, 1, 0.5); |
||||
|
||||
return o; |
||||
} |
@ -0,0 +1,12 @@ |
||||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 |
||||
*/ |
||||
#ifdef E_TYPEDEFS |
||||
#else |
||||
#ifndef E_INT_CONFIG_WINDOW_MANIPULATION_H |
||||
#define E_INT_CONFIG_WINDOW_MANIPULATION_H |
||||
|
||||
EAPI E_Config_Dialog *e_int_config_window_manipulation(E_Container *con); |
||||
|
||||
#endif |
||||
#endif |
Loading…
Reference in new issue