diff --git a/PyLight/trunk/PyLight.edc b/PyLight/trunk/PyLight.edc new file mode 100644 index 0000000..afb397f --- /dev/null +++ b/PyLight/trunk/PyLight.edc @@ -0,0 +1,468 @@ +//test + +images { +// image, "background.jpg" LOSSY 95; +} + +color_classes { + color_class { + name: "user_color"; + color: 255 255 255 255; + } + +} + + +collections { + group { + name, "main"; + min, 480 640; + max, 1024 768; + + parts { +#define COLOR_DEFAULT 30 30 30 255 +#define COLOR_CLICKED 80 80 80 255 +#define COLOR_BOX 80 80 80 255 +#define COLOR_SLIDER 30 30 30 255 + part { + name, "background"; + type, RECT; + mouse_events, 0; + + description { + state, "default" 0.0; + min, 480 640; + max, 1024 768; + color, 200 200 200 200; + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + } + } + } + + part { + name, "button_ok"; + type, RECT; + mouse_events, 1; + effect, OUTLINE; + + description { + state, "default" 0.0; + min, 200 80; + max, 200 80; + align, 0.5 0.0; + color, COLOR_DEFAULT; + color2, 0 0 0 255; + color3, 255 255 255 255; + + rel1 { + relative, 0.0 0.84; + offset, 0 0; + } + rel2 { + relative, 0.5 1.0; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 200 80; + max, 200 80; + align, 0.5 0.0; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.0 0.84; + offset, 0 0; + } + rel2 { + relative, 0.5 1.0; + offset, -1 -1; + } + } + } + + part { + name, "button_close"; + type, RECT; + mouse_events, 1; + + description { + state, "default" 0.0; + min, 200 80; + max, 200 80; + align, 0.5 0.0; + + color, COLOR_DEFAULT; + + rel1 { + relative, 0.5 0.84; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, 0 0; + } + } + description { + state, "clicked" 0.0; + min, 200 80; + max, 200 80; + align, 0.5 0.0; + + color, COLOR_CLICKED; + + rel1 { + relative, 0.5 0.84; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, 0 0; + } + } + } + + + part { + name, "text_ok"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_ok"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_ok"; + } + text { + text, "OK"; + font, "sans serif"; + size, 22; + align, 0.5 0.5; + } + } + } + part { + name, "text_close"; + type, TEXT; + mouse_events, 0; + + description { + state, "default" 0.0; + + rel1 { + + relative, 0.0 0.0; + offset, 0 0; + to, "button_close"; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + to, "button_close"; + } + text { + text, "CLOSE"; + font, "sans serif"; + size, 22; + align, 0.5 0.5; + } + } + } + part { + name, "box_red"; + type, RECT; + mouse_events, 0; + + description { + state, "default" 0.0; + min, 440 50; + max, 440 50; + align, 0.5 0.0; + + color, 120 20 20 255; + + rel1 { + relative, 0.0 0.1; + offset, 0 0; + } + rel2 { + relative, 1.0 0.2; + offset, 0 0; + } + } + } + part { + name, "slider_red"; + type, RECT; +// mouse_events, 0; + dragable { + confine: "box_red"; +// events: "another dragable part"; + x: -1 1 0; + y: 0 0 0; + } + + description { + state, "default" 0.0; + min, 90 50; + max, 90 50; +// align, 1.0 0.0; + + color, COLOR_SLIDER; + +/* rel1 { + relative, 0.0 0.0; + offset, 0 0; + to, "box_red"; + } + rel2 { + relative, 1.0 1.0; + offset, 0 0; + to, "box_red"; + } + */ } + } + part { + name, "box_green"; + type, RECT; + mouse_events, 0; + + description { + state, "default" 0.0; + min, 440 50; + max, 440 50; + align, 0.5 0.0; + + color, 20 120 20 255; + + rel1 { + relative, 0.0 0.2; + offset, 0 0; + } + rel2 { + relative, 1.0 0.3; + offset, 0 0; + } + } + } + part { + name, "slider_green"; + type, RECT; + mouse_events, 1; + dragable { + confine: "box_green"; + x: -1 1 0; + y: 0 0 0; + } + + description { + state, "default" 0.0; + min, 90 50; + max, 90 50; +// align, 1.0 0.0; + + color, COLOR_SLIDER; + + } + } + part { + name, "box_blue"; + type, RECT; + mouse_events, 0; + + description { + state, "default" 0.0; + min, 440 50; + max, 440 50; + align, 0.5 0.0; + + color, 20 20 120 255; + + rel1 { + relative, 0.0 0.3; + offset, 0 0; + } + rel2 { + relative, 1.0 0.4; + offset, 0 0; + } + } + } + part { + name, "slider_blue"; + type, RECT; + mouse_events, 1; + dragable { + confine: "box_blue"; + x: -1 1 0; + y: 0 0 0; + } + + description { + state, "default" 0.0; + min, 90 50; + max, 90 50; +// align, 1.0 0.0; + + color, COLOR_SLIDER; + + } + } + part { + name, "box_prev"; + type, RECT; + mouse_events, 0; + description { + state, "default" 0.0; + min, 100 100; + max, 100 100; + align, 0.5 0.0; + + color_class, user_color; + + rel1 { + relative, 0.0 0.6; + offset, 0 0; + } + rel2 { + relative, 1.0 0.8; + offset, 0 0; + } + } + } + part { + name, "box_light"; + type, RECT; + mouse_events, 1; + description { + state, "default" 0.0; + min, 480 640; + max, 1024 768; + align, 0.0 0.0; + visible: 1; + color_class, user_color; + + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + } + } + description { + state, "hidden" 0.0; + min, 480 640; + max, 1024 768; + align, 0.0 0.0; + visible: 0; + color_class, user_color; + + rel1 { + relative, 0.0 0.0; + offset, 0 0; + } + rel2 { + relative, 1.0 1.0; + offset, -1 -1; + } + } + } + } /* Close Parts */ + + programs { +//Button_ok + program { + name, "ok_click"; + signal, "mouse,down,1"; + source, "button_ok"; + action, STATE_SET "clicked" 0.0; + target, "button_ok"; + } + + program { + name, "ok_unclick"; + signal, "mouse,up,1"; + source, "button_ok"; + action, STATE_SET "default" 0.0; + target, "button_ok"; + } + + program { + name, "ok_signal"; + signal, "mouse,down,1"; + source, "button_ok"; + action, SIGNAL_EMIT "ok" "programm"; + in, 0.0 0.0; + } +//Button_close + program { + name, "close_click"; + signal, "mouse,down,1"; + source, "button_close"; + action, STATE_SET "clicked" 0.0; + target, "button_close"; + } + + program { + name, "close_unclick"; + signal, "mouse,up,1"; + source, "button_close"; + action, STATE_SET "default" 0.0; + target, "button_close"; + } + + program { + name, "close_signal"; + signal, "mouse,down,1"; + source, "button_close"; + action, SIGNAL_EMIT "close" "programm"; + in, 0.0 0.0; + } +//Light + program { + name, "light_default"; + signal, "on"; + source, "light"; + action, STATE_SET "default" 0.0; + target, "box_light"; + } + + program { + name, "light_hidden"; + signal, "off"; + source, "light"; + action, STATE_SET "hidden" 0.0; + target, "box_light"; + } + + program { + name, "back_signal"; + signal, "mouse,down,1"; + source, "box_light"; + action, SIGNAL_EMIT "back" "programm"; + in, 0.0 0.0; + } + + + + } /* Close Prog */ + } /* Close Group */ +} /* Close Coll */ diff --git a/PyLight/trunk/PyLight.edj b/PyLight/trunk/PyLight.edj new file mode 100644 index 0000000..66fe9e5 Binary files /dev/null and b/PyLight/trunk/PyLight.edj differ diff --git a/PyLight/trunk/PyLight.py b/PyLight/trunk/PyLight.py new file mode 100644 index 0000000..3e4b8f9 --- /dev/null +++ b/PyLight/trunk/PyLight.py @@ -0,0 +1,134 @@ +#!/usr/bin/python +''' +authors: Pau1us +license: gpl v2 or later +PyLight is a small application to set the display to a selectable color +''' + +import ecore +import ecore.evas +import edje +import sys +import os + +#from testclass import * + +# Parse command line +from optparse import OptionParser + +def parse_geometry(option, opt, value, parser): + try: + w, h = value.split("x") + w = int(w) + h = int(h) + except Exception, e: + raise optparse.OptionValueError("Invalid format for %s" % option) + parser.values.geometry = (w, h) + +usage = "usage: %prog [options]" +op = OptionParser(usage=usage) +op.add_option("-e", "--engine", type="choice", + choices=("x11", "x11-16"), default="x11-16", + help=("which display engine to use (x11, x11-16), " + "default=%default")) +op.add_option("-n", "--no-fullscreen", action="store_true", + help="do not launch in fullscreen") +op.add_option("-g", "--geometry", type="string", metavar="WxH", + action="callback", callback=parse_geometry, + default=(480, 640), + help="use given window geometry") +op.add_option("-f", "--fps", type="int", default=50, + help="frames per second to use, default=%default") + + +# Handle options and create output window +options, args = op.parse_args() +if options.engine == "x11": + f = ecore.evas.SoftwareX11 +elif options.engine == "x11-16": + if ecore.evas.engine_type_supported_get("software_x11_16"): + f = ecore.evas.SoftwareX11_16 + else: + print "warning: x11-16 is not supported, fallback to x11" + f = ecore.evas.SoftwareX11 + +w, h = options.geometry +ee = f(w=w, h=h) +ee.fullscreen = 0 # not options.no_fullscreen +edje.frametime_set(1.0 / options.fps) + + +# Load and setup UI +ee.title = "PyLight" +ee.name_class = ("pylight", "pylight") +canvas = ee.evas +edje_file = os.path.join(os.path.dirname(sys.argv[0]), "PyLight.edj") +#edje_file = 'PyLight.edj' +try: + edje_obj = edje.Edje(canvas, file=edje_file, group="main") +except Exception, e: # should be EdjeLoadError, but it's wrong on python2.5 + raise SystemExit("Failed to load Edje file: %s" % edje_file) + +# resize edje to fit our window, show and remember it for later use +edje_obj.size = canvas.size +edje_obj.show() +ee.data["edje"] = edje_obj + + +# Setup callbacks for resize, keydown and selected item +def resize_cb(ee): + r = ee.evas.rect + ee.data["edje"].size = r.size + +ee.callback_resize = resize_cb + + +def key_down_cb(bg, event, ee): + k = event.key + if k == "Escape": + ecore.main_loop_quit() + if k in ("F6", "f"): + ee.fullscreen = not ee.fullscreen + +def drag(edje_obj, signal, source): + drag.x,drag.y = edje_obj.part_drag_value_get("slider_red") + drag.red = (drag.x -1) * (-255) + drag.x,drag.y = edje_obj.part_drag_value_get("slider_green") + drag.green = (drag.x -1) * (-255) + drag.x,drag.y = edje_obj.part_drag_value_get("slider_blue") + drag.blue = (drag.x -1) * (-255) + #print "x: %s\n" % (drag.xx) + edje.color_class_set("user_color", drag.red, drag.green, drag.blue, 255, 0, 0, 0, 0, 0, 0, 0, 0) + #print "%s , %s\n" % ( source, signal) +edje_obj.on_key_down_add(key_down_cb, ee) + +def click_ok(edje_obj, signal, source): + ee.fullscreen = 1 + edje_obj.signal_emit("on", "light") + +def click_back(edje_obj, signal, source): + ee.fullscreen = 0 + edje_obj.signal_emit("off", "light") + +def click_close(edje_obj, signal, source): + ecore.main_loop_quit() + + +#test = testclass(edje_obj) +edje_obj.signal_callback_add("drag", "slider_*", drag) +edje_obj.signal_callback_add("ok", "programm", click_ok) +edje_obj.signal_callback_add("close", "programm", click_close) +edje_obj.signal_callback_add("back", "programm", click_back) +#edje_obj.signal_callback_add("StopSelected", "*", icon_selected) + +# Give focus to object, show window and enter event loop +edje_obj.focus = True +ee.show() + + + + + +#ecore.main_loop_begin() +ecore.main_loop_begin() +