Filling in branch from trunk
This commit is contained in:
880
source/blender/python/api2_2x/doc/Draw.py
Normal file
880
source/blender/python/api2_2x/doc/Draw.py
Normal file
@@ -0,0 +1,880 @@
|
||||
# Blender.Draw module and the Button PyType object
|
||||
|
||||
"""
|
||||
The Blender.Draw submodule.
|
||||
|
||||
Draw
|
||||
====
|
||||
|
||||
B{New}:
|
||||
- access to ASCII values in L{events<Register>} callbacks;
|
||||
- 'large' fonts for L{Text} and L{GetStringWidth}.
|
||||
- Pop-up blocks with L{PupBlock}
|
||||
- Color Picker button with L{ColorPicker}
|
||||
|
||||
This module provides access to a B{windowing interface} in Blender. Its widgets
|
||||
include many kinds of buttons: push, toggle, menu, number, string, slider,
|
||||
scrollbar, plus support for text drawing. It also includes keyboard keys and
|
||||
mouse button code values in its dictionary, see a list after this example.
|
||||
|
||||
Example::
|
||||
import Blender
|
||||
from Blender import Draw, BGL
|
||||
|
||||
mystring = ""
|
||||
mymsg = ""
|
||||
toggle = 0
|
||||
|
||||
def event(evt, val): # the function to handle input events
|
||||
global mystring, mymsg
|
||||
|
||||
if not val: # val = 0: it's a key/mbutton release
|
||||
if evt in [Draw.LEFTMOUSE, Draw.MIDDLEMOUSE, Draw.RIGHTMOUSE]:
|
||||
mymsg = "You released a mouse button."
|
||||
Draw.Redraw(1)
|
||||
return
|
||||
|
||||
if evt == Draw.ESCKEY:
|
||||
Draw.Exit() # exit when user presses ESC
|
||||
return
|
||||
|
||||
elif Draw.AKEY <= evt <= Draw.ZKEY: mystring += chr(evt)
|
||||
elif evt == Draw.SPACEKEY: mystring += ' '
|
||||
elif evt == Draw.BACKSPACEKEY and len(mystring):
|
||||
mystring = mystring[:-1]
|
||||
else: return # no need to redraw if nothing changed
|
||||
|
||||
Draw.Redraw(1)
|
||||
|
||||
def button_event(evt): # the function to handle Draw Button events
|
||||
global mymsg, toggle
|
||||
if evt == 1:
|
||||
mymsg = "You pressed the toggle button."
|
||||
toggle = 1 - toggle
|
||||
Draw.Redraw(1)
|
||||
|
||||
def gui(): # the function to draw the screen
|
||||
global mystring, mymsg, toggle
|
||||
if len(mystring) > 90: mystring = ""
|
||||
BGL.glClearColor(0,0,1,1)
|
||||
BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
|
||||
BGL.glColor3f(1,1,1)
|
||||
Draw.Toggle("Toggle", 1, 10, 10, 55, 20, toggle,"A toggle button")
|
||||
BGL.glRasterPos2i(72, 16)
|
||||
if toggle: toggle_state = "down"
|
||||
else: toggle_state = "up"
|
||||
Draw.Text("The toggle button is %s." % toggle_state, "small")
|
||||
BGL.glRasterPos2i(10, 230)
|
||||
Draw.Text("Type letters from a to z, ESC to leave.")
|
||||
BGL.glRasterPos2i(20, 200)
|
||||
Draw.Text(mystring)
|
||||
BGL.glColor3f(1,0.4,0.3)
|
||||
BGL.glRasterPos2i(340, 70)
|
||||
Draw.Text(mymsg, "tiny")
|
||||
|
||||
Draw.Register(gui, event, button_event) # registering the 3 callbacks
|
||||
|
||||
All available events:
|
||||
- ACCENTGRAVEKEY
|
||||
- AKEY
|
||||
- BACKSLASHKEY
|
||||
- BACKSPACEKEY
|
||||
- BKEY
|
||||
- CAPSLOCKKEY
|
||||
- CKEY
|
||||
- COMMAKEY
|
||||
- DELKEY
|
||||
- DKEY
|
||||
- DOWNARROWKEY
|
||||
- EIGHTKEY
|
||||
- EKEY
|
||||
- ENDKEY
|
||||
- EQUALKEY
|
||||
- ESCKEY
|
||||
- F10KEY
|
||||
- F11KEY
|
||||
- F12KEY
|
||||
- F1KEY
|
||||
- F2KEY
|
||||
- F3KEY
|
||||
- F4KEY
|
||||
- F5KEY
|
||||
- F6KEY
|
||||
- F7KEY
|
||||
- F8KEY
|
||||
- F9KEY
|
||||
- FIVEKEY
|
||||
- FKEY
|
||||
- FOURKEY
|
||||
- GKEY
|
||||
- HKEY
|
||||
- HOMEKEY
|
||||
- IKEY
|
||||
- INPUTCHANGE
|
||||
- INSERTKEY
|
||||
- JKEY
|
||||
- KEYBD
|
||||
- KKEY
|
||||
- LEFTALTKEY
|
||||
- LEFTARROWKEY
|
||||
- LEFTBRACKETKEY
|
||||
- LEFTCTRLKEY
|
||||
- LEFTMOUSE
|
||||
- LEFTSHIFTKEY
|
||||
- LINEFEEDKEY
|
||||
- LKEY
|
||||
- MIDDLEMOUSE
|
||||
- MINUSKEY
|
||||
- MKEY
|
||||
- MOUSEX
|
||||
- MOUSEY
|
||||
- NINEKEY
|
||||
- NKEY
|
||||
- OKEY
|
||||
- ONEKEY
|
||||
- PAD0
|
||||
- PAD1
|
||||
- PAD2
|
||||
- PAD3
|
||||
- PAD4
|
||||
- PAD5
|
||||
- PAD6
|
||||
- PAD7
|
||||
- PAD8
|
||||
- PAD9
|
||||
- PADASTERKEY
|
||||
- PADENTER
|
||||
- PADMINUS
|
||||
- PADPERIOD
|
||||
- PADPLUSKEY
|
||||
- PADSLASHKEY
|
||||
- PAGEDOWNKEY
|
||||
- PAGEUPKEY
|
||||
- PAUSEKEY
|
||||
- PERIODKEY
|
||||
- PKEY
|
||||
- QFULL
|
||||
- QKEY
|
||||
- QUOTEKEY
|
||||
- Q_FIRSTTIME
|
||||
- RAWKEYBD
|
||||
- REDRAW
|
||||
- RETKEY
|
||||
- RIGHTALTKEY
|
||||
- RIGHTARROWKEY
|
||||
- RIGHTBRACKETKEY
|
||||
- RIGHTCTRLKEY
|
||||
- RIGHTMOUSE
|
||||
- RIGHTSHIFTKEY
|
||||
- RKEY
|
||||
- SEMICOLONKEY
|
||||
- SEVENKEY
|
||||
- SIXKEY
|
||||
- SKEY
|
||||
- SLASHKEY
|
||||
- SPACEKEY
|
||||
- TABKEY
|
||||
- THREEKEY
|
||||
- TIMER0
|
||||
- TIMER1
|
||||
- TIMER2
|
||||
- TIMER3
|
||||
- TKEY
|
||||
- TWOKEY
|
||||
- UKEY
|
||||
- UPARROWKEY
|
||||
- VKEY
|
||||
- WHEELDOWNMOUSE
|
||||
- WHEELUPMOUSE
|
||||
- WINCLOSE
|
||||
- WINFREEZE
|
||||
- WINQUIT
|
||||
- WINTHAW
|
||||
- WKEY
|
||||
- XKEY
|
||||
- YKEY
|
||||
- ZEROKEY
|
||||
- ZKEY
|
||||
|
||||
@note: function Button has an alias: L{PushButton}.
|
||||
|
||||
@warn: B{very important}: if using your script causes "Error totblock"
|
||||
messages when Blender exits (meaning that memory has been leaked), this may
|
||||
have been caused by an ignored return value from one of the button types. To
|
||||
avoid this, assign created buttons return values to B{global} variables,
|
||||
instead of ignoring them. Examples::
|
||||
|
||||
# avoid this, it can cause memory leaks:
|
||||
Draw.Toggle(...)
|
||||
Draw.Number(...)
|
||||
Draw.String(...)
|
||||
# this is correct -- assuming the variables are globals:
|
||||
my_toggle_button = Draw.Toggle(...)
|
||||
my_int_button = Draw.Number(...)
|
||||
my_str_button = Draw.String(...)
|
||||
|
||||
|
||||
@warn: Inside the windowing loop (after Draw.Register() has been executed and
|
||||
before Draw.Exit() is called), don't use the redraw functions from other
|
||||
modules (Blender and Window). The Draw submodule has its own Draw.Redraw() and
|
||||
Draw.Draw() functions that can be used inside the windowing loop.
|
||||
"""
|
||||
|
||||
def Exit():
|
||||
"""
|
||||
Exit the windowing interface.
|
||||
"""
|
||||
|
||||
def BeginAlign():
|
||||
"""
|
||||
Buttons after this function will draw aligned (button layout only).
|
||||
"""
|
||||
|
||||
def EndAlign():
|
||||
"""
|
||||
Use after BeginAlign() to stop aligning the buttons (button layout only).
|
||||
"""
|
||||
|
||||
def UIBlock(draw):
|
||||
"""
|
||||
This function creates a popup area where buttons, labels, sliders etc can be drawn.
|
||||
|
||||
@type draw: function
|
||||
@param draw: A function to draw to the popup area, taking no arguments: draw().
|
||||
|
||||
@note: The size of the popup will expand to fit the bounds of the buttons created in the draw function.
|
||||
@note: Be sure to use the mouse coordinates to position the buttons under the mouse,
|
||||
so the popup dosn't exit as soon as it opens.
|
||||
The coordinates for buttons start 0,0 at the bottom left hand side of the screen.
|
||||
@note: Within this popup, Redraw events and the registered button callback will not work.
|
||||
For buttons to run events, use per button callbacks.
|
||||
@note: OpenGL drawing functions wont work within this popup, for text use L{Label} rather then L{Text}
|
||||
@warning: L{Menu} will not work properly within a UIBlock, this is a limitation with blenders user interface internals.
|
||||
"""
|
||||
|
||||
def Register(draw = None, event = None, button = None):
|
||||
"""
|
||||
Register callbacks for windowing.
|
||||
@type draw: function
|
||||
@type event: function
|
||||
@type button: function
|
||||
@param draw: A function to draw the screen, taking no arguments: draw().
|
||||
@param event: A function to handle keyboard and mouse input events, taking
|
||||
two arguments: f(evt, val), where:
|
||||
- 'evt' (int) is the event number;
|
||||
- 'val' (int) is the value modifier. If val = 0, the event refers to a
|
||||
key or mouse button being released. Otherwise it's a key/button press.
|
||||
@param button: A function to handle Draw Button events, taking one argument:
|
||||
f(evt), where:
|
||||
- 'evt' is the button number (see the I{event} parameter in L{Button}).
|
||||
@note: note that in the example at the beginning of this page Draw.Register
|
||||
is called only once. It's not necessary to re-register the callbacks,
|
||||
they will stay until Draw.Exit is called. It's enough to redraw the
|
||||
screen, when a relevant event is caught.
|
||||
@note: only during the B{event} callback: the L{Blender}.ascii variable holds
|
||||
the ASCII integer value (if it exists and is valid) of the current event.
|
||||
"""
|
||||
|
||||
def Redraw(after = 0):
|
||||
"""
|
||||
Queue a redraw event. Redraw events are buffered so that, regardless of how
|
||||
many events are queued, the window only receives one redraw event.
|
||||
@type after: int
|
||||
@param after: If non-zero, the redraw is processed before other input events.
|
||||
"""
|
||||
|
||||
def Draw():
|
||||
"""
|
||||
Force an immediate redraw. Forced redraws are not buffered. In other words,
|
||||
the window is redrawn once every time this function is called.
|
||||
"""
|
||||
|
||||
def Create(value):
|
||||
"""
|
||||
Create a default Button object.
|
||||
@type value: int, float, string or 3 floats
|
||||
@param value: The value to store in the button.
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
@note: String values must have less then 400 characters.
|
||||
"""
|
||||
|
||||
def PushButton(name, event, x, y, width, height, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new (push) Button object.
|
||||
@type name: string
|
||||
@param name: The string to display on the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@note: This function used to be called only "Button". We added an
|
||||
alternative alias to avoid a name clash with the L{Button} class/type that
|
||||
caused trouble in this documentation's generation. The old name shouldn't
|
||||
be deprecated, use Button or PushButton (better) at your choice.
|
||||
"""
|
||||
|
||||
def PupMenu(name, maxrow = None):
|
||||
"""
|
||||
Create a pop-up menu.
|
||||
|
||||
The menu options are specified through the 'name' parameter, like with
|
||||
L{Menu}: options are followed by a format code and separated by the '|'
|
||||
character. Valid format codes are:
|
||||
- %t - The option should be used as the title of the pop-up;
|
||||
- %l - insert a separating line (only works if 'maxrow' isn't given);
|
||||
- %xB{N} - Chosen this option, PupMenu should return the integer B{N}.
|
||||
|
||||
Example::
|
||||
name = "OK?%t|QUIT BLENDER" # if no %xN int is set, indices start from 1
|
||||
result = Draw.PupMenu(name)
|
||||
if result:
|
||||
Draw.PupMenu("Really?%t|Yes|No")
|
||||
|
||||
@type name: string
|
||||
@param name: The format string to define the contents of the button.
|
||||
@type maxrow: int
|
||||
@param maxrow: The maximum number of rows for each column in the pop-up.
|
||||
@rtype: int
|
||||
@return: the chosen entry number or -1 if none was chosen.
|
||||
"""
|
||||
|
||||
def PupIntInput(text, default, min, max):
|
||||
"""
|
||||
Create an integer number input pop-up.
|
||||
|
||||
This allows python to use Blender's integer number pop-up input.
|
||||
|
||||
Example::
|
||||
default = 50
|
||||
min = 0
|
||||
max = 100
|
||||
|
||||
msg = "Set this value between 0 and 100"
|
||||
result = Draw.PupIntInput(msg, default, min, max)
|
||||
if result != None:
|
||||
print result
|
||||
else:
|
||||
print 'no user input'
|
||||
|
||||
@type text: string
|
||||
@param text: The text that is displayed in the pop-up.
|
||||
@type default: int
|
||||
@param default: The value that the pop-up is set to initially.
|
||||
@type min: int
|
||||
@param min: The lowest value the pop-up will allow.
|
||||
@type max: int
|
||||
@param max: The highest value the pop-up will allow.
|
||||
@rtype: int
|
||||
@return: the number chosen or None if none was chosen.
|
||||
"""
|
||||
|
||||
def PupFloatInput(text, default, min, max, clickStep, floatLen):
|
||||
"""
|
||||
Create a floating point number input pop-up.
|
||||
|
||||
This allows python to use Blender's floating point pop-up input.
|
||||
|
||||
Example::
|
||||
default = 50
|
||||
min = 0.0
|
||||
max = 10.0
|
||||
clickStep = 100
|
||||
floatLen = 3
|
||||
|
||||
msg = "Set this value between 0 and 100"
|
||||
result = Draw.PupFloatInput(msg, default, min, max, clickStep, floatLen)
|
||||
if result != None:
|
||||
print result
|
||||
else:
|
||||
print 'no user input'
|
||||
|
||||
@type text: string
|
||||
@param text: The text that is displayed in the pop-up.
|
||||
@type default: float
|
||||
@param default: The value that the pop-up is set to initially.
|
||||
@type min: float
|
||||
@param min: The lowest value the pop-up will allow.
|
||||
@type max: float
|
||||
@param max: The highest value the pop-up will allow.
|
||||
@type clickStep: int
|
||||
@param clickStep: How much is incremented per user click, 100 will increment 1.0, 10 will increment 0.1 etc.
|
||||
@type floatLen: int
|
||||
@param floatLen: The number of decimal places to display, between 2 and 4.
|
||||
@rtype: float
|
||||
@return: the number chosen or None if none was chosen.
|
||||
"""
|
||||
|
||||
def PupStrInput(text, default, max = 20):
|
||||
"""
|
||||
Create a string input pop-up.
|
||||
|
||||
This allows python to use Blender's string pop-up input.
|
||||
|
||||
Example::
|
||||
Blender.Draw.PupStrInput("Name:", "untitled", 25)
|
||||
|
||||
@type text: string
|
||||
@param text: The text that is displayed in the pop-up.
|
||||
@type default: string
|
||||
@param default: The value that the pop-up is set to initially. If it's longer
|
||||
then 'max', it's truncated.
|
||||
@type max: int
|
||||
@param max: The most characters the pop-up input will allow. If not given
|
||||
it defaults to 20 chars. It should be in the range [1, 100].
|
||||
@rtype: string
|
||||
@return: The text entered by the user or None if none was chosen.
|
||||
"""
|
||||
|
||||
def PupBlock(title, sequence):
|
||||
"""
|
||||
Display a pop-up block.
|
||||
|
||||
Possible formats for the items in the sequence parameter.
|
||||
(Value are objects created with L{Create})
|
||||
- string: Defines a label
|
||||
- (string, Value, string): Defines a toggle button. The first string is the text on the button, the optional second string is the tooltip.
|
||||
- (string, Value, min, max, string): Defines a numeric or string button, depending on the content of Value. The first string is the text on the button, the optional second string is the tooltip. I{For string, max is the maximum length of the string and min is unused.}
|
||||
|
||||
Example::
|
||||
import Blender
|
||||
|
||||
text = Blender.Draw.Create("short text")
|
||||
f = Blender.Draw.Create(1.0)
|
||||
i = Blender.Draw.Create(2)
|
||||
tog = Blender.Draw.Create(0)
|
||||
|
||||
block = []
|
||||
|
||||
block.append(("Name: ", text, 0, 30, "this is some tool tip"))
|
||||
block.append("Some Label")
|
||||
block.append(("Value: ", f, 0.0, 100.0))
|
||||
block.append(("Value: ", i, 0, 100))
|
||||
block.append(("Option", tog, "another tooltip"))
|
||||
|
||||
retval = Blender.Draw.PupBlock("PupBlock test", block)
|
||||
|
||||
print "PupBlock returned", retval
|
||||
|
||||
print "text\\t", text
|
||||
print "float\\t", f
|
||||
print "int\\t", i
|
||||
print "toggle\\t", tog
|
||||
|
||||
@warning: On cancel, the Value objects are brought back to there initial values except for string values which will still contain the modified values.
|
||||
@type title: string
|
||||
@param title: The title of the block.
|
||||
@param sequence: A sequence defining what the block contains.
|
||||
The order of the list is the order of appearance, from top down.
|
||||
@rtype: int
|
||||
@return: 1 if the pop-up is confirmed, 0 otherwise
|
||||
"""
|
||||
|
||||
def Menu(name, event, x, y, width, height, default, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Menu Button object.
|
||||
|
||||
The menu options are specified through the 'name' of the button. Options are
|
||||
I{followed} by a format code and separated by the '|' (pipe) character. Valid
|
||||
format codes are:
|
||||
- %t - The option should be used as the title;
|
||||
- %l - Insert a separating line;
|
||||
- %xB{N} - The option should set the integer B{N} in the button value.
|
||||
|
||||
Example::
|
||||
name = "The Title %t|First Entry %x1|Second Entry %x2|Third Entry %x3"
|
||||
menu = Draw.Menu(name, 2, 60, 120, 200, 40, 3, "Just a test menu.")
|
||||
# note that, since default = 3, the "Third Entry"
|
||||
# will appear as the default choice in the Menu.
|
||||
|
||||
@type name: string
|
||||
@param name: The format string to define the contents of the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type default: int
|
||||
@param default: The number of the option to be selected by default.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
"""
|
||||
|
||||
def Toggle(name, event, x, y, width, height, default, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Toggle Button object.
|
||||
@type name: string
|
||||
@param name: The string to display on the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type default: int
|
||||
@param default: The value specifying the default state:
|
||||
(0 for "up", 1 for "down").
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
"""
|
||||
|
||||
def Slider(name, event, x, y, width, height, initial, min, max, realtime = 1,
|
||||
tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Slider Button object.
|
||||
@type name: string
|
||||
@param name: The string to display on the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type initial: int or float
|
||||
@type min: int or float
|
||||
@type max: int or float
|
||||
@param initial: The initial value.
|
||||
@param min: The minimum value.
|
||||
@param max: The maximum value.
|
||||
@type realtime: int
|
||||
@param realtime: If non-zero (the default), the slider will emit events as
|
||||
it is edited.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
@note: slider callbacks will not work if the realtime setting is enabled.
|
||||
"""
|
||||
|
||||
#def Scrollbar(event, x, y, width, height, initial, min, max, realtime = 1,
|
||||
# tooltip = None):
|
||||
# """
|
||||
# Create a new Scrollbar Button object.
|
||||
# @type event: int
|
||||
# @param event: The event number to pass to the button event function when
|
||||
# activated.
|
||||
# @type x: int
|
||||
# @type y: int
|
||||
# @param x: The lower left x (horizontal) coordinate of the button.
|
||||
# @param y: The lower left y (vertical) coordinate of the button.
|
||||
# @type width: int
|
||||
# @type height: int
|
||||
# @param width: The button width.
|
||||
# @param height: The button height.
|
||||
# @type initial: int or float
|
||||
# @type min: int or float
|
||||
# @type max: int or float
|
||||
# @param initial: The initial value.
|
||||
# @param min: The minimum value.
|
||||
# @param max: The maximum value.
|
||||
# @type realtime: int
|
||||
# @param realtime: If non-zero (the default), the slider will emit events as
|
||||
# it is edited.
|
||||
# @type tooltip: string
|
||||
# @param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
# is kept over the button).
|
||||
# @rtype: Blender Button
|
||||
# @return: The Button created.
|
||||
# """
|
||||
|
||||
def ColorPicker(event, x, y, width, height, initial, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Color Picker Button object.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type initial: 3-float tuple
|
||||
@param initial: The initial color value. All values must be between 0 and 1
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
@note: The color picker will not work if the Register's event function is None.
|
||||
@note: Using the same button variable with more then 1 button at a time will corrupt memory.
|
||||
"""
|
||||
|
||||
def Normal(event, x, y, width, height, initial, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Normal button, this allows you to set a 3d vector by rotating a sphere.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width - non square normal buttons .
|
||||
@param height: The button height.
|
||||
@type initial: 3-float tuple
|
||||
@param initial: The initial vector value.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
@note: The normal button will not work if the Register's event function is None.
|
||||
@note: Using the same button variable with more then 1 button at a time will corrupt memory.
|
||||
"""
|
||||
|
||||
def Number(name, event, x, y, width, height, initial, min, max, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new Number Button object.
|
||||
@type name: string
|
||||
@param name: The string to display on the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type initial: int or float
|
||||
@type min: int or float
|
||||
@type max: int or float
|
||||
@param initial: The initial value.
|
||||
@param min: The minimum value.
|
||||
@param max: The maximum value.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
|
||||
I{B{Example:}}
|
||||
|
||||
This example draws a single floating point value::
|
||||
from Blender import Draw
|
||||
b= Draw.Create(0.0) # Data for floating point button
|
||||
def bevent(evt):
|
||||
print 'My Button event:', evt
|
||||
def gui():
|
||||
global b
|
||||
b= Draw.Number('value: ', 1000, 0,0, 200, 20, b.val, 0,10, 'some text tip')
|
||||
|
||||
Draw.Register(gui, None, bevent) # we are not going to worry about keyboard and mouse events
|
||||
"""
|
||||
|
||||
|
||||
def String(name, event, x, y, width, height, initial, length, tooltip = None, callback = None):
|
||||
"""
|
||||
Create a new String Button object.
|
||||
@type name: string
|
||||
@param name: The string to display on the button.
|
||||
@type event: int
|
||||
@param event: The event number to pass to the button event function when
|
||||
activated.
|
||||
@type x: int
|
||||
@type y: int
|
||||
@param x: The lower left x (horizontal) coordinate of the button.
|
||||
@param y: The lower left y (vertical) coordinate of the button.
|
||||
@type width: int
|
||||
@type height: int
|
||||
@param width: The button width.
|
||||
@param height: The button height.
|
||||
@type initial: string
|
||||
@param initial: The string to display initially.
|
||||
@type length: int
|
||||
@param length: The maximum input length.
|
||||
@type tooltip: string
|
||||
@param tooltip: The button's tooltip (the string that appears when the mouse
|
||||
is kept over the button).
|
||||
@type callback: function
|
||||
@param callback: an optional argument so this button can have its own
|
||||
callback function. the function will run whenever this button is pressed.
|
||||
This function must accept 2 arguments (event, val).
|
||||
@rtype: Blender Button
|
||||
@return: The Button created.
|
||||
"""
|
||||
|
||||
def GetStringWidth(string, fontsize = 'normal'):
|
||||
"""
|
||||
Get the width in pixels of a string.
|
||||
@type string: string
|
||||
@param string: A string.
|
||||
@type fontsize: string
|
||||
@param fontsize: The size of the font: 'large', 'normal', 'small' or 'tiny'.
|
||||
@rtype: int
|
||||
@return: The width of I{string} with the chosen I{fontsize}.
|
||||
"""
|
||||
|
||||
def Text(string, fontsize = 'normal'):
|
||||
"""
|
||||
Draw a string on the screen.
|
||||
|
||||
Text location is set using the OpenGL raster location functions L{BGL.glRasterPos} before the text is drawn.
|
||||
This sets the text location from the lower left corner of the current window.
|
||||
|
||||
Text color is set using the OpenGL color functions L{BGL.glColor} before the text is drawn.
|
||||
|
||||
@type string: string
|
||||
@param string: The text string to draw.
|
||||
@type fontsize: string
|
||||
@param fontsize: The size of the font: 'large', 'normal', 'small' or 'tiny'.
|
||||
@rtype: int
|
||||
@return: The width of I{string} drawn with the chosen I{fontsize}.
|
||||
@note: For drawing text in the 3d view see the workaround in L{BGL.glRasterPos}
|
||||
"""
|
||||
|
||||
def Label(string, x, y, w, h):
|
||||
"""
|
||||
Draw a text lable on the screen.
|
||||
|
||||
@type string: string
|
||||
@param string: The text string to draw.
|
||||
@rtype: None
|
||||
@return: None
|
||||
"""
|
||||
|
||||
def Image(image, x, y, zoomx=1.0, zoomy=1.0, clipx=0, clipy=0, clipw=-1, cliph=-1):
|
||||
"""
|
||||
Draw an image on the screen.
|
||||
|
||||
The image is drawn at the location specified by the coordinates (x,y). A
|
||||
pair of optional zoom factors (in horizontal and vertical directions) can
|
||||
be applied to the image as it is drawn, and an additional clipping rectangle
|
||||
can be applied to extract a particular sub-region of the image to draw.
|
||||
|
||||
Note that the clipping rectangle is given in image space coordinates. In
|
||||
image space, the origin is located at the bottom left, with x coordinates
|
||||
increasing to the right and y coordinates increasing upwards. No matter
|
||||
where the clipping rectangle is placed in image space, the lower-left pixel
|
||||
drawn on the screen is always placed at the coordinates (x,y). The
|
||||
clipping rectangle is itself clipped to the dimensions of the image. If
|
||||
either the width or the height of the clipping rectangle are negative then
|
||||
the corresponding dimension (width or height) is set to include as much of
|
||||
the image as possible.
|
||||
|
||||
For drawing images with alpha blending with the background you will need to enable blending as shown in the example.
|
||||
|
||||
Example::
|
||||
import Blender
|
||||
from Blender import BGL, Image, Draw
|
||||
|
||||
myimage = Image.Load('myimage.png')
|
||||
|
||||
def gui():
|
||||
BGL.glEnable( BGL.GL_BLEND ) # Only needed for alpha blending images with background.
|
||||
BGL.glBlendFunc(BGL.GL_SRC_ALPHA, BGL.GL_ONE_MINUS_SRC_ALPHA)
|
||||
|
||||
Draw.Image(myimage, 50, 50)
|
||||
|
||||
BGL.glDisable( BGL.GL_BLEND )
|
||||
def event(evt, val):
|
||||
if evt == Draw.ESCKEY:
|
||||
Draw.Exit()
|
||||
|
||||
Draw.Register(gui, event, None)
|
||||
|
||||
@type image: Blender.Image
|
||||
@param image: The image to draw.
|
||||
@type x: int
|
||||
@param x: The lower left x (horizontal) position of the origin of the image.
|
||||
@type y: int
|
||||
@param y: The lower left y (vertical) position of the origin of the image.
|
||||
@type zoomx: float
|
||||
@param zoomx: The x (horizontal) zoom factor to use when drawing the image.
|
||||
@type zoomy: float
|
||||
@param zoomy: The y (vertical) zoom factor to use when drawing the image.
|
||||
@type clipx: int
|
||||
@param clipx: The lower left x (horizontal) origin of the clipping rectangle
|
||||
within the image. A value of 0 indicates the left of the
|
||||
image.
|
||||
@type clipy: int
|
||||
@param clipy: The lower left y (vertical) origin of the clipping rectangle
|
||||
within the image. A value of 0 indicates the bottom of the
|
||||
image.
|
||||
@type clipw: int
|
||||
@param clipw: The width of the clipping rectangle within the image. If this
|
||||
value is negative then the clipping rectangle includes as much
|
||||
of the image as possible in the x (horizontal) direction.
|
||||
@type cliph: int
|
||||
@param cliph: The height of the clipping rectangle within the image. If this
|
||||
value is negative then the clipping rectangle includes as much
|
||||
of the image as possible in the y (vertical) direction.
|
||||
"""
|
||||
|
||||
class Button:
|
||||
"""
|
||||
The Button object
|
||||
=================
|
||||
This object represents a button in Blender's GUI.
|
||||
@type val: int or float, string or 3-float tuple (depends on button type).
|
||||
@ivar val: The button's value.
|
||||
"""
|
||||
Reference in New Issue
Block a user