View Single Post
panzi panzi is offline
Member
 
Join Date: Feb 2005
Posts: 413
Update to version 0.6.3+0.6.3a (17.02.2006):
Changelog:
  • FIX: Typo in Popups.py
    FIX: Color.__imul__ etc. now returns self. (but e.g. col *= 2. still don't work. any hint why this could be?)
    ADD: new popup: Block

Download:
New Testcode:
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()
Edit:
Made a bugfix, thanks to jms.
Old 17-Feb-06, 15:36   
Reply With Quote