finish out config menu
This commit is contained in:
parent
f87c66b44e
commit
e66437ba07
|
@ -5,25 +5,6 @@ static Evas_Object *dm_show = NULL;
|
|||
static E_Desk *desk_hide = NULL;
|
||||
static Evas_Object *dm_hide = NULL;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DS_PAN, //slide desk in direction of flip
|
||||
DS_FADE_OUT, //current desk fades to transparent
|
||||
DS_FADE_IN, //new desk fades in from transparent
|
||||
DS_BATMAN, //adam west is calling
|
||||
DS_ZOOM_IN, //zoom in to new desk
|
||||
DS_ZOOM_OUT, //zoom out from old desk
|
||||
DS_GROW, //grow the view of the new desk based on flip direction
|
||||
DS_ROTATE_OUT, //spiral current desk out while shrinking
|
||||
DS_ROTATE_IN, //spiral new desk in while growing
|
||||
DS_SLIDE_SPLIT, //split screen in X parts and slide away based on flip direction
|
||||
DS_QUAD_SPLIT, //split screen into quads and move towards corners
|
||||
DS_QUAD_MERGE, //split screen into quads and move towards center
|
||||
DS_BLINK, //like blinking your eye
|
||||
DS_VIEWPORT, //current desk viewport shrinks towards 1x1 at center
|
||||
DS_LAST,
|
||||
} DS_Type;
|
||||
|
||||
static DS_Type cur_type = DS_PAN;
|
||||
|
||||
static void
|
||||
|
@ -82,6 +63,7 @@ _ds_show(E_Desk *desk, int dx, int dy)
|
|||
{
|
||||
E_Client *ec;
|
||||
DS_Type use_type;
|
||||
DS_Type *disabled_types = (DS_Type*)&ds_config->types;
|
||||
|
||||
/* free existing mirror */
|
||||
E_FREE_FUNC(dm_show, evas_object_del);
|
||||
|
@ -107,6 +89,11 @@ _ds_show(E_Desk *desk, int dx, int dy)
|
|||
ec->hidden = 0;
|
||||
evas_object_show(ec->frame);
|
||||
}
|
||||
if (ds_config->disabled_transition_count == DS_LAST)
|
||||
{
|
||||
e_desk_flip_end(desk);
|
||||
return;
|
||||
}
|
||||
desk_show = desk;
|
||||
|
||||
e_comp_shape_queue_block(e_comp_get(desk), 1);
|
||||
|
@ -117,6 +104,16 @@ _ds_show(E_Desk *desk, int dx, int dy)
|
|||
use_type = cur_type++;
|
||||
else
|
||||
use_type = rand() % DS_LAST;
|
||||
while (disabled_types[use_type])
|
||||
{
|
||||
use_type++;
|
||||
if (use_type == DS_LAST)
|
||||
{
|
||||
cur_type = DS_LAST;
|
||||
use_type = DS_PAN;
|
||||
}
|
||||
}
|
||||
|
||||
/* pick a random flip */
|
||||
switch (use_type)
|
||||
{
|
||||
|
@ -408,6 +405,7 @@ _ds_hide(E_Desk *desk)
|
|||
ec->hidden = 1;
|
||||
evas_object_hide(ec->frame);
|
||||
}
|
||||
if (ds_config->disabled_transition_count == DS_LAST) return;
|
||||
desk_hide = desk;
|
||||
/* create mirror for previous desk */
|
||||
dm_hide = dm_add(desk);
|
||||
|
|
|
@ -3,6 +3,25 @@
|
|||
static E_Int_Menu_Augmentation *maug = NULL;
|
||||
|
||||
|
||||
static const char *type_desc[] =
|
||||
{
|
||||
[DS_PAN] = D_("Pan"),
|
||||
[DS_FADE_OUT] = D_("Fade Out"),
|
||||
[DS_FADE_IN] = D_("Fade In"),
|
||||
[DS_BATMAN] = D_("Batman"),
|
||||
[DS_ZOOM_IN] = D_("Zoom In"),
|
||||
[DS_ZOOM_OUT] = D_("Zoom Out"),
|
||||
[DS_GROW] = D_("Grow"),
|
||||
[DS_ROTATE_OUT] = D_("Rotate Out"),
|
||||
[DS_ROTATE_IN] = D_("Rotate In"),
|
||||
[DS_SLIDE_SPLIT] = D_("Slide Split"),
|
||||
[DS_QUAD_SPLIT] = D_("Quad Split"),
|
||||
[DS_QUAD_MERGE] = D_("Quad Merge"),
|
||||
[DS_BLINK] = D_("Blink"),
|
||||
[DS_VIEWPORT] = D_("Viewport"),
|
||||
[DS_LAST] = NULL
|
||||
};
|
||||
|
||||
static void
|
||||
_ds_menu_ruler(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi)
|
||||
{
|
||||
|
@ -11,6 +30,7 @@ _ds_menu_ruler(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi)
|
|||
mr_shutdown();
|
||||
else
|
||||
mr_init();
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -21,6 +41,32 @@ _ds_menu_maximize(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi
|
|||
maximize_shutdown();
|
||||
else
|
||||
maximize_init();
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
_ds_menu_transitions(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi)
|
||||
{
|
||||
ds_config->disable_transitions = mi->toggle;
|
||||
if (ds_config->disable_transitions)
|
||||
ds_shutdown();
|
||||
else
|
||||
ds_init();
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
_ds_menu_transition_type(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi)
|
||||
{
|
||||
Eina_Bool *types = (Eina_Bool*)&ds_config->types;
|
||||
unsigned int t = (uintptr_t)data;
|
||||
|
||||
types[t] = mi->toggle;
|
||||
if (mi->toggle)
|
||||
ds_config->disabled_transition_count++;
|
||||
else
|
||||
ds_config->disabled_transition_count--;
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -28,6 +74,7 @@ _ds_menu_add(void *data EINA_UNUSED, E_Menu *m)
|
|||
{
|
||||
E_Menu_Item *mi;
|
||||
E_Menu *subm;
|
||||
unsigned int t;
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, D_("Desksanity"));
|
||||
|
@ -36,6 +83,7 @@ _ds_menu_add(void *data EINA_UNUSED, E_Menu *m)
|
|||
subm = e_menu_new();
|
||||
e_menu_title_set(subm, D_("Options"));
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
e_object_unref(E_OBJECT(subm));
|
||||
|
||||
mi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(mi, D_("Disable Move/Resize Ruler"));
|
||||
|
@ -48,6 +96,29 @@ _ds_menu_add(void *data EINA_UNUSED, E_Menu *m)
|
|||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, ds_config->disable_maximize);
|
||||
e_menu_item_callback_set(mi, _ds_menu_maximize, NULL);
|
||||
|
||||
mi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(mi, D_("Disable Transition Effects"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, ds_config->disable_transitions);
|
||||
e_menu_item_callback_set(mi, _ds_menu_transitions, NULL);
|
||||
|
||||
if (ds_config->disable_transitions) return;
|
||||
|
||||
subm = e_menu_new();
|
||||
e_menu_title_set(subm, D_("Transitions"));
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
e_object_unref(E_OBJECT(subm));
|
||||
|
||||
for (t = 0; t < DS_LAST; t++)
|
||||
{
|
||||
Eina_Bool *types = (Eina_Bool*)&ds_config->types;
|
||||
mi = e_menu_item_new(subm);
|
||||
e_menu_item_label_set(mi, type_desc[t]);
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, types[t]);
|
||||
e_menu_item_callback_set(mi, _ds_menu_transition_type, (void*)(uintptr_t)t);
|
||||
}
|
||||
}
|
||||
|
||||
EINTERN void
|
||||
|
|
|
@ -17,6 +17,23 @@ _e_mod_ds_config_load(void)
|
|||
E_CONFIG_VAL(D, T, config_version, UINT);
|
||||
E_CONFIG_VAL(D, T, disable_ruler, UCHAR);
|
||||
E_CONFIG_VAL(D, T, disable_maximize, UCHAR);
|
||||
E_CONFIG_VAL(D, T, disable_transitions, UCHAR);
|
||||
E_CONFIG_VAL(D, T, disabled_transition_count, UINT);
|
||||
|
||||
E_CONFIG_VAL(D, T, types.disable_PAN, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_FADE_OUT, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_FADE_IN, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_BATMAN, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_ZOOM_IN, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_ZOOM_OUT, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_GROW, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_ROTATE_OUT, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_ROTATE_IN, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_SLIDE_SPLIT, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_QUAD_SPLIT, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_QUAD_MERGE, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_BLINK, UCHAR);
|
||||
E_CONFIG_VAL(D, T, types.disable_VIEWPORT, UCHAR);
|
||||
|
||||
ds_config = e_config_domain_load("module.desksanity", conf_edd);
|
||||
if (ds_config)
|
||||
|
@ -49,7 +66,8 @@ e_modapi_init(E_Module *m)
|
|||
mod->edje_file = eina_stringshare_add(buf);
|
||||
|
||||
ds_config_init();
|
||||
ds_init();
|
||||
if (!ds_config->disable_transitions)
|
||||
ds_init();
|
||||
if (!ds_config->disable_ruler)
|
||||
mr_init();
|
||||
if (!ds_config->disable_maximize)
|
||||
|
@ -65,7 +83,8 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
|||
maximize_shutdown();
|
||||
if (!ds_config->disable_ruler)
|
||||
mr_shutdown();
|
||||
ds_shutdown();
|
||||
if (!ds_config->disable_transitions)
|
||||
ds_shutdown();
|
||||
ds_config_shutdown();
|
||||
e_config_domain_save("module.desksanity", conf_edd, ds_config);
|
||||
E_FREE(ds_config);
|
||||
|
|
|
@ -25,6 +25,25 @@
|
|||
#define MOD_CONFIG_FILE_GENERATION 1
|
||||
#define MOD_CONFIG_FILE_VERSION ((MOD_CONFIG_FILE_EPOCH * 1000000) + MOD_CONFIG_FILE_GENERATION)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DS_PAN, //slide desk in direction of flip
|
||||
DS_FADE_OUT, //current desk fades to transparent
|
||||
DS_FADE_IN, //new desk fades in from transparent
|
||||
DS_BATMAN, //adam west is calling
|
||||
DS_ZOOM_IN, //zoom in to new desk
|
||||
DS_ZOOM_OUT, //zoom out from old desk
|
||||
DS_GROW, //grow the view of the new desk based on flip direction
|
||||
DS_ROTATE_OUT, //spiral current desk out while shrinking
|
||||
DS_ROTATE_IN, //spiral new desk in while growing
|
||||
DS_SLIDE_SPLIT, //split screen in X parts and slide away based on flip direction
|
||||
DS_QUAD_SPLIT, //split screen into quads and move towards corners
|
||||
DS_QUAD_MERGE, //split screen into quads and move towards center
|
||||
DS_BLINK, //like blinking your eye
|
||||
DS_VIEWPORT, //current desk viewport shrinks towards 1x1 at center
|
||||
DS_LAST,
|
||||
} DS_Type;
|
||||
|
||||
typedef struct Mod
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
|
@ -32,13 +51,35 @@ typedef struct Mod
|
|||
Eina_Stringshare *edje_file;
|
||||
} Mod;
|
||||
|
||||
typedef struct Config_Types
|
||||
{
|
||||
Eina_Bool disable_PAN;
|
||||
Eina_Bool disable_FADE_OUT;
|
||||
Eina_Bool disable_FADE_IN;
|
||||
Eina_Bool disable_BATMAN;
|
||||
Eina_Bool disable_ZOOM_IN;
|
||||
Eina_Bool disable_ZOOM_OUT;
|
||||
Eina_Bool disable_GROW;
|
||||
Eina_Bool disable_ROTATE_OUT;
|
||||
Eina_Bool disable_ROTATE_IN;
|
||||
Eina_Bool disable_SLIDE_SPLIT;
|
||||
Eina_Bool disable_QUAD_SPLIT;
|
||||
Eina_Bool disable_QUAD_MERGE;
|
||||
Eina_Bool disable_BLINK;
|
||||
Eina_Bool disable_VIEWPORT;
|
||||
} Config_Types;
|
||||
|
||||
typedef struct Config
|
||||
{
|
||||
unsigned int config_version;
|
||||
Eina_Bool disable_ruler;
|
||||
Eina_Bool disable_maximize;
|
||||
Eina_Bool disable_transitions;
|
||||
unsigned int disabled_transition_count;
|
||||
Config_Types types;
|
||||
} Config;
|
||||
|
||||
|
||||
extern Mod *mod;
|
||||
extern Config *ds_config;
|
||||
|
||||
|
|
Loading…
Reference in New Issue