python-efl/examples/elementary/test_colorselector.py

140 lines
4.0 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
from efl import evas
from efl import elementary
from efl.elementary.window import Window
from efl.elementary.background import Background
from efl.elementary.box import Box
from efl.elementary.frame import Frame
from efl.elementary.button import Button
from efl.elementary.colorselector import Colorselector
def cb_cs_changed(cs, rect):
print("changed")
(r, g, b, a) = cs.color
r = (r * a) / 255
g = (g * a) / 255
b = (b * a) / 255
rect.color = (r, g, b, a)
def cb_cs_item_sel(cs, item, rect):
print("selected")
(r, g, b, a) = item.color
r = (r * a) / 255
g = (g * a) / 255
b = (b * a) / 255
rect.color = (r, g, b, a)
def cb_cs_item_lp(cs, item, rect):
print("longpressed")
(r, g, b, a) = item.color
r = (r * a) / 255
g = (g * a) / 255
b = (b * a) / 255
rect.color = (r, g, b, a)
def colorselector_clicked(obj):
win = Window("colorselector", elementary.ELM_WIN_BASIC)
win.title = "ColorSelector test"
win.autodel = True
if obj is None:
win.callback_delete_request_add(lambda o: elementary.exit())
bg = Background(win)
win.resize_object_add(bg)
bg.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
bg.show()
vbox = Box(win)
vbox.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
win.resize_object_add(vbox)
vbox.show()
fr = Frame(win)
fr.text = "Color View"
fr.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
fr.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
vbox.pack_end(fr)
fr.show()
re = evas.Rectangle(win.evas)
re.size_hint_min = (1, 100)
fr.content = re
re.show()
fr = Frame(win)
fr.text = "Color Selector"
fr.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
fr.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
vbox.pack_end(fr)
fr.show()
cs = Colorselector(win)
cs.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
cs.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
cs.callback_changed_add(cb_cs_changed, re)
cs.callback_color_item_selected_add(cb_cs_item_sel, re)
cs.callback_color_item_longpressed_add(cb_cs_item_lp, re)
cs.color = (255, 160, 132, 255)
fr.content = cs
cs.show()
re.color = cs.color
cs.palette_color_add(255, 90, 18, 255)
cs.palette_color_add(255, 213, 0, 255)
cs.palette_color_add(146, 255, 11, 255)
cs.palette_color_add(9, 186, 10, 255)
cs.palette_color_add(86, 201, 242, 255)
cs.palette_color_add(18, 83, 128, 255)
cs.palette_color_add(140, 53, 238, 255)
cs.palette_color_add(255, 145, 145, 255)
cs.palette_color_add(255, 59, 119, 255)
cs.palette_color_add(133, 100, 69, 255)
cs.palette_color_add(255, 255, 119, 255)
cs.palette_color_add(133, 100, 255, 255)
hbox = Box(win)
hbox.horizontal = True
hbox.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
hbox.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
vbox.pack_end(hbox)
hbox.show()
bt = Button(win)
bt.text = "Palette"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda btn: cs.mode_set(elementary.ELM_COLORSELECTOR_PALETTE))
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "Components"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda btn: cs.mode_set(elementary.ELM_COLORSELECTOR_COMPONENTS))
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "Both"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda btn: cs.mode_set(elementary.ELM_COLORSELECTOR_BOTH))
hbox.pack_end(bt)
bt.show()
win.resize(320, 550)
win.show()
if __name__ == "__main__":
elementary.init()
colorselector_clicked(None)
elementary.run()
elementary.shutdown()