Code:
#!BPY
# vim:encoding=utf-8
"""
Name: 'ScriptUI Test'
Blender: 233
Group: 'Misc'
Tooltip: ''
"""
import math
from math import *
import Blender
import ScriptUI
from ScriptUI import *
import ScriptUI.Color
from ScriptUI.Color import *
from ScriptUI.Popups import *
text = """1 2 3
this is a very long text... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
.\n.\n.\n.\n.\n.\n.\n.\n.\n.\n.
foo bar baz
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
0123456789012345678901234567890123456789012345678901234567890123456789
\n\n\n\n\n\n\n\n
end ____________________________________________"""
em = EventManager()
buttons1 = [
em.PushButton("1. foo", bevent = Functor(lambda pm: pm("Hello World!"),Blender.Draw.PupMenu)),
em.PushButton("2. bar", bevent = Functor(lambda pm: pm("bla bla"),Blender.Draw.PupMenu)),
em.PushButton("3. baz"),
em.Number ("4. egg", initvalue = 0., min = -1., max = 1.),
em.PushButton("5. spam")
]
buttons2 = [
em.WidgetList(buttons1, 6, 4, -1, 25, True, False),
em.PushButton("6. foo", bevent = Functor(lambda pm: pm("Hello Offworld!"),Blender.Draw.PupMenu)),
em.Toggle ("7. bar", bevent = Functor(lambda pm: pm("dumdi dum"),Blender.Draw.PupMenu), initvalue = 0),
em.String ("8. baz: ", length = 512, initvalue = "xxx")
]
tgl = em.Toggle("toggle")
ival = em.Number("integer",initvalue=0,min=-10,max=10)
fval = em.Number("float",initvalue=0.,min=-1.,max=1.)
blkmnu = Block("block",[tgl,ival,fval])
def blk():
ret = blkmnu.show()
Blender.Draw.PupMenu( '|'.join(
("return value = " + repr(ret),
"toggle = " + repr(tgl.get_value()),
"integer = " + repr(ival.get_value()),
"float = " + repr(fval.get_value()) )) )
mnu = em.Menu("10. tomato", x = 80, y = 70, width = 100, height = 40)
mnu.addItem("foo", Functor(lambda pm: pm("Menu item click!"),Blender.Draw.PupMenu))
mnu.addItem("bar")
mnu.addItem("baz")
mnu.addSep()
mnu.addItem("egg")
mnu.addItem("spam")
pixfld1 = em.PixelField(x = 0, y = 250, width = 160, height = 80)
pixfld2 = em.PixelField(x = 0, y = 340, width = 160, height = 30)
def recolor():
col = Color()
w = pixfld1.get_width()
h = pixfld1.get_height()
for x in xrange(w):
for y in xrange(h):
col.fromHSV(float(x)/w, float(y)/h, 1.)
col.__imul__(sld.get_value())
#col *= sld.get_value()
pixfld1.pixels[y][x][:] = col
Blender.Draw.Redraw()
sld = em.Slider("11. bright", x = 150, y = 190, width = 210, height = 20, initvalue = 1., min = 0., max = 2., bevent = recolor)
recolor()
col = Color()
w = pixfld2.get_width()
h = pixfld2.get_height()
for x in xrange(w):
v = float(x)/float(w)
if v < .25:
col.red = 1.
col.green = v / .25
col.blue = 0.
elif v < .5:
col.red = (.25 - (v - .25)) / .25
col.green = 1.
col.blue = 0.
elif v < .75:
col.red = 0.
col.green = 1.
col.blue = (v - .5) / .25
else:
col.red = 0.
col.green = (.25 - (v - .75)) / .25
col.blue = 1.
for y in xrange(h):
pixfld2.pixels[y][x][:] = col
buttons3 = [
em.PushButton("9. egg", x = 0, y = 0, width = 90, height = 20),
mnu,
sld,
em.Rect (BLUE, 300, 250, 40, 80),
em.FileField (x = 0, y = 150),
pixfld1, pixfld2
]
btnexit = em.PushButton("exit", 10, 420, 50, 20, em.exit, parent = em.root)
smpltxt = em.SimpleText("USE MOUSEWEEL TO SCROLL!", "large", 15, True, RED, 10, 450, parent = em.root)
advtxt = em.ScrollText(text, "small", 15, 6, BLACK, Color(.5,.6,.6,1.), 10, 10, 300, 400, parent = em.root)
wdglst = em.WidgetList(buttons2, 6, 4, 110, -1, False, False, 310, 10, 200, 80, parent = em.root)
wdgfra = em.WidgetFrame(buttons3, x = 330, y = 220, width = 400, height = 400, parent = em.root)
pupmnu = Menu("PupMenu 1")
pupmnu2 = Menu("PupMenu 2")
pupstr = StrInput("str: ","")
pupint = IntInput("int: ",0,-10,10)
pupflo = FloatInput("float: ", 1., 0., 1., .01, 3)
def str_inp():
val = pupstr.show()
if val != None:
Blender.Draw.PupMenu(val)
def int_inp():
val = pupint.show()
if val != None:
Blender.Draw.PupMenu(str(val))
def flo_inp():
val = pupflo.show()
if val != None:
Blender.Draw.PupMenu(str(val))
pupmnu.addItem("self...", pupmnu)
pupmnu.addItem("other...", pupmnu2)
pupmnu.addItem("block...", blk)
pupmnu.addSep()
pupmnu.addItem("string input", str_inp)
pupmnu.addItem("integer input", int_inp)
pupmnu.addItem("float input", flo_inp)
em.register_event(Blender.Draw.WHEELUPMOUSE, Functor(lambda at,evt,modi: at.scroll_up(),advtxt))
em.register_event(Blender.Draw.WHEELDOWNMOUSE, Functor(lambda at,evt,modi: at.scroll_down(),advtxt))
em.register_event(Blender.Draw.RIGHTMOUSE, Functor(lambda pm,evt,modi: pm.show(),pupmnu))
em.run()
Made a bugfix, thanks to jms.