ou can choose shelf styles now - finally. added 2 more styles (gold and

invisible). themes can provide as many styles as u like.


SVN revision: 22391
This commit is contained in:
Carsten Haitzler 2006-04-29 03:51:27 +00:00
parent 3295ab33b7
commit 0279810e42
9 changed files with 757 additions and 30 deletions

View File

@ -1,6 +1,8 @@
images {
image: "e17_shelf_bg_h.png" COMP;
image: "e17_shelf_bg_v.png" COMP;
image: "e17_shelf_bg2_h.png" COMP;
image: "e17_shelf_bg2_v.png" COMP;
image: "e17_ibar_bg_h.png" COMP;
image: "e17_ibar_over_h.png" COMP;
}
@ -491,3 +493,616 @@ group {
}
}
}
group {
name: "shelf/gold/base";
data {
// this tells e the border is shaped
item: "shaped" "1";
}
parts {
part {
name: "base";
mouse_events: 0;
description {
state: "default" 0.0;
image {
normal: "e17_shelf_bg2_h.png";
border: 19 19 9 9;
}
fill {
origin {
offset: 0 -6;
}
size {
offset: 0 6;
}
}
}
description {
state: "top_left" 0.0;
inherit: "default" 0.0;
fill {
origin {
offset: -16 -6;
}
size {
offset: 16 6;
}
}
}
description {
state: "top_right" 0.0;
inherit: "default" 0.0;
fill {
origin {
offset: 0 -6;
}
size {
offset: 16 6;
}
}
}
description {
state: "bottom" 0.0;
inherit: "default" 0.0;
fill {
origin {
offset: 0 0;
}
size {
offset: 0 6;
}
}
}
description {
state: "bottom_left" 0.0;
inherit: "default" 0.0;
fill {
origin {
offset: -16 0;
}
size {
offset: 16 6;
}
}
}
description {
state: "bottom_right" 0.0;
inherit: "default" 0.0;
fill {
origin {
offset: 0 0;
}
size {
offset: 16 6;
}
}
}
description {
state: "left" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: -6 0;
}
size {
offset: 6 0;
}
}
}
description {
state: "left_top" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: -6 -16;
}
size {
offset: 6 16;
}
}
}
description {
state: "left_bottom" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: -6 0;
}
size {
offset: 6 16;
}
}
}
description {
state: "right" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: 0 0;
}
size {
offset: 6 0;
}
}
}
description {
state: "right_top" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: 0 -16;
}
size {
offset: 6 16;
}
}
}
description {
state: "right_bottom" 0.0;
image {
normal: "e17_shelf_bg2_v.png";
border: 9 9 19 19;
}
fill {
origin {
offset: 0 0;
}
size {
offset: 6 16;
}
}
}
}
part {
name: "items";
mouse_events: 0;
type: SWALLOW;
description {
state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 18 2;
}
rel2 {
relative: 1.0 1.0;
offset: -19 -3;
}
}
description {
state: "top_left" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
}
rel2 {
relative: 1.0 1.0;
offset: -19 -3;
}
}
description {
state: "top_right" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 18 2;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
}
}
description {
state: "bottom" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 18 2;
}
rel2 {
relative: 1.0 1.0;
offset: -19 -3;
}
}
description {
state: "bottom_left" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
}
rel2 {
relative: 1.0 1.0;
offset: -19 -3;
}
}
description {
state: "bottom_right" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 18 2;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
}
}
description {
state: "left" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 18;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -19;
}
}
description {
state: "left_top" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -19;
}
}
description {
state: "left_bottom" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 18;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
}
}
description {
state: "right" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 18;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -19;
}
}
description {
state: "right_top" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 2;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -19;
}
}
description {
state: "right_bottom" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 2 18;
}
rel2 {
relative: 1.0 1.0;
offset: -3 -3;
}
}
}
}
programs {
program {
name: "orient1";
signal: "set_orientation";
source: "top";
action: STATE_SET "default" 0.0;
target: "base";
target: "items";
}
program {
name: "orient2";
signal: "set_orientation";
source: "top_left";
action: STATE_SET "top_left" 0.0;
target: "base";
target: "items";
}
program {
name: "orient3";
signal: "set_orientation";
source: "top_right";
action: STATE_SET "top_right" 0.0;
target: "base";
target: "items";
}
program {
name: "orient4";
signal: "set_orientation";
source: "bottom";
action: STATE_SET "bottom" 0.0;
target: "base";
target: "items";
}
program {
name: "orient5";
signal: "set_orientation";
source: "bottom_left";
action: STATE_SET "bottom_left" 0.0;
target: "base";
target: "items";
}
program {
name: "orient6";
signal: "set_orientation";
source: "bottom_right";
action: STATE_SET "bottom_right" 0.0;
target: "base";
target: "items";
}
program {
name: "orient7";
signal: "set_orientation";
source: "left";
action: STATE_SET "left" 0.0;
target: "base";
target: "items";
}
program {
name: "orient8";
signal: "set_orientation";
source: "left_top";
action: STATE_SET "left_top" 0.0;
target: "base";
target: "items";
}
program {
name: "orient9";
signal: "set_orientation";
source: "left_bottom";
action: STATE_SET "left_bottom" 0.0;
target: "base";
target: "items";
}
program {
name: "orient10";
signal: "set_orientation";
source: "right";
action: STATE_SET "right" 0.0;
target: "base";
target: "items";
}
program {
name: "orient11";
signal: "set_orientation";
source: "right_top";
action: STATE_SET "right_top" 0.0;
target: "base";
target: "items";
}
program {
name: "orient12";
signal: "set_orientation";
source: "right_bottom";
action: STATE_SET "right_bottom" 0.0;
target: "base";
target: "items";
}
}
}
group {
name: "shelf/gold/inset";
parts {
part {
name: "background";
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {
to: "overlay";
}
rel2 {
to: "overlay";
}
image {
normal: "e17_ibar_bg_h.png";
border: 6 6 6 6;
}
fill {
smooth: 0;
}
}
}
part {
name: "items_clip";
type: RECT;
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {
to: "background";
offset: 4 4;
}
rel2 {
to: "background";
offset: -5 -5;
}
color: 255 255 255 255;
}
}
part {
name: "items";
type: SWALLOW;
mouse_events: 0;
clip_to: "items_clip";
description {
state: "default" 0.0;
rel1 {
offset: 4 4;
}
rel2 {
offset: -5 -5;
}
color: 0 0 0 0;
}
}
part {
name: "overlay";
mouse_events: 0;
description {
state: "default" 0.0;
image {
normal: "e17_ibar_over_h.png";
border: 13 13 13 13;
middle: 0;
}
fill {
smooth: 0;
}
}
}
}
}
group {
name: "shelf/invisible/base";
data {
// this tells e the border is shaped
item: "shaped" "1";
}
parts {
part {
name: "items";
mouse_events: 0;
type: SWALLOW;
description {
state: "default" 0.0;
}
}
}
}
group {
name: "shelf/invisible/inset";
parts {
part {
name: "background";
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {
to: "overlay";
}
rel2 {
to: "overlay";
}
image {
normal: "e17_ibar_bg_h.png";
border: 6 6 6 6;
}
fill {
smooth: 0;
}
}
}
part {
name: "items_clip";
type: RECT;
mouse_events: 0;
description {
state: "default" 0.0;
rel1 {
to: "background";
offset: 4 4;
}
rel2 {
to: "background";
offset: -5 -5;
}
color: 255 255 255 255;
}
}
part {
name: "items";
type: SWALLOW;
mouse_events: 0;
clip_to: "items_clip";
description {
state: "default" 0.0;
rel1 {
offset: 4 4;
}
rel2 {
offset: -5 -5;
}
color: 0 0 0 0;
}
}
part {
name: "overlay";
mouse_events: 0;
description {
state: "default" 0.0;
image {
normal: "e17_ibar_over_h.png";
border: 13 13 13 13;
middle: 0;
}
fill {
smooth: 0;
}
}
}
}
}

View File

@ -421,4 +421,6 @@ e17_border3b.png \
e17_border5b.png \
e17_border7b.png \
e17_shelf_bg_h.png \
e17_shelf_bg_v.png
e17_shelf_bg_v.png \
e17_shelf_bg2_h.png \
e17_shelf_bg2_v.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -484,9 +484,9 @@ e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, char *style, Evas_Object
{
gcc->o_frame = gc->frame_request.func(gc->frame_request.data, gcc,
style);
gcc->style = evas_stringshare_add(style);
if (gcc->o_frame)
{
gcc->inset = 1;
edje_object_size_min_calc(gcc->o_frame,
&(gcc->pad.w), &(gcc->pad.h));
gcc->o_box = e_box_add(gcc->gadcon->evas);
@ -811,15 +811,30 @@ e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int resizable)
}
static void
_e_gadcon_client_cb_menu_inset(void *data, E_Menu *m, E_Menu_Item *mi)
_e_gadcon_client_cb_menu_style_plain(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadcon_Client *gcc;
E_Gadcon *gc;
gcc = data;
gc = gcc->gadcon;
if (gcc->inset) gcc->inset = 0;
else gcc->inset = 1;
if (gcc->style) evas_stringshare_del(gcc->style);
gcc->style = NULL;
_e_gadcon_client_save(gcc);
e_gadcon_unpopulate(gc);
e_gadcon_populate(gc);
}
static void
_e_gadcon_client_cb_menu_style_inset(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadcon_Client *gcc;
E_Gadcon *gc;
gcc = data;
gc = gcc->gadcon;
if (gcc->style) evas_stringshare_del(gcc->style);
gcc->style = evas_stringshare_add("inset");
_e_gadcon_client_save(gcc);
e_gadcon_unpopulate(gc);
e_gadcon_populate(gc);
@ -870,17 +885,38 @@ _e_gadcon_client_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
EAPI void
e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags)
{
E_Menu *mn;
E_Menu_Item *mi;
E_OBJECT_CHECK(gcc);
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
mn = e_menu_new();
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Plain"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/plain");
e_menu_item_radio_group_set(mi, 1);
e_menu_item_radio_set(mi, 1);
if (!gcc->style) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_plain, gcc);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Inset"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/plain");
e_menu_item_radio_group_set(mi, 1);
e_menu_item_radio_set(mi, 1);
if ((gcc->style) && (!strcmp(gcc->style, "inset")))
e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_style_inset, gcc);
/***/
mi = e_menu_item_new(menu);
e_menu_item_label_set(mi, _("Inset appearance"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/inset");
e_menu_item_check_set(mi, 1);
if (gcc->o_frame) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_inset, gcc);
e_menu_item_label_set(mi, _("Appearance"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/appearance");
e_menu_item_submenu_set(mi, mn);
e_object_del(E_OBJECT(mn));
mi = e_menu_item_new(menu);
e_menu_item_label_set(mi, _("Automatically scroll contents"));
@ -989,6 +1025,7 @@ _e_gadcon_client_free(E_Gadcon_Client *gcc)
evas_stringshare_del(gcc->id);
if (gcc->scroll_timer) ecore_timer_del(gcc->scroll_timer);
if (gcc->scroll_animator) ecore_animator_del(gcc->scroll_animator);
if (gcc->style) evas_stringshare_del(gcc->style);
free(gcc);
}
@ -1136,8 +1173,8 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc)
cf_gcc->autoscroll = gcc->autoscroll;
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
cf_gcc->style = NULL;
if (gcc->inset)
cf_gcc->style = evas_stringshare_add("inset");
if (gcc->style)
cf_gcc->style = evas_stringshare_add(gcc->style);
cf_gcc->resizable = gcc->resizable;
ok++;
break;
@ -1165,8 +1202,8 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc)
cf_gcc->autoscroll = gcc->autoscroll;
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
cf_gcc->style = NULL;
if (gcc->inset)
cf_gcc->style = evas_stringshare_add("inset");
if (gcc->style)
cf_gcc->style = evas_stringshare_add(gcc->style);
cf_gcc->resizable = gcc->resizable;
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
ok++;

View File

@ -105,14 +105,14 @@ struct _E_Gadcon_Client
struct {
Evas_Coord w, h;
} pad, min, aspect;
unsigned char inset : 1;
unsigned char autoscroll : 1;
unsigned char resizable : 1;
Ecore_Timer *scroll_timer;
Ecore_Animator *scroll_animator;
double scroll_pos;
double scroll_wanted;
E_Menu *menu;
char *style;
unsigned char autoscroll : 1;
unsigned char resizable : 1;
unsigned char moving : 1;
unsigned char resizing : 1;

View File

@ -4,7 +4,7 @@
#include "e.h"
/* PROTOTYPES - same all the time */
//typedef struct _CFBorder CFBorder;
typedef struct _CFStyle CFStyle;
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
@ -22,13 +22,14 @@ struct _E_Config_Dialog_Data
int fit_size;
int size;
int layering;
Evas_List *cfslist;
};
//struct _CFBorder
//{
// E_Config_Dialog_Data *cfdata;
// const char *bordername;
//};
struct _CFStyle
{
E_Config_Dialog_Data *cfdata;
const char *style;
};
/* a nice easy setup function that does the dirty work */
EAPI void
@ -101,6 +102,11 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
/* Free the cfdata */
cfdata->es->config_dialog = NULL;
if (cfdata->style) free(cfdata->style);
while (cfdata->cfslist)
{
E_FREE(cfdata->cfslist->data);
cfdata->cfslist = evas_list_remove_list(cfdata->cfslist, cfdata->cfslist);
}
free(cfdata);
}
@ -138,7 +144,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
zone = cfdata->es->zone;
id = cfdata->es->id;
cfdata->es->config_dialog = NULL;
e_object_del(cfdata->es);
e_object_del(E_OBJECT(cfdata->es));
cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name,
cfdata->escfg->style,
cfdata->escfg->popup,
@ -160,12 +166,17 @@ static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
/* generate the core widget layout for a basic dialog */
Evas_Object *o, *of, *ob;
Evas_Object *o, *o2, *of, *ob, *oi, *oj;
E_Radio_Group *rg;
Evas_Coord wmw, wmh;
Evas_List *styles, *l;
int sel, n;
CFStyle *cfs;
/* FIXME: this is just raw config now - it needs UI improvments */
o = e_widget_list_add(evas, 0, 0);
o = e_widget_list_add(evas, 1, 1);
o2 = e_widget_list_add(evas, 0, 0);
of = e_widget_framelist_add(evas, _("Stacking"), 0);
rg = e_widget_radio_group_new(&(cfdata->layering));
@ -175,7 +186,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Above Everything"), 2, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_widget_list_object_append(o2, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Size"), 0);
ob = e_widget_check_add(evas, _("Shrink length fit contents"), &(cfdata->fit_along));
@ -186,7 +197,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 200, 4, 0, NULL, &(cfdata->size), 200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_widget_list_object_append(o2, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Layout"), 0);
rg = e_widget_radio_group_new(&(cfdata->orient));
@ -214,7 +225,41 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Right Bottom"), E_GADCON_ORIENT_CORNER_RB, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_widget_list_object_append(o2, of, 1, 1, 0.5);
e_widget_list_object_append(o, o2, 1, 1, 0.5);
oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style));
sel = 0;
styles = e_theme_shelf_list();
for (n = 0, l = styles; l; l = l->next, n++)
{
char buf[4096];
cfs = E_NEW(CFStyle, 1);
cfs->cfdata = cfdata;
cfs->style = "default";
cfdata->cfslist = evas_list_append(cfdata->cfslist, cfs);
ob = e_livethumb_add(evas);
e_livethumb_vsize_set(ob, 256, 40);
oj = edje_object_add(e_livethumb_evas_get(ob));
snprintf(buf, sizeof(buf), "shelf/%s/base",
(char *)l->data);
e_theme_edje_object_set(oj, "base/theme/shelf", buf);
e_livethumb_thumb_set(ob, oj);
e_widget_ilist_append(oi, ob, (char *)l->data, NULL, NULL, l->data);
if (!strcmp(cfdata->es->style, (char *)l->data))
sel = n;
}
e_widget_min_size_get(oi, &wmw, &wmh);
e_widget_min_size_set(oi, wmw, 250);
e_widget_ilist_go(oi);
e_widget_ilist_selected_set(oi, sel);
e_widget_list_object_append(o, oi, 1, 1, 0.5);
return o;
}

View File

@ -25,6 +25,7 @@ static Evas_Hash *group_cache = NULL;
static Evas_List *categories = NULL;
static Evas_List *transitions = NULL;
static Evas_List *borders = NULL;
static Evas_List *shelfs = NULL;
/* externally accessible functions */
@ -51,6 +52,7 @@ e_theme_init(void)
/* Find transitions */
transitions = _e_theme_collection_items_find("base/theme/transitions", "transitions");
borders = _e_theme_collection_items_find("base/theme/borders", "widgets/border");
shelfs = _e_theme_collection_items_find("base/theme/shelf", "shelf");
return 1;
}
@ -118,6 +120,11 @@ e_theme_shutdown(void)
evas_stringshare_del(borders->data);
borders = evas_list_remove_list(borders, borders);
}
while (shelfs)
{
evas_stringshare_del(shelfs->data);
shelfs = evas_list_remove_list(shelfs, shelfs);
}
return 1;
}
@ -423,6 +430,25 @@ e_theme_border_list(void)
return borders;
}
EAPI int
e_theme_shelf_find(const char *shelf)
{
Evas_List *l;
for (l = shelfs; l; l = l->next)
{
if (!strcmp(shelf, l->data))
return 1;
}
return 0;
}
EAPI Evas_List *
e_theme_shelf_list(void)
{
return shelfs;
}
/* local subsystem functions */
static Evas_Bool

View File

@ -24,6 +24,8 @@ EAPI int e_theme_transition_find(const char *transition);
EAPI Evas_List *e_theme_transition_list(void);
EAPI int e_theme_border_find(const char *border);
EAPI Evas_List *e_theme_border_list(void);
EAPI int e_theme_shelf_find(const char *shelf);
EAPI Evas_List *e_theme_shelf_list(void);
#endif
#endif