de52a72ce9
git-svn-id: http://www.neo1973-germany.de/svn@239 46df4e5c-bc4e-4628-a0fc-830ba316316d
490 lines
12 KiB
Text
Executable file
490 lines
12 KiB
Text
Executable file
// calculator_screen.edc
|
|
// this is a theme for epydial, a pyneo dialer
|
|
//
|
|
// TODO: make the font colors shinier :)
|
|
//
|
|
// Signal1:
|
|
|
|
data {
|
|
item: "author" "thanks to dave andreoli, http://www.gurumeditation.it/blog/wp-content/uploads/releases/calculator03.tgz";
|
|
item: "version" "prototype";
|
|
item: "name" "epydial_blackwhite";
|
|
}
|
|
|
|
images {
|
|
image: "bg.png" COMP;
|
|
image: "0.png" COMP;
|
|
image: "1.png" COMP;
|
|
image: "2.png" COMP;
|
|
image: "3.png" COMP;
|
|
image: "4.png" COMP;
|
|
image: "5.png" COMP;
|
|
image: "6.png" COMP;
|
|
image: "7.png" COMP;
|
|
image: "8.png" COMP;
|
|
image: "9.png" COMP;
|
|
image: "bg_calc.png" COMP;
|
|
image: "canc.png" COMP;
|
|
image: "divide.png" COMP;
|
|
image: "multiply.png" COMP;
|
|
image: "minus.png" COMP;
|
|
image: "plus.png" COMP;
|
|
image: "point.png" COMP;
|
|
image: "result.png" COMP;
|
|
image: "m-c.png" COMP;
|
|
image: "m-minus.png" COMP;
|
|
image: "m-plus.png" COMP;
|
|
image: "m-r.png" COMP;
|
|
}
|
|
|
|
fonts {
|
|
font: "Vera.ttf" "vera";
|
|
}
|
|
|
|
collections {
|
|
group {
|
|
name: "pyneo/calc/screen";
|
|
script {
|
|
public current = 0; //Current float number
|
|
public sum = 0;
|
|
public sub = 0;
|
|
public mul = 0;
|
|
public div = 0;
|
|
public restart = 0;
|
|
public locale = 0; //The ascii value used for '.' by current locale
|
|
|
|
public get_locale()
|
|
{
|
|
new buf[5];
|
|
snprintf(buf, 4, "%f", 1.1);
|
|
set_int(locale, buf[1]);
|
|
}
|
|
|
|
public calc_digit_add(val)
|
|
{
|
|
new buf[32];
|
|
new text[32];
|
|
|
|
get_text(PART:"display", text, 31);
|
|
|
|
//need a new number (+.-,*,/ pressed)
|
|
if (get_int(restart))
|
|
snprintf(buf, 31, "%i", val);
|
|
//point pressed
|
|
else if (val == -1)
|
|
snprintf(buf, 31, "%i%c", get_int(current), get_int(locale));
|
|
//only the 0 digit is on screen
|
|
else if ((text[0] == '0') && (text[1] == 0))
|
|
snprintf(buf, 31, "%i", val);
|
|
//Normal: append the number
|
|
else
|
|
snprintf(buf, 31, "%s%i", text, val);
|
|
|
|
set_text(PART:"display", buf);
|
|
set_float(current, atof(buf));
|
|
|
|
if (get_int(restart))
|
|
set_int(restart, 0);
|
|
}
|
|
|
|
public calc_reset()
|
|
{
|
|
set_float(current, 0.0);
|
|
set_float(sum, 0.0);
|
|
set_float(sub, 0.0);
|
|
set_float(mul, 0.0);
|
|
set_float(div, 0.0);
|
|
set_text(PART:"display", "0");
|
|
}
|
|
|
|
public calc_result()
|
|
{
|
|
new buf[32];
|
|
|
|
if (get_float(sum))
|
|
{
|
|
snprintf(buf, 31, "%f", get_float(sum) + get_float(current));
|
|
set_float(sum, 0.0);
|
|
}
|
|
else if (get_float(sub))
|
|
{
|
|
snprintf(buf, 31, "%f", get_float(sub) - get_float(current));
|
|
set_float(sub, 0.0);
|
|
}
|
|
else if (get_float(mul))
|
|
{
|
|
snprintf(buf, 31, "%f", get_float(mul) * get_float(current));
|
|
set_float(mul, 0.0);
|
|
}
|
|
else if (get_float(div))
|
|
{
|
|
snprintf(buf, 31, "%f", get_float(div) / get_float(current));
|
|
set_float(div, 0.0);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
//remove leading zeroes
|
|
new i = 0;
|
|
while (buf[i] != 0) i++;
|
|
i--;
|
|
while (i && (buf[i] == '0'))
|
|
{
|
|
buf[i] = 0;
|
|
i--;
|
|
}
|
|
if (buf[i] == get_int(locale)) buf[i] = 0;
|
|
|
|
//Set result
|
|
set_text(PART:"display", buf);
|
|
set_float(current, atof(buf));
|
|
}
|
|
|
|
public calc_sum()
|
|
{
|
|
if (get_float(sum))
|
|
calc_result();
|
|
set_float(sum, get_float(current));
|
|
set_float(current, 0.0);
|
|
set_int(restart, 1);
|
|
}
|
|
|
|
public calc_sub()
|
|
{
|
|
if (get_float(sub))
|
|
calc_result();
|
|
set_float(sub, get_float(current));
|
|
set_float(current, 0.0);
|
|
set_int(restart, 1);
|
|
}
|
|
|
|
public calc_mul()
|
|
{
|
|
if (get_float(mul))
|
|
calc_result();
|
|
set_float(mul, get_float(current));
|
|
set_float(current, 0.0);
|
|
set_int(restart, 1);
|
|
}
|
|
|
|
public calc_div()
|
|
{
|
|
if (get_float(div))
|
|
calc_result();
|
|
set_float(div, get_float(current));
|
|
set_float(current, 0.0);
|
|
set_int(restart, 1);
|
|
}
|
|
}
|
|
|
|
parts {
|
|
part {
|
|
name: "background";
|
|
type: IMAGE;
|
|
mouse_events: 1;
|
|
description {
|
|
state: "default" 0;
|
|
rel1 { relative: 0 0; offset: 0 0; }
|
|
rel2 { relative: 1 1; offset: 0 0; }
|
|
image { normal: "bg.png"; }
|
|
}
|
|
}
|
|
part {
|
|
name: "bg_calc";
|
|
type: IMAGE;
|
|
mouse_events: 1;
|
|
description {
|
|
state: "default" 0.0;
|
|
aspect: 0.9 0.9;
|
|
aspect_preference: BOTH;
|
|
image { normal: "bg_calc.png"; }
|
|
}
|
|
}
|
|
part {
|
|
name: "display";
|
|
type: TEXT;
|
|
mouse_events: 0;
|
|
description {
|
|
state: "default" 0.0;
|
|
color: 68 72 63 200;
|
|
rel1 {
|
|
relative: 0.07 0.09;
|
|
to: "bg_calc";
|
|
}
|
|
rel2 {
|
|
relative: 0.93 0.22;
|
|
to: "bg_calc";
|
|
}
|
|
text {
|
|
font: "vera";
|
|
size: 20;
|
|
fit: 0 1;
|
|
align: 1 0.5;
|
|
text: "012345";
|
|
}
|
|
}
|
|
}
|
|
|
|
part {
|
|
name: "num_bg";
|
|
type: RECT;
|
|
mouse_events: 0;
|
|
description {
|
|
state: "default" 0.0;
|
|
color: 255 0 255 0;
|
|
rel1 {
|
|
relative: 0.14 0.27;
|
|
to: "bg_calc";
|
|
}
|
|
rel2 {
|
|
relative: 0.73 0.95;
|
|
to: "bg_calc";
|
|
}
|
|
}
|
|
}
|
|
|
|
#define BTN(pname, rel1x, rel1y, rel2x, rel2y) \
|
|
part { \
|
|
name: pname; \
|
|
type: IMAGE; \
|
|
description { \
|
|
state: "default" 0.0; \
|
|
align: 0.5 0.5; \
|
|
image { \
|
|
normal: pname".png"; \
|
|
} \
|
|
rel1 { \
|
|
relative: (rel1x+0.01) (rel1y+0.01); \
|
|
to: "num_bg"; \
|
|
} \
|
|
rel2 { \
|
|
relative: (rel2x-0.01) (rel2y-0.01); \
|
|
to: "num_bg"; \
|
|
} \
|
|
} \
|
|
description { \
|
|
state: "pressed" 0.0; \
|
|
align: 0.5 0.5; \
|
|
image { \
|
|
normal: pname".png"; \
|
|
} \
|
|
rel1 { \
|
|
relative: (rel1x+0.01) (rel1y+0.05); \
|
|
to: "num_bg"; \
|
|
} \
|
|
rel2 { \
|
|
relative: (rel2x-0.01) (rel2y-0.05); \
|
|
to: "num_bg"; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
BTN("0", 0.0, 0.75, 0.33, 1.0)
|
|
BTN("1", 0.0, 0.50, 0.33, 0.75)
|
|
BTN("2", 0.33, 0.50, 0.66, 0.75)
|
|
BTN("3", 0.66, 0.50, 0.99, 0.75)
|
|
BTN("4", 0.0, 0.25, 0.33, 0.50)
|
|
BTN("5", 0.33, 0.25, 0.66, 0.50)
|
|
BTN("6", 0.66, 0.25, 0.99, 0.50)
|
|
BTN("7", 0.0, 0.0, 0.33, 0.25)
|
|
BTN("8", 0.33, 0.0, 0.66, 0.25)
|
|
BTN("9", 0.66, 0.0, 0.99, 0.25)
|
|
BTN("point", 0.33, 0.75, 0.66, 1.0)
|
|
BTN("result", 0.66, 0.75, 0.99, 1.0)
|
|
BTN("canc", 1.03, 0.0, 1.30, 0.20)
|
|
BTN("divide", 1.03, 0.20, 1.30, 0.40)
|
|
BTN("multiply", 1.03, 0.40, 1.30, 0.60)
|
|
BTN("minus", 1.03, 0.60, 1.30, 0.80)
|
|
BTN("plus", 1.03, 0.80, 1.30, 1.0)
|
|
|
|
}
|
|
#define BTN_PROG(__pname) \
|
|
program { \
|
|
name: "pressed_"__pname; \
|
|
signal: "mouse,down,*"; \
|
|
source: __pname; \
|
|
action: STATE_SET "pressed" 0.0; \
|
|
transition: SINUSOIDAL 0.2; \
|
|
target: __pname; \
|
|
after: "released_"__pname; \
|
|
} \
|
|
program { \
|
|
name: "released_"__pname; \
|
|
source: ""; \
|
|
action: STATE_SET "default" 0.0;\
|
|
transition: SINUSOIDAL 0.2; \
|
|
target: __pname; \
|
|
}
|
|
|
|
|
|
|
|
programs {
|
|
program {
|
|
name: "init";
|
|
signal: "load";
|
|
source: "";
|
|
script {
|
|
set_text(PART:"display", "0");
|
|
get_locale();
|
|
}
|
|
}
|
|
|
|
BTN_PROG("0")
|
|
BTN_PROG("1")
|
|
BTN_PROG("2")
|
|
BTN_PROG("3")
|
|
BTN_PROG("4")
|
|
BTN_PROG("5")
|
|
BTN_PROG("6")
|
|
BTN_PROG("7")
|
|
BTN_PROG("8")
|
|
BTN_PROG("9")
|
|
BTN_PROG("point")
|
|
BTN_PROG("result")
|
|
BTN_PROG("canc")
|
|
BTN_PROG("divide")
|
|
BTN_PROG("multiply")
|
|
BTN_PROG("plus")
|
|
BTN_PROG("minus")
|
|
|
|
program {
|
|
name: "clicked_0";
|
|
signal: "mouse,down,*";
|
|
source: "0";
|
|
script {
|
|
calc_digit_add(0);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_1";
|
|
signal: "mouse,down,*";
|
|
source: "1";
|
|
script {
|
|
calc_digit_add(1);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_2";
|
|
signal: "mouse,down,*";
|
|
source: "2";
|
|
script {
|
|
calc_digit_add(2);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_3";
|
|
signal: "mouse,down,*";
|
|
source: "3";
|
|
script {
|
|
calc_digit_add(3);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_4";
|
|
signal: "mouse,down,*";
|
|
source: "4";
|
|
script {
|
|
calc_digit_add(4);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_5";
|
|
signal: "mouse,down,*";
|
|
source: "5";
|
|
script {
|
|
calc_digit_add(5);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_6";
|
|
signal: "mouse,down,*";
|
|
source: "6";
|
|
script {
|
|
calc_digit_add(6);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_7";
|
|
signal: "mouse,down,*";
|
|
source: "7";
|
|
script {
|
|
calc_digit_add(7);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_8";
|
|
signal: "mouse,down,*";
|
|
source: "8";
|
|
script {
|
|
calc_digit_add(8);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_9";
|
|
signal: "mouse,down,*";
|
|
source: "9";
|
|
script {
|
|
calc_digit_add(9);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_point";
|
|
signal: "mouse,down,*";
|
|
source: "point";
|
|
script {
|
|
calc_digit_add(-1);
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_canc";
|
|
signal: "mouse,down,*";
|
|
source: "canc";
|
|
script {
|
|
calc_reset();
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_plus";
|
|
signal: "mouse,down,*";
|
|
source: "plus";
|
|
script {
|
|
calc_sum();
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_minus";
|
|
signal: "mouse,down,*";
|
|
source: "minus";
|
|
script {
|
|
calc_sub();
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_multiply";
|
|
signal: "mouse,down,*";
|
|
source: "multiply";
|
|
script {
|
|
calc_mul();
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_divide";
|
|
signal: "mouse,down,*";
|
|
source: "divide";
|
|
script {
|
|
calc_div();
|
|
}
|
|
}
|
|
program {
|
|
name: "clicked_result";
|
|
signal: "mouse,down,*";
|
|
source: "result";
|
|
script {
|
|
calc_result();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|