「利用者:Ideasman42/DeclarativeUIExperement」の版間の差分
(→Declarative UI In Blender) |
細 (1版 をインポートしました) |
(相違点なし)
|
2018年6月29日 (金) 04:52時点における最新版
Declarative UI In Blender
For the sourcecode for this see:
- https://svn.blender.org/svnroot/bf-blender/trunk/blender/release/scripts/modules/bpyml.py
- https://svn.blender.org/svnroot/bf-blender/trunk/blender/release/scripts/modules/bpyml_ui.py
This script is pure python declaration. its cumbersome but easy enough to follow if you know python.
Notice each item is a tuple, the first item is a string, the second 2 are am optional dict and an optional list of sub-elements.
class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Stamp"
bl_default_closed = True
COMPAT_ENGINES = {'BLENDER_RENDER'}
draw_header = [
("prop", dict(data="context.scene.render", property="render_stamp", text="")),
]
draw = [
("split", [
("column", [
("prop", dict(data="context.scene.render", property="stamp_time", text="Time")),
("prop", dict(data="context.scene.render", property="stamp_date", text="Date")),
("prop", dict(data="context.scene.render", property="stamp_render_time", text="RenderTime")),
("prop", dict(data="context.scene.render", property="stamp_frame", text="Frame")),
("prop", dict(data="context.scene.render", property="stamp_scene", text="Scene")),
("prop", dict(data="context.scene.render", property="stamp_camera", text="Camera")),
("prop", dict(data="context.scene.render", property="stamp_filename", text="Filename")),
("prop", dict(data="context.scene.render", property="stamp_marker", text="Marker")),
("prop", dict(data="context.scene.render", property="stamp_sequencer_strip", text="Seq. Strip")),
]
),
("column", [
("active", dict(expr="context.scene.render.render_stamp")),
("prop", dict(data="context.scene.render", property="stamp_foreground", slider=True)),
("prop", dict(data="context.scene.render", property="stamp_background", slider=True)),
("separator", ),
("prop", dict(data="context.scene.render", property="stamp_font_size", text="Font Size")),
]
)
]),
("split", dict(percentage=0.2), [
("prop", dict(data="context.scene.render", property="stamp_note", text="Note")),
("row", [
("active", dict(expr="context.scene.render.stamp_note")),
("prop", dict(data="context.scene.render", property="stamp_note_text", text="")),
]
)
]
)
]
This example is still pure python but relies on defining custom classes (in our own internal api) which can expand into a basic python data structure like the one above.
Note that this is fully functional and we can use this in blender now.
class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel):
bl_label = "Stamp"
bl_default_closed = True
COMPAT_ENGINES = {'BLENDER_RENDER'}
draw_header = [
prop(data="context.scene.render", property="render_stamp", text="")
]
draw = [
split() [
column() [
prop(data="context.scene.render", property="stamp_time", text="Time"),
prop(data="context.scene.render", property="stamp_date", text="Date"),
prop(data="context.scene.render", property="stamp_render_time", text="RenderTime"),
prop(data="context.scene.render", property="stamp_frame", text="Frame"),
prop(data="context.scene.render", property="stamp_scene", text="Scene"),
prop(data="context.scene.render", property="stamp_camera", text="Camera"),
prop(data="context.scene.render", property="stamp_filename", text="Filename"),
prop(data="context.scene.render", property="stamp_marker", text="Marker"),
prop(data="context.scene.render", property="stamp_sequencer_strip", text="Seq. Strip"),
],
column() [
active(expr="context.scene.render.render_stamp"),
prop(data="context.scene.render", property="stamp_foreground", slider=True),
prop(data="context.scene.render", property="stamp_background", slider=True),
separator(),
prop(data="context.scene.render", property="stamp_font_size", text="Font Size"),
]
],
split(percentage=0.2) [
prop(data="context.scene.render", property="stamp_note", text="Note"),
row() [
active(expr="context.scene.render.stamp_note"),
prop(data="context.scene.render", property="stamp_note_text", text=""),
]
]
]