Rename dialer main screen theme file
Add "in call" screen theme file Rework TestView and EdjeGroup classes to allow the use of multiple edje groups and corresponding theme files Add compile_theme script, making use of easy_e17 Fix bug in EdjeGroup.__init__() that made use of newly renamed variable f git-svn-id: http://www.neo1973-germany.de/svn@107 46df4e5c-bc4e-4628-a0fc-830ba316316d
This commit is contained in:
parent
75cfd64932
commit
efe7084165
6 changed files with 242 additions and 11 deletions
9
epydial/compile_theme
Executable file
9
epydial/compile_theme
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd data/themes
|
||||||
|
|
||||||
|
for filename in *.edc
|
||||||
|
do
|
||||||
|
/opt/e17/bin/edje_cc -id ../images -fd ../fonts $filename
|
||||||
|
done
|
||||||
|
|
203
epydial/data/themes/dialer_incall.edc
Normal file
203
epydial/data/themes/dialer_incall.edc
Normal file
|
@ -0,0 +1,203 @@
|
||||||
|
// incall.edc
|
||||||
|
// this is a theme for epydial, a pyneo dialer
|
||||||
|
//
|
||||||
|
// TODO: make the font colors shinier :)
|
||||||
|
//
|
||||||
|
// Signal1: "dialer_send"
|
||||||
|
// Parameter1.1: $"keynumber"
|
||||||
|
// Parameter1.2: "backspace"
|
||||||
|
// Parameter1.2: "dial"
|
||||||
|
|
||||||
|
data {
|
||||||
|
item: "author" "thomasg [thomas (a) gstaedtner (.) net]";
|
||||||
|
item: "version" "prototype";
|
||||||
|
item: "name" "epydial_default";
|
||||||
|
}
|
||||||
|
|
||||||
|
color_classes {
|
||||||
|
color_class {
|
||||||
|
name: "button_inactive";
|
||||||
|
color: 255 255 255 255;
|
||||||
|
color2: 25 215 0 255;
|
||||||
|
color3: 25 215 0 255;
|
||||||
|
}
|
||||||
|
color_class {
|
||||||
|
name: "button_active";
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color2: 0 0 0 255;
|
||||||
|
color3: 0 0 0 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spectra {
|
||||||
|
spectrum {
|
||||||
|
name: "background";
|
||||||
|
color: 80 80 80 255 1;
|
||||||
|
color: 210 210 210 255 1;
|
||||||
|
}
|
||||||
|
spectrum {
|
||||||
|
name: "button";
|
||||||
|
color: 5 5 5 255 1;
|
||||||
|
color: 110 110 110 255 1;
|
||||||
|
color: 10 10 10 255 1;
|
||||||
|
}
|
||||||
|
spectrum {
|
||||||
|
name: "button_active";
|
||||||
|
color: 15 170 0 255 1;
|
||||||
|
color: 130 255 0 255 1;
|
||||||
|
color: 20 200 0 255 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BUTTON(button_number, rel1x, rel1y, rel2x, rel2y, button_caption) \
|
||||||
|
part { \
|
||||||
|
name: "button_"button_number; \
|
||||||
|
type: GRADIENT; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
gradient { \
|
||||||
|
spectrum: "button"; \
|
||||||
|
rel1 { relative: 0 0; offset: 0 0; }; \
|
||||||
|
rel2 { relative: 0 0.75; offset: 0 0; }; \
|
||||||
|
} \
|
||||||
|
fill { \
|
||||||
|
spread: 1; \
|
||||||
|
angle: 1; \
|
||||||
|
size { relative: 1 0; offset: 0 0; }; \
|
||||||
|
} \
|
||||||
|
rel1 { relative: rel1x rel1y; offset: 0 0; }; \
|
||||||
|
rel2 { relative: rel2x rel2y; offset: 0 0; }; \
|
||||||
|
} \
|
||||||
|
description { \
|
||||||
|
state: "default" 0.5; \
|
||||||
|
inherit: "default" 0; \
|
||||||
|
gradient.spectrum: "button_active"; \
|
||||||
|
rel1.offset: 0 -5; \
|
||||||
|
rel2.offset: 0 5; \
|
||||||
|
} \
|
||||||
|
description { \
|
||||||
|
state: "default" 1; \
|
||||||
|
inherit: "default" 0; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
part { \
|
||||||
|
name: "button_accent_"button_number; \
|
||||||
|
type: RECT; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color: 25 215 0 255; \
|
||||||
|
rel1 { \
|
||||||
|
to: "button_"button_number; \
|
||||||
|
relative: 0 0.95; \
|
||||||
|
} \
|
||||||
|
rel2.to: "button_"button_number; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
part { \
|
||||||
|
name: "button_"button_number"_caption"; \
|
||||||
|
type: TEXT; \
|
||||||
|
mouse_events: 0; \
|
||||||
|
effect: GLOW; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color_class: "button_inactive"; \
|
||||||
|
rel1 { \
|
||||||
|
to: "button_"button_number; \
|
||||||
|
relative: 0 0; \
|
||||||
|
} \
|
||||||
|
rel2 { \
|
||||||
|
to: "button_"button_number; \
|
||||||
|
relative: 1 1; \
|
||||||
|
} \
|
||||||
|
text { \
|
||||||
|
text: button_caption; \
|
||||||
|
size: 18; \
|
||||||
|
font: "Sans:style=Bold,Edje-Vera"; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_signal_emit"; \
|
||||||
|
signal: "mouse,down,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: SIGNAL_EMIT "dialer_send" button_caption; \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_animation"; \
|
||||||
|
signal: "mouse,down,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: STATE_SET "default" 0.5; \
|
||||||
|
target: "button_"button_number; \
|
||||||
|
} \
|
||||||
|
program { \
|
||||||
|
name: "button_"button_number"_animation_end"; \
|
||||||
|
signal: "mouse,up,*"; \
|
||||||
|
source: "button_"button_number; \
|
||||||
|
action: STATE_SET "default" 1; \
|
||||||
|
target: "button_"button_number; \
|
||||||
|
transition: DECELERATE 0.1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DESIGN_STRIPE(stripe_number, rel1x, rel1y, rel2x, rel2y) \
|
||||||
|
part { \
|
||||||
|
name: "design_stripe_"stripe_number; \
|
||||||
|
type: RECT; \
|
||||||
|
description { \
|
||||||
|
state: "default" 0; \
|
||||||
|
color: 0 0 0 255; \
|
||||||
|
rel1 { relative: rel1x rel1y; offset: 0 0; }; \
|
||||||
|
rel2 { relative: rel2x rel2y; offset: 0 0; }; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DESIGN_SEPERATOR(seperator_number, rel1x, rel1y, rel2x, rel2y) \
|
||||||
|
part { \
|
||||||
|
name: "design_seperator_"seperator_number; \
|
||||||
|
type: RECT; \
|
||||||
|
description { \
|
||||||
|
state: "defeault" 0; \
|
||||||
|
color: 255 255 255 100; \
|
||||||
|
rel1 { relative: rel1x rel1y; offset: -0.5 7; }; \
|
||||||
|
rel2 { relative: rel2x rel2y; offset: 0.5 -9; }; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
collections {
|
||||||
|
group {
|
||||||
|
name: "pyneo/dialer/incall";
|
||||||
|
min: 100 100;
|
||||||
|
max: 800 800;
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "background";
|
||||||
|
type: GRADIENT;
|
||||||
|
description {
|
||||||
|
state: "default" 0;
|
||||||
|
gradient {
|
||||||
|
spectrum: "background";
|
||||||
|
rel1 { relative: 0 0; offset: 0 0; };
|
||||||
|
rel2 { relative: 0 1; offset: 0 0; };
|
||||||
|
}
|
||||||
|
fill {
|
||||||
|
spread: 1;
|
||||||
|
angle: 1;
|
||||||
|
size { relative: 1 0; offset: 0 0; };
|
||||||
|
}
|
||||||
|
rel1 { relative: 0 0; offset: 0 0; };
|
||||||
|
rel2 { relative: 1 1; offset: 0 0; };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* stripes - just for design :) */
|
||||||
|
/* DESIGN_STRIPE(1, 1/2, 0.18, 1, 0.18);
|
||||||
|
DESIGN_STRIPE(2, 1/2, 0.22, 1, 0.22);
|
||||||
|
DESIGN_STRIPE(3, 1/2, 0.26, 1, 0.26); */
|
||||||
|
|
||||||
|
BUTTON(1, 0.1, 0.2, 0.9, 0.4, "End Call");
|
||||||
|
BUTTON(2, 0.1, 0.45, 0.9, 0.65, "Back To Dialer");
|
||||||
|
BUTTON(3, 0.1, 0.7, 0.9, 0.9, "Hold Call");
|
||||||
|
/* DESIGN_SEPERATOR(1, 1/3, 25/70, 1/3, 35/70); */
|
||||||
|
/* DESIGN_SEPERATOR(2, 2/3, 25/70, 2/3, 35/70); */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
epydial/data/themes/dialer_incall.edj
Normal file
BIN
epydial/data/themes/dialer_incall.edj
Normal file
Binary file not shown.
Binary file not shown.
|
@ -11,8 +11,11 @@ FRAMETIME = 1.0 / 20
|
||||||
FULLSCREEN = True
|
FULLSCREEN = True
|
||||||
TITLE = "epydial"
|
TITLE = "epydial"
|
||||||
WM_INFO = ("epydial", "epydial")
|
WM_INFO = ("epydial", "epydial")
|
||||||
EDJE_GROUP_NAME = "pyneo/dialer/main"
|
|
||||||
EDJE_FILE_NAME = "data/themes/dialer.edj"
|
EDJE_FILE_PATH = "data/themes/"
|
||||||
|
|
||||||
|
MAIN_GROUP_NAME = "pyneo/dialer/main"
|
||||||
|
INCALL_GROUP_NAME = "pyneo/dialer/incall"
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from dbus import SystemBus
|
from dbus import SystemBus
|
||||||
|
@ -36,19 +39,29 @@ class EdjeGroup(edje.Edje):
|
||||||
def __init__(self, main, group):
|
def __init__(self, main, group):
|
||||||
self.main = main
|
self.main = main
|
||||||
|
|
||||||
if not os.path.exists(EDJE_FILE_NAME):
|
# Theme file name is formed as follows:
|
||||||
raise IOError("Edje theme file not found: " + EDJE_FILE_NAME)
|
# Last two group name parts, combined by underscore
|
||||||
|
# pyneo/dialer/main -> dialer_main.edj
|
||||||
|
group_parts = group.split("/")
|
||||||
|
file_name = EDJE_FILE_PATH + group_parts[-2] + "_" + group_parts[-1] + ".edj"
|
||||||
|
|
||||||
|
if not os.path.exists(file_name):
|
||||||
|
raise IOError("Edje theme file for group %s not found: %s" % (group, file_name))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
edje.Edje.__init__(self, self.main.evas_canvas.evas_obj.evas, file=EDJE_FILE_NAME, group=group)
|
edje.Edje.__init__(self, self.main.evas_canvas.evas_obj.evas, file=file_name, group=group)
|
||||||
except edje.EdjeLoadError, e:
|
except edje.EdjeLoadError, e:
|
||||||
raise SystemExit("Error loading %s: %s" % (f, e))
|
raise SystemExit("Error loading %s: %s" % (file_name, e))
|
||||||
|
|
||||||
self.size = self.main.evas_canvas.evas_obj.evas.size
|
self.size = self.main.evas_canvas.evas_obj.evas.size
|
||||||
|
|
||||||
|
class InCallScreen(EdjeGroup):
|
||||||
|
def __init__(self, main):
|
||||||
|
EdjeGroup.__init__(self, main, INCALL_GROUP_NAME)
|
||||||
|
|
||||||
class MainScreen(EdjeGroup):
|
class MainScreen(EdjeGroup):
|
||||||
def __init__(self, main):
|
def __init__(self, main):
|
||||||
EdjeGroup.__init__(self, main, EDJE_GROUP_NAME)
|
EdjeGroup.__init__(self, main, MAIN_GROUP_NAME)
|
||||||
self.text = []
|
self.text = []
|
||||||
|
|
||||||
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
dbus_ml = e_dbus.DBusEcoreMainLoop()
|
||||||
|
@ -154,10 +167,16 @@ class TestView(object):
|
||||||
self.evas_canvas = EvasCanvas(FULLSCREEN, "x11-16")
|
self.evas_canvas = EvasCanvas(FULLSCREEN, "x11-16")
|
||||||
|
|
||||||
self.groups = {}
|
self.groups = {}
|
||||||
self.groups[EDJE_GROUP_NAME] = MainScreen(self)
|
|
||||||
self.evas_canvas.evas_obj.data[EDJE_GROUP_NAME] = self.groups[EDJE_GROUP_NAME]
|
self.init_group(MAIN_GROUP_NAME, MainScreen(self))
|
||||||
self.groups[EDJE_GROUP_NAME].show()
|
self.init_group(INCALL_GROUP_NAME, InCallScreen(self))
|
||||||
self.groups[EDJE_GROUP_NAME].part_text_set("numberdisplay_text", "wait ...")
|
|
||||||
|
self.groups[MAIN_GROUP_NAME].part_text_set("numberdisplay_text", "wait ...")
|
||||||
|
self.groups[MAIN_GROUP_NAME].show()
|
||||||
|
|
||||||
|
def init_group(self, name, instance):
|
||||||
|
self.groups[name] = instance
|
||||||
|
self.evas_canvas.evas_obj.data[name] = instance
|
||||||
|
|
||||||
class EvasCanvas(object):
|
class EvasCanvas(object):
|
||||||
def __init__(self, fullscreen, engine_name):
|
def __init__(self, fullscreen, engine_name):
|
||||||
|
|
Loading…
Reference in a new issue