forked from enlightenment/enlightenment
e packages build again - also not much point having an enlightenment-data as
it's built as an arch specific package and it is intrinsically required by e and cannot work without it nor is the data shared betwene e and other apps unless e itself is installed too SVN revision: 22260
This commit is contained in:
parent
c9cda2cb39
commit
fbd972cdb9
|
@ -11,7 +11,7 @@ bin_SCRIPTS = enlightenment-config
|
|||
EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN enlightenment.spec \
|
||||
debian/changelog debian/changelog.in debian/copyright \
|
||||
debian/rules debian/enlightenment.install \
|
||||
debian/enlightenment.docs debian/enlightenment-data.install \
|
||||
debian/enlightenment.docs \
|
||||
debian/libe.install debian/libe-dev.install debian/control \
|
||||
enlightenment.spec.in
|
||||
|
||||
|
|
|
@ -114,6 +114,31 @@ group {
|
|||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "ac";
|
||||
clip_to: "fade_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
aspect: 0.975609756 0.975609756;
|
||||
align: 1.0 1.0;
|
||||
max: 40 41;
|
||||
visible: 0;
|
||||
rel1 {
|
||||
relative: 0.5 0.5;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
}
|
||||
image {
|
||||
normal: "e17_battery_ac.png";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "active" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
visible: 1;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "reading";
|
||||
type: TEXT;
|
||||
|
@ -170,31 +195,6 @@ group {
|
|||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "ac";
|
||||
clip_to: "fade_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
aspect: 0.975609756 0.975609756;
|
||||
align: 1.0 1.0;
|
||||
max: 40 41;
|
||||
visible: 0;
|
||||
rel1 {
|
||||
relative: 0.5 0.5;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
}
|
||||
image {
|
||||
normal: "e17_battery_ac.png";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "active" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
visible: 1;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "fade_clip";
|
||||
type: RECT;
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
images {
|
||||
image: "e17_clock_bg.png" COMP;
|
||||
image: "e17_clock_fg.png" COMP;
|
||||
image: "e17_ibar_over_h.png" COMP;
|
||||
image: "e17_ibar_bg_h.png" COMP;
|
||||
image: "e17_clock_seconds_00.png" COMP;
|
||||
image: "e17_clock_seconds_01.png" COMP;
|
||||
image: "e17_clock_seconds_02.png" COMP;
|
||||
|
@ -189,23 +187,9 @@ group {
|
|||
script {
|
||||
public clock_cb(val) {
|
||||
new buf[11];
|
||||
new digitalVal[15];
|
||||
new hourStr[4], minuteStr[4], secondStr[4];
|
||||
new year, month, day, yearday, weekday, hour, minute;
|
||||
new Float:second;
|
||||
new v;
|
||||
new isAfternoon;
|
||||
new digiBuf[2];
|
||||
new digitalStyle;
|
||||
new DIGITAL_STYLE_NONE, DIGITAL_STYLE_NORMAL, DIGITAL_STYLE_24HOUR;
|
||||
|
||||
DIGITAL_STYLE_NONE = 0;
|
||||
DIGITAL_STYLE_NORMAL = 1;
|
||||
DIGITAL_STYLE_24HOUR = 2;
|
||||
|
||||
get_text(PART:"digitalStyle", digiBuf, 2);
|
||||
|
||||
digitalStyle = atoi(digiBuf);
|
||||
|
||||
date(year, month, day, yearday, weekday, hour, minute, second);
|
||||
v = round(second);
|
||||
|
@ -216,7 +200,6 @@ group {
|
|||
#endif
|
||||
#if E17_PROFILE != HIRES_PDA && E17_PROFILE != LOWRES_PDA && E17_PROFILE != MEDIUMRES_PDA
|
||||
buf[0] = 0;
|
||||
digitalVal[0] = 0;
|
||||
if (v < 10) {snprintf(buf, 10, "0%i", v);}
|
||||
else {snprintf(buf, 10, "%i", v);}
|
||||
set_state(PART:"seconds", buf, 0.0);
|
||||
|
@ -232,59 +215,6 @@ group {
|
|||
if (v < 10) {snprintf(buf, 10, "0%i", v);}
|
||||
else {snprintf(buf, 10, "%i", v);}
|
||||
set_state(PART:"hour", buf, 0.0);
|
||||
|
||||
|
||||
buf[0] = 0;
|
||||
v = round(second);
|
||||
if (v < 10) {snprintf(buf, 10, "0%i", v);}
|
||||
else {snprintf(buf, 10, "%i", v);}
|
||||
snprintf(secondStr, 3, "%s", buf);
|
||||
|
||||
buf[0] = 0;
|
||||
if (minute < 10) {snprintf(buf, 10, "0%i", minute);}
|
||||
else {snprintf(buf, 10, "%i", minute);}
|
||||
snprintf(minuteStr, 3, "%s", buf);
|
||||
|
||||
buf[0] = 0;
|
||||
isAfternoon = 0;
|
||||
v = hour;
|
||||
if (hour >= 12 && hour < 24) { isAfternoon = 1; }
|
||||
if (digitalStyle == DIGITAL_STYLE_NORMAL) {
|
||||
v = (v % 12);
|
||||
if (v == 0) { v = 12; }
|
||||
}
|
||||
if (digitalStyle == DIGITAL_STYLE_24HOUR && v < 10) {
|
||||
snprintf(buf, 10, "0%i", v);
|
||||
} else {
|
||||
snprintf(buf, 10, "%i", v);
|
||||
}
|
||||
snprintf(hourStr, 3, "%s", buf);
|
||||
|
||||
buf[0] = 0;
|
||||
|
||||
if (isAfternoon == 1) {
|
||||
snprintf(buf, 10, "PM");
|
||||
} else {
|
||||
snprintf(buf, 10, "AM");
|
||||
}
|
||||
|
||||
if (digitalStyle != DIGITAL_STYLE_NONE) {
|
||||
if (digitalStyle == DIGITAL_STYLE_NORMAL) {
|
||||
snprintf(digitalVal, 14, "%s:%s:%s %s", hourStr, minuteStr, secondStr, buf);
|
||||
} else if (digitalStyle == DIGITAL_STYLE_24HOUR) {
|
||||
snprintf(digitalVal, 14, " %s:%s:%s ", hourStr, minuteStr, secondStr);
|
||||
}
|
||||
|
||||
set_text(PART:"digital", digitalVal);
|
||||
set_state(PART:"digital", "digital", 0.0);
|
||||
set_state(PART:"digital_bg", "digital", 0.0);
|
||||
set_state(PART:"digital_bg_overlay", "digital", 0.0);
|
||||
} else {
|
||||
set_text(PART:"digital", "");
|
||||
set_state(PART:"digital", "hidden", 0.0);
|
||||
set_state(PART:"digital_bg", "hidden", 0.0);
|
||||
set_state(PART:"digital_bg_overlay", "hidden", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
parts {
|
||||
|
@ -310,10 +240,10 @@ group {
|
|||
state: "default" 0.0;
|
||||
aspect: 1.0 1.0;
|
||||
rel1 {
|
||||
relative: 0.1 0.1;
|
||||
relative: 0.05 0.05;
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.9 0.9;
|
||||
relative: 0.95 0.95;
|
||||
}
|
||||
image {
|
||||
normal: "e17_clock_"IND"_00.png";
|
||||
|
@ -403,10 +333,10 @@ group {
|
|||
state: "default" 0.0;
|
||||
aspect: 1.0 1.0;
|
||||
rel1 {
|
||||
relative: 0.1 0.1;
|
||||
relative: 0.05 0.05;
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.9 0.9;
|
||||
relative: 0.95 0.95;
|
||||
}
|
||||
image {
|
||||
normal: "e17_clock_"IND"_00.png";
|
||||
|
@ -495,10 +425,10 @@ group {
|
|||
state: "default" 0.0;
|
||||
aspect: 1.0 1.0;
|
||||
rel1 {
|
||||
relative: 0.2 0.2;
|
||||
relative: 0.1 0.1;
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.8 0.8;
|
||||
relative: 0.9 0.9;
|
||||
}
|
||||
image {
|
||||
normal: "e17_clock_"IND"_00.png";
|
||||
|
@ -592,124 +522,6 @@ group {
|
|||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "digital_bg_area";
|
||||
type: "RECT";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
min: 16 16;
|
||||
rel1 {
|
||||
relative: 0.0 0.8;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
}
|
||||
visible: 0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "digital_bg_overlay";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "digital_bg_area";
|
||||
relative: 0.0 0.0;
|
||||
}
|
||||
rel2 {
|
||||
to: "digital_bg_area";
|
||||
relative: 1.0 1.0;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_over_h.png";
|
||||
border: 13 13 13 13;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
color: 255 255 255 192;
|
||||
}
|
||||
description {
|
||||
state: "hidden" 0.0;
|
||||
visible: 0;
|
||||
image {
|
||||
normal: "e17_ibar_over_h.png";
|
||||
border: 13 13 13 13;
|
||||
middle: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "digital_bg";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "digital_bg_area";
|
||||
relative: 0.0 0.0;
|
||||
}
|
||||
rel2 {
|
||||
to: "digital_bg_area";
|
||||
relative: 1.0 1.0;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_bg_h.png";
|
||||
border: 6 6 6 6;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
color: 255 255 255 128;
|
||||
}
|
||||
description {
|
||||
state: "hidden" 0.0;
|
||||
visible: 0;
|
||||
image {
|
||||
normal: "e17_ibar_bg_h.png";
|
||||
border: 6 6 6 6;
|
||||
middle: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "digital";
|
||||
type: TEXT;
|
||||
effect: SOFT_SHADOW;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "digital_bg_area";
|
||||
offset: 3 4;
|
||||
}
|
||||
rel2 {
|
||||
to: "digital_bg_area";
|
||||
offset: -2 -2;
|
||||
}
|
||||
color: 255 255 255 255;
|
||||
color3: 0 0 0 32;
|
||||
text {
|
||||
text: "00:00:00 AM";
|
||||
font: "Edje-Vera";
|
||||
size: 15;
|
||||
fit: 0 1;
|
||||
align: 0.5 0.5;
|
||||
text_class: "clock";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "hidden" 0.0;
|
||||
visible: 0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "digitalStyle";
|
||||
type: TEXT;
|
||||
description {
|
||||
state: "hidden" 0.0;
|
||||
visible: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
programs {
|
||||
program {
|
||||
|
|
|
@ -621,17 +621,54 @@ group {
|
|||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 4 4;
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -5 -5;
|
||||
offset: -3 -3;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
description {
|
||||
state: "bigger" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 0 0;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -1 -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "over";
|
||||
type: RECT;
|
||||
repeat_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
programs {
|
||||
program {
|
||||
name: "hover_in";
|
||||
signal: "mouse,in";
|
||||
source: "over";
|
||||
action: STATE_SET "bigger" 0.0;
|
||||
transition: LINEAR 0.1;
|
||||
target: "item";
|
||||
}
|
||||
program {
|
||||
name: "hover_out";
|
||||
signal: "mouse,out";
|
||||
source: "over";
|
||||
action: STATE_SET "default" 0.0;
|
||||
transition: LINEAR 0.2;
|
||||
target: "item";
|
||||
}
|
||||
program {
|
||||
name: "exec_start";
|
||||
signal: "start";
|
||||
|
@ -671,12 +708,6 @@ group {
|
|||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
offset: 4 4;
|
||||
}
|
||||
rel2 {
|
||||
offset: -5 -5;
|
||||
}
|
||||
color: 255 255 255 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -151,9 +151,63 @@ group {
|
|||
}
|
||||
}
|
||||
part {
|
||||
name: "pager";
|
||||
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: "pager";
|
||||
type: SWALLOW;
|
||||
mouse_events: 0;
|
||||
clip_to: "items_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "overlay";
|
||||
offset: 4 4;
|
||||
}
|
||||
rel2 {
|
||||
to: "overlay";
|
||||
offset: -5 -5;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "overlay";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
|
@ -165,7 +219,14 @@ group {
|
|||
relative: 1.0 1.0;
|
||||
offset: -17 -17;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
image {
|
||||
normal: "e17_ibar_over_h.png";
|
||||
border: 13 13 13 13;
|
||||
middle: 0;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -377,7 +438,8 @@ group {
|
|||
}
|
||||
part {
|
||||
name: "overlay";
|
||||
mouse_events: 0;
|
||||
repeat_events: 1;
|
||||
// mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 10 KiB |
Binary file not shown.
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 17 KiB |
|
@ -2,7 +2,7 @@ Source: enlightenment
|
|||
Section: x11
|
||||
Priority: optional
|
||||
Maintainer: E17 Debian Team <debian@edevelop.org>
|
||||
Build-Depends: libevas-dev, libecore-dev, libeet-dev, libedje-dev, edje-bin, libembryo-dev, xlibs-dev, automake1.7 | automaken, libtool, debhelper (>= 4.0)
|
||||
Build-Depends: libevas-dev, libecore-dev, libeet-dev, libedje-dev, edje-bin, libembryo-dev, libx11-dev, x-dev, libxext-dev, automake1.7 | automaken, libtool, debhelper (>= 4.0)
|
||||
Standards-Version: 3.6.2.2
|
||||
|
||||
Package: enlightenment
|
||||
|
@ -10,24 +10,13 @@ Architecture: any
|
|||
Section: x11
|
||||
Recommends: libevas-engine-xrender
|
||||
Suggests: entrance
|
||||
Depends: ${shlibs:Depends}, libe, enlightenment-data (>= 0.16.999), libevas, libecore, libecore-con, libecore-evas, libecore-file, libecore-ipc, libecore-job, libecore-txt, libecore-x, libeet, libembryo, embryo-bin, edje-bin, libedje, libevas-loader-eet, libevas-loader-jpeg, libevas-loader-png, libevas-saver-eet, libevas-saver-jpeg, libevas-saver-png, libevas-engine-buffer, libevas-engine-software-x11
|
||||
Depends: ${shlibs:Depends}, libe, libevas, libecore, libecore-con, libecore-evas, libecore-file, libecore-ipc, libecore-job, libecore-txt, libecore-x, libeet, libembryo, embryo-bin, edje-bin, libedje, libevas-loader-eet, libevas-loader-jpeg, libevas-loader-png, libevas-saver-eet, libevas-saver-jpeg, libevas-saver-png, libevas-engine-buffer, libevas-engine-software-x11
|
||||
Description: Enlightenment themes, etc.
|
||||
Enlightenment is an advanced window manager for X11. Unique
|
||||
features include: a fully animated background, nice drop shadows
|
||||
around windows, backed by an extremely clean and optimized
|
||||
foundation of APIs.
|
||||
|
||||
Package: enlightenment-data
|
||||
Architecture: any
|
||||
Section: x11
|
||||
Depends: enlightenment (= ${Source-Version})
|
||||
Conflicts: enlightenment-data (< 0.16.999)
|
||||
Description: Enlightenment themes, etc.
|
||||
Enlightenment is an advanced window manager for X11. Unique
|
||||
features include: a fully animated background, nice drop shadows
|
||||
around windows, a unique application launcher module (ibar). All
|
||||
backed by an extremely clean and optimized foundation of APIs.
|
||||
|
||||
Package: libe
|
||||
Section: libs
|
||||
Architecture: any
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
debian/tmp/usr/share/enlightenment/data/themes/*.edj
|
||||
debian/tmp/usr/share/enlightenment/data/init/*.edj
|
|
@ -21,9 +21,5 @@ debian/tmp/usr/lib/enlightenment/modules/start/*.png
|
|||
debian/tmp/usr/lib/enlightenment/modules/temperature/*/*.so
|
||||
debian/tmp/usr/lib/enlightenment/modules/temperature/*.png
|
||||
debian/tmp/usr/share/enlightenment
|
||||
debian/tmp/usr/share/enlightenment
|
||||
debian/tmp/usr/share/enlightenment
|
||||
debian/tmp/usr/share/enlightenment
|
||||
debian/tmp/usr/share/enlightenment
|
||||
debian/tmp/usr/share/locale
|
||||
debian/tmp/usr/share/xsessions
|
||||
|
|
|
@ -5727,6 +5727,21 @@ _e_border_eval(E_Border *bd)
|
|||
changed = 0;
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
if (rects[i].x < 0)
|
||||
{
|
||||
rects[i].width -= rects[i].x;
|
||||
rects[i].x = 0;
|
||||
}
|
||||
if ((rects[i].x + rects[i].width) > bd->w)
|
||||
rects[i].width = rects[i].width - rects[i].x;
|
||||
if (rects[i].y < 0)
|
||||
{
|
||||
rects[i].height -= rects[i].y;
|
||||
rects[i].y = 0;
|
||||
}
|
||||
if ((rects[i].y + rects[i].height) > bd->h)
|
||||
rects[i].height = rects[i].height - rects[i].y;
|
||||
|
||||
if ((orects[i].x != rects[i].x) ||
|
||||
(orects[i].y != rects[i].y) ||
|
||||
(orects[i].width != rects[i].width) ||
|
||||
|
|
|
@ -91,6 +91,7 @@ e_config_init(void)
|
|||
E_CONFIG_VAL(D, T, geom.res, INT);
|
||||
E_CONFIG_VAL(D, T, style, STR);
|
||||
E_CONFIG_VAL(D, T, autoscroll, UCHAR);
|
||||
E_CONFIG_VAL(D, T, resizable, UCHAR);
|
||||
|
||||
_e_config_gadcon_edd = E_CONFIG_DD_NEW("E_Config_Gadcon", E_Config_Gadcon);
|
||||
#undef T
|
||||
|
@ -1016,71 +1017,111 @@ e_config_init(void)
|
|||
"desk_linear_flip_by", "1");
|
||||
}
|
||||
IFCFGEND;
|
||||
/* yes - this causes a small leak - i know. it is for testing temporarily x*/
|
||||
IFCFG(0x0093); /* the version # where this value(s) was introduced */
|
||||
/* FIXME: wipe previous shelves and gadcons - remove this eventually */
|
||||
e_config->shelves = NULL;
|
||||
e_config->gadcons = NULL;
|
||||
// IFCFG(0x008e); /* the version # where this value(s) was introduced */
|
||||
#if 1 // this is liable to change
|
||||
{
|
||||
E_Config_Shelf *cf_es;
|
||||
|
||||
cf_es = E_NEW(E_Config_Shelf, 1);
|
||||
cf_es->name = evas_stringshare_add("shelf");
|
||||
cf_es->container = 0;
|
||||
cf_es->zone = 0;
|
||||
cf_es->popup = 1;
|
||||
cf_es->layer = 200;
|
||||
cf_es->orient = E_GADCON_ORIENT_TOP;
|
||||
cf_es->fit_along = 1;
|
||||
cf_es->fit_size = 0;
|
||||
cf_es->style = evas_stringshare_add("default");
|
||||
cf_es->size = 40;
|
||||
e_config->shelves = evas_list_append(e_config->shelves, cf_es);
|
||||
#define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, _style, _size) \
|
||||
cf_es = E_NEW(E_Config_Shelf, 1); \
|
||||
cf_es->name = evas_stringshare_add(_name); \
|
||||
cf_es->container = _con; \
|
||||
cf_es->zone = _zone; \
|
||||
cf_es->popup = _pop; \
|
||||
cf_es->layer = _lay; \
|
||||
cf_es->orient = _orient; \
|
||||
cf_es->fit_along = _fita; \
|
||||
cf_es->fit_size = _fits; \
|
||||
cf_es->style = evas_stringshare_add(_style); \
|
||||
cf_es->size = _size; \
|
||||
e_config->shelves = evas_list_append(e_config->shelves, cf_es)
|
||||
/* shelves for 4 zones on head 0 by default */
|
||||
CFG_SHELF("shelf", 0, 0,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
CFG_SHELF("shelf", 0, 1,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
CFG_SHELF("shelf", 0, 2,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
CFG_SHELF("shelf", 0, 3,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
/* shelves for heada 1, 2, and 3 by default */
|
||||
CFG_SHELF("shelf", 1, 0,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
CFG_SHELF("shelf", 2, 0,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
CFG_SHELF("shelf", 3, 0,
|
||||
1, 200, E_GADCON_ORIENT_BOTTOM,
|
||||
1, 0, "default", 40);
|
||||
}
|
||||
{
|
||||
E_Config_Gadcon *cf_gc;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
|
||||
cf_gc = E_NEW(E_Config_Gadcon, 1);
|
||||
cf_gc->name = evas_stringshare_add("shelf");
|
||||
cf_gc->id = evas_stringshare_add("0");
|
||||
e_config->gadcons = evas_list_append(e_config->gadcons, cf_gc);
|
||||
#define CFG_GADCON(_name, _id) \
|
||||
cf_gc = E_NEW(E_Config_Gadcon, 1);\
|
||||
cf_gc->name = evas_stringshare_add(_name); \
|
||||
cf_gc->id = evas_stringshare_add(_id); \
|
||||
e_config->gadcons = evas_list_append(e_config->gadcons, cf_gc)
|
||||
#define CFG_GADCON_CLIENT(_name, _id, _res, _size, _pos, _style, _autoscr, _resizable) \
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); \
|
||||
cf_gcc->name = evas_stringshare_add(_name); \
|
||||
cf_gcc->id = evas_stringshare_add(_id); \
|
||||
cf_gcc->geom.res = _res; \
|
||||
cf_gcc->geom.size = _size; \
|
||||
cf_gcc->geom.pos = _pos; \
|
||||
if (_style) cf_gcc->style = evas_stringshare_add(_style); \
|
||||
else cf_gcc->style = NULL; \
|
||||
cf_gcc->autoscroll = _autoscr; \
|
||||
cf_gcc->resizable = _resizable; \
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc)
|
||||
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
cf_gcc->name = evas_stringshare_add("ibar");
|
||||
cf_gcc->id = evas_stringshare_add("default");
|
||||
cf_gcc->geom.res = 800;
|
||||
cf_gcc->geom.size = 200;
|
||||
cf_gcc->geom.pos = 400 - (cf_gcc->geom.size / 2);
|
||||
cf_gcc->style = evas_stringshare_add("inset");
|
||||
cf_gcc->autoscroll = 0;
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||
/* the default shelf on the default head/zone */
|
||||
CFG_GADCON("shelf", "0");
|
||||
CFG_GADCON_CLIENT("start", "default", 800, 32,
|
||||
0, NULL, 0, 0);
|
||||
CFG_GADCON_CLIENT("pager", "default", 800, 120,
|
||||
32, "inset", 0, 0);
|
||||
CFG_GADCON_CLIENT("ibar", "default", 800, 200,
|
||||
400 - (16 / 2), "inset", 1, 0);
|
||||
CFG_GADCON_CLIENT("temperature", "default", 800, 32,
|
||||
800 - (4 * 32), NULL, 0, 0);
|
||||
CFG_GADCON_CLIENT("cpufreq", "default", 800, 32,
|
||||
800 - (3 * 32), NULL, 0, 0);
|
||||
CFG_GADCON_CLIENT("battery", "default", 800, 32,
|
||||
800 - (2 * 32), NULL, 0, 0);
|
||||
CFG_GADCON_CLIENT("clock", "default", 800, 32,
|
||||
800 - (1 * 32), NULL, 0, 0);
|
||||
/* additional shelves for up to 3 more heads by default */
|
||||
CFG_GADCON("shelf", "1");
|
||||
CFG_GADCON_CLIENT("pager", "default2", 800, 120,
|
||||
0, "inset", 0, 0);
|
||||
CFG_GADCON_CLIENT("ibar", "default2", 800, 16,
|
||||
400 - (16 / 2), "inset", 1, 0);
|
||||
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
cf_gcc->name = evas_stringshare_add("clock");
|
||||
cf_gcc->id = evas_stringshare_add("default");
|
||||
cf_gcc->geom.res = 800;
|
||||
cf_gcc->geom.size = 32;
|
||||
cf_gcc->geom.pos = 800 - (cf_gcc->geom.size);
|
||||
cf_gcc->style = NULL;
|
||||
cf_gcc->autoscroll = 0;
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||
CFG_GADCON("shelf", "2");
|
||||
CFG_GADCON_CLIENT("pager", "default3", 800, 120,
|
||||
0, "inset", 0, 0);
|
||||
CFG_GADCON_CLIENT("ibar", "default2", 800, 16,
|
||||
400 - (16 / 2), "inset", 1, 0);
|
||||
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
cf_gcc->name = evas_stringshare_add("start");
|
||||
cf_gcc->id = evas_stringshare_add("default");
|
||||
cf_gcc->geom.res = 800;
|
||||
cf_gcc->geom.size = 32;
|
||||
cf_gcc->geom.pos = 0;
|
||||
cf_gcc->style = NULL;
|
||||
cf_gcc->autoscroll = 0;
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||
CFG_GADCON("shelf", "3");
|
||||
CFG_GADCON_CLIENT("pager", "default4", 800, 120,
|
||||
0, "inset", 0, 0);
|
||||
CFG_GADCON_CLIENT("ibar", "default2", 800, 16,
|
||||
400 - (16 / 2), "inset", 1, 0);
|
||||
}
|
||||
#endif
|
||||
// IFCFGEND;
|
||||
IFCFGEND;
|
||||
|
||||
#if 0 /* example of new config */
|
||||
IFCFG(0x008e); /* the version # where this value(s) was introduced */
|
||||
IFCFG(0x0090); /* the version # where this value(s) was introduced */
|
||||
e_config->new_value = 10; /* set the value(s) */
|
||||
IFCFGEND;
|
||||
#endif
|
||||
|
|
|
@ -50,7 +50,7 @@ typedef Eet_Data_Descriptor E_Config_DD;
|
|||
/* increment this whenever a new set of configvalues are added but the users
|
||||
* config doesn't need top be wiped - simply new values need to be put in
|
||||
*/
|
||||
#define E_CONFIG_FILE_GENERATION 0x008e
|
||||
#define E_CONFIG_FILE_GENERATION 0x0093
|
||||
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
|
||||
|
||||
#define E_EVAS_ENGINE_DEFAULT 0
|
||||
|
@ -317,6 +317,7 @@ struct _E_Config_Gadcon_Client
|
|||
} geom;
|
||||
const char *style;
|
||||
unsigned char autoscroll;
|
||||
unsigned char resizable;
|
||||
};
|
||||
|
||||
struct _E_Config_Shelf
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
*/
|
||||
#include "e.h"
|
||||
|
||||
/* FIXME: broken when drop areas intersect
|
||||
* (sub window has drop area on top of lower window or desktop -
|
||||
* also shutdown is broken (walking list and deleting from the list as u go
|
||||
* in this code is broken)
|
||||
*/
|
||||
/*
|
||||
* TODO:
|
||||
* - Let an internal drag work with several types.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -65,7 +65,7 @@ struct _E_Gadcon
|
|||
struct {
|
||||
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||
void *data;
|
||||
} resize_request;
|
||||
} resize_request, min_size_request;
|
||||
struct {
|
||||
Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style);
|
||||
void *data;
|
||||
|
@ -91,20 +91,30 @@ struct _E_Gadcon_Client
|
|||
char *name;
|
||||
char *id;
|
||||
Evas_Object *o_base;
|
||||
Evas_Object *o_box;
|
||||
Evas_Object *o_frame;
|
||||
Evas_Object *o_control;
|
||||
Evas_Object *o_event;
|
||||
E_Gadcon_Client_Class client_class;
|
||||
E_Gadcon_Client_Class *client_class;
|
||||
void *data;
|
||||
struct {
|
||||
int pos, size, res;
|
||||
} config;
|
||||
struct {
|
||||
Evas_Coord w, h;
|
||||
} pad;
|
||||
} 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;
|
||||
|
||||
unsigned char moving : 1;
|
||||
Evas_Coord dx, dy, sx, sy;
|
||||
unsigned char resizing : 1;
|
||||
Evas_Coord dx, dy, sx, sy, sw, sh;
|
||||
};
|
||||
|
||||
EAPI int e_gadcon_init(void);
|
||||
|
@ -113,10 +123,13 @@ EAPI void e_gadcon_provider_register(E_Gadcon_Client_Class *cc);
|
|||
EAPI void e_gadcon_provider_unregister(E_Gadcon_Client_Class *cc);
|
||||
EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, char *id, Evas_Object *obj, char *swallow_name);
|
||||
EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||
EAPI void e_gadcon_min_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
|
||||
EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
|
||||
EAPI void e_gadcon_frame_request_callback_set(E_Gadcon *gc, Evas_Object *(*func) (void *data, E_Gadcon_Client *gcc, const char *style), void *data);
|
||||
EAPI void e_gadcon_layout_policy_set(E_Gadcon *gc, E_Gadcon_Layout_Policy layout_policy);
|
||||
EAPI void e_gadcon_populate(E_Gadcon *gc);
|
||||
EAPI void e_gadcon_unpopulate(E_Gadcon *gc);
|
||||
EAPI void e_gadcon_populate_class(E_Gadcon *gc, E_Gadcon_Client_Class *cc);
|
||||
EAPI void e_gadcon_orient(E_Gadcon *gc, E_Gadcon_Orient orient);
|
||||
EAPI void e_gadcon_edit_begin(E_Gadcon *gc);
|
||||
EAPI void e_gadcon_edit_end(E_Gadcon *gc);
|
||||
|
@ -128,11 +141,16 @@ EAPI void e_gadcon_ecore_evas_set(E_Gadcon *gc, Ecore_Evas *ee);
|
|||
EAPI int e_gadcon_canvas_zone_geometry_get(E_Gadcon *gc, int *x, int *y, int *w, int *h);
|
||||
|
||||
EAPI E_Gadcon_Client *e_gadcon_client_new(E_Gadcon *gc, char *name, char *id, char *style, Evas_Object *base_obj);
|
||||
EAPI void e_gadcon_client_edit_begin(E_Gadcon_Client *gcc);
|
||||
EAPI void e_gadcon_client_edit_end(E_Gadcon_Client *gcc);
|
||||
EAPI void e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
||||
EAPI void e_gadcon_client_min_size_set(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h);
|
||||
EAPI void e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h);
|
||||
EAPI void e_gadcon_client_edit_begin(E_Gadcon_Client *gcc);
|
||||
EAPI void e_gadcon_client_edit_end(E_Gadcon_Client *gcc);
|
||||
EAPI void e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int autoscroll);
|
||||
EAPI void e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int resizable);
|
||||
|
||||
EAPI void e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags);
|
||||
EAPI void e_gadcon_client_util_menu_attach(E_Gadcon_Client *gcc);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -129,5 +129,6 @@
|
|||
#include "e_gadcon.h"
|
||||
#include "e_shelf.h"
|
||||
#include "e_tlist.h"
|
||||
#include "e_widget_tlist.h"
|
||||
#include "e_widget_preview.h"
|
||||
#include "e_int_config_paths.h"
|
||||
|
|
|
@ -676,7 +676,8 @@ main(int argc, char **argv)
|
|||
e_test();
|
||||
|
||||
/* FIXME: for testing only */
|
||||
// e_shelf_config_init();
|
||||
//
|
||||
e_shelf_config_init();
|
||||
|
||||
/* no longer starting up */
|
||||
starting = 0;
|
||||
|
|
|
@ -64,6 +64,83 @@ _e_place_cb_sort_cmp(const void *v1, const void *v2)
|
|||
return (*((int *)v1)) - (*((int *)v2));
|
||||
}
|
||||
|
||||
static int
|
||||
_e_place_coverage_border_add(E_Zone *zone, Evas_List *skiplist, int ar, int x, int y, int w, int h)
|
||||
{
|
||||
Evas_List *ll;
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
int x2, y2, w2, h2;
|
||||
int ok;
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
ok = 1;
|
||||
x2 = (bd->x - zone->x); y2 = (bd->y - zone->y); w2 = bd->w; h2 = bd->h;
|
||||
for (ll = skiplist; ll; ll = ll->next)
|
||||
{
|
||||
if (ll->data == bd)
|
||||
{
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((ok) && (bd->visible) && E_INTERSECTS(x, y, w, h, x2, y2, w2, h2))
|
||||
{
|
||||
x0 = x;
|
||||
if (x < x2) x0 = x2;
|
||||
x00 = (x + w);
|
||||
if ((x2 + w2) < (x + w)) x00 = (x2 + w2);
|
||||
y0 = y;
|
||||
if (y < y2) y0 = y2;
|
||||
y00 = (y + h);
|
||||
if ((y2 + h2) < (y + h)) y00 = (y2 + h2);
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
return ar;
|
||||
}
|
||||
|
||||
static int
|
||||
_e_place_coverage_shelf_add(E_Zone *zone, int ar, int x, int y, int w, int h)
|
||||
{
|
||||
Evas_List *l;
|
||||
E_Shelf *es;
|
||||
int x2, y2, w2, h2;
|
||||
int ok;
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
for (l = e_shelf_list(); l; l = l->next)
|
||||
{
|
||||
|
||||
es = l->data;
|
||||
if (es->zone != zone) continue;
|
||||
x2 = es->x; y2 = es->y; w2 = es->w; h2 = es->h;
|
||||
if (E_INTERSECTS(x, y, w, h, x2, y2, w2, h2))
|
||||
{
|
||||
x0 = x;
|
||||
if (x < x2) x0 = x2;
|
||||
x00 = (x + w);
|
||||
if ((x2 + w2) < (x + w)) x00 = (x2 + w2);
|
||||
y0 = y;
|
||||
if (y < y2) y0 = y2;
|
||||
y00 = (y + h);
|
||||
if ((y2 + h2) < (y + h)) y00 = (y2 + h2);
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih) * 100; /* 100 == 100 times more unlikely for overlap than a normal window */
|
||||
}
|
||||
}
|
||||
return ar;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_place_zone_region_smart(E_Zone *zone, Evas_List *skiplist, int x, int y, int w, int h, int *rx, int *ry)
|
||||
{
|
||||
|
@ -90,59 +167,9 @@ e_place_zone_region_smart(E_Zone *zone, Evas_List *skiplist, int x, int y, int w
|
|||
|
||||
x -= zone->x;
|
||||
y -= zone->y;
|
||||
|
||||
if (e_config->window_placement_policy == E_WINDOW_PLACEMENT_ANTIGADGET)
|
||||
{
|
||||
Evas_List *l;
|
||||
int cx1, cx2, cy1, cy2;
|
||||
|
||||
cx1 = zone->x;
|
||||
cy1 = zone->y;
|
||||
cx2 = zone->x + zone->w;
|
||||
cy2 = zone->y + zone->h;
|
||||
|
||||
/* Find the smallest box */
|
||||
for (l = zone->container->gadman->clients; l; l = l->next)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
double ax, ay;
|
||||
|
||||
gmc = l->data;
|
||||
if ((gmc->zone != zone)) continue;
|
||||
|
||||
ax = gmc->ax;
|
||||
ay = gmc->ay;
|
||||
|
||||
if (((ax == 0.0) || (ax == 1.0)) &&
|
||||
((ay == 0.0) || (ay == 1.0)))
|
||||
{
|
||||
/* corner gadget */
|
||||
/* Fake removal from one alignment :) */
|
||||
if (gmc->w > gmc->h)
|
||||
ax = 0.5;
|
||||
else
|
||||
ay = 0.5;
|
||||
}
|
||||
|
||||
if ((ax == 0.0) && (gmc->x + gmc->w) > cx1)
|
||||
cx1 = (gmc->x + gmc->w);
|
||||
else if ((ax == 1.0) && (gmc->x < cx2))
|
||||
cx2 = gmc->x;
|
||||
else if ((ay == 0.0) && ((gmc->y + gmc->h) > cy1))
|
||||
cy1 = (gmc->y + gmc->h);
|
||||
else if ((ay == 1.0) && (gmc->y < cy2))
|
||||
cy2 = gmc->y;
|
||||
}
|
||||
|
||||
|
||||
zw = cx2 - cx1;
|
||||
zh = cy2 - cy1;
|
||||
}
|
||||
else
|
||||
{
|
||||
zw = zone->w;
|
||||
zh = zone->h;
|
||||
}
|
||||
|
||||
u_x = calloc(zw + 1, sizeof(char));
|
||||
u_y = calloc(zh + 1, sizeof(char));
|
||||
|
||||
|
@ -151,6 +178,134 @@ e_place_zone_region_smart(E_Zone *zone, Evas_List *skiplist, int x, int y, int w
|
|||
a_y[0] = 0;
|
||||
a_y[1] = zh;
|
||||
|
||||
if (e_config->window_placement_policy == E_WINDOW_PLACEMENT_ANTIGADGET)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
for (l = zone->container->gadman->clients; l; l = l->next)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
int bx, by, bw, bh;
|
||||
|
||||
gmc = l->data;
|
||||
if ((gmc->zone != zone)) continue;
|
||||
|
||||
bx = gmc->x;
|
||||
by = gmc->y;
|
||||
bw = gmc->w;
|
||||
bh = gmc->h;
|
||||
if (E_INTERSECTS(bx, by, bw, bh, 0, 0, zw, zh))
|
||||
{
|
||||
if ((bx > 0) && (bx <= zw) && (!u_x[bx]))
|
||||
{
|
||||
a_w++;
|
||||
if (a_w > a_alloc_w)
|
||||
{
|
||||
a_alloc_w += 32;
|
||||
E_REALLOC(a_x, int, a_alloc_w);
|
||||
}
|
||||
a_x[a_w - 1] = bx;
|
||||
u_x[bx] = 1;
|
||||
}
|
||||
if (((bx + bw) > 0) && ((bx + bw) <= zw) && (!u_x[bx + bw]))
|
||||
{
|
||||
a_w++;
|
||||
if (a_w > a_alloc_w)
|
||||
{
|
||||
a_alloc_w += 32;
|
||||
E_REALLOC(a_x, int, a_alloc_w);
|
||||
}
|
||||
a_x[a_w - 1] = bx + bw;
|
||||
u_x[bx + bw] = 1;
|
||||
}
|
||||
if ((by > 0) && (by <= zh) && (!u_y[by]))
|
||||
{
|
||||
a_h++;
|
||||
if (a_h > a_alloc_h)
|
||||
{
|
||||
a_alloc_h += 32;
|
||||
E_REALLOC(a_y, int, a_alloc_h);
|
||||
}
|
||||
a_y[a_h - 1] = by;
|
||||
u_y[by] = 1;
|
||||
}
|
||||
if (((by + bh) > 0) && ((by + bh) <= zh) && (!u_y[by + bh]))
|
||||
{
|
||||
a_h++;
|
||||
if (a_h > a_alloc_h)
|
||||
{
|
||||
a_alloc_h += 32;
|
||||
E_REALLOC(a_y, int, a_alloc_h);
|
||||
}
|
||||
a_y[a_h - 1] = by + bh;
|
||||
u_y[by + bh] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (l = e_shelf_list(); l; l = l->next)
|
||||
{
|
||||
E_Shelf *es;
|
||||
|
||||
es = l->data;
|
||||
if (es->zone == zone)
|
||||
{
|
||||
int bx, by, bw, bh;
|
||||
|
||||
bx = es->x;
|
||||
by = es->y;
|
||||
bw = es->w;
|
||||
bh = es->h;
|
||||
if (E_INTERSECTS(bx, by, bw, bh, 0, 0, zw, zh))
|
||||
{
|
||||
if ((bx > 0) && (bx <= zw) && (!u_x[bx]))
|
||||
{
|
||||
a_w++;
|
||||
if (a_w > a_alloc_w)
|
||||
{
|
||||
a_alloc_w += 32;
|
||||
E_REALLOC(a_x, int, a_alloc_w);
|
||||
}
|
||||
a_x[a_w - 1] = bx;
|
||||
u_x[bx] = 1;
|
||||
}
|
||||
if (((bx + bw) > 0) && ((bx + bw) <= zw) && (!u_x[bx + bw]))
|
||||
{
|
||||
a_w++;
|
||||
if (a_w > a_alloc_w)
|
||||
{
|
||||
a_alloc_w += 32;
|
||||
E_REALLOC(a_x, int, a_alloc_w);
|
||||
}
|
||||
a_x[a_w - 1] = bx + bw;
|
||||
u_x[bx + bw] = 1;
|
||||
}
|
||||
if ((by > 0) && (by <= zh) && (!u_y[by]))
|
||||
{
|
||||
a_h++;
|
||||
if (a_h > a_alloc_h)
|
||||
{
|
||||
a_alloc_h += 32;
|
||||
E_REALLOC(a_y, int, a_alloc_h);
|
||||
}
|
||||
a_y[a_h - 1] = by;
|
||||
u_y[by] = 1;
|
||||
}
|
||||
if (((by + bh) > 0) && ((by + bh) <= zh) && (!u_y[by + bh]))
|
||||
{
|
||||
a_h++;
|
||||
if (a_h > a_alloc_h)
|
||||
{
|
||||
a_alloc_h += 32;
|
||||
E_REALLOC(a_y, int, a_alloc_h);
|
||||
}
|
||||
a_y[a_h - 1] = by + bh;
|
||||
u_y[by + bh] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
|
@ -240,252 +395,72 @@ e_place_zone_region_smart(E_Zone *zone, Evas_List *skiplist, int x, int y, int w
|
|||
{
|
||||
int ar = 0;
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
int x1, y1, w1, h1, x2, y2, w2, h2;
|
||||
int ok;
|
||||
|
||||
ok = 1;
|
||||
x1 = a_x[i];
|
||||
y1 = a_y[j];
|
||||
w1 = w;
|
||||
h1 = h;
|
||||
x2 = (bd->x - zone->x);
|
||||
y2 = (bd->y - zone->y);
|
||||
w2 = bd->w;
|
||||
h2 = bd->h;
|
||||
for (ll = skiplist; ll; ll = ll->next)
|
||||
{
|
||||
if (ll->data == bd)
|
||||
{
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((ok) && (bd->visible) &&
|
||||
E_INTERSECTS(x1, y1, w1, h1, x2, y2, w2, h2))
|
||||
{
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
x0 = x1;
|
||||
if (x1 < x2)
|
||||
x0 = x2;
|
||||
x00 = (x1 + w1);
|
||||
if ((x2 + w2) < (x1 + w1))
|
||||
x00 = (x2 + w2);
|
||||
|
||||
y0 = y1;
|
||||
if (y1 < y2)
|
||||
y0 = y2;
|
||||
y00 = (y1 + h1);
|
||||
if ((y2 + h2) < (y1 + h1))
|
||||
y00 = (y2 + h2);
|
||||
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
|
||||
ar = _e_place_coverage_border_add(zone, skiplist, ar,
|
||||
a_x[i], a_y[j],
|
||||
w, h);
|
||||
ar = _e_place_coverage_shelf_add(zone, ar,
|
||||
a_x[i], a_y[j],
|
||||
w, h);
|
||||
if (ar < area)
|
||||
{
|
||||
area = ar;
|
||||
*rx = a_x[i];
|
||||
*ry = a_y[j];
|
||||
if (ar == 0)
|
||||
goto done;
|
||||
if (ar == 0) goto done;
|
||||
}
|
||||
}
|
||||
if ((a_x[i + 1] - w > 0) && (a_y[j] < (zh - h)))
|
||||
{
|
||||
int ar = 0;
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
int x1, y1, w1, h1, x2, y2, w2, h2;
|
||||
int ok;
|
||||
|
||||
ok = 1;
|
||||
x1 = a_x[i + 1] - w;
|
||||
y1 = a_y[j];
|
||||
w1 = w;
|
||||
h1 = h;
|
||||
x2 = (bd->x - zone->x);
|
||||
y2 = (bd->y - zone->y);
|
||||
w2 = bd->w;
|
||||
h2 = bd->h;
|
||||
for (ll = skiplist; ll; ll = ll->next)
|
||||
{
|
||||
if (ll->data == bd)
|
||||
{
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((ok) && (bd->visible) &&
|
||||
E_INTERSECTS(x1, y1, w1, h1, x2, y2, w2, h2))
|
||||
{
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
x0 = x1;
|
||||
if (x1 < x2)
|
||||
x0 = x2;
|
||||
x00 = (x1 + w1);
|
||||
if ((x2 + w2) < (x1 + w1))
|
||||
x00 = (x2 + w2);
|
||||
|
||||
y0 = y1;
|
||||
if (y1 < y2)
|
||||
y0 = y2;
|
||||
y00 = (y1 + h1);
|
||||
if ((y2 + h2) < (y1 + h1))
|
||||
y00 = (y2 + h2);
|
||||
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
|
||||
ar = _e_place_coverage_border_add(zone, skiplist, ar,
|
||||
a_x[i + 1] - w, a_y[j],
|
||||
w, h);
|
||||
ar = _e_place_coverage_shelf_add(zone, ar,
|
||||
a_x[i + 1] - w, a_y[j],
|
||||
w, h);
|
||||
if (ar < area)
|
||||
{
|
||||
area = ar;
|
||||
*rx = a_x[i + 1] - w;
|
||||
*ry = a_y[j];
|
||||
if (ar == 0)
|
||||
goto done;
|
||||
if (ar == 0) goto done;
|
||||
}
|
||||
}
|
||||
if ((a_x[i + 1] - w > 0) && (a_y[j + 1] - h > 0))
|
||||
{
|
||||
int ar = 0;
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
int x1, y1, w1, h1, x2, y2, w2, h2;
|
||||
int ok;
|
||||
|
||||
ok = 1;
|
||||
x1 = a_x[i + 1] - w;
|
||||
y1 = a_y[j + 1] - h;
|
||||
w1 = w;
|
||||
h1 = h;
|
||||
x2 = (bd->x - zone->x);
|
||||
y2 = (bd->y - zone->y);
|
||||
w2 = bd->w;
|
||||
h2 = bd->h;
|
||||
for (ll = skiplist; ll; ll = ll->next)
|
||||
{
|
||||
if (ll->data == bd)
|
||||
{
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((ok) && (bd->visible) &&
|
||||
E_INTERSECTS(x1, y1, w1, h1, x2, y2, w2, h2))
|
||||
{
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
x0 = x1;
|
||||
if (x1 < x2)
|
||||
x0 = x2;
|
||||
x00 = (x1 + w1);
|
||||
if ((x2 + w2) < (x1 + w1))
|
||||
x00 = (x2 + w2);
|
||||
|
||||
y0 = y1;
|
||||
if (y1 < y2)
|
||||
y0 = y2;
|
||||
y00 = (y1 + h1);
|
||||
if ((y2 + h2) < (y1 + h1))
|
||||
y00 = (y2 + h2);
|
||||
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
|
||||
ar = _e_place_coverage_border_add(zone, skiplist, ar,
|
||||
a_x[i + 1] - w, a_y[j + 1] - h,
|
||||
w, h);
|
||||
ar = _e_place_coverage_shelf_add(zone, ar,
|
||||
a_x[i + 1] - w, a_y[j + 1] - h,
|
||||
w, h);
|
||||
if (ar < area)
|
||||
{
|
||||
area = ar;
|
||||
*rx = a_x[i + 1] - w;
|
||||
*ry = a_y[j + 1] - h;
|
||||
if (ar == 0)
|
||||
goto done;
|
||||
if (ar == 0) goto done;
|
||||
}
|
||||
}
|
||||
if ((a_x[i] < (zw - w)) && (a_y[j + 1] - h > 0))
|
||||
{
|
||||
int ar = 0;
|
||||
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
{
|
||||
int x1, y1, w1, h1, x2, y2, w2, h2;
|
||||
int ok;
|
||||
|
||||
ok = 1;
|
||||
x1 = a_x[i];
|
||||
y1 = a_y[j + 1] - h;
|
||||
w1 = w;
|
||||
h1 = h;
|
||||
x2 = (bd->x - zone->x);
|
||||
y2 = (bd->y - zone->y);
|
||||
w2 = bd->w;
|
||||
h2 = bd->h;
|
||||
for (ll = skiplist; ll; ll = ll->next)
|
||||
{
|
||||
if (ll->data == bd)
|
||||
{
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((ok) && (bd->visible) &&
|
||||
E_INTERSECTS(x1, y1, w1, h1, x2, y2, w2, h2))
|
||||
{
|
||||
int iw, ih;
|
||||
int x0, x00, y0, y00;
|
||||
|
||||
x0 = x1;
|
||||
if (x1 < x2)
|
||||
x0 = x2;
|
||||
x00 = (x1 + w1);
|
||||
if ((x2 + w2) < (x1 + w1))
|
||||
x00 = (x2 + w2);
|
||||
|
||||
y0 = y1;
|
||||
if (y1 < y2)
|
||||
y0 = y2;
|
||||
y00 = (y1 + h1);
|
||||
if ((y2 + h2) < (y1 + h1))
|
||||
y00 = (y2 + h2);
|
||||
|
||||
iw = x00 - x0;
|
||||
ih = y00 - y0;
|
||||
ar += (iw * ih);
|
||||
}
|
||||
}
|
||||
e_container_border_list_free(bl);
|
||||
|
||||
ar = _e_place_coverage_border_add(zone, skiplist, ar,
|
||||
a_x[i], a_y[j + 1] - h,
|
||||
w, h);
|
||||
ar = _e_place_coverage_shelf_add(zone, ar,
|
||||
a_x[i], a_y[j + 1] - h,
|
||||
w, h);
|
||||
if (ar < area)
|
||||
{
|
||||
area = ar;
|
||||
*rx = a_x[i];
|
||||
*ry = a_y[j + 1] - h;
|
||||
if (ar == 0)
|
||||
goto done;
|
||||
if (ar == 0) goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -207,6 +207,21 @@ e_popup_idler_before(void)
|
|||
orects = pop->shape_rects;
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
if (rects[i].x < 0)
|
||||
{
|
||||
rects[i].width -= rects[i].x;
|
||||
rects[i].x = 0;
|
||||
}
|
||||
if ((rects[i].x + rects[i].width) > pop->w)
|
||||
rects[i].width = rects[i].width - rects[i].x;
|
||||
if (rects[i].y < 0)
|
||||
{
|
||||
rects[i].height -= rects[i].y;
|
||||
rects[i].y = 0;
|
||||
}
|
||||
if ((rects[i].y + rects[i].height) > pop->h)
|
||||
rects[i].height = rects[i].height - rects[i].y;
|
||||
|
||||
if ((orects[i].x != rects[i].x) ||
|
||||
(orects[i].y != rects[i].y) ||
|
||||
(orects[i].width != rects[i].width) ||
|
||||
|
@ -216,7 +231,7 @@ e_popup_idler_before(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
changed = 0;
|
||||
// changed = 0;
|
||||
}
|
||||
if (changed)
|
||||
{
|
||||
|
|
|
@ -92,6 +92,17 @@ e_resist_container_border_position(E_Container *con, Evas_List *skiplist,
|
|||
gmc = l->data;
|
||||
OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist);
|
||||
}
|
||||
for (l = e_shelf_list(); l; l = l->next)
|
||||
{
|
||||
E_Shelf *es;
|
||||
|
||||
es = l->data;
|
||||
if (es->zone->container == con)
|
||||
{
|
||||
OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h,
|
||||
e_config->gadget_resist);
|
||||
}
|
||||
}
|
||||
if (rects)
|
||||
{
|
||||
_e_resist_rects(rects,
|
||||
|
@ -141,14 +152,19 @@ e_resist_container_gadman_position(E_Container *con, Evas_List *skiplist,
|
|||
}
|
||||
if (ok)
|
||||
{
|
||||
r = E_NEW(E_Resist_Rect, 1);
|
||||
OBSTACLE(gmc->x, gmc->y, gmc->w, gmc->h, e_config->gadget_resist);
|
||||
}
|
||||
}
|
||||
|
||||
r->x = gmc->x;
|
||||
r->y = gmc->y;
|
||||
r->w = gmc->w;
|
||||
r->h = gmc->h;
|
||||
r->v1 = e_config->gadget_resist;
|
||||
rects = evas_list_append(rects, r);
|
||||
for (l = e_shelf_list(); l; l = l->next)
|
||||
{
|
||||
E_Shelf *es;
|
||||
|
||||
es = l->data;
|
||||
if (es->zone->container == con)
|
||||
{
|
||||
OBSTACLE(es->x + es->zone->x, es->y + es->zone->y, es->w, es->h,
|
||||
e_config->gadget_resist);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
static void _e_shelf_free(E_Shelf *es);
|
||||
static const char *_e_shelf_orient_string_get(E_Shelf *es);
|
||||
static void _e_shelf_position_calc(E_Shelf *es);
|
||||
static void _e_shelf_gadcon_min_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||
static void _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
|
||||
static Evas_Object *_e_shelf_gadcon_frame_request(void *data, E_Gadcon_Client *gcc, const char *style);
|
||||
|
||||
|
@ -47,6 +48,8 @@ e_shelf_config_init(void)
|
|||
if (es)
|
||||
{
|
||||
es->cfg = cf_es;
|
||||
es->fit_along = cf_es->fit_along;
|
||||
es->fit_size = cf_es->fit_size;
|
||||
e_shelf_orient(es, cf_es->orient);
|
||||
_e_shelf_position_calc(es);
|
||||
e_shelf_populate(es);
|
||||
|
@ -56,6 +59,12 @@ e_shelf_config_init(void)
|
|||
}
|
||||
}
|
||||
|
||||
EAPI Evas_List *
|
||||
e_shelf_list(void)
|
||||
{
|
||||
return shelves;
|
||||
}
|
||||
|
||||
EAPI E_Shelf *
|
||||
e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, int layer)
|
||||
{
|
||||
|
@ -114,6 +123,9 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
|||
snprintf(buf, sizeof(buf), "%i", shelf_id);
|
||||
shelf_id++;
|
||||
es->gadcon = e_gadcon_swallowed_new(es->name, buf, es->o_base, "items");
|
||||
e_gadcon_min_size_request_callback_set(es->gadcon,
|
||||
_e_shelf_gadcon_min_size_request,
|
||||
es);
|
||||
e_gadcon_size_request_callback_set(es->gadcon,
|
||||
_e_shelf_gadcon_size_request,
|
||||
es);
|
||||
|
@ -465,6 +477,12 @@ _e_shelf_position_calc(E_Shelf *es)
|
|||
e_shelf_move_resize(es, es->x, es->y, es->w, es->h);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_shelf_gadcon_min_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
|
@ -477,7 +495,7 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
|||
nw = es->w;
|
||||
nh = es->h;
|
||||
ww = hh = 0;
|
||||
printf("req min = %i %i\n", w, h);
|
||||
printf("req = %i %i\n", w, h);
|
||||
evas_object_geometry_get(gc->o_container, NULL, NULL, &ww, &hh);
|
||||
switch (gc->orient)
|
||||
{
|
||||
|
@ -537,7 +555,7 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
|||
if (!es->fit_size) nw = es->w;
|
||||
if (nw > es->zone->w) nw = es->zone->w;
|
||||
if (nh > es->zone->h) nh = es->zone->h;
|
||||
if (nh != es->h) ny = es->y + ((es->h - nh) / 2);
|
||||
if (nh != es->h) ny = (es->zone->h - nh) / 2;
|
||||
nx = 0;
|
||||
break;
|
||||
case E_GADCON_ORIENT_RIGHT:
|
||||
|
@ -545,7 +563,7 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
|||
if (!es->fit_size) nw = es->w;
|
||||
if (nw > es->zone->w) nw = es->zone->w;
|
||||
if (nh > es->zone->h) nh = es->zone->h;
|
||||
if (nh != es->h) ny = es->y + ((es->h - nh) / 2);
|
||||
if (nh != es->h) ny = (es->zone->h - nh) / 2;
|
||||
nx = es->zone->w - nw;
|
||||
break;
|
||||
case E_GADCON_ORIENT_TOP:
|
||||
|
@ -553,7 +571,7 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
|||
if (!es->fit_size) nh = es->h;
|
||||
if (nw > es->zone->w) nw = es->zone->w;
|
||||
if (nh > es->zone->h) nh = es->zone->h;
|
||||
if (nw != es->w) nx = es->x + ((es->w - nw) / 2);
|
||||
if (nw != es->w) nx = (es->zone->w - nw) / 2;
|
||||
ny = 0;
|
||||
break;
|
||||
case E_GADCON_ORIENT_BOTTOM:
|
||||
|
@ -561,7 +579,7 @@ _e_shelf_gadcon_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord
|
|||
if (!es->fit_size) nh = es->h;
|
||||
if (nw > es->zone->w) nw = es->zone->w;
|
||||
if (nh > es->zone->h) nh = es->zone->h;
|
||||
if (nw != es->w) nx = es->x + ((es->w - nw) / 2);
|
||||
if (nw != es->w) nx = (es->zone->w - nw) / 2;
|
||||
ny = es->zone->h - nh;
|
||||
break;
|
||||
case E_GADCON_ORIENT_CORNER_TL:
|
||||
|
|
|
@ -34,6 +34,7 @@ struct _E_Shelf
|
|||
EAPI int e_shelf_init(void);
|
||||
EAPI int e_shelf_shutdown(void);
|
||||
EAPI void e_shelf_config_init(void);
|
||||
EAPI Evas_List *e_shelf_list(void);
|
||||
EAPI E_Shelf *e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, int layer);
|
||||
EAPI void e_shelf_populate(E_Shelf *es);
|
||||
EAPI void e_shelf_show(E_Shelf *es);
|
||||
|
|
|
@ -21,8 +21,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
|
|||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
e_mod_config.c
|
||||
module_la_LIBADD = @e_libs@ @cf_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
|
@ -19,7 +17,7 @@ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
|
|||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_battery_module(E_Container *con, Battery *bat)
|
||||
_config_battery_module(void)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -33,15 +31,18 @@ _config_battery_module(E_Container *con, Battery *bat)
|
|||
v->advanced.apply_cfdata = _advanced_apply_data;
|
||||
v->advanced.create_widgets = _advanced_create_widgets;
|
||||
|
||||
cfd = e_config_dialog_new(con, _("Battery Configuration"), NULL, 0, v, bat);
|
||||
bat->config_dialog = cfd;
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
_("Battery Monitor Configuration"),
|
||||
NULL, 0, v, NULL);
|
||||
battery_config->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(Battery *b, E_Config_Dialog_Data *cfdata)
|
||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
cfdata->alarm_time = b->conf->alarm;
|
||||
cfdata->poll_time = b->conf->poll_time;
|
||||
if (!battery_config) return;
|
||||
cfdata->alarm_time = battery_config->alarm;
|
||||
cfdata->poll_time = battery_config->poll_time;
|
||||
if (cfdata->alarm_time > 0)
|
||||
cfdata->show_alert = 1;
|
||||
else
|
||||
|
@ -52,21 +53,17 @@ static void *
|
|||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Battery *b;
|
||||
|
||||
b = cfd->data;
|
||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||
_fill_data(b, cfdata);
|
||||
_fill_data(cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Battery *b;
|
||||
|
||||
b = cfd->data;
|
||||
b->config_dialog = NULL;
|
||||
if (!battery_config) return;
|
||||
battery_config->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
|
@ -86,16 +83,13 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Battery *b;
|
||||
|
||||
b = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
b->conf->poll_time = 10.0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
if (!battery_config) return;
|
||||
if (cfdata->show_alert)
|
||||
battery_config->alarm = cfdata->alarm_time;
|
||||
else
|
||||
battery_config->alarm = 0;
|
||||
_battery_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
_battery_face_cb_config_updated(b);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -130,20 +124,14 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
static int
|
||||
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Battery *b;
|
||||
|
||||
b = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
|
||||
b->conf->poll_time = cfdata->poll_time;
|
||||
if (!battery_config) return;
|
||||
battery_config->poll_time = cfdata->poll_time;
|
||||
if (cfdata->show_alert)
|
||||
b->conf->alarm = cfdata->alarm_time;
|
||||
battery_config->alarm = cfdata->alarm_time;
|
||||
else
|
||||
b->conf->alarm = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
battery_config->alarm = 0;
|
||||
_battery_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
_battery_face_cb_config_updated(b);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_battery_module(E_Container *con, Battery *b);
|
||||
#endif
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -5,10 +5,6 @@
|
|||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Face Config_Face;
|
||||
typedef struct _Battery Battery;
|
||||
typedef struct _Battery_Face Battery_Face;
|
||||
|
||||
typedef struct _Status Status;
|
||||
|
||||
#define CHECK_NONE 0
|
||||
|
@ -18,44 +14,19 @@ typedef struct _Status Status;
|
|||
|
||||
struct _Config
|
||||
{
|
||||
/* saved * loaded config values */
|
||||
double poll_time;
|
||||
int alarm;
|
||||
Evas_List *faces;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
{
|
||||
unsigned char enabled;
|
||||
};
|
||||
|
||||
struct _Battery
|
||||
{
|
||||
E_Menu *config_menu;
|
||||
Evas_List *faces;
|
||||
|
||||
Config *conf;
|
||||
/* just config state */
|
||||
E_Config_Dialog *config_dialog;
|
||||
Evas_List *instances;
|
||||
E_Menu *menu;
|
||||
int alarm_triggered;
|
||||
|
||||
int battery_check_mode;
|
||||
Ecore_Timer *battery_check_timer;
|
||||
int battery_prev_drain;
|
||||
int battery_prev_ac;
|
||||
int battery_prev_battery;
|
||||
E_Config_Dialog *config_dialog;
|
||||
};
|
||||
|
||||
struct _Battery_Face
|
||||
{
|
||||
Battery *battery;
|
||||
E_Container *con;
|
||||
|
||||
E_Menu *menu;
|
||||
Config_Face *conf;
|
||||
|
||||
Evas_Object *bat_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
E_Gadman_Client *gmc;
|
||||
};
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
|
@ -95,6 +66,8 @@ EAPI int e_modapi_info (E_Module *m);
|
|||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
void _battery_face_cb_config_updated(Battery *bat);
|
||||
void _config_battery_module(void);
|
||||
void _battery_config_updated(void);
|
||||
extern Config *battery_config;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -19,9 +19,7 @@ INCLUDES = -I. \
|
|||
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
|
||||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
e_mod_main.h
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -1,99 +0,0 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
int digital_style;
|
||||
};
|
||||
|
||||
/* Protos */
|
||||
static void *_create_data(E_Config_Dialog *cfd);
|
||||
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_clock_module(E_Container *con, Clock_Face *c)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
||||
v = E_NEW(E_Config_Dialog_View, 1);
|
||||
|
||||
/* Dialog 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;
|
||||
|
||||
/* Create The Dialog */
|
||||
cfd = e_config_dialog_new(con, _("Clock Configuration"), NULL, 0, v, c);
|
||||
c->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(Clock_Face *clk, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
cfdata->digital_style = clk->conf->digitalStyle;
|
||||
}
|
||||
|
||||
static void *
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Clock_Face *cf;
|
||||
|
||||
cf = cfd->data;
|
||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||
_fill_data(cf, cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Clock_Face *c;
|
||||
|
||||
c = cfd->data;
|
||||
c->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
E_Radio_Group *rg;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
of = e_widget_framelist_add(evas, _("General Settings"), 0);
|
||||
rg = e_widget_radio_group_new(&(cfdata->digital_style));
|
||||
ob = e_widget_radio_add(evas, _("No Digital Display"), 0, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("12 Hour Display"), 1, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("24 Hour Display"), 2, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Clock_Face *clk;
|
||||
|
||||
clk = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
clk->conf->digitalStyle = cfdata->digital_style;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
_clock_face_cb_config_updated(clk);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_clock_module(E_Container *con, Clock_Face *c);
|
||||
#endif
|
||||
#endif
|
|
@ -3,39 +3,93 @@
|
|||
*/
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
|
||||
/* TODO List:
|
||||
*
|
||||
*/
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* gadcon requirements */
|
||||
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id, char *style);
|
||||
static void _gc_shutdown(E_Gadcon_Client *gcc);
|
||||
static void _gc_orient(E_Gadcon_Client *gcc);
|
||||
/* and actually define the gadcon class that this module provides (just 1) */
|
||||
static const E_Gadcon_Client_Class _gadcon_class =
|
||||
{
|
||||
GADCON_CLIENT_CLASS_VERSION,
|
||||
"clock",
|
||||
{
|
||||
_gc_init, _gc_shutdown, _gc_orient
|
||||
}
|
||||
};
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
/* module private routines */
|
||||
static Clock *_clock_new();
|
||||
static void _clock_shutdown(Clock *clock);
|
||||
static void _clock_config_menu_new(Clock *clock);
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* actual module specifics */
|
||||
|
||||
static Clock_Face *_clock_face_new(Clock *clock, E_Container *con);
|
||||
static void _clock_face_free(Clock_Face *face);
|
||||
/* static void _clock_face_enable(Clock_Face *face); */
|
||||
static void _clock_face_disable(Clock_Face *face);
|
||||
static void _clock_face_menu_new(Clock_Face *face);
|
||||
static void _clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
|
||||
static void _clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _clock_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _clock_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
typedef struct _Instance Instance;
|
||||
|
||||
static int _clock_count;
|
||||
struct _Instance
|
||||
{
|
||||
E_Gadcon_Client *gcc;
|
||||
Evas_Object *o_clock;
|
||||
};
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
static E_Gadcon_Client *
|
||||
_gc_init(E_Gadcon *gc, char *name, char *id, char *style)
|
||||
{
|
||||
Evas_Object *o;
|
||||
E_Gadcon_Client *gcc;
|
||||
Instance *inst;
|
||||
|
||||
const int
|
||||
DIGITAL_STYLE_NONE = 0,
|
||||
DIGITAL_STYLE_12HOUR = 1,
|
||||
DIGITAL_STYLE_24HOUR = 2
|
||||
;
|
||||
inst = E_NEW(Instance, 1);
|
||||
|
||||
/* public module routines. all modules must have these */
|
||||
o = edje_object_add(gc->evas);
|
||||
e_theme_edje_object_set(o, "base/theme/modules/clock",
|
||||
"modules/clock/main");
|
||||
evas_object_show(o);
|
||||
|
||||
gcc = e_gadcon_client_new(gc, name, id, style, o);
|
||||
gcc->data = inst;
|
||||
|
||||
inst->gcc = gcc;
|
||||
inst->o_clock = o;
|
||||
|
||||
e_gadcon_client_util_menu_attach(gcc);
|
||||
|
||||
return gcc;
|
||||
}
|
||||
|
||||
static void
|
||||
_gc_shutdown(E_Gadcon_Client *gcc)
|
||||
{
|
||||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
evas_object_del(inst->o_clock);
|
||||
free(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_gc_orient(E_Gadcon_Client *gcc)
|
||||
{
|
||||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
e_gadcon_client_aspect_set(gcc, 16, 16);
|
||||
e_gadcon_client_min_size_set(gcc, 16, 16);
|
||||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* module setup */
|
||||
EAPI E_Module_Api e_modapi =
|
||||
{
|
||||
E_MODULE_API_VERSION,
|
||||
|
@ -45,37 +99,20 @@ EAPI E_Module_Api e_modapi =
|
|||
EAPI void *
|
||||
e_modapi_init(E_Module *module)
|
||||
{
|
||||
Clock *clock;
|
||||
|
||||
/* actually init clock */
|
||||
clock = _clock_new();
|
||||
module->config_menu = clock->config_menu;
|
||||
return clock;
|
||||
e_gadcon_provider_register(&_gadcon_class);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *module)
|
||||
{
|
||||
Clock *clock;
|
||||
|
||||
if (module->config_menu)
|
||||
module->config_menu = NULL;
|
||||
|
||||
clock = module->data;
|
||||
if (clock)
|
||||
{
|
||||
_clock_shutdown(clock);
|
||||
}
|
||||
e_gadcon_provider_unregister(&_gadcon_class);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_save(E_Module *module)
|
||||
{
|
||||
Clock *clock;
|
||||
|
||||
clock = module->data;
|
||||
e_config_domain_save("module.clock", conf_edd, clock->conf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -96,354 +133,3 @@ e_modapi_about(E_Module *module)
|
|||
_("A simple module to give E17 a clock."));
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
Clock *e;
|
||||
Clock_Face *face;
|
||||
|
||||
e = m->data;
|
||||
if (!e) return 0;
|
||||
if (!e->faces) return 0;
|
||||
face = e->faces->data;
|
||||
if (!face) return 0;
|
||||
_config_clock_module(face->con, face);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* module private routines */
|
||||
static Clock *
|
||||
_clock_new()
|
||||
{
|
||||
Clock *clock;
|
||||
Evas_List *managers, *l, *l2, *cl;
|
||||
E_Menu_Item *mi;
|
||||
|
||||
_clock_count = 0;
|
||||
clock = E_NEW(Clock, 1);
|
||||
if (!clock) return NULL;
|
||||
|
||||
conf_face_edd = E_CONFIG_DD_NEW("Clock_Config_Face", Config_Face);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config_Face
|
||||
#define D conf_face_edd
|
||||
E_CONFIG_VAL(D, T, enabled, UCHAR);
|
||||
E_CONFIG_VAL(D, T, digitalStyle, INT);
|
||||
|
||||
conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
|
||||
clock->conf = e_config_domain_load("module.clock", conf_edd);
|
||||
if (!clock->conf)
|
||||
{
|
||||
clock->conf = E_NEW(Config, 1);
|
||||
}
|
||||
|
||||
_clock_config_menu_new(clock);
|
||||
|
||||
managers = e_manager_list();
|
||||
cl = clock->conf->faces;
|
||||
for (l = managers; l; l = l->next)
|
||||
{
|
||||
E_Manager *man;
|
||||
|
||||
man = l->data;
|
||||
for (l2 = man->containers; l2; l2 = l2->next)
|
||||
{
|
||||
E_Container *con;
|
||||
Clock_Face *face;
|
||||
|
||||
con = l2->data;
|
||||
face = _clock_face_new(clock, con);
|
||||
if (face)
|
||||
{
|
||||
face->clock = clock;
|
||||
clock->faces = evas_list_append(clock->faces, face);
|
||||
/* Config */
|
||||
if (!cl)
|
||||
{
|
||||
face->conf = E_NEW(Config_Face, 1);
|
||||
face->conf->enabled = 1;
|
||||
face->conf->digitalStyle = DIGITAL_STYLE_NONE;
|
||||
clock->conf->faces = evas_list_append(clock->conf->faces, face->conf);
|
||||
}
|
||||
else
|
||||
{
|
||||
face->conf = cl->data;
|
||||
cl = cl->next;
|
||||
}
|
||||
|
||||
_clock_face_cb_config_updated(face);
|
||||
|
||||
/* Menu */
|
||||
/* This menu must be initialized after conf */
|
||||
_clock_face_menu_new(face);
|
||||
|
||||
mi = e_menu_item_new(clock->config_menu);
|
||||
e_menu_item_label_set(mi, _("Configuration"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
|
||||
e_menu_item_callback_set(mi, _clock_face_cb_menu_configure, face);
|
||||
|
||||
mi = e_menu_item_new(clock->config_menu);
|
||||
e_menu_item_label_set(mi, con->name);
|
||||
|
||||
e_menu_item_submenu_set(mi, face->menu);
|
||||
|
||||
/* Setup */
|
||||
if (!face->conf->enabled)
|
||||
_clock_face_disable(face);
|
||||
}
|
||||
}
|
||||
}
|
||||
return clock;
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_shutdown(Clock *clock)
|
||||
{
|
||||
Evas_List *list;
|
||||
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
E_CONFIG_DD_FREE(conf_face_edd);
|
||||
|
||||
for (list = clock->faces; list; list = list->next)
|
||||
_clock_face_free(list->data);
|
||||
evas_list_free(clock->faces);
|
||||
|
||||
e_object_del(E_OBJECT(clock->config_menu));
|
||||
|
||||
evas_list_free(clock->conf->faces);
|
||||
free(clock->conf);
|
||||
free(clock);
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_config_menu_new(Clock *clock)
|
||||
{
|
||||
clock->config_menu = e_menu_new();
|
||||
}
|
||||
|
||||
static Clock_Face *
|
||||
_clock_face_new(Clock *clock, E_Container *con)
|
||||
{
|
||||
Clock_Face *face;
|
||||
Evas_Object *o;
|
||||
Evas_Coord x, y, w, h;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
face = E_NEW(Clock_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
||||
face->con = con;
|
||||
e_object_ref(E_OBJECT(con));
|
||||
|
||||
evas_event_freeze(con->bg_evas);
|
||||
o = edje_object_add(con->bg_evas);
|
||||
face->clock_object = o;
|
||||
|
||||
e_theme_edje_object_set(o, "base/theme/modules/clock",
|
||||
"modules/clock/main");
|
||||
evas_object_show(o);
|
||||
|
||||
o = evas_object_rectangle_add(con->bg_evas);
|
||||
face->event_object = o;
|
||||
evas_object_layer_set(o, 2);
|
||||
evas_object_repeat_events_set(o, 1);
|
||||
evas_object_color_set(o, 0, 0, 0, 0);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _clock_face_cb_mouse_down, face);
|
||||
evas_object_show(o);
|
||||
|
||||
evas_object_resize(face->clock_object, 200, 200);
|
||||
edje_object_calc_force(face->clock_object);
|
||||
edje_object_part_geometry_get(face->clock_object, "main", &x, &y, &w, &h);
|
||||
face->inset.l = x;
|
||||
face->inset.r = 200 - (x + w);
|
||||
face->inset.t = y;
|
||||
face->inset.b = 200 - (y + h);
|
||||
|
||||
face->gmc = e_gadman_client_new(con->gadman);
|
||||
e_gadman_client_domain_set(face->gmc, "module.clock", _clock_count++);
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
e_gadman_client_policy_set(face->gmc, policy);
|
||||
e_gadman_client_min_size_set(face->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(face->gmc, 512, 512);
|
||||
e_gadman_client_auto_size_set(face->gmc,
|
||||
40 + (face->inset.l + face->inset.r),
|
||||
40 + (face->inset.t + face->inset.b));
|
||||
e_gadman_client_align_set(face->gmc, 1.0, 1.0);
|
||||
e_gadman_client_aspect_set(face->gmc, 1.0, 1.0);
|
||||
e_gadman_client_padding_set(face->gmc,
|
||||
face->inset.l, face->inset.r,
|
||||
face->inset.t, face->inset.b);
|
||||
e_gadman_client_resize(face->gmc,
|
||||
40 + (face->inset.l + face->inset.r),
|
||||
40 + (face->inset.t + face->inset.b));
|
||||
e_gadman_client_change_func_set(face->gmc, _clock_face_cb_gmc_change, face);
|
||||
e_gadman_client_load(face->gmc);
|
||||
|
||||
evas_event_thaw(con->bg_evas);
|
||||
|
||||
return face;
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_free(Clock_Face *face)
|
||||
{
|
||||
if (face->config_dialog)
|
||||
{
|
||||
e_object_del(E_OBJECT(face->config_dialog));
|
||||
face->config_dialog = NULL;
|
||||
}
|
||||
e_object_unref(E_OBJECT(face->con));
|
||||
e_object_del(E_OBJECT(face->gmc));
|
||||
evas_object_del(face->clock_object);
|
||||
evas_object_del(face->event_object);
|
||||
e_object_del(E_OBJECT(face->menu));
|
||||
|
||||
free(face->conf);
|
||||
free(face);
|
||||
_clock_count--;
|
||||
}
|
||||
|
||||
/*
|
||||
static void
|
||||
_clock_face_enable(Clock_Face *face)
|
||||
{
|
||||
face->conf->enabled = 1;
|
||||
evas_object_show(face->clock_object);
|
||||
evas_object_show(face->event_object);
|
||||
e_config_save_queue();
|
||||
}
|
||||
*/
|
||||
|
||||
static void
|
||||
_clock_face_disable(Clock_Face *face)
|
||||
{
|
||||
face->conf->enabled = 0;
|
||||
evas_object_hide(face->clock_object);
|
||||
evas_object_hide(face->event_object);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_menu_new(Clock_Face *face)
|
||||
{
|
||||
E_Menu *mn;
|
||||
E_Menu_Item *mi;
|
||||
|
||||
mn = e_menu_new();
|
||||
face->menu = mn;
|
||||
|
||||
/* Enabled */
|
||||
/*
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Enabled"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
if (face->conf->enabled) e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_callback_set(mi, _clock_face_cb_menu_enabled, face);
|
||||
*/
|
||||
|
||||
/* Config */
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Configuration"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
|
||||
e_menu_item_callback_set(mi, _clock_face_cb_menu_configure, face);
|
||||
|
||||
/* Edit */
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Edit Mode"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/gadgets");
|
||||
e_menu_item_callback_set(mi, _clock_face_cb_menu_edit, face);
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
|
||||
{
|
||||
Clock_Face *face;
|
||||
Evas_Coord x, y, w, h;
|
||||
|
||||
face = data;
|
||||
switch (change)
|
||||
{
|
||||
case E_GADMAN_CHANGE_MOVE_RESIZE:
|
||||
e_gadman_client_geometry_get(face->gmc, &x, &y, &w, &h);
|
||||
evas_object_move(face->clock_object, x, y);
|
||||
evas_object_move(face->event_object, x, y);
|
||||
evas_object_resize(face->clock_object, w, h);
|
||||
evas_object_resize(face->event_object, w, h);
|
||||
break;
|
||||
case E_GADMAN_CHANGE_RAISE:
|
||||
evas_object_raise(face->clock_object);
|
||||
evas_object_raise(face->event_object);
|
||||
break;
|
||||
case E_GADMAN_CHANGE_EDGE:
|
||||
case E_GADMAN_CHANGE_ZONE:
|
||||
/* FIXME
|
||||
* Must we do something here?
|
||||
*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Clock_Face *face;
|
||||
Evas_Event_Mouse_Down *ev;
|
||||
|
||||
face = data;
|
||||
ev = event_info;
|
||||
if (ev->button == 3)
|
||||
{
|
||||
e_menu_activate_mouse(face->menu, e_zone_current_get(face->con),
|
||||
ev->output.x, ev->output.y, 1, 1,
|
||||
E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
|
||||
e_util_container_fake_mouse_up_all_later(face->con);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Clock_Face *face;
|
||||
|
||||
face = data;
|
||||
e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT);
|
||||
}
|
||||
|
||||
static void
|
||||
_clock_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Clock_Face *face;
|
||||
|
||||
face = data;
|
||||
if (!face) return;
|
||||
_config_clock_module(face->con, face);
|
||||
}
|
||||
|
||||
void
|
||||
_clock_face_cb_config_updated(void *data)
|
||||
{
|
||||
Clock_Face *face;
|
||||
char buf[2];
|
||||
|
||||
face = data;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
snprintf(buf, sizeof(buf), "%i", face->conf->digitalStyle);
|
||||
edje_object_part_text_set(face->clock_object, "digitalStyle", buf);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -4,48 +4,6 @@
|
|||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Face Config_Face;
|
||||
typedef struct _Clock Clock;
|
||||
typedef struct _Clock_Face Clock_Face;
|
||||
|
||||
struct _Config
|
||||
{
|
||||
Evas_List *faces;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
{
|
||||
unsigned char enabled;
|
||||
int digitalStyle;
|
||||
};
|
||||
|
||||
struct _Clock
|
||||
{
|
||||
Evas_List *faces;
|
||||
E_Menu *config_menu;
|
||||
|
||||
Config *conf;
|
||||
};
|
||||
|
||||
struct _Clock_Face
|
||||
{
|
||||
E_Container *con;
|
||||
E_Menu *menu;
|
||||
Config_Face *conf;
|
||||
Clock *clock;
|
||||
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} inset;
|
||||
|
||||
Evas_Object *clock_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
E_Gadman_Client *gmc;
|
||||
E_Config_Dialog *config_dialog;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *module);
|
||||
|
@ -55,6 +13,4 @@ EAPI int e_modapi_info (E_Module *module);
|
|||
EAPI int e_modapi_about (E_Module *module);
|
||||
EAPI int e_modapi_config (E_Module *module);
|
||||
|
||||
void _clock_face_cb_config_updated(void *data);
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,14 +1,8 @@
|
|||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
#include <e.h>
|
||||
#include <Evas.h>
|
||||
|
||||
typedef struct _Status Status;
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Face Config_Face;
|
||||
typedef struct _Cpufreq Cpufreq;
|
||||
typedef struct _Cpufreq_Face Cpufreq_Face;
|
||||
|
||||
struct _Status
|
||||
{
|
||||
|
@ -22,48 +16,21 @@ struct _Status
|
|||
|
||||
struct _Config
|
||||
{
|
||||
/* saved * loaded config values */
|
||||
double poll_time;
|
||||
Evas_List *faces;
|
||||
|
||||
int restore_governor;
|
||||
char *governor;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
{
|
||||
unsigned char enabled;
|
||||
};
|
||||
|
||||
struct _Cpufreq
|
||||
{
|
||||
E_Menu *config_menu;
|
||||
E_Menu *config_menu_poll;
|
||||
/* just config state */
|
||||
Evas_List *instances;
|
||||
E_Menu *menu;
|
||||
E_Menu *menu_poll;
|
||||
E_Menu *menu_governor;
|
||||
E_Menu *menu_frequency;
|
||||
Evas_List *faces;
|
||||
|
||||
Config *conf;
|
||||
Status *status;
|
||||
|
||||
char *set_exe_path;
|
||||
|
||||
Ecore_Timer *frequency_check_timer;
|
||||
};
|
||||
|
||||
struct _Cpufreq_Face
|
||||
{
|
||||
E_Container *con;
|
||||
|
||||
E_Menu *menu;
|
||||
Config_Face *conf;
|
||||
Cpufreq *owner;
|
||||
|
||||
Evas_Object *freq_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
E_Gadman_Client *gmc;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *module);
|
||||
|
|
|
@ -20,8 +20,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
|
|||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
e_mod_config.c
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
#include <e.h>
|
||||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
int autofit;
|
||||
int follower;
|
||||
int iconsize;
|
||||
double follow_speed;
|
||||
double autoscroll_speed;
|
||||
char *dir;
|
||||
};
|
||||
|
||||
/* Protos */
|
||||
|
@ -21,7 +18,7 @@ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E
|
|||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_ibar_module(E_Container *con, IBar *ibar)
|
||||
_config_ibar_module(Config_Item *ci)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -33,144 +30,98 @@ _config_ibar_module(E_Container *con, IBar *ibar)
|
|||
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;
|
||||
v->advanced.apply_cfdata = NULL;
|
||||
v->advanced.create_widgets = NULL;
|
||||
|
||||
/* Create The Dialog */
|
||||
cfd = e_config_dialog_new(con, _("IBar Configuration"), NULL, 0, v, ibar);
|
||||
ibar->config_dialog = cfd;
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
_("IBar Configuration"), NULL, 0, v, ci);
|
||||
ibar_config->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(IBar *ib, E_Config_Dialog_Data *cfdata)
|
||||
_fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
cfdata->autofit = (ib->conf->width == IBAR_WIDTH_AUTO);
|
||||
cfdata->follower = ib->conf->follower;
|
||||
cfdata->iconsize = ib->conf->iconsize;
|
||||
cfdata->follow_speed = ib->conf->follow_speed;
|
||||
cfdata->autoscroll_speed = ib->conf->autoscroll_speed;
|
||||
if (ci->dir)
|
||||
cfdata->dir = strdup(ci->dir);
|
||||
else
|
||||
cfdata->dir = strdup("");
|
||||
}
|
||||
|
||||
static void *
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
IBar *ib;
|
||||
Config_Item *ci;
|
||||
|
||||
ib = cfd->data;
|
||||
ci = cfd->data;
|
||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||
_fill_data(ib, cfdata);
|
||||
_fill_data(ci, cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
IBar *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
ib->config_dialog = NULL;
|
||||
if (cfdata->dir) free(cfdata->dir);
|
||||
ibar_config->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o, *ob;
|
||||
Evas_Object *o, *of, *ol;
|
||||
Ecore_List *dirs;
|
||||
char *home, buf[4096], *file;
|
||||
int selnum = -1;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
ob = e_widget_check_add(evas, _("Show Follower"), &(cfdata->follower));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
o = e_widget_framelist_add(evas, _("Selected Bar Source"), 0);
|
||||
|
||||
ol = e_widget_tlist_add(evas, &(cfdata->dir));
|
||||
e_widget_min_size_set(ol, 160, 200);
|
||||
e_widget_framelist_object_append(o, ol);
|
||||
|
||||
home = e_user_homedir_get();
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications", home);
|
||||
dirs = ecore_file_ls(buf);
|
||||
|
||||
if (dirs)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while ((file = ecore_list_next(dirs)))
|
||||
{
|
||||
if (file[0] == '.') continue;
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/applications/%s", home, file);
|
||||
if (ecore_file_is_dir(buf))
|
||||
{
|
||||
e_widget_tlist_append(ol, file, NULL, NULL, file);
|
||||
if ((cfdata->dir) && (!strcmp(cfdata->dir, file)))
|
||||
selnum = i;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
ecore_list_destroy(dirs);
|
||||
}
|
||||
free(home);
|
||||
e_widget_tlist_go(ol);
|
||||
if (selnum >= 0)
|
||||
e_widget_tlist_selected_set(ol, selnum);
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
IBar *ib;
|
||||
Config_Item *ci;
|
||||
|
||||
ib = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
if ((cfdata->follower) && (!ib->conf->follower))
|
||||
ib->conf->follower = 1;
|
||||
else if (!(cfdata->follower) && (ib->conf->follower))
|
||||
ib->conf->follower = 0;
|
||||
|
||||
if ((cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_FIXED))
|
||||
ib->conf->width = IBAR_WIDTH_AUTO;
|
||||
else if (!(cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_AUTO))
|
||||
ib->conf->width = IBAR_WIDTH_FIXED;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
ci = cfd->data;
|
||||
if (ci->dir) evas_stringshare_del(ci->dir);
|
||||
ci->dir = NULL;
|
||||
if (cfdata->dir) ci->dir = evas_stringshare_add(cfdata->dir);
|
||||
_ibar_config_update();
|
||||
e_config_save_queue();
|
||||
|
||||
_ibar_bar_cb_config_updated(ib);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Follower"), 0);
|
||||
ob = e_widget_check_add(evas, _("Visible"), &(cfdata->follower));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_label_add(evas, _("Follow Speed"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->follow_speed), 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, _("Icon Size"), 0);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 8.0, 128.0, 1.0, 0, NULL, &(cfdata->iconsize), 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, _("Width"), 0);
|
||||
ob = e_widget_check_add(evas, _("Auto Fit"), &(cfdata->autofit));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_label_add(evas, _("Autoscroll Speed:"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
IBar *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
if ((cfdata->follower) && (!ib->conf->follower))
|
||||
ib->conf->follower = 1;
|
||||
else if (!(cfdata->follower) && (ib->conf->follower))
|
||||
ib->conf->follower = 0;
|
||||
|
||||
if ((cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_FIXED))
|
||||
ib->conf->width = IBAR_WIDTH_AUTO;
|
||||
else if (!(cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_AUTO))
|
||||
ib->conf->width = IBAR_WIDTH_FIXED;
|
||||
|
||||
if (cfdata->iconsize != ib->conf->iconsize)
|
||||
ib->conf->iconsize = cfdata->iconsize;
|
||||
if (cfdata->follow_speed != ib->conf->follow_speed)
|
||||
ib->conf->follow_speed = cfdata->follow_speed;
|
||||
if (cfdata->autoscroll_speed != ib->conf->autoscroll_speed)
|
||||
ib->conf->autoscroll_speed = cfdata->autoscroll_speed;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
_ibar_bar_cb_config_updated(ib);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_ibar_module(E_Container *con, IBar *ibar);
|
||||
#endif
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -5,87 +5,23 @@
|
|||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Bar Config_Bar;
|
||||
typedef struct _IBar IBar;
|
||||
typedef struct _IBar_Bar IBar_Bar;
|
||||
typedef struct _IBar_Icon IBar_Icon;
|
||||
|
||||
#define IBAR_WIDTH_AUTO -1
|
||||
#define IBAR_WIDTH_FIXED -2
|
||||
typedef struct _Config_Item Config_Item;
|
||||
|
||||
struct _Config
|
||||
{
|
||||
const char *appdir;
|
||||
int follower;
|
||||
double follow_speed;
|
||||
double autoscroll_speed;
|
||||
int iconsize;
|
||||
int width;
|
||||
Evas_List *bars;
|
||||
};
|
||||
|
||||
struct _Config_Bar
|
||||
{
|
||||
unsigned char enabled;
|
||||
};
|
||||
|
||||
struct _IBar
|
||||
{
|
||||
E_App *apps;
|
||||
Evas_List *bars;
|
||||
E_Menu *config_menu;
|
||||
|
||||
Config *conf;
|
||||
/* saved * loaded config values */
|
||||
Evas_List *items;
|
||||
/* just config state */
|
||||
E_Config_Dialog *config_dialog;
|
||||
};
|
||||
|
||||
struct _IBar_Bar
|
||||
{
|
||||
IBar *ibar;
|
||||
E_Container *con;
|
||||
Evas *evas;
|
||||
Evas_List *instances;
|
||||
E_Menu *menu;
|
||||
|
||||
Evas_Object *bar_object;
|
||||
Evas_Object *overlay_object;
|
||||
Evas_Object *box_object;
|
||||
Evas_Object *event_object;
|
||||
Evas_Object *drag_object;
|
||||
Evas_Object *drag_object_overlay;
|
||||
|
||||
Evas_List *icons;
|
||||
|
||||
double align, align_req;
|
||||
double follow, follow_req;
|
||||
Ecore_Timer *timer;
|
||||
Ecore_Animator *animator;
|
||||
|
||||
Evas_Coord x, y, w, h;
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} bar_inset;
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} icon_inset;
|
||||
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
Config_Bar *conf;
|
||||
|
||||
E_Drop_Handler *drop_handler;
|
||||
Evas_List *handlers;
|
||||
};
|
||||
|
||||
struct _IBar_Icon
|
||||
struct _Config_Item
|
||||
{
|
||||
IBar_Bar *ibb;
|
||||
E_App *app;
|
||||
Evas_Object *bg_object;
|
||||
Evas_Object *overlay_object;
|
||||
Evas_Object *icon_object;
|
||||
Evas_Object *event_object;
|
||||
Evas_List *extra_icons;
|
||||
|
||||
unsigned char raise_on_hilight : 1;
|
||||
char *id;
|
||||
char *dir;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
@ -95,8 +31,9 @@ EAPI int e_modapi_shutdown (E_Module *m);
|
|||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
/* EAPI int e_modapi_config (E_Module *m); */
|
||||
|
||||
void _ibar_bar_cb_config_updated(void *data);
|
||||
void _ibar_config_update(void);
|
||||
void _config_ibar_module(Config_Item *ci);
|
||||
extern Config *ibar_config;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,8 +20,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
|
|||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
e_mod_config.c
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
int show_name;
|
||||
int name_pos;
|
||||
int show_popup;
|
||||
double popup_speed;
|
||||
int drag_resist;
|
||||
|
@ -21,7 +17,7 @@ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E
|
|||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_pager_module(E_Container *con, Pager *pager)
|
||||
_config_pager_module(Config_Item *ci)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -35,49 +31,36 @@ _config_pager_module(E_Container *con, Pager *pager)
|
|||
v->advanced.apply_cfdata = _advanced_apply_data;
|
||||
v->advanced.create_widgets = _advanced_create_widgets;
|
||||
|
||||
cfd = e_config_dialog_new(con, _("Pager Configuration"), NULL, 0, v, pager);
|
||||
pager->config_dialog = cfd;
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
_("Pager Configuration"), NULL, 0, v, ci);
|
||||
pager_config->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(Pager *p, E_Config_Dialog_Data *cfdata)
|
||||
_fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
/* Name Pos, Show Popup, popup_speed */
|
||||
cfdata->name_pos = p->conf->deskname_pos;
|
||||
if (cfdata->name_pos == PAGER_DESKNAME_NONE)
|
||||
{
|
||||
cfdata->show_name = 0;
|
||||
cfdata->name_pos = PAGER_DESKNAME_TOP;
|
||||
}
|
||||
else
|
||||
{
|
||||
cfdata->show_name = 1;
|
||||
}
|
||||
|
||||
cfdata->show_popup = p->conf->popup;
|
||||
cfdata->popup_speed = p->conf->popup_speed;
|
||||
cfdata->drag_resist = p->conf->drag_resist;
|
||||
/* FIXME: configure zone config item */
|
||||
cfdata->show_popup = pager_config->popup;
|
||||
cfdata->popup_speed = pager_config->popup_speed;
|
||||
cfdata->drag_resist = pager_config->drag_resist;
|
||||
}
|
||||
|
||||
static void *
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Pager *p;
|
||||
Config_Item *ci;
|
||||
|
||||
p = cfd->data;
|
||||
ci = cfd->data;
|
||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||
_fill_data(p, cfdata);
|
||||
_fill_data(ci, cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Pager *p;
|
||||
|
||||
p = cfd->data;
|
||||
p->config_dialog = NULL;
|
||||
pager_config->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
|
@ -91,43 +74,17 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
of = e_widget_framelist_add(evas, _("General Settings"), 0);
|
||||
ob = e_widget_check_add(evas, _("Show Popup"), &(cfdata->show_popup));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_check_add(evas, _("Show Desktop Name"), &(cfdata->show_name));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Desktop Name Position"), 0);
|
||||
rg = e_widget_radio_group_new(&(cfdata->name_pos));
|
||||
ob = e_widget_radio_add(evas, _("Top"), PAGER_DESKNAME_TOP, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Bottom"), PAGER_DESKNAME_BOTTOM, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Not Supported Yet ??
|
||||
ob = e_widget_radio_add(evas, _("Left"), PAGER_DESKNAME_LEFT, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Right"), PAGER_DESKNAME_RIGHT, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
*/
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Pager *p;
|
||||
|
||||
p = cfd->data;
|
||||
p->conf->popup = cfdata->show_popup;
|
||||
|
||||
p->conf->deskname_pos = cfdata->name_pos;
|
||||
if (!cfdata->show_name)
|
||||
p->conf->deskname_pos = PAGER_DESKNAME_NONE;
|
||||
|
||||
pager_config->popup = cfdata->show_popup;
|
||||
_pager_cb_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
_pager_cb_config_updated(p);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -138,33 +95,14 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
E_Radio_Group *rg;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
of = e_widget_framelist_add(evas, _("General Settings"), 0);
|
||||
ob = e_widget_check_add(evas, _("Show Popup"), &(cfdata->show_popup));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_check_add(evas, _("Show Desktop Name"), &(cfdata->show_name));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_label_add(evas, _("Resistance to Dragging Windows:"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
of = e_widget_framelist_add(evas, _("Resistance to Dragging Windows:"), 0);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 0.0, 10.0, 1.0, 0, NULL, &(cfdata->drag_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, _("Desktop Name Position"), 0);
|
||||
rg = e_widget_radio_group_new(&(cfdata->name_pos));
|
||||
ob = e_widget_radio_add(evas, _("Top"), PAGER_DESKNAME_TOP, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Bottom"), PAGER_DESKNAME_BOTTOM, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Not Supported Yet ??
|
||||
ob = e_widget_radio_add(evas, _("Left"), PAGER_DESKNAME_LEFT, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_radio_add(evas, _("Right"), PAGER_DESKNAME_RIGHT, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
*/
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Popup Settings"), 0);
|
||||
ob = e_widget_check_add(evas, _("Show Popup"), &(cfdata->show_popup));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_label_add(evas, _("Popup Speed"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, &(cfdata->popup_speed), NULL, 200);
|
||||
|
@ -177,21 +115,10 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
static int
|
||||
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Pager *p;
|
||||
|
||||
p = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
p->conf->popup = cfdata->show_popup;
|
||||
|
||||
p->conf->deskname_pos = cfdata->name_pos;
|
||||
if (!cfdata->show_name)
|
||||
p->conf->deskname_pos = PAGER_DESKNAME_NONE;
|
||||
p->conf->popup_speed = cfdata->popup_speed;
|
||||
p->conf->drag_resist = cfdata->drag_resist;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
pager_config->popup = cfdata->show_popup;
|
||||
pager_config->popup_speed = cfdata->popup_speed;
|
||||
pager_config->drag_resist = cfdata->drag_resist;
|
||||
_pager_cb_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
_pager_cb_config_updated(p);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_pager_module(E_Container *con, Pager *pager);
|
||||
#endif
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -5,12 +5,7 @@
|
|||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Face Config_Face;
|
||||
typedef struct _Pager Pager;
|
||||
typedef struct _Pager_Face Pager_Face;
|
||||
typedef struct _Pager_Desk Pager_Desk;
|
||||
typedef struct _Pager_Win Pager_Win;
|
||||
typedef struct _Pager_Popup Pager_Popup;
|
||||
typedef struct _Config_Item Config_Item;
|
||||
|
||||
#define PAGER_RESIZE_NONE 0
|
||||
#define PAGER_RESIZE_HORZ 1
|
||||
|
@ -25,125 +20,24 @@ typedef struct _Pager_Popup Pager_Popup;
|
|||
|
||||
struct _Config
|
||||
{
|
||||
Evas_List *faces;
|
||||
/* Position of desktop name */
|
||||
unsigned int deskname_pos;
|
||||
/* How the popup is shown on desk change */
|
||||
/* saved * loaded config values */
|
||||
double popup_speed;
|
||||
/* Show popup? */
|
||||
unsigned int popup;
|
||||
|
||||
unsigned int drag_resist;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
{
|
||||
/* Show face */
|
||||
unsigned char enabled;
|
||||
/* Keep scale of desktops */
|
||||
unsigned char scale;
|
||||
/* Resize pager when adding/removing desktops */
|
||||
unsigned char resize;
|
||||
};
|
||||
|
||||
struct _Pager
|
||||
{
|
||||
Evas_List *faces;
|
||||
E_Menu *config_menu;
|
||||
E_Menu *config_menu_deskname;
|
||||
E_Menu *config_menu_speed;
|
||||
Evas_List *menus;
|
||||
|
||||
Config *conf;
|
||||
|
||||
Ecore_Event_Handler *ev_handler_border_resize;
|
||||
Ecore_Event_Handler *ev_handler_border_move;
|
||||
Ecore_Event_Handler *ev_handler_border_add;
|
||||
Ecore_Event_Handler *ev_handler_border_remove;
|
||||
Ecore_Event_Handler *ev_handler_border_iconify;
|
||||
Ecore_Event_Handler *ev_handler_border_uniconify;
|
||||
Ecore_Event_Handler *ev_handler_border_stick;
|
||||
Ecore_Event_Handler *ev_handler_border_unstick;
|
||||
Ecore_Event_Handler *ev_handler_border_desk_set;
|
||||
Ecore_Event_Handler *ev_handler_border_stack;
|
||||
Ecore_Event_Handler *ev_handler_border_icon_change;
|
||||
Ecore_Event_Handler *ev_handler_zone_desk_count_set;
|
||||
Ecore_Event_Handler *ev_handler_desk_show;
|
||||
Ecore_Event_Handler *ev_handler_desk_name_change;
|
||||
|
||||
Evas_List *items; /* FIXME: save/load this */
|
||||
/* just config state */
|
||||
E_Config_Dialog *config_dialog;
|
||||
};
|
||||
|
||||
struct _Pager_Face
|
||||
{
|
||||
Pager *pager;
|
||||
E_Gadman_Client *gmc;
|
||||
Evas_List *instances;
|
||||
E_Menu *menu;
|
||||
Evas *evas;
|
||||
|
||||
E_Zone *zone;
|
||||
Evas_List *desks;
|
||||
|
||||
Evas_Object *pager_object;
|
||||
Evas_Object *table_object;
|
||||
|
||||
Evas_Coord fx, fy, fw, fh;
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} inset;
|
||||
|
||||
/* Current nr. of desktops */
|
||||
int xnum, ynum;
|
||||
|
||||
Config_Face *conf;
|
||||
|
||||
E_Drop_Handler *drop_handler;
|
||||
|
||||
Pager_Popup *current_popup;
|
||||
|
||||
unsigned char dragging:1;
|
||||
Evas_List *handlers;
|
||||
};
|
||||
|
||||
struct _Pager_Desk
|
||||
struct _Config_Item
|
||||
{
|
||||
E_Desk *desk;
|
||||
Pager_Face *face;
|
||||
Evas_List *wins;
|
||||
|
||||
Evas_Object *desk_object;
|
||||
Evas_Object *layout_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
int xpos, ypos;
|
||||
|
||||
int current : 1;
|
||||
};
|
||||
|
||||
struct _Pager_Win
|
||||
{
|
||||
E_Border *border;
|
||||
Pager_Desk *desk;
|
||||
|
||||
Evas_Object *window_object;
|
||||
Evas_Object *icon_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
struct {
|
||||
Pager_Face *from_face;
|
||||
unsigned char start : 1;
|
||||
unsigned char in_pager : 1;
|
||||
unsigned char dnd : 1;
|
||||
int x, y;
|
||||
int dx, dy;
|
||||
} drag;
|
||||
};
|
||||
|
||||
struct _Pager_Popup
|
||||
{
|
||||
E_Popup *popup;
|
||||
Pager_Face *src_face, *face;
|
||||
Evas_Object *bg_object;
|
||||
Ecore_Timer *timer;
|
||||
char *id;
|
||||
int zone_num;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
@ -153,8 +47,9 @@ EAPI int e_modapi_shutdown (E_Module *module);
|
|||
EAPI int e_modapi_save (E_Module *module);
|
||||
EAPI int e_modapi_info (E_Module *module);
|
||||
EAPI int e_modapi_about (E_Module *module);
|
||||
EAPI int e_modapi_config (E_Module *module);
|
||||
|
||||
void _pager_cb_config_updated(void *data);
|
||||
void _pager_cb_config_updated(void);
|
||||
void _config_pager_module(Config_Item *ci);
|
||||
extern Config *pager_config;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -45,7 +45,6 @@ _gc_init(E_Gadcon *gc, char *name, char *id, char *style)
|
|||
E_Gadcon_Client *gcc;
|
||||
Instance *inst;
|
||||
|
||||
printf("CREATE START GADCON %s %s\n", name, id);
|
||||
inst = E_NEW(Instance, 1);
|
||||
|
||||
o = edje_object_add(gc->evas);
|
||||
|
@ -59,13 +58,10 @@ _gc_init(E_Gadcon *gc, char *name, char *id, char *style)
|
|||
inst->o_button = o;
|
||||
inst->main_menu = NULL;
|
||||
|
||||
e_gadcon_client_util_menu_attach(gcc);
|
||||
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_button_cb_mouse_down, inst);
|
||||
/* FIXME: add callback to resize - and based off one dimension, request
|
||||
* another to be the same */
|
||||
e_gadcon_client_size_request(gcc, 32, 32);
|
||||
e_gadcon_client_min_size_set(gcc, 16, 16);
|
||||
e_gadcon_client_aspect_set(gcc, 1, 1);
|
||||
return gcc;
|
||||
}
|
||||
|
||||
|
@ -75,6 +71,7 @@ _gc_shutdown(E_Gadcon_Client *gcc)
|
|||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
evas_object_del(inst->o_button);
|
||||
free(inst);
|
||||
}
|
||||
|
||||
|
@ -84,9 +81,8 @@ _gc_orient(E_Gadcon_Client *gcc)
|
|||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
printf("OREINT to %i\n", gcc->gadcon->orient);
|
||||
e_gadcon_client_aspect_set(gcc, 20, 20);
|
||||
e_gadcon_client_min_size_set(gcc, 20, 20);
|
||||
e_gadcon_client_aspect_set(gcc, 16, 16);
|
||||
e_gadcon_client_min_size_set(gcc, 16, 16);
|
||||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
@ -105,15 +101,12 @@ _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
{
|
||||
Evas_Coord x, y, w, h;
|
||||
int cx, cy, cw, ch;
|
||||
E_Zone *zone;
|
||||
|
||||
evas_object_geometry_get(inst->o_button, &x, &y, &w, &h);
|
||||
e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch);
|
||||
e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon,
|
||||
&cx, &cy, &cw, &ch);
|
||||
x += cx;
|
||||
y += cy;
|
||||
zone = e_gadcon_zone_get(inst->gcc->gadcon);
|
||||
if (!zone)
|
||||
zone = e_util_zone_current_get(e_manager_current_get());
|
||||
if (!inst->main_menu)
|
||||
inst->main_menu = e_int_menus_main_new();
|
||||
if (inst->main_menu)
|
||||
|
@ -152,7 +145,8 @@ _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
x, y, w, h,
|
||||
dir, ev->timestamp);
|
||||
edje_object_signal_emit(inst->o_button, "active", "");
|
||||
evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL);
|
||||
evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button,
|
||||
EVAS_BUTTON_NONE, ev->timestamp, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -184,7 +178,7 @@ EAPI void *
|
|||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
e_gadcon_provider_register(&_gadcon_class);
|
||||
return NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
|
@ -217,11 +211,5 @@ e_modapi_about(E_Module *m)
|
|||
_("Experimental Button module for E17"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
/* standard module api calls e looks for */
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *m);
|
||||
|
|
|
@ -20,8 +20,7 @@ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH
|
|||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
e_mod_config.c
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*/
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
/* celsius */
|
||||
#define TEMP_LOW_LOW 32
|
||||
|
@ -42,7 +40,7 @@ static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
|
|||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_temperature_module(E_Container *con, Temperature *temp)
|
||||
_config_temperature_module(void)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -56,22 +54,23 @@ _config_temperature_module(E_Container *con, Temperature *temp)
|
|||
v->advanced.apply_cfdata = _advanced_apply_data;
|
||||
v->advanced.create_widgets = _advanced_create_widgets;
|
||||
|
||||
cfd = e_config_dialog_new(con, _("Temperature Configuration"), NULL, 0, v, temp);
|
||||
temp->config_dialog = cfd;
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
_("Temperature Configuration"), NULL, 0, v, NULL);
|
||||
temperature_config->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(Temperature *t, E_Config_Dialog_Data *cfdata)
|
||||
_fill_data(E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
double p;
|
||||
|
||||
cfdata->units = t->conf->units;
|
||||
if (t->conf->units == CELCIUS)
|
||||
cfdata->units = temperature_config->units;
|
||||
if (temperature_config->units == CELCIUS)
|
||||
cfdata->unit_method = 0;
|
||||
else
|
||||
cfdata->unit_method = 1;
|
||||
|
||||
p = t->conf->poll_time;
|
||||
p = temperature_config->poll_time;
|
||||
cfdata->poll_time = p;
|
||||
if ((p >= 0) && (p <= 5))
|
||||
cfdata->poll_method = 1; //Fast
|
||||
|
@ -82,7 +81,7 @@ _fill_data(Temperature *t, E_Config_Dialog_Data *cfdata)
|
|||
else if (p > 30)
|
||||
cfdata->poll_method = 60; //Very Slow
|
||||
|
||||
p = t->conf->low;
|
||||
p = temperature_config->low;
|
||||
if (cfdata->units == FAHRENHEIT)
|
||||
p = FAR_2_CEL(p - 1); // -1 so the conversion doesn't make mid go hi
|
||||
cfdata->low_temp = p;
|
||||
|
@ -93,7 +92,7 @@ _fill_data(Temperature *t, E_Config_Dialog_Data *cfdata)
|
|||
else if (p > TEMP_LOW_MID)
|
||||
cfdata->low_method = TEMP_LOW_HIGH;
|
||||
|
||||
p = t->conf->high;
|
||||
p = temperature_config->high;
|
||||
if (cfdata->units == FAHRENHEIT)
|
||||
p = FAR_2_CEL(p - 1);
|
||||
cfdata->high_temp = p;
|
||||
|
@ -104,11 +103,11 @@ _fill_data(Temperature *t, E_Config_Dialog_Data *cfdata)
|
|||
else if (p > TEMP_HIGH_MID)
|
||||
cfdata->high_method = TEMP_HIGH_HIGH;
|
||||
|
||||
if (!strcmp(t->conf->sensor_name, "temp1"))
|
||||
if (!strcmp(temperature_config->sensor_name, "temp1"))
|
||||
cfdata->sensor = 0;
|
||||
else if (!strcmp(t->conf->sensor_name, "temp2"))
|
||||
else if (!strcmp(temperature_config->sensor_name, "temp2"))
|
||||
cfdata->sensor = 1;
|
||||
else if (!strcmp(t->conf->sensor_name, "temp3"))
|
||||
else if (!strcmp(temperature_config->sensor_name, "temp3"))
|
||||
cfdata->sensor = 2;
|
||||
}
|
||||
|
||||
|
@ -116,21 +115,16 @@ static void *
|
|||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Temperature *t;
|
||||
|
||||
t = cfd->data;
|
||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||
_fill_data(t, cfdata);
|
||||
_fill_data(cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Temperature *t;
|
||||
|
||||
t = cfd->data;
|
||||
t->config_dialog = NULL;
|
||||
temperature_config->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
|
@ -217,33 +211,23 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Temperature *t;
|
||||
|
||||
t = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
if (cfdata->unit_method == 0)
|
||||
t->conf->units = CELCIUS;
|
||||
temperature_config->units = CELCIUS;
|
||||
else
|
||||
t->conf->units = FAHRENHEIT;
|
||||
|
||||
t->conf->poll_time = (double)cfdata->poll_method;
|
||||
|
||||
if (t->conf->units == FAHRENHEIT)
|
||||
temperature_config->units = FAHRENHEIT;
|
||||
temperature_config->poll_time = (double)cfdata->poll_method;
|
||||
if (temperature_config->units == FAHRENHEIT)
|
||||
{
|
||||
t->conf->low = CEL_2_FAR(cfdata->low_method);
|
||||
t->conf->high = CEL_2_FAR(cfdata->high_method);
|
||||
temperature_config->low = CEL_2_FAR(cfdata->low_method);
|
||||
temperature_config->high = CEL_2_FAR(cfdata->high_method);
|
||||
}
|
||||
else
|
||||
{
|
||||
t->conf->low = cfdata->low_method;
|
||||
t->conf->high = cfdata->high_method;
|
||||
temperature_config->low = cfdata->low_method;
|
||||
temperature_config->high = cfdata->high_method;
|
||||
}
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
_temperature_face_cb_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
/* Call Config Update */
|
||||
_temperature_face_cb_config_updated(t);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -252,9 +236,6 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
E_Radio_Group *rg;
|
||||
Temperature *t;
|
||||
|
||||
t = cfd->data;
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
of = e_widget_framelist_add(evas, _("Display Units"), 0);
|
||||
|
@ -312,10 +293,10 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
cfdata->low_temp = t->conf->low;
|
||||
cfdata->high_temp = t->conf->high;
|
||||
// cfdata->low_temp = temperature_config->low;
|
||||
// cfdata->high_temp = temperature_config->high;
|
||||
|
||||
if (t->conf->units == FAHRENHEIT)
|
||||
if (cfdata->units == FAHRENHEIT)
|
||||
{
|
||||
/* round-off to closest 5 */
|
||||
if (cfdata->high_temp % 5 > 3)
|
||||
|
@ -357,14 +338,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
static int
|
||||
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Temperature *t;
|
||||
|
||||
t = cfd->data;
|
||||
|
||||
e_border_button_bindings_ungrab_all();
|
||||
|
||||
/* Check if Display Units has been toggled */
|
||||
if (cfdata->unit_method != t->conf->units)
|
||||
if (cfdata->unit_method != temperature_config->units)
|
||||
{
|
||||
if (cfdata->unit_method == 0)
|
||||
{
|
||||
|
@ -377,35 +351,29 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
cfdata->low_temp = CEL_2_FAR(cfdata->low_temp);
|
||||
}
|
||||
}
|
||||
|
||||
if (cfdata->unit_method == 0)
|
||||
t->conf->units = CELCIUS;
|
||||
temperature_config->units = CELCIUS;
|
||||
else
|
||||
t->conf->units = FAHRENHEIT;
|
||||
|
||||
t->conf->poll_time = cfdata->poll_time;
|
||||
|
||||
t->conf->low = cfdata->low_temp;
|
||||
t->conf->high = cfdata->high_temp;
|
||||
|
||||
temperature_config->units = FAHRENHEIT;
|
||||
temperature_config->poll_time = cfdata->poll_time;
|
||||
temperature_config->low = cfdata->low_temp;
|
||||
temperature_config->high = cfdata->high_temp;
|
||||
if (temperature_config->sensor_name)
|
||||
evas_stringshare_del(temperature_config->sensor_name);
|
||||
temperature_config->sensor_name = NULL;
|
||||
switch (cfdata->sensor)
|
||||
{
|
||||
case 0:
|
||||
t->conf->sensor_name = strdup("temp1");
|
||||
temperature_config->sensor_name = evas_stringshare_add("temp1");
|
||||
break;
|
||||
case 1:
|
||||
t->conf->sensor_name = strdup("temp2");
|
||||
temperature_config->sensor_name = evas_stringshare_add("temp2");
|
||||
break;
|
||||
case 2:
|
||||
t->conf->sensor_name = strdup("temp3");
|
||||
temperature_config->sensor_name = evas_stringshare_add("temp3");
|
||||
break;
|
||||
}
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
_temperature_face_cb_config_updated();
|
||||
e_config_save_queue();
|
||||
|
||||
/* Call Config Update */
|
||||
_temperature_face_cb_config_updated(t);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_temperature_module(E_Container *con, Temperature *temp);
|
||||
#endif
|
||||
#endif
|
|
@ -3,255 +3,153 @@
|
|||
*/
|
||||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
#include <sys/types.h>
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
/* TODO List:
|
||||
*
|
||||
* which options should be in main menu, and which in face menu?
|
||||
*/
|
||||
|
||||
/* module private routines */
|
||||
static Temperature *_temperature_new();
|
||||
static void _temperature_free(Temperature *e);
|
||||
static int _temperature_cb_check(void *data);
|
||||
|
||||
static void _temperature_face_init(void *data, E_Gadget_Face *face);
|
||||
static void _temperature_face_free(void *data, E_Gadget_Face *face);
|
||||
|
||||
static void _temperature_face_level_set(E_Gadget_Face *face, double level);
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
|
||||
/* public module routines. all modules must have these */
|
||||
EAPI E_Module_Api e_modapi =
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* gadcon requirements */
|
||||
static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id, char *style);
|
||||
static void _gc_shutdown(E_Gadcon_Client *gcc);
|
||||
static void _gc_orient(E_Gadcon_Client *gcc);
|
||||
/* and actually define the gadcon class that this module provides (just 1) */
|
||||
static const E_Gadcon_Client_Class _gadcon_class =
|
||||
{
|
||||
E_MODULE_API_VERSION,
|
||||
"Temperature"
|
||||
GADCON_CLIENT_CLASS_VERSION,
|
||||
"temperature",
|
||||
{
|
||||
_gc_init, _gc_shutdown, _gc_orient
|
||||
}
|
||||
};
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* actual module specifics */
|
||||
|
||||
typedef struct _Instance Instance;
|
||||
|
||||
struct _Instance
|
||||
{
|
||||
E_Gadcon_Client *gcc;
|
||||
Evas_Object *o_temp;
|
||||
};
|
||||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _menu_cb_post(void *data, E_Menu *m);
|
||||
static int _temperature_cb_check(void *data);
|
||||
static void _temperature_face_level_set(Instance *inst, double level);
|
||||
static void _temperature_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static E_Config_DD *conf_edd = NULL;
|
||||
|
||||
Config *temperature_config = NULL;
|
||||
|
||||
static E_Gadcon_Client *
|
||||
_gc_init(E_Gadcon *gc, char *name, char *id, char *style)
|
||||
{
|
||||
E_Gadget *gad = NULL;
|
||||
E_Gadget_Api *api;
|
||||
Temperature *e;
|
||||
Evas_Object *o;
|
||||
E_Gadcon_Client *gcc;
|
||||
Instance *inst;
|
||||
|
||||
e = _temperature_new();
|
||||
inst = E_NEW(Instance, 1);
|
||||
|
||||
/* set up our actual gadget */
|
||||
api = E_NEW(E_Gadget_Api, 1);
|
||||
api->module = m;
|
||||
api->name = "temperature";
|
||||
api->func_face_init = _temperature_face_init;
|
||||
api->func_face_free = _temperature_face_free;
|
||||
api->data = e;
|
||||
|
||||
gad = e_gadget_new(api);
|
||||
E_FREE(api);
|
||||
|
||||
/* start the timer */
|
||||
e->gad = gad;
|
||||
e->temperature_check_timer = ecore_timer_add(e->conf->poll_time, _temperature_cb_check, gad);
|
||||
return gad;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
E_Gadget *gad;
|
||||
Temperature *e;
|
||||
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
E_CONFIG_DD_FREE(conf_face_edd);
|
||||
|
||||
gad = m->data;
|
||||
if (!gad) return 0;
|
||||
e = gad->data;
|
||||
if (e)
|
||||
{
|
||||
if (e->config_dialog)
|
||||
{
|
||||
e_object_del(E_OBJECT(e->config_dialog));
|
||||
e->config_dialog = NULL;
|
||||
}
|
||||
_temperature_free(e);
|
||||
}
|
||||
e_object_del(E_OBJECT(gad));
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_save(E_Module *m)
|
||||
{
|
||||
E_Gadget *gad;
|
||||
Temperature *e;
|
||||
|
||||
gad = m->data;
|
||||
if (!gad) return 0;
|
||||
e = gad->data;
|
||||
if (!e) return 0;
|
||||
e_config_domain_save("module.temperature", conf_edd, e->conf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(_("Enlightenment Temperature Module"),
|
||||
_("A module to measure the <hilight>ACPI Thermal sensor</hilight> on Linux.<br>"
|
||||
"It is especially useful for modern Laptops with high speed<br>"
|
||||
"CPUs that generate a lot of heat."));
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
E_Gadget *gad;
|
||||
Temperature *e;
|
||||
|
||||
gad = m->data;
|
||||
if (!gad) return 0;
|
||||
e = gad->data;
|
||||
_config_temperature_module(e_container_current_get(e_manager_current_get()), e);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* module private routines */
|
||||
static Temperature *
|
||||
_temperature_new()
|
||||
{
|
||||
Temperature *e;
|
||||
|
||||
e = E_NEW(Temperature, 1);
|
||||
if (!e) return NULL;
|
||||
|
||||
/* create the config edd */
|
||||
conf_face_edd = E_CONFIG_DD_NEW("Temperature_Config_Face", Config_Face);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config_Face
|
||||
#define D conf_face_edd
|
||||
E_CONFIG_VAL(D, T, enabled, UCHAR);
|
||||
|
||||
conf_edd = E_CONFIG_DD_NEW("Temperature_Config", Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, poll_time, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, low, INT);
|
||||
E_CONFIG_VAL(D, T, high, INT);
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
E_CONFIG_VAL(D, T, sensor_name, STR);
|
||||
E_CONFIG_VAL(D, T, units, INT);
|
||||
|
||||
e->conf = e_config_domain_load("module.temperature", conf_edd);
|
||||
if (!e->conf)
|
||||
{
|
||||
e->conf = E_NEW(Config, 1);
|
||||
e->conf->poll_time = 10.0;
|
||||
e->conf->low = 30;
|
||||
e->conf->high = 80;
|
||||
e->conf->sensor_name = "temp1";
|
||||
e->conf->units = CELCIUS;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 1000.0);
|
||||
E_CONFIG_LIMIT(e->conf->low, 0, 100);
|
||||
E_CONFIG_LIMIT(e->conf->high, 0, 220);
|
||||
E_CONFIG_LIMIT(e->conf->units, CELCIUS, FAHRENHEIT);
|
||||
|
||||
e->have_temp = -1;
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
void _temperature_face_init(void *data, E_Gadget_Face *face)
|
||||
{
|
||||
Temperature *e;
|
||||
Temperature_Face *ef;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
e = data;
|
||||
|
||||
ef = E_NEW(Temperature_Face, 1);
|
||||
if (!ef) return;
|
||||
|
||||
e_gadget_face_theme_set(face, "base/theme/modules/temperature",
|
||||
o = edje_object_add(gc->evas);
|
||||
e_theme_edje_object_set(o, "base/theme/modules/temperature",
|
||||
"modules/temperature/main");
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
gcc = e_gadcon_client_new(gc, name, id, style, o);
|
||||
gcc->data = inst;
|
||||
|
||||
e_gadman_client_policy_set(face->gmc, policy);
|
||||
inst->gcc = gcc;
|
||||
inst->o_temp = o;
|
||||
|
||||
ef->conf = evas_list_nth(e->conf->faces, face->face_num);
|
||||
if (!ef->conf)
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_button_cb_mouse_down, inst);
|
||||
temperature_config->instances = evas_list_append(temperature_config->instances, inst);
|
||||
temperature_config->have_temp = -1;
|
||||
_temperature_cb_check(NULL);
|
||||
return gcc;
|
||||
}
|
||||
|
||||
static void
|
||||
_gc_shutdown(E_Gadcon_Client *gcc)
|
||||
{
|
||||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
temperature_config->instances = evas_list_remove(temperature_config->instances, inst);
|
||||
evas_object_del(inst->o_temp);
|
||||
free(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_gc_orient(E_Gadcon_Client *gcc)
|
||||
{
|
||||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
e_gadcon_client_aspect_set(gcc, 16, 16);
|
||||
e_gadcon_client_min_size_set(gcc, 16, 16);
|
||||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
static void
|
||||
_button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Instance *inst;
|
||||
Evas_Event_Mouse_Down *ev;
|
||||
|
||||
inst = data;
|
||||
ev = event_info;
|
||||
if ((ev->button == 3) && (!temperature_config->menu))
|
||||
{
|
||||
ef->conf = E_NEW(Config_Face, 1);
|
||||
ef->conf->enabled = 1;
|
||||
e->conf->faces = evas_list_append(e->conf->faces, ef->conf);
|
||||
E_Menu *mn;
|
||||
E_Menu_Item *mi;
|
||||
int cx, cy, cw, ch;
|
||||
|
||||
mn = e_menu_new();
|
||||
e_menu_post_deactivate_callback_set(mn, _menu_cb_post, inst);
|
||||
temperature_config->menu = mn;
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Configuration"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
|
||||
e_menu_item_callback_set(mi, _temperature_face_cb_menu_configure, NULL);
|
||||
|
||||
e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0);
|
||||
|
||||
e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon,
|
||||
&cx, &cy, &cw, &ch);
|
||||
e_menu_activate_mouse(mn,
|
||||
e_util_zone_current_get(e_manager_current_get()),
|
||||
cx + ev->output.x, cy + ev->output.y, 1, 1,
|
||||
E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
|
||||
evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button,
|
||||
EVAS_BUTTON_NONE, ev->timestamp, NULL);
|
||||
}
|
||||
|
||||
face->data = ef;
|
||||
|
||||
_temperature_cb_check(face->gad);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
_temperature_free(Temperature *e)
|
||||
_menu_cb_post(void *data, E_Menu *m)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
ecore_timer_del(e->temperature_check_timer);
|
||||
|
||||
for (l = e->conf->faces; l; l = l->next)
|
||||
free(l->data);
|
||||
evas_list_free(e->conf->faces);
|
||||
free(e->conf);
|
||||
free(e);
|
||||
}
|
||||
|
||||
static void
|
||||
_temperature_face_free(void *data, E_Gadget_Face *face)
|
||||
{
|
||||
Temperature_Face *ef;
|
||||
ef = face->data;
|
||||
|
||||
free(ef);
|
||||
if (!temperature_config->menu) return;
|
||||
e_object_del(E_OBJECT(temperature_config->menu));
|
||||
temperature_config->menu = NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
_temperature_cb_check(void *data)
|
||||
{
|
||||
E_Gadget *gad;
|
||||
E_Gadget_Face *face;
|
||||
Temperature *t;
|
||||
int ret = 0;
|
||||
Instance *inst;
|
||||
Ecore_List *therms;
|
||||
Evas_List *l;
|
||||
int temp = 0;
|
||||
|
@ -261,11 +159,6 @@ _temperature_cb_check(void *data)
|
|||
int len;
|
||||
#endif
|
||||
|
||||
gad = data;
|
||||
if (!gad) return 0;
|
||||
t = gad->data;
|
||||
if (!t) return 0;
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
if (mib[0] == -1)
|
||||
{
|
||||
|
@ -305,7 +198,7 @@ _temperature_cb_check(void *data)
|
|||
{
|
||||
char *name, *sensor;
|
||||
|
||||
sensor = t->conf->sensor_name;
|
||||
sensor = temperature_config->sensor_name;
|
||||
if (!sensor) sensor = "temp1";
|
||||
|
||||
while ((name = ecore_list_next(therms)))
|
||||
|
@ -370,77 +263,183 @@ _temperature_cb_check(void *data)
|
|||
}
|
||||
#endif
|
||||
|
||||
if (t->conf->units == FAHRENHEIT)
|
||||
if (temperature_config->units == FAHRENHEIT)
|
||||
temp = (temp * 9.0 / 5.0) + 32;
|
||||
|
||||
if (ret)
|
||||
{
|
||||
char *utf8;
|
||||
|
||||
if (t->have_temp != 1)
|
||||
if (temperature_config->have_temp != 1)
|
||||
{
|
||||
/* enable therm object */
|
||||
for (l = gad->faces; l; l = l->next)
|
||||
for (l = temperature_config->instances; l; l = l->next)
|
||||
{
|
||||
face = l->data;
|
||||
edje_object_signal_emit(face->main_obj, "known", "");
|
||||
inst = l->data;
|
||||
edje_object_signal_emit(inst->o_temp, "known", "");
|
||||
}
|
||||
t->have_temp = 1;
|
||||
temperature_config->have_temp = 1;
|
||||
}
|
||||
|
||||
if (t->conf->units == FAHRENHEIT)
|
||||
if (temperature_config->units == FAHRENHEIT)
|
||||
snprintf(buf, sizeof(buf), "%i°F", temp);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), "%i°C", temp);
|
||||
utf8 = ecore_txt_convert("iso-8859-1", "utf-8", buf);
|
||||
|
||||
for (l = gad->faces; l; l = l->next)
|
||||
for (l = temperature_config->instances; l; l = l->next)
|
||||
{
|
||||
face = l->data;
|
||||
_temperature_face_level_set(face,
|
||||
(double)(temp - t->conf->low) /
|
||||
(double)(t->conf->high - t->conf->low));
|
||||
|
||||
edje_object_part_text_set(face->main_obj, "reading", utf8);
|
||||
inst = l->data;
|
||||
_temperature_face_level_set(inst,
|
||||
(double)(temp - temperature_config->low) /
|
||||
(double)(temperature_config->high - temperature_config->low));
|
||||
edje_object_part_text_set(inst->o_temp, "reading", utf8);
|
||||
}
|
||||
free(utf8);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (t->have_temp != 0)
|
||||
if (temperature_config->have_temp != 0)
|
||||
{
|
||||
/* disable therm object */
|
||||
for (l = gad->faces; l; l = l->next)
|
||||
|
||||
for (l = temperature_config->instances; l; l = l->next)
|
||||
{
|
||||
face = l->data;
|
||||
edje_object_signal_emit(face->main_obj, "unknown", "");
|
||||
edje_object_part_text_set(face->main_obj, "reading", "NO TEMP");
|
||||
_temperature_face_level_set(face, 0.5);
|
||||
inst = l->data;
|
||||
edje_object_signal_emit(inst->o_temp, "unknown", "");
|
||||
edje_object_part_text_set(inst->o_temp, "reading", "NO TEMP");
|
||||
_temperature_face_level_set(inst, 0.5);
|
||||
}
|
||||
t->have_temp = 0;
|
||||
temperature_config->have_temp = 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_temperature_face_level_set(E_Gadget_Face *face, double level)
|
||||
_temperature_face_level_set(Instance *inst, double level)
|
||||
{
|
||||
Edje_Message_Float msg;
|
||||
|
||||
if (level < 0.0) level = 0.0;
|
||||
else if (level > 1.0) level = 1.0;
|
||||
msg.val = level;
|
||||
edje_object_message_send(face->main_obj, EDJE_MESSAGE_FLOAT, 1, &msg);
|
||||
edje_object_message_send(inst->o_temp, EDJE_MESSAGE_FLOAT, 1, &msg);
|
||||
}
|
||||
|
||||
static void
|
||||
_temperature_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
if (!temperature_config) return;
|
||||
if (temperature_config->config_dialog) return;
|
||||
_config_temperature_module();
|
||||
}
|
||||
|
||||
void
|
||||
_temperature_face_cb_config_updated(Temperature *temp)
|
||||
_temperature_face_cb_config_updated(void)
|
||||
{
|
||||
/* Call all funcs needed to handle update */
|
||||
ecore_timer_del(temp->temperature_check_timer);
|
||||
temp->temperature_check_timer = ecore_timer_add(temp->conf->poll_time, _temperature_cb_check, temp->gad);
|
||||
|
||||
ecore_timer_del(temperature_config->temperature_check_timer);
|
||||
temperature_config->temperature_check_timer =
|
||||
ecore_timer_add(temperature_config->poll_time, _temperature_cb_check,
|
||||
NULL);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
/**/
|
||||
/* module setup */
|
||||
EAPI E_Module_Api e_modapi =
|
||||
{
|
||||
E_MODULE_API_VERSION,
|
||||
"Temperature"
|
||||
};
|
||||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m)
|
||||
{
|
||||
conf_edd = E_CONFIG_DD_NEW("Temperature_Config", Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, poll_time, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, low, INT);
|
||||
E_CONFIG_VAL(D, T, high, INT);
|
||||
E_CONFIG_VAL(D, T, sensor_name, STR);
|
||||
E_CONFIG_VAL(D, T, units, INT);
|
||||
|
||||
temperature_config = e_config_domain_load("module.temperature", conf_edd);
|
||||
if (!temperature_config)
|
||||
{
|
||||
temperature_config = E_NEW(Config, 1);
|
||||
temperature_config->poll_time = 10.0;
|
||||
temperature_config->low = 30;
|
||||
temperature_config->high = 80;
|
||||
temperature_config->sensor_name = evas_stringshare_add("temp1");
|
||||
temperature_config->units = CELCIUS;
|
||||
}
|
||||
E_CONFIG_LIMIT(temperature_config->poll_time, 0.5, 1000.0);
|
||||
E_CONFIG_LIMIT(temperature_config->low, 0, 100);
|
||||
E_CONFIG_LIMIT(temperature_config->high, 0, 220);
|
||||
E_CONFIG_LIMIT(temperature_config->units, CELCIUS, FAHRENHEIT);
|
||||
|
||||
temperature_config->have_temp = -1;
|
||||
temperature_config->temperature_check_timer =
|
||||
ecore_timer_add(temperature_config->poll_time, _temperature_cb_check,
|
||||
NULL);
|
||||
e_gadcon_provider_register(&_gadcon_class);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
e_gadcon_provider_unregister(&_gadcon_class);
|
||||
|
||||
if (temperature_config->config_dialog)
|
||||
e_object_del(E_OBJECT(temperature_config->config_dialog));
|
||||
if (temperature_config->temperature_check_timer)
|
||||
ecore_timer_del(temperature_config->temperature_check_timer);
|
||||
if (temperature_config->sensor_name)
|
||||
evas_stringshare_del(temperature_config->sensor_name);
|
||||
free(temperature_config);
|
||||
temperature_config = NULL;
|
||||
E_CONFIG_DD_FREE(conf_edd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_save(E_Module *m)
|
||||
{
|
||||
e_config_domain_save("module.temperature", conf_edd, temperature_config);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(_("Enlightenment Temperature Module"),
|
||||
_("A module to measure the <hilight>ACPI Thermal sensor</hilight> on Linux.<br>"
|
||||
"It is especially useful for modern Laptops with high speed<br>"
|
||||
"CPUs that generate a lot of heat."));
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
if (!temperature_config) return 0;
|
||||
if (temperature_config->config_dialog) return 0;
|
||||
_config_temperature_module();
|
||||
return 1;
|
||||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Face Config_Face;
|
||||
typedef struct _Temperature Temperature;
|
||||
typedef struct _Temperature_Face Temperature_Face;
|
||||
|
||||
typedef enum _Unit
|
||||
{
|
||||
|
@ -17,32 +14,17 @@ typedef enum _Unit
|
|||
|
||||
struct _Config
|
||||
{
|
||||
/* saved * loaded config values */
|
||||
double poll_time;
|
||||
int low, high;
|
||||
Evas_List *faces;
|
||||
char *sensor_name;
|
||||
Unit units;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
{
|
||||
unsigned char enabled;
|
||||
};
|
||||
|
||||
struct _Temperature
|
||||
{
|
||||
Config *conf;
|
||||
Ecore_Timer *temperature_check_timer;
|
||||
/* just config state */
|
||||
E_Config_Dialog *config_dialog;
|
||||
Evas_List *instances;
|
||||
E_Menu *menu;
|
||||
Ecore_Timer *temperature_check_timer;
|
||||
unsigned char have_temp;
|
||||
E_Gadget *gad;
|
||||
};
|
||||
|
||||
struct _Temperature_Face
|
||||
{
|
||||
Temperature *temp;
|
||||
Config_Face *conf;
|
||||
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
@ -54,6 +36,9 @@ EAPI int e_modapi_info (E_Module *m);
|
|||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
void _temperature_face_cb_config_updated(Temperature *temp);
|
||||
void _config_temperature_module(void);
|
||||
void _temperature_face_cb_config_updated(void);
|
||||
extern Config *temperature_config;
|
||||
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue