forked from bartvdbraak/blender
Improved Internationalization and Localization
============================================== Commiting GSoC project by Xiangquan Xiao trunk. Applied as separated patch, because svn merge produces to much false conflicts and worked really slow. Details for usage would be published on code.blender.org soon. Thanks to Xiao for implementation of project, Campbell to code review, Dalai and Gez for pointing to nice font and everybody else who took part in improving i18n support.
This commit is contained in:
commit
f0aac81466
12
SConstruct
12
SConstruct
@ -512,8 +512,10 @@ datafilestargetlist = []
|
||||
dottargetlist = []
|
||||
scriptinstall = []
|
||||
|
||||
if env['OURPLATFORM']!='darwin':
|
||||
for dp, dn, df in os.walk('bin/.blender'):
|
||||
if env['OURPLATFORM']!='darwin':
|
||||
for dp, dn, df in os.walk('release/bin/.blender'):
|
||||
dp = os.path.normpath(dp)
|
||||
|
||||
if '.svn' in dn:
|
||||
dn.remove('.svn')
|
||||
if '_svn' in dn:
|
||||
@ -529,14 +531,14 @@ if env['OURPLATFORM']!='darwin':
|
||||
if f.endswith('.ttf'):
|
||||
continue
|
||||
|
||||
if 'locale' in dp:
|
||||
if 'locale' in dp or 'fonts' in dp:
|
||||
datafileslist.append(os.path.join(dp,f))
|
||||
dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['datafiles'] + dp.split(os.sep)[1:])) # skip bin
|
||||
dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['datafiles'] + dp.split(os.sep)[3:])) # skip bin
|
||||
datafilestargetlist.append(dir + os.sep + f)
|
||||
|
||||
else:
|
||||
dotblendlist.append(os.path.join(dp, f))
|
||||
dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['config'] + dp.split(os.sep)[1:])) # skip bin
|
||||
dir= os.path.join(*([env['BF_INSTALLDIR']] + [VERSION] + ['config'] + dp.split(os.sep)[3:])) # skip bin
|
||||
dottargetlist.append(dir + os.sep + f)
|
||||
|
||||
dotblenderinstall = []
|
||||
|
222
po/POTFILES.in
Normal file
222
po/POTFILES.in
Normal file
@ -0,0 +1,222 @@
|
||||
release/scripts/modules/rna_prop_ui.py
|
||||
|
||||
release/scripts/startup/bl_operators/animsys_update.py
|
||||
release/scripts/startup/bl_operators/object.py
|
||||
release/scripts/startup/bl_operators/object_align.py
|
||||
release/scripts/startup/bl_operators/object_quick_effects.py
|
||||
release/scripts/startup/bl_operators/object_randomize_transform.py
|
||||
release/scripts/startup/bl_operators/presets.py
|
||||
release/scripts/startup/bl_operators/screen_play_rendered_anim.py
|
||||
release/scripts/startup/bl_operators/sequencer.py
|
||||
release/scripts/startup/bl_operators/wm.py
|
||||
|
||||
release/scripts/startup/bl_ui/properties_animviz.py
|
||||
release/scripts/startup/bl_ui/properties_data_armature.py
|
||||
release/scripts/startup/bl_ui/properties_data_bone.py
|
||||
release/scripts/startup/bl_ui/properties_data_camera.py
|
||||
release/scripts/startup/bl_ui/properties_data_curve.py
|
||||
release/scripts/startup/bl_ui/properties_data_empty.py
|
||||
release/scripts/startup/bl_ui/properties_data_lamp.py
|
||||
release/scripts/startup/bl_ui/properties_data_lattice.py
|
||||
release/scripts/startup/bl_ui/properties_data_mesh.py
|
||||
release/scripts/startup/bl_ui/properties_data_metaball.py
|
||||
release/scripts/startup/bl_ui/properties_data_modifier.py
|
||||
release/scripts/startup/bl_ui/properties_game.py
|
||||
release/scripts/startup/bl_ui/properties_material.py
|
||||
release/scripts/startup/bl_ui/properties_object_constraint.py
|
||||
release/scripts/startup/bl_ui/properties_object.py
|
||||
release/scripts/startup/bl_ui/properties_particle.py
|
||||
release/scripts/startup/bl_ui/properties_physics_cloth.py
|
||||
release/scripts/startup/bl_ui/properties_physics_common.py
|
||||
release/scripts/startup/bl_ui/properties_physics_field.py
|
||||
release/scripts/startup/bl_ui/properties_physics_fluid.py
|
||||
release/scripts/startup/bl_ui/properties_physics_smoke.py
|
||||
release/scripts/startup/bl_ui/properties_physics_softbody.py
|
||||
release/scripts/startup/bl_ui/properties_render.py
|
||||
release/scripts/startup/bl_ui/properties_scene.py
|
||||
release/scripts/startup/bl_ui/properties_texture.py
|
||||
release/scripts/startup/bl_ui/properties_world.py
|
||||
|
||||
release/scripts/startup/bl_ui/space_console.py
|
||||
release/scripts/startup/bl_ui/space_dopesheet.py
|
||||
release/scripts/startup/bl_ui/space_graph.py
|
||||
release/scripts/startup/bl_ui/space_image.py
|
||||
release/scripts/startup/bl_ui/space_info.py
|
||||
release/scripts/startup/bl_ui/space_logic.py
|
||||
release/scripts/startup/bl_ui/space_nla.py
|
||||
release/scripts/startup/bl_ui/space_node.py
|
||||
release/scripts/startup/bl_ui/space_outliner.py
|
||||
release/scripts/startup/bl_ui/space_sequencer.py
|
||||
release/scripts/startup/bl_ui/space_text.py
|
||||
release/scripts/startup/bl_ui/space_time.py
|
||||
release/scripts/startup/bl_ui/space_userpref.py
|
||||
release/scripts/startup/bl_ui/space_userpref_keymap.py
|
||||
release/scripts/startup/bl_ui/space_view3d.py
|
||||
release/scripts/startup/bl_ui/space_view3d_toolbar.py
|
||||
|
||||
source/blender/editors/animation/anim_channels_edit.c
|
||||
source/blender/editors/animation/anim_markers.c
|
||||
source/blender/editors/animation/anim_ops.c
|
||||
source/blender/editors/animation/drivers.c
|
||||
source/blender/editors/animation/keyframing.c
|
||||
source/blender/editors/animation/keyingsets.c
|
||||
|
||||
source/blender/editors/armature/armature_ops.c
|
||||
source/blender/editors/armature/editarmature.c
|
||||
source/blender/editors/armature/editarmature_sketch.c
|
||||
source/blender/editors/armature/poselib.c
|
||||
source/blender/editors/armature/poseobject.c
|
||||
source/blender/editors/armature/poseSlide.c
|
||||
|
||||
source/blender/editors/curve/editcurve.c
|
||||
source/blender/editors/curve/editfont.c
|
||||
|
||||
source/blender/editors/gpencil/gpencil_paint.c
|
||||
|
||||
source/blender/editors/interface/interface_layout.c
|
||||
source/blender/editors/interface/interface_ops.c
|
||||
source/blender/editors/interface/interface_regions.c
|
||||
source/blender/editors/interface/interface_templates.c
|
||||
source/blender/editors/interface/interface_utils.c
|
||||
source/blender/editors/interface/view2d_ops.c
|
||||
|
||||
source/blender/editors/mesh/editmesh.c
|
||||
source/blender/editors/mesh/editmesh_add.c
|
||||
source/blender/editors/mesh/editmesh_loop.c
|
||||
source/blender/editors/mesh/editmesh_mods.c
|
||||
source/blender/editors/mesh/editmesh_tools.c
|
||||
source/blender/editors/mesh/loopcut.c
|
||||
source/blender/editors/mesh/mesh_data.c
|
||||
source/blender/editors/mesh/mesh_ops.c
|
||||
|
||||
source/blender/editors/metaball/mball_edit.c
|
||||
|
||||
source/blender/editors/object/object_add.c
|
||||
source/blender/editors/object/object_constraint.c
|
||||
source/blender/editors/object/object_edit.c
|
||||
source/blender/editors/object/object_group.c
|
||||
source/blender/editors/object/object_lattice.c
|
||||
source/blender/editors/object/object_modifier.c
|
||||
source/blender/editors/object/object_ops.c
|
||||
source/blender/editors/object/object_relations.c
|
||||
source/blender/editors/object/object_select.c
|
||||
source/blender/editors/object/object_shapekey.c
|
||||
source/blender/editors/object/object_transform.c
|
||||
source/blender/editors/object/object_vgroup.c
|
||||
|
||||
source/blender/editors/physics/particle_edit.c
|
||||
source/blender/editors/physics/particle_object.c
|
||||
source/blender/editors/physics/physics_pointcache.c
|
||||
|
||||
source/blender/editors/render/render_internal.c
|
||||
source/blender/editors/render/render_opengl.c
|
||||
source/blender/editors/render/render_shading.c
|
||||
source/blender/editors/render/render_view.c
|
||||
|
||||
source/blender/editors/screen/area.c
|
||||
source/blender/editors/screen/screendump.c
|
||||
source/blender/editors/screen/screen_ops.c
|
||||
|
||||
source/blender/editors/sculpt_paint/paint_ops.c
|
||||
source/blender/editors/sculpt_paint/paint_image.c
|
||||
source/blender/editors/sculpt_paint/paint_utils.c
|
||||
source/blender/editors/sculpt_paint/paint_vertex.c
|
||||
source/blender/editors/sculpt_paint/sculpt.c
|
||||
|
||||
source/blender/editors/sound/sound_ops.c
|
||||
|
||||
source/blender/editors/space_action/action_edit.c
|
||||
source/blender/editors/space_action/action_ops.c
|
||||
source/blender/editors/space_action/action_select.c
|
||||
|
||||
source/blender/editors/space_buttons/buttons_header.c
|
||||
source/blender/editors/space_buttons/buttons_ops.c
|
||||
|
||||
source/blender/editors/space_console/console_ops.c
|
||||
|
||||
source/blender/editors/space_file/file_draw.c
|
||||
source/blender/editors/space_file/file_ops.c
|
||||
source/blender/editors/space_file/file_panels.c
|
||||
|
||||
source/blender/editors/space_graph/graph_buttons.c
|
||||
source/blender/editors/space_graph/graph_edit.c
|
||||
source/blender/editors/space_graph/graph_ops.c
|
||||
source/blender/editors/space_graph/graph_select.c
|
||||
|
||||
source/blender/editors/space_image/image_buttons.c
|
||||
source/blender/editors/space_image/image_ops.c
|
||||
|
||||
source/blender/editors/space_info/info_ops.c
|
||||
source/blender/editors/space_info/info_report.c
|
||||
source/blender/editors/space_info/space_info.c
|
||||
|
||||
source/blender/editors/space_logic/logic_buttons.c
|
||||
|
||||
source/blender/editors/space_nla/nla_buttons.c
|
||||
source/blender/editors/space_nla/nla_channels.c
|
||||
source/blender/editors/space_nla/nla_edit.c
|
||||
source/blender/editors/space_nla/nla_select.c
|
||||
|
||||
source/blender/editors/space_node/node_buttons.c
|
||||
source/blender/editors/space_node/node_edit.c
|
||||
source/blender/editors/space_node/node_header.c
|
||||
source/blender/editors/space_node/node_ops.c
|
||||
source/blender/editors/space_node/node_select.c
|
||||
source/blender/editors/space_node/node_state.c
|
||||
|
||||
source/blender/editors/space_script/script_edit.c
|
||||
|
||||
source/blender/editors/space_sequencer/sequencer_add.c
|
||||
source/blender/editors/space_sequencer/sequencer_buttons.c
|
||||
source/blender/editors/space_sequencer/sequencer_edit.c
|
||||
source/blender/editors/space_sequencer/sequencer_select.c
|
||||
|
||||
source/blender/editors/space_text/text_header.c
|
||||
source/blender/editors/space_text/text_ops.c
|
||||
source/blender/editors/space_time/time_ops.c
|
||||
|
||||
source/blender/editors/space_view3d/view3d_buttons.c
|
||||
source/blender/editors/space_view3d/view3d_draw.c
|
||||
source/blender/editors/space_view3d/view3d_edit.c
|
||||
source/blender/editors/space_view3d/view3d_fly.c
|
||||
source/blender/editors/space_view3d/view3d_header.c
|
||||
source/blender/editors/space_view3d/view3d_select.c
|
||||
source/blender/editors/space_view3d/view3d_view.c
|
||||
source/blender/editors/space_view3d/view3d_toolbar.c
|
||||
|
||||
source/blender/editors/transform/transform.c
|
||||
source/blender/editors/transform/transform_ops.c
|
||||
source/blender/editors/transform/transform_orientations.c
|
||||
|
||||
source/blender/editors/util/undo.c
|
||||
|
||||
source/blender/editors/uvedit/uvedit_ops.c
|
||||
source/blender/editors/uvedit/uvedit_unwrap_ops.c
|
||||
|
||||
source/blender/makesrna/intern/rna_ID.c
|
||||
source/blender/makesrna/intern/rna_action.c
|
||||
source/blender/makesrna/intern/rna_color.c
|
||||
source/blender/makesrna/intern/rna_constraint.c
|
||||
source/blender/makesrna/intern/rna_curve.c
|
||||
source/blender/makesrna/intern/rna_fcurve.c
|
||||
source/blender/makesrna/intern/rna_material.c
|
||||
source/blender/makesrna/intern/rna_mesh.c
|
||||
source/blender/makesrna/intern/rna_modifier.c
|
||||
source/blender/makesrna/intern/rna_object.c
|
||||
source/blender/makesrna/intern/rna_object_force.c
|
||||
source/blender/makesrna/intern/rna_particle.c
|
||||
source/blender/makesrna/intern/rna_render.c
|
||||
source/blender/makesrna/intern/rna_scene.c
|
||||
source/blender/makesrna/intern/rna_space.c
|
||||
source/blender/makesrna/intern/rna_texture.c
|
||||
source/blender/makesrna/intern/rna_ui_api.c
|
||||
source/blender/makesrna/intern/rna_userdef.c
|
||||
source/blender/makesrna/intern/rna_wm.c
|
||||
source/blender/makesrna/intern/rna_wm_api.c
|
||||
source/blender/makesrna/intern/rna_world.c
|
||||
|
||||
source/blender/windowmanager/intern/wm_files.c
|
||||
source/blender/windowmanager/intern/wm_operators.c
|
||||
source/blender/windowmanager/intern/wm_window.c
|
||||
|
||||
|
5433
po/messages.txt
Normal file
5433
po/messages.txt
Normal file
File diff suppressed because it is too large
Load Diff
17
po/update_mo.py
Executable file
17
po/update_mo.py
Executable file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# update all mo files in the LANGS
|
||||
|
||||
import os
|
||||
|
||||
LOCALE_DIR="../release/bin/.blender/locale"
|
||||
PO_DIR = "."
|
||||
DOMAIN = "blender"
|
||||
|
||||
for po in os.listdir( PO_DIR ):
|
||||
if po.endswith(".po"):
|
||||
lang = po[:-3]
|
||||
# show stats
|
||||
cmd = "msgfmt --statistics %s.po -o %s/%s/LC_MESSAGES/%s.mo" % ( lang, LOCALE_DIR, lang, DOMAIN )
|
||||
print cmd
|
||||
os.system( cmd )
|
17
po/update_po.py
Executable file
17
po/update_po.py
Executable file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# update all po files in the LANGS
|
||||
|
||||
import os
|
||||
|
||||
PO_DIR = "."
|
||||
DOMAIN = "blender"
|
||||
|
||||
for po in os.listdir( PO_DIR ):
|
||||
if po.endswith(".po"):
|
||||
lang = po[:-3]
|
||||
# update po file
|
||||
cmd = "msgmerge --update --lang=%s %s.po %s.pot" % (lang, lang, DOMAIN)
|
||||
print(cmd)
|
||||
os.system( cmd )
|
||||
|
61
po/update_pot.py
Executable file
61
po/update_pot.py
Executable file
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# update the pot file according the POTFILES.in
|
||||
|
||||
import os
|
||||
|
||||
GETTEXT_XGETTEXT_EXECUTABLE="xgettext"
|
||||
SOURCE_DIR=".."
|
||||
DOMAIN="blender"
|
||||
|
||||
cmd = "%s --files-from=%s/po/POTFILES.in --keyword=_ --keyword=N_ --directory=%s --output=%s/po/%s.pot --from-code=utf-8" % (
|
||||
GETTEXT_XGETTEXT_EXECUTABLE, SOURCE_DIR, SOURCE_DIR, SOURCE_DIR, DOMAIN)
|
||||
|
||||
os.system( cmd )
|
||||
|
||||
def stripeol(s):
|
||||
if line.endswith("\n"):
|
||||
s = s[:-1]
|
||||
|
||||
if line.endswith("\r"):
|
||||
s = s[:-1]
|
||||
|
||||
return s
|
||||
|
||||
pot_messages = {}
|
||||
reading_message = False
|
||||
message = ""
|
||||
with open("blender.pot", 'r') as handle:
|
||||
while True:
|
||||
line = handle.readline()
|
||||
|
||||
if not line:
|
||||
break
|
||||
|
||||
line = stripeol(line)
|
||||
if line.startswith("msgid"):
|
||||
reading_message = True
|
||||
message = line[7:-1]
|
||||
elif line.startswith("msgstr"):
|
||||
reading_message = False
|
||||
pot_messages[message] = True
|
||||
elif reading_message:
|
||||
message += line[1:-1]
|
||||
|
||||
# add messages collected automatically from RNA
|
||||
with open("blender.pot", "a") as pot_handle:
|
||||
with open("messages.txt", 'r') as handle:
|
||||
while True:
|
||||
line = handle.readline()
|
||||
|
||||
if not line:
|
||||
break
|
||||
|
||||
line = stripeol(line)
|
||||
line = line.replace("\\", "\\\\")
|
||||
line = line.replace("\"", "\\\"")
|
||||
|
||||
if not pot_messages.get(line):
|
||||
pot_handle.write("\n#: Automatically collected from RNA\n")
|
||||
pot_handle.write("msgid \"%s\"\n" % (line))
|
||||
pot_handle.write("msgstr \"\"\n")
|
@ -11,13 +11,14 @@ Catalan:ca_ES
|
||||
Czech:cs_CZ
|
||||
Brazilian Portuguese:pt_BR
|
||||
Simplified Chinese:zh_CN
|
||||
Traditional Chinese:zh_TW
|
||||
Russian:ru_RU
|
||||
Croatian:hr_HR
|
||||
Serbian:sr
|
||||
Serbian:sr_RS
|
||||
Ukrainian:uk_UA
|
||||
Polish:pl_PL
|
||||
Romanian:ro
|
||||
Arabic:ar
|
||||
Bulgarian:bg
|
||||
Greek:el
|
||||
Korean:ko
|
||||
Romanian:ro_RO
|
||||
Arabic:ar_SA
|
||||
Bulgarian:bg_BG
|
||||
Greek:el_GR
|
||||
Korean:ko_KR
|
||||
|
BIN
release/bin/.blender/fonts/droidsans.ttf.gz
Normal file
BIN
release/bin/.blender/fonts/droidsans.ttf.gz
Normal file
Binary file not shown.
@ -1144,6 +1144,67 @@ class WM_OT_sysinfo(Operator):
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class WM_OT_get_messages(Operator):
|
||||
bl_idname = "wm.get_messages"
|
||||
bl_label = "Get Messages"
|
||||
|
||||
def _putMessage(self, messages, msg):
|
||||
if len(msg):
|
||||
messages[msg] = True
|
||||
|
||||
def _walkProperties(self, properties, messages):
|
||||
for prop in properties:
|
||||
self._putMessage(messages, prop.name)
|
||||
self._putMessage(messages, prop.description)
|
||||
|
||||
if isinstance(prop, bpy.types.EnumProperty):
|
||||
for item in prop.enum_items:
|
||||
self._putMessage(messages, item.name)
|
||||
self._putMessage(messages, item.description)
|
||||
|
||||
def _walkRNA(self, bl_rna, messages):
|
||||
if bl_rna.name and bl_rna.name != bl_rna.identifier:
|
||||
self._putMessage(messages, bl_rna.name)
|
||||
|
||||
if bl_rna.description:
|
||||
self._putMessage(messages, bl_rna.description)
|
||||
|
||||
self._walkProperties(bl_rna.properties, messages)
|
||||
|
||||
def _walkClass(self, cls, messages):
|
||||
self._walkRNA(cls.bl_rna, messages)
|
||||
|
||||
def _walk_keymap_hierarchy(self, hier, messages):
|
||||
for lvl in hier:
|
||||
self._putMessage(messages, lvl[0])
|
||||
|
||||
if lvl[3]:
|
||||
self._walk_keymap_hierarchy(lvl[3], messages)
|
||||
|
||||
def execute(self, context):
|
||||
messages = {}
|
||||
|
||||
for cls in type(bpy.context).__base__.__subclasses__():
|
||||
self._walkClass(cls, messages)
|
||||
|
||||
for cls in bpy.types.Space.__subclasses__():
|
||||
self._walkClass(cls, messages)
|
||||
|
||||
for cls in bpy.types.Operator.__subclasses__():
|
||||
self._walkClass(cls, messages)
|
||||
|
||||
from bl_ui.space_userpref_keymap import KM_HIERARCHY
|
||||
|
||||
self._walk_keymap_hierarchy(KM_HIERARCHY, messages)
|
||||
|
||||
text = bpy.data.texts.new(name="messages.txt")
|
||||
for message in messages:
|
||||
text.write(message + "\n")
|
||||
self._walkClass(bpy.types.SpaceDopeSheetEditor, messages)
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
|
||||
class WM_OT_copy_prev_settings(Operator):
|
||||
'''Copy settings from previous version'''
|
||||
bl_idname = "wm.copy_prev_settings"
|
||||
|
@ -23,7 +23,7 @@
|
||||
# NOTE:
|
||||
# The specialised panel types are derived in their respective UI modules
|
||||
# dont register these classes since they are only helpers.
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class MotionPathButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -43,23 +43,23 @@ class MotionPathButtonsPanel():
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
if (mps.type == 'CURRENT_FRAME'):
|
||||
sub.prop(mps, "frame_before", text="Before")
|
||||
sub.prop(mps, "frame_after", text="After")
|
||||
sub.prop(mps, "frame_before", text=_("Before"))
|
||||
sub.prop(mps, "frame_after", text=_("After"))
|
||||
elif (mps.type == 'RANGE'):
|
||||
sub.prop(mps, "frame_start", text="Start")
|
||||
sub.prop(mps, "frame_end", text="End")
|
||||
sub.prop(mps, "frame_start", text=_("Start"))
|
||||
sub.prop(mps, "frame_end", text=_("End"))
|
||||
|
||||
sub.prop(mps, "frame_step", text="Step")
|
||||
sub.prop(mps, "frame_step", text=_("Step"))
|
||||
if bones:
|
||||
col.row().prop(mps, "bake_location", expand=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Display:")
|
||||
col.prop(mps, "show_frame_numbers", text="Frame Numbers")
|
||||
col.prop(mps, "show_keyframe_highlight", text="Keyframes")
|
||||
col.label(text=_("Display:"))
|
||||
col.prop(mps, "show_frame_numbers", text=_("Frame Numbers"))
|
||||
col.prop(mps, "show_keyframe_highlight", text=_("Keyframes"))
|
||||
if bones:
|
||||
col.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
|
||||
col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
|
||||
col.prop(mps, "show_keyframe_action_all", text=_("+ Non-Grouped Keyframes"))
|
||||
col.prop(mps, "show_keyframe_numbers", text=_("Keyframe Numbers"))
|
||||
|
||||
|
||||
# FIXME: this panel still needs to be ported so that it will work correctly with animviz
|
||||
@ -82,16 +82,16 @@ class OnionSkinButtonsPanel():
|
||||
|
||||
sub = col.column(align=True)
|
||||
if arm.ghost_type == 'RANGE':
|
||||
sub.prop(arm, "ghost_frame_start", text="Start")
|
||||
sub.prop(arm, "ghost_frame_end", text="End")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
sub.prop(arm, "ghost_frame_start", text=_("Start"))
|
||||
sub.prop(arm, "ghost_frame_end", text=_("End"))
|
||||
sub.prop(arm, "ghost_size", text=_("Step"))
|
||||
elif arm.ghost_type == 'CURRENT_FRAME':
|
||||
sub.prop(arm, "ghost_step", text="Range")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
sub.prop(arm, "ghost_step", text=_("Range"))
|
||||
sub.prop(arm, "ghost_size", text=_("Step"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Display:")
|
||||
col.prop(arm, "show_only_ghost_selected", text="Selected Only")
|
||||
col.label(text=_("Display:"))
|
||||
col.prop(arm, "show_only_ghost_selected", text=_("Selected Only"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
import bpy
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel, Menu
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class ArmatureButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -60,16 +60,16 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, Panel):
|
||||
layout.prop(arm, "pose_position", expand=True)
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Layers:")
|
||||
col.label(text=_("Layers:"))
|
||||
col.prop(arm, "layers", text="")
|
||||
col.label(text="Protected Layers:")
|
||||
col.label(text=_("Protected Layers:"))
|
||||
col.prop(arm, "layers_protected", text="")
|
||||
|
||||
layout.label(text="Deform:")
|
||||
flow = layout.column_flow()
|
||||
flow.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
|
||||
flow.prop(arm, "use_deform_envelopes", text="Envelopes")
|
||||
flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
|
||||
flow.prop(arm, "use_deform_vertex_groups", text=_("Vertex Groups"))
|
||||
flow.prop(arm, "use_deform_envelopes", text=_("Envelopes"))
|
||||
flow.prop(arm, "use_deform_preserve_volume", text=_("Quaternion"))
|
||||
|
||||
if context.scene.render.engine == "BLENDER_GAME":
|
||||
layout.row().prop(arm, "vert_deformer", expand=True)
|
||||
@ -89,15 +89,15 @@ class DATA_PT_display(ArmatureButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(arm, "show_names", text="Names")
|
||||
col.prop(arm, "show_axes", text="Axes")
|
||||
col.prop(arm, "show_bone_custom_shapes", text="Shapes")
|
||||
col.prop(arm, "show_names", text=_("Names"))
|
||||
col.prop(arm, "show_axes", text=_("Axes"))
|
||||
col.prop(arm, "show_bone_custom_shapes", text=_("Shapes"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(arm, "show_group_colors", text="Colors")
|
||||
col.prop(arm, "show_group_colors", text=_("Colors"))
|
||||
if ob:
|
||||
col.prop(ob, "show_x_ray", text="X-Ray")
|
||||
col.prop(arm, "use_deform_delay", text="Delay Refresh")
|
||||
col.prop(ob, "show_x_ray", text=_("X-Ray"))
|
||||
col.prop(arm, "use_deform_delay", text=_("Delay Refresh"))
|
||||
|
||||
|
||||
class DATA_PT_bone_group_specials(Menu):
|
||||
@ -161,12 +161,12 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel):
|
||||
row.active = (ob.proxy is None)
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.operator("pose.group_assign", text="Assign")
|
||||
sub.operator("pose.group_unassign", text="Remove") # row.operator("pose.bone_group_remove_from", text="Remove")
|
||||
sub.operator("pose.group_assign", text=_("Assign"))
|
||||
sub.operator("pose.group_unassign", text=_("Remove")) # row.operator("pose.bone_group_remove_from", text=_("Remove"))
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.operator("pose.group_select", text="Select")
|
||||
sub.operator("pose.group_deselect", text="Deselect")
|
||||
sub.operator("pose.group_select", text=_("Select"))
|
||||
sub.operator("pose.group_deselect", text=_("Deselect"))
|
||||
|
||||
|
||||
class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
|
||||
@ -230,16 +230,16 @@ class DATA_PT_ghost(ArmatureButtonsPanel, Panel):
|
||||
col = split.column(align=True)
|
||||
|
||||
if arm.ghost_type == 'RANGE':
|
||||
col.prop(arm, "ghost_frame_start", text="Start")
|
||||
col.prop(arm, "ghost_frame_end", text="End")
|
||||
col.prop(arm, "ghost_size", text="Step")
|
||||
col.prop(arm, "ghost_frame_start", text=_("Start"))
|
||||
col.prop(arm, "ghost_frame_end", text=_("End"))
|
||||
col.prop(arm, "ghost_size", text=_("Step"))
|
||||
elif arm.ghost_type == 'CURRENT_FRAME':
|
||||
col.prop(arm, "ghost_step", text="Range")
|
||||
col.prop(arm, "ghost_size", text="Step")
|
||||
col.prop(arm, "ghost_step", text=_("Range"))
|
||||
col.prop(arm, "ghost_size", text=_("Step"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Display:")
|
||||
col.prop(arm, "show_only_ghost_selected", text="Selected Only")
|
||||
col.label(text=_("Display:"))
|
||||
col.prop(arm, "show_only_ghost_selected", text=_("Selected Only"))
|
||||
|
||||
|
||||
class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
|
||||
@ -263,7 +263,7 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
|
||||
layout.prop(itasc, "mode", expand=True)
|
||||
simulation = (itasc.mode == 'SIMULATION')
|
||||
if simulation:
|
||||
layout.label(text="Reiteration:")
|
||||
layout.label(text=_("Reiteration:"))
|
||||
layout.prop(itasc, "reiteration_method", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
@ -275,8 +275,8 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
|
||||
layout.prop(itasc, "use_auto_step")
|
||||
row = layout.row()
|
||||
if itasc.use_auto_step:
|
||||
row.prop(itasc, "step_min", text="Min")
|
||||
row.prop(itasc, "step_max", text="Max")
|
||||
row.prop(itasc, "step_min", text=_("Min"))
|
||||
row.prop(itasc, "step_max", text=_("Max"))
|
||||
else:
|
||||
row.prop(itasc, "step_count")
|
||||
|
||||
@ -286,7 +286,7 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
|
||||
layout.prop(itasc, "velocity_max")
|
||||
if itasc.solver == 'DLS':
|
||||
row = layout.row()
|
||||
row.prop(itasc, "damping_max", text="Damp", slider=True)
|
||||
row.prop(itasc, "damping_max", text=_("Damp"), slider=True)
|
||||
row.prop(itasc, "damping_epsilon", text="Eps", slider=True)
|
||||
|
||||
from bl_ui.properties_animviz import (
|
||||
@ -314,8 +314,8 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel):
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
split.operator("pose.paths_calculate", text="Calculate Paths")
|
||||
split.operator("pose.paths_clear", text="Clear Paths")
|
||||
split.operator("pose.paths_calculate", text=_("Calculate Paths"))
|
||||
split.operator("pose.paths_clear", text=_("Clear Paths"))
|
||||
|
||||
|
||||
class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
|
||||
|
@ -21,7 +21,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class BoneButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -76,14 +76,14 @@ class BONE_PT_transform(BoneButtonsPanel, Panel):
|
||||
|
||||
col = row.column()
|
||||
if pchan.rotation_mode == 'QUATERNION':
|
||||
col.prop(pchan, "rotation_quaternion", text="Rotation")
|
||||
col.prop(pchan, "rotation_quaternion", text=_("Rotation"))
|
||||
elif pchan.rotation_mode == 'AXIS_ANGLE':
|
||||
#col.label(text="Rotation")
|
||||
#col.prop(pchan, "rotation_angle", text="Angle")
|
||||
#col.prop(pchan, "rotation_axis", text="Axis")
|
||||
col.prop(pchan, "rotation_axis_angle", text="Rotation")
|
||||
#col.label(text=_("Rotation"))
|
||||
#col.prop(pchan, "rotation_angle", text=_("Angle"))
|
||||
#col.prop(pchan, "rotation_axis", text=_("Axis"))
|
||||
col.prop(pchan, "rotation_axis_angle", text=_("Rotation"))
|
||||
else:
|
||||
col.prop(pchan, "rotation_euler", text="Rotation")
|
||||
col.prop(pchan, "rotation_euler", text=_("Rotation"))
|
||||
|
||||
row.column().prop(pchan, "scale")
|
||||
|
||||
@ -97,7 +97,7 @@ class BONE_PT_transform(BoneButtonsPanel, Panel):
|
||||
|
||||
col = row.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Roll:")
|
||||
sub.label(text=_("Roll:"))
|
||||
sub.prop(bone, "roll", text="")
|
||||
sub.label()
|
||||
sub.prop(bone, "lock")
|
||||
@ -126,12 +126,12 @@ class BONE_PT_transform_locks(BoneButtonsPanel, Panel):
|
||||
|
||||
col = row.column()
|
||||
if pchan.rotation_mode in {'QUATERNION', 'AXIS_ANGLE'}:
|
||||
col.prop(pchan, "lock_rotations_4d", text="Lock Rotation")
|
||||
col.prop(pchan, "lock_rotations_4d", text=_("Lock Rotation"))
|
||||
if pchan.lock_rotations_4d:
|
||||
col.prop(pchan, "lock_rotation_w", text="W")
|
||||
col.prop(pchan, "lock_rotation", text="")
|
||||
else:
|
||||
col.prop(pchan, "lock_rotation", text="Rotation")
|
||||
col.prop(pchan, "lock_rotation", text=_("Rotation"))
|
||||
|
||||
row.column().prop(pchan, "lock_scale")
|
||||
|
||||
@ -155,17 +155,17 @@ class BONE_PT_relations(BoneButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Layers:")
|
||||
col.label(text=_("Layers:"))
|
||||
col.prop(bone, "layers", text="")
|
||||
|
||||
col.separator()
|
||||
|
||||
if ob and pchan:
|
||||
col.label(text="Bone Group:")
|
||||
col.label(text=_("Bone Group:"))
|
||||
col.prop_search(pchan, "bone_group", ob.pose, "bone_groups", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Parent:")
|
||||
col.label(text=_("Parent:"))
|
||||
if context.bone:
|
||||
col.prop(bone, "parent", text="")
|
||||
else:
|
||||
@ -174,11 +174,11 @@ class BONE_PT_relations(BoneButtonsPanel, Panel):
|
||||
sub = col.column()
|
||||
sub.active = (bone.parent is not None)
|
||||
sub.prop(bone, "use_connect")
|
||||
sub.prop(bone, "use_inherit_rotation", text="Inherit Rotation")
|
||||
sub.prop(bone, "use_inherit_scale", text="Inherit Scale")
|
||||
sub.prop(bone, "use_inherit_rotation", text=_("Inherit Rotation"))
|
||||
sub.prop(bone, "use_inherit_scale", text=_("Inherit Scale"))
|
||||
sub = col.column()
|
||||
sub.active = (not bone.parent or not bone.use_connect)
|
||||
sub.prop(bone, "use_local_location", text="Local Location")
|
||||
sub.prop(bone, "use_local_location", text=_("Local Location"))
|
||||
|
||||
|
||||
class BONE_PT_display(BoneButtonsPanel, Panel):
|
||||
@ -206,16 +206,16 @@ class BONE_PT_display(BoneButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(bone, "show_wire", text="Wireframe")
|
||||
col.prop(bone, "hide", text="Hide")
|
||||
col.prop(bone, "show_wire", text=_("Wireframe"))
|
||||
col.prop(bone, "hide", text=_("Hide"))
|
||||
|
||||
if pchan:
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Custom Shape:")
|
||||
col.label(text=_("Custom Shape:"))
|
||||
col.prop(pchan, "custom_shape", text="")
|
||||
if pchan.custom_shape:
|
||||
col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text="At")
|
||||
col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text=_("At"))
|
||||
|
||||
|
||||
class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
@ -241,13 +241,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
split.prop(pchan, "lock_ik_x", icon='LOCKED' if pchan.lock_ik_x else 'UNLOCKED', text="X")
|
||||
split.active = pchan.is_in_ik_chain
|
||||
row = split.row()
|
||||
row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
|
||||
row.prop(pchan, "ik_stiffness_x", text=_("Stiffness"), slider=True)
|
||||
row.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
sub = split.row()
|
||||
|
||||
sub.prop(pchan, "use_ik_limit_x", text="Limit")
|
||||
sub.prop(pchan, "use_ik_limit_x", text=_("Limit"))
|
||||
sub.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
|
||||
sub = split.row(align=True)
|
||||
sub.prop(pchan, "ik_min_x", text="")
|
||||
@ -258,13 +258,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
split.prop(pchan, "lock_ik_y", icon='LOCKED' if pchan.lock_ik_y else 'UNLOCKED', text="Y")
|
||||
split.active = pchan.is_in_ik_chain
|
||||
row = split.row()
|
||||
row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
|
||||
row.prop(pchan, "ik_stiffness_y", text=_("Stiffness"), slider=True)
|
||||
row.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
sub = split.row()
|
||||
|
||||
sub.prop(pchan, "use_ik_limit_y", text="Limit")
|
||||
sub.prop(pchan, "use_ik_limit_y", text=_("Limit"))
|
||||
sub.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
|
||||
|
||||
sub = split.row(align=True)
|
||||
@ -276,13 +276,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
split.prop(pchan, "lock_ik_z", icon='LOCKED' if pchan.lock_ik_z else 'UNLOCKED', text="Z")
|
||||
split.active = pchan.is_in_ik_chain
|
||||
sub = split.row()
|
||||
sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
|
||||
sub.prop(pchan, "ik_stiffness_z", text=_("Stiffness"), slider=True)
|
||||
sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
sub = split.row()
|
||||
|
||||
sub.prop(pchan, "use_ik_limit_z", text="Limit")
|
||||
sub.prop(pchan, "use_ik_limit_z", text=_("Limit"))
|
||||
sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
|
||||
sub = split.row(align=True)
|
||||
sub.prop(pchan, "ik_min_z", text="")
|
||||
@ -290,7 +290,7 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
sub.active = pchan.lock_ik_z == False and pchan.use_ik_limit_z and pchan.is_in_ik_chain
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
split.label(text="Stretch:")
|
||||
split.label(text=_("Stretch:"))
|
||||
sub = split.row()
|
||||
sub.prop(pchan, "ik_stretch", text="", slider=True)
|
||||
sub.active = pchan.is_in_ik_chain
|
||||
@ -298,15 +298,15 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
|
||||
if ob.pose.ik_solver == 'ITASC':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(pchan, "use_ik_rotation_control", text="Control Rotation")
|
||||
col.prop(pchan, "use_ik_rotation_control", text=_("Control Rotation"))
|
||||
col.active = pchan.is_in_ik_chain
|
||||
col = split.column()
|
||||
col.prop(pchan, "ik_rotation_weight", text="Weight", slider=True)
|
||||
col.prop(pchan, "ik_rotation_weight", text=_("Weight"), slider=True)
|
||||
col.active = pchan.is_in_ik_chain
|
||||
# not supported yet
|
||||
#row = layout.row()
|
||||
#row.prop(pchan, "use_ik_linear_control", text="Joint Size")
|
||||
#row.prop(pchan, "ik_linear_weight", text="Weight", slider=True)
|
||||
#row.prop(pchan, "use_ik_linear_control", text=_("Joint Size"))
|
||||
#row.prop(pchan, "ik_linear_weight", text=_("Weight"), slider=True)
|
||||
|
||||
|
||||
class BONE_PT_deform(BoneButtonsPanel, Panel):
|
||||
@ -334,27 +334,27 @@ class BONE_PT_deform(BoneButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Envelope:")
|
||||
col.label(text=_("Envelope:"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(bone, "envelope_distance", text="Distance")
|
||||
sub.prop(bone, "envelope_weight", text="Weight")
|
||||
col.prop(bone, "use_envelope_multiply", text="Multiply")
|
||||
sub.prop(bone, "envelope_distance", text=_("Distance"))
|
||||
sub.prop(bone, "envelope_weight", text=_("Weight"))
|
||||
col.prop(bone, "use_envelope_multiply", text=_("Multiply"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Radius:")
|
||||
sub.prop(bone, "head_radius", text="Head")
|
||||
sub.prop(bone, "tail_radius", text="Tail")
|
||||
sub.label(text=_("Radius:"))
|
||||
sub.prop(bone, "head_radius", text=_("Head"))
|
||||
sub.prop(bone, "tail_radius", text=_("Tail"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Curved Bones:")
|
||||
col.label(text=_("Curved Bones:"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(bone, "bbone_segments", text="Segments")
|
||||
sub.prop(bone, "bbone_in", text="Ease In")
|
||||
sub.prop(bone, "bbone_out", text="Ease Out")
|
||||
sub.prop(bone, "bbone_segments", text=_("Segments"))
|
||||
sub.prop(bone, "bbone_in", text=_("Ease In"))
|
||||
sub.prop(bone, "bbone_out", text=_("Ease Out"))
|
||||
|
||||
col.label(text="Offset:")
|
||||
col.label(text=_("Offset:"))
|
||||
col.prop(bone, "use_cyclic_offset")
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class CameraButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -91,16 +91,16 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Shift:")
|
||||
col.label(text=_("Shift:"))
|
||||
col.prop(cam, "shift_x", text="X")
|
||||
col.prop(cam, "shift_y", text="Y")
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Clipping:")
|
||||
col.prop(cam, "clip_start", text="Start")
|
||||
col.prop(cam, "clip_end", text="End")
|
||||
col.label(text=_("Clipping:"))
|
||||
col.prop(cam, "clip_start", text=_("Start"))
|
||||
col.prop(cam, "clip_end", text=_("End"))
|
||||
|
||||
layout.label(text="Depth of Field:")
|
||||
layout.label(text=_("Depth of Field:"))
|
||||
|
||||
split = layout.split()
|
||||
split.prop(cam, "dof_object", text="")
|
||||
@ -109,7 +109,7 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
|
||||
|
||||
if cam.dof_object is not None:
|
||||
col.enabled = False
|
||||
col.prop(cam, "dof_distance", text="Distance")
|
||||
col.prop(cam, "dof_distance", text=_("Distance"))
|
||||
|
||||
|
||||
class DATA_PT_camera_display(CameraButtonsPanel, Panel):
|
||||
@ -124,19 +124,19 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(cam, "show_limits", text="Limits")
|
||||
col.prop(cam, "show_mist", text="Mist")
|
||||
col.prop(cam, "show_title_safe", text="Title Safe")
|
||||
col.prop(cam, "show_name", text="Name")
|
||||
col.prop(cam, "show_limits", text=_("Limits"))
|
||||
col.prop(cam, "show_mist", text=_("Mist"))
|
||||
col.prop(cam, "show_title_safe", text=_("Title Safe"))
|
||||
col.prop(cam, "show_name", text=_("Name"))
|
||||
col.prop_menu_enum(cam, "show_guide")
|
||||
|
||||
col = split.column()
|
||||
col.prop(cam, "draw_size", text="Size")
|
||||
col.prop(cam, "draw_size", text=_("Size"))
|
||||
col.separator()
|
||||
col.prop(cam, "show_passepartout", text="Passepartout")
|
||||
col.prop(cam, "show_passepartout", text=_("Passepartout"))
|
||||
sub = col.column()
|
||||
sub.active = cam.show_passepartout
|
||||
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
|
||||
sub.prop(cam, "passepartout_alpha", text=_("Alpha"), slider=True)
|
||||
|
||||
|
||||
class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class CurveButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -67,7 +67,7 @@ class DATA_PT_context_curve(CurveButtonsPanel, Panel):
|
||||
|
||||
|
||||
class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
||||
bl_label = "Shape"
|
||||
bl_label = _("Shape")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -85,17 +85,17 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.label(text=_("Resolution:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(curve, "resolution_u", text="Preview U")
|
||||
sub.prop(curve, "render_resolution_u", text="Render U")
|
||||
sub.prop(curve, "resolution_u", text=_("Preview U"))
|
||||
sub.prop(curve, "render_resolution_u", text=_("Render U"))
|
||||
if is_curve:
|
||||
col.label(text="Twisting:")
|
||||
col.label(text=_("Twisting:"))
|
||||
col.prop(curve, "twist_mode", text="")
|
||||
col.prop(curve, "twist_smooth", text="Smooth")
|
||||
col.prop(curve, "twist_smooth", text=_("Smooth"))
|
||||
if is_text:
|
||||
col.label(text="Display:")
|
||||
col.prop(curve, "use_fast_edit", text="Fast Editing")
|
||||
col.label(text=_("Display:"))
|
||||
col.prop(curve, "use_fast_edit", text=_("Fast Editing"))
|
||||
|
||||
col = split.column()
|
||||
|
||||
@ -103,15 +103,15 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
|
||||
sub = col.column()
|
||||
sub.label(text="")
|
||||
sub = col.column(align=True)
|
||||
sub.prop(curve, "resolution_v", text="Preview V")
|
||||
sub.prop(curve, "render_resolution_v", text="Render V")
|
||||
sub.prop(curve, "resolution_v", text=_("Preview V"))
|
||||
sub.prop(curve, "render_resolution_v", text=_("Render V"))
|
||||
|
||||
if (is_curve or is_text):
|
||||
col.label(text="Fill:")
|
||||
col.label(text=_("Fill:"))
|
||||
sub = col.column()
|
||||
sub.active = (curve.dimensions == '2D' or (curve.bevel_object is None and curve.dimensions == '3D'))
|
||||
sub.prop(curve, "fill_mode", text="")
|
||||
col.prop(curve, "use_fill_deform", text="Fill Deformed")
|
||||
col.prop(curve, "use_fill_deform", text=_("Fill Deformed"))
|
||||
|
||||
|
||||
class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
|
||||
@ -129,8 +129,8 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
|
||||
row.prop(curve, "use_uv_as_generated")
|
||||
|
||||
row = layout.row()
|
||||
row.column().prop(curve, "texspace_location", text="Location")
|
||||
row.column().prop(curve, "texspace_size", text="Size")
|
||||
row.column().prop(curve, "texspace_location", text=_("Location"))
|
||||
row.column().prop(curve, "texspace_size", text=_("Size"))
|
||||
|
||||
|
||||
class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
|
||||
@ -152,17 +152,17 @@ class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Modification:")
|
||||
col.label(text=_("Modification:"))
|
||||
col.prop(curve, "offset")
|
||||
col.prop(curve, "extrude")
|
||||
col.label(text="Taper Object:")
|
||||
col.label(text=_("Taper Object:"))
|
||||
col.prop(curve, "taper_object", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Bevel:")
|
||||
col.prop(curve, "bevel_depth", text="Depth")
|
||||
col.prop(curve, "bevel_resolution", text="Resolution")
|
||||
col.label(text="Bevel Object:")
|
||||
col.label(text=_("Bevel:"))
|
||||
col.prop(curve, "bevel_depth", text=_("Depth"))
|
||||
col.prop(curve, "bevel_resolution", text=_("Resolution"))
|
||||
col.label(text=_("Bevel Object:"))
|
||||
col.prop(curve, "bevel_object", text="")
|
||||
|
||||
|
||||
@ -182,7 +182,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel):
|
||||
layout.active = curve.use_path
|
||||
|
||||
col = layout.column()
|
||||
layout.prop(curve, "path_duration", text="Frames")
|
||||
layout.prop(curve, "path_duration", text=_("Frames"))
|
||||
layout.prop(curve, "eval_time")
|
||||
|
||||
split = layout.split()
|
||||
@ -194,7 +194,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(curve, "use_radius")
|
||||
col.prop(curve, "use_time_offset", text="Offset Children")
|
||||
col.prop(curve, "use_time_offset", text=_("Offset Children"))
|
||||
|
||||
|
||||
class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
||||
@ -215,20 +215,20 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
||||
# These settings are below but its easier to have
|
||||
# poly's set aside since they use so few settings
|
||||
col = split.column()
|
||||
col.label(text="Cyclic:")
|
||||
col.label(text=_("Cyclic:"))
|
||||
col.prop(act_spline, "use_smooth")
|
||||
col = split.column()
|
||||
col.prop(act_spline, "use_cyclic_u", text="U")
|
||||
|
||||
else:
|
||||
col = split.column()
|
||||
col.label(text="Cyclic:")
|
||||
col.label(text=_("Cyclic:"))
|
||||
if act_spline.type == 'NURBS':
|
||||
col.label(text="Bezier:")
|
||||
col.label(text="Endpoint:")
|
||||
col.label(text="Order:")
|
||||
col.label(text=_("Bezier:"))
|
||||
col.label(text=_("Endpoint:"))
|
||||
col.label(text=_("Order:"))
|
||||
|
||||
col.label(text="Resolution:")
|
||||
col.label(text=_("Resolution:"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(act_spline, "use_cyclic_u", text="U")
|
||||
@ -261,9 +261,9 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
||||
col = split.column()
|
||||
col.active = (curve.dimensions == '3D')
|
||||
|
||||
col.label(text="Interpolation:")
|
||||
col.prop(act_spline, "tilt_interpolation", text="Tilt")
|
||||
col.prop(act_spline, "radius_interpolation", text="Radius")
|
||||
col.label(text=_("Interpolation:"))
|
||||
col.prop(act_spline, "tilt_interpolation", text=_("Tilt"))
|
||||
col.prop(act_spline, "radius_interpolation", text=_("Radius"))
|
||||
|
||||
layout.prop(act_spline, "use_smooth")
|
||||
|
||||
@ -282,16 +282,16 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
|
||||
char = context.curve.edit_format
|
||||
|
||||
row = layout.split(percentage=0.25)
|
||||
row.label(text="Regular")
|
||||
row.label(text=_("Regular"))
|
||||
row.template_ID(text, "font", open="font.open", unlink="font.unlink")
|
||||
row = layout.split(percentage=0.25)
|
||||
row.label(text="Bold")
|
||||
row.label(text=_("Bold"))
|
||||
row.template_ID(text, "font_bold", open="font.open", unlink="font.unlink")
|
||||
row = layout.split(percentage=0.25)
|
||||
row.label(text="Italic")
|
||||
row.label(text=_("Italic"))
|
||||
row.template_ID(text, "font_italic", open="font.open", unlink="font.unlink")
|
||||
row = layout.split(percentage=0.25)
|
||||
row.label(text="Bold & Italic")
|
||||
row.label(text=_("Bold & Italic"))
|
||||
row.template_ID(text, "font_bold_italic", open="font.open", unlink="font.unlink")
|
||||
|
||||
#layout.prop(text, "font")
|
||||
@ -299,36 +299,36 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(text, "size", text="Size")
|
||||
col.prop(text, "size", text=_("Size"))
|
||||
col = split.column()
|
||||
col.prop(text, "shear")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object Font:")
|
||||
col.label(text=_("Object Font:"))
|
||||
col.prop(text, "family", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Text on Curve:")
|
||||
col.label(text=_("Text on Curve:"))
|
||||
col.prop(text, "follow_curve", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
colsub = col.column(align=True)
|
||||
colsub.label(text="Underline:")
|
||||
colsub.prop(text, "underline_position", text="Position")
|
||||
colsub.prop(text, "underline_height", text="Thickness")
|
||||
colsub.label(text=_("Underline:"))
|
||||
colsub.prop(text, "underline_position", text=_("Position"))
|
||||
colsub.prop(text, "underline_height", text=_("Thickness"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Character:")
|
||||
col.label(text=_("Character:"))
|
||||
col.prop(char, "use_bold")
|
||||
col.prop(char, "use_italic")
|
||||
col.prop(char, "use_underline")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(text, "small_caps_scale", text="Small Caps")
|
||||
row.prop(text, "small_caps_scale", text=_("Small Caps"))
|
||||
row.prop(char, "use_small_caps")
|
||||
|
||||
|
||||
@ -344,19 +344,19 @@ class DATA_PT_paragraph(CurveButtonsPanel, Panel):
|
||||
|
||||
text = context.curve
|
||||
|
||||
layout.label(text="Align:")
|
||||
layout.label(text=_("Align:"))
|
||||
layout.prop(text, "align", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Spacing:")
|
||||
col.prop(text, "space_character", text="Character")
|
||||
col.prop(text, "space_word", text="Word")
|
||||
col.prop(text, "space_line", text="Line")
|
||||
col.label(text=_("Spacing:"))
|
||||
col.prop(text, "space_character", text=_("Character"))
|
||||
col.prop(text, "space_word", text=_("Word"))
|
||||
col.prop(text, "space_line", text=_("Line"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Offset:")
|
||||
col.label(text=_("Offset:"))
|
||||
col.prop(text, "offset_x", text="X")
|
||||
col.prop(text, "offset_y", text="Y")
|
||||
|
||||
@ -388,13 +388,13 @@ class DATA_PT_text_boxes(CurveButtonsPanel, Panel):
|
||||
|
||||
col = split.column(align=True)
|
||||
|
||||
col.label(text="Dimensions:")
|
||||
col.prop(box, "width", text="Width")
|
||||
col.prop(box, "height", text="Height")
|
||||
col.label(text=_("Dimensions:"))
|
||||
col.prop(box, "width", text=_("Width"))
|
||||
col.prop(box, "height", text=_("Height"))
|
||||
|
||||
col = split.column(align=True)
|
||||
|
||||
col.label(text="Offset:")
|
||||
col.label(text=_("Offset:"))
|
||||
col.prop(box, "x", text="X")
|
||||
col.prop(box, "y", text="Y")
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class DataButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -39,17 +39,17 @@ class DATA_PT_empty(DataButtonsPanel, Panel):
|
||||
|
||||
ob = context.object
|
||||
|
||||
layout.prop(ob, "empty_draw_type", text="Display")
|
||||
layout.prop(ob, "empty_draw_type", text=_("Display"))
|
||||
|
||||
if ob.empty_draw_type == 'IMAGE':
|
||||
layout.template_ID(ob, "data", open="image.open", unlink="image.unlink")
|
||||
|
||||
layout.prop(ob, "color", text="Transparency", index=3, slider=True)
|
||||
layout.prop(ob, "color", text=_("Transparency"), index=3, slider=True)
|
||||
row = layout.row(align=True)
|
||||
row.prop(ob, "empty_image_offset", text="Offset X", index=0)
|
||||
row.prop(ob, "empty_image_offset", text="Offset Y", index=1)
|
||||
row.prop(ob, "empty_image_offset", text=_("Offset X"), index=0)
|
||||
row.prop(ob, "empty_image_offset", text=_("Offset Y"), index=1)
|
||||
|
||||
layout.prop(ob, "empty_draw_size", text="Size")
|
||||
layout.prop(ob, "empty_draw_size", text=_("Size"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -20,10 +20,10 @@
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class LAMP_MT_sunsky_presets(Menu):
|
||||
bl_label = "Sun & Sky Presets"
|
||||
bl_label = _("Sun & Sky Presets")
|
||||
preset_subdir = "sunsky"
|
||||
preset_operator = "script.execute_preset"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
|
||||
@ -93,15 +93,15 @@ class DATA_PT_lamp(DataButtonsPanel, Panel):
|
||||
sub.prop(lamp, "energy")
|
||||
|
||||
if lamp.type in {'POINT', 'SPOT'}:
|
||||
sub.label(text="Falloff:")
|
||||
sub.label(text=_("Falloff:"))
|
||||
sub.prop(lamp, "falloff_type", text="")
|
||||
sub.prop(lamp, "distance")
|
||||
|
||||
if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED':
|
||||
col.label(text="Attenuation Factors:")
|
||||
col.label(text=_("Attenuation Factors:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(lamp, "linear_attenuation", slider=True, text="Linear")
|
||||
sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
|
||||
sub.prop(lamp, "linear_attenuation", slider=True, text=_("Linear"))
|
||||
sub.prop(lamp, "quadratic_attenuation", slider=True, text=_("Quadratic"))
|
||||
|
||||
col.prop(lamp, "use_sphere")
|
||||
|
||||
@ -111,7 +111,7 @@ class DATA_PT_lamp(DataButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(lamp, "use_negative")
|
||||
col.prop(lamp, "use_own_layer", text="This Layer Only")
|
||||
col.prop(lamp, "use_own_layer", text=_("This Layer Only"))
|
||||
col.prop(lamp, "use_specular")
|
||||
col.prop(lamp, "use_diffuse")
|
||||
|
||||
@ -139,34 +139,34 @@ class DATA_PT_sunsky(DataButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
row.active = lamp.use_sky or lamp.use_atmosphere
|
||||
row.prop(lamp, "atmosphere_turbidity", text="Turbidity")
|
||||
row.prop(lamp, "atmosphere_turbidity", text=_("Turbidity"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.use_sky
|
||||
col.label(text="Blending:")
|
||||
col.label(text=_("Blending:"))
|
||||
sub = col.column()
|
||||
sub.prop(lamp, "sky_blend_type", text="")
|
||||
sub.prop(lamp, "sky_blend", text="Factor")
|
||||
sub.prop(lamp, "sky_blend", text=_("Factor"))
|
||||
|
||||
col.label(text="Color Space:")
|
||||
col.label(text=_("Color Space:"))
|
||||
sub = col.column()
|
||||
sub.row().prop(lamp, "sky_color_space", expand=True)
|
||||
sub.prop(lamp, "sky_exposure", text="Exposure")
|
||||
sub.prop(lamp, "sky_exposure", text=_("Exposure"))
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.use_sky
|
||||
col.label(text="Horizon:")
|
||||
col.label(text=_("Horizon:"))
|
||||
sub = col.column()
|
||||
sub.prop(lamp, "horizon_brightness", text="Brightness")
|
||||
sub.prop(lamp, "spread", text="Spread")
|
||||
sub.prop(lamp, "horizon_brightness", text=_("Brightness"))
|
||||
sub.prop(lamp, "spread", text=_("Spread"))
|
||||
|
||||
col.label(text="Sun:")
|
||||
col.label(text=_("Sun:"))
|
||||
sub = col.column()
|
||||
sub.prop(lamp, "sun_brightness", text="Brightness")
|
||||
sub.prop(lamp, "sun_size", text="Size")
|
||||
sub.prop(lamp, "backscattered_light", slider=True, text="Back Light")
|
||||
sub.prop(lamp, "sun_brightness", text=_("Brightness"))
|
||||
sub.prop(lamp, "sun_size", text=_("Size"))
|
||||
sub.prop(lamp, "backscattered_light", slider=True, text=_("Back Light"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -176,16 +176,16 @@ class DATA_PT_sunsky(DataButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.use_atmosphere
|
||||
col.label(text="Intensity:")
|
||||
col.prop(lamp, "sun_intensity", text="Sun")
|
||||
col.prop(lamp, "atmosphere_distance_factor", text="Distance")
|
||||
col.label(text=_("Intensity:"))
|
||||
col.prop(lamp, "sun_intensity", text=_("Sun"))
|
||||
col.prop(lamp, "atmosphere_distance_factor", text=_("Distance"))
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.use_atmosphere
|
||||
col.label(text="Scattering:")
|
||||
col.label(text=_("Scattering:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
|
||||
sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
|
||||
sub.prop(lamp, "atmosphere_inscattering", slider=True, text=_("Inscattering"))
|
||||
sub.prop(lamp, "atmosphere_extinction", slider=True, text=_("Extinction"))
|
||||
|
||||
|
||||
class DATA_PT_shadow(DataButtonsPanel, Panel):
|
||||
@ -209,15 +209,15 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Form factor sampling:")
|
||||
col.label(text=_("Form factor sampling:"))
|
||||
|
||||
sub = col.row(align=True)
|
||||
|
||||
if lamp.shape == 'SQUARE':
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples"))
|
||||
elif lamp.shape == 'RECTANGLE':
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
|
||||
sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples X"))
|
||||
sub.prop(lamp, "shadow_ray_samples_y", text=_("Samples Y"))
|
||||
|
||||
if lamp.shadow_method != 'NOSHADOW':
|
||||
split = layout.split()
|
||||
@ -226,34 +226,34 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
|
||||
col.prop(lamp, "shadow_color", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(lamp, "use_shadow_layer", text="This Layer Only")
|
||||
col.prop(lamp, "use_shadow_layer", text=_("This Layer Only"))
|
||||
col.prop(lamp, "use_only_shadow")
|
||||
|
||||
if lamp.shadow_method == 'RAY_SHADOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Sampling:")
|
||||
col.label(text=_("Sampling:"))
|
||||
|
||||
if lamp.type in {'POINT', 'SUN', 'SPOT'}:
|
||||
sub = col.row()
|
||||
|
||||
sub.prop(lamp, "shadow_ray_samples", text="Samples")
|
||||
sub.prop(lamp, "shadow_soft_size", text="Soft Size")
|
||||
sub.prop(lamp, "shadow_ray_samples", text=_("Samples"))
|
||||
sub.prop(lamp, "shadow_soft_size", text=_("Soft Size"))
|
||||
|
||||
elif lamp.type == 'AREA':
|
||||
sub = col.row(align=True)
|
||||
|
||||
if lamp.shape == 'SQUARE':
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples"))
|
||||
elif lamp.shape == 'RECTANGLE':
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
|
||||
sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
|
||||
sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples X"))
|
||||
sub.prop(lamp, "shadow_ray_samples_y", text=_("Samples Y"))
|
||||
|
||||
col.row().prop(lamp, "shadow_ray_sample_method", expand=True)
|
||||
|
||||
if lamp.shadow_ray_sample_method == 'ADAPTIVE_QMC':
|
||||
layout.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
|
||||
layout.prop(lamp, "shadow_adaptive_threshold", text=_("Threshold"))
|
||||
|
||||
if lamp.type == 'AREA' and lamp.shadow_ray_sample_method == 'CONSTANT_JITTERED':
|
||||
row = layout.row()
|
||||
@ -263,44 +263,44 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
|
||||
|
||||
elif lamp.shadow_method == 'BUFFER_SHADOW':
|
||||
col = layout.column()
|
||||
col.label(text="Buffer Type:")
|
||||
col.label(text=_("Buffer Type:"))
|
||||
col.row().prop(lamp, "shadow_buffer_type", expand=True)
|
||||
|
||||
if lamp.shadow_buffer_type in {'REGULAR', 'HALFWAY', 'DEEP'}:
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Filter Type:")
|
||||
col.label(text=_("Filter Type:"))
|
||||
col.prop(lamp, "shadow_filter_type", text="")
|
||||
sub = col.column(align=True)
|
||||
sub.prop(lamp, "shadow_buffer_soft", text="Soft")
|
||||
sub.prop(lamp, "shadow_buffer_bias", text="Bias")
|
||||
sub.prop(lamp, "shadow_buffer_soft", text=_("Soft"))
|
||||
sub.prop(lamp, "shadow_buffer_bias", text=_("Bias"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Sample Buffers:")
|
||||
col.label(text=_("Sample Buffers:"))
|
||||
col.prop(lamp, "shadow_sample_buffers", text="")
|
||||
sub = col.column(align=True)
|
||||
sub.prop(lamp, "shadow_buffer_size", text="Size")
|
||||
sub.prop(lamp, "shadow_buffer_samples", text="Samples")
|
||||
sub.prop(lamp, "shadow_buffer_size", text=_("Size"))
|
||||
sub.prop(lamp, "shadow_buffer_samples", text=_("Samples"))
|
||||
if lamp.shadow_buffer_type == 'DEEP':
|
||||
col.prop(lamp, "compression_threshold")
|
||||
|
||||
elif lamp.shadow_buffer_type == 'IRREGULAR':
|
||||
layout.prop(lamp, "shadow_buffer_bias", text="Bias")
|
||||
layout.prop(lamp, "shadow_buffer_bias", text=_("Bias"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(lamp, "use_auto_clip_start", text="Autoclip Start")
|
||||
col.prop(lamp, "use_auto_clip_start", text=_("Autoclip Start"))
|
||||
sub = col.column()
|
||||
sub.active = not lamp.use_auto_clip_start
|
||||
sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
|
||||
sub.prop(lamp, "shadow_buffer_clip_start", text=_("Clip Start"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(lamp, "use_auto_clip_end", text="Autoclip End")
|
||||
col.prop(lamp, "use_auto_clip_end", text=_("Autoclip End"))
|
||||
sub = col.column()
|
||||
sub.active = not lamp.use_auto_clip_end
|
||||
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
|
||||
sub.prop(lamp, "shadow_buffer_clip_end", text=_(" Clip End"))
|
||||
|
||||
|
||||
class DATA_PT_area(DataButtonsPanel, Panel):
|
||||
@ -325,8 +325,8 @@ class DATA_PT_area(DataButtonsPanel, Panel):
|
||||
if (lamp.shape == 'SQUARE'):
|
||||
sub.prop(lamp, "size")
|
||||
elif (lamp.shape == 'RECTANGLE'):
|
||||
sub.prop(lamp, "size", text="Size X")
|
||||
sub.prop(lamp, "size_y", text="Size Y")
|
||||
sub.prop(lamp, "size", text=_("Size X"))
|
||||
sub.prop(lamp, "size_y", text=_("Size Y"))
|
||||
|
||||
|
||||
class DATA_PT_spot(DataButtonsPanel, Panel):
|
||||
@ -348,8 +348,8 @@ class DATA_PT_spot(DataButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.prop(lamp, "spot_size", text="Size")
|
||||
sub.prop(lamp, "spot_blend", text="Blend", slider=True)
|
||||
sub.prop(lamp, "spot_size", text=_("Size"))
|
||||
sub.prop(lamp, "spot_blend", text=_("Blend"), slider=True)
|
||||
col.prop(lamp, "use_square")
|
||||
col.prop(lamp, "show_cone")
|
||||
|
||||
@ -358,9 +358,9 @@ class DATA_PT_spot(DataButtonsPanel, Panel):
|
||||
col.prop(lamp, "use_halo")
|
||||
sub = col.column(align=True)
|
||||
sub.active = lamp.use_halo
|
||||
sub.prop(lamp, "halo_intensity", text="Intensity")
|
||||
sub.prop(lamp, "halo_intensity", text=_("Intensity"))
|
||||
if lamp.shadow_method == 'BUFFER_SHADOW':
|
||||
sub.prop(lamp, "halo_step", text="Step")
|
||||
sub.prop(lamp, "halo_step", text=_("Step"))
|
||||
|
||||
|
||||
class DATA_PT_falloff_curve(DataButtonsPanel, Panel):
|
||||
|
@ -20,10 +20,10 @@
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class MESH_MT_vertex_group_specials(Menu):
|
||||
bl_label = "Vertex Group Specials"
|
||||
bl_label = _("Vertex Group Specials")
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
|
||||
|
||||
def draw(self, context):
|
||||
@ -34,7 +34,7 @@ class MESH_MT_vertex_group_specials(Menu):
|
||||
layout.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA')
|
||||
layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA')
|
||||
layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT')
|
||||
layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True
|
||||
layout.operator("object.vertex_group_remove", icon='X', text=_("Delete All")).all = True
|
||||
layout.separator()
|
||||
layout.operator("object.vertex_group_lock", icon='LOCK', text="Lock All").action = 'SELECT'
|
||||
layout.operator("object.vertex_group_lock", icon='UNLOCK', text="UnLock All").action = 'DESELECT'
|
||||
@ -51,7 +51,7 @@ class MESH_MT_shape_key_specials(Menu):
|
||||
layout.operator("object.shape_key_transfer", icon='COPY_ID') # icon is not ideal
|
||||
layout.operator("object.join_shapes", icon='COPY_ID') # icon is not ideal
|
||||
layout.operator("object.shape_key_mirror", icon='ARROW_LEFTRIGHT')
|
||||
op = layout.operator("object.shape_key_add", icon='ZOOMIN', text="New Shape From Mix")
|
||||
op = layout.operator("object.shape_key_add", icon='ZOOMIN', text=_("New Shape From Mix"))
|
||||
op.from_mix = True
|
||||
|
||||
|
||||
@ -99,7 +99,7 @@ class DATA_PT_normals(MeshButtonsPanel, Panel):
|
||||
col.prop(mesh, "use_auto_smooth")
|
||||
sub = col.column()
|
||||
sub.active = mesh.use_auto_smooth
|
||||
sub.prop(mesh, "auto_smooth_angle", text="Angle")
|
||||
sub.prop(mesh, "auto_smooth_angle", text=_("Angle"))
|
||||
|
||||
split.prop(mesh, "show_double_sided")
|
||||
|
||||
@ -120,8 +120,8 @@ class DATA_PT_texture_space(MeshButtonsPanel, Panel):
|
||||
|
||||
layout.prop(mesh, "use_auto_texspace")
|
||||
row = layout.row()
|
||||
row.column().prop(mesh, "texspace_location", text="Location")
|
||||
row.column().prop(mesh, "texspace_size", text="Size")
|
||||
row.column().prop(mesh, "texspace_location", text=_("Location"))
|
||||
row.column().prop(mesh, "texspace_size", text=_("Size"))
|
||||
|
||||
|
||||
class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
|
||||
@ -163,14 +163,14 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
|
||||
row = layout.row()
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.operator("object.vertex_group_assign", text="Assign")
|
||||
sub.operator("object.vertex_group_remove_from", text="Remove")
|
||||
sub.operator("object.vertex_group_assign", text=_("Assign"))
|
||||
sub.operator("object.vertex_group_remove_from", text=_("Remove"))
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.operator("object.vertex_group_select", text="Select")
|
||||
sub.operator("object.vertex_group_deselect", text="Deselect")
|
||||
sub.operator("object.vertex_group_select", text=_("Select"))
|
||||
sub.operator("object.vertex_group_deselect", text=_("Deselect"))
|
||||
|
||||
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
|
||||
layout.prop(context.tool_settings, "vertex_group_weight", text=_("Weight"))
|
||||
|
||||
|
||||
class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
|
||||
@ -250,13 +250,13 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
|
||||
|
||||
col = split.column(align=True)
|
||||
col.active = enable_edit_value
|
||||
col.label(text="Range:")
|
||||
col.prop(kb, "slider_min", text="Min")
|
||||
col.prop(kb, "slider_max", text="Max")
|
||||
col.label(text=_("Range:"))
|
||||
col.prop(kb, "slider_min", text=_("Min"))
|
||||
col.prop(kb, "slider_max", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.active = enable_edit_value
|
||||
col.label(text="Blend:")
|
||||
col.label(text=_("Blend:"))
|
||||
col.prop_search(kb, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop_search(kb, "relative_key", key, "key_blocks", text="")
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class DataButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -60,16 +60,16 @@ class DATA_PT_metaball(DataButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.label(text=_("Resolution:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(mball, "resolution", text="View")
|
||||
sub.prop(mball, "render_resolution", text="Render")
|
||||
sub.prop(mball, "resolution", text=_("View"))
|
||||
sub.prop(mball, "render_resolution", text=_("Render"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Settings:")
|
||||
col.prop(mball, "threshold", text="Threshold")
|
||||
col.label(text=_("Settings:"))
|
||||
col.prop(mball, "threshold", text=_("Threshold"))
|
||||
|
||||
layout.label(text="Update:")
|
||||
layout.label(text=_("Update:"))
|
||||
layout.prop(mball, "update_method", expand=True)
|
||||
|
||||
|
||||
@ -86,8 +86,8 @@ class DATA_PT_mball_texture_space(DataButtonsPanel, Panel):
|
||||
layout.prop(mball, "use_auto_texspace")
|
||||
|
||||
row = layout.row()
|
||||
row.column().prop(mball, "texspace_location", text="Location")
|
||||
row.column().prop(mball, "texspace_size", text="Size")
|
||||
row.column().prop(mball, "texspace_location", text=_("Location"))
|
||||
row.column().prop(mball, "texspace_size", text=_("Size"))
|
||||
|
||||
|
||||
class DATA_PT_metaball_element(DataButtonsPanel, Panel):
|
||||
@ -107,25 +107,25 @@ class DATA_PT_metaball_element(DataButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Settings:")
|
||||
col.prop(metaelem, "stiffness", text="Stiffness")
|
||||
col.prop(metaelem, "use_negative", text="Negative")
|
||||
col.prop(metaelem, "hide", text="Hide")
|
||||
col.label(text=_("Settings:"))
|
||||
col.prop(metaelem, "stiffness", text=_("Stiffness"))
|
||||
col.prop(metaelem, "use_negative", text=_("Negative"))
|
||||
col.prop(metaelem, "hide", text=_("Hide"))
|
||||
|
||||
col = split.column(align=True)
|
||||
|
||||
if metaelem.type in {'CUBE', 'ELLIPSOID'}:
|
||||
col.label(text="Size:")
|
||||
col.label(text=_("Size:"))
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
col.prop(metaelem, "size_y", text="Y")
|
||||
col.prop(metaelem, "size_z", text="Z")
|
||||
|
||||
elif metaelem.type == 'TUBE':
|
||||
col.label(text="Size:")
|
||||
col.label(text=_("Size:"))
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
|
||||
elif metaelem.type == 'PLANE':
|
||||
col.label(text="Size:")
|
||||
col.label(text=_("Size:"))
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
col.prop(metaelem, "size_y", text="Y")
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class ModifierButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -51,14 +51,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
col.prop(md, "use_deform_preserve_volume")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Bind To:")
|
||||
col.prop(md, "use_vertex_groups", text="Vertex Groups")
|
||||
col.prop(md, "use_bone_envelopes", text="Bone Envelopes")
|
||||
col.label(text=_("Bind To:"))
|
||||
col.prop(md, "use_vertex_groups", text=_("Vertex Groups"))
|
||||
col.prop(md, "use_bone_envelopes", text=_("Bone Envelopes"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -92,11 +92,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
|
||||
col.separator()
|
||||
|
||||
col.prop(md, "use_merge_vertices", text="Merge")
|
||||
col.prop(md, "use_merge_vertices", text=_("Merge"))
|
||||
sub = col.column()
|
||||
sub.active = md.use_merge_vertices
|
||||
sub.prop(md, "use_merge_vertices_cap", text="First Last")
|
||||
sub.prop(md, "merge_threshold", text="Distance")
|
||||
sub.prop(md, "use_merge_vertices_cap", text=_("First Last"))
|
||||
sub.prop(md, "merge_threshold", text=_("Distance"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(md, "use_relative_offset")
|
||||
@ -122,7 +122,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split.prop(md, "width")
|
||||
split.prop(md, "use_only_vertices")
|
||||
|
||||
layout.label(text="Limit Method:")
|
||||
layout.label(text=_("Limit Method:"))
|
||||
layout.row().prop(md, "limit_method", expand=True)
|
||||
if md.limit_method == 'ANGLE':
|
||||
layout.prop(md, "angle_limit")
|
||||
@ -133,11 +133,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Operation:")
|
||||
col.label(text=_("Operation:"))
|
||||
col.prop(md, "operation", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
|
||||
def BUILD(self, layout, ob, md):
|
||||
@ -156,7 +156,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
def CAST(self, layout, ob, md):
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
split.label(text="Cast Type:")
|
||||
split.label(text=_("Cast Type:"))
|
||||
split.prop(md, "cast_type", text="")
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
@ -175,52 +175,52 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col = split.column()
|
||||
col.label(text="Control Object:")
|
||||
col.label(text=_("Control Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
if md.object:
|
||||
col.prop(md, "use_transform")
|
||||
|
||||
def CLOTH(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def COLLISION(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def CURVE(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
layout.label(text="Deformation Axis:")
|
||||
layout.label(text=_("Deformation Axis:"))
|
||||
layout.row().prop(md, "deform_axis", expand=True)
|
||||
|
||||
def DECIMATE(self, layout, ob, md):
|
||||
layout.prop(md, "ratio")
|
||||
layout.label(text="Face Count: %s" % str(md.face_count))
|
||||
layout.label(text=_("Face Count")+": %s" % str(md.face_count))
|
||||
|
||||
def DISPLACE(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Texture:")
|
||||
col.label(text=_("Texture:"))
|
||||
col.template_ID(md, "texture", new="texture.new")
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Direction:")
|
||||
col.label(text=_("Direction:"))
|
||||
col.prop(md, "direction", text="")
|
||||
col.label(text="Texture Coordinates:")
|
||||
col.label(text=_("Texture Coordinates:"))
|
||||
col.prop(md, "texture_coords", text="")
|
||||
if md.texture_coords == 'OBJECT':
|
||||
layout.prop(md, "texture_coords_object", text="Object")
|
||||
layout.prop(md, "texture_coords_object", text=_("Object"))
|
||||
elif md.texture_coords == 'UV' and ob.type == 'MESH':
|
||||
layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
|
||||
|
||||
@ -234,23 +234,23 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(md, "use_edge_angle", text="Edge Angle")
|
||||
col.prop(md, "use_edge_angle", text=_("Edge Angle"))
|
||||
sub = col.column()
|
||||
sub.active = md.use_edge_angle
|
||||
sub.prop(md, "split_angle")
|
||||
|
||||
split.prop(md, "use_edge_sharp", text="Sharp Edges")
|
||||
split.prop(md, "use_edge_sharp", text=_("Sharp Edges"))
|
||||
|
||||
def EXPLODE(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Vertex group:")
|
||||
col.label(text=_("Vertex group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
sub = col.column()
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "protect")
|
||||
col.label(text="Particle UV")
|
||||
col.label(text=_("Particle UV"))
|
||||
col.prop_search(md, "particle_uv", ob.data, "uv_textures", text="")
|
||||
|
||||
col = split.column()
|
||||
@ -260,22 +260,22 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.prop(md, "show_dead")
|
||||
col.prop(md, "use_size")
|
||||
|
||||
layout.operator("object.explode_refresh", text="Refresh")
|
||||
layout.operator("object.explode_refresh", text=_("Refresh"))
|
||||
|
||||
def FLUID_SIMULATION(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def HOOK(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
if md.object and md.object.type == 'ARMATURE':
|
||||
col.label(text="Bone:")
|
||||
col.label(text=_("Bone:"))
|
||||
col.prop_search(md, "subtarget", md.object.data, "bones", text="")
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
layout.separator()
|
||||
@ -287,38 +287,38 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.prop(md, "force", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.operator("object.hook_reset", text="Reset")
|
||||
col.operator("object.hook_recenter", text="Recenter")
|
||||
col.operator("object.hook_reset", text=_("Reset"))
|
||||
col.operator("object.hook_recenter", text=_("Recenter"))
|
||||
|
||||
if ob.mode == 'EDIT':
|
||||
layout.separator()
|
||||
row = layout.row()
|
||||
row.operator("object.hook_select", text="Select")
|
||||
row.operator("object.hook_assign", text="Assign")
|
||||
row.operator("object.hook_select", text=_("Select"))
|
||||
row.operator("object.hook_assign", text=_("Assign"))
|
||||
|
||||
def LATTICE(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(md, "object", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
def MASK(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Mode:")
|
||||
col.label(text=_("Mode:"))
|
||||
col.prop(md, "mode", text="")
|
||||
col = split.column()
|
||||
if md.mode == 'ARMATURE':
|
||||
col.label(text="Armature:")
|
||||
col.label(text=_("Armature:"))
|
||||
col.prop(md, "armature", text="")
|
||||
elif md.mode == 'VERTEX_GROUP':
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
sub = col.column()
|
||||
@ -330,11 +330,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.label(text="Object:")
|
||||
sub.label(text=_("Object:"))
|
||||
sub.prop(md, "object", text="")
|
||||
sub.active = not md.is_bound
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
sub = col.column()
|
||||
@ -344,9 +344,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
layout.separator()
|
||||
|
||||
if md.is_bound:
|
||||
layout.operator("object.meshdeform_bind", text="Unbind")
|
||||
layout.operator("object.meshdeform_bind", text=_("Unbind"))
|
||||
else:
|
||||
layout.operator("object.meshdeform_bind", text="Bind")
|
||||
layout.operator("object.meshdeform_bind", text=_("Bind"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(md, "precision")
|
||||
@ -356,19 +356,19 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Axis:")
|
||||
col.label(text=_("Axis:"))
|
||||
col.prop(md, "use_x")
|
||||
col.prop(md, "use_y")
|
||||
col.prop(md, "use_z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Options:")
|
||||
col.prop(md, "use_mirror_merge", text="Merge")
|
||||
col.prop(md, "use_clip", text="Clipping")
|
||||
col.prop(md, "use_mirror_vertex_groups", text="Vertex Groups")
|
||||
col.label(text=_("Options:"))
|
||||
col.prop(md, "use_mirror_merge", text=_("Merge"))
|
||||
col.prop(md, "use_clip", text=_("Clipping"))
|
||||
col.prop(md, "use_mirror_vertex_groups", text=_("Vertex Groups"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Textures:")
|
||||
col.label(text=_("Textures:"))
|
||||
col.prop(md, "use_mirror_u", text="U")
|
||||
col.prop(md, "use_mirror_v", text="V")
|
||||
|
||||
@ -376,7 +376,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
|
||||
if md.use_mirror_merge == True:
|
||||
col.prop(md, "merge_threshold")
|
||||
col.label(text="Mirror Object:")
|
||||
col.label(text=_("Mirror Object:"))
|
||||
col.prop(md, "mirror_object", text="")
|
||||
|
||||
def NAVMESH(self, layout, ob, md):
|
||||
@ -388,17 +388,17 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(md, "levels", text="Preview")
|
||||
col.prop(md, "sculpt_levels", text="Sculpt")
|
||||
col.prop(md, "render_levels", text="Render")
|
||||
col.prop(md, "levels", text=_("Preview"))
|
||||
col.prop(md, "sculpt_levels", text=_("Sculpt"))
|
||||
col.prop(md, "render_levels", text=_("Render"))
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.enabled = ob.mode != 'EDIT'
|
||||
col.operator("object.multires_subdivide", text="Subdivide")
|
||||
col.operator("object.multires_higher_levels_delete", text="Delete Higher")
|
||||
col.operator("object.multires_reshape", text="Reshape")
|
||||
col.operator("object.multires_base_apply", text="Apply Base")
|
||||
col.operator("object.multires_subdivide", text=_("Subdivide"))
|
||||
col.operator("object.multires_higher_levels_delete", text=_("Delete Higher"))
|
||||
col.operator("object.multires_reshape", text=_("Reshape"))
|
||||
col.operator("object.multires_base_apply", text=_("Apply Base"))
|
||||
col.prop(md, "use_subsurf_uv")
|
||||
col.prop(md, "show_only_control_edges")
|
||||
|
||||
@ -407,34 +407,34 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col = layout.column()
|
||||
row = col.row()
|
||||
if md.is_external:
|
||||
row.operator("object.multires_external_pack", text="Pack External")
|
||||
row.operator("object.multires_external_pack", text=_("Pack External"))
|
||||
row.label()
|
||||
row = col.row()
|
||||
row.prop(md, "filepath", text="")
|
||||
else:
|
||||
row.operator("object.multires_external_save", text="Save External...")
|
||||
row.operator("object.multires_external_save", text=_("Save External..."))
|
||||
row.label()
|
||||
|
||||
def PARTICLE_INSTANCE(self, layout, ob, md):
|
||||
layout.prop(md, "object")
|
||||
layout.prop(md, "particle_system_index", text="Particle System")
|
||||
layout.prop(md, "particle_system_index", text=_("Particle System"))
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Create From:")
|
||||
col.label(text=_("Create From:"))
|
||||
col.prop(md, "use_normal")
|
||||
col.prop(md, "use_children")
|
||||
col.prop(md, "use_size")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Show Particles When:")
|
||||
col.label(text=_("Show Particles When:"))
|
||||
col.prop(md, "show_alive")
|
||||
col.prop(md, "show_unborn")
|
||||
col.prop(md, "show_dead")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.prop(md, "use_path", text="Create Along Paths")
|
||||
layout.prop(md, "use_path", text=_("Create Along Paths"))
|
||||
|
||||
split = layout.split()
|
||||
split.active = md.use_path
|
||||
@ -444,17 +444,17 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(md, "position", slider=True)
|
||||
col.prop(md, "random_position", text="Random", slider=True)
|
||||
col.prop(md, "random_position", text=_("Random"), slider=True)
|
||||
|
||||
def PARTICLE_SYSTEM(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Particle context")
|
||||
layout.label(text=_("Settings can be found inside the Particle context"))
|
||||
|
||||
def SCREW(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(md, "axis")
|
||||
col.prop(md, "object", text="AxisOb")
|
||||
col.prop(md, "object", text=_("AxisOb"))
|
||||
col.prop(md, "angle")
|
||||
col.prop(md, "steps")
|
||||
col.prop(md, "render_steps")
|
||||
@ -473,10 +473,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
def SHRINKWRAP(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Target:")
|
||||
col.label(text=_("Target:"))
|
||||
col.prop(md, "target", text="")
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
split = layout.split()
|
||||
@ -486,28 +486,28 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.prop(md, "subsurf_levels")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Mode:")
|
||||
col.label(text=_("Mode:"))
|
||||
col.prop(md, "wrap_method", text="")
|
||||
|
||||
if md.wrap_method == 'PROJECT':
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Axis:")
|
||||
col.label(text=_("Axis:"))
|
||||
col.prop(md, "use_project_x")
|
||||
col.prop(md, "use_project_y")
|
||||
col.prop(md, "use_project_z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Direction:")
|
||||
col.label(text=_("Direction:"))
|
||||
col.prop(md, "use_negative_direction")
|
||||
col.prop(md, "use_positive_direction")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Cull Faces:")
|
||||
col.label(text=_("Cull Faces:"))
|
||||
col.prop(md, "cull_face", expand=True)
|
||||
|
||||
layout.label(text="Auxiliary Target:")
|
||||
layout.label(text=_("Auxiliary Target:"))
|
||||
layout.prop(md, "auxiliary_target", text="")
|
||||
|
||||
elif md.wrap_method == 'NEAREST_SURFACEPOINT':
|
||||
@ -517,24 +517,24 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Mode:")
|
||||
col.label(text=_("Mode:"))
|
||||
col.prop(md, "deform_method", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Origin:")
|
||||
col.label(text=_("Origin:"))
|
||||
col.prop(md, "origin", text="")
|
||||
sub = col.column()
|
||||
sub.active = (md.origin is not None)
|
||||
sub.prop(md, "use_relative")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Deform:")
|
||||
col.label(text=_("Deform:"))
|
||||
col.prop(md, "factor")
|
||||
col.prop(md, "limits", slider=True)
|
||||
if md.deform_method in {'TAPER', 'STRETCH'}:
|
||||
@ -542,13 +542,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.prop(md, "lock_y")
|
||||
|
||||
def SMOKE(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def SMOOTH(self, layout, ob, md):
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Axis:")
|
||||
col.label(text=_("Axis:"))
|
||||
col.prop(md, "use_x")
|
||||
col.prop(md, "use_y")
|
||||
col.prop(md, "use_z")
|
||||
@ -556,11 +556,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
col.prop(md, "factor")
|
||||
col.prop(md, "iterations")
|
||||
col.label(text="Vertex Group:")
|
||||
col.label(text=_("Vertex Group:"))
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
def SOFT_BODY(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def SOLIDIFY(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
@ -569,19 +569,19 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
col.prop(md, "thickness")
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
col.label(text="Crease:")
|
||||
col.prop(md, "edge_crease_inner", text="Inner")
|
||||
col.prop(md, "edge_crease_outer", text="Outer")
|
||||
col.prop(md, "edge_crease_rim", text="Rim")
|
||||
col.label(text="Material Index Offset:")
|
||||
col.label(text=_("Crease:"))
|
||||
col.prop(md, "edge_crease_inner", text=_("Inner"))
|
||||
col.prop(md, "edge_crease_outer", text=_("Outer"))
|
||||
col.prop(md, "edge_crease_rim", text=_("Rim"))
|
||||
col.label(text=_("Material Index Offset:"))
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.prop(md, "offset")
|
||||
sub = col.column()
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "invert_vertex_group", text="Invert")
|
||||
sub.prop(md, "thickness_vertex_group", text="Factor")
|
||||
sub.prop(md, "invert_vertex_group", text=_("Invert"))
|
||||
sub.prop(md, "thickness_vertex_group", text=_("Factor"))
|
||||
|
||||
col.prop(md, "use_even_offset")
|
||||
col.prop(md, "use_quality_normals")
|
||||
@ -592,64 +592,64 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
row.prop(md, "material_offset", text="")
|
||||
row = row.row()
|
||||
row.active = md.use_rim
|
||||
row.prop(md, "material_offset_rim", text="Rim")
|
||||
row.prop(md, "material_offset_rim", text=_("Rim"))
|
||||
|
||||
def SUBSURF(self, layout, ob, md):
|
||||
layout.row().prop(md, "subdivision_type", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Subdivisions:")
|
||||
col.prop(md, "levels", text="View")
|
||||
col.prop(md, "render_levels", text="Render")
|
||||
col.label(text=_("Subdivisions:"))
|
||||
col.prop(md, "levels", text=_("View"))
|
||||
col.prop(md, "render_levels", text=_("Render"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Options:")
|
||||
col.label(text=_("Options:"))
|
||||
col.prop(md, "use_subsurf_uv")
|
||||
col.prop(md, "show_only_control_edges")
|
||||
|
||||
def SURFACE(self, layout, ob, md):
|
||||
layout.label(text="Settings can be found inside the Physics context")
|
||||
layout.label(text=_("Settings can be found inside the Physics context"))
|
||||
|
||||
def UV_PROJECT(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Image:")
|
||||
col.label(text=_("Image:"))
|
||||
col.prop(md, "image", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="UV Layer:")
|
||||
col.label(text=_("UV Layer:"))
|
||||
col.prop_search(md, "uv_layer", ob.data, "uv_textures", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(md, "use_image_override")
|
||||
col.prop(md, "projector_count", text="Projectors")
|
||||
col.prop(md, "projector_count", text=_("Projectors"))
|
||||
for proj in md.projectors:
|
||||
col.prop(proj, "object", text="")
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.prop(md, "aspect_x", text="Aspect X")
|
||||
sub.prop(md, "aspect_y", text="Aspect Y")
|
||||
sub.prop(md, "aspect_x", text=_("Aspect X"))
|
||||
sub.prop(md, "aspect_y", text=_("Aspect Y"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(md, "scale_x", text="Scale X")
|
||||
sub.prop(md, "scale_y", text="Scale Y")
|
||||
sub.prop(md, "scale_x", text=_("Scale X"))
|
||||
sub.prop(md, "scale_y", text=_("Scale Y"))
|
||||
|
||||
def WARP(self, layout, ob, md):
|
||||
use_falloff = (md.falloff_type != 'NONE')
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="From:")
|
||||
col.label(text=_("From:"))
|
||||
col.prop(md, "object_from", text="")
|
||||
|
||||
col.prop(md, "use_volume_preserve")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="To:")
|
||||
col.label(text=_("To:"))
|
||||
col.prop(md, "object_to", text="")
|
||||
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
@ -668,15 +668,15 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
# 2 new columns
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Texture:")
|
||||
col.label(text=_("Texture:"))
|
||||
col.prop(md, "texture", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Texture Coordinates:")
|
||||
col.label(text=_("Texture Coordinates:"))
|
||||
col.prop(md, "texture_coords", text="")
|
||||
|
||||
if md.texture_coords == 'OBJECT':
|
||||
layout.prop(md, "texture_coords_object", text="Object")
|
||||
layout.prop(md, "texture_coords_object", text=_("Object"))
|
||||
elif md.texture_coords == 'UV' and ob.type == 'MESH':
|
||||
layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
|
||||
|
||||
@ -684,7 +684,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Motion:")
|
||||
col.label(text=_("Motion:"))
|
||||
col.prop(md, "use_x")
|
||||
col.prop(md, "use_y")
|
||||
col.prop(md, "use_cyclic")
|
||||
@ -700,18 +700,18 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Time:")
|
||||
col.label(text=_("Time:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(md, "time_offset", text="Offset")
|
||||
sub.prop(md, "lifetime", text="Life")
|
||||
col.prop(md, "damping_time", text="Damping")
|
||||
sub.prop(md, "time_offset", text=_("Offset"))
|
||||
sub.prop(md, "lifetime", text=_("Life"))
|
||||
col.prop(md, "damping_time", text=_("Damping"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Position:")
|
||||
col.label(text=_("Position:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(md, "start_position_x", text="X")
|
||||
sub.prop(md, "start_position_y", text="Y")
|
||||
col.prop(md, "falloff_radius", text="Falloff")
|
||||
col.prop(md, "falloff_radius", text=_("Falloff"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -719,7 +719,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
||||
layout.prop_search(md, "vertex_group", ob, "vertex_groups")
|
||||
split = layout.split(percentage=0.33)
|
||||
col = split.column()
|
||||
col.label(text="Texture")
|
||||
col.label(text=_("Texture"))
|
||||
col = split.column()
|
||||
col.template_ID(md, "texture", new="texture.new")
|
||||
layout.prop(md, "texture_coords")
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class PhysicsButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -54,7 +54,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
col.prop(game, "use_actor")
|
||||
col.prop(game, "use_ghost")
|
||||
col.prop(ob, "hide_render", text="Invisible") # out of place but useful
|
||||
col.prop(ob, "hide_render", text=_("Invisible")) # out of place but useful
|
||||
|
||||
col = split.column()
|
||||
col.prop(game, "use_material_physics_fh")
|
||||
@ -66,7 +66,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Attributes:")
|
||||
col.label(text=_("Attributes:"))
|
||||
col.prop(game, "mass")
|
||||
col.prop(game, "radius")
|
||||
col.prop(game, "form_factor")
|
||||
@ -81,29 +81,29 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Velocity:")
|
||||
col.label(text=_("Velocity:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(game, "velocity_min", text="Minimum")
|
||||
sub.prop(game, "velocity_max", text="Maximum")
|
||||
sub.prop(game, "velocity_min", text=_("Minimum"))
|
||||
sub.prop(game, "velocity_max", text=_("Maximum"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Damping:")
|
||||
col.label(text=_("Damping:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(game, "damping", text="Translation", slider=True)
|
||||
sub.prop(game, "rotation_damping", text="Rotation", slider=True)
|
||||
sub.prop(game, "damping", text=_("Translation"), slider=True)
|
||||
sub.prop(game, "rotation_damping", text=_("Rotation"), slider=True)
|
||||
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Lock Translation:")
|
||||
col.label(text=_("Lock Translation:"))
|
||||
col.prop(game, "lock_location_x", text="X")
|
||||
col.prop(game, "lock_location_y", text="Y")
|
||||
col.prop(game, "lock_location_z", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Lock Rotation:")
|
||||
col.label(text=_("Lock Rotation:"))
|
||||
col.prop(game, "lock_rotation_x", text="X")
|
||||
col.prop(game, "lock_rotation_y", text="Y")
|
||||
col.prop(game, "lock_rotation_z", text="Z")
|
||||
@ -112,21 +112,21 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
col = layout.column()
|
||||
col.prop(game, "use_actor")
|
||||
col.prop(game, "use_ghost")
|
||||
col.prop(ob, "hide_render", text="Invisible")
|
||||
col.prop(ob, "hide_render", text=_("Invisible"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Attributes:")
|
||||
col.label(text=_("Attributes:"))
|
||||
col.prop(game, "mass")
|
||||
col.prop(soft, "weld_threshold")
|
||||
col.prop(soft, "location_iterations")
|
||||
col.prop(soft, "linear_stiffness", slider=True)
|
||||
col.prop(soft, "dynamic_friction", slider=True)
|
||||
col.prop(soft, "collision_margin", slider=True)
|
||||
col.prop(soft, "use_bending_constraints", text="Bending Constraints")
|
||||
col.prop(soft, "use_bending_constraints", text=_("Bending Constraints"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(soft, "use_shape_match")
|
||||
@ -136,25 +136,25 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
|
||||
col.separator()
|
||||
|
||||
col.label(text="Cluster Collision:")
|
||||
col.label(text=_("Cluster Collision:"))
|
||||
col.prop(soft, "use_cluster_rigid_to_softbody")
|
||||
col.prop(soft, "use_cluster_soft_to_softbody")
|
||||
sub = col.column()
|
||||
sub.active = (soft.use_cluster_rigid_to_softbody or soft.use_cluster_soft_to_softbody)
|
||||
sub.prop(soft, "cluster_iterations", text="Iterations")
|
||||
sub.prop(soft, "cluster_iterations", text=_("Iterations"))
|
||||
|
||||
elif game.physics_type == 'STATIC':
|
||||
col = layout.column()
|
||||
col.prop(game, "use_actor")
|
||||
col.prop(game, "use_ghost")
|
||||
col.prop(ob, "hide_render", text="Invisible")
|
||||
col.prop(ob, "hide_render", text=_("Invisible"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Attributes:")
|
||||
col.label(text=_("Attributes:"))
|
||||
col.prop(game, "radius")
|
||||
|
||||
col = split.column()
|
||||
@ -165,7 +165,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
||||
subsub.prop(game, "friction_coefficients", text="", slider=True)
|
||||
|
||||
elif game.physics_type in {'SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'}:
|
||||
layout.prop(ob, "hide_render", text="Invisible")
|
||||
layout.prop(ob, "hide_render", text=_("Invisible"))
|
||||
|
||||
|
||||
class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
|
||||
@ -189,11 +189,11 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
|
||||
game = context.active_object.game
|
||||
|
||||
layout.active = game.use_collision_bounds
|
||||
layout.prop(game, "collision_bounds_type", text="Bounds")
|
||||
layout.prop(game, "collision_bounds_type", text=_("Bounds"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(game, "collision_margin", text="Margin", slider=True)
|
||||
row.prop(game, "use_collision_compound", text="Compound")
|
||||
row.prop(game, "collision_margin", text=_("Margin"), slider=True)
|
||||
row.prop(game, "use_collision_compound", text=_("Compound"))
|
||||
|
||||
|
||||
class PHYSICS_PT_game_obstacles(PhysicsButtonsPanel, Panel):
|
||||
@ -242,7 +242,7 @@ class RENDER_PT_game(RenderButtonsPanel, Panel):
|
||||
layout = self.layout
|
||||
|
||||
row = layout.row()
|
||||
row.operator("view3d.game_start", text="Start")
|
||||
row.operator("view3d.game_start", text=_("Start"))
|
||||
row.label()
|
||||
|
||||
|
||||
@ -260,20 +260,20 @@ class RENDER_PT_game_player(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.label(text=_("Resolution:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(gs, "resolution_x", slider=False, text="X")
|
||||
sub.prop(gs, "resolution_y", slider=False, text="Y")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Quality:")
|
||||
col.label(text=_("Quality:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(gs, "depth", text="Bit Depth", slider=False)
|
||||
sub.prop(gs, "frequency", text="FPS", slider=False)
|
||||
sub.prop(gs, "depth", text=_("Bit Depth"), slider=False)
|
||||
sub.prop(gs, "frequency", text=_("FPS"), slider=False)
|
||||
|
||||
# framing:
|
||||
col = layout.column()
|
||||
col.label(text="Framing:")
|
||||
col.label(text=_("Framing:"))
|
||||
col.row().prop(gs, "frame_type", expand=True)
|
||||
if gs.frame_type == 'LETTERBOX':
|
||||
col.prop(gs, "frame_color", text="")
|
||||
@ -299,7 +299,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel):
|
||||
|
||||
# dome:
|
||||
elif stereo_mode == 'DOME':
|
||||
layout.prop(gs, "dome_mode", text="Dome Type")
|
||||
layout.prop(gs, "dome_mode", text=_("Dome Type"))
|
||||
|
||||
dome_type = gs.dome_mode
|
||||
|
||||
@ -310,23 +310,23 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel):
|
||||
dome_type == 'TRUNCATED_FRONT':
|
||||
|
||||
col = split.column()
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
|
||||
col.prop(gs, "dome_angle", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.prop(gs, "dome_tesselation", text="Tesselation")
|
||||
col.prop(gs, "dome_tesselation", text=_("Tesselation"))
|
||||
col.prop(gs, "dome_tilt")
|
||||
|
||||
elif dome_type == 'PANORAM_SPH':
|
||||
col = split.column()
|
||||
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
|
||||
col = split.column()
|
||||
col.prop(gs, "dome_tesselation", text="Tesselation")
|
||||
col.prop(gs, "dome_tesselation", text=_("Tesselation"))
|
||||
|
||||
else: # cube map
|
||||
col = split.column()
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
|
||||
|
||||
col = split.column()
|
||||
|
||||
@ -348,15 +348,15 @@ class RENDER_PT_game_shading(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(gs, "use_glsl_lights", text="Lights")
|
||||
col.prop(gs, "use_glsl_shaders", text="Shaders")
|
||||
col.prop(gs, "use_glsl_shadows", text="Shadows")
|
||||
col.prop(gs, "use_glsl_color_management", text="Color Management")
|
||||
col.prop(gs, "use_glsl_lights", text=_("Lights"))
|
||||
col.prop(gs, "use_glsl_shaders", text=_("Shaders"))
|
||||
col.prop(gs, "use_glsl_shadows", text=_("Shadows"))
|
||||
col.prop(gs, "use_glsl_color_management", text=_("Color Management"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(gs, "use_glsl_ramps", text="Ramps")
|
||||
col.prop(gs, "use_glsl_nodes", text="Nodes")
|
||||
col.prop(gs, "use_glsl_extra_textures", text="Extra Textures")
|
||||
col.prop(gs, "use_glsl_ramps", text=_("Ramps"))
|
||||
col.prop(gs, "use_glsl_nodes", text=_("Nodes"))
|
||||
col.prop(gs, "use_glsl_extra_textures", text=_("Extra Textures"))
|
||||
|
||||
|
||||
class RENDER_PT_game_performance(RenderButtonsPanel, Panel):
|
||||
@ -384,11 +384,11 @@ class RENDER_PT_game_display(RenderButtonsPanel, Panel):
|
||||
|
||||
gs = context.scene.game_settings
|
||||
flow = layout.column_flow()
|
||||
flow.prop(gs, "show_debug_properties", text="Debug Properties")
|
||||
flow.prop(gs, "show_framerate_profile", text="Framerate and Profile")
|
||||
flow.prop(gs, "show_physics_visualization", text="Physics Visualization")
|
||||
flow.prop(gs, "show_debug_properties", text=_("Debug Properties"))
|
||||
flow.prop(gs, "show_framerate_profile", text=_("Framerate and Profile"))
|
||||
flow.prop(gs, "show_physics_visualization", text=_("Physics Visualization"))
|
||||
flow.prop(gs, "use_deprecation_warnings")
|
||||
flow.prop(gs, "show_mouse", text="Mouse Cursor")
|
||||
flow.prop(gs, "show_mouse", text=_("Mouse Cursor"))
|
||||
|
||||
|
||||
class SceneButtonsPanel():
|
||||
@ -546,37 +546,37 @@ class WORLD_PT_game_physics(WorldButtonsPanel, Panel):
|
||||
|
||||
layout.prop(gs, "physics_engine")
|
||||
if gs.physics_engine != 'NONE':
|
||||
layout.prop(gs, "physics_gravity", text="Gravity")
|
||||
layout.prop(gs, "physics_gravity", text=_("Gravity"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Physics Steps:")
|
||||
col.label(text=_("Physics Steps:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(gs, "physics_step_max", text="Max")
|
||||
sub.prop(gs, "physics_step_sub", text="Substeps")
|
||||
col.prop(gs, "fps", text="FPS")
|
||||
sub.prop(gs, "physics_step_max", text=_("Max"))
|
||||
sub.prop(gs, "physics_step_sub", text=_("Substeps"))
|
||||
col.prop(gs, "fps", text=_("FPS"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Logic Steps:")
|
||||
col.prop(gs, "logic_step_max", text="Max")
|
||||
col.label(text=_("Logic Steps:"))
|
||||
col.prop(gs, "logic_step_max", text=_("Max"))
|
||||
|
||||
col = layout.column()
|
||||
col.prop(gs, "use_occlusion_culling", text="Occlusion Culling")
|
||||
col.prop(gs, "use_occlusion_culling", text=_("Occlusion Culling"))
|
||||
sub = col.column()
|
||||
sub.active = gs.use_occlusion_culling
|
||||
sub.prop(gs, "occlusion_culling_resolution", text="Resolution")
|
||||
sub.prop(gs, "occlusion_culling_resolution", text=_("Resolution"))
|
||||
|
||||
else:
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Physics Steps:")
|
||||
col.prop(gs, "fps", text="FPS")
|
||||
col.label(text=_("Physics Steps:"))
|
||||
col.prop(gs, "fps", text=_("FPS"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Logic Steps:")
|
||||
col.prop(gs, "logic_step_max", text="Max")
|
||||
col.label(text=_("Logic Steps:"))
|
||||
col.prop(gs, "logic_step_max", text=_("Max"))
|
||||
|
||||
|
||||
class WORLD_PT_game_physics_obstacles(WorldButtonsPanel, Panel):
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
def active_node_mat(mat):
|
||||
# TODO, 2.4x has a pipeline section, for 2.5 we need to communicate
|
||||
@ -114,9 +114,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
|
||||
|
||||
if ob.mode == 'EDIT':
|
||||
row = layout.row(align=True)
|
||||
row.operator("object.material_slot_assign", text="Assign")
|
||||
row.operator("object.material_slot_select", text="Select")
|
||||
row.operator("object.material_slot_deselect", text="Deselect")
|
||||
row.operator("object.material_slot_assign", text=_("Assign"))
|
||||
row.operator("object.material_slot_select", text=_("Select"))
|
||||
row.operator("object.material_slot_deselect", text=_("Deselect"))
|
||||
|
||||
split = layout.split(percentage=0.65)
|
||||
|
||||
@ -142,7 +142,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
|
||||
if mat.active_node_material:
|
||||
row.prop(mat.active_node_material, "name", text="")
|
||||
else:
|
||||
row.label(text="No material node selected")
|
||||
row.label(text=_("No material node selected"))
|
||||
|
||||
|
||||
class MATERIAL_PT_preview(MaterialButtonsPanel, Panel):
|
||||
@ -197,8 +197,8 @@ class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
col.active = mat_type
|
||||
|
||||
col.prop(mat, "use_cast_shadows_only", text="Cast Only")
|
||||
col.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
|
||||
col.prop(mat, "use_cast_shadows_only", text=_("Cast Only"))
|
||||
col.prop(mat, "shadow_cast_alpha", text=_("Casting Alpha"))
|
||||
col.prop(mat, "use_cast_buffer_shadows")
|
||||
col.prop(mat, "use_cast_approximate")
|
||||
col.prop(mat, "pass_index")
|
||||
@ -225,12 +225,12 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
|
||||
col.prop(mat, "diffuse_color", text="")
|
||||
sub = col.column()
|
||||
sub.active = (not mat.use_shadeless)
|
||||
sub.prop(mat, "diffuse_intensity", text="Intensity")
|
||||
sub.prop(mat, "diffuse_intensity", text=_("Intensity"))
|
||||
|
||||
col = split.column()
|
||||
col.active = (not mat.use_shadeless)
|
||||
col.prop(mat, "diffuse_shader", text="")
|
||||
col.prop(mat, "use_diffuse_ramp", text="Ramp")
|
||||
col.prop(mat, "use_diffuse_ramp", text=_("Ramp"))
|
||||
|
||||
col = layout.column()
|
||||
col.active = (not mat.use_shadeless)
|
||||
@ -240,12 +240,12 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
|
||||
col.prop(mat, "darkness")
|
||||
elif mat.diffuse_shader == 'TOON':
|
||||
row = col.row()
|
||||
row.prop(mat, "diffuse_toon_size", text="Size")
|
||||
row.prop(mat, "diffuse_toon_smooth", text="Smooth")
|
||||
row.prop(mat, "diffuse_toon_size", text=_("Size"))
|
||||
row.prop(mat, "diffuse_toon_smooth", text=_("Smooth"))
|
||||
elif mat.diffuse_shader == 'FRESNEL':
|
||||
row = col.row()
|
||||
row.prop(mat, "diffuse_fresnel", text="Fresnel")
|
||||
row.prop(mat, "diffuse_fresnel_factor", text="Factor")
|
||||
row.prop(mat, "diffuse_fresnel", text=_("Fresnel"))
|
||||
row.prop(mat, "diffuse_fresnel_factor", text=_("Factor"))
|
||||
|
||||
if mat.use_diffuse_ramp:
|
||||
col = layout.column()
|
||||
@ -255,10 +255,10 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
|
||||
col.separator()
|
||||
|
||||
row = col.row()
|
||||
row.prop(mat, "diffuse_ramp_input", text="Input")
|
||||
row.prop(mat, "diffuse_ramp_blend", text="Blend")
|
||||
row.prop(mat, "diffuse_ramp_input", text=_("Input"))
|
||||
row.prop(mat, "diffuse_ramp_blend", text=_("Blend"))
|
||||
|
||||
col.prop(mat, "diffuse_ramp_factor", text="Factor")
|
||||
col.prop(mat, "diffuse_ramp_factor", text=_("Factor"))
|
||||
|
||||
|
||||
class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
|
||||
@ -282,25 +282,25 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(mat, "specular_color", text="")
|
||||
col.prop(mat, "specular_intensity", text="Intensity")
|
||||
col.prop(mat, "specular_intensity", text=_("Intensity"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(mat, "specular_shader", text="")
|
||||
col.prop(mat, "use_specular_ramp", text="Ramp")
|
||||
col.prop(mat, "use_specular_ramp", text=_("Ramp"))
|
||||
|
||||
col = layout.column()
|
||||
if mat.specular_shader in {'COOKTORR', 'PHONG'}:
|
||||
col.prop(mat, "specular_hardness", text="Hardness")
|
||||
col.prop(mat, "specular_hardness", text=_("Hardness"))
|
||||
elif mat.specular_shader == 'BLINN':
|
||||
row = col.row()
|
||||
row.prop(mat, "specular_hardness", text="Hardness")
|
||||
row.prop(mat, "specular_ior", text="IOR")
|
||||
row.prop(mat, "specular_hardness", text=_("Hardness"))
|
||||
row.prop(mat, "specular_ior", text=_("IOR"))
|
||||
elif mat.specular_shader == 'WARDISO':
|
||||
col.prop(mat, "specular_slope", text="Slope")
|
||||
col.prop(mat, "specular_slope", text=_("Slope"))
|
||||
elif mat.specular_shader == 'TOON':
|
||||
row = col.row()
|
||||
row.prop(mat, "specular_toon_size", text="Size")
|
||||
row.prop(mat, "specular_toon_smooth", text="Smooth")
|
||||
row.prop(mat, "specular_toon_size", text=_("Size"))
|
||||
row.prop(mat, "specular_toon_smooth", text=_("Smooth"))
|
||||
|
||||
if mat.use_specular_ramp:
|
||||
layout.separator()
|
||||
@ -308,10 +308,10 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
|
||||
layout.separator()
|
||||
|
||||
row = layout.row()
|
||||
row.prop(mat, "specular_ramp_input", text="Input")
|
||||
row.prop(mat, "specular_ramp_blend", text="Blend")
|
||||
row.prop(mat, "specular_ramp_input", text=_("Input"))
|
||||
row.prop(mat, "specular_ramp_blend", text=_("Blend"))
|
||||
|
||||
layout.prop(mat, "specular_ramp_factor", text="Factor")
|
||||
layout.prop(mat, "specular_ramp_factor", text=_("Factor"))
|
||||
|
||||
|
||||
class MATERIAL_PT_shading(MaterialButtonsPanel, Panel):
|
||||
@ -384,14 +384,14 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
|
||||
col.prop(mat, "alpha")
|
||||
row = col.row()
|
||||
row.active = (base_mat.transparency_method != 'MASK') and (not mat.use_shadeless)
|
||||
row.prop(mat, "specular_alpha", text="Specular")
|
||||
row.prop(mat, "specular_alpha", text=_("Specular"))
|
||||
|
||||
col = split.column()
|
||||
col.active = (not mat.use_shadeless)
|
||||
col.prop(rayt, "fresnel")
|
||||
sub = col.column()
|
||||
sub.active = rayt.fresnel > 0
|
||||
sub.prop(rayt, "fresnel_factor", text="Blend")
|
||||
sub.prop(rayt, "fresnel_factor", text=_("Blend"))
|
||||
|
||||
if base_mat.transparency_method == 'RAYTRACE':
|
||||
layout.separator()
|
||||
@ -406,12 +406,12 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
|
||||
col.prop(rayt, "depth")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Gloss:")
|
||||
col.prop(rayt, "gloss_factor", text="Amount")
|
||||
col.label(text=_("Gloss:"))
|
||||
col.prop(rayt, "gloss_factor", text=_("Amount"))
|
||||
sub = col.column()
|
||||
sub.active = rayt.gloss_factor < 1.0
|
||||
sub.prop(rayt, "gloss_threshold", text="Threshold")
|
||||
sub.prop(rayt, "gloss_samples", text="Samples")
|
||||
sub.prop(rayt, "gloss_threshold", text=_("Threshold"))
|
||||
sub.prop(rayt, "gloss_samples", text=_("Samples"))
|
||||
|
||||
|
||||
class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
|
||||
@ -448,28 +448,28 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
|
||||
col.prop(raym, "fresnel")
|
||||
sub = col.column()
|
||||
sub.active = raym.fresnel > 0
|
||||
sub.prop(raym, "fresnel_factor", text="Blend")
|
||||
sub.prop(raym, "fresnel_factor", text=_("Blend"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.separator()
|
||||
col.prop(raym, "depth")
|
||||
col.prop(raym, "distance", text="Max Dist")
|
||||
col.prop(raym, "distance", text=_("Max Dist"))
|
||||
col.separator()
|
||||
sub = col.split(percentage=0.4)
|
||||
sub.active = raym.distance > 0.0
|
||||
sub.label(text="Fade To:")
|
||||
sub.label(text=_("Fade To:"))
|
||||
sub.prop(raym, "fade_to", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Gloss:")
|
||||
col.prop(raym, "gloss_factor", text="Amount")
|
||||
col.label(text=_("Gloss:"))
|
||||
col.prop(raym, "gloss_factor", text=_("Amount"))
|
||||
sub = col.column()
|
||||
sub.active = raym.gloss_factor < 1.0
|
||||
sub.prop(raym, "gloss_threshold", text="Threshold")
|
||||
sub.prop(raym, "gloss_samples", text="Samples")
|
||||
sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
|
||||
sub.prop(raym, "gloss_threshold", text=_("Threshold"))
|
||||
sub.prop(raym, "gloss_samples", text=_("Samples"))
|
||||
sub.prop(raym, "gloss_anisotropic", text=_("Anisotropic"))
|
||||
|
||||
|
||||
class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
|
||||
@ -510,18 +510,18 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
|
||||
col.prop(sss, "ior")
|
||||
col.prop(sss, "scale")
|
||||
col.prop(sss, "color", text="")
|
||||
col.prop(sss, "radius", text="RGB Radius", expand=True)
|
||||
col.prop(sss, "radius", text=_("RGB Radius"), expand=True)
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Blend:")
|
||||
sub.prop(sss, "color_factor", text="Color")
|
||||
sub.prop(sss, "texture_factor", text="Texture")
|
||||
sub.label(text="Scattering Weight:")
|
||||
sub.label(text=_("Blend:"))
|
||||
sub.prop(sss, "color_factor", text=_("Color"))
|
||||
sub.prop(sss, "texture_factor", text=_("Texture"))
|
||||
sub.label(text=_("Scattering Weight:"))
|
||||
sub.prop(sss, "front")
|
||||
sub.prop(sss, "back")
|
||||
col.separator()
|
||||
col.prop(sss, "error_threshold", text="Error")
|
||||
col.prop(sss, "error_threshold", text=_("Error"))
|
||||
|
||||
|
||||
class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
|
||||
@ -561,7 +561,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
|
||||
col.prop(halo, "hardness")
|
||||
col.prop(halo, "add")
|
||||
|
||||
layout.label(text="Options:")
|
||||
layout.label(text=_("Options:"))
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@ -603,13 +603,13 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(halo, "flare_size", text="Size")
|
||||
col.prop(halo, "flare_boost", text="Boost")
|
||||
col.prop(halo, "flare_seed", text="Seed")
|
||||
col.prop(halo, "flare_size", text=_("Size"))
|
||||
col.prop(halo, "flare_boost", text=_("Boost"))
|
||||
col.prop(halo, "flare_seed", text=_("Seed"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(halo, "flare_subflare_count", text="Subflares")
|
||||
col.prop(halo, "flare_subflare_size", text="Subsize")
|
||||
col.prop(halo, "flare_subflare_count", text=_("Subflares"))
|
||||
col.prop(halo, "flare_subflare_size", text=_("Subsize"))
|
||||
|
||||
|
||||
class MATERIAL_PT_game_settings(MaterialButtonsPanel, bpy.types.Panel):
|
||||
@ -660,7 +660,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
|
||||
row.prop(phys, "elasticity", slider=True)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Force Field:")
|
||||
row.label(text=_("Force Field:"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(phys, "fh_force")
|
||||
@ -692,10 +692,10 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Size:")
|
||||
sub.prop(tan, "root_size", text="Root")
|
||||
sub.prop(tan, "tip_size", text="Tip")
|
||||
sub.prop(tan, "size_min", text="Minimum")
|
||||
sub.label(text=_("Size:"))
|
||||
sub.prop(tan, "root_size", text=_("Root"))
|
||||
sub.prop(tan, "tip_size", text=_("Tip"))
|
||||
sub.prop(tan, "size_min", text=_("Minimum"))
|
||||
sub.prop(tan, "use_blender_units")
|
||||
sub = col.column()
|
||||
sub.active = (not mat.use_shadeless)
|
||||
@ -703,7 +703,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
|
||||
col.prop(tan, "shape")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Shading:")
|
||||
col.label(text=_("Shading:"))
|
||||
col.prop(tan, "width_fade")
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
@ -713,9 +713,9 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
|
||||
col.separator()
|
||||
sub = col.column()
|
||||
sub.active = (not mat.use_shadeless)
|
||||
sub.label("Surface diffuse:")
|
||||
sub.label(_("Surface diffuse:"))
|
||||
sub = col.column()
|
||||
sub.prop(tan, "blend_distance", text="Distance")
|
||||
sub.prop(tan, "blend_distance", text=_("Distance"))
|
||||
|
||||
|
||||
class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
|
||||
@ -748,11 +748,11 @@ class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
|
||||
sub.prop(mat, "offset_z")
|
||||
sub.active = mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY'
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Light Group:")
|
||||
sub.label(text=_("Light Group:"))
|
||||
sub.prop(mat, "light_group", text="")
|
||||
row = sub.row()
|
||||
row.active = bool(mat.light_group)
|
||||
row.prop(mat, "use_light_group_exclusive", text="Exclusive")
|
||||
row.prop(mat, "use_light_group_exclusive", text=_("Exclusive"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(mat, "use_face_texture")
|
||||
@ -787,12 +787,12 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(mat, "use_shadows", text="Receive")
|
||||
col.prop(mat, "use_transparent_shadows", text="Receive Transparent")
|
||||
col.prop(mat, "use_shadows", text=_("Receive"))
|
||||
col.prop(mat, "use_transparent_shadows", text=_("Receive Transparent"))
|
||||
if simple_material(base_mat):
|
||||
col.prop(mat, "use_cast_shadows_only", text="Cast Only")
|
||||
col.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
|
||||
col.prop(mat, "use_only_shadow", text="Shadows Only")
|
||||
col.prop(mat, "use_cast_shadows_only", text=_("Cast Only"))
|
||||
col.prop(mat, "shadow_cast_alpha", text=_("Casting Alpha"))
|
||||
col.prop(mat, "use_only_shadow", text=_("Shadows Only"))
|
||||
sub = col.column()
|
||||
sub.active = mat.use_only_shadow
|
||||
sub.prop(mat, "shadow_only_type", text="")
|
||||
@ -802,11 +802,11 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
|
||||
col.prop(mat, "use_cast_buffer_shadows")
|
||||
sub = col.column()
|
||||
sub.active = mat.use_cast_buffer_shadows
|
||||
sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
|
||||
col.prop(mat, "use_ray_shadow_bias", text="Auto Ray Bias")
|
||||
sub.prop(mat, "shadow_buffer_bias", text=_("Buffer Bias"))
|
||||
col.prop(mat, "use_ray_shadow_bias", text=_("Auto Ray Bias"))
|
||||
sub = col.column()
|
||||
sub.active = (not mat.use_ray_shadow_bias)
|
||||
sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
|
||||
sub.prop(mat, "shadow_ray_bias", text=_("Ray Bias"))
|
||||
if simple_material(base_mat):
|
||||
col.prop(mat, "use_cast_approximate")
|
||||
|
||||
@ -919,7 +919,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel):
|
||||
sub = col.column()
|
||||
sub.enabled = True
|
||||
sub.active = False
|
||||
sub.label("Light Cache Enabled")
|
||||
sub.label(_("Light Cache Enabled"))
|
||||
col.prop(vol, "cache_resolution")
|
||||
|
||||
sub = col.column(align=True)
|
||||
@ -958,7 +958,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Step Calculation:")
|
||||
col.label(text=_("Step Calculation:"))
|
||||
col.prop(vol, "step_method", text="")
|
||||
col = col.column(align=True)
|
||||
col.prop(vol, "step_size")
|
||||
@ -993,11 +993,11 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel):
|
||||
col.prop(mat, "use_mist")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Light Group:")
|
||||
col.label(text=_("Light Group:"))
|
||||
col.prop(mat, "light_group", text="")
|
||||
row = col.row()
|
||||
row.active = bool(mat.light_group)
|
||||
row.prop(mat, "use_light_group_exclusive", text="Exclusive")
|
||||
row.prop(mat, "use_light_group_exclusive", text=_("Exclusive"))
|
||||
|
||||
|
||||
class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class ObjectButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -55,14 +55,14 @@ class OBJECT_PT_transform(ObjectButtonsPanel, Panel):
|
||||
|
||||
row.column().prop(ob, "location")
|
||||
if ob.rotation_mode == 'QUATERNION':
|
||||
row.column().prop(ob, "rotation_quaternion", text="Rotation")
|
||||
row.column().prop(ob, "rotation_quaternion", text=_("Rotation"))
|
||||
elif ob.rotation_mode == 'AXIS_ANGLE':
|
||||
#row.column().label(text="Rotation")
|
||||
#row.column().prop(pchan, "rotation_angle", text="Angle")
|
||||
#row.column().prop(pchan, "rotation_axis", text="Axis")
|
||||
row.column().prop(ob, "rotation_axis_angle", text="Rotation")
|
||||
#row.column().label(text=_("Rotation"))
|
||||
#row.column().prop(pchan, "rotation_angle", text=_("Angle"))
|
||||
#row.column().prop(pchan, "rotation_axis", text=_("Axis"))
|
||||
row.column().prop(ob, "rotation_axis_angle", text=_("Rotation"))
|
||||
else:
|
||||
row.column().prop(ob, "rotation_euler", text="Rotation")
|
||||
row.column().prop(ob, "rotation_euler", text=_("Rotation"))
|
||||
|
||||
row.column().prop(ob, "scale")
|
||||
|
||||
@ -82,15 +82,15 @@ class OBJECT_PT_delta_transform(ObjectButtonsPanel, Panel):
|
||||
|
||||
row.column().prop(ob, "delta_location")
|
||||
if ob.rotation_mode == 'QUATERNION':
|
||||
row.column().prop(ob, "delta_rotation_quaternion", text="Rotation")
|
||||
row.column().prop(ob, "delta_rotation_quaternion", text=_("Rotation"))
|
||||
elif ob.rotation_mode == 'AXIS_ANGLE':
|
||||
#row.column().label(text="Rotation")
|
||||
#row.column().prop(pchan, "delta_rotation_angle", text="Angle")
|
||||
#row.column().prop(pchan, "delta_rotation_axis", text="Axis")
|
||||
#row.column().prop(ob, "delta_rotation_axis_angle", text="Rotation")
|
||||
row.column().label(text="Not for Axis-Angle")
|
||||
#row.column().label(text=_("Rotation"))
|
||||
#row.column().prop(pchan, "delta_rotation_angle", text=_("Angle"))
|
||||
#row.column().prop(pchan, "delta_rotation_axis", text=_("Axis"))
|
||||
#row.column().prop(ob, "delta_rotation_axis_angle", text=_("Rotation"))
|
||||
row.column().label(text=_("Not for Axis-Angle"))
|
||||
else:
|
||||
row.column().prop(ob, "delta_rotation_euler", text="Rotation")
|
||||
row.column().prop(ob, "delta_rotation_euler", text=_("Rotation"))
|
||||
|
||||
row.column().prop(ob, "delta_scale")
|
||||
|
||||
@ -107,18 +107,18 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel, Panel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.prop(ob, "lock_location", text="Location")
|
||||
col.prop(ob, "lock_location", text=_("Location"))
|
||||
|
||||
col = row.column()
|
||||
if ob.rotation_mode in {'QUATERNION', 'AXIS_ANGLE'}:
|
||||
col.prop(ob, "lock_rotations_4d", text="Rotation")
|
||||
col.prop(ob, "lock_rotations_4d", text=_("Rotation"))
|
||||
if ob.lock_rotations_4d:
|
||||
col.prop(ob, "lock_rotation_w", text="W")
|
||||
col.prop(ob, "lock_rotation", text="")
|
||||
else:
|
||||
col.prop(ob, "lock_rotation", text="Rotation")
|
||||
col.prop(ob, "lock_rotation", text=_("Rotation"))
|
||||
|
||||
row.column().prop(ob, "lock_scale", text="Scale")
|
||||
row.column().prop(ob, "lock_scale", text=_("Scale"))
|
||||
|
||||
|
||||
class OBJECT_PT_relations(ObjectButtonsPanel, Panel):
|
||||
@ -137,7 +137,7 @@ class OBJECT_PT_relations(ObjectButtonsPanel, Panel):
|
||||
col.prop(ob, "pass_index")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Parent:")
|
||||
col.label(text=_("Parent:"))
|
||||
col.prop(ob, "parent", text="")
|
||||
|
||||
sub = col.column()
|
||||
@ -157,7 +157,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
|
||||
ob = context.object
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.operator("object.group_link", text="Add to Group")
|
||||
row.operator("object.group_link", text=_("Add to Group"))
|
||||
row.operator("object.group_add", text="", icon='ZOOMIN')
|
||||
|
||||
# XXX, this is bad practice, yes, I wrote it :( - campbell
|
||||
@ -176,12 +176,12 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
|
||||
split = col.box().split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(group, "layers", text="Dupli")
|
||||
col.prop(group, "layers", text=_("Dupli"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(group, "dupli_offset", text="")
|
||||
|
||||
prop = col.operator("wm.context_set_value", text="From Cursor")
|
||||
prop = col.operator("wm.context_set_value", text=_("From Cursor"))
|
||||
prop.data_path = "object.users_group[%d].dupli_offset" % index
|
||||
prop.value = value
|
||||
index += 1
|
||||
@ -197,11 +197,11 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(ob, "draw_type", text="Type")
|
||||
col.prop(ob, "draw_type", text=_("Type"))
|
||||
|
||||
col = split.column()
|
||||
row = col.row()
|
||||
row.prop(ob, "show_bounds", text="Bounds")
|
||||
row.prop(ob, "show_bounds", text=_("Bounds"))
|
||||
sub = row.row()
|
||||
sub.active = ob.show_bounds
|
||||
sub.prop(ob, "draw_bounds_type", text="")
|
||||
@ -209,16 +209,16 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(ob, "show_name", text="Name")
|
||||
col.prop(ob, "show_axis", text="Axis")
|
||||
col.prop(ob, "show_wire", text="Wire")
|
||||
col.prop(ob, "color", text="Object Color")
|
||||
col.prop(ob, "show_name", text=_("Name"))
|
||||
col.prop(ob, "show_axis", text=_("Axis"))
|
||||
col.prop(ob, "show_wire", text=_("Wire"))
|
||||
col.prop(ob, "color", text=_("Object Color"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(ob, "show_texture_space", text="Texture Space")
|
||||
col.prop(ob, "show_x_ray", text="X-Ray")
|
||||
col.prop(ob, "show_texture_space", text=_("Texture Space"))
|
||||
col.prop(ob, "show_x_ray", text=_("X-Ray"))
|
||||
if ob.type == 'MESH':
|
||||
col.prop(ob, "show_transparent", text="Transparency")
|
||||
col.prop(ob, "show_transparent", text=_("Transparency"))
|
||||
|
||||
|
||||
class OBJECT_PT_duplication(ObjectButtonsPanel, Panel):
|
||||
@ -235,26 +235,26 @@ class OBJECT_PT_duplication(ObjectButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(ob, "dupli_frames_start", text="Start")
|
||||
col.prop(ob, "dupli_frames_end", text="End")
|
||||
col.prop(ob, "dupli_frames_start", text=_("Start"))
|
||||
col.prop(ob, "dupli_frames_end", text=_("End"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(ob, "dupli_frames_on", text="On")
|
||||
col.prop(ob, "dupli_frames_off", text="Off")
|
||||
col.prop(ob, "dupli_frames_on", text=_("On"))
|
||||
col.prop(ob, "dupli_frames_off", text=_("Off"))
|
||||
|
||||
layout.prop(ob, "use_dupli_frames_speed", text="Speed")
|
||||
layout.prop(ob, "use_dupli_frames_speed", text=_("Speed"))
|
||||
|
||||
elif ob.dupli_type == 'VERTS':
|
||||
layout.prop(ob, "use_dupli_vertices_rotation", text="Rotation")
|
||||
layout.prop(ob, "use_dupli_vertices_rotation", text=_("Rotation"))
|
||||
|
||||
elif ob.dupli_type == 'FACES':
|
||||
|
||||
row = layout.row()
|
||||
row.prop(ob, "use_dupli_faces_scale", text="Scale")
|
||||
row.prop(ob, "dupli_faces_scale", text="Inherit Scale")
|
||||
row.prop(ob, "use_dupli_faces_scale", text=_("Scale"))
|
||||
row.prop(ob, "dupli_faces_scale", text=_("Inherit Scale"))
|
||||
|
||||
elif ob.dupli_type == 'GROUP':
|
||||
layout.prop(ob, "dupli_group", text="Group")
|
||||
layout.prop(ob, "dupli_group", text=_("Group"))
|
||||
|
||||
|
||||
# XXX: the following options are all quite buggy, ancient hacks that should be dropped
|
||||
@ -271,21 +271,21 @@ class OBJECT_PT_animation(ObjectButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Time Offset:")
|
||||
col.prop(ob, "use_time_offset_edit", text="Edit")
|
||||
col.label(text=_("Time Offset:"))
|
||||
col.prop(ob, "use_time_offset_edit", text=_("Edit"))
|
||||
row = col.row()
|
||||
row.prop(ob, "use_time_offset_parent", text="Parent")
|
||||
row.prop(ob, "use_time_offset_parent", text=_("Parent"))
|
||||
row.active = (ob.parent is not None)
|
||||
row = col.row()
|
||||
row.prop(ob, "use_slow_parent")
|
||||
row.active = (ob.parent is not None)
|
||||
col.prop(ob, "time_offset", text="Offset")
|
||||
col.prop(ob, "time_offset", text=_("Offset"))
|
||||
|
||||
# XXX: these are still used for a few curve-related tracking features
|
||||
col = split.column()
|
||||
col.label(text="Tracking Axes:")
|
||||
col.prop(ob, "track_axis", text="Axis")
|
||||
col.prop(ob, "up_axis", text="Up Axis")
|
||||
col.label(text=_("Tracking Axes:"))
|
||||
col.prop(ob, "track_axis", text=_("Axis"))
|
||||
col.prop(ob, "up_axis", text=_("Up Axis"))
|
||||
|
||||
|
||||
from bl_ui.properties_animviz import (
|
||||
@ -312,8 +312,8 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel, Panel):
|
||||
layout.separator()
|
||||
|
||||
row = layout.row()
|
||||
row.operator("object.paths_calculate", text="Calculate Paths")
|
||||
row.operator("object.paths_clear", text="Clear Paths")
|
||||
row.operator("object.paths_calculate", text=_("Calculate Paths"))
|
||||
row.operator("object.paths_clear", text=_("Clear Paths"))
|
||||
|
||||
|
||||
class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class ConstraintButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -43,7 +43,7 @@ class ConstraintButtonsPanel():
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
|
||||
split.label(text="Space:")
|
||||
split.label(text=_("Space:"))
|
||||
row = split.row()
|
||||
|
||||
if target:
|
||||
@ -60,21 +60,21 @@ class ConstraintButtonsPanel():
|
||||
|
||||
if con.target and subtargets:
|
||||
if con.target.type == 'ARMATURE':
|
||||
layout.prop_search(con, "subtarget", con.target.data, "bones", text="Bone")
|
||||
layout.prop_search(con, "subtarget", con.target.data, "bones", text=_("Bone"))
|
||||
|
||||
if hasattr(con, "head_tail"):
|
||||
row = layout.row()
|
||||
row.label(text="Head/Tail:")
|
||||
row.label(text=_("Head/Tail:"))
|
||||
row.prop(con, "head_tail", text="")
|
||||
elif con.target.type in {'MESH', 'LATTICE'}:
|
||||
layout.prop_search(con, "subtarget", con.target, "vertex_groups", text="Vertex Group")
|
||||
layout.prop_search(con, "subtarget", con.target, "vertex_groups", text=_("Vertex Group"))
|
||||
|
||||
def ik_template(self, layout, con):
|
||||
# only used for iTaSC
|
||||
layout.prop(con, "pole_target")
|
||||
|
||||
if con.pole_target and con.pole_target.type == 'ARMATURE':
|
||||
layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
|
||||
layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text=_("Bone"))
|
||||
|
||||
if con.pole_target:
|
||||
row = layout.row()
|
||||
@ -96,19 +96,19 @@ class ConstraintButtonsPanel():
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Location:")
|
||||
col.label(text=_("Location:"))
|
||||
col.prop(con, "use_location_x", text="X")
|
||||
col.prop(con, "use_location_y", text="Y")
|
||||
col.prop(con, "use_location_z", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Rotation:")
|
||||
col.label(text=_("Rotation:"))
|
||||
col.prop(con, "use_rotation_x", text="X")
|
||||
col.prop(con, "use_rotation_y", text="Y")
|
||||
col.prop(con, "use_rotation_z", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Scale:")
|
||||
col.label(text=_("Scale:"))
|
||||
col.prop(con, "use_scale_x", text="X")
|
||||
col.prop(con, "use_scale_y", text="Y")
|
||||
col.prop(con, "use_scale_z", text="Z")
|
||||
@ -121,11 +121,11 @@ class ConstraintButtonsPanel():
|
||||
self.target_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="To:")
|
||||
row.label(text=_("To:"))
|
||||
row.prop(con, "track_axis", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "up_axis", text="Up")
|
||||
row.prop(con, "up_axis", text=_("Up"))
|
||||
row.prop(con, "use_target_z")
|
||||
|
||||
self.space_template(layout, con)
|
||||
@ -140,7 +140,7 @@ class ConstraintButtonsPanel():
|
||||
layout.prop(con, "pole_target")
|
||||
|
||||
if con.pole_target and con.pole_target.type == 'ARMATURE':
|
||||
layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
|
||||
layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text=_("Bone"))
|
||||
|
||||
if con.pole_target:
|
||||
row = layout.row()
|
||||
@ -152,11 +152,11 @@ class ConstraintButtonsPanel():
|
||||
col.prop(con, "iterations")
|
||||
col.prop(con, "chain_count")
|
||||
|
||||
col.label(text="Weight:")
|
||||
col.prop(con, "weight", text="Position", slider=True)
|
||||
col.label(text=_("Weight:"))
|
||||
col.prop(con, "weight", text=_("Position"), slider=True)
|
||||
sub = col.column()
|
||||
sub.active = con.use_rotation
|
||||
sub.prop(con, "orient_weight", text="Rotation", slider=True)
|
||||
sub.prop(con, "orient_weight", text=_("Rotation"), slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_tail")
|
||||
@ -170,16 +170,16 @@ class ConstraintButtonsPanel():
|
||||
self.ik_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Axis Ref:")
|
||||
row.label(text=_("Axis Ref:"))
|
||||
row.prop(con, "reference_axis", expand=True)
|
||||
split = layout.split(percentage=0.33)
|
||||
split.row().prop(con, "use_location")
|
||||
row = split.row()
|
||||
row.prop(con, "weight", text="Weight", slider=True)
|
||||
row.prop(con, "weight", text=_("Weight"), slider=True)
|
||||
row.active = con.use_location
|
||||
split = layout.split(percentage=0.33)
|
||||
row = split.row()
|
||||
row.label(text="Lock:")
|
||||
row.label(text=_("Lock:"))
|
||||
row = split.row()
|
||||
row.prop(con, "lock_location_x", text="X")
|
||||
row.prop(con, "lock_location_y", text="Y")
|
||||
@ -189,11 +189,11 @@ class ConstraintButtonsPanel():
|
||||
split = layout.split(percentage=0.33)
|
||||
split.row().prop(con, "use_rotation")
|
||||
row = split.row()
|
||||
row.prop(con, "orient_weight", text="Weight", slider=True)
|
||||
row.prop(con, "orient_weight", text=_("Weight"), slider=True)
|
||||
row.active = con.use_rotation
|
||||
split = layout.split(percentage=0.33)
|
||||
row = split.row()
|
||||
row.label(text="Lock:")
|
||||
row.label(text=_("Lock:"))
|
||||
row = split.row()
|
||||
row.prop(con, "lock_rotation_x", text="X")
|
||||
row.prop(con, "lock_rotation_y", text="Y")
|
||||
@ -207,8 +207,8 @@ class ConstraintButtonsPanel():
|
||||
layout.prop(con, "limit_mode")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "weight", text="Weight", slider=True)
|
||||
row.prop(con, "distance", text="Distance", slider=True)
|
||||
row.prop(con, "weight", text=_("Weight"), slider=True)
|
||||
row.prop(con, "distance", text=_("Distance"), slider=True)
|
||||
|
||||
def FOLLOW_PATH(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
@ -222,16 +222,16 @@ class ConstraintButtonsPanel():
|
||||
col = split.column()
|
||||
col.prop(con, "use_fixed_location")
|
||||
if con.use_fixed_location:
|
||||
col.prop(con, "offset_factor", text="Offset")
|
||||
col.prop(con, "offset_factor", text=_("Offset"))
|
||||
else:
|
||||
col.prop(con, "offset")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Forward:")
|
||||
row.label(text=_("Forward:"))
|
||||
row.prop(con, "forward_axis", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "up_axis", text="Up")
|
||||
row.prop(con, "up_axis", text=_("Up"))
|
||||
row.label()
|
||||
|
||||
def LIMIT_ROTATION(self, context, layout, con):
|
||||
@ -241,27 +241,27 @@ class ConstraintButtonsPanel():
|
||||
col.prop(con, "use_limit_x")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_x
|
||||
sub.prop(con, "min_x", text="Min")
|
||||
sub.prop(con, "max_x", text="Max")
|
||||
sub.prop(con, "min_x", text=_("Min"))
|
||||
sub.prop(con, "max_x", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_y")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_y
|
||||
sub.prop(con, "min_y", text="Min")
|
||||
sub.prop(con, "max_y", text="Max")
|
||||
sub.prop(con, "min_y", text=_("Min"))
|
||||
sub.prop(con, "max_y", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_z")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_z
|
||||
sub.prop(con, "min_z", text="Min")
|
||||
sub.prop(con, "max_z", text="Max")
|
||||
sub.prop(con, "min_z", text=_("Min"))
|
||||
sub.prop(con, "max_z", text=_("Max"))
|
||||
|
||||
layout.prop(con, "use_transform_limit")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Convert:")
|
||||
row.label(text=_("Convert:"))
|
||||
row.prop(con, "owner_space", text="")
|
||||
|
||||
def LIMIT_LOCATION(self, context, layout, con):
|
||||
@ -302,7 +302,7 @@ class ConstraintButtonsPanel():
|
||||
row.label()
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Convert:")
|
||||
row.label(text=_("Convert:"))
|
||||
row.prop(con, "owner_space", text="")
|
||||
|
||||
def LIMIT_SCALE(self, context, layout, con):
|
||||
@ -343,7 +343,7 @@ class ConstraintButtonsPanel():
|
||||
row.label()
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Convert:")
|
||||
row.label(text=_("Convert:"))
|
||||
row.prop(con, "owner_space", text="")
|
||||
|
||||
def COPY_ROTATION(self, context, layout, con):
|
||||
@ -355,19 +355,19 @@ class ConstraintButtonsPanel():
|
||||
col.prop(con, "use_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.use_x
|
||||
sub.prop(con, "invert_x", text="Invert")
|
||||
sub.prop(con, "invert_x", text=_("Invert"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_y", text="Y")
|
||||
sub = col.column()
|
||||
sub.active = con.use_y
|
||||
sub.prop(con, "invert_y", text="Invert")
|
||||
sub.prop(con, "invert_y", text=_("Invert"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_z", text="Z")
|
||||
sub = col.column()
|
||||
sub.active = con.use_z
|
||||
sub.prop(con, "invert_z", text="Invert")
|
||||
sub.prop(con, "invert_z", text=_("Invert"))
|
||||
|
||||
layout.prop(con, "use_offset")
|
||||
|
||||
@ -382,19 +382,19 @@ class ConstraintButtonsPanel():
|
||||
col.prop(con, "use_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.use_x
|
||||
sub.prop(con, "invert_x", text="Invert")
|
||||
sub.prop(con, "invert_x", text=_("Invert"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_y", text="Y")
|
||||
sub = col.column()
|
||||
sub.active = con.use_y
|
||||
sub.prop(con, "invert_y", text="Invert")
|
||||
sub.prop(con, "invert_y", text=_("Invert"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_z", text="Z")
|
||||
sub = col.column()
|
||||
sub.active = con.use_z
|
||||
sub.prop(con, "invert_z", text="Invert")
|
||||
sub.prop(con, "invert_z", text=_("Invert"))
|
||||
|
||||
layout.prop(con, "use_offset")
|
||||
|
||||
@ -415,7 +415,7 @@ class ConstraintButtonsPanel():
|
||||
def MAINTAIN_VOLUME(self, context, layout, con):
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Free:")
|
||||
row.label(text=_("Free:"))
|
||||
row.prop(con, "free_axis", expand=True)
|
||||
|
||||
layout.prop(con, "volume")
|
||||
@ -439,28 +439,28 @@ class ConstraintButtonsPanel():
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Action Length:")
|
||||
col.prop(con, "frame_start", text="Start")
|
||||
col.prop(con, "frame_end", text="End")
|
||||
col.label(text=_("Action Length:"))
|
||||
col.prop(con, "frame_start", text=_("Start"))
|
||||
col.prop(con, "frame_end", text=_("End"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Target Range:")
|
||||
col.prop(con, "min", text="Min")
|
||||
col.prop(con, "max", text="Max")
|
||||
col.label(text=_("Target Range:"))
|
||||
col.prop(con, "min", text=_("Min"))
|
||||
col.prop(con, "max", text=_("Max"))
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Convert:")
|
||||
row.label(text=_("Convert:"))
|
||||
row.prop(con, "target_space", text="")
|
||||
|
||||
def LOCKED_TRACK(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="To:")
|
||||
row.label(text=_("To:"))
|
||||
row.prop(con, "track_axis", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Lock:")
|
||||
row.label(text=_("Lock:"))
|
||||
row.prop(con, "lock_axis", expand=True)
|
||||
|
||||
def LIMIT_DISTANCE(self, context, layout, con):
|
||||
@ -471,7 +471,7 @@ class ConstraintButtonsPanel():
|
||||
col.operator("constraint.limitdistance_reset")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Clamp Region:")
|
||||
row.label(text=_("Clamp Region:"))
|
||||
row.prop(con, "limit_mode", text="")
|
||||
|
||||
row = layout.row()
|
||||
@ -482,16 +482,16 @@ class ConstraintButtonsPanel():
|
||||
self.target_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "rest_length", text="Rest Length")
|
||||
row.operator("constraint.stretchto_reset", text="Reset")
|
||||
row.prop(con, "rest_length", text=_("Rest Length"))
|
||||
row.operator("constraint.stretchto_reset", text=_("Reset"))
|
||||
|
||||
layout.prop(con, "bulge", text="Volume Variation")
|
||||
layout.prop(con, "bulge", text=_("Volume Variation"))
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Volume:")
|
||||
row.label(text=_("Volume:"))
|
||||
row.prop(con, "volume", expand=True)
|
||||
|
||||
row.label(text="Plane:")
|
||||
row.label(text=_("Plane:"))
|
||||
row.prop(con, "keep_axis", expand=True)
|
||||
|
||||
def FLOOR(self, context, layout, con):
|
||||
@ -504,7 +504,7 @@ class ConstraintButtonsPanel():
|
||||
layout.prop(con, "offset")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Min/Max:")
|
||||
row.label(text=_("Min/Max:"))
|
||||
row.prop(con, "floor_location", expand=True)
|
||||
|
||||
self.space_template(layout, con)
|
||||
@ -516,113 +516,113 @@ class ConstraintButtonsPanel():
|
||||
layout.prop(con, "child")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "use_linked_collision", text="Linked Collision")
|
||||
row.prop(con, "show_pivot", text="Display Pivot")
|
||||
row.prop(con, "use_linked_collision", text=_("Linked Collision"))
|
||||
row.prop(con, "show_pivot", text=_("Display Pivot"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Pivot:")
|
||||
col.label(text=_("Pivot:"))
|
||||
col.prop(con, "pivot_x", text="X")
|
||||
col.prop(con, "pivot_y", text="Y")
|
||||
col.prop(con, "pivot_z", text="Z")
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Axis:")
|
||||
col.label(text=_("Axis:"))
|
||||
col.prop(con, "axis_x", text="X")
|
||||
col.prop(con, "axis_y", text="Y")
|
||||
col.prop(con, "axis_z", text="Z")
|
||||
|
||||
if con.pivot_type == 'CONE_TWIST':
|
||||
layout.label(text="Limits:")
|
||||
layout.label(text=_("Limits:"))
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||
col.prop(con, "use_angular_limit_x", text=_("Angle X"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_x
|
||||
sub.prop(con, "limit_angle_max_x", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_angular_limit_y", text="Angle Y")
|
||||
col.prop(con, "use_angular_limit_y", text=_("Angle Y"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_y
|
||||
sub.prop(con, "limit_angle_max_y", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "use_angular_limit_z", text="Angle Z")
|
||||
col.prop(con, "use_angular_limit_z", text=_("Angle Z"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_z
|
||||
sub.prop(con, "limit_angle_max_z", text="")
|
||||
|
||||
elif con.pivot_type == 'GENERIC_6_DOF':
|
||||
layout.label(text="Limits:")
|
||||
layout.label(text=_("Limits:"))
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_x
|
||||
sub.prop(con, "limit_min_x", text="Min")
|
||||
sub.prop(con, "limit_max_x", text="Max")
|
||||
sub.prop(con, "limit_min_x", text=_("Min"))
|
||||
sub.prop(con, "limit_max_x", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_y", text="Y")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_y
|
||||
sub.prop(con, "limit_min_y", text="Min")
|
||||
sub.prop(con, "limit_max_y", text="Max")
|
||||
sub.prop(con, "limit_min_y", text=_("Min"))
|
||||
sub.prop(con, "limit_max_y", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_z", text="Z")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_z
|
||||
sub.prop(con, "limit_min_z", text="Min")
|
||||
sub.prop(con, "limit_max_z", text="Max")
|
||||
sub.prop(con, "limit_min_z", text=_("Min"))
|
||||
sub.prop(con, "limit_max_z", text=_("Max"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||
col.prop(con, "use_angular_limit_x", text=_("Angle X"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_x
|
||||
sub.prop(con, "limit_angle_min_x", text="Min")
|
||||
sub.prop(con, "limit_angle_max_x", text="Max")
|
||||
sub.prop(con, "limit_angle_min_x", text=_("Min"))
|
||||
sub.prop(con, "limit_angle_max_x", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_angular_limit_y", text="Angle Y")
|
||||
col.prop(con, "use_angular_limit_y", text=_("Angle Y"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_y
|
||||
sub.prop(con, "limit_angle_min_y", text="Min")
|
||||
sub.prop(con, "limit_angle_max_y", text="Max")
|
||||
sub.prop(con, "limit_angle_min_y", text=_("Min"))
|
||||
sub.prop(con, "limit_angle_max_y", text=_("Max"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_angular_limit_z", text="Angle Z")
|
||||
col.prop(con, "use_angular_limit_z", text=_("Angle Z"))
|
||||
sub = col.column()
|
||||
sub.active = con.use_angular_limit_z
|
||||
sub.prop(con, "limit_angle_min_z", text="Min")
|
||||
sub.prop(con, "limit_angle_max_z", text="Max")
|
||||
sub.prop(con, "limit_angle_min_z", text=_("Min"))
|
||||
sub.prop(con, "limit_angle_max_z", text=_("Max"))
|
||||
|
||||
elif con.pivot_type == 'HINGE':
|
||||
layout.label(text="Limits:")
|
||||
layout.label(text=_("Limits:"))
|
||||
split = layout.split()
|
||||
|
||||
row = split.row(align=True)
|
||||
col = row.column()
|
||||
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||
col.prop(con, "use_angular_limit_x", text=_("Angle X"))
|
||||
|
||||
col = row.column()
|
||||
col.active = con.use_angular_limit_x
|
||||
col.prop(con, "limit_angle_min_x", text="Min")
|
||||
col.prop(con, "limit_angle_min_x", text=_("Min"))
|
||||
col = row.column()
|
||||
col.active = con.use_angular_limit_x
|
||||
col.prop(con, "limit_angle_max_x", text="Max")
|
||||
col.prop(con, "limit_angle_max_x", text=_("Max"))
|
||||
|
||||
def CLAMP_TO(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Main Axis:")
|
||||
row.label(text=_("Main Axis:"))
|
||||
row.prop(con, "main_axis", expand=True)
|
||||
|
||||
layout.prop(con, "use_cyclic")
|
||||
@ -630,32 +630,32 @@ class ConstraintButtonsPanel():
|
||||
def TRANSFORM(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
|
||||
layout.prop(con, "use_motion_extrapolate", text="Extrapolate")
|
||||
layout.prop(con, "use_motion_extrapolate", text=_("Extrapolate"))
|
||||
|
||||
col = layout.column()
|
||||
col.row().label(text="Source:")
|
||||
col.row().label(text=_("Source:"))
|
||||
col.row().prop(con, "map_from", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
sub = split.column(align=True)
|
||||
sub.label(text="X:")
|
||||
sub.prop(con, "from_min_x", text="Min")
|
||||
sub.prop(con, "from_max_x", text="Max")
|
||||
sub.prop(con, "from_min_x", text=_("Min"))
|
||||
sub.prop(con, "from_max_x", text=_("Max"))
|
||||
|
||||
sub = split.column(align=True)
|
||||
sub.label(text="Y:")
|
||||
sub.prop(con, "from_min_y", text="Min")
|
||||
sub.prop(con, "from_max_y", text="Max")
|
||||
sub.prop(con, "from_min_y", text=_("Min"))
|
||||
sub.prop(con, "from_max_y", text=_("Max"))
|
||||
|
||||
sub = split.column(align=True)
|
||||
sub.label(text="Z:")
|
||||
sub.prop(con, "from_min_z", text="Min")
|
||||
sub.prop(con, "from_max_z", text="Max")
|
||||
sub.prop(con, "from_min_z", text=_("Min"))
|
||||
sub.prop(con, "from_max_z", text=_("Max"))
|
||||
|
||||
col = layout.column()
|
||||
row = col.row()
|
||||
row.label(text="Source to Destination Mapping:")
|
||||
row.label(text=_("Source to Destination Mapping:"))
|
||||
|
||||
# note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't
|
||||
# open it. Thus we are using the hardcoded value instead.
|
||||
@ -674,7 +674,7 @@ class ConstraintButtonsPanel():
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Destination:")
|
||||
col.label(text=_("Destination:"))
|
||||
col.row().prop(con, "map_to", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
@ -683,22 +683,22 @@ class ConstraintButtonsPanel():
|
||||
col.label(text="X:")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(con, "to_min_x", text="Min")
|
||||
sub.prop(con, "to_max_x", text="Max")
|
||||
sub.prop(con, "to_min_x", text=_("Min"))
|
||||
sub.prop(con, "to_max_x", text=_("Max"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Y:")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(con, "to_min_y", text="Min")
|
||||
sub.prop(con, "to_max_y", text="Max")
|
||||
sub.prop(con, "to_min_y", text=_("Min"))
|
||||
sub.prop(con, "to_max_y", text=_("Max"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Z:")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(con, "to_min_z", text="Min")
|
||||
sub.prop(con, "to_max_z", text="Max")
|
||||
sub.prop(con, "to_min_z", text=_("Min"))
|
||||
sub.prop(con, "to_max_z", text=_("Max"))
|
||||
|
||||
self.space_template(layout, con)
|
||||
|
||||
@ -718,20 +718,20 @@ class ConstraintButtonsPanel():
|
||||
self.target_template(layout, con)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="To:")
|
||||
row.label(text=_("To:"))
|
||||
row.prop(con, "track_axis", expand=True)
|
||||
|
||||
def SPLINE_IK(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Spline Fitting:")
|
||||
col.label(text=_("Spline Fitting:"))
|
||||
col.prop(con, "chain_count")
|
||||
col.prop(con, "use_even_divisions")
|
||||
col.prop(con, "use_chain_offset")
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Chain Scaling:")
|
||||
col.label(text=_("Chain Scaling:"))
|
||||
col.prop(con, "use_y_stretch")
|
||||
col.prop(con, "xz_scale_mode")
|
||||
col.prop(con, "use_curve_radius")
|
||||
@ -741,20 +741,20 @@ class ConstraintButtonsPanel():
|
||||
|
||||
if con.target:
|
||||
col = layout.column()
|
||||
col.prop(con, "offset", text="Pivot Offset")
|
||||
col.prop(con, "offset", text=_("Pivot Offset"))
|
||||
else:
|
||||
col = layout.column()
|
||||
col.prop(con, "use_relative_location")
|
||||
if con.use_relative_location:
|
||||
col.prop(con, "offset", text="Relative Pivot Point")
|
||||
col.prop(con, "offset", text=_("Relative Pivot Point"))
|
||||
else:
|
||||
col.prop(con, "offset", text="Absolute Pivot Point")
|
||||
col.prop(con, "offset", text=_("Absolute Pivot Point"))
|
||||
|
||||
col = layout.column()
|
||||
col.prop(con, "rotation_range", text="Pivot When")
|
||||
col.prop(con, "rotation_range", text=_("Pivot When"))
|
||||
|
||||
def SCRIPT(self, context, layout, con):
|
||||
layout.label("Blender 2.5 has no py-constraints")
|
||||
layout.label( _("Blender 2.5 has no py-constraints") )
|
||||
|
||||
|
||||
class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
|
||||
@ -773,7 +773,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
|
||||
if ob.mode == 'POSE':
|
||||
box = layout.box()
|
||||
box.alert = True
|
||||
box.label(icon='INFO', text="See Bone Constraints tab to Add Constraints to active bone")
|
||||
box.label(icon='INFO', text=_("See Bone Constraints tab to Add Constraints to active bone"))
|
||||
else:
|
||||
layout.operator_menu_enum("object.constraint_add", "type")
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
from blf import gettext as _
|
||||
|
||||
from bl_ui.properties_physics_common import (
|
||||
point_cache_ui,
|
||||
@ -108,17 +109,17 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
layout.template_ID(context.space_data, "pin_id")
|
||||
|
||||
if part.is_fluid:
|
||||
layout.label(text="Settings used for fluid")
|
||||
layout.label(text=_("Settings used for fluid"))
|
||||
return
|
||||
|
||||
layout.prop(part, "type", text="Type")
|
||||
layout.prop(part, "type", text=_("Type"))
|
||||
|
||||
elif not psys.settings:
|
||||
split = layout.split(percentage=0.32)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Name:")
|
||||
col.label(text="Settings:")
|
||||
col.label(text=_("Name:"))
|
||||
col.label(text=_("Settings:"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(psys, "name", text="")
|
||||
@ -128,10 +129,10 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
|
||||
split = layout.split(percentage=0.32)
|
||||
col = split.column()
|
||||
col.label(text="Name:")
|
||||
col.label(text=_("Name:"))
|
||||
if part.is_fluid == False:
|
||||
col.label(text="Settings:")
|
||||
col.label(text="Type:")
|
||||
col.label(text=_("Settings:"))
|
||||
col.label(text=_("Type:"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(psys, "name", text="")
|
||||
@ -141,8 +142,8 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
row.template_ID(psys, "settings", new="particle.new")
|
||||
|
||||
#row = layout.row()
|
||||
#row.label(text="Viewport")
|
||||
#row.label(text="Render")
|
||||
#row.label(text=_("Viewport"))
|
||||
#row.label(text=_("Render"))
|
||||
|
||||
if part.is_fluid:
|
||||
layout.label(text=str(part.count) + " fluid particles for this frame")
|
||||
@ -157,7 +158,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if part.type == 'HAIR':
|
||||
if psys is not None and psys.is_edited:
|
||||
split.operator("particle.edited_clear", text="Free Edit")
|
||||
split.operator("particle.edited_clear", text=_("Free Edit"))
|
||||
else:
|
||||
row = split.row()
|
||||
row.enabled = particle_panel_enabled(context, psys)
|
||||
@ -174,7 +175,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
|
||||
elif psys is not None and part.type == 'REACTOR':
|
||||
split.enabled = particle_panel_enabled(context, psys)
|
||||
split.prop(psys, "reactor_target_object")
|
||||
split.prop(psys, "reactor_target_particle_system", text="Particle System")
|
||||
split.prop(psys, "reactor_target_particle_system", text=_("Particle System"))
|
||||
|
||||
|
||||
class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
|
||||
@ -221,7 +222,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
|
||||
col.prop(part, "lifetime")
|
||||
col.prop(part, "lifetime_random", slider=True)
|
||||
|
||||
layout.label(text="Emit From:")
|
||||
layout.label(text=_("Emit From:"))
|
||||
layout.prop(part, "emit_from", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
@ -239,11 +240,11 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
if part.distribution == 'JIT':
|
||||
row.prop(part, "userjit", text="Particles/Face")
|
||||
row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
|
||||
row.prop(part, "userjit", text=_("Particles/Face"))
|
||||
row.prop(part, "jitter_factor", text=_("Jittering Amount"), slider=True)
|
||||
elif part.distribution == 'GRID':
|
||||
row.prop(part, "grid_resolution")
|
||||
row.prop(part, "grid_random", text="Random", slider=True)
|
||||
row.prop(part, "grid_random", text=_("Random"), slider=True)
|
||||
|
||||
|
||||
class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
|
||||
@ -284,22 +285,22 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Material:")
|
||||
col.label(text=_("Material:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(cloth, "pin_stiffness", text="Stiffness")
|
||||
sub.prop(cloth, "pin_stiffness", text=_("Stiffness"))
|
||||
sub.prop(cloth, "mass")
|
||||
sub.prop(cloth, "bending_stiffness", text="Bending")
|
||||
sub.prop(cloth, "bending_stiffness", text=_("Bending"))
|
||||
sub.prop(cloth, "internal_friction", slider=True)
|
||||
sub.prop(cloth, "collider_friction", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Damping:")
|
||||
col.label(text=_("Damping:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(cloth, "spring_damping", text="Spring")
|
||||
sub.prop(cloth, "air_damping", text="Air")
|
||||
sub.prop(cloth, "spring_damping", text=_("Spring"))
|
||||
sub.prop(cloth, "air_damping", text=_("Air"))
|
||||
|
||||
col.label(text="Quality:")
|
||||
col.prop(cloth, "quality", text="Steps", slider=True)
|
||||
col.label(text=_("Quality:"))
|
||||
col.prop(cloth, "quality", text=_("Steps"), slider=True)
|
||||
|
||||
|
||||
class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
|
||||
@ -355,17 +356,17 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Emitter Geometry:")
|
||||
col.label(text=_("Emitter Geometry:"))
|
||||
col.prop(part, "normal_factor")
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "tangent_factor")
|
||||
sub.prop(part, "tangent_phase", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Emitter Object:")
|
||||
col.label(text=_("Emitter Object:"))
|
||||
col.prop(part, "object_align_factor", text="")
|
||||
|
||||
layout.label(text="Other:")
|
||||
layout.label(text=_("Other:"))
|
||||
row = layout.row()
|
||||
if part.emit_from == 'PARTICLE':
|
||||
row.prop(part, "particle_factor")
|
||||
@ -406,21 +407,21 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
|
||||
layout.enabled = particle_panel_enabled(context, psys)
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Initial Rotation:")
|
||||
row.label(text=_("Initial Rotation:"))
|
||||
row.prop(part, "use_dynamic_rotation")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(part, "rotation_mode", text="")
|
||||
col.prop(part, "rotation_factor_random", slider=True, text="Random")
|
||||
col.prop(part, "rotation_factor_random", slider=True, text=_("Random"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(part, "phase_factor", slider=True)
|
||||
col.prop(part, "phase_factor_random", text="Random", slider=True)
|
||||
col.prop(part, "phase_factor_random", text=_("Random"), slider=True)
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Angular Velocity:")
|
||||
col.label(text=_("Angular Velocity:"))
|
||||
col.row().prop(part, "angular_velocity_mode", expand=True)
|
||||
|
||||
if part.angular_velocity_mode != 'NONE':
|
||||
@ -461,19 +462,19 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
if part.physics_type != 'NO':
|
||||
col = row.column(align=True)
|
||||
col.prop(part, "mass")
|
||||
col.prop(part, "use_multiply_size_mass", text="Multiply mass with size")
|
||||
col.prop(part, "use_multiply_size_mass", text=_("Multiply mass with size"))
|
||||
|
||||
if part.physics_type in {'NEWTON', 'FLUID'}:
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Forces:")
|
||||
col.label(text=_("Forces:"))
|
||||
col.prop(part, "brownian_factor")
|
||||
col.prop(part, "drag_factor", slider=True)
|
||||
col.prop(part, "damping", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Integration:")
|
||||
col.label(text=_("Integration:"))
|
||||
col.prop(part, "integrator", text="")
|
||||
col.prop(part, "timestep")
|
||||
col.prop(part, "subframes")
|
||||
@ -488,13 +489,13 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Fluid properties:")
|
||||
col.prop(fluid, "stiffness", text="Stiffness")
|
||||
col.prop(fluid, "linear_viscosity", text="Viscosity")
|
||||
col.prop(fluid, "buoyancy", text="Buoancy", slider=True)
|
||||
col.label(text=_("Fluid properties:"))
|
||||
col.prop(fluid, "stiffness", text=_("Stiffness"))
|
||||
col.prop(fluid, "linear_viscosity", text=_("Viscosity"))
|
||||
col.prop(fluid, "buoyancy", text=_("Buoancy"), slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Advanced:")
|
||||
col.label(text=_("Advanced:"))
|
||||
|
||||
sub = col.row()
|
||||
sub.prop(fluid, "repulsion", slider=fluid.factor_repulsion)
|
||||
@ -515,8 +516,8 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Springs:")
|
||||
col.prop(fluid, "spring_force", text="Force")
|
||||
col.label(text=_("Springs:"))
|
||||
col.prop(fluid, "spring_force", text=_("Force"))
|
||||
col.prop(fluid, "use_viscoelastic_springs")
|
||||
sub = col.column(align=True)
|
||||
sub.active = fluid.use_viscoelastic_springs
|
||||
@ -524,7 +525,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
sub.prop(fluid, "plasticity", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Advanced:")
|
||||
col.label(text=_("Advanced:"))
|
||||
sub = col.row()
|
||||
sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length)
|
||||
sub.prop(fluid, "factor_rest_length", text="")
|
||||
@ -532,7 +533,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
sub = col.column()
|
||||
sub.active = fluid.use_viscoelastic_springs
|
||||
sub.prop(fluid, "use_initial_rest_length")
|
||||
sub.prop(fluid, "spring_frames", text="Frames")
|
||||
sub.prop(fluid, "spring_frames", text=_("Frames"))
|
||||
|
||||
elif part.physics_type == 'KEYED':
|
||||
split = layout.split()
|
||||
@ -541,11 +542,11 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
col.active = not psys.use_keyed_timing
|
||||
col.prop(part, "keyed_loops", text="Loops")
|
||||
col.prop(part, "keyed_loops", text=_("Loops"))
|
||||
if psys:
|
||||
row.prop(psys, "use_keyed_timing", text="Use Timing")
|
||||
row.prop(psys, "use_keyed_timing", text=_("Use Timing"))
|
||||
|
||||
layout.label(text="Keys:")
|
||||
layout.label(text=_("Keys:"))
|
||||
elif part.physics_type == 'BOIDS':
|
||||
boids = part.boids
|
||||
|
||||
@ -581,7 +582,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column(align=True)
|
||||
col.label(text="Battle:")
|
||||
col.label(text=_("Battle:"))
|
||||
col.prop(boids, "health")
|
||||
col.prop(boids, "strength")
|
||||
col.prop(boids, "aggression")
|
||||
@ -589,16 +590,16 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
col.prop(boids, "range")
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Misc:")
|
||||
col.label(text=_("Misc:"))
|
||||
col.prop(boids, "bank", slider=True)
|
||||
col.prop(boids, "pitch", slider=True)
|
||||
col.prop(boids, "height", slider=True)
|
||||
|
||||
if psys and part.physics_type in {'KEYED', 'BOIDS', 'FLUID'}:
|
||||
if part.physics_type == 'BOIDS':
|
||||
layout.label(text="Relations:")
|
||||
layout.label(text=_("Relations:"))
|
||||
elif part.physics_type == 'FLUID':
|
||||
layout.label(text="Fluid interaction:")
|
||||
layout.label(text=_("Fluid interaction:"))
|
||||
|
||||
row = layout.row()
|
||||
row.template_list(psys, "targets", psys, "active_particle_target_index")
|
||||
@ -621,7 +622,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
#doesn't work yet
|
||||
#col.alert = key.valid
|
||||
col.prop(key, "object", text="")
|
||||
col.prop(key, "system", text="System")
|
||||
col.prop(key, "system", text=_("System"))
|
||||
col = row.column()
|
||||
col.active = psys.use_keyed_timing
|
||||
col.prop(key, "time")
|
||||
@ -631,7 +632,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
#doesn't work yet
|
||||
#sub.alert = key.valid
|
||||
sub.prop(key, "object", text="")
|
||||
sub.prop(key, "system", text="System")
|
||||
sub.prop(key, "system", text=_("System"))
|
||||
|
||||
layout.prop(key, "alliance", expand=True)
|
||||
elif part.physics_type == 'FLUID':
|
||||
@ -639,7 +640,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
|
||||
#doesn't work yet
|
||||
#sub.alert = key.valid
|
||||
sub.prop(key, "object", text="")
|
||||
sub.prop(key, "system", text="System")
|
||||
sub.prop(key, "system", text=_("System"))
|
||||
|
||||
|
||||
class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
|
||||
@ -678,7 +679,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
|
||||
|
||||
state = boids.active_boid_state
|
||||
|
||||
#layout.prop(state, "name", text="State name")
|
||||
#layout.prop(state, "name", text=_("State name"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(state, "ruleset_type")
|
||||
@ -721,7 +722,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
|
||||
row.prop(rule, "use_predict")
|
||||
row.prop(rule, "fear_factor")
|
||||
elif rule.type == 'FOLLOW_PATH':
|
||||
row.label(text="Not yet functional")
|
||||
row.label(text=_("Not yet functional"))
|
||||
elif rule.type == 'AVOID_COLLISION':
|
||||
row.prop(rule, "use_avoid")
|
||||
row.prop(rule, "use_avoid_collision")
|
||||
@ -800,14 +801,14 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
sub.active = (part.use_render_adaptive is True and part.use_strand_primitive is False)
|
||||
sub.prop(part, "adaptive_pixel")
|
||||
col.prop(part, "use_hair_bspline")
|
||||
col.prop(part, "render_step", text="Steps")
|
||||
col.prop(part, "render_step", text=_("Steps"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Timing:")
|
||||
col.label(text=_("Timing:"))
|
||||
col.prop(part, "use_absolute_path_time")
|
||||
col.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "length_random", text="Random", slider=True)
|
||||
col.prop(part, "path_start", text=_("Start"), slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "path_end", text=_("End"), slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "length_random", text=_("Random"), slider=True)
|
||||
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
@ -864,30 +865,30 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
elif part.render_type == 'BILLBOARD':
|
||||
ob = context.object
|
||||
|
||||
col.label(text="Align:")
|
||||
col.label(text=_("Align:"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(part, "billboard_align", expand=True)
|
||||
row.prop(part, "lock_billboard", text="Lock")
|
||||
row.prop(part, "lock_billboard", text=_("Lock"))
|
||||
row = layout.row()
|
||||
row.prop(part, "billboard_object")
|
||||
|
||||
row = layout.row()
|
||||
col = row.column(align=True)
|
||||
col.label(text="Tilt:")
|
||||
col.prop(part, "billboard_tilt", text="Angle", slider=True)
|
||||
col.prop(part, "billboard_tilt_random", text="Random", slider=True)
|
||||
col.label(text=_("Tilt:"))
|
||||
col.prop(part, "billboard_tilt", text=_("Angle"), slider=True)
|
||||
col.prop(part, "billboard_tilt_random", text=_("Random"), slider=True)
|
||||
col = row.column()
|
||||
col.prop(part, "billboard_offset")
|
||||
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
col.prop(part, "billboard_size", text="Scale")
|
||||
col.prop(part, "billboard_size", text=_("Scale"))
|
||||
if part.billboard_align == 'VEL':
|
||||
col = row.column(align=True)
|
||||
col.label("Velocity Scale:")
|
||||
col.prop(part, "billboard_velocity_head", text="Head")
|
||||
col.prop(part, "billboard_velocity_tail", text="Tail")
|
||||
col.label(_("Velocity Scale:"))
|
||||
col.prop(part, "billboard_velocity_head", text=_("Head"))
|
||||
col.prop(part, "billboard_velocity_tail", text=_("Tail"))
|
||||
|
||||
if psys:
|
||||
col = layout.column()
|
||||
@ -895,8 +896,8 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
col.prop_search(psys, "billboard_time_index_uv", ob.data, "uv_textures")
|
||||
|
||||
split = layout.split(percentage=0.33)
|
||||
split.label(text="Split uv's:")
|
||||
split.prop(part, "billboard_uv_split", text="Number of splits")
|
||||
split.label(text=_("Split uv's:"))
|
||||
split.prop(part, "billboard_uv_split", text=_("Number of splits"))
|
||||
|
||||
if psys:
|
||||
col = layout.column()
|
||||
@ -904,9 +905,9 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
col.prop_search(psys, "billboard_split_uv", ob.data, "uv_textures")
|
||||
|
||||
row = col.row()
|
||||
row.label(text="Animate:")
|
||||
row.label(text=_("Animate:"))
|
||||
row.prop(part, "billboard_animation", text="")
|
||||
row.label(text="Offset:")
|
||||
row.label(text=_("Offset:"))
|
||||
row.prop(part, "billboard_offset_split", text="")
|
||||
|
||||
if part.render_type == 'HALO' or part.render_type == 'LINE' or part.render_type == 'BILLBOARD':
|
||||
@ -914,10 +915,10 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
|
||||
col = row.column()
|
||||
col.prop(part, "trail_count")
|
||||
if part.trail_count > 1:
|
||||
col.prop(part, "use_absolute_path_time", text="Length in frames")
|
||||
col.prop(part, "use_absolute_path_time", text=_("Length in frames"))
|
||||
col = row.column()
|
||||
col.prop(part, "path_end", text="Length", slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "length_random", text="Random", slider=True)
|
||||
col.prop(part, "path_end", text=_("Length"), slider=not part.use_absolute_path_time)
|
||||
col.prop(part, "length_random", text=_("Random"), slider=True)
|
||||
else:
|
||||
col = row.column()
|
||||
col.label(text="")
|
||||
@ -965,11 +966,11 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
|
||||
if part.draw_percentage != 100 and psys is not None:
|
||||
if part.type == 'HAIR':
|
||||
if psys.use_hair_dynamics and psys.point_cache.is_baked == False:
|
||||
layout.row().label(text="Display percentage makes dynamics inaccurate without baking!")
|
||||
layout.row().label(text=_("Display percentage makes dynamics inaccurate without baking!"))
|
||||
else:
|
||||
phystype = part.physics_type
|
||||
if phystype != 'NO' and phystype != 'KEYED' and psys.point_cache.is_baked == False:
|
||||
layout.row().label(text="Display percentage makes dynamics inaccurate without baking!")
|
||||
layout.row().label(text=_("Display percentage makes dynamics inaccurate without baking!"))
|
||||
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
@ -980,11 +981,11 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
|
||||
col.prop(part, "show_health")
|
||||
|
||||
col = row.column(align=True)
|
||||
col.label(text="Color:")
|
||||
col.label(text=_("Color:"))
|
||||
col.prop(part, "draw_color", text="")
|
||||
sub = col.row()
|
||||
sub.active = part.draw_color in ('VELOCITY', 'ACCELERATION')
|
||||
sub.prop(part, "color_maximum", text="Max")
|
||||
sub.prop(part, "color_maximum", text=_("Max"))
|
||||
|
||||
if (path):
|
||||
col.prop(part, "draw_step")
|
||||
@ -1013,24 +1014,24 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column(align=True)
|
||||
col.prop(part, "child_nbr", text="Display")
|
||||
col.prop(part, "rendered_child_count", text="Render")
|
||||
col.prop(part, "child_nbr", text=_("Display"))
|
||||
col.prop(part, "rendered_child_count", text=_("Render"))
|
||||
|
||||
if part.child_type == 'INTERPOLATED':
|
||||
col = row.column()
|
||||
if psys:
|
||||
col.prop(psys, "child_seed", text="Seed")
|
||||
col.prop(psys, "child_seed", text=_("Seed"))
|
||||
col.prop(part, "virtual_parents", slider=True)
|
||||
col.prop(part, "create_long_hair_children")
|
||||
else:
|
||||
col = row.column(align=True)
|
||||
col.prop(part, "child_size", text="Size")
|
||||
col.prop(part, "child_size_random", text="Random")
|
||||
col.prop(part, "child_size", text=_("Size"))
|
||||
col.prop(part, "child_size_random", text=_("Random"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Effects:")
|
||||
col.label(text=_("Effects:"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "clump_factor", slider=True)
|
||||
@ -1042,38 +1043,38 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
|
||||
|
||||
if part.child_type == 'SIMPLE':
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "child_radius", text="Radius")
|
||||
sub.prop(part, "child_roundness", text="Roundness", slider=True)
|
||||
sub.prop(part, "child_radius", text=_("Radius"))
|
||||
sub.prop(part, "child_roundness", text=_("Roundness"), slider=True)
|
||||
if psys:
|
||||
sub.prop(psys, "child_seed", text="Seed")
|
||||
sub.prop(psys, "child_seed", text=_("Seed"))
|
||||
elif part.virtual_parents > 0.0:
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Parting not")
|
||||
sub.label(text="available with")
|
||||
sub.label(text="virtual parents")
|
||||
sub.label(text=_("Parting not"))
|
||||
sub.label(text=_("available with"))
|
||||
sub.label(text=_("virtual parents"))
|
||||
else:
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "child_parting_factor", text="Parting", slider=True)
|
||||
sub.prop(part, "child_parting_min", text="Min")
|
||||
sub.prop(part, "child_parting_max", text="Max")
|
||||
sub.prop(part, "child_parting_factor", text=_("Parting"), slider=True)
|
||||
sub.prop(part, "child_parting_min", text=_("Min"))
|
||||
sub.prop(part, "child_parting_max", text=_("Max"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Roughness:")
|
||||
col.label(text=_("Roughness:"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "roughness_1", text="Uniform")
|
||||
sub.prop(part, "roughness_1_size", text="Size")
|
||||
sub.prop(part, "roughness_1", text=_("Uniform"))
|
||||
sub.prop(part, "roughness_1_size", text=_("Size"))
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "roughness_endpoint", "Endpoint")
|
||||
sub.prop(part, "roughness_end_shape")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "roughness_2", text="Random")
|
||||
sub.prop(part, "roughness_2_size", text="Size")
|
||||
sub.prop(part, "roughness_2", text=_("Random"))
|
||||
sub.prop(part, "roughness_2_size", text=_("Size"))
|
||||
sub.prop(part, "roughness_2_threshold", slider=True)
|
||||
|
||||
layout.row().label(text="Kink:")
|
||||
layout.row().label(text=_("Kink:"))
|
||||
layout.row().prop(part, "kink", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
@ -1082,7 +1083,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.prop(part, "kink_amplitude")
|
||||
sub.prop(part, "kink_amplitude_clump", text="Clump", slider=True)
|
||||
sub.prop(part, "kink_amplitude_clump", text=_("Clump"), slider=True)
|
||||
col.prop(part, "kink_flat", slider=True)
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
@ -1123,25 +1124,25 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
row.prop(part, "use_self_effect")
|
||||
row.prop(part, "effector_amount", text="Amount")
|
||||
row.prop(part, "effector_amount", text=_("Amount"))
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
split.label(text="Type 1:")
|
||||
split.label(text=_("Type 1:"))
|
||||
split.prop(part.force_field_1, "type", text="")
|
||||
basic_force_field_settings_ui(self, context, part.force_field_1)
|
||||
if part.force_field_1.type != 'NONE':
|
||||
layout.label(text="Falloff:")
|
||||
layout.label(text=_("Falloff:"))
|
||||
basic_force_field_falloff_ui(self, context, part.force_field_1)
|
||||
|
||||
if part.force_field_1.type != 'NONE':
|
||||
layout.label(text="")
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
split.label(text="Type 2:")
|
||||
split.label(text=_("Type 2:"))
|
||||
split.prop(part.force_field_2, "type", text="")
|
||||
basic_force_field_settings_ui(self, context, part.force_field_2)
|
||||
if part.force_field_2.type != 'NONE':
|
||||
layout.label(text="Falloff:")
|
||||
layout.label(text=_("Falloff:"))
|
||||
basic_force_field_falloff_ui(self, context, part.force_field_2)
|
||||
|
||||
|
||||
@ -1163,56 +1164,56 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
|
||||
psys = context.particle_system
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Vertex Group")
|
||||
row.label(text="Negate")
|
||||
row.label(text=_("Vertex Group"))
|
||||
row.label(text=_("Negate"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
|
||||
row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text=_("Density"))
|
||||
row.prop(psys, "invert_vertex_group_density", text="")
|
||||
|
||||
# Commented out vertex groups don't work and are still waiting for better implementation
|
||||
# row = layout.row()
|
||||
# row.prop_search(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
|
||||
# row.prop_search(psys, "vertex_group_velocity", ob, "vertex_groups", text=_("Velocity"))
|
||||
# row.prop(psys, "invert_vertex_group_velocity", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
|
||||
row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text=_("Length"))
|
||||
row.prop(psys, "invert_vertex_group_length", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
|
||||
row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text=_("Clump"))
|
||||
row.prop(psys, "invert_vertex_group_clump", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
|
||||
row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text=_("Kink"))
|
||||
row.prop(psys, "invert_vertex_group_kink", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1")
|
||||
row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text=_("Roughness 1"))
|
||||
row.prop(psys, "invert_vertex_group_roughness_1", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2")
|
||||
row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text=_("Roughness 2"))
|
||||
row.prop(psys, "invert_vertex_group_roughness_2", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
|
||||
row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text=_("Roughness End"))
|
||||
row.prop(psys, "invert_vertex_group_roughness_end", text="")
|
||||
|
||||
# row = layout.row()
|
||||
# row.prop_search(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
|
||||
# row.prop_search(psys, "vertex_group_size", ob, "vertex_groups", text=_("Size"))
|
||||
# row.prop(psys, "invert_vertex_group_size", text="")
|
||||
|
||||
# row = layout.row()
|
||||
# row.prop_search(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
|
||||
# row.prop_search(psys, "vertex_group_tangent", ob, "vertex_groups", text=_("Tangent"))
|
||||
# row.prop(psys, "invert_vertex_group_tangent", text="")
|
||||
|
||||
# row = layout.row()
|
||||
# row.prop_search(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
|
||||
# row.prop_search(psys, "vertex_group_rotation", ob, "vertex_groups", text=_("Rotation"))
|
||||
# row.prop(psys, "invert_vertex_group_rotation", text="")
|
||||
|
||||
# row = layout.row()
|
||||
# row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
|
||||
# row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text=_("Field"))
|
||||
# row.prop(psys, "invert_vertex_group_field", text="")
|
||||
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
from bl_ui.properties_physics_common import (
|
||||
point_cache_ui,
|
||||
@ -71,50 +71,50 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Presets:")
|
||||
col.label(text=_("Presets:"))
|
||||
sub = col.row(align=True)
|
||||
sub.menu("CLOTH_MT_presets", text=bpy.types.CLOTH_MT_presets.bl_label)
|
||||
sub.operator("cloth.preset_add", text="", icon="ZOOMIN")
|
||||
sub.operator("cloth.preset_add", text="", icon="ZOOMOUT").remove_active = True
|
||||
|
||||
col.label(text="Quality:")
|
||||
col.prop(cloth, "quality", text="Steps", slider=True)
|
||||
col.label(text=_("Quality:"))
|
||||
col.prop(cloth, "quality", text=_("Steps"), slider=True)
|
||||
|
||||
col.label(text="Material:")
|
||||
col.label(text=_("Material:"))
|
||||
col.prop(cloth, "mass")
|
||||
col.prop(cloth, "structural_stiffness", text="Structural")
|
||||
col.prop(cloth, "bending_stiffness", text="Bending")
|
||||
col.prop(cloth, "structural_stiffness", text=_("Structural"))
|
||||
col.prop(cloth, "bending_stiffness", text=_("Bending"))
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Damping:")
|
||||
col.prop(cloth, "spring_damping", text="Spring")
|
||||
col.prop(cloth, "air_damping", text="Air")
|
||||
col.label(text=_("Damping:"))
|
||||
col.prop(cloth, "spring_damping", text=_("Spring"))
|
||||
col.prop(cloth, "air_damping", text=_("Air"))
|
||||
|
||||
col.prop(cloth, "use_pin_cloth", text="Pinning")
|
||||
col.prop(cloth, "use_pin_cloth", text=_("Pinning"))
|
||||
sub = col.column()
|
||||
sub.active = cloth.use_pin_cloth
|
||||
sub.prop_search(cloth, "vertex_group_mass", ob, "vertex_groups", text="")
|
||||
sub.prop(cloth, "pin_stiffness", text="Stiffness")
|
||||
sub.prop(cloth, "pin_stiffness", text=_("Stiffness"))
|
||||
|
||||
col.label(text="Pre roll:")
|
||||
col.prop(cloth, "pre_roll", text="Frame")
|
||||
col.label(text=_("Pre roll:"))
|
||||
col.prop(cloth, "pre_roll", text=_("Frame"))
|
||||
|
||||
# Disabled for now
|
||||
"""
|
||||
if cloth.vertex_group_mass:
|
||||
layout.label(text="Goal:")
|
||||
layout.label(text=_("Goal:"))
|
||||
|
||||
col = layout.column_flow()
|
||||
col.prop(cloth, "goal_default", text="Default")
|
||||
col.prop(cloth, "goal_spring", text="Stiffness")
|
||||
col.prop(cloth, "goal_friction", text="Friction")
|
||||
col.prop(cloth, "goal_default", text=_("Default"))
|
||||
col.prop(cloth, "goal_spring", text=_("Stiffness"))
|
||||
col.prop(cloth, "goal_friction", text=_("Friction"))
|
||||
"""
|
||||
|
||||
key = ob.data.shape_keys
|
||||
|
||||
if key:
|
||||
col.label(text="Rest Shape Key:")
|
||||
col.label(text=_("Rest Shape Key:"))
|
||||
col.prop_search(cloth, "rest_shape_key", key, "key_blocks", text="")
|
||||
|
||||
|
||||
@ -156,18 +156,18 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(cloth, "collision_quality", slider=True, text="Quality")
|
||||
col.prop(cloth, "distance_min", slider=True, text="Distance")
|
||||
col.prop(cloth, "repel_force", slider=True, text="Repel")
|
||||
col.prop(cloth, "distance_repel", slider=True, text="Repel Distance")
|
||||
col.prop(cloth, "collision_quality", slider=True, text=_("Quality"))
|
||||
col.prop(cloth, "distance_min", slider=True, text=_("Distance"))
|
||||
col.prop(cloth, "repel_force", slider=True, text=_("Repel"))
|
||||
col.prop(cloth, "distance_repel", slider=True, text=_("Repel Distance"))
|
||||
col.prop(cloth, "friction")
|
||||
|
||||
col = split.column()
|
||||
col.prop(cloth, "use_self_collision", text="Self Collision")
|
||||
col.prop(cloth, "use_self_collision", text=_("Self Collision"))
|
||||
sub = col.column()
|
||||
sub.active = cloth.use_self_collision
|
||||
sub.prop(cloth, "self_collision_quality", slider=True, text="Quality")
|
||||
sub.prop(cloth, "self_distance_min", slider=True, text="Distance")
|
||||
sub.prop(cloth, "self_collision_quality", slider=True, text=_("Quality"))
|
||||
sub.prop(cloth, "self_distance_min", slider=True, text=_("Distance"))
|
||||
|
||||
layout.prop(cloth, "group")
|
||||
|
||||
@ -198,14 +198,14 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Structural Stiffness:")
|
||||
col.label(text=_("Structural Stiffness:"))
|
||||
col.prop_search(cloth, "vertex_group_structural_stiffness", ob, "vertex_groups", text="")
|
||||
col.prop(cloth, "structural_stiffness_max", text="Max")
|
||||
col.prop(cloth, "structural_stiffness_max", text=_("Max"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Bending Stiffness:")
|
||||
col.label(text=_("Bending Stiffness:"))
|
||||
col.prop_search(cloth, "vertex_group_bending", ob, "vertex_groups", text="")
|
||||
col.prop(cloth, "bending_stiffness_max", text="Max")
|
||||
col.prop(cloth, "bending_stiffness_max", text=_("Max"))
|
||||
|
||||
|
||||
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class PhysicButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -53,27 +53,27 @@ class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
|
||||
ob = context.object
|
||||
|
||||
layout = self.layout
|
||||
layout.label("Enable physics for:")
|
||||
layout.label(_("Enable physics for:"))
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
|
||||
if(context.object.field.type == 'NONE'):
|
||||
col.operator("object.forcefield_toggle", text="Force Field", icon='FORCE_FORCE')
|
||||
col.operator("object.forcefield_toggle", text=_("Force Field"), icon='FORCE_FORCE')
|
||||
else:
|
||||
col.operator("object.forcefield_toggle", text="Force Field", icon='X')
|
||||
col.operator("object.forcefield_toggle", text=_("Force Field"), icon='X')
|
||||
|
||||
if(ob.type == 'MESH'):
|
||||
physics_add(self, col, context.collision, "Collision", 'COLLISION', 'MOD_PHYSICS', False)
|
||||
physics_add(self, col, context.cloth, "Cloth", 'CLOTH', 'MOD_CLOTH', True)
|
||||
physics_add(self, col, context.collision, _("Collision"), 'COLLISION', 'MOD_PHYSICS', False)
|
||||
physics_add(self, col, context.cloth, _("Cloth"), 'CLOTH', 'MOD_CLOTH', True)
|
||||
|
||||
col = split.column()
|
||||
|
||||
if(ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE'):
|
||||
physics_add(self, col, context.soft_body, "Soft Body", 'SOFT_BODY', 'MOD_SOFT', True)
|
||||
physics_add(self, col, context.soft_body, _("Soft Body"), 'SOFT_BODY', 'MOD_SOFT', True)
|
||||
|
||||
if(ob.type == 'MESH'):
|
||||
physics_add(self, col, context.fluid, "Fluid", 'FLUID_SIMULATION', 'MOD_FLUIDSIM', True)
|
||||
physics_add(self, col, context.smoke, "Smoke", 'SMOKE', 'MOD_SMOKE', True)
|
||||
physics_add(self, col, context.fluid, _("Fluid"), 'FLUID_SIMULATION', 'MOD_FLUIDSIM', True)
|
||||
physics_add(self, col, context.smoke, _("Smoke"), 'SMOKE', 'MOD_SMOKE', True)
|
||||
|
||||
|
||||
#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc
|
||||
@ -95,11 +95,11 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
|
||||
|
||||
if cache.use_external:
|
||||
split = layout.split(percentage=0.80)
|
||||
split.prop(cache, "name", text="File Name")
|
||||
split.prop(cache, "name", text=_("File Name"))
|
||||
split.prop(cache, "index", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="File Path:")
|
||||
row.label(text=_("File Path:"))
|
||||
row.prop(cache, "use_library_path", "Use Lib Path")
|
||||
|
||||
layout.prop(cache, "filepath", text="")
|
||||
@ -108,13 +108,13 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
|
||||
else:
|
||||
if cachetype == 'SMOKE':
|
||||
if not bpy.data.is_saved:
|
||||
layout.label(text="Cache is disabled until the file is saved")
|
||||
layout.label(text=_("Cache is disabled until the file is saved"))
|
||||
layout.enabled = False
|
||||
|
||||
if cache.use_disk_cache:
|
||||
layout.prop(cache, "name", text="File Name")
|
||||
layout.prop(cache, "name", text=_("File Name"))
|
||||
else:
|
||||
layout.prop(cache, "name", text="Cache Name")
|
||||
layout.prop(cache, "name", text=_("Cache Name"))
|
||||
|
||||
row = layout.row(align=True)
|
||||
|
||||
@ -142,7 +142,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
|
||||
row = layout.row()
|
||||
row.enabled = enabled and bpy.data.is_saved
|
||||
row.active = cache.use_disk_cache
|
||||
row.label(text="Compression:")
|
||||
row.label(text=_("Compression:"))
|
||||
row.prop(cache, "compression", expand=True)
|
||||
|
||||
layout.separator()
|
||||
@ -152,22 +152,22 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
|
||||
col = split.column()
|
||||
|
||||
if cache.is_baked == True:
|
||||
col.operator("ptcache.free_bake", text="Free Bake")
|
||||
col.operator("ptcache.free_bake", text=_("Free Bake"))
|
||||
else:
|
||||
col.operator("ptcache.bake", text="Bake").bake = True
|
||||
col.operator("ptcache.bake", text=_("Bake")).bake = True
|
||||
|
||||
sub = col.row()
|
||||
sub.enabled = (cache.frames_skipped or cache.is_outdated) and enabled
|
||||
sub.operator("ptcache.bake", text="Calculate To Frame").bake = False
|
||||
sub.operator("ptcache.bake", text=_("Calculate To Frame")).bake = False
|
||||
|
||||
sub = col.column()
|
||||
sub.enabled = enabled
|
||||
sub.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
|
||||
sub.operator("ptcache.bake_from_cache", text=_("Current Cache to Bake"))
|
||||
|
||||
col = split.column()
|
||||
col.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True
|
||||
col.operator("ptcache.free_bake_all", text="Free All Bakes")
|
||||
col.operator("ptcache.bake_all", text="Update All To Frame").bake = False
|
||||
col.operator("ptcache.bake_all", text=_("Bake All Dynamics")).bake = True
|
||||
col.operator("ptcache.free_bake_all", text=_("Free All Bakes"))
|
||||
col.operator("ptcache.bake_all", text=_("Update All To Frame")).bake = False
|
||||
|
||||
|
||||
def effector_weights_ui(self, context, weights):
|
||||
@ -215,7 +215,7 @@ def basic_force_field_settings_ui(self, context, field):
|
||||
col = split.column()
|
||||
|
||||
if field.type == 'DRAG':
|
||||
col.prop(field, "linear_drag", text="Linear")
|
||||
col.prop(field, "linear_drag", text=_("Linear"))
|
||||
else:
|
||||
col.prop(field, "strength")
|
||||
|
||||
@ -223,12 +223,12 @@ def basic_force_field_settings_ui(self, context, field):
|
||||
col.prop(field, "size")
|
||||
col.prop(field, "flow")
|
||||
elif field.type == 'HARMONIC':
|
||||
col.prop(field, "harmonic_damping", text="Damping")
|
||||
col.prop(field, "harmonic_damping", text=_("Damping"))
|
||||
col.prop(field, "rest_length")
|
||||
elif field.type == 'VORTEX' and field.shape != 'POINT':
|
||||
col.prop(field, "inflow")
|
||||
elif field.type == 'DRAG':
|
||||
col.prop(field, "quadratic_drag", text="Quadratic")
|
||||
col.prop(field, "quadratic_drag", text=_("Quadratic"))
|
||||
else:
|
||||
col.prop(field, "flow")
|
||||
|
||||
@ -237,19 +237,19 @@ def basic_force_field_settings_ui(self, context, field):
|
||||
sub.prop(field, "noise")
|
||||
sub.prop(field, "seed")
|
||||
if field.type == 'TURBULENCE':
|
||||
col.prop(field, "use_global_coords", text="Global")
|
||||
col.prop(field, "use_global_coords", text=_("Global"))
|
||||
elif field.type == 'HARMONIC':
|
||||
col.prop(field, "use_multiple_springs")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Effect point:")
|
||||
col.label(text=_("Effect point:"))
|
||||
col.prop(field, "apply_to_location")
|
||||
col.prop(field, "apply_to_rotation")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Collision:")
|
||||
col.label(text=_("Collision:"))
|
||||
col.prop(field, "use_absorption")
|
||||
|
||||
|
||||
@ -265,7 +265,7 @@ def basic_force_field_falloff_ui(self, context, field):
|
||||
col.prop(field, "z_direction", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(field, "falloff_power", text="Power")
|
||||
col.prop(field, "falloff_power", text=_("Power"))
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
@ -273,14 +273,14 @@ def basic_force_field_falloff_ui(self, context, field):
|
||||
row.prop(field, "use_min_distance", text="")
|
||||
sub = row.row()
|
||||
sub.active = field.use_min_distance
|
||||
sub.prop(field, "distance_min", text="Minimum")
|
||||
sub.prop(field, "distance_min", text=_("Minimum"))
|
||||
|
||||
col = split.column()
|
||||
row = col.row(align=True)
|
||||
row.prop(field, "use_max_distance", text="")
|
||||
sub = row.row()
|
||||
sub.active = field.use_max_distance
|
||||
sub.prop(field, "distance_max", text="Maximum")
|
||||
sub.prop(field, "distance_max", text=_("Maximum"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
from bl_ui.properties_physics_common import (
|
||||
basic_force_field_settings_ui,
|
||||
@ -54,13 +54,13 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
field = ob.field
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
split.label(text="Type:")
|
||||
split.label(text=_("Type:"))
|
||||
|
||||
split.prop(field, "type", text="")
|
||||
|
||||
if field.type not in {'NONE', 'GUIDE', 'TEXTURE'}:
|
||||
split = layout.split(percentage=0.2)
|
||||
split.label(text="Shape:")
|
||||
split.label(text=_("Shape:"))
|
||||
split.prop(field, "shape", text="")
|
||||
|
||||
split = layout.split()
|
||||
@ -76,7 +76,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
col.prop(field, "use_guide_path_weight")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Clumping:")
|
||||
col.label(text=_("Clumping:"))
|
||||
col.prop(field, "guide_clump_amount")
|
||||
col.prop(field, "guide_clump_shape")
|
||||
|
||||
@ -117,7 +117,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
|
||||
if field.type not in {'NONE', 'GUIDE'}:
|
||||
|
||||
layout.label(text="Falloff:")
|
||||
layout.label(text=_("Falloff:"))
|
||||
layout.prop(field, "falloff_type", expand=True)
|
||||
|
||||
basic_force_field_falloff_ui(self, context, field)
|
||||
@ -128,20 +128,20 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
split = layout.split(percentage=0.35)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Angular:")
|
||||
col.prop(field, "use_radial_min", text="Use Minimum")
|
||||
col.prop(field, "use_radial_max", text="Use Maximum")
|
||||
col.label(text=_("Angular:"))
|
||||
col.prop(field, "use_radial_min", text=_("Use Minimum"))
|
||||
col.prop(field, "use_radial_max", text=_("Use Maximum"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(field, "radial_falloff", text="Power")
|
||||
col.prop(field, "radial_falloff", text=_("Power"))
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_min
|
||||
sub.prop(field, "radial_min", text="Angle")
|
||||
sub.prop(field, "radial_min", text=_("Angle"))
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_max
|
||||
sub.prop(field, "radial_max", text="Angle")
|
||||
sub.prop(field, "radial_max", text=_("Angle"))
|
||||
|
||||
elif field.falloff_type == 'TUBE':
|
||||
layout.separator()
|
||||
@ -149,20 +149,20 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
|
||||
split = layout.split(percentage=0.35)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Radial:")
|
||||
col.prop(field, "use_radial_min", text="Use Minimum")
|
||||
col.prop(field, "use_radial_max", text="Use Maximum")
|
||||
col.label(text=_("Radial:"))
|
||||
col.prop(field, "use_radial_min", text=_("Use Minimum"))
|
||||
col.prop(field, "use_radial_max", text=_("Use Maximum"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(field, "radial_falloff", text="Power")
|
||||
col.prop(field, "radial_falloff", text=_("Power"))
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_min
|
||||
sub.prop(field, "radial_min", text="Distance")
|
||||
sub.prop(field, "radial_min", text=_("Distance"))
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_max
|
||||
sub.prop(field, "radial_max", text="Distance")
|
||||
sub.prop(field, "radial_max", text=_("Distance"))
|
||||
|
||||
|
||||
class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
|
||||
@ -192,31 +192,31 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Particle:")
|
||||
col.label(text=_("Particle:"))
|
||||
col.prop(settings, "permeability", slider=True)
|
||||
col.prop(settings, "stickness")
|
||||
col.prop(settings, "use_particle_kill")
|
||||
col.label(text="Particle Damping:")
|
||||
col.label(text=_("Particle Damping:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(settings, "damping_factor", text="Factor", slider=True)
|
||||
sub.prop(settings, "damping_random", text="Random", slider=True)
|
||||
sub.prop(settings, "damping_factor", text=_("Factor"), slider=True)
|
||||
sub.prop(settings, "damping_random", text=_("Random"), slider=True)
|
||||
|
||||
col.label(text="Particle Friction:")
|
||||
col.label(text=_("Particle Friction:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(settings, "friction_factor", text="Factor", slider=True)
|
||||
sub.prop(settings, "friction_random", text="Random", slider=True)
|
||||
sub.prop(settings, "friction_factor", text=_("Factor"), slider=True)
|
||||
sub.prop(settings, "friction_random", text=_("Random"), slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Soft Body and Cloth:")
|
||||
col.label(text=_("Soft Body and Cloth:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(settings, "thickness_outer", text="Outer", slider=True)
|
||||
sub.prop(settings, "thickness_inner", text="Inner", slider=True)
|
||||
sub.prop(settings, "thickness_outer", text=_("Outer"), slider=True)
|
||||
sub.prop(settings, "thickness_inner", text=_("Inner"), slider=True)
|
||||
|
||||
col.label(text="Soft Body Damping:")
|
||||
col.prop(settings, "damping", text="Factor", slider=True)
|
||||
col.label(text=_("Soft Body Damping:"))
|
||||
col.prop(settings, "damping", text=_("Factor"), slider=True)
|
||||
|
||||
col.label(text="Force Fields:")
|
||||
col.prop(settings, "absorption", text="Absorption")
|
||||
col.label(text=_("Force Fields:"))
|
||||
col.prop(settings, "absorption", text=_("Absorption"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class PhysicButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -46,7 +46,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
if fluid is None:
|
||||
row.label("Built without fluids")
|
||||
row.label(_("Built without fluids"))
|
||||
return
|
||||
|
||||
row.prop(fluid, "type")
|
||||
@ -58,28 +58,28 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
layout.active = fluid.use
|
||||
|
||||
if fluid.type == 'DOMAIN':
|
||||
layout.operator("fluid.bake", text="Bake (Req. Memory: %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM')
|
||||
layout.operator("fluid.bake", text=_("Bake (Req. Memory:")+" %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM')
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.prop(fluid, "resolution", text="Final")
|
||||
col.label(text="Render Display:")
|
||||
col.label(text=_("Resolution:"))
|
||||
col.prop(fluid, "resolution", text=_("Final"))
|
||||
col.label(text=_("Render Display:"))
|
||||
col.prop(fluid, "render_display_mode", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label()
|
||||
col.prop(fluid, "preview_resolution", text="Preview")
|
||||
col.label(text="Viewport Display:")
|
||||
col.prop(fluid, "preview_resolution", text=_("Preview"))
|
||||
col.label(text=_("Viewport Display:"))
|
||||
col.prop(fluid, "viewport_display_mode", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Time:")
|
||||
col.label(text=_("Time:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(fluid, "start_time", text="Start")
|
||||
sub.prop(fluid, "end_time", text="End")
|
||||
sub.prop(fluid, "start_time", text=_("Start"))
|
||||
sub.prop(fluid, "end_time", text=_("End"))
|
||||
|
||||
col = split.column()
|
||||
col.label()
|
||||
@ -92,36 +92,36 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Volume Initialization:")
|
||||
col.label(text=_("Volume Initialization:"))
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "use_animated_mesh")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Initial Velocity:")
|
||||
col.label(text=_("Initial Velocity:"))
|
||||
col.prop(fluid, "initial_velocity", text="")
|
||||
|
||||
elif fluid.type == 'OBSTACLE':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Volume Initialization:")
|
||||
col.label(text=_("Volume Initialization:"))
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "use_animated_mesh")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Slip Type:")
|
||||
col.label(text=_("Slip Type:"))
|
||||
col.prop(fluid, "slip_type", text="")
|
||||
if fluid.slip_type == 'PARTIALSLIP':
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text=_("Amount"))
|
||||
|
||||
col.label(text="Impact:")
|
||||
col.prop(fluid, "impact_factor", text="Factor")
|
||||
col.label(text=_("Impact:"))
|
||||
col.prop(fluid, "impact_factor", text=_("Factor"))
|
||||
|
||||
elif fluid.type == 'INFLOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Volume Initialization:")
|
||||
col.label(text=_("Volume Initialization:"))
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "use_animated_mesh")
|
||||
row = col.row()
|
||||
@ -129,14 +129,14 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
row.prop(fluid, "use_local_coords")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Inflow Velocity:")
|
||||
col.label(text=_("Inflow Velocity:"))
|
||||
col.prop(fluid, "inflow_velocity", text="")
|
||||
|
||||
elif fluid.type == 'OUTFLOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Volume Initialization:")
|
||||
col.label(text=_("Volume Initialization:"))
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "use_animated_mesh")
|
||||
|
||||
@ -146,12 +146,12 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Influence:")
|
||||
col.prop(fluid, "particle_influence", text="Size")
|
||||
col.prop(fluid, "alpha_influence", text="Alpha")
|
||||
col.label(text=_("Influence:"))
|
||||
col.prop(fluid, "particle_influence", text=_("Size"))
|
||||
col.prop(fluid, "alpha_influence", text=_("Alpha"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Type:")
|
||||
col.label(text=_("Type:"))
|
||||
col.prop(fluid, "use_drops")
|
||||
col.prop(fluid, "use_floats")
|
||||
col.prop(fluid, "show_tracer")
|
||||
@ -167,24 +167,24 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
|
||||
col.prop(fluid, "use_reverse_frames")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Time:")
|
||||
col.label(text=_("Time:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(fluid, "start_time", text="Start")
|
||||
sub.prop(fluid, "end_time", text="End")
|
||||
sub.prop(fluid, "start_time", text=_("Start"))
|
||||
sub.prop(fluid, "end_time", text=_("End"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Attraction Force:")
|
||||
col.label(text=_("Attraction Force:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(fluid, "attraction_strength", text="Strength")
|
||||
sub.prop(fluid, "attraction_radius", text="Radius")
|
||||
sub.prop(fluid, "attraction_strength", text=_("Strength"))
|
||||
sub.prop(fluid, "attraction_radius", text=_("Radius"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Velocity Force:")
|
||||
col.label(text=_("Velocity Force:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(fluid, "velocity_strength", text="Strength")
|
||||
sub.prop(fluid, "velocity_radius", text="Radius")
|
||||
sub.prop(fluid, "velocity_strength", text=_("Strength"))
|
||||
sub.prop(fluid, "velocity_radius", text=_("Radius"))
|
||||
|
||||
|
||||
class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
|
||||
@ -206,33 +206,33 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
if scene.use_gravity:
|
||||
col.label(text="Using Scene Gravity", icon="SCENE_DATA")
|
||||
col.label(text=_("Using Scene Gravity"), icon="SCENE_DATA")
|
||||
sub = col.column()
|
||||
sub.enabled = False
|
||||
sub.prop(fluid, "gravity", text="")
|
||||
else:
|
||||
col.label(text="Gravity:")
|
||||
col.label(text=_("Gravity:"))
|
||||
col.prop(fluid, "gravity", text="")
|
||||
|
||||
if scene.unit_settings.system != 'NONE':
|
||||
col.label(text="Using Scene Size Units", icon="SCENE_DATA")
|
||||
col.label(text=_("Using Scene Size Units"), icon="SCENE_DATA")
|
||||
sub = col.column()
|
||||
sub.enabled = False
|
||||
sub.prop(fluid, "simulation_scale", text="Metres")
|
||||
sub.prop(fluid, "simulation_scale", text=_("Metres"))
|
||||
else:
|
||||
col.label(text="Real World Size:")
|
||||
col.prop(fluid, "simulation_scale", text="Metres")
|
||||
col.label(text=_("Real World Size:"))
|
||||
col.prop(fluid, "simulation_scale", text=_("Metres"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Viscosity Presets:")
|
||||
col.label(text=_("Viscosity Presets:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(fluid, "viscosity_preset", text="")
|
||||
|
||||
if fluid.viscosity_preset == 'MANUAL':
|
||||
sub.prop(fluid, "viscosity_base", text="Base")
|
||||
sub.prop(fluid, "viscosity_exponent", text="Exponent", slider=True)
|
||||
sub.prop(fluid, "viscosity_base", text=_("Base"))
|
||||
sub.prop(fluid, "viscosity_exponent", text=_("Exponent"), slider=True)
|
||||
|
||||
col.label(text="Optimization:")
|
||||
col.label(text=_("Optimization:"))
|
||||
col.prop(fluid, "grid_levels", slider=True)
|
||||
col.prop(fluid, "compressibility", slider=True)
|
||||
|
||||
@ -254,16 +254,16 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Slip Type:")
|
||||
col.label(text=_("Slip Type:"))
|
||||
col.prop(fluid, "slip_type", text="")
|
||||
if fluid.slip_type == 'PARTIALSLIP':
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text=_("Amount"))
|
||||
col.prop(fluid, "surface_noobs")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Surface:")
|
||||
col.prop(fluid, "surface_smooth", text="Smoothing")
|
||||
col.prop(fluid, "surface_subdivisions", text="Subdivisions")
|
||||
col.label(text=_("Surface:"))
|
||||
col.prop(fluid, "surface_smooth", text=_("Smoothing"))
|
||||
col.prop(fluid, "surface_subdivisions", text=_("Subdivisions"))
|
||||
|
||||
|
||||
class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel):
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
from bl_ui.properties_physics_common import (
|
||||
point_cache_ui,
|
||||
@ -59,23 +59,23 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
|
||||
split.enabled = not domain.point_cache.is_baked
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.prop(domain, "resolution_max", text="Divisions")
|
||||
col.label(text="Time:")
|
||||
col.prop(domain, "time_scale", text="Scale")
|
||||
col.label(text="Border Collisions:")
|
||||
col.label(text=_("Resolution:"))
|
||||
col.prop(domain, "resolution_max", text=_("Divisions"))
|
||||
col.label(text=_("Time:"))
|
||||
col.prop(domain, "time_scale", text=_("Scale"))
|
||||
col.label(text=_("Border Collisions:"))
|
||||
col.prop(domain, "collision_extents", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Behavior:")
|
||||
col.label(text=_("Behavior:"))
|
||||
col.prop(domain, "alpha")
|
||||
col.prop(domain, "beta", text="Temp. Diff.")
|
||||
col.prop(domain, "beta", text=_("Temp. Diff."))
|
||||
col.prop(domain, "vorticity")
|
||||
col.prop(domain, "use_dissolve_smoke", text="Dissolve")
|
||||
col.prop(domain, "use_dissolve_smoke", text=_("Dissolve"))
|
||||
sub = col.column()
|
||||
sub.active = domain.use_dissolve_smoke
|
||||
sub.prop(domain, "dissolve_speed", text="Time")
|
||||
sub.prop(domain, "use_dissolve_smoke_log", text="Slow")
|
||||
sub.prop(domain, "dissolve_speed", text=_("Time"))
|
||||
sub.prop(domain, "use_dissolve_smoke_log", text_("Slow"))
|
||||
|
||||
elif md.smoke_type == 'FLOW':
|
||||
|
||||
@ -85,20 +85,20 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(flow, "use_outflow")
|
||||
col.label(text="Particle System:")
|
||||
col.label(text=_("Particle System:"))
|
||||
col.prop_search(flow, "particle_system", ob, "particle_systems", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = not md.flow_settings.use_outflow
|
||||
|
||||
sub.prop(flow, "initial_velocity", text="Initial Velocity")
|
||||
sub.prop(flow, "initial_velocity", text=_("Initial Velocity"))
|
||||
sub = sub.column()
|
||||
sub.active = flow.initial_velocity
|
||||
sub.prop(flow, "velocity_factor", text="Multiplier")
|
||||
sub.prop(flow, "velocity_factor", text=_("Multiplier"))
|
||||
|
||||
sub = split.column()
|
||||
sub.active = not md.flow_settings.use_outflow
|
||||
sub.label(text="Initial Values:")
|
||||
sub.label(text=_("Initial Values:"))
|
||||
sub.prop(flow, "use_absolute")
|
||||
sub.prop(flow, "density")
|
||||
sub.prop(flow, "temperature")
|
||||
@ -121,14 +121,14 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Flow Group:")
|
||||
col.label(text=_("Flow Group:"))
|
||||
col.prop(group, "fluid_group", text="")
|
||||
|
||||
#col.label(text="Effector Group:")
|
||||
#col.label(text=_("Effector Group:"))
|
||||
#col.prop(group, "effector_group", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Collision Group:")
|
||||
col.label(text=_("Collision Group:"))
|
||||
col.prop(group, "collision_group", text="")
|
||||
|
||||
|
||||
@ -157,12 +157,12 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel):
|
||||
split.enabled = not md.point_cache.is_baked
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Resolution:")
|
||||
col.prop(md, "amplify", text="Divisions")
|
||||
col.label(text=_("Resolution:"))
|
||||
col.prop(md, "amplify", text=_("Divisions"))
|
||||
col.prop(md, "smooth_emitter")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Noise Method:")
|
||||
col.label(text=_("Noise Method:"))
|
||||
col.row().prop(md, "noise_type", text="")
|
||||
col.prop(md, "strength")
|
||||
|
||||
@ -184,7 +184,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel):
|
||||
md = context.smoke.domain_settings
|
||||
cache = md.point_cache
|
||||
|
||||
layout.label(text="Compression:")
|
||||
layout.label(text=_("Compression:"))
|
||||
layout.prop(md, "point_cache_compress_type", expand=True)
|
||||
|
||||
point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE')
|
||||
|
@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
from bl_ui.properties_physics_common import (
|
||||
point_cache_ui,
|
||||
@ -62,13 +62,13 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
|
||||
split.enabled = softbody_panel_enabled(md)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(softbody, "friction")
|
||||
col.prop(softbody, "mass")
|
||||
col.prop_search(softbody, "vertex_group_mass", ob, "vertex_groups", text="Mass:")
|
||||
col.prop_search(softbody, "vertex_group_mass", ob, "vertex_groups", text=_("Mass:"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Simulation:")
|
||||
col.label(text=_("Simulation:"))
|
||||
col.prop(softbody, "speed")
|
||||
|
||||
|
||||
@ -114,18 +114,18 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Goal Strengths:")
|
||||
col.prop(softbody, "goal_default", text="Default")
|
||||
col.label(text=_("Goal Strengths:"))
|
||||
col.prop(softbody, "goal_default", text=_("Default"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(softbody, "goal_min", text="Minimum")
|
||||
sub.prop(softbody, "goal_max", text="Maximum")
|
||||
sub.prop(softbody, "goal_min", text=_("Minimum"))
|
||||
sub.prop(softbody, "goal_max", text=_("Maximum"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Goal Settings:")
|
||||
col.prop(softbody, "goal_spring", text="Stiffness")
|
||||
col.prop(softbody, "goal_friction", text="Damping")
|
||||
col.label(text=_("Goal Settings:"))
|
||||
col.prop(softbody, "goal_spring", text=_("Stiffness"))
|
||||
col.prop(softbody, "goal_friction", text=_("Damping"))
|
||||
|
||||
layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text="Vertex Group")
|
||||
layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text=_("Vertex Group"))
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
|
||||
@ -154,14 +154,14 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Springs:")
|
||||
col.label(text=_("Springs:"))
|
||||
col.prop(softbody, "pull")
|
||||
col.prop(softbody, "push")
|
||||
col.prop(softbody, "damping")
|
||||
col.prop(softbody, "plastic")
|
||||
col.prop(softbody, "bend")
|
||||
col.prop(softbody, "spring_length", text="Length")
|
||||
col.prop_search(softbody, "vertex_group_spring", ob, "vertex_groups", text="Springs:")
|
||||
col.prop(softbody, "spring_length", text=_("Length"))
|
||||
col.prop_search(softbody, "vertex_group_spring", ob, "vertex_groups", text=_("Springs:"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(softbody, "use_stiff_quads")
|
||||
@ -169,16 +169,16 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
|
||||
sub.active = softbody.use_stiff_quads
|
||||
sub.prop(softbody, "shear")
|
||||
|
||||
col.label(text="Aerodynamics:")
|
||||
col.label(text=_("Aerodynamics:"))
|
||||
col.row().prop(softbody, "aerodynamics_type", expand=True)
|
||||
col.prop(softbody, "aero", text="Factor")
|
||||
col.prop(softbody, "aero", text=_("Factor"))
|
||||
|
||||
#sub = col.column()
|
||||
#sub.enabled = softbody.aero > 0
|
||||
|
||||
col.label(text="Collision:")
|
||||
col.prop(softbody, "use_edge_collision", text="Edge")
|
||||
col.prop(softbody, "use_face_collision", text="Face")
|
||||
col.label(text=_("Collision:"))
|
||||
col.prop(softbody, "use_edge_collision", text=_("Edge"))
|
||||
col.prop(softbody, "use_face_collision", text=_("Face"))
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
|
||||
@ -203,14 +203,14 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
|
||||
|
||||
layout.active = softbody.use_self_collision and softbody_panel_enabled(md)
|
||||
|
||||
layout.label(text="Collision Ball Size Calculation:")
|
||||
layout.label(text=_("Collision Ball Size Calculation:"))
|
||||
layout.prop(softbody, "collision_type", expand=True)
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Ball:")
|
||||
col.prop(softbody, "ball_size", text="Size")
|
||||
col.prop(softbody, "ball_stiff", text="Stiffness")
|
||||
col.prop(softbody, "ball_damp", text="Dampening")
|
||||
col.label(text=_("Ball:"))
|
||||
col.prop(softbody, "ball_size", text=_("Size"))
|
||||
col.prop(softbody, "ball_stiff", text=_("Stiffness"))
|
||||
col.prop(softbody, "ball_damp", text=_("Dampening"))
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
|
||||
@ -233,18 +233,18 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Step Size:")
|
||||
col.label(text=_("Step Size:"))
|
||||
col.prop(softbody, "step_min")
|
||||
col.prop(softbody, "step_max")
|
||||
col.prop(softbody, "use_auto_step", text="Auto-Step")
|
||||
col.prop(softbody, "use_auto_step", text=_("Auto-Step"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(softbody, "error_threshold")
|
||||
col.label(text="Helpers:")
|
||||
col.label(text=_("Helpers:"))
|
||||
col.prop(softbody, "choke")
|
||||
col.prop(softbody, "fuzzy")
|
||||
|
||||
layout.label(text="Diagnostics:")
|
||||
layout.label(text=_("Diagnostics:"))
|
||||
layout.prop(softbody, "use_diagnose")
|
||||
layout.prop(softbody, "use_estimate_matrix")
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class RENDER_MT_presets(Menu):
|
||||
@ -64,10 +65,10 @@ class RENDER_PT_render(RenderButtonsPanel, Panel):
|
||||
rd = context.scene.render
|
||||
|
||||
row = layout.row()
|
||||
row.operator("render.render", text="Image", icon='RENDER_STILL')
|
||||
row.operator("render.render", text="Animation", icon='RENDER_ANIMATION').animation = True
|
||||
row.operator("render.render", text=_("Image"), icon='RENDER_STILL')
|
||||
row.operator("render.render", text=_("Animation"), icon='RENDER_ANIMATION').animation = True
|
||||
|
||||
layout.prop(rd, "display_mode", text="Display")
|
||||
layout.prop(rd, "display_mode", text=_("Display"))
|
||||
|
||||
|
||||
class RENDER_PT_layers(RenderButtonsPanel, Panel):
|
||||
@ -97,25 +98,25 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(scene, "layers", text="Scene")
|
||||
col.prop(scene, "layers", text=_("Scene"))
|
||||
col.label(text="")
|
||||
col.prop(rl, "light_override", text="Light")
|
||||
col.prop(rl, "material_override", text="Material")
|
||||
col.prop(rl, "light_override", text=_("Light"))
|
||||
col.prop(rl, "material_override", text=_("Material"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(rl, "layers", text="Layer")
|
||||
col.label(text="Mask Layers:")
|
||||
col.prop(rl, "layers", text=_("Layer"))
|
||||
col.label(text=_("Mask Layers:"))
|
||||
col.prop(rl, "layers_zmask", text="")
|
||||
|
||||
layout.separator()
|
||||
layout.label(text="Include:")
|
||||
layout.label(text=_("Include:"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(rl, "use_zmask")
|
||||
row = col.row()
|
||||
row.prop(rl, "invert_zmask", text="Negate")
|
||||
row.prop(rl, "invert_zmask", text=_("Negate"))
|
||||
row.active = rl.use_zmask
|
||||
col.prop(rl, "use_all_z")
|
||||
|
||||
@ -134,7 +135,7 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Passes:")
|
||||
col.label(text=_("Passes:"))
|
||||
col.prop(rl, "use_pass_combined")
|
||||
col.prop(rl, "use_pass_z")
|
||||
col.prop(rl, "use_pass_vector")
|
||||
@ -193,29 +194,29 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Resolution:")
|
||||
sub.label(text=_("Resolution:"))
|
||||
sub.prop(rd, "resolution_x", text="X")
|
||||
sub.prop(rd, "resolution_y", text="Y")
|
||||
sub.prop(rd, "resolution_percentage", text="")
|
||||
|
||||
sub.label(text="Aspect Ratio:")
|
||||
sub.label(text=_("Aspect Ratio:"))
|
||||
sub.prop(rd, "pixel_aspect_x", text="X")
|
||||
sub.prop(rd, "pixel_aspect_y", text="Y")
|
||||
|
||||
row = col.row()
|
||||
row.prop(rd, "use_border", text="Border")
|
||||
row.prop(rd, "use_border", text=_("Border"))
|
||||
sub = row.row()
|
||||
sub.active = rd.use_border
|
||||
sub.prop(rd, "use_crop_to_border", text="Crop")
|
||||
sub.prop(rd, "use_crop_to_border", text=_("Crop"))
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Frame Range:")
|
||||
sub.prop(scene, "frame_start", text="Start")
|
||||
sub.prop(scene, "frame_end", text="End")
|
||||
sub.prop(scene, "frame_step", text="Step")
|
||||
sub.label(text=_("Frame Range:"))
|
||||
sub.prop(scene, "frame_start")
|
||||
sub.prop(scene, "frame_end")
|
||||
sub.prop(scene, "frame_step")
|
||||
|
||||
sub.label(text="Frame Rate:")
|
||||
sub.label(text=_("Frame Rate:"))
|
||||
if rd.fps_base == 1:
|
||||
fps_rate = round(rd.fps / rd.fps_base)
|
||||
else:
|
||||
@ -225,7 +226,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
|
||||
custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
|
||||
|
||||
if custom_framerate == True:
|
||||
fps_label_text = "Custom (" + str(fps_rate) + " fps)"
|
||||
fps_label_text = _("Custom (") + str(fps_rate) + " fps)"
|
||||
else:
|
||||
fps_label_text = str(fps_rate) + " fps"
|
||||
|
||||
@ -235,10 +236,10 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
|
||||
sub.prop(rd, "fps")
|
||||
sub.prop(rd, "fps_base", text="/")
|
||||
subrow = sub.row(align=True)
|
||||
subrow.label(text="Time Remapping:")
|
||||
subrow.label(text=_("Time Remapping:"))
|
||||
subrow = sub.row(align=True)
|
||||
subrow.prop(rd, "frame_map_old", text="Old")
|
||||
subrow.prop(rd, "frame_map_new", text="New")
|
||||
subrow.prop(rd, "frame_map_old", text=_("Old"))
|
||||
subrow.prop(rd, "frame_map_new", text=_("New"))
|
||||
|
||||
|
||||
class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
|
||||
@ -266,7 +267,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "pixel_filter_type", text="")
|
||||
col.prop(rd, "filter_size", text="Size")
|
||||
col.prop(rd, "filter_size", text=_("Size"))
|
||||
|
||||
|
||||
class RENDER_PT_motion_blur(RenderButtonsPanel, Panel):
|
||||
@ -308,15 +309,15 @@ class RENDER_PT_shading(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_textures", text="Textures")
|
||||
col.prop(rd, "use_shadows", text="Shadows")
|
||||
col.prop(rd, "use_sss", text="Subsurface Scattering")
|
||||
col.prop(rd, "use_envmaps", text="Environment Map")
|
||||
col.prop(rd, "use_textures", text=_("Textures"))
|
||||
col.prop(rd, "use_shadows", text=_("Shadows"))
|
||||
col.prop(rd, "use_sss", text=_("Subsurface Scattering"))
|
||||
col.prop(rd, "use_envmaps", text=_("Environment Map"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_raytrace", text="Ray Tracing")
|
||||
col.prop(rd, "use_raytrace", text=_("Ray Tracing"))
|
||||
col.prop(rd, "use_color_management")
|
||||
col.prop(rd, "alpha_mode", text="Alpha")
|
||||
col.prop(rd, "alpha_mode", text=_("Alpha"))
|
||||
|
||||
|
||||
class RENDER_PT_performance(RenderButtonsPanel, Panel):
|
||||
@ -332,18 +333,18 @@ class RENDER_PT_performance(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Threads:")
|
||||
col.label(text=_("Threads:"))
|
||||
col.row().prop(rd, "threads_mode", expand=True)
|
||||
sub = col.column()
|
||||
sub.enabled = rd.threads_mode == 'FIXED'
|
||||
sub.prop(rd, "threads")
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Tiles:")
|
||||
sub.label(text=_("Tiles:"))
|
||||
sub.prop(rd, "parts_x", text="X")
|
||||
sub.prop(rd, "parts_y", text="Y")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Memory:")
|
||||
col.label(text=_("Memory:"))
|
||||
sub = col.column()
|
||||
sub.enabled = not (rd.use_border or rd.use_full_sample)
|
||||
sub.prop(rd, "use_save_buffers")
|
||||
@ -353,13 +354,13 @@ class RENDER_PT_performance(RenderButtonsPanel, Panel):
|
||||
sub.prop(rd, "use_free_unused_nodes")
|
||||
sub = col.column()
|
||||
sub.active = rd.use_raytrace
|
||||
sub.label(text="Acceleration structure:")
|
||||
sub.label(text=_("Acceleration structure:"))
|
||||
sub.prop(rd, "raytrace_method", text="")
|
||||
if rd.raytrace_method == 'OCTREE':
|
||||
sub.prop(rd, "octree_resolution", text="Resolution")
|
||||
sub.prop(rd, "octree_resolution", text=_("Resolution"))
|
||||
else:
|
||||
sub.prop(rd, "use_instances", text="Instances")
|
||||
sub.prop(rd, "use_local_coords", text="Local Coordinates")
|
||||
sub.prop(rd, "use_instances", text=_("Instances"))
|
||||
sub.prop(rd, "use_local_coords", text=_("Local Coordinates"))
|
||||
|
||||
|
||||
class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
|
||||
@ -378,24 +379,24 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
|
||||
col.prop(rd, "use_compositing")
|
||||
col.prop(rd, "use_sequencer")
|
||||
|
||||
split.prop(rd, "dither_intensity", text="Dither", slider=True)
|
||||
split.prop(rd, "dither_intensity", text=_("Dither"), slider=True)
|
||||
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_fields", text="Fields")
|
||||
col.prop(rd, "use_fields", text=_("Fields"))
|
||||
sub = col.column()
|
||||
sub.active = rd.use_fields
|
||||
sub.row().prop(rd, "field_order", expand=True)
|
||||
sub.prop(rd, "use_fields_still", text="Still")
|
||||
sub.prop(rd, "use_fields_still", text=_("Still"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_edge_enhance")
|
||||
sub = col.column()
|
||||
sub.active = rd.use_edge_enhance
|
||||
sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
|
||||
sub.prop(rd, "edge_threshold", text=_("Threshold"), slider=True)
|
||||
sub.prop(rd, "edge_color", text="")
|
||||
|
||||
|
||||
@ -419,26 +420,26 @@ class RENDER_PT_stamp(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_stamp_time", text="Time")
|
||||
col.prop(rd, "use_stamp_date", text="Date")
|
||||
col.prop(rd, "use_stamp_render_time", text="RenderTime")
|
||||
col.prop(rd, "use_stamp_frame", text="Frame")
|
||||
col.prop(rd, "use_stamp_scene", text="Scene")
|
||||
col.prop(rd, "use_stamp_camera", text="Camera")
|
||||
col.prop(rd, "use_stamp_lens", text="Lens")
|
||||
col.prop(rd, "use_stamp_filename", text="Filename")
|
||||
col.prop(rd, "use_stamp_marker", text="Marker")
|
||||
col.prop(rd, "use_stamp_sequencer_strip", text="Seq. Strip")
|
||||
col.prop(rd, "use_stamp_time", text=_("Time"))
|
||||
col.prop(rd, "use_stamp_date", text=_("Date"))
|
||||
col.prop(rd, "use_stamp_render_time", text=_("RenderTime"))
|
||||
col.prop(rd, "use_stamp_frame", text=_("Frame"))
|
||||
col.prop(rd, "use_stamp_scene", text=_("Scene"))
|
||||
col.prop(rd, "use_stamp_camera", text=_("Camera"))
|
||||
col.prop(rd, "use_stamp_lens", text=_("Lens"))
|
||||
col.prop(rd, "use_stamp_filename", text=_("Filename"))
|
||||
col.prop(rd, "use_stamp_marker", text=_("Marker"))
|
||||
col.prop(rd, "use_stamp_sequencer_strip", text=_("Seq. Strip"))
|
||||
|
||||
col = split.column()
|
||||
col.active = rd.use_stamp
|
||||
col.prop(rd, "stamp_foreground", slider=True)
|
||||
col.prop(rd, "stamp_background", slider=True)
|
||||
col.separator()
|
||||
col.prop(rd, "stamp_font_size", text="Font Size")
|
||||
col.prop(rd, "stamp_font_size", text=_("Font Size"))
|
||||
|
||||
row = layout.split(percentage=0.2)
|
||||
row.prop(rd, "use_stamp_note", text="Note")
|
||||
row.prop(rd, "use_stamp_note", text=_("Note"))
|
||||
sub = row.row()
|
||||
sub.active = rd.use_stamp_note
|
||||
sub.prop(rd, "stamp_note_text", text="")
|
||||
@ -460,7 +461,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "file_format", text="")
|
||||
col.row().prop(rd, "color_mode", text="Color", expand=True)
|
||||
col.row().prop(rd, "color_mode", text=_("Color"), expand=True)
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_file_extension")
|
||||
@ -471,11 +472,11 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
|
||||
layout.prop(rd, "file_quality", slider=True)
|
||||
|
||||
if file_format == 'PNG':
|
||||
layout.prop(rd, "file_quality", slider=True, text="Compression")
|
||||
layout.prop(rd, "file_quality", slider=True, text=_("Compression"))
|
||||
|
||||
if file_format in {'OPEN_EXR', 'MULTILAYER'}:
|
||||
row = layout.row()
|
||||
row.prop(rd, "exr_codec", text="Codec")
|
||||
row.prop(rd, "exr_codec", text=_("Codec"))
|
||||
|
||||
if file_format == 'OPEN_EXR':
|
||||
row = layout.row()
|
||||
@ -486,7 +487,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
|
||||
elif file_format == 'JPEG2000':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.label(text="Depth:")
|
||||
col.label(text=_("Depth:"))
|
||||
col.row().prop(rd, "jpeg2k_depth", expand=True)
|
||||
|
||||
col = split.column()
|
||||
@ -499,13 +500,13 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
|
||||
split.label("FIXME: hard coded Non-Linear, Gamma:1.0")
|
||||
'''
|
||||
col = split.column()
|
||||
col.prop(rd, "use_cineon_log", text="Convert to Log")
|
||||
col.prop(rd, "use_cineon_log", text=_("Convert to Log"))
|
||||
|
||||
col = split.column(align=True)
|
||||
col.active = rd.use_cineon_log
|
||||
col.prop(rd, "cineon_black", text="Black")
|
||||
col.prop(rd, "cineon_white", text="White")
|
||||
col.prop(rd, "cineon_gamma", text="Gamma")
|
||||
col.prop(rd, "cineon_black", text=_("Black"))
|
||||
col.prop(rd, "cineon_white", text=_("White"))
|
||||
col.prop(rd, "cineon_gamma", text=_("Gamma"))
|
||||
'''
|
||||
|
||||
elif file_format == 'TIFF':
|
||||
@ -517,11 +518,11 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
|
||||
elif file_format == 'QUICKTIME_QTKIT':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(rd, "quicktime_codec_type", text="Video Codec")
|
||||
col.prop(rd, "quicktime_codec_spatial_quality", text="Quality")
|
||||
col.prop(rd, "quicktime_codec_type", text=_("Video Codec"))
|
||||
col.prop(rd, "quicktime_codec_spatial_quality", text=_("Quality"))
|
||||
|
||||
# Audio
|
||||
col.prop(rd, "quicktime_audiocodec_type", text="Audio Codec")
|
||||
col.prop(rd, "quicktime_audiocodec_type", text=_("Audio Codec"))
|
||||
if rd.quicktime_audiocodec_type != 'No audio':
|
||||
split = layout.split()
|
||||
if rd.quicktime_audiocodec_type == 'LPCM':
|
||||
@ -559,7 +560,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel):
|
||||
|
||||
rd = context.scene.render
|
||||
|
||||
layout.menu("RENDER_MT_ffmpeg_presets", text="Presets")
|
||||
layout.menu("RENDER_MT_ffmpeg_presets", text=_("Presets"))
|
||||
|
||||
split = layout.split()
|
||||
split.prop(rd, "ffmpeg_format")
|
||||
@ -575,22 +576,22 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Rate:")
|
||||
col.prop(rd, "ffmpeg_minrate", text="Minimum")
|
||||
col.prop(rd, "ffmpeg_maxrate", text="Maximum")
|
||||
col.prop(rd, "ffmpeg_buffersize", text="Buffer")
|
||||
col.label(text=_("Rate:"))
|
||||
col.prop(rd, "ffmpeg_minrate", text=_("Minimum"))
|
||||
col.prop(rd, "ffmpeg_maxrate", text=_("Maximum"))
|
||||
col.prop(rd, "ffmpeg_buffersize", text=_("Buffer"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "ffmpeg_autosplit")
|
||||
col.label(text="Mux:")
|
||||
col.prop(rd, "ffmpeg_muxrate", text="Rate")
|
||||
col.prop(rd, "ffmpeg_packetsize", text="Packet Size")
|
||||
col.label(text=_("Mux:"))
|
||||
col.prop(rd, "ffmpeg_muxrate", text=_("Rate"))
|
||||
col.prop(rd, "ffmpeg_packetsize", text=_("Packet Size"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
# Audio:
|
||||
if rd.ffmpeg_format not in {'MP3'}:
|
||||
layout.prop(rd, "ffmpeg_audio_codec", text="Audio Codec")
|
||||
layout.prop(rd, "ffmpeg_audio_codec", text=_("Audio Codec"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(rd, "ffmpeg_audio_bitrate")
|
||||
@ -632,7 +633,7 @@ class RENDER_PT_bake(RenderButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
col.prop(rd, "use_bake_clear")
|
||||
col.prop(rd, "bake_margin")
|
||||
col.prop(rd, "bake_quad_split", text="Split")
|
||||
col.prop(rd, "bake_quad_split", text=_("Split"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "use_bake_selected_to_active")
|
||||
|
@ -20,7 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Operator, Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
from blf import gettext as _
|
||||
|
||||
class SceneButtonsPanel():
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@ -41,7 +41,7 @@ class SCENE_PT_scene(SceneButtonsPanel, Panel):
|
||||
scene = context.scene
|
||||
|
||||
layout.prop(scene, "camera")
|
||||
layout.prop(scene, "background_set", text="Background")
|
||||
layout.prop(scene, "background_set", text=_("Background"))
|
||||
|
||||
|
||||
class SCENE_PT_audio(SceneButtonsPanel, Panel):
|
||||
@ -59,15 +59,15 @@ class SCENE_PT_audio(SceneButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label("Listener:")
|
||||
col.label(_("Listener:"))
|
||||
col.prop(scene, "audio_distance_model", text="")
|
||||
col.prop(scene, "audio_doppler_speed", text="Speed")
|
||||
col.prop(scene, "audio_doppler_factor", text="Doppler")
|
||||
col.prop(scene, "audio_doppler_speed", text=_("Speed"))
|
||||
col.prop(scene, "audio_doppler_factor", text=_("Doppler"))
|
||||
|
||||
col = split.column()
|
||||
col.label("Format:")
|
||||
col.label(_("Format:"))
|
||||
col.prop(rd, "ffmpeg_audio_channels", text="")
|
||||
col.prop(rd, "ffmpeg_audio_mixrate", text="Rate")
|
||||
col.prop(rd, "ffmpeg_audio_mixrate", text=_("Rate"))
|
||||
|
||||
layout.operator("sound.mixdown")
|
||||
|
||||
@ -86,7 +86,7 @@ class SCENE_PT_unit(SceneButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
row.active = (unit.system != 'NONE')
|
||||
row.prop(unit, "scale_length", text="Scale")
|
||||
row.prop(unit, "scale_length", text=_("Scale"))
|
||||
row.prop(unit, "use_separate")
|
||||
|
||||
|
||||
@ -115,11 +115,11 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, Panel):
|
||||
|
||||
subcol = col.column()
|
||||
subcol.operator_context = 'INVOKE_DEFAULT'
|
||||
op = subcol.operator("anim.keying_set_export", text="Export to File")
|
||||
op = subcol.operator("anim.keying_set_export", text=_("Export to File"))
|
||||
op.filepath = "keyingset.py"
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Keyframing Settings:")
|
||||
col.label(text=_("Keyframing Settings:"))
|
||||
col.prop(ks, "bl_options")
|
||||
|
||||
|
||||
@ -138,7 +138,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
|
||||
ks = scene.keying_sets.active
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Paths:")
|
||||
row.label(text=_("Paths:"))
|
||||
|
||||
row = layout.row()
|
||||
|
||||
@ -152,20 +152,20 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
|
||||
ksp = ks.paths.active
|
||||
if ksp:
|
||||
col = layout.column()
|
||||
col.label(text="Target:")
|
||||
col.label(text=_("Target:"))
|
||||
col.template_any_ID(ksp, "id", "id_type")
|
||||
col.template_path_builder(ksp, "data_path", ksp.id)
|
||||
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Array Target:")
|
||||
col.label(text=_("Array Target:"))
|
||||
col.prop(ksp, "use_entire_array")
|
||||
if ksp.use_entire_array is False:
|
||||
col.prop(ksp, "array_index")
|
||||
|
||||
col = row.column()
|
||||
col.label(text="F-Curve Grouping:")
|
||||
col.label(text=_("F-Curve Grouping:"))
|
||||
col.prop(ksp, "group_method")
|
||||
if ksp.group_method == 'NAMED':
|
||||
col.prop(ksp, "group")
|
||||
@ -209,14 +209,14 @@ class SCENE_PT_simplify(SceneButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "simplify_subdivision", text="Subdivision")
|
||||
col.prop(rd, "simplify_child_particles", text="Child Particles")
|
||||
col.prop(rd, "simplify_subdivision", text=_("Subdivision"))
|
||||
col.prop(rd, "simplify_child_particles", text=_("Child Particles"))
|
||||
|
||||
col.prop(rd, "use_simplify_triangulate")
|
||||
|
||||
col = split.column()
|
||||
col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
|
||||
col.prop(rd, "simplify_ao_sss", text="AO and SSS")
|
||||
col.prop(rd, "simplify_shadow_samples", text=_("Shadow Samples"))
|
||||
col.prop(rd, "simplify_ao_sss", text=_("AO and SSS"))
|
||||
|
||||
|
||||
class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -20,6 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class TEXTURE_MT_specials(Menu):
|
||||
@ -143,11 +144,11 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel):
|
||||
if tex.use_nodes:
|
||||
|
||||
if slot:
|
||||
split.label(text="Output:")
|
||||
split.label(text=_("Output:"))
|
||||
split.prop(slot, "output_node", text="")
|
||||
|
||||
else:
|
||||
split.label(text="Type:")
|
||||
split.label(text=_("Type:"))
|
||||
split.prop(tex, "type", text="")
|
||||
|
||||
|
||||
@ -178,21 +179,21 @@ class TEXTURE_PT_colors(TextureButtonsPanel, Panel):
|
||||
|
||||
tex = context.texture
|
||||
|
||||
layout.prop(tex, "use_color_ramp", text="Ramp")
|
||||
layout.prop(tex, "use_color_ramp", text=_("Ramp"))
|
||||
if tex.use_color_ramp:
|
||||
layout.template_color_ramp(tex, "color_ramp", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="RGB Multiply:")
|
||||
col.label(text=_("RGB Multiply:"))
|
||||
sub = col.column(align=True)
|
||||
sub.prop(tex, "factor_red", text="R")
|
||||
sub.prop(tex, "factor_green", text="G")
|
||||
sub.prop(tex, "factor_blue", text="B")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Adjust:")
|
||||
col.label(text=_("Adjust:"))
|
||||
col.prop(tex, "intensity")
|
||||
col.prop(tex, "contrast")
|
||||
col.prop(tex, "saturation")
|
||||
@ -235,17 +236,17 @@ class TEXTURE_PT_clouds(TextureTypePanel, Panel):
|
||||
tex = context.texture
|
||||
|
||||
layout.prop(tex, "cloud_type", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
layout.label(text=_("Noise:"))
|
||||
layout.prop(tex, "noise_type", text=_("Type"), expand=True)
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "noise_scale", text="Size")
|
||||
col.prop(tex, "noise_depth", text="Depth")
|
||||
col.prop(tex, "noise_scale", text=_("Size"))
|
||||
col.prop(tex, "noise_depth", text=_("Depth"))
|
||||
|
||||
split.prop(tex, "nabla", text="Nabla")
|
||||
split.prop(tex, "nabla", text=_("Nabla"))
|
||||
|
||||
|
||||
class TEXTURE_PT_wood(TextureTypePanel, Panel):
|
||||
@ -263,15 +264,15 @@ class TEXTURE_PT_wood(TextureTypePanel, Panel):
|
||||
|
||||
col = layout.column()
|
||||
col.active = tex.wood_type in {'RINGNOISE', 'BANDNOISE'}
|
||||
col.label(text="Noise:")
|
||||
col.row().prop(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
col.label(text=_("Noise:"))
|
||||
col.row().prop(tex, "noise_type", text=_("Type"), expand=True)
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
split = layout.split()
|
||||
split.active = tex.wood_type in {'RINGNOISE', 'BANDNOISE'}
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "noise_scale", text="Size")
|
||||
col.prop(tex, "noise_scale", text=_("Size"))
|
||||
col.prop(tex, "turbulence")
|
||||
|
||||
split.prop(tex, "nabla")
|
||||
@ -289,15 +290,15 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel):
|
||||
|
||||
layout.prop(tex, "marble_type", expand=True)
|
||||
layout.prop(tex, "noise_basis_2", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
layout.label(text=_("Noise:"))
|
||||
layout.prop(tex, "noise_type", text=_("Type"), expand=True)
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "noise_scale", text="Size")
|
||||
col.prop(tex, "noise_depth", text="Depth")
|
||||
col.prop(tex, "noise_scale", text=_("Size"))
|
||||
col.prop(tex, "noise_depth", text=_("Depth"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "turbulence")
|
||||
@ -315,7 +316,7 @@ class TEXTURE_PT_magic(TextureTypePanel, Panel):
|
||||
tex = context.texture
|
||||
|
||||
row = layout.row()
|
||||
row.prop(tex, "noise_depth", text="Depth")
|
||||
row.prop(tex, "noise_depth", text=_("Depth"))
|
||||
row.prop(tex, "turbulence")
|
||||
|
||||
|
||||
@ -348,12 +349,12 @@ class TEXTURE_PT_stucci(TextureTypePanel, Panel):
|
||||
tex = context.texture
|
||||
|
||||
layout.prop(tex, "stucci_type", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
layout.label(text=_("Noise:"))
|
||||
layout.prop(tex, "noise_type", text=_("Type"), expand=True)
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(tex, "noise_scale", text="Size")
|
||||
row.prop(tex, "noise_scale", text=_("Size"))
|
||||
row.prop(tex, "turbulence")
|
||||
|
||||
|
||||
@ -371,13 +372,13 @@ class TEXTURE_PT_image(TextureTypePanel, Panel):
|
||||
|
||||
|
||||
def texture_filter_common(tex, layout):
|
||||
layout.label(text="Filter:")
|
||||
layout.label(text=_("Filter:"))
|
||||
layout.prop(tex, "filter_type", text="")
|
||||
if tex.use_mipmap and tex.filter_type in {'AREA', 'EWA', 'FELINE'}:
|
||||
if tex.filter_type == 'FELINE':
|
||||
layout.prop(tex, "filter_probes", text="Probes")
|
||||
layout.prop(tex, "filter_probes", text=_("Probes"))
|
||||
else:
|
||||
layout.prop(tex, "filter_eccentricity", text="Eccentricity")
|
||||
layout.prop(tex, "filter_eccentricity", text=_("Eccentricity"))
|
||||
|
||||
layout.prop(tex, "filter_size")
|
||||
layout.prop(tex, "use_filter_size_min")
|
||||
@ -399,12 +400,12 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Alpha:")
|
||||
col.prop(tex, "use_alpha", text="Use")
|
||||
col.prop(tex, "use_calculate_alpha", text="Calculate")
|
||||
col.prop(tex, "invert_alpha", text="Invert")
|
||||
col.label(text=_("Alpha:"))
|
||||
col.prop(tex, "use_alpha", text=_("Use"))
|
||||
col.prop(tex, "use_calculate_alpha", text=_("Calculate"))
|
||||
col.prop(tex, "invert_alpha", text=_("Invert"))
|
||||
col.separator()
|
||||
col.prop(tex, "use_flip_axis", text="Flip X/Y Axis")
|
||||
col.prop(tex, "use_flip_axis", text=_("Flip X/Y Axis"))
|
||||
|
||||
col = split.column()
|
||||
|
||||
@ -445,12 +446,12 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
|
||||
|
||||
if tex.extension == 'REPEAT':
|
||||
col = split.column(align=True)
|
||||
col.label(text="Repeat:")
|
||||
col.label(text=_("Repeat:"))
|
||||
col.prop(tex, "repeat_x", text="X")
|
||||
col.prop(tex, "repeat_y", text="Y")
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Mirror:")
|
||||
col.label(text=_("Mirror:"))
|
||||
row = col.row()
|
||||
row.prop(tex, "use_mirror_x", text="X")
|
||||
row.active = (tex.repeat_x > 1)
|
||||
@ -462,11 +463,11 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
|
||||
elif tex.extension == 'CHECKER':
|
||||
col = split.column(align=True)
|
||||
row = col.row()
|
||||
row.prop(tex, "use_checker_even", text="Even")
|
||||
row.prop(tex, "use_checker_odd", text="Odd")
|
||||
row.prop(tex, "use_checker_even", text=_("Even"))
|
||||
row.prop(tex, "use_checker_odd", text=_("Odd"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "checker_distance", text="Distance")
|
||||
col.prop(tex, "checker_distance", text=_("Distance"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -474,12 +475,12 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
|
||||
|
||||
col = split.column(align=True)
|
||||
#col.prop(tex, "crop_rectangle")
|
||||
col.label(text="Crop Minimum:")
|
||||
col.label(text=_("Crop Minimum:"))
|
||||
col.prop(tex, "crop_min_x", text="X")
|
||||
col.prop(tex, "crop_min_y", text="Y")
|
||||
|
||||
col = split.column(align=True)
|
||||
col.label(text="Crop Maximum:")
|
||||
col.label(text=_("Crop Maximum:"))
|
||||
col.prop(tex, "crop_max_x", text="X")
|
||||
col.prop(tex, "crop_max_y", text="Y")
|
||||
|
||||
@ -517,9 +518,9 @@ class TEXTURE_PT_envmap(TextureTypePanel, Panel):
|
||||
|
||||
col = split.column(align=True)
|
||||
|
||||
col.label(text="Clipping:")
|
||||
col.prop(env, "clip_start", text="Start")
|
||||
col.prop(env, "clip_end", text="End")
|
||||
col.label(text=_("Clipping:"))
|
||||
col.prop(env, "clip_start", text=_("Start"))
|
||||
col.prop(env, "clip_end", text=_("End"))
|
||||
|
||||
|
||||
class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel):
|
||||
@ -551,7 +552,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "dimension_max", text="Dimension")
|
||||
col.prop(tex, "dimension_max", text=_("Dimension"))
|
||||
col.prop(tex, "lacunarity")
|
||||
col.prop(tex, "octaves")
|
||||
|
||||
@ -560,16 +561,16 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
|
||||
if musgrave_type in {'HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
|
||||
col.prop(tex, "offset")
|
||||
if musgrave_type in {'MULTIFRACTAL', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
|
||||
col.prop(tex, "noise_intensity", text="Intensity")
|
||||
col.prop(tex, "noise_intensity", text=_("Intensity"))
|
||||
if musgrave_type in {'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
|
||||
col.prop(tex, "gain")
|
||||
|
||||
layout.label(text="Noise:")
|
||||
layout.label(text=_("Noise:"))
|
||||
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
row = layout.row()
|
||||
row.prop(tex, "noise_scale", text="Size")
|
||||
row.prop(tex, "noise_scale", text=_("Size"))
|
||||
row.prop(tex, "nabla")
|
||||
|
||||
|
||||
@ -586,26 +587,26 @@ class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Distance Metric:")
|
||||
col.label(text=_("Distance Metric:"))
|
||||
col.prop(tex, "distance_metric", text="")
|
||||
sub = col.column()
|
||||
sub.active = tex.distance_metric == 'MINKOVSKY'
|
||||
sub.prop(tex, "minkovsky_exponent", text="Exponent")
|
||||
col.label(text="Coloring:")
|
||||
sub.prop(tex, "minkovsky_exponent", text=_("Exponent"))
|
||||
col.label(text=_("Coloring:"))
|
||||
col.prop(tex, "color_mode", text="")
|
||||
col.prop(tex, "noise_intensity", text="Intensity")
|
||||
col.prop(tex, "noise_intensity", text=_("Intensity"))
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.label(text="Feature Weights:")
|
||||
sub.label(text=_("Feature Weights:"))
|
||||
sub.prop(tex, "weight_1", text="1", slider=True)
|
||||
sub.prop(tex, "weight_2", text="2", slider=True)
|
||||
sub.prop(tex, "weight_3", text="3", slider=True)
|
||||
sub.prop(tex, "weight_4", text="4", slider=True)
|
||||
|
||||
layout.label(text="Noise:")
|
||||
layout.label(text=_("Noise:"))
|
||||
row = layout.row()
|
||||
row.prop(tex, "noise_scale", text="Size")
|
||||
row.prop(tex, "noise_scale", text=_("Size"))
|
||||
row.prop(tex, "nabla")
|
||||
|
||||
|
||||
@ -620,13 +621,13 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
|
||||
tex = context.texture
|
||||
|
||||
layout.prop(tex, "noise_distortion")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text=_("Basis"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "distortion", text="Distortion")
|
||||
col.prop(tex, "noise_scale", text="Size")
|
||||
col.prop(tex, "distortion", text=_("Distortion"))
|
||||
col.prop(tex, "noise_scale", text=_("Size"))
|
||||
|
||||
split.prop(tex, "nabla")
|
||||
|
||||
@ -693,26 +694,26 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
if pd.point_source == 'PARTICLE_SYSTEM':
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(pd, "object", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.enabled = bool(pd.object)
|
||||
if pd.object:
|
||||
sub.label(text="System:")
|
||||
sub.label(text=_("System:"))
|
||||
sub.prop_search(pd, "particle_system", pd.object, "particle_systems", text="")
|
||||
sub.label(text="Cache:")
|
||||
sub.label(text=_("Cache:"))
|
||||
sub.prop(pd, "particle_cache_space", text="")
|
||||
else:
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.prop(pd, "object", text="")
|
||||
col.label(text="Cache:")
|
||||
col.label(text=_("Cache:"))
|
||||
col.prop(pd, "vertex_cache_space", text="")
|
||||
|
||||
col.separator()
|
||||
|
||||
if pd.point_source == 'PARTICLE_SYSTEM':
|
||||
col.label(text="Color Source:")
|
||||
col.label(text=_("Color Source:"))
|
||||
col.prop(pd, "color_source", text="")
|
||||
if pd.color_source in {'PARTICLE_SPEED', 'PARTICLE_VELOCITY'}:
|
||||
col.prop(pd, "speed_scale")
|
||||
@ -722,7 +723,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
|
||||
col = split.column()
|
||||
col.label()
|
||||
col.prop(pd, "radius")
|
||||
col.label(text="Falloff:")
|
||||
col.label(text=_("Falloff:"))
|
||||
col.prop(pd, "falloff", text="")
|
||||
if pd.falloff == 'SOFT':
|
||||
col.prop(pd, "falloff_soft")
|
||||
@ -733,7 +734,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
|
||||
|
||||
if pd.use_falloff_curve:
|
||||
col = layout.column()
|
||||
col.label(text="Falloff Curve")
|
||||
col.label(text=_("Falloff Curve"))
|
||||
col.template_curve_mapping(pd, "falloff_curve", brush=False)
|
||||
|
||||
|
||||
@ -762,9 +763,9 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Influence:")
|
||||
col.label(text=_("Influence:"))
|
||||
col.prop(pd, "turbulence_influence", text="")
|
||||
col.label(text="Noise Basis:")
|
||||
col.label(text=_("Noise Basis:"))
|
||||
col.prop(pd, "noise_basis", text="")
|
||||
|
||||
col = split.column()
|
||||
@ -801,7 +802,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
if not isinstance(idblock, bpy.types.Brush):
|
||||
split = layout.split(percentage=0.3)
|
||||
col = split.column()
|
||||
col.label(text="Coordinates:")
|
||||
col.label(text=_("Coordinates:"))
|
||||
col = split.column()
|
||||
col.prop(tex, "texture_coords", text="")
|
||||
|
||||
@ -810,12 +811,12 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Mesh:")
|
||||
split.label(text=_("Mesh:"))
|
||||
split.prop(ob.data, "texco_mesh", text="")
|
||||
"""
|
||||
elif tex.texture_coords == 'UV':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Layer:")
|
||||
split.label(text=_("Layer:"))
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
split.prop_search(tex, "uv_layer", ob.data, "uv_textures", text="")
|
||||
@ -824,12 +825,12 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
|
||||
elif tex.texture_coords == 'OBJECT':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Object:")
|
||||
split.label(text=_("Object:"))
|
||||
split.prop(tex, "object", text="")
|
||||
|
||||
if isinstance(idblock, bpy.types.Brush):
|
||||
if context.sculpt_object:
|
||||
layout.label(text="Brush Mapping:")
|
||||
layout.label(text=_("Brush Mapping:"))
|
||||
layout.prop(tex, "map_mode", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
@ -838,7 +839,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
|
||||
else:
|
||||
if isinstance(idblock, bpy.types.Material):
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Projection:")
|
||||
split.label(text=_("Projection:"))
|
||||
split.prop(tex, "mapping", text="")
|
||||
|
||||
split = layout.split()
|
||||
@ -900,111 +901,111 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Diffuse:")
|
||||
factor_but(col, "use_map_diffuse", "diffuse_factor", "Intensity")
|
||||
factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
|
||||
factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
|
||||
factor_but(col, "use_map_translucency", "translucency_factor", "Translucency")
|
||||
col.label(text=_("Diffuse:"))
|
||||
factor_but(col, "use_map_diffuse", "diffuse_factor", _("Intensity"))
|
||||
factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", _("Color"))
|
||||
factor_but(col, "use_map_alpha", "alpha_factor", _("Alpha"))
|
||||
factor_but(col, "use_map_translucency", "translucency_factor", _("Translucency"))
|
||||
|
||||
col.label(text="Specular:")
|
||||
factor_but(col, "use_map_specular", "specular_factor", "Intensity")
|
||||
factor_but(col, "use_map_color_spec", "specular_color_factor", "Color")
|
||||
factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
|
||||
col.label(text=_("Specular:"))
|
||||
factor_but(col, "use_map_specular", "specular_factor", _("Intensity"))
|
||||
factor_but(col, "use_map_color_spec", "specular_color_factor", _("Color"))
|
||||
factor_but(col, "use_map_hardness", "hardness_factor", _("Hardness"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Shading:")
|
||||
factor_but(col, "use_map_ambient", "ambient_factor", "Ambient")
|
||||
factor_but(col, "use_map_emit", "emit_factor", "Emit")
|
||||
factor_but(col, "use_map_mirror", "mirror_factor", "Mirror")
|
||||
factor_but(col, "use_map_raymir", "raymir_factor", "Ray Mirror")
|
||||
col.label(text=_("Shading:"))
|
||||
factor_but(col, "use_map_ambient", "ambient_factor", _("Ambient"))
|
||||
factor_but(col, "use_map_emit", "emit_factor", _("Emit"))
|
||||
factor_but(col, "use_map_mirror", "mirror_factor", _("Mirror"))
|
||||
factor_but(col, "use_map_raymir", "raymir_factor", _("Ray Mirror"))
|
||||
|
||||
col.label(text="Geometry:")
|
||||
col.label(text=_("Geometry:"))
|
||||
# XXX replace 'or' when displacement is fixed to not rely on normal influence value.
|
||||
sub_tmp = factor_but(col, "use_map_normal", "normal_factor", "Normal")
|
||||
sub_tmp = factor_but(col, "use_map_normal", "normal_factor", _("Normal"))
|
||||
sub_tmp.active = (tex.use_map_normal or tex.use_map_displacement)
|
||||
# END XXX
|
||||
|
||||
factor_but(col, "use_map_warp", "warp_factor", "Warp")
|
||||
factor_but(col, "use_map_displacement", "displacement_factor", "Displace")
|
||||
factor_but(col, "use_map_warp", "warp_factor", _("Warp"))
|
||||
factor_but(col, "use_map_displacement", "displacement_factor", _("Displace"))
|
||||
|
||||
#sub = col.column()
|
||||
#sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
|
||||
#sub.prop(tex, "default_value", text="Amount", slider=True)
|
||||
#sub.prop(tex, "default_value", text=_("Amount"), slider=True)
|
||||
elif idblock.type == 'HALO':
|
||||
layout.label(text="Halo:")
|
||||
layout.label(text=_("Halo:"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
|
||||
factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
|
||||
factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", _("Color"))
|
||||
factor_but(col, "use_map_alpha", "alpha_factor", _("Alpha"))
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_raymir", "raymir_factor", "Size")
|
||||
factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
|
||||
factor_but(col, "use_map_translucency", "translucency_factor", "Add")
|
||||
factor_but(col, "use_map_raymir", "raymir_factor", _("Size"))
|
||||
factor_but(col, "use_map_hardness", "hardness_factor", _("Hardness"))
|
||||
factor_but(col, "use_map_translucency", "translucency_factor", _("Add"))
|
||||
elif idblock.type == 'VOLUME':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_density", "density_factor", "Density")
|
||||
factor_but(col, "use_map_emission", "emission_factor", "Emission")
|
||||
factor_but(col, "use_map_scatter", "scattering_factor", "Scattering")
|
||||
factor_but(col, "use_map_reflect", "reflection_factor", "Reflection")
|
||||
factor_but(col, "use_map_density", "density_factor", _("Density"))
|
||||
factor_but(col, "use_map_emission", "emission_factor", _("Emission"))
|
||||
factor_but(col, "use_map_scatter", "scattering_factor", _("Scattering"))
|
||||
factor_but(col, "use_map_reflect", "reflection_factor", _("Reflection"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text=" ")
|
||||
factor_but(col, "use_map_color_emission", "emission_color_factor", "Emission Color")
|
||||
factor_but(col, "use_map_color_transmission", "transmission_color_factor", "Transmission Color")
|
||||
factor_but(col, "use_map_color_reflection", "reflection_color_factor", "Reflection Color")
|
||||
factor_but(col, "use_map_color_emission", "emission_color_factor", _("Emission Color"))
|
||||
factor_but(col, "use_map_color_transmission", "transmission_color_factor", _("Transmission Color"))
|
||||
factor_but(col, "use_map_color_reflection", "reflection_color_factor", _("Reflection Color"))
|
||||
|
||||
elif isinstance(idblock, bpy.types.Lamp):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_color", "color_factor", "Color")
|
||||
factor_but(col, "use_map_color", "color_factor", _("Color"))
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_shadow", "shadow_factor", "Shadow")
|
||||
factor_but(col, "use_map_shadow", "shadow_factor", _("Shadow"))
|
||||
|
||||
elif isinstance(idblock, bpy.types.World):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_blend", "blend_factor", "Blend")
|
||||
factor_but(col, "use_map_horizon", "horizon_factor", "Horizon")
|
||||
factor_but(col, "use_map_blend", "blend_factor", _("Blend"))
|
||||
factor_but(col, "use_map_horizon", "horizon_factor", _("Horizon"))
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_zenith_up", "zenith_up_factor", "Zenith Up")
|
||||
factor_but(col, "use_map_zenith_down", "zenith_down_factor", "Zenith Down")
|
||||
factor_but(col, "use_map_zenith_up", "zenith_up_factor", _("Zenith Up"))
|
||||
factor_but(col, "use_map_zenith_down", "zenith_down_factor", _("Zenith Down"))
|
||||
elif isinstance(idblock, bpy.types.ParticleSettings):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="General:")
|
||||
factor_but(col, "use_map_time", "time_factor", "Time")
|
||||
factor_but(col, "use_map_life", "life_factor", "Lifetime")
|
||||
factor_but(col, "use_map_density", "density_factor", "Density")
|
||||
factor_but(col, "use_map_size", "size_factor", "Size")
|
||||
col.label(text=_("General:"))
|
||||
factor_but(col, "use_map_time", "time_factor", _("Time"))
|
||||
factor_but(col, "use_map_life", "life_factor", _("Lifetime"))
|
||||
factor_but(col, "use_map_density", "density_factor", _("Density"))
|
||||
factor_but(col, "use_map_size", "size_factor", _("Size"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Physics:")
|
||||
factor_but(col, "use_map_velocity", "velocity_factor", "Velocity")
|
||||
factor_but(col, "use_map_damp", "damp_factor", "Damp")
|
||||
factor_but(col, "use_map_gravity", "gravity_factor", "Gravity")
|
||||
factor_but(col, "use_map_field", "field_factor", "Force Fields")
|
||||
col.label(text=_("Physics:"))
|
||||
factor_but(col, "use_map_velocity", "velocity_factor", _("Velocity"))
|
||||
factor_but(col, "use_map_damp", "damp_factor", _("Damp"))
|
||||
factor_but(col, "use_map_gravity", "gravity_factor", _("Gravity"))
|
||||
factor_but(col, "use_map_field", "field_factor", _("Force Fields"))
|
||||
|
||||
layout.label(text="Hair:")
|
||||
layout.label(text=_("Hair:"))
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_length", "length_factor", "Length")
|
||||
factor_but(col, "use_map_clump", "clump_factor", "Clump")
|
||||
factor_but(col, "use_map_length", "length_factor", _("Length"))
|
||||
factor_but(col, "use_map_clump", "clump_factor", _("Clump"))
|
||||
|
||||
col = split.column()
|
||||
factor_but(col, "use_map_kink", "kink_factor", "Kink")
|
||||
factor_but(col, "use_map_rough", "rough_factor", "Rough")
|
||||
factor_but(col, "use_map_kink", "kink_factor", _("Kink"))
|
||||
factor_but(col, "use_map_rough", "rough_factor", _("Rough"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -1012,32 +1013,32 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "blend_type", text="Blend")
|
||||
col.prop(tex, "blend_type", text=_("Blend"))
|
||||
col.prop(tex, "use_rgb_to_intensity")
|
||||
# color is used on grayscale textures even when use_rgb_to_intensity is disabled.
|
||||
col.prop(tex, "color", text="")
|
||||
|
||||
col = split.column()
|
||||
col.prop(tex, "invert", text="Negative")
|
||||
col.prop(tex, "invert", text=_("Negative"))
|
||||
col.prop(tex, "use_stencil")
|
||||
|
||||
if isinstance(idblock, bpy.types.Material) or isinstance(idblock, bpy.types.World):
|
||||
col.prop(tex, "default_value", text="DVar", slider=True)
|
||||
col.prop(tex, "default_value", text=_("DVar"), slider=True)
|
||||
|
||||
if isinstance(idblock, bpy.types.Material):
|
||||
layout.label(text="Bump Mapping:")
|
||||
layout.label(text=_("Bump Mapping:"))
|
||||
|
||||
# only show bump settings if activated but not for normalmap images
|
||||
row = layout.row()
|
||||
|
||||
sub = row.row()
|
||||
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and (tex.texture.use_normal_map or tex.texture.use_derivative_map))
|
||||
sub.prop(tex, "bump_method", text="Method")
|
||||
sub.prop(tex, "bump_method", text=_("Method"))
|
||||
|
||||
# the space setting is supported for: derivmaps + bumpmaps (DEFAULT,BEST_QUALITY), not for normalmaps
|
||||
sub = row.row()
|
||||
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and ((tex.bump_method in {'BUMP_DEFAULT', 'BUMP_BEST_QUALITY'}) or (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
|
||||
sub.prop(tex, "bump_objectspace", text="Space")
|
||||
sub.prop(tex, "bump_objectspace", text=_("Space"))
|
||||
|
||||
|
||||
class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -20,6 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Panel
|
||||
from rna_prop_ui import PropertyPanel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class WorldButtonsPanel():
|
||||
@ -115,12 +116,12 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel):
|
||||
layout.active = light.use_ambient_occlusion
|
||||
|
||||
split = layout.split()
|
||||
split.prop(light, "ao_factor", text="Factor")
|
||||
split.prop(light, "ao_factor", text=_("Factor"))
|
||||
split.prop(light, "ao_blend_type", text="")
|
||||
|
||||
|
||||
class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
|
||||
bl_label = "Environment Lighting"
|
||||
bl_label = _("Environment Lighting")
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER'}
|
||||
|
||||
def draw_header(self, context):
|
||||
@ -134,7 +135,7 @@ class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
|
||||
layout.active = light.use_environment_light
|
||||
|
||||
split = layout.split()
|
||||
split.prop(light, "environment_energy", text="Energy")
|
||||
split.prop(light, "environment_energy", text=_("Energy"))
|
||||
split.prop(light, "environment_color", text="")
|
||||
|
||||
|
||||
@ -153,11 +154,11 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel):
|
||||
layout.active = light.use_indirect_light and light.gather_method == 'APPROXIMATE'
|
||||
|
||||
split = layout.split()
|
||||
split.prop(light, "indirect_factor", text="Factor")
|
||||
split.prop(light, "indirect_bounces", text="Bounces")
|
||||
split.prop(light, "indirect_factor", text=_("Factor"))
|
||||
split.prop(light, "indirect_bounces", text=_("Bounces"))
|
||||
|
||||
if light.gather_method == 'RAYTRACE':
|
||||
layout.label(text="Only works with Approximate gather method")
|
||||
layout.label(text=_("Only works with Approximate gather method"))
|
||||
|
||||
|
||||
class WORLD_PT_gather(WorldButtonsPanel, Panel):
|
||||
@ -175,18 +176,18 @@ class WORLD_PT_gather(WorldButtonsPanel, Panel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Attenuation:")
|
||||
col.label(text=_("Attenuation:"))
|
||||
if light.gather_method == 'RAYTRACE':
|
||||
col.prop(light, "distance")
|
||||
col.prop(light, "use_falloff")
|
||||
sub = col.row()
|
||||
sub.active = light.use_falloff
|
||||
sub.prop(light, "falloff_strength", text="Strength")
|
||||
sub.prop(light, "falloff_strength", text=_("Strength"))
|
||||
|
||||
if light.gather_method == 'RAYTRACE':
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Sampling:")
|
||||
col.label(text=_("Sampling:"))
|
||||
col.prop(light, "sample_method", text="")
|
||||
|
||||
sub = col.column()
|
||||
@ -201,9 +202,9 @@ class WORLD_PT_gather(WorldButtonsPanel, Panel):
|
||||
if light.gather_method == 'APPROXIMATE':
|
||||
col = split.column()
|
||||
|
||||
col.label(text="Sampling:")
|
||||
col.label(text=_("Sampling:"))
|
||||
col.prop(light, "passes")
|
||||
col.prop(light, "error_threshold", text="Error")
|
||||
col.prop(light, "error_threshold", text=_("Error"))
|
||||
col.prop(light, "use_cache")
|
||||
col.prop(light, "correction")
|
||||
|
||||
@ -257,11 +258,11 @@ class WORLD_PT_stars(WorldButtonsPanel, Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(world.star_settings, "size")
|
||||
col.prop(world.star_settings, "color_random", text="Colors")
|
||||
col.prop(world.star_settings, "color_random", text=_("Colors"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(world.star_settings, "distance_min", text="Min. Dist")
|
||||
col.prop(world.star_settings, "average_separation", text="Separation")
|
||||
col.prop(world.star_settings, "distance_min", text=_("Min. Dist"))
|
||||
col.prop(world.star_settings, "average_separation", text=_("Separation"))
|
||||
|
||||
|
||||
class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -20,6 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Operator
|
||||
from bpy.props import StringProperty
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class CONSOLE_HT_header(Header):
|
||||
@ -33,7 +34,7 @@ class CONSOLE_HT_header(Header):
|
||||
if context.area.show_menus:
|
||||
layout.menu("CONSOLE_MT_console")
|
||||
|
||||
layout.operator("console.autocomplete", text="Autocomplete")
|
||||
layout.operator("console.autocomplete", text=_("Autocomplete"))
|
||||
|
||||
|
||||
class CONSOLE_MT_console(Menu):
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
import bpy
|
||||
from bpy.types import Header, Menu
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
#######################################
|
||||
@ -117,7 +118,7 @@ class DOPESHEET_HT_header(Header):
|
||||
row.menu("DOPESHEET_MT_gpencil_frame")
|
||||
|
||||
layout.prop(st, "mode", text="")
|
||||
layout.prop(st.dopesheet, "show_summary", text="Summary")
|
||||
layout.prop(st.dopesheet, "show_summary", text=_("Summary"))
|
||||
|
||||
if st.mode == 'DOPESHEET':
|
||||
dopesheet_filter(layout, context)
|
||||
@ -153,9 +154,9 @@ class DOPESHEET_MT_view(Menu):
|
||||
layout.prop(st, "use_marker_sync")
|
||||
|
||||
if st.show_seconds:
|
||||
layout.operator("anim.time_toggle", text="Show Frames")
|
||||
layout.operator("anim.time_toggle", text=_("Show Frames"))
|
||||
else:
|
||||
layout.operator("anim.time_toggle", text="Show Seconds")
|
||||
layout.operator("anim.time_toggle", text=_("Show Seconds"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.previewrange_set")
|
||||
@ -180,22 +181,22 @@ class DOPESHEET_MT_select(Menu):
|
||||
|
||||
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
|
||||
layout.operator("action.select_all_toggle")
|
||||
layout.operator("action.select_all_toggle", text="Invert Selection").invert = True
|
||||
layout.operator("action.select_all_toggle", text=_("Invert Selection")).invert = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("action.select_border")
|
||||
layout.operator("action.select_border", text="Border Axis Range").axis_range = True
|
||||
layout.operator("action.select_border", text=_("Border Axis Range")).axis_range = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS'
|
||||
layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA'
|
||||
layout.operator("action.select_column", text=_("Columns on Selected Keys")).mode = 'KEYS'
|
||||
layout.operator("action.select_column", text=_("Column on Current Frame")).mode = 'CFRA'
|
||||
|
||||
layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN'
|
||||
layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN'
|
||||
layout.operator("action.select_column", text=_("Columns on Selected Markers")).mode = 'MARKERS_COLUMN'
|
||||
layout.operator("action.select_column", text=_("Between Selected Markers")).mode = 'MARKERS_BETWEEN'
|
||||
|
||||
layout.separator()
|
||||
layout.operator("action.select_leftright", text="Before Current Frame").mode = 'LEFT'
|
||||
layout.operator("action.select_leftright", text="After Current Frame").mode = 'RIGHT'
|
||||
layout.operator("action.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
|
||||
layout.operator("action.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
|
||||
|
||||
# FIXME: grease pencil mode isn't supported for these yet, so skip for that mode only
|
||||
if context.space_data.mode != 'GPENCIL':
|
||||
@ -217,14 +218,14 @@ class DOPESHEET_MT_marker(Menu):
|
||||
|
||||
#layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("marker.add", "Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.operator("marker.add", _("Add Marker"))
|
||||
layout.operator("marker.duplicate", text=_("Duplicate Marker"))
|
||||
layout.operator("marker.delete", text=_("Delete Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("marker.rename", text="Rename Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.rename", text=_("Rename Marker"))
|
||||
layout.operator("marker.move", text=_("Grab/Move Marker"))
|
||||
|
||||
if st.mode in {'ACTION', 'SHAPEKEY'} and st.action:
|
||||
layout.separator()
|
||||
@ -254,14 +255,14 @@ class DOPESHEET_MT_channel(Menu):
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_editable_toggle")
|
||||
layout.operator_menu_enum("action.extrapolation_type", "type", text="Extrapolation Mode")
|
||||
layout.operator_menu_enum("action.extrapolation_type", "type", text=_("Extrapolation Mode"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_expand")
|
||||
layout.operator("anim.channels_collapse")
|
||||
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text=_("Move..."))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_fcurves_enable")
|
||||
@ -273,10 +274,10 @@ class DOPESHEET_MT_key(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.menu("DOPESHEET_MT_key_transform", text="Transform")
|
||||
layout.menu("DOPESHEET_MT_key_transform", text=_("Transform"))
|
||||
|
||||
layout.operator_menu_enum("action.snap", "type", text="Snap")
|
||||
layout.operator_menu_enum("action.mirror", "type", text="Mirror")
|
||||
layout.operator_menu_enum("action.snap", "type", text=_("Snap"))
|
||||
layout.operator_menu_enum("action.mirror", "type", text=_("Mirror"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("action.keyframe_insert")
|
||||
@ -286,9 +287,9 @@ class DOPESHEET_MT_key(Menu):
|
||||
layout.operator("action.delete")
|
||||
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("action.keyframe_type", "type", text="Keyframe Type")
|
||||
layout.operator_menu_enum("action.handle_type", "type", text="Handle Type")
|
||||
layout.operator_menu_enum("action.interpolation_type", "type", text="Interpolation Mode")
|
||||
layout.operator_menu_enum("action.keyframe_type", "type", text=_("Keyframe Type"))
|
||||
layout.operator_menu_enum("action.handle_type", "type", text=_("Handle Type"))
|
||||
layout.operator_menu_enum("action.interpolation_type", "type", text=_("Interpolation Mode"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("action.clean")
|
||||
@ -305,10 +306,10 @@ class DOPESHEET_MT_key_transform(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("transform.transform", text="Grab/Move").mode = 'TIME_TRANSLATE'
|
||||
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.transform", text="Slide").mode = 'TIME_SLIDE'
|
||||
layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE'
|
||||
layout.operator("transform.transform", text=_("Grab/Move")).mode = 'TIME_TRANSLATE'
|
||||
layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.transform", text=_("Slide")).mode = 'TIME_SLIDE'
|
||||
layout.operator("transform.transform", text=_("Scale")).mode = 'TIME_SCALE'
|
||||
|
||||
|
||||
#######################################
|
||||
@ -347,7 +348,7 @@ class DOPESHEET_MT_gpencil_frame(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.menu("DOPESHEET_MT_key_transform", text="Transform")
|
||||
layout.menu("DOPESHEET_MT_key_transform", text=_("Transform"))
|
||||
|
||||
#layout.operator_menu_enum("action.snap", "type", text="Snap")
|
||||
#layout.operator_menu_enum("action.mirror", "type", text="Mirror")
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
import bpy
|
||||
from bpy.types import Header, Menu
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class GRAPH_HT_header(Header):
|
||||
@ -82,9 +83,9 @@ class GRAPH_MT_view(Menu):
|
||||
|
||||
layout.separator()
|
||||
if st.show_handles:
|
||||
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text="Show All Handles")
|
||||
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text=_("Show All Handles"))
|
||||
else:
|
||||
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text="Show All Handles")
|
||||
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text=_("Show All Handles"))
|
||||
layout.prop(st, "use_only_selected_curves_handles")
|
||||
layout.prop(st, "use_only_selected_keyframe_handles")
|
||||
layout.operator("anim.time_toggle")
|
||||
@ -112,23 +113,23 @@ class GRAPH_MT_select(Menu):
|
||||
|
||||
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
|
||||
layout.operator("graph.select_all_toggle")
|
||||
layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True
|
||||
layout.operator("graph.select_all_toggle", text=_("Invert Selection")).invert = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_border")
|
||||
layout.operator("graph.select_border", text="Border Axis Range").axis_range = True
|
||||
layout.operator("graph.select_border", text="Border (Include Handles)").include_handles = True
|
||||
layout.operator("graph.select_border", text=_("Border Axis Range")).axis_range = True
|
||||
layout.operator("graph.select_border", text=_("Border (Include Handles)")).include_handles = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS'
|
||||
layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA'
|
||||
layout.operator("graph.select_column", text=_("Columns on Selected Keys")).mode = 'KEYS'
|
||||
layout.operator("graph.select_column", text=_("Column on Current Frame")).mode = 'CFRA'
|
||||
|
||||
layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN'
|
||||
layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN'
|
||||
layout.operator("graph.select_column", text=_("Columns on Selected Markers")).mode = 'MARKERS_COLUMN'
|
||||
layout.operator("graph.select_column", text=_("Between Selected Markers")).mode = 'MARKERS_BETWEEN'
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_leftright", text="Before Current Frame").mode = 'LEFT'
|
||||
layout.operator("graph.select_leftright", text="After Current Frame").mode = 'RIGHT'
|
||||
layout.operator("graph.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
|
||||
layout.operator("graph.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.select_more")
|
||||
@ -146,14 +147,14 @@ class GRAPH_MT_marker(Menu):
|
||||
|
||||
#layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("marker.add", "Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.operator("marker.add", _("Add Marker"))
|
||||
layout.operator("marker.duplicate", text=_("Duplicate Marker"))
|
||||
layout.operator("marker.delete", text=_("Delete Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("marker.rename", text="Rename Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.rename", text=_("Rename Marker"))
|
||||
layout.operator("marker.move", text=_("Grab/Move Marker"))
|
||||
|
||||
# TODO: pose markers for action edit mode only?
|
||||
|
||||
@ -176,14 +177,14 @@ class GRAPH_MT_channel(Menu):
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_editable_toggle")
|
||||
layout.operator("anim.channels_visibility_set")
|
||||
layout.operator_menu_enum("graph.extrapolation_type", "type", text="Extrapolation Mode")
|
||||
layout.operator_menu_enum("graph.extrapolation_type", "type", text=_("Extrapolation Mode"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_expand")
|
||||
layout.operator("anim.channels_collapse")
|
||||
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text=_("Move..."))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("anim.channels_fcurves_enable")
|
||||
@ -195,10 +196,10 @@ class GRAPH_MT_key(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.menu("GRAPH_MT_key_transform", text="Transform")
|
||||
layout.menu("GRAPH_MT_key_transform", text=_("Transform"))
|
||||
|
||||
layout.operator_menu_enum("graph.snap", "type", text="Snap")
|
||||
layout.operator_menu_enum("graph.mirror", "type", text="Mirror")
|
||||
layout.operator_menu_enum("graph.snap", "type", text=_("Snap"))
|
||||
layout.operator_menu_enum("graph.mirror", "type", text=_("Mirror"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.keyframe_insert")
|
||||
@ -210,8 +211,8 @@ class GRAPH_MT_key(Menu):
|
||||
layout.operator("graph.delete")
|
||||
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("graph.handle_type", "type", text="Handle Type")
|
||||
layout.operator_menu_enum("graph.interpolation_type", "type", text="Interpolation Mode")
|
||||
layout.operator_menu_enum("graph.handle_type", "type", text=_("Handle Type"))
|
||||
layout.operator_menu_enum("graph.interpolation_type", "type", text=_("Interpolation Mode"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.clean")
|
||||
@ -224,7 +225,7 @@ class GRAPH_MT_key(Menu):
|
||||
layout.operator("graph.paste")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("graph.euler_filter", text="Discontinuity (Euler) Filter")
|
||||
layout.operator("graph.euler_filter", text=_("Discontinuity (Euler) Filter"))
|
||||
|
||||
|
||||
class GRAPH_MT_key_transform(Menu):
|
||||
@ -233,10 +234,10 @@ class GRAPH_MT_key_transform(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("transform.translate", text="Grab/Move")
|
||||
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.rotate", text="Rotate")
|
||||
layout.operator("transform.resize", text="Scale")
|
||||
layout.operator("transform.translate", text=_("Grab/Move"))
|
||||
layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.rotate", text=_("Rotate"))
|
||||
layout.operator("transform.resize", text=_("Scale"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class BrushButtonsPanel():
|
||||
@ -64,7 +65,7 @@ class IMAGE_MT_view(Menu):
|
||||
ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]]
|
||||
|
||||
for a, b in ratios:
|
||||
text = "Zoom %d:%d" % (a, b)
|
||||
text = _("Zoom") + " %d:%d" % (a, b)
|
||||
layout.operator("image.view_zoom_ratio", text=text).ratio = a / b
|
||||
|
||||
layout.separator()
|
||||
@ -92,7 +93,7 @@ class IMAGE_MT_select(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("uv.select_all")
|
||||
layout.operator("uv.select_all", text="Inverse").action = 'INVERT'
|
||||
layout.operator("uv.select_all", text=_("Inverse")).action = 'INVERT'
|
||||
layout.operator("uv.unlink_selected")
|
||||
|
||||
layout.separator()
|
||||
@ -122,12 +123,12 @@ class IMAGE_MT_image(Menu):
|
||||
|
||||
layout.operator("image.save")
|
||||
layout.operator("image.save_as")
|
||||
layout.operator("image.save_as", text="Save a Copy").copy = True
|
||||
layout.operator("image.save_as", text=_("Save a Copy")).copy = True
|
||||
|
||||
if ima.source == 'SEQUENCE':
|
||||
layout.operator("image.save_sequence")
|
||||
|
||||
layout.operator("image.external_edit", "Edit Externally")
|
||||
layout.operator("image.external_edit", _("Edit Externally"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -145,7 +146,7 @@ class IMAGE_MT_image(Menu):
|
||||
# this could be done in operator poll too
|
||||
if ima.is_dirty:
|
||||
if ima.source in {'FILE', 'GENERATED'} and ima.type != 'MULTILAYER':
|
||||
layout.operator("image.pack", text="Pack As PNG").as_png = True
|
||||
layout.operator("image.pack", text=_("Pack As PNG")).as_png = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -158,23 +159,23 @@ class IMAGE_MT_image_invert(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
op = layout.operator("image.invert", text="Invert Image Colors")
|
||||
op = layout.operator("image.invert", text=_("Invert Image Colors"))
|
||||
op.invert_r = True
|
||||
op.invert_g = True
|
||||
op.invert_b = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
op = layout.operator("image.invert", text="Invert Red Channel")
|
||||
op = layout.operator("image.invert", text=_("Invert Red Channel"))
|
||||
op.invert_r = True
|
||||
|
||||
op = layout.operator("image.invert", text="Invert Green Channel")
|
||||
op = layout.operator("image.invert", text=_("Invert Green Channel"))
|
||||
op.invert_g = True
|
||||
|
||||
op = layout.operator("image.invert", text="Invert Blue Channel")
|
||||
op = layout.operator("image.invert", text=_("Invert Blue Channel"))
|
||||
op.invert_b = True
|
||||
|
||||
op = layout.operator("image.invert", text="Invert Alpha Channel")
|
||||
op = layout.operator("image.invert", text=_("Invert Alpha Channel"))
|
||||
op.invert_a = True
|
||||
|
||||
|
||||
@ -185,8 +186,8 @@ class IMAGE_MT_uvs_showhide(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("uv.reveal")
|
||||
layout.operator("uv.hide", text="Hide Selected")
|
||||
layout.operator("uv.hide", text="Hide Unselected").unselected = True
|
||||
layout.operator("uv.hide", text=_("Hide Selected"))
|
||||
layout.operator("uv.hide", text=_("Hide Unselected")).unselected = True
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_transform(Menu):
|
||||
@ -211,14 +212,14 @@ class IMAGE_MT_uvs_snap(Menu):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("uv.snap_selected", text="Selected to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_selected", text="Selected to Cursor").target = 'CURSOR'
|
||||
layout.operator("uv.snap_selected", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED'
|
||||
layout.operator("uv.snap_selected", text=_("Selected to Pixels")).target = 'PIXELS'
|
||||
layout.operator("uv.snap_selected", text=_("Selected to Cursor")).target = 'CURSOR'
|
||||
layout.operator("uv.snap_selected", text=_("Selected to Adjacent Unselected")).target = 'ADJACENT_UNSELECTED'
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Selected").target = 'SELECTED'
|
||||
layout.operator("uv.snap_cursor", text=_("Cursor to Pixels")).target = 'PIXELS'
|
||||
layout.operator("uv.snap_cursor", text=_("Cursor to Selected")).target = 'SELECTED'
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_mirror(Menu):
|
||||
@ -228,8 +229,8 @@ class IMAGE_MT_uvs_mirror(Menu):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("transform.mirror", text="X Axis").constraint_axis[0] = True
|
||||
layout.operator("transform.mirror", text="Y Axis").constraint_axis[1] = True
|
||||
layout.operator("transform.mirror", text=_("X Axis")).constraint_axis[0] = True
|
||||
layout.operator("transform.mirror", text=_("Y Axis")).constraint_axis[1] = True
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_weldalign(Menu):
|
||||
@ -259,7 +260,7 @@ class IMAGE_MT_uvs(Menu):
|
||||
|
||||
layout.prop(uv, "use_live_unwrap")
|
||||
layout.operator("uv.unwrap")
|
||||
layout.operator("uv.pin", text="Unpin").clear = True
|
||||
layout.operator("uv.pin", text=_("Unpin")).clear = True
|
||||
layout.operator("uv.pin")
|
||||
|
||||
layout.separator()
|
||||
@ -299,32 +300,32 @@ class IMAGE_MT_uvs_select_mode(Menu):
|
||||
# do smart things depending on whether uv_select_sync is on
|
||||
|
||||
if toolsettings.use_uv_select_sync:
|
||||
prop = layout.operator("wm.context_set_value", text="Vertex", icon='VERTEXSEL')
|
||||
prop = layout.operator("wm.context_set_value", text=_("Vertex"), icon='VERTEXSEL')
|
||||
prop.value = "(True, False, False)"
|
||||
prop.data_path = "tool_settings.mesh_select_mode"
|
||||
|
||||
prop = layout.operator("wm.context_set_value", text="Edge", icon='EDGESEL')
|
||||
prop = layout.operator("wm.context_set_value", text=_("Edge"), icon='EDGESEL')
|
||||
prop.value = "(False, True, False)"
|
||||
prop.data_path = "tool_settings.mesh_select_mode"
|
||||
|
||||
prop = layout.operator("wm.context_set_value", text="Face", icon='FACESEL')
|
||||
prop = layout.operator("wm.context_set_value", text=_("Face"), icon='FACESEL')
|
||||
prop.value = "(False, False, True)"
|
||||
prop.data_path = "tool_settings.mesh_select_mode"
|
||||
|
||||
else:
|
||||
prop = layout.operator("wm.context_set_string", text="Vertex", icon='UV_VERTEXSEL')
|
||||
prop = layout.operator("wm.context_set_string", text=_("Vertex"), icon='UV_VERTEXSEL')
|
||||
prop.value = "VERTEX"
|
||||
prop.data_path = "tool_settings.uv_select_mode"
|
||||
|
||||
prop = layout.operator("wm.context_set_string", text="Edge", icon='UV_EDGESEL')
|
||||
prop = layout.operator("wm.context_set_string", text=_("Edge"), icon='UV_EDGESEL')
|
||||
prop.value = "EDGE"
|
||||
prop.data_path = "tool_settings.uv_select_mode"
|
||||
|
||||
prop = layout.operator("wm.context_set_string", text="Face", icon='UV_FACESEL')
|
||||
prop = layout.operator("wm.context_set_string", text=_("Face"), icon='UV_FACESEL')
|
||||
prop.value = "FACE"
|
||||
prop.data_path = "tool_settings.uv_select_mode"
|
||||
|
||||
prop = layout.operator("wm.context_set_string", text="Island", icon='UV_ISLANDSEL')
|
||||
prop = layout.operator("wm.context_set_string", text=_("Island"), icon='UV_ISLANDSEL')
|
||||
prop.value = "ISLAND"
|
||||
prop.data_path = "tool_settings.uv_select_mode"
|
||||
|
||||
@ -356,9 +357,9 @@ class IMAGE_HT_header(Header):
|
||||
sub.menu("IMAGE_MT_select")
|
||||
|
||||
if ima and ima.is_dirty:
|
||||
sub.menu("IMAGE_MT_image", text="Image*")
|
||||
sub.menu("IMAGE_MT_image", text=_("Image*"))
|
||||
else:
|
||||
sub.menu("IMAGE_MT_image", text="Image")
|
||||
sub.menu("IMAGE_MT_image", text=_("Image"))
|
||||
|
||||
if show_uvedit:
|
||||
sub.menu("IMAGE_MT_uvs")
|
||||
@ -596,22 +597,22 @@ class IMAGE_PT_view_properties(Panel):
|
||||
|
||||
col = split.column()
|
||||
if ima:
|
||||
col.prop(ima, "display_aspect", text="Aspect Ratio")
|
||||
col.prop(ima, "display_aspect", text=_("Aspect Ratio"))
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Coordinates:")
|
||||
col.prop(sima, "show_repeat", text="Repeat")
|
||||
col.label(text=_("Coordinates:"))
|
||||
col.prop(sima, "show_repeat", text=_("Repeat"))
|
||||
if show_uvedit:
|
||||
col.prop(uvedit, "show_normalized_coords", text="Normalized")
|
||||
col.prop(uvedit, "show_normalized_coords", text=_("Normalized"))
|
||||
|
||||
elif show_uvedit:
|
||||
col.label(text="Coordinates:")
|
||||
col.prop(uvedit, "show_normalized_coords", text="Normalized")
|
||||
col.label(text=_("Coordinates:"))
|
||||
col.prop(uvedit, "show_normalized_coords", text=_("Normalized"))
|
||||
|
||||
if show_uvedit:
|
||||
|
||||
col = layout.column()
|
||||
col.label("Cursor Location:")
|
||||
col.label(_("Cursor Location:"))
|
||||
col.row().prop(uvedit, "cursor_location", text="")
|
||||
|
||||
col.separator()
|
||||
@ -623,11 +624,11 @@ class IMAGE_PT_view_properties(Panel):
|
||||
|
||||
col = split.column()
|
||||
col.prop(uvedit, "show_faces")
|
||||
col.prop(uvedit, "show_smooth_edges", text="Smooth")
|
||||
col.prop(uvedit, "show_modified_edges", text="Modified")
|
||||
col.prop(uvedit, "show_smooth_edges", text=_("Smooth"))
|
||||
col.prop(uvedit, "show_modified_edges", text=_("Modified"))
|
||||
|
||||
col = split.column()
|
||||
col.prop(uvedit, "show_stretch", text="Stretch")
|
||||
col.prop(uvedit, "show_stretch", text=_("Stretch"))
|
||||
sub = col.column()
|
||||
sub.active = uvedit.show_stretch
|
||||
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
|
||||
@ -669,12 +670,12 @@ class IMAGE_PT_paint(Panel):
|
||||
row.prop(brush, "jitter", slider=True)
|
||||
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
|
||||
|
||||
col.prop(brush, "blend", text="Blend")
|
||||
col.prop(brush, "blend", text=_("Blend"))
|
||||
|
||||
if brush.image_tool == 'CLONE':
|
||||
col.separator()
|
||||
col.prop(brush, "clone_image", text="Image")
|
||||
col.prop(brush, "clone_alpha", text="Alpha")
|
||||
col.prop(brush, "clone_image", text=_("Image"))
|
||||
col.prop(brush, "clone_alpha", text=_("Alpha"))
|
||||
|
||||
|
||||
class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel):
|
||||
@ -728,7 +729,7 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel):
|
||||
layout.prop(brush, "use_space")
|
||||
row = layout.row(align=True)
|
||||
row.active = brush.use_space
|
||||
row.prop(brush, "spacing", text="Distance", slider=True)
|
||||
row.prop(brush, "spacing", text=_("Distance"), slider=True)
|
||||
row.prop(brush, "use_pressure_spacing", toggle=True, text="")
|
||||
|
||||
layout.prop(brush, "use_wrap")
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Operator
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class INFO_HT_header(Header):
|
||||
@ -45,7 +46,7 @@ class INFO_HT_header(Header):
|
||||
sub.menu("INFO_MT_help")
|
||||
|
||||
if window.screen.show_fullscreen:
|
||||
layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
|
||||
layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text=_("Back to Previous"))
|
||||
layout.separator()
|
||||
else:
|
||||
layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
|
||||
@ -73,11 +74,11 @@ class INFO_HT_header(Header):
|
||||
"""
|
||||
sinfo = context.space_data
|
||||
row = layout.row(align=True)
|
||||
row.prop(sinfo, "show_report_debug", text="Debug")
|
||||
row.prop(sinfo, "show_report_info", text="Info")
|
||||
row.prop(sinfo, "show_report_operator", text="Operators")
|
||||
row.prop(sinfo, "show_report_warning", text="Warnings")
|
||||
row.prop(sinfo, "show_report_error", text="Errors")
|
||||
row.prop(sinfo, "show_report_debug", text=_("Debug"))
|
||||
row.prop(sinfo, "show_report_info", text=_("Info"))
|
||||
row.prop(sinfo, "show_report_operator", text=_("Operators"))
|
||||
row.prop(sinfo, "show_report_warning", text=_("Warnings"))
|
||||
row.prop(sinfo, "show_report_error", text=_("Errors"))
|
||||
|
||||
row = layout.row()
|
||||
row.enabled = sinfo.show_report_operator
|
||||
@ -106,25 +107,25 @@ class INFO_MT_file(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("wm.read_homefile", text="New", icon='NEW')
|
||||
layout.operator("wm.read_homefile", text=_("New"), icon='NEW')
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
|
||||
layout.operator("wm.open_mainfile", text=_("Open..."), icon='FILE_FOLDER')
|
||||
layout.menu("INFO_MT_file_open_recent")
|
||||
layout.operator("wm.recover_last_session", icon='RECOVER_LAST')
|
||||
layout.operator("wm.recover_auto_save", text="Recover Auto Save...")
|
||||
layout.operator("wm.recover_auto_save", text=_("Recover Auto Save..."))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK').check_existing = False
|
||||
layout.operator("wm.save_mainfile", text=_("Save"), icon='FILE_TICK').check_existing = False
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.save_as_mainfile", text="Save As...")
|
||||
layout.operator("wm.save_as_mainfile", text=_("Save As..."))
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.save_as_mainfile", text="Save Copy...").copy = True
|
||||
layout.operator("wm.save_as_mainfile", text=_("Save Copy...")).copy = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("screen.userpref_show", text="User Preferences...", icon='PREFERENCES')
|
||||
layout.operator("screen.userpref_show", text=_("User Preferences..."), icon='PREFERENCES')
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("wm.save_homefile")
|
||||
@ -133,8 +134,8 @@ class INFO_MT_file(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.operator("wm.link_append", text="Link")
|
||||
props = layout.operator("wm.link_append", text="Append")
|
||||
layout.operator("wm.link_append", text=_("Link"))
|
||||
props = layout.operator("wm.link_append", text=_("Append"))
|
||||
props.link = False
|
||||
props.instance_groups = False
|
||||
|
||||
@ -150,7 +151,7 @@ class INFO_MT_file(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("wm.quit_blender", text="Quit", icon='QUIT')
|
||||
layout.operator("wm.quit_blender", text=_("Quit"), icon='QUIT')
|
||||
|
||||
|
||||
class INFO_MT_file_import(Menu):
|
||||
@ -177,8 +178,8 @@ class INFO_MT_file_external_data(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("file.pack_all", text="Pack into .blend file")
|
||||
layout.operator("file.unpack_all", text="Unpack into Files")
|
||||
layout.operator("file.pack_all", text=_("Pack into .blend file"))
|
||||
layout.operator("file.unpack_all", text=_("Unpack into Files"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -196,17 +197,17 @@ class INFO_MT_mesh_add(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane")
|
||||
layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube")
|
||||
layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle")
|
||||
layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere")
|
||||
layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere")
|
||||
layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder")
|
||||
layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone")
|
||||
layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text=_("Plane"))
|
||||
layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text=_("Cube"))
|
||||
layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text=_("Circle"))
|
||||
layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text=_("UV Sphere"))
|
||||
layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text=_("Icosphere"))
|
||||
layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text=_("Cylinder"))
|
||||
layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text=_("Cone"))
|
||||
layout.separator()
|
||||
layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
|
||||
layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
|
||||
layout.operator("mesh.primitive_torus_add", text="Torus", icon='MESH_TORUS')
|
||||
layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text=_("Grid"))
|
||||
layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text=_("Monkey"))
|
||||
layout.operator("mesh.primitive_torus_add", text=_("Torus"), icon='MESH_TORUS')
|
||||
|
||||
|
||||
class INFO_MT_curve_add(Menu):
|
||||
@ -217,11 +218,11 @@ class INFO_MT_curve_add(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier")
|
||||
layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle")
|
||||
layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve")
|
||||
layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
|
||||
layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
|
||||
layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text=_("Bezier"))
|
||||
layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text=_("Circle"))
|
||||
layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text=_("Nurbs Curve"))
|
||||
layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text=_("Nurbs Circle"))
|
||||
layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text=_("Path"))
|
||||
|
||||
|
||||
class INFO_MT_edit_curve_add(Menu):
|
||||
@ -248,12 +249,12 @@ class INFO_MT_surface_add(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve")
|
||||
layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle")
|
||||
layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface")
|
||||
layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder")
|
||||
layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere")
|
||||
layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus")
|
||||
layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text=_("NURBS Curve"))
|
||||
layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text=_("NURBS Circle"))
|
||||
layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text=_("NURBS Surface"))
|
||||
layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text=_("NURBS Cylinder"))
|
||||
layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text=_("NURBS Sphere"))
|
||||
layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text=_("NURBS Torus"))
|
||||
|
||||
|
||||
class INFO_MT_armature_add(Menu):
|
||||
@ -264,7 +265,7 @@ class INFO_MT_armature_add(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA')
|
||||
layout.operator("object.armature_add", text=_("Single Bone"), icon='BONE_DATA')
|
||||
|
||||
|
||||
class INFO_MT_add(Menu):
|
||||
@ -275,39 +276,39 @@ class INFO_MT_add(Menu):
|
||||
|
||||
layout.operator_context = 'EXEC_SCREEN'
|
||||
|
||||
#layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
|
||||
#layout.operator_menu_enum("object.mesh_add", "type", text=_("Mesh"), icon='OUTLINER_OB_MESH')
|
||||
layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
|
||||
|
||||
#layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
|
||||
#layout.operator_menu_enum("object.curve_add", "type", text=_("Curve"), icon='OUTLINER_OB_CURVE')
|
||||
layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
|
||||
#layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
|
||||
#layout.operator_menu_enum("object.surface_add", "type", text=_("Surface"), icon='OUTLINER_OB_SURFACE')
|
||||
layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
|
||||
layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META')
|
||||
layout.operator_menu_enum("object.metaball_add", "type", text=_("Metaball"), icon='OUTLINER_OB_META')
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
|
||||
layout.operator("object.text_add", text=_("Text"), icon='OUTLINER_OB_FONT')
|
||||
layout.separator()
|
||||
|
||||
layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE')
|
||||
layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
|
||||
layout.operator("object.add", text="Empty", icon='OUTLINER_OB_EMPTY').type = 'EMPTY'
|
||||
layout.operator("object.add", text=_("Lattice"), icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
|
||||
layout.operator("object.add", text=_("Empty"), icon='OUTLINER_OB_EMPTY').type = 'EMPTY'
|
||||
layout.separator()
|
||||
|
||||
layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')
|
||||
layout.operator("object.speaker_add", text=_("Speaker"), icon='OUTLINER_OB_SPEAKER')
|
||||
layout.separator()
|
||||
|
||||
layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
|
||||
layout.operator("object.camera_add", text=_("Camera"), icon='OUTLINER_OB_CAMERA')
|
||||
layout.operator_context = 'EXEC_SCREEN'
|
||||
layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP')
|
||||
layout.operator_menu_enum("object.lamp_add", "type", text=_("Lamp"), icon='OUTLINER_OB_LAMP')
|
||||
layout.separator()
|
||||
|
||||
layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY')
|
||||
layout.operator_menu_enum("object.effector_add", "type", text=_("Force Field"), icon='OUTLINER_OB_EMPTY')
|
||||
layout.separator()
|
||||
|
||||
if(len(bpy.data.groups) > 10):
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
|
||||
layout.operator("object.group_instance_add", text=_("Group Instance..."), icon='OUTLINER_OB_EMPTY')
|
||||
else:
|
||||
layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
|
||||
layout.operator_menu_enum("object.group_instance_add", "group", text=_("Group Instance"), icon='OUTLINER_OB_EMPTY')
|
||||
|
||||
|
||||
class INFO_MT_game(Menu):
|
||||
@ -337,13 +338,13 @@ class INFO_MT_render(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
|
||||
layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True
|
||||
layout.operator("render.render", text=_("Render Image"), icon='RENDER_STILL')
|
||||
layout.operator("render.render", text=_("Render Animation"), icon='RENDER_ANIMATION').animation = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("render.opengl", text="OpenGL Render Image")
|
||||
layout.operator("render.opengl", text="OpenGL Render Animation").animation = True
|
||||
layout.operator("render.opengl", text=_("OpenGL Render Image"))
|
||||
layout.operator("render.opengl", text=_("OpenGL Render Animation")).animation = True
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -359,27 +360,27 @@ class INFO_MT_help(Menu):
|
||||
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("wm.url_open", text="Manual", icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual'
|
||||
layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-259/'
|
||||
layout.operator("wm.url_open", text=_("Manual"), icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual'
|
||||
layout.operator("wm.url_open", text=_("Release Log"), icon='URL').url = 'http://www.blender.org/development/release-logs/blender-259/'
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("wm.url_open", text="Blender Website", icon='URL').url = 'http://www.blender.org/'
|
||||
layout.operator("wm.url_open", text="Blender e-Shop", icon='URL').url = 'http://www.blender.org/e-shop'
|
||||
layout.operator("wm.url_open", text="Developer Community", icon='URL').url = 'http://www.blender.org/community/get-involved/'
|
||||
layout.operator("wm.url_open", text="User Community", icon='URL').url = 'http://www.blender.org/community/user-community/'
|
||||
layout.operator("wm.url_open", text=_("Blender Website"), icon='URL').url = 'http://www.blender.org/'
|
||||
layout.operator("wm.url_open", text=_("Blender e-Shop"), icon='URL').url = 'http://www.blender.org/e-shop'
|
||||
layout.operator("wm.url_open", text=_("Developer Community"), icon='URL').url = 'http://www.blender.org/community/get-involved/'
|
||||
layout.operator("wm.url_open", text=_("User Community"), icon='URL').url = 'http://www.blender.org/community/user-community/'
|
||||
layout.separator()
|
||||
layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse'
|
||||
layout.operator("wm.url_open", text=_("Report a Bug"), icon='URL').url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse'
|
||||
layout.separator()
|
||||
|
||||
layout.operator("wm.url_open", text="Python API Reference", icon='URL').url = bpy.types.WM_OT_doc_view._prefix
|
||||
layout.operator("wm.url_open", text=_("Python API Reference"), icon='URL').url = bpy.types.WM_OT_doc_view._prefix
|
||||
layout.operator("help.operator_cheat_sheet", icon='TEXT')
|
||||
layout.operator("wm.sysinfo", icon='TEXT')
|
||||
layout.separator()
|
||||
if sys.platform[:3] == "win":
|
||||
layout.operator("wm.console_toggle", icon='CONSOLE')
|
||||
layout.separator()
|
||||
layout.operator("anim.update_data_paths", text="FCurve/Driver Version fix", icon='HELP')
|
||||
layout.operator("anim.update_data_paths", text=_("FCurve/Driver Version fix"), icon='HELP')
|
||||
layout.operator("logic.texface_convert", text="TexFace to Material Convert", icon='GAME')
|
||||
layout.separator()
|
||||
layout.operator("wm.splash", icon='BLENDER')
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class LOGIC_PT_properties(Panel):
|
||||
@ -37,7 +38,7 @@ class LOGIC_PT_properties(Panel):
|
||||
ob = context.active_object
|
||||
game = ob.game
|
||||
|
||||
layout.operator("object.game_property_new", text="Add Game Property", icon='ZOOMIN')
|
||||
layout.operator("object.game_property_new", text=_("Add Game Property"), icon='ZOOMIN')
|
||||
|
||||
for i, prop in enumerate(game.properties):
|
||||
|
||||
@ -56,9 +57,9 @@ class LOGIC_MT_logicbricks_add(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_menu_enum("logic.sensor_add", "type", text="Sensor")
|
||||
layout.operator_menu_enum("logic.controller_add", "type", text="Controller")
|
||||
layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator")
|
||||
layout.operator_menu_enum("logic.sensor_add", "type", text=_("Sensor"))
|
||||
layout.operator_menu_enum("logic.controller_add", "type", text=_("Controller"))
|
||||
layout.operator_menu_enum("logic.actuator_add", "type", text=_("Actuator"))
|
||||
|
||||
|
||||
class LOGIC_HT_header(Header):
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
import bpy
|
||||
from bpy.types import Header, Menu
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class NLA_HT_header(Header):
|
||||
@ -62,7 +63,7 @@ class NLA_MT_view(Menu):
|
||||
layout.prop(st, "use_realtime_update")
|
||||
layout.prop(st, "show_frame_indicator")
|
||||
|
||||
layout.operator("anim.time_toggle", text="Show Frames" if st.show_seconds else "Show Seconds")
|
||||
layout.operator("anim.time_toggle", text=_("Show Frames") if st.show_seconds else _("Show Seconds"))
|
||||
|
||||
layout.prop(st, "show_strip_curves")
|
||||
|
||||
@ -87,33 +88,33 @@ class NLA_MT_select(Menu):
|
||||
|
||||
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
|
||||
layout.operator("nla.select_all_toggle")
|
||||
layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True
|
||||
layout.operator("nla.select_all_toggle", text=_("Invert Selection")).invert = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("nla.select_border")
|
||||
layout.operator("nla.select_border", text="Border Axis Range").axis_range = True
|
||||
layout.operator("nla.select_border", text=_("Border Axis Range")).axis_range = True
|
||||
|
||||
layout.separator()
|
||||
layout.operator("nla.select_leftright", text="Before Current Frame").mode = 'LEFT'
|
||||
layout.operator("nla.select_leftright", text="After Current Frame").mode = 'RIGHT'
|
||||
layout.operator("nla.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
|
||||
layout.operator("nla.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
|
||||
|
||||
|
||||
class NLA_MT_marker(Menu):
|
||||
bl_label = "Marker"
|
||||
bl_label = _("Marker")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
#layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("marker.add", "Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.operator("marker.add", _("Add Marker"))
|
||||
layout.operator("marker.duplicate", text=_("Duplicate Marker"))
|
||||
layout.operator("marker.delete", text=_("Delete Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("marker.rename", text="Rename Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.rename", text=_("Rename Marker"))
|
||||
layout.operator("marker.move", text=_("Grab/Move Marker"))
|
||||
|
||||
|
||||
class NLA_MT_edit(Menu):
|
||||
@ -124,9 +125,9 @@ class NLA_MT_edit(Menu):
|
||||
|
||||
scene = context.scene
|
||||
|
||||
layout.menu("NLA_MT_edit_transform", text="Transform")
|
||||
layout.menu("NLA_MT_edit_transform", text=_("Transform"))
|
||||
|
||||
layout.operator_menu_enum("nla.snap", "type", text="Snap")
|
||||
layout.operator_menu_enum("nla.snap", "type", text=_("Snap"))
|
||||
|
||||
layout.separator()
|
||||
layout.operator("nla.duplicate")
|
||||
@ -148,14 +149,14 @@ class NLA_MT_edit(Menu):
|
||||
|
||||
# TODO: this really belongs more in a "channel" (or better, "track") menu
|
||||
layout.separator()
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text="Track Ordering...")
|
||||
layout.operator_menu_enum("anim.channels_move", "direction", text=_("Track Ordering..."))
|
||||
|
||||
layout.separator()
|
||||
# TODO: names of these tools for 'tweakmode' need changing?
|
||||
if scene.is_nla_tweakmode:
|
||||
layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions")
|
||||
layout.operator("nla.tweakmode_exit", text=_("Stop Tweaking Strip Actions"))
|
||||
else:
|
||||
layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions")
|
||||
layout.operator("nla.tweakmode_enter", text=_("Start Tweaking Strip Actions"))
|
||||
|
||||
|
||||
class NLA_MT_add(Menu):
|
||||
@ -174,7 +175,7 @@ class NLA_MT_add(Menu):
|
||||
|
||||
layout.separator()
|
||||
layout.operator("nla.tracks_add")
|
||||
layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True
|
||||
layout.operator("nla.tracks_add", text=_("Add Tracks Above Selected")).above_selected = True
|
||||
|
||||
|
||||
class NLA_MT_edit_transform(Menu):
|
||||
@ -183,9 +184,9 @@ class NLA_MT_edit_transform(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("transform.translate", text="Grab/Move")
|
||||
layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE'
|
||||
layout.operator("transform.translate", text=_("Grab/Move"))
|
||||
layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.transform", text=_("Scale")).mode = 'TIME_SCALE'
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class NODE_HT_header(Header):
|
||||
@ -61,7 +62,7 @@ class NODE_HT_header(Header):
|
||||
|
||||
elif snode.tree_type == 'COMPOSITING':
|
||||
layout.prop(snode_id, "use_nodes")
|
||||
layout.prop(snode_id.render, "use_free_unused_nodes", text="Free Unused")
|
||||
layout.prop(snode_id.render, "use_free_unused_nodes", text=_("Free Unused"))
|
||||
layout.prop(snode, "show_backdrop")
|
||||
if snode.show_backdrop:
|
||||
row = layout.row(align=True)
|
||||
@ -92,9 +93,9 @@ class NODE_MT_view(Menu):
|
||||
if context.space_data.show_backdrop:
|
||||
layout.separator()
|
||||
|
||||
layout.operator("node.backimage_move", text="Backdrop move")
|
||||
layout.operator("node.backimage_zoom", text="Backdrop zoom in").factor = 1.2
|
||||
layout.operator("node.backimage_zoom", text="Backdrop zoom out").factor = 0.833
|
||||
layout.operator("node.backimage_move", text=_("Backdrop move"))
|
||||
layout.operator("node.backimage_zoom", text=_("Backdrop zoom in")).factor = 1.2
|
||||
layout.operator("node.backimage_zoom", text=_("Backdrop zoom out")).factor = 0.833
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -137,7 +138,7 @@ class NODE_MT_node(Menu):
|
||||
|
||||
layout.separator()
|
||||
layout.operator("node.link_make")
|
||||
layout.operator("node.link_make", text="Make and Replace Links").replace = True
|
||||
layout.operator("node.link_make", text=_("Make and Replace Links")).replace = True
|
||||
layout.operator("node.links_cut")
|
||||
|
||||
layout.separator()
|
||||
@ -180,13 +181,13 @@ class NODE_PT_properties(Panel):
|
||||
snode = context.space_data
|
||||
layout.active = snode.show_backdrop
|
||||
layout.prop(snode, "backdrop_channels", text="")
|
||||
layout.prop(snode, "backdrop_zoom", text="Zoom")
|
||||
layout.prop(snode, "backdrop_zoom", text=_("Zoom"))
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Offset:")
|
||||
col.label(text=_("Offset:"))
|
||||
col.prop(snode, "backdrop_x", text="X")
|
||||
col.prop(snode, "backdrop_y", text="Y")
|
||||
col.operator("node.backimage_move", text="Move")
|
||||
col.operator("node.backimage_move", text=_("Move"))
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
bpy.utils.register_module(__name__)
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
def act_strip(context):
|
||||
@ -64,9 +65,9 @@ class SEQUENCER_HT_header(Header):
|
||||
elif st.view_type == 'SEQUENCER_PREVIEW':
|
||||
layout.separator()
|
||||
layout.operator("sequencer.refresh_all")
|
||||
layout.prop(st, "display_channel", text="Channel")
|
||||
layout.prop(st, "display_channel", text=_("Channel"))
|
||||
else:
|
||||
layout.prop(st, "display_channel", text="Channel")
|
||||
layout.prop(st, "display_channel", text=_("Channel"))
|
||||
|
||||
ed = context.scene.sequence_editor
|
||||
if ed:
|
||||
@ -101,11 +102,11 @@ class SEQUENCER_MT_view(Menu):
|
||||
layout.separator()
|
||||
|
||||
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
|
||||
layout.operator("sequencer.view_all", text='View all Sequences')
|
||||
layout.operator("sequencer.view_all", text=_('View all Sequences'))
|
||||
if st.view_type in {'PREVIEW', 'SEQUENCER_PREVIEW'}:
|
||||
layout.operator_context = 'INVOKE_REGION_PREVIEW'
|
||||
layout.operator("sequencer.view_all_preview", text='Fit preview in window')
|
||||
layout.operator("sequencer.view_zoom_ratio", text='Show preview 1:1').ratio = 1.0
|
||||
layout.operator("sequencer.view_all_preview", text=_('Fit preview in window'))
|
||||
layout.operator("sequencer.view_zoom_ratio", text=_('Show preview 1:1')).ratio = 1.0
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
|
||||
# # XXX, invokes in the header view
|
||||
@ -114,9 +115,9 @@ class SEQUENCER_MT_view(Menu):
|
||||
layout.operator("sequencer.view_selected")
|
||||
|
||||
if st.show_frames:
|
||||
layout.operator("anim.time_toggle", text="Show Seconds")
|
||||
layout.operator("anim.time_toggle", text=_("Show Seconds"))
|
||||
else:
|
||||
layout.operator("anim.time_toggle", text="Show Frames")
|
||||
layout.operator("anim.time_toggle", text=_("Show Frames"))
|
||||
|
||||
layout.prop(st, "show_frame_indicator")
|
||||
if st.display_mode == 'IMAGE':
|
||||
@ -138,12 +139,12 @@ class SEQUENCER_MT_select(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT'
|
||||
layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT'
|
||||
layout.operator("sequencer.select_active_side", text=_("Strips to the Left")).side = 'LEFT'
|
||||
layout.operator("sequencer.select_active_side", text=_("Strips to the Right")).side = 'RIGHT'
|
||||
layout.separator()
|
||||
layout.operator("sequencer.select_handles", text="Surrounding Handles").side = 'BOTH'
|
||||
layout.operator("sequencer.select_handles", text="Left Handle").side = 'LEFT'
|
||||
layout.operator("sequencer.select_handles", text="Right Handle").side = 'RIGHT'
|
||||
layout.operator("sequencer.select_handles", text=_("Surrounding Handles")).side = 'BOTH'
|
||||
layout.operator("sequencer.select_handles", text=_("Left Handle")).side = 'LEFT'
|
||||
layout.operator("sequencer.select_handles", text=_("Right Handle")).side = 'RIGHT'
|
||||
layout.separator()
|
||||
layout.operator("sequencer.select_linked")
|
||||
layout.operator("sequencer.select_all_toggle")
|
||||
@ -158,14 +159,14 @@ class SEQUENCER_MT_marker(Menu):
|
||||
|
||||
#layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("marker.add", "Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.operator("marker.add", _("Add Marker"))
|
||||
layout.operator("marker.duplicate", text=_("Duplicate Marker"))
|
||||
layout.operator("marker.delete", text=_("Delete Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("marker.rename", text="Rename Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.rename", text=_("Rename Marker"))
|
||||
layout.operator("marker.move", text=_("Grab/Move Marker"))
|
||||
|
||||
#layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
|
||||
|
||||
@ -180,7 +181,7 @@ class SEQUENCER_MT_change(Menu):
|
||||
|
||||
layout.operator_menu_enum("sequencer.change_effect_input", "swap")
|
||||
layout.operator_menu_enum("sequencer.change_effect_type", "type")
|
||||
layout.operator("sequencer.change_path", text="Path/Files")
|
||||
layout.operator("sequencer.change_path", text=_("Path/Files"))
|
||||
|
||||
|
||||
class SEQUENCER_MT_add(Menu):
|
||||
@ -192,13 +193,13 @@ class SEQUENCER_MT_add(Menu):
|
||||
|
||||
if len(bpy.data.scenes) > 10:
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
layout.operator("sequencer.scene_strip_add", text="Scene...")
|
||||
layout.operator("sequencer.scene_strip_add", text=_("Scene..."))
|
||||
else:
|
||||
layout.operator_menu_enum("sequencer.scene_strip_add", "scene", text="Scene...")
|
||||
layout.operator_menu_enum("sequencer.scene_strip_add", "scene", text=_("Scene..."))
|
||||
|
||||
layout.operator("sequencer.movie_strip_add", text="Movie")
|
||||
layout.operator("sequencer.image_strip_add", text="Image")
|
||||
layout.operator("sequencer.sound_strip_add", text="Sound")
|
||||
layout.operator("sequencer.movie_strip_add", text=_("Movie"))
|
||||
layout.operator("sequencer.image_strip_add", text=_("Image"))
|
||||
layout.operator("sequencer.sound_strip_add", text=_("Sound"))
|
||||
|
||||
layout.menu("SEQUENCER_MT_add_effect")
|
||||
|
||||
@ -210,22 +211,22 @@ class SEQUENCER_MT_add_effect(Menu):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD'
|
||||
layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT'
|
||||
layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER'
|
||||
layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER'
|
||||
layout.operator("sequencer.effect_strip_add", text="Cross").type = 'CROSS'
|
||||
layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS'
|
||||
layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY'
|
||||
layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP'
|
||||
layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN'
|
||||
layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE'
|
||||
layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW'
|
||||
layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM'
|
||||
layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR'
|
||||
layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED'
|
||||
layout.operator("sequencer.effect_strip_add", text="Multicam Selector").type = 'MULTICAM'
|
||||
layout.operator("sequencer.effect_strip_add", text="Adjustment Layer").type = 'ADJUSTMENT'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Add")).type = 'ADD'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Subtract")).type = 'SUBTRACT'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Alpha Over")).type = 'ALPHA_OVER'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Alpha Under")).type = 'ALPHA_UNDER'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Cross")).type = 'CROSS'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Gamma Cross")).type = 'GAMMA_CROSS'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Multiply")).type = 'MULTIPLY'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Over Drop")).type = 'OVER_DROP'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Plugin")).type = 'PLUGIN'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Wipe")).type = 'WIPE'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Glow")).type = 'GLOW'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Transform")).type = 'TRANSFORM'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Color")).type = 'COLOR'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Speed Control")).type = 'SPEED'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Multicam Selector")).type = 'MULTICAM'
|
||||
layout.operator("sequencer.effect_strip_add", text=_("Adjustment Layer")).type = 'ADJUSTMENT'
|
||||
|
||||
|
||||
class SEQUENCER_MT_strip(Menu):
|
||||
@ -236,13 +237,13 @@ class SEQUENCER_MT_strip(Menu):
|
||||
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.operator("transform.transform", text="Grab/Move").mode = 'TRANSLATION'
|
||||
layout.operator("transform.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND'
|
||||
layout.operator("transform.transform", text=_("Grab/Move")).mode = 'TRANSLATION'
|
||||
layout.operator("transform.transform", text=_("Grab/Extend from frame")).mode = 'TIME_EXTEND'
|
||||
# uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator
|
||||
layout.separator()
|
||||
|
||||
layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD'
|
||||
layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT'
|
||||
layout.operator("sequencer.cut", text=_("Cut (hard) at frame")).type = 'HARD'
|
||||
layout.operator("sequencer.cut", text=_("Cut (soft) at frame")).type = 'SOFT'
|
||||
layout.operator("sequencer.images_separate")
|
||||
layout.operator("sequencer.offset_clear")
|
||||
layout.operator("sequencer.deinterlace_selected_movies")
|
||||
@ -296,7 +297,7 @@ class SEQUENCER_MT_strip(Menu):
|
||||
layout.operator("sequencer.mute")
|
||||
layout.operator("sequencer.unmute")
|
||||
|
||||
layout.operator("sequencer.mute", text="Mute Deselected Strips").unselected = True
|
||||
layout.operator("sequencer.mute", text=_("Mute Deselected Strips")).unselected = True
|
||||
|
||||
layout.operator("sequencer.snap")
|
||||
|
||||
@ -344,21 +345,21 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
|
||||
strip = act_strip(context)
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Name:")
|
||||
split.label(text=_("Name:"))
|
||||
split.prop(strip, "name", text="")
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Type:")
|
||||
split.label(text=_("Type:"))
|
||||
split.prop(strip, "type", text="")
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.label(text="Blend:")
|
||||
split.label(text=_("Blend:"))
|
||||
split.prop(strip, "blend_type", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
sub = row.row()
|
||||
sub.active = (not strip.mute)
|
||||
sub.prop(strip, "blend_alpha", text="Opacity", slider=True)
|
||||
sub.prop(strip, "blend_alpha", text=_("Opacity"), slider=True)
|
||||
row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="")
|
||||
row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="")
|
||||
|
||||
@ -371,13 +372,13 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
|
||||
|
||||
col = layout.column(align=True)
|
||||
row = col.row()
|
||||
row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
|
||||
row.label(text=_("Final Length")+": %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
|
||||
row = col.row()
|
||||
row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration)
|
||||
row.label(text="Playhead: %d" % (frame_current - strip.frame_start))
|
||||
row.label(text=_("Playhead")+": %d" % (frame_current - strip.frame_start))
|
||||
|
||||
col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
|
||||
col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end))
|
||||
col.label(text=_("Frame Offset")+" %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
|
||||
col.label(text=_("Frame Still")+" %d:%d" % (strip.frame_still_start, strip.frame_still_end))
|
||||
|
||||
elem = False
|
||||
|
||||
@ -387,9 +388,9 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
|
||||
elem = strip.elements[0]
|
||||
|
||||
if elem and elem.orig_width > 0 and elem.orig_height > 0:
|
||||
col.label(text="Orig Dim: %dx%d" % (elem.orig_width, elem.orig_height))
|
||||
col.label(text=_("Orig Dim")+": %dx%d" % (elem.orig_width, elem.orig_height))
|
||||
else:
|
||||
col.label(text="Orig Dim: None")
|
||||
col.label(text=_("Orig Dim: None"))
|
||||
|
||||
|
||||
class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
@ -429,7 +430,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
|
||||
col = layout.column()
|
||||
col.prop(strip, "transition_type")
|
||||
col.label(text="Direction:")
|
||||
col.label(text=_("Direction:"))
|
||||
col.row().prop(strip, "direction", expand=True)
|
||||
|
||||
col = layout.column()
|
||||
@ -449,13 +450,13 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
row.prop(strip, "use_only_boost")
|
||||
|
||||
elif strip.type == 'SPEED':
|
||||
layout.prop(strip, "use_default_fade", "Stretch to input strip length")
|
||||
layout.prop(strip, "use_default_fade", _("Stretch to input strip length"))
|
||||
if not strip.use_default_fade:
|
||||
layout.prop(strip, "use_as_speed")
|
||||
if strip.use_as_speed:
|
||||
layout.prop(strip, "speed_factor")
|
||||
else:
|
||||
layout.prop(strip, "speed_factor", text="Frame number")
|
||||
layout.prop(strip, "speed_factor", text=_("Frame number"))
|
||||
layout.prop(strip, "scale_to_length")
|
||||
|
||||
#doesn't work currently
|
||||
@ -473,7 +474,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
|
||||
sub.operator("screen.animation_play", text="", icon='PAUSE' if context.screen.is_animation_playing else 'PLAY')
|
||||
|
||||
row.label("Cut To")
|
||||
row.label(_("Cut To"))
|
||||
for i in range(1, strip.channel):
|
||||
row.operator("sequencer.cut_multicam", text=str(i)).camera = i
|
||||
|
||||
@ -481,17 +482,17 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
if strip.type == 'SPEED':
|
||||
col.prop(strip, "multiply_speed")
|
||||
elif strip.type in {'CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'}:
|
||||
col.prop(strip, "use_default_fade", "Default fade")
|
||||
col.prop(strip, "use_default_fade", _("Default fade"))
|
||||
if not strip.use_default_fade:
|
||||
col.prop(strip, "effect_fader", text="Effect fader")
|
||||
col.prop(strip, "effect_fader", text=_("Effect fader"))
|
||||
|
||||
layout.prop(strip, "use_translation", text="Image Offset:")
|
||||
layout.prop(strip, "use_translation", text=_("Image Offset:"))
|
||||
if strip.use_translation:
|
||||
col = layout.column(align=True)
|
||||
col.prop(strip.transform, "offset_x", text="X")
|
||||
col.prop(strip.transform, "offset_y", text="Y")
|
||||
|
||||
layout.prop(strip, "use_crop", text="Image Crop:")
|
||||
layout.prop(strip, "use_crop", text=_("Image Crop:"))
|
||||
if strip.use_crop:
|
||||
col = layout.column(align=True)
|
||||
col.prop(strip.crop, "max_y")
|
||||
@ -506,7 +507,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
col.prop(strip, "interpolation")
|
||||
col.prop(strip, "translation_unit")
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Position:")
|
||||
col.label(text=_("Position:"))
|
||||
col.prop(strip, "translate_start_x", text="X")
|
||||
col.prop(strip, "translate_start_y", text="Y")
|
||||
|
||||
@ -516,18 +517,18 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
|
||||
col.prop(strip, "use_uniform_scale")
|
||||
if (strip.use_uniform_scale):
|
||||
col = layout.column(align=True)
|
||||
col.prop(strip, "scale_start_x", text="Scale")
|
||||
col.prop(strip, "scale_start_x", text=_("Scale"))
|
||||
else:
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Scale:")
|
||||
col.label(text=_("Scale:"))
|
||||
col.prop(strip, "scale_start_x", text="X")
|
||||
col.prop(strip, "scale_start_y", text="Y")
|
||||
|
||||
layout.separator()
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Rotation:")
|
||||
col.prop(strip, "rotation_start", text="Rotation")
|
||||
col.label(text=_("Rotation:"))
|
||||
col.prop(strip, "rotation_start", text=_("Rotation"))
|
||||
|
||||
|
||||
class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
|
||||
@ -560,7 +561,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
|
||||
if seq_type == 'IMAGE':
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.label(text="Path:")
|
||||
col.label(text=_("Path:"))
|
||||
col = split.column()
|
||||
col.prop(strip, "directory", text="")
|
||||
|
||||
@ -570,7 +571,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
|
||||
if elem:
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.label(text="File:")
|
||||
col.label(text=_("File:"))
|
||||
col = split.column()
|
||||
col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
|
||||
|
||||
@ -580,22 +581,22 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
|
||||
elif seq_type == 'MOVIE':
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.label(text="Path:")
|
||||
col.label(text=_("Path:"))
|
||||
col = split.column()
|
||||
col.prop(strip, "filepath", text="")
|
||||
col.prop(strip, "mpeg_preseek", text="MPEG Preseek")
|
||||
col.prop(strip, "streamindex", text="Stream Index")
|
||||
col.prop(strip, "mpeg_preseek", text=_("MPEG Preseek"))
|
||||
col.prop(strip, "streamindex", text=_("Stream Index"))
|
||||
|
||||
# TODO, sound???
|
||||
# end drawing filename
|
||||
|
||||
layout.prop(strip, "use_translation", text="Image Offset:")
|
||||
layout.prop(strip, "use_translation", text=_("Image Offset:"))
|
||||
if strip.use_translation:
|
||||
col = layout.column(align=True)
|
||||
col.prop(strip.transform, "offset_x", text="X")
|
||||
col.prop(strip.transform, "offset_y", text="Y")
|
||||
|
||||
layout.prop(strip, "use_crop", text="Image Crop:")
|
||||
layout.prop(strip, "use_crop", text=_("Image Crop:"))
|
||||
if strip.use_crop:
|
||||
col = layout.column(align=True)
|
||||
col.prop(strip.crop, "max_y")
|
||||
@ -605,14 +606,14 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
|
||||
|
||||
if not isinstance(strip, bpy.types.EffectSequence):
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Trim Duration (hard):")
|
||||
col.prop(strip, "animation_offset_start", text="Start")
|
||||
col.prop(strip, "animation_offset_end", text="End")
|
||||
col.label(text=_("Trim Duration (hard):"))
|
||||
col.prop(strip, "animation_offset_start", text=_("Start"))
|
||||
col.prop(strip, "animation_offset_end", text=_("End"))
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Trim Duration (soft):")
|
||||
col.prop(strip, "frame_offset_start", text="Start")
|
||||
col.prop(strip, "frame_offset_end", text="End")
|
||||
col.label(text=_("Trim Duration (soft):"))
|
||||
col.prop(strip, "frame_offset_start", text=_("Start"))
|
||||
col.prop(strip, "frame_offset_end", text=_("End"))
|
||||
|
||||
|
||||
class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
|
||||
@ -641,9 +642,9 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
|
||||
|
||||
row = layout.row()
|
||||
if strip.sound.packed_file:
|
||||
row.operator("sound.unpack", icon='PACKAGE', text="Unpack")
|
||||
row.operator("sound.unpack", icon='PACKAGE', text=_("Unpack"))
|
||||
else:
|
||||
row.operator("sound.pack", icon='UGLYPACKAGE', text="Pack")
|
||||
row.operator("sound.pack", icon='UGLYPACKAGE', text=_("Pack"))
|
||||
|
||||
row.prop(strip.sound, "use_memory_cache")
|
||||
|
||||
@ -654,8 +655,8 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Trim Duration:")
|
||||
col.prop(strip, "animation_offset_start", text="Start")
|
||||
col.prop(strip, "animation_offset_end", text="End")
|
||||
col.prop(strip, "animation_offset_start", text=_("Start"))
|
||||
col.prop(strip, "animation_offset_end", text=_("End"))
|
||||
|
||||
|
||||
class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
|
||||
@ -683,13 +684,13 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
|
||||
if scene:
|
||||
layout.prop(scene.render, "use_sequencer")
|
||||
|
||||
layout.label(text="Camera Override")
|
||||
layout.label(text=_("Camera Override"))
|
||||
layout.template_ID(strip, "scene_camera")
|
||||
|
||||
if scene:
|
||||
sta = scene.frame_start
|
||||
end = scene.frame_end
|
||||
layout.label(text="Original frame range: %d-%d (%d)" % (sta, end, end - sta + 1))
|
||||
layout.label(text=_("Original frame range")+": %d-%d (%d)" % (sta, end, end - sta + 1))
|
||||
|
||||
|
||||
class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
|
||||
@ -717,22 +718,22 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
|
||||
strip = act_strip(context)
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Video:")
|
||||
col.label(text=_("Video:"))
|
||||
col.prop(strip, "strobe")
|
||||
|
||||
row = layout.row()
|
||||
row.label(text="Flip:")
|
||||
row.label(text=_("Flip:"))
|
||||
row.prop(strip, "use_flip_x", text="X")
|
||||
row.prop(strip, "use_flip_y", text="Y")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(strip, "use_reverse_frames", text="Backwards")
|
||||
col.prop(strip, "use_reverse_frames", text=_("Backwards"))
|
||||
col.prop(strip, "use_deinterlace")
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Colors:")
|
||||
col.prop(strip, "color_saturation", text="Saturation")
|
||||
col.prop(strip, "color_multiply", text="Multiply")
|
||||
col.label(text=_("Colors:"))
|
||||
col.prop(strip, "color_saturation", text=_("Saturation"))
|
||||
col.prop(strip, "color_multiply", text=_("Multiply"))
|
||||
col.prop(strip, "use_premultiply")
|
||||
col.prop(strip, "use_float")
|
||||
|
||||
@ -743,15 +744,15 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True)
|
||||
col.row().prop(strip.color_balance, "lift")
|
||||
col.prop(strip.color_balance, "invert_lift", text="Inverse")
|
||||
col.prop(strip.color_balance, "invert_lift", text=_("Inverse"))
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True)
|
||||
col.row().prop(strip.color_balance, "gamma")
|
||||
col.prop(strip.color_balance, "invert_gamma", text="Inverse")
|
||||
col.prop(strip.color_balance, "invert_gamma", text=_("Inverse"))
|
||||
col = row.column()
|
||||
col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True)
|
||||
col.row().prop(strip.color_balance, "gain")
|
||||
col.prop(strip.color_balance, "invert_gain", text="Inverse")
|
||||
col.prop(strip.color_balance, "invert_gain", text=_("Inverse"))
|
||||
|
||||
|
||||
class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel):
|
||||
@ -794,18 +795,18 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel):
|
||||
row.prop(strip.proxy, "build_100")
|
||||
|
||||
col = layout.column()
|
||||
col.label(text="Build JPEG quality")
|
||||
col.label(text=_("Build JPEG quality"))
|
||||
col.prop(strip.proxy, "quality")
|
||||
|
||||
if strip.type == "MOVIE":
|
||||
col = layout.column()
|
||||
col.label(text="Use timecode index:")
|
||||
col.label(text=_("Use timecode index:"))
|
||||
|
||||
col.prop(strip.proxy, "timecode")
|
||||
|
||||
|
||||
class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
|
||||
bl_label = "Scene Preview/Render"
|
||||
bl_label = _("Scene Preview/Render")
|
||||
bl_space_type = 'SEQUENCE_EDITOR'
|
||||
bl_region_type = 'UI'
|
||||
|
||||
@ -815,7 +816,7 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
|
||||
|
||||
col = layout.column()
|
||||
col.active = False # Currently only opengl preview works!
|
||||
col.prop(render, "use_sequencer_gl_preview", text="Open GL Preview")
|
||||
col.prop(render, "use_sequencer_gl_preview", text=_("Open GL Preview"))
|
||||
col = layout.column()
|
||||
#col.active = render.use_sequencer_gl_preview
|
||||
col.prop(render, "sequencer_gl_preview", text="")
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8-80 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class TEXT_HT_header(Header):
|
||||
@ -66,13 +67,13 @@ class TEXT_HT_header(Header):
|
||||
row = layout.row()
|
||||
if text.filepath:
|
||||
if text.is_dirty:
|
||||
row.label(text="File: *%r (unsaved)" % text.filepath)
|
||||
row.label(text=_("File")+": *%r " % text.filepath+_("(unsaved)"))
|
||||
else:
|
||||
row.label(text="File: %r" % text.filepath)
|
||||
row.label(text=_("File")+": %r" % text.filepath)
|
||||
else:
|
||||
row.label(text="Text: External"
|
||||
row.label(text=_("Text: External")
|
||||
if text.library
|
||||
else "Text: Internal")
|
||||
else _("Text: Internal"))
|
||||
|
||||
|
||||
class TEXT_PT_properties(Panel):
|
||||
@ -136,8 +137,8 @@ class TEXT_PT_find(Panel):
|
||||
# settings
|
||||
layout.prop(st, "use_match_case")
|
||||
row = layout.row()
|
||||
row.prop(st, "use_find_wrap", text="Wrap")
|
||||
row.prop(st, "use_find_all", text="All")
|
||||
row.prop(st, "use_find_wrap", text=_("Wrap"))
|
||||
row.prop(st, "use_find_all", text=_("All"))
|
||||
|
||||
|
||||
class TEXT_MT_view(Menu):
|
||||
@ -156,10 +157,10 @@ class TEXT_MT_view(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("text.move",
|
||||
text="Top of File",
|
||||
text=_("Top of File"),
|
||||
).type = 'FILE_TOP'
|
||||
layout.operator("text.move",
|
||||
text="Bottom of File",
|
||||
text=_("Bottom of File"),
|
||||
).type = 'FILE_BOTTOM'
|
||||
|
||||
|
||||
@ -248,10 +249,10 @@ class TEXT_MT_edit_to3d(Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("text.to_3d_object",
|
||||
text="One Object",
|
||||
text=_("One Object"),
|
||||
).split_lines = False
|
||||
layout.operator("text.to_3d_object",
|
||||
text="One Object Per Line",
|
||||
text=_("One Object Per Line"),
|
||||
).split_lines = True
|
||||
|
||||
|
||||
@ -282,7 +283,7 @@ class TEXT_MT_edit(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.operator("text.jump")
|
||||
layout.operator("text.properties", text="Find...")
|
||||
layout.operator("text.properties", text=_("Find..."))
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Header, Menu
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class TIME_HT_header(Header):
|
||||
@ -43,11 +44,11 @@ class TIME_HT_header(Header):
|
||||
|
||||
row = layout.row(align=True)
|
||||
if not scene.use_preview_range:
|
||||
row.prop(scene, "frame_start", text="Start")
|
||||
row.prop(scene, "frame_end", text="End")
|
||||
row.prop(scene, "frame_start", text=_("Start"))
|
||||
row.prop(scene, "frame_end", text=_("End"))
|
||||
else:
|
||||
row.prop(scene, "frame_preview_start", text="Start")
|
||||
row.prop(scene, "frame_preview_end", text="End")
|
||||
row.prop(scene, "frame_preview_start", text=_("Start"))
|
||||
row.prop(scene, "frame_preview_end", text=_("End"))
|
||||
|
||||
layout.prop(scene, "frame_current", text="")
|
||||
|
||||
@ -142,14 +143,14 @@ class TIME_MT_frame(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("marker.add", text="Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.operator("marker.add", text=_("Add Marker"))
|
||||
layout.operator("marker.duplicate", text=_("Duplicate Marker"))
|
||||
layout.operator("marker.delete", text=_("Delete Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("marker.rename", text="Rename Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.rename", text=_("Rename Marker"))
|
||||
layout.operator("marker.move", text=_("Grab/Move Marker"))
|
||||
|
||||
layout.separator()
|
||||
|
||||
@ -181,8 +182,8 @@ class TIME_MT_playback(Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.prop(scene, "use_frame_drop", text="Frame Dropping")
|
||||
layout.prop(scene, "use_audio_sync", text="AV-sync", icon='SPEAKER')
|
||||
layout.prop(scene, "use_frame_drop", text=_("Frame Dropping"))
|
||||
layout.prop(scene, "use_audio_sync", text=_("AV-sync"), icon='SPEAKER')
|
||||
layout.prop(scene, "use_audio")
|
||||
layout.prop(scene, "use_audio_scrub")
|
||||
|
||||
|
@ -23,6 +23,7 @@ import os
|
||||
import addon_utils
|
||||
|
||||
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
def ui_items_general(col, context):
|
||||
@ -65,10 +66,10 @@ def opengl_lamp_buttons(column, lamp):
|
||||
col = split.column()
|
||||
col.active = lamp.use
|
||||
row = col.row()
|
||||
row.label(text="Diffuse:")
|
||||
row.label(text=_("Diffuse:"))
|
||||
row.prop(lamp, "diffuse_color", text="")
|
||||
row = col.row()
|
||||
row.label(text="Specular:")
|
||||
row.label(text=_("Specular:"))
|
||||
row.prop(lamp, "specular_color", text="")
|
||||
|
||||
col = split.column()
|
||||
@ -86,7 +87,7 @@ class USERPREF_HT_header(Header):
|
||||
userpref = context.user_preferences
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.operator("wm.save_homefile", text="Save As Default")
|
||||
layout.operator("wm.save_homefile", text=_("Save As Default"))
|
||||
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
|
||||
@ -127,7 +128,7 @@ class USERPREF_MT_appconfigs(Menu):
|
||||
preset_operator = "wm.appconfig_activate"
|
||||
|
||||
def draw(self, context):
|
||||
self.layout.operator("wm.appconfig_default", text="Blender (default)")
|
||||
self.layout.operator("wm.appconfig_default", text=_("Blender (default)"))
|
||||
|
||||
# now draw the presets
|
||||
Menu.draw_preset(self, context)
|
||||
@ -142,12 +143,12 @@ class USERPREF_MT_splash(Menu):
|
||||
row = split.row()
|
||||
row.label("")
|
||||
row = split.row()
|
||||
row.label("Interaction:")
|
||||
row.label(_("Interaction:"))
|
||||
# XXX, no redraws
|
||||
# text = bpy.path.display_name(context.window_manager.keyconfigs.active.name)
|
||||
# if not text:
|
||||
# text = "Blender (default)"
|
||||
row.menu("USERPREF_MT_appconfigs", text="Preset")
|
||||
row.menu("USERPREF_MT_appconfigs", text=_("Preset"))
|
||||
|
||||
|
||||
class USERPREF_PT_interface(Panel):
|
||||
@ -170,13 +171,13 @@ class USERPREF_PT_interface(Panel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Display:")
|
||||
col.label(text=_("Display:"))
|
||||
col.prop(view, "show_tooltips")
|
||||
col.prop(view, "show_tooltips_python")
|
||||
col.prop(view, "show_object_info", text="Object Info")
|
||||
col.prop(view, "show_object_info", text=_("Object Info"))
|
||||
col.prop(view, "show_large_cursors")
|
||||
col.prop(view, "show_view_name", text="View Name")
|
||||
col.prop(view, "show_playback_fps", text="Playback FPS")
|
||||
col.prop(view, "show_view_name", text=_("View Name"))
|
||||
col.prop(view, "show_playback_fps", text=_("Playback FPS"))
|
||||
col.prop(view, "use_global_scene")
|
||||
col.prop(view, "object_origin_size")
|
||||
|
||||
@ -184,18 +185,18 @@ class USERPREF_PT_interface(Panel):
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.prop(view, "show_mini_axis", text="Display Mini Axis")
|
||||
col.prop(view, "show_mini_axis", text=_("Display Mini Axis"))
|
||||
sub = col.column()
|
||||
sub.active = view.show_mini_axis
|
||||
sub.prop(view, "mini_axis_size", text="Size")
|
||||
sub.prop(view, "mini_axis_brightness", text="Brightness")
|
||||
sub.prop(view, "mini_axis_size", text=_("Size"))
|
||||
sub.prop(view, "mini_axis_brightness", text=_("Brightness"))
|
||||
|
||||
col.separator()
|
||||
row.separator()
|
||||
row.separator()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="View Manipulation:")
|
||||
col.label(text=_("View Manipulation:"))
|
||||
col.prop(view, "use_mouse_auto_depth")
|
||||
col.prop(view, "use_zoom_to_mouse")
|
||||
col.prop(view, "use_rotate_around_active")
|
||||
@ -211,8 +212,8 @@ class USERPREF_PT_interface(Panel):
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="2D Viewports:")
|
||||
col.prop(view, "view2d_grid_spacing_min", text="Minimum Grid Spacing")
|
||||
col.label(text=_("2D Viewports:"))
|
||||
col.prop(view, "view2d_grid_spacing_min", text=_("Minimum Grid Spacing"))
|
||||
col.prop(view, "timecode_style")
|
||||
|
||||
row.separator()
|
||||
@ -228,19 +229,19 @@ class USERPREF_PT_interface(Panel):
|
||||
col.prop(view, "show_manipulator")
|
||||
sub = col.column()
|
||||
sub.active = view.show_manipulator
|
||||
sub.prop(view, "manipulator_size", text="Size")
|
||||
sub.prop(view, "manipulator_handle_size", text="Handle Size")
|
||||
sub.prop(view, "manipulator_hotspot", text="Hotspot")
|
||||
sub.prop(view, "manipulator_size", text=_("Size"))
|
||||
sub.prop(view, "manipulator_handle_size", text=_("Handle Size"))
|
||||
sub.prop(view, "manipulator_hotspot", text=_("Hotspot"))
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Menus:")
|
||||
col.label(text=_("Menus:"))
|
||||
col.prop(view, "use_mouse_over_open")
|
||||
col.label(text="Menu Open Delay:")
|
||||
col.prop(view, "open_toplevel_delay", text="Top Level")
|
||||
col.prop(view, "open_sublevel_delay", text="Sub Level")
|
||||
col.label(text=_("Menu Open Delay:"))
|
||||
col.prop(view, "open_toplevel_delay", text=_("Top Level"))
|
||||
col.prop(view, "open_sublevel_delay", text=_("Sub Level"))
|
||||
|
||||
col.separator()
|
||||
|
||||
@ -267,97 +268,97 @@ class USERPREF_PT_edit(Panel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Link Materials To:")
|
||||
col.label(text=_("Link Materials To:"))
|
||||
col.prop(edit, "material_link", text="")
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="New Objects:")
|
||||
col.label(text=_("New Objects:"))
|
||||
col.prop(edit, "use_enter_edit_mode")
|
||||
col.label(text="Align To:")
|
||||
col.label(text=_("Align To:"))
|
||||
col.prop(edit, "object_align", text="")
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Undo:")
|
||||
col.label(text=_("Undo:"))
|
||||
col.prop(edit, "use_global_undo")
|
||||
col.prop(edit, "undo_steps", text="Steps")
|
||||
col.prop(edit, "undo_memory_limit", text="Memory Limit")
|
||||
col.prop(edit, "undo_steps", text=_("Steps"))
|
||||
col.prop(edit, "undo_memory_limit", text=_("Memory Limit"))
|
||||
|
||||
row.separator()
|
||||
row.separator()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Grease Pencil:")
|
||||
col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
|
||||
col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
|
||||
col.label(text=_("Grease Pencil:"))
|
||||
col.prop(edit, "grease_pencil_manhattan_distance", text=_("Manhattan Distance"))
|
||||
col.prop(edit, "grease_pencil_euclidean_distance", text=_("Euclidean Distance"))
|
||||
#col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
|
||||
col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
|
||||
col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke")
|
||||
col.prop(edit, "grease_pencil_eraser_radius", text=_("Eraser Radius"))
|
||||
col.prop(edit, "use_grease_pencil_smooth_stroke", text=_("Smooth Stroke"))
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.label(text="Playback:")
|
||||
col.label(text=_("Playback:"))
|
||||
col.prop(edit, "use_negative_frames")
|
||||
|
||||
row.separator()
|
||||
row.separator()
|
||||
|
||||
col = row.column()
|
||||
col.label(text="Keyframing:")
|
||||
col.label(text=_("Keyframing:"))
|
||||
col.prop(edit, "use_visual_keying")
|
||||
col.prop(edit, "use_keyframe_insert_needed", text="Only Insert Needed")
|
||||
col.prop(edit, "use_keyframe_insert_needed", text=_("Only Insert Needed"))
|
||||
|
||||
col.separator()
|
||||
|
||||
col.prop(edit, "use_auto_keying", text="Auto Keyframing:")
|
||||
col.prop(edit, "use_auto_keying", text=_("Auto Keyframing:"))
|
||||
|
||||
sub = col.column()
|
||||
|
||||
# sub.active = edit.use_keyframe_insert_auto # incorrect, timeline can enable
|
||||
sub.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
|
||||
sub.prop(edit, "use_keyframe_insert_available", text=_("Only Insert Available"))
|
||||
|
||||
col.separator()
|
||||
|
||||
col.label(text="New F-Curve Defaults:")
|
||||
col.prop(edit, "keyframe_new_interpolation_type", text="Interpolation")
|
||||
col.prop(edit, "keyframe_new_handle_type", text="Handles")
|
||||
col.prop(edit, "use_insertkey_xyz_to_rgb", text="XYZ to RGB")
|
||||
col.label(text=_("New F-Curve Defaults:"))
|
||||
col.prop(edit, "keyframe_new_interpolation_type", text=_("Interpolation"))
|
||||
col.prop(edit, "keyframe_new_handle_type", text=_("Handles"))
|
||||
col.prop(edit, "use_insertkey_xyz_to_rgb", text=_("XYZ to RGB"))
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Transform:")
|
||||
col.label(text=_("Transform:"))
|
||||
col.prop(edit, "use_drag_immediately")
|
||||
|
||||
row.separator()
|
||||
row.separator()
|
||||
|
||||
col = row.column()
|
||||
col.prop(edit, "sculpt_paint_overlay_color", text="Sculpt Overlay Color")
|
||||
col.prop(edit, "sculpt_paint_overlay_color", text=_("Sculpt Overlay Color"))
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Duplicate Data:")
|
||||
col.prop(edit, "use_duplicate_mesh", text="Mesh")
|
||||
col.prop(edit, "use_duplicate_surface", text="Surface")
|
||||
col.prop(edit, "use_duplicate_curve", text="Curve")
|
||||
col.prop(edit, "use_duplicate_text", text="Text")
|
||||
col.prop(edit, "use_duplicate_metaball", text="Metaball")
|
||||
col.prop(edit, "use_duplicate_armature", text="Armature")
|
||||
col.prop(edit, "use_duplicate_lamp", text="Lamp")
|
||||
col.prop(edit, "use_duplicate_material", text="Material")
|
||||
col.prop(edit, "use_duplicate_texture", text="Texture")
|
||||
#col.prop(edit, "use_duplicate_fcurve", text="F-Curve")
|
||||
col.prop(edit, "use_duplicate_action", text="Action")
|
||||
col.prop(edit, "use_duplicate_particle", text="Particle")
|
||||
col.label(text=_("Duplicate Data:"))
|
||||
col.prop(edit, "use_duplicate_mesh", text=_("Mesh"))
|
||||
col.prop(edit, "use_duplicate_surface", text=_("Surface"))
|
||||
col.prop(edit, "use_duplicate_curve", text=_("Curve"))
|
||||
col.prop(edit, "use_duplicate_text", text=_("Text"))
|
||||
col.prop(edit, "use_duplicate_metaball", text=_("Metaball"))
|
||||
col.prop(edit, "use_duplicate_armature", text=_("Armature"))
|
||||
col.prop(edit, "use_duplicate_lamp", text=_("Lamp"))
|
||||
col.prop(edit, "use_duplicate_material", text=_("Material"))
|
||||
col.prop(edit, "use_duplicate_texture", text=_("Texture"))
|
||||
#col.prop(edit, "use_duplicate_fcurve", text=_("F-Curve"))
|
||||
col.prop(edit, "use_duplicate_action", text=_("Action"))
|
||||
col.prop(edit, "use_duplicate_particle", text=_("Particle"))
|
||||
|
||||
|
||||
class USERPREF_PT_system(Panel):
|
||||
@ -384,11 +385,11 @@ class USERPREF_PT_system(Panel):
|
||||
colsplit = column.split(percentage=0.85)
|
||||
|
||||
col = colsplit.column()
|
||||
col.label(text="General:")
|
||||
col.label(text=_("General:"))
|
||||
col.prop(system, "dpi")
|
||||
col.prop(system, "frame_server_port")
|
||||
col.prop(system, "scrollback", text="Console Scrollback")
|
||||
col.prop(system, "author", text="Author")
|
||||
col.prop(system, "scrollback", text=_("Console Scrollback"))
|
||||
col.prop(system, "author", text=_("Author"))
|
||||
col.prop(system, "use_scripts_auto_execute")
|
||||
col.prop(system, "use_tabs_as_spaces")
|
||||
|
||||
@ -396,80 +397,66 @@ class USERPREF_PT_system(Panel):
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Sound:")
|
||||
col.label(text=_("Sound:"))
|
||||
col.row().prop(system, "audio_device", expand=True)
|
||||
sub = col.column()
|
||||
sub.active = system.audio_device != 'NONE'
|
||||
#sub.prop(system, "use_preview_images")
|
||||
sub.prop(system, "audio_channels", text="Channels")
|
||||
sub.prop(system, "audio_mixing_buffer", text="Mixing Buffer")
|
||||
sub.prop(system, "audio_sample_rate", text="Sample Rate")
|
||||
sub.prop(system, "audio_sample_format", text="Sample Format")
|
||||
sub.prop(system, "audio_channels", text=_("Channels"))
|
||||
sub.prop(system, "audio_mixing_buffer", text=_("Mixing Buffer"))
|
||||
sub.prop(system, "audio_sample_rate", text=_("Sample Rate"))
|
||||
sub.prop(system, "audio_sample_format", text=_("Sample Format"))
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Screencast:")
|
||||
col.label(text=_("Screencast:"))
|
||||
col.prop(system, "screencast_fps")
|
||||
col.prop(system, "screencast_wait_time")
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
#column = split.column()
|
||||
#colsplit = column.split(percentage=0.85)
|
||||
|
||||
# No translation in 2.5 yet
|
||||
#col.prop(system, "language")
|
||||
#col.label(text="Translate:")
|
||||
#col.prop(system, "use_translate_tooltips", text="Tooltips")
|
||||
#col.prop(system, "use_translate_buttons", text="Labels")
|
||||
#col.prop(system, "use_translate_toolbox", text="Toolbox")
|
||||
|
||||
#col.separator()
|
||||
|
||||
#col.prop(system, "use_textured_fonts")
|
||||
|
||||
# 2. Column
|
||||
column = split.column()
|
||||
colsplit = column.split(percentage=0.85)
|
||||
|
||||
col = colsplit.column()
|
||||
col.label(text="OpenGL:")
|
||||
col.label(text=_("OpenGL:"))
|
||||
col.prop(system, "gl_clip_alpha", slider=True)
|
||||
col.prop(system, "use_mipmaps")
|
||||
col.label(text="Anisotropic Filtering")
|
||||
col.label(text=_("Anisotropic Filtering"))
|
||||
col.prop(system, "anisotropic_filter", text="")
|
||||
col.prop(system, "use_vertex_buffer_objects")
|
||||
#Anti-aliasing is disabled as it breaks broder/lasso select
|
||||
#col.prop(system, "use_antialiasing")
|
||||
col.label(text="Window Draw Method:")
|
||||
col.label(text=_("Window Draw Method:"))
|
||||
col.prop(system, "window_draw_method", text="")
|
||||
col.label(text="Text Draw Options:")
|
||||
col.label(text=_("Text Draw Options:"))
|
||||
col.prop(system, "use_text_antialiasing")
|
||||
col.label(text="Textures:")
|
||||
col.prop(system, "gl_texture_limit", text="Limit Size")
|
||||
col.prop(system, "texture_time_out", text="Time Out")
|
||||
col.prop(system, "texture_collection_rate", text="Collection Rate")
|
||||
col.label(text=_("Textures:"))
|
||||
col.prop(system, "gl_texture_limit", text=_("Limit Size"))
|
||||
col.prop(system, "texture_time_out", text=_("Time Out"))
|
||||
col.prop(system, "texture_collection_rate", text=_("Collection Rate"))
|
||||
|
||||
col.separator()
|
||||
col.separator()
|
||||
col.separator()
|
||||
|
||||
col.label(text="Sequencer:")
|
||||
col.label(text=_("Sequencer:"))
|
||||
col.prop(system, "prefetch_frames")
|
||||
col.prop(system, "memory_cache_limit")
|
||||
|
||||
# 3. Column
|
||||
column = split.column()
|
||||
|
||||
column.label(text="Solid OpenGL lights:")
|
||||
column.label(text=_("Solid OpenGL lights:"))
|
||||
|
||||
split = column.split(percentage=0.1)
|
||||
split.label()
|
||||
split.label(text="Colors:")
|
||||
split.label(text="Direction:")
|
||||
split.label(text=_("Colors:"))
|
||||
split.label(text=_("Direction:"))
|
||||
|
||||
lamp = system.solid_lights[0]
|
||||
opengl_lamp_buttons(column, lamp)
|
||||
@ -480,22 +467,28 @@ class USERPREF_PT_system(Panel):
|
||||
lamp = system.solid_lights[2]
|
||||
opengl_lamp_buttons(column, lamp)
|
||||
|
||||
column.separator()
|
||||
column.separator()
|
||||
column.separator()
|
||||
|
||||
column.label(text="Color Picker Type:")
|
||||
column.label(text=_("Color Picker Type:"))
|
||||
column.row().prop(system, "color_picker_type", text="")
|
||||
|
||||
column.separator()
|
||||
column.separator()
|
||||
column.separator()
|
||||
|
||||
column.prop(system, "use_weight_color_range", text="Custom Weight Paint Range")
|
||||
column.prop(system, "use_weight_color_range", text=_("Custom Weight Paint Range"))
|
||||
sub = column.column()
|
||||
sub.active = system.use_weight_color_range
|
||||
sub.template_color_ramp(system, "weight_color_range", expand=True)
|
||||
|
||||
column.separator()
|
||||
|
||||
column.prop(system, "use_international_fonts")
|
||||
if system.use_international_fonts:
|
||||
column.prop(system, "language")
|
||||
row = column.row()
|
||||
row.label(text="Translate:")
|
||||
row.prop(system, "use_translate_interface", text="Interface")
|
||||
row.prop(system, "use_translate_tooltips", text="Tooltips")
|
||||
|
||||
|
||||
class USERPREF_PT_theme(Panel):
|
||||
bl_space_type = 'USER_PREFERENCES'
|
||||
@ -557,71 +550,71 @@ class USERPREF_PT_theme(Panel):
|
||||
col = split.column()
|
||||
|
||||
ui = theme.user_interface.wcol_regular
|
||||
col.label(text="Regular:")
|
||||
col.label(text=_("Regular:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_tool
|
||||
col.label(text="Tool:")
|
||||
col.label(text=_("Tool:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_radio
|
||||
col.label(text="Radio Buttons:")
|
||||
col.label(text=_("Radio Buttons:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_text
|
||||
col.label(text="Text:")
|
||||
col.label(text=_("Text:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_option
|
||||
col.label(text="Option:")
|
||||
col.label(text=_("Option:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_toggle
|
||||
col.label(text="Toggle:")
|
||||
col.label(text=_("Toggle:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_num
|
||||
col.label(text="Number Field:")
|
||||
col.label(text=_("Number Field:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_numslider
|
||||
col.label(text="Value Slider:")
|
||||
col.label(text=_("Value Slider:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_box
|
||||
col.label(text="Box:")
|
||||
col.label(text=_("Box:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_menu
|
||||
col.label(text="Menu:")
|
||||
col.label(text=_("Menu:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_pulldown
|
||||
col.label(text="Pulldown:")
|
||||
col.label(text=_("Pulldown:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_menu_back
|
||||
col.label(text="Menu Back:")
|
||||
col.label(text=_("Menu Back:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_menu_item
|
||||
col.label(text="Menu Item:")
|
||||
col.label(text=_("Menu Item:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_scroll
|
||||
col.label(text="Scroll Bar:")
|
||||
col.label(text=_("Scroll Bar:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_progress
|
||||
col.label(text="Progress Bar:")
|
||||
col.label(text=_("Progress Bar:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_list_item
|
||||
col.label(text="List Item:")
|
||||
col.label(text=_("List Item:"))
|
||||
ui_items_general(col, ui)
|
||||
|
||||
ui = theme.user_interface.wcol_state
|
||||
col.label(text="State:")
|
||||
col.label(text=_("State:"))
|
||||
|
||||
row = col.row()
|
||||
|
||||
@ -657,7 +650,7 @@ class USERPREF_PT_theme(Panel):
|
||||
col = split.column()
|
||||
|
||||
for i, ui in enumerate(theme.bone_color_sets):
|
||||
col.label(text="Color Set %d:" % (i + 1)) # i starts from 0
|
||||
col.label(text=_("Color Set")+" %d:" % (i + 1)) # i starts from 0
|
||||
|
||||
row = col.row()
|
||||
|
||||
@ -700,22 +693,22 @@ class USERPREF_PT_file(Panel):
|
||||
split = layout.split(percentage=0.7)
|
||||
|
||||
col = split.column()
|
||||
col.label(text="File Paths:")
|
||||
col.label(text=_("File Paths:"))
|
||||
|
||||
colsplit = col.split(percentage=0.95)
|
||||
col1 = colsplit.split(percentage=0.3)
|
||||
|
||||
sub = col1.column()
|
||||
sub.label(text="Fonts:")
|
||||
sub.label(text="Textures:")
|
||||
sub.label(text="Texture Plugins:")
|
||||
sub.label(text="Sequence Plugins:")
|
||||
sub.label(text="Render Output:")
|
||||
sub.label(text="Scripts:")
|
||||
sub.label(text="Sounds:")
|
||||
sub.label(text="Temp:")
|
||||
sub.label(text="Image Editor:")
|
||||
sub.label(text="Animation Player:")
|
||||
sub.label(text=_("Fonts:"))
|
||||
sub.label(text=_("Textures:"))
|
||||
sub.label(text=_("Texture Plugins:"))
|
||||
sub.label(text=_("Sequence Plugins:"))
|
||||
sub.label(text=_("Render Output:"))
|
||||
sub.label(text=_("Scripts:"))
|
||||
sub.label(text=_("Sounds:"))
|
||||
sub.label(text=_("Temp:"))
|
||||
sub.label(text=_("Image Editor:"))
|
||||
sub.label(text=_("Animation Player:"))
|
||||
|
||||
sub = col1.column()
|
||||
sub.prop(paths, "font_directory", text="")
|
||||
@ -732,7 +725,7 @@ class USERPREF_PT_file(Panel):
|
||||
subsplit.prop(paths, "animation_player", text="")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Save & Load:")
|
||||
col.label(text=_("Save & Load:"))
|
||||
col.prop(paths, "use_relative_paths")
|
||||
col.prop(paths, "use_file_compression")
|
||||
col.prop(paths, "use_load_ui")
|
||||
@ -747,11 +740,11 @@ class USERPREF_PT_file(Panel):
|
||||
col.prop(paths, "save_version")
|
||||
col.prop(paths, "recent_files")
|
||||
col.prop(paths, "use_save_preview_images")
|
||||
col.label(text="Auto Save:")
|
||||
col.label(text=_("Auto Save:"))
|
||||
col.prop(paths, "use_auto_save_temporary_files")
|
||||
sub = col.column()
|
||||
sub.active = paths.use_auto_save_temporary_files
|
||||
sub.prop(paths, "auto_save_time", text="Timer (mins)")
|
||||
sub.prop(paths, "auto_save_time", text=_("Timer (mins)"))
|
||||
|
||||
from bl_ui.space_userpref_keymap import InputKeyMapPanel
|
||||
|
||||
@ -807,7 +800,7 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
|
||||
col = row.column()
|
||||
|
||||
sub = col.column()
|
||||
sub.label(text="Presets:")
|
||||
sub.label(text=_("Presets:"))
|
||||
subrow = sub.row(align=True)
|
||||
|
||||
subrow.menu("USERPREF_MT_interaction_presets", text=bpy.types.USERPREF_MT_interaction_presets.bl_label)
|
||||
@ -815,19 +808,19 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
|
||||
subrow.operator("wm.interaction_preset_add", text="", icon='ZOOMOUT').remove_active = True
|
||||
sub.separator()
|
||||
|
||||
sub.label(text="Mouse:")
|
||||
sub.label(text=_("Mouse:"))
|
||||
sub1 = sub.column()
|
||||
sub1.active = (inputs.select_mouse == 'RIGHT')
|
||||
sub1.prop(inputs, "use_mouse_emulate_3_button")
|
||||
sub.prop(inputs, "use_mouse_continuous")
|
||||
sub.prop(inputs, "drag_threshold")
|
||||
|
||||
sub.label(text="Select With:")
|
||||
sub.label(text=_("Select With:"))
|
||||
sub.row().prop(inputs, "select_mouse", expand=True)
|
||||
|
||||
sub = col.column()
|
||||
sub.label(text="Double Click:")
|
||||
sub.prop(inputs, "mouse_double_click_time", text="Speed")
|
||||
sub.label(text=_("Double Click:"))
|
||||
sub.prop(inputs, "mouse_double_click_time", text=_("Speed"))
|
||||
|
||||
sub.separator()
|
||||
|
||||
@ -835,10 +828,10 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
|
||||
|
||||
sub.separator()
|
||||
|
||||
sub.label(text="Orbit Style:")
|
||||
sub.label(text=_("Orbit Style:"))
|
||||
sub.row().prop(inputs, "view_rotate_method", expand=True)
|
||||
|
||||
sub.label(text="Zoom Style:")
|
||||
sub.label(text=_("Zoom Style:"))
|
||||
sub.row().prop(inputs, "view_zoom_method", text="")
|
||||
if inputs.view_zoom_method in {'DOLLY', 'CONTINUE'}:
|
||||
sub.row().prop(inputs, "view_zoom_axis", expand=True)
|
||||
@ -849,8 +842,8 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
|
||||
#col.separator()
|
||||
|
||||
sub = col.column()
|
||||
sub.label(text="Mouse Wheel:")
|
||||
sub.prop(inputs, "invert_zoom_wheel", text="Invert Wheel Zoom Direction")
|
||||
sub.label(text=_("Mouse Wheel:"))
|
||||
sub.prop(inputs, "invert_zoom_wheel", text=_("Invert Wheel Zoom Direction"))
|
||||
#sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
|
||||
|
||||
col.separator()
|
||||
@ -888,9 +881,9 @@ class USERPREF_MT_addons_dev_guides(Menu):
|
||||
# menu to open webpages with addons development guides
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.operator('wm.url_open', text='API Concepts', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro'
|
||||
layout.operator('wm.url_open', text='Addon Guidelines', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Guidelines/Addons'
|
||||
layout.operator('wm.url_open', text='How to share your addon', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing'
|
||||
layout.operator('wm.url_open', text=_('API Concepts'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro'
|
||||
layout.operator('wm.url_open', text=_('Addon Guidelines'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Guidelines/Addons'
|
||||
layout.operator('wm.url_open', text=_('How to share your addon'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing'
|
||||
|
||||
|
||||
class USERPREF_PT_addons(Panel):
|
||||
@ -945,10 +938,10 @@ class USERPREF_PT_addons(Panel):
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.prop(context.window_manager, "addon_search", text="", icon='VIEWZOOM')
|
||||
col.label(text="Categories")
|
||||
col.label(text=_("Categories"))
|
||||
col.prop(context.window_manager, "addon_filter", expand=True)
|
||||
|
||||
col.label(text="Supported Level")
|
||||
col.label(text=_("Supported Level"))
|
||||
col.prop(context.window_manager, "addon_support", expand=True)
|
||||
|
||||
col = split.column()
|
||||
@ -1025,23 +1018,23 @@ class USERPREF_PT_addons(Panel):
|
||||
if info["show_expanded"]:
|
||||
if info["description"]:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text='Description:')
|
||||
split.label(text=_('Description:'))
|
||||
split.label(text=info["description"])
|
||||
if info["location"]:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text='Location:')
|
||||
split.label(text=_('Location:'))
|
||||
split.label(text=info["location"])
|
||||
if info["author"]:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text='Author:')
|
||||
split.label(text=_('Author:'))
|
||||
split.label(text=info["author"])
|
||||
if info["version"]:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text='Version:')
|
||||
split.label(text=_('Version:'))
|
||||
split.label(text='.'.join(str(x) for x in info["version"]))
|
||||
if info["warning"]:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text="Warning:")
|
||||
split.label(text=_("Warning:"))
|
||||
split.label(text=' ' + info["warning"], icon='ERROR')
|
||||
|
||||
user_addon = USERPREF_PT_addons.is_user_addon(mod, user_addon_paths)
|
||||
@ -1049,13 +1042,13 @@ class USERPREF_PT_addons(Panel):
|
||||
|
||||
if tot_row:
|
||||
split = colsub.row().split(percentage=0.15)
|
||||
split.label(text="Internet:")
|
||||
split.label(text=_("Internet:"))
|
||||
if info["wiki_url"]:
|
||||
split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"]
|
||||
split.operator("wm.url_open", text=_("Link to the Wiki"), icon='HELP').url = info["wiki_url"]
|
||||
if info["tracker_url"]:
|
||||
split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"]
|
||||
split.operator("wm.url_open", text=_("Report a Bug"), icon='URL').url = info["tracker_url"]
|
||||
if user_addon:
|
||||
split.operator("wm.addon_remove", text="Remove", icon='CANCEL').module = mod.__name__
|
||||
split.operator("wm.addon_remove", text=_("Remove"), icon='CANCEL').module = mod.__name__
|
||||
|
||||
for i in range(4 - tot_row):
|
||||
split.separator()
|
||||
@ -1067,7 +1060,7 @@ class USERPREF_PT_addons(Panel):
|
||||
|
||||
if missing_modules and filter in {"All", "Enabled"}:
|
||||
col.column().separator()
|
||||
col.column().label(text="Missing script files")
|
||||
col.column().label(text=_("Missing script files"))
|
||||
|
||||
module_names = {mod.__name__ for mod, info in addons}
|
||||
for module_name in sorted(missing_modules):
|
||||
|
@ -20,6 +20,7 @@
|
||||
import bpy
|
||||
from bpy.types import Menu, Operator, OperatorProperties
|
||||
import os
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
KM_HIERARCHY = [
|
||||
@ -131,7 +132,7 @@ class USERPREF_MT_keyconfigs(Menu):
|
||||
preset_operator = "wm.keyconfig_activate"
|
||||
|
||||
def draw(self, context):
|
||||
props = self.layout.operator("wm.context_set_value", text="Blender (default)")
|
||||
props = self.layout.operator("wm.context_set_value", text=_("Blender (default)"))
|
||||
props.data_path = "window_manager.keyconfigs.active"
|
||||
props.value = "context.window_manager.keyconfigs.default"
|
||||
|
||||
@ -182,7 +183,7 @@ class InputKeyMapPanel:
|
||||
|
||||
row = col.row()
|
||||
row.prop(km, "show_expanded_children", text="", emboss=False)
|
||||
row.label(text=km.name)
|
||||
row.label(text=_(km.name))
|
||||
|
||||
row.label()
|
||||
row.label()
|
||||
@ -190,7 +191,7 @@ class InputKeyMapPanel:
|
||||
if km.is_modal:
|
||||
row.label(text="", icon='LINKED')
|
||||
if km.is_user_modified:
|
||||
row.operator("wm.keymap_restore", text="Restore")
|
||||
row.operator("wm.keymap_restore", text=_("Restore"))
|
||||
else:
|
||||
row.label()
|
||||
|
||||
@ -201,7 +202,7 @@ class InputKeyMapPanel:
|
||||
subcol = self.indented_layout(col, level + 1)
|
||||
subrow = subcol.row()
|
||||
subrow.prop(km, "show_expanded_items", text="", emboss=False)
|
||||
subrow.label(text="%s (Global)" % km.name)
|
||||
subrow.label(text="%s " % _(km.name) + _("(Global)") )
|
||||
else:
|
||||
km.show_expanded_items = True
|
||||
|
||||
@ -213,7 +214,7 @@ class InputKeyMapPanel:
|
||||
# "Add New" at end of keymap item list
|
||||
col = self.indented_layout(col, level + 1)
|
||||
subcol = col.split(percentage=0.2).column()
|
||||
subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
|
||||
subcol.operator("wm.keyitem_add", text=_("Add New"), icon='ZOOMIN')
|
||||
|
||||
col.separator()
|
||||
|
||||
@ -261,7 +262,7 @@ class InputKeyMapPanel:
|
||||
if km.is_modal:
|
||||
row.prop(kmi, "propvalue", text="")
|
||||
else:
|
||||
row.label(text=kmi.name)
|
||||
row.label(text=_(kmi.name))
|
||||
|
||||
row = split.row()
|
||||
row.prop(kmi, "map_type", text="")
|
||||
@ -350,7 +351,7 @@ class InputKeyMapPanel:
|
||||
row.label()
|
||||
|
||||
if km.is_user_modified:
|
||||
row.operator("wm.keymap_restore", text="Restore")
|
||||
row.operator("wm.keymap_restore", text=_("Restore"))
|
||||
else:
|
||||
row.label()
|
||||
|
||||
@ -360,7 +361,7 @@ class InputKeyMapPanel:
|
||||
# "Add New" at end of keymap item list
|
||||
col = self.indented_layout(layout, 1)
|
||||
subcol = col.split(percentage=0.2).column()
|
||||
subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
|
||||
subcol.operator("wm.keyitem_add", text=_("Add New"), icon='ZOOMIN')
|
||||
|
||||
def draw_hierarchy(self, display_keymaps, layout):
|
||||
for entry in KM_HIERARCHY:
|
||||
@ -381,7 +382,7 @@ class InputKeyMapPanel:
|
||||
#row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:")
|
||||
text = bpy.path.display_name(context.window_manager.keyconfigs.active.name)
|
||||
if not text:
|
||||
text = "Blender (default)"
|
||||
text = _("Blender (default)")
|
||||
row.menu("USERPREF_MT_keyconfigs", text=text)
|
||||
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMIN")
|
||||
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMOUT").remove_active = True
|
||||
@ -423,7 +424,7 @@ def export_properties(prefix, properties, lines=None):
|
||||
class WM_OT_keyconfig_test(Operator):
|
||||
"Test keyconfig for conflicts"
|
||||
bl_idname = "wm.keyconfig_test"
|
||||
bl_label = "Test Key Configuration for Conflicts"
|
||||
bl_label = _("Test Key Configuration for Conflicts")
|
||||
|
||||
def testEntry(self, kc, entry, src=None, parent=None):
|
||||
result = False
|
||||
@ -597,7 +598,7 @@ class WM_OT_keyconfig_import(Operator):
|
||||
class WM_OT_keyconfig_export(Operator):
|
||||
"Export key configuration to a python script"
|
||||
bl_idname = "wm.keyconfig_export"
|
||||
bl_label = "Export Key Configuration..."
|
||||
bl_label = _("Export Key Configuration...")
|
||||
|
||||
filepath = StringProperty(
|
||||
name="File Path",
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -19,6 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel
|
||||
from blf import gettext as _
|
||||
|
||||
|
||||
class View3DPanel():
|
||||
@ -31,33 +32,33 @@ class View3DPanel():
|
||||
# History/Repeat tools
|
||||
def draw_repeat_tools(context, layout):
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Repeat:")
|
||||
col.label(text=_("Repeat:"))
|
||||
col.operator("screen.repeat_last")
|
||||
col.operator("screen.repeat_history", text="History...")
|
||||
col.operator("screen.repeat_history", text=_("History..."))
|
||||
|
||||
|
||||
# Keyframing tools
|
||||
def draw_keyframing_tools(context, layout):
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Keyframes:")
|
||||
col.label(text=_("Keyframes:"))
|
||||
row = col.row()
|
||||
row.operator("anim.keyframe_insert_menu", text="Insert")
|
||||
row.operator("anim.keyframe_delete_v3d", text="Remove")
|
||||
row.operator("anim.keyframe_insert_menu", text=_("Insert"))
|
||||
row.operator("anim.keyframe_delete_v3d", text=_("Remove"))
|
||||
|
||||
|
||||
# Grease Pencil tools
|
||||
def draw_gpencil_tools(context, layout):
|
||||
col = layout.column(align=True)
|
||||
|
||||
col.label(text="Grease Pencil:")
|
||||
col.label(text=_("Grease Pencil:"))
|
||||
|
||||
row = col.row()
|
||||
row.operator("gpencil.draw", text="Draw").mode = 'DRAW'
|
||||
row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT'
|
||||
row.operator("gpencil.draw", text=_("Draw")).mode = 'DRAW'
|
||||
row.operator("gpencil.draw", text=_("Line")).mode = 'DRAW_STRAIGHT'
|
||||
|
||||
row = col.row()
|
||||
row.operator("gpencil.draw", text="Poly").mode = 'DRAW_POLY'
|
||||
row.operator("gpencil.draw", text="Erase").mode = 'ERASER'
|
||||
row.operator("gpencil.draw", text=_("Poly")).mode = 'DRAW_POLY'
|
||||
row.operator("gpencil.draw", text=_("Erase")).mode = 'ERASER'
|
||||
|
||||
row = col.row()
|
||||
row.prop(context.tool_settings, "use_grease_pencil_sessions")
|
||||
@ -73,16 +74,16 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
|
||||
layout = self.layout
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Transform:")
|
||||
col.label(text=_("Transform:"))
|
||||
col.operator("transform.translate")
|
||||
col.operator("transform.rotate")
|
||||
col.operator("transform.resize", text="Scale")
|
||||
col.operator("transform.resize", text=_("Scale"))
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.operator("object.origin_set", text="Origin")
|
||||
col.operator("object.origin_set", text=_("Origin"))
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Object:")
|
||||
col.label(text=_("Object:"))
|
||||
col.operator("object.duplicate_move")
|
||||
col.operator("object.delete")
|
||||
col.operator("object.join")
|
||||
@ -91,17 +92,17 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
|
||||
if active_object and active_object.type == 'MESH':
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Shading:")
|
||||
col.label(text=_("Shading:"))
|
||||
row = col.row(align=True)
|
||||
row.operator("object.shade_smooth", text="Smooth")
|
||||
row.operator("object.shade_flat", text="Flat")
|
||||
row.operator("object.shade_smooth", text=_("Smooth"))
|
||||
row.operator("object.shade_flat", text=_("Flat"))
|
||||
|
||||
draw_keyframing_tools(context, layout)
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Motion Paths:")
|
||||
col.operator("object.paths_calculate", text="Calculate Paths")
|
||||
col.operator("object.paths_clear", text="Clear Paths")
|
||||
col.label(text=_("Motion Paths:"))
|
||||
col.operator("object.paths_calculate", text=_("Calculate Paths"))
|
||||
col.operator("object.paths_clear", text=_("Clear Paths"))
|
||||
|
||||
draw_repeat_tools(context, layout)
|
||||
|
||||
@ -122,8 +123,8 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, Panel):
|
||||
col.operator("transform.translate")
|
||||
col.operator("transform.rotate")
|
||||
col.operator("transform.resize", text="Scale")
|
||||
col.operator("transform.shrink_fatten", text="Shrink/Fatten")
|
||||
col.operator("transform.push_pull", text="Push/Pull")
|
||||
col.operator("transform.shrink_fatten", text=_("Shrink/Fatten"))
|
||||
col.operator("transform.push_pull", text=_("Push/Pull"))
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Deform:")
|
||||
@ -1016,7 +1017,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel):
|
||||
brush = settings.brush
|
||||
|
||||
if brush is None: # unlikely but can happen
|
||||
layout.label(text="Brush Unset")
|
||||
layout.label(text=_("Brush Unset"))
|
||||
return
|
||||
|
||||
col = layout.column()
|
||||
|
@ -178,20 +178,6 @@ void BLF_buffer_col(int fontid, float r, float g, float b, float a);
|
||||
*/
|
||||
void BLF_draw_buffer(int fontid, const char *str);
|
||||
|
||||
/*
|
||||
* Search the path directory to the locale files, this try all
|
||||
* the case for Linux, Win and Mac.
|
||||
*/
|
||||
void BLF_lang_init(void);
|
||||
|
||||
/* Set the current locale. */
|
||||
void BLF_lang_set(const char *);
|
||||
|
||||
/* Set the current encoding name. */
|
||||
void BLF_lang_encoding_name(const char *str);
|
||||
|
||||
void BLF_lang_encoding(const char *str);
|
||||
|
||||
/* Add a path to the font dir paths. */
|
||||
void BLF_dir_add(const char *path);
|
||||
|
||||
|
66
source/blender/blenfont/BLF_translation.h
Normal file
66
source/blender/blenfont/BLF_translation.h
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/BLF_translation.h
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BLF_TRANSLATION_H
|
||||
#define BLF_TRANSLATION_H
|
||||
|
||||
/* blf_translation.c */
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
unsigned char *BLF_get_unifont(int *unifont_size);
|
||||
void BLF_free_unifont(void);
|
||||
#endif
|
||||
|
||||
const char* BLF_gettext(const char *msgid);
|
||||
|
||||
/* blf_lang.c */
|
||||
|
||||
/*
|
||||
* Search the path directory to the locale files, this try all
|
||||
* the case for Linux, Win and Mac.
|
||||
*/
|
||||
void BLF_lang_init(void);
|
||||
|
||||
/* Set the current locale. */
|
||||
void BLF_lang_set(const char *);
|
||||
|
||||
/* Set the current encoding name. */
|
||||
void BLF_lang_encoding_name(const char *str);
|
||||
|
||||
void BLF_lang_encoding(const char *str);
|
||||
|
||||
#define _(msgid) BLF_gettext(msgid)
|
||||
#define N_(msgid) msgid
|
||||
|
||||
#endif /* BLF_TRANSLATION_H */
|
@ -42,9 +42,11 @@ set(SRC
|
||||
intern/blf_font.c
|
||||
intern/blf_glyph.c
|
||||
intern/blf_lang.c
|
||||
intern/blf_translation.c
|
||||
intern/blf_util.c
|
||||
|
||||
BLF_api.h
|
||||
BLF_translation.h
|
||||
intern/blf_internal.h
|
||||
intern/blf_internal_types.h
|
||||
)
|
||||
@ -56,9 +58,5 @@ if(WITH_INTERNATIONAL)
|
||||
add_definitions(-DINTERNATIONAL)
|
||||
endif()
|
||||
|
||||
if(WIN32 AND NOT UNIX)
|
||||
add_definitions(-DUSE_GETTEXT_DLL)
|
||||
endif()
|
||||
|
||||
blender_add_lib(bf_blenfont "${SRC}" "${INC}" "${INC_SYS}")
|
||||
|
||||
|
@ -13,7 +13,6 @@ defs = []
|
||||
|
||||
if sys.platform == 'win32' or env['OURPLATFORM'] == 'linuxcross':
|
||||
defs.append('_WIN32')
|
||||
defs.append('USE_GETTEXT_DLL')
|
||||
|
||||
if env['WITH_BF_INTERNATIONAL']:
|
||||
defs.append('INTERNATIONAL')
|
||||
|
@ -39,8 +39,14 @@
|
||||
#ifdef INTERNATIONAL
|
||||
|
||||
#include <locale.h>
|
||||
|
||||
#if defined (_WIN32)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include "libintl.h"
|
||||
|
||||
#include "DNA_userdef_types.h"
|
||||
|
||||
#include "DNA_listBase.h"
|
||||
#include "DNA_vec_types.h"
|
||||
@ -60,6 +66,35 @@ static char global_messagepath[1024];
|
||||
static char global_language[32];
|
||||
static char global_encoding_name[32];
|
||||
|
||||
/* map from the rna_userdef.c:rna_def_userdef_system(BlenderRNA *brna):language_items */
|
||||
static const char *locales[] = {
|
||||
"", "",
|
||||
"english", "en_US",
|
||||
"japanese", "ja_JP",
|
||||
"dutch", "nl_NL",
|
||||
"italian", "it_IT",
|
||||
"german", "de_DE",
|
||||
"finnish", "fi_FI",
|
||||
"swedish", "sv_SE",
|
||||
"french", "fr_FR",
|
||||
"spanish", "es_ES",
|
||||
"catalan", "ca_AD",
|
||||
"czech", "cs_CZ",
|
||||
"ptb", "pt_BR",
|
||||
"chs", "zh_CN",
|
||||
"cht", "zh_TW",
|
||||
"russian", "ru_RU",
|
||||
"croatian", "hr_HR",
|
||||
"serbian", "sr_RS",
|
||||
"ukrainian", "uk_UA",
|
||||
"polish", "pl_PL",
|
||||
"romanian", "ro_RO",
|
||||
"arabic", "ar_EG",
|
||||
"bulgarian", "bg_BG",
|
||||
"greek", "el_GR",
|
||||
"korean", "ko_KR",
|
||||
"nepali", "ne_NP",
|
||||
};
|
||||
|
||||
void BLF_lang_init(void)
|
||||
{
|
||||
@ -77,34 +112,95 @@ void BLF_lang_init(void)
|
||||
/* XXX WARNING!!! IN osx somehow the previous function call jumps in this one??? (ton, ppc) */
|
||||
void BLF_lang_set(const char *str)
|
||||
{
|
||||
if(str==NULL) {
|
||||
char *locreturn;
|
||||
const char *short_locale;
|
||||
int ok= 1;
|
||||
#if defined (_WIN32)
|
||||
char *long_locale = locales[ 2 * U.language];
|
||||
#endif
|
||||
|
||||
if((U.transopts&USER_DOTRANSLATE)==0)
|
||||
return;
|
||||
|
||||
if(str)
|
||||
short_locale = str;
|
||||
else
|
||||
short_locale = locales[ 2 * U.language + 1];
|
||||
|
||||
#if defined (_WIN32)
|
||||
if(short_locale) {
|
||||
char *envStr;
|
||||
|
||||
if( U.language==0 )/* use system setting */
|
||||
envStr = BLI_sprintfN( "LANG=%s", getenv("LANG") );
|
||||
else
|
||||
envStr = BLI_sprintfN( "LANG=%s", short_locale );
|
||||
|
||||
gettext_putenv(envStr);
|
||||
MEM_freeN(envStr);
|
||||
}
|
||||
|
||||
locreturn= setlocale(LC_ALL, long_locale);
|
||||
|
||||
if (locreturn == NULL) {
|
||||
printf("Could not change locale to %s\n", long_locale);
|
||||
ok= 0;
|
||||
}
|
||||
else {
|
||||
|
||||
#if defined (_WIN32) || defined(__APPLE__)
|
||||
BLI_setenv("LANG", str);
|
||||
#else
|
||||
char *locreturn= setlocale(LC_ALL, str);
|
||||
if (locreturn == NULL) {
|
||||
char *lang= BLI_sprintfN("%s.UTF-8", str);
|
||||
{
|
||||
const char *locale;
|
||||
static char default_locale[64]="\0";
|
||||
|
||||
locreturn= setlocale(LC_ALL, lang);
|
||||
if (locreturn == NULL) {
|
||||
printf("could not change language to %s nor %s\n", str, lang);
|
||||
if(default_locale[0]==0) {
|
||||
char *env_language= getenv("LANGUAGE");
|
||||
|
||||
if(env_language) {
|
||||
char *s;
|
||||
|
||||
/* store defaul locale */
|
||||
strncpy(default_locale, env_language, sizeof(default_locale));
|
||||
|
||||
/* use first language as default */
|
||||
s= strchr(default_locale, ':');
|
||||
if(s) s[0]= 0;
|
||||
}
|
||||
|
||||
MEM_freeN(lang);
|
||||
}
|
||||
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
#endif
|
||||
textdomain(DOMAIN_NAME);
|
||||
bindtextdomain(DOMAIN_NAME, global_messagepath);
|
||||
/* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */
|
||||
BLI_strncpy(global_language, str, sizeof(global_language));
|
||||
|
||||
if(short_locale[0])
|
||||
locale= short_locale;
|
||||
else
|
||||
locale= default_locale;
|
||||
|
||||
BLI_setenv("LANG", locale);
|
||||
BLI_setenv("LANGUAGE", locale);
|
||||
|
||||
locreturn= setlocale(LC_ALL, locale);
|
||||
|
||||
if (locreturn == NULL) {
|
||||
char *short_locale_utf8= BLI_sprintfN("%s.UTF-8", short_locale);
|
||||
|
||||
locreturn= setlocale(LC_ALL, short_locale_utf8);
|
||||
|
||||
if (locreturn == NULL) {
|
||||
printf("Could not change locale to %s nor %s\n", short_locale, short_locale_utf8);
|
||||
ok= 0;
|
||||
}
|
||||
|
||||
MEM_freeN(short_locale_utf8);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if(ok) {
|
||||
//printf("Change locale to %s\n", locreturn );
|
||||
BLI_strncpy(global_language, locreturn, sizeof(global_language));
|
||||
}
|
||||
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
|
||||
textdomain(DOMAIN_NAME);
|
||||
bindtextdomain(DOMAIN_NAME, global_messagepath);
|
||||
bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name);
|
||||
}
|
||||
|
||||
void BLF_lang_encoding(const char *str)
|
||||
|
86
source/blender/blenfont/intern/blf_translation.c
Normal file
86
source/blender/blenfont/intern/blf_translation.c
Normal file
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2011 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Contributor(s): Blender Foundation,
|
||||
* Sergey Sharybin
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_translation.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
#include <libintl.h>
|
||||
#endif
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_path_util.h"
|
||||
#include "BLI_fileops.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
const char unifont_filename[]="droidsans.ttf.gz";
|
||||
static unsigned char *unifont_ttf= NULL;
|
||||
static int unifont_size= 0;
|
||||
|
||||
unsigned char *BLF_get_unifont(int *unifont_size_r)
|
||||
{
|
||||
if(unifont_ttf==NULL) {
|
||||
char *fontpath = BLI_get_folder(BLENDER_DATAFILES, "fonts");
|
||||
char unifont_path[1024];
|
||||
|
||||
BLI_snprintf(unifont_path, sizeof(unifont_path), "%s/%s", fontpath, unifont_filename);
|
||||
|
||||
unifont_ttf= (unsigned char*)BLI_ungzip_to_mem(unifont_path, &unifont_size);
|
||||
}
|
||||
|
||||
*unifont_size_r= unifont_size;
|
||||
|
||||
return unifont_ttf;
|
||||
}
|
||||
|
||||
void BLF_free_unifont(void)
|
||||
{
|
||||
if(unifont_ttf)
|
||||
MEM_freeN(unifont_ttf);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
const char* BLF_gettext(const char *msgid)
|
||||
{
|
||||
#ifdef INTERNATIONAL
|
||||
if( msgid[0] )
|
||||
return gettext( msgid );
|
||||
return "";
|
||||
#else
|
||||
return msgid;
|
||||
#endif
|
||||
}
|
@ -53,6 +53,7 @@ int BLI_exists(const char *file);
|
||||
int BLI_copy_fileops(const char *file, const char *to);
|
||||
int BLI_rename(const char *from, const char *to);
|
||||
int BLI_gzip(const char *from, const char *to);
|
||||
char *BLI_ungzip_to_mem(const char *from_file, int *size_r);
|
||||
int BLI_delete(const char *file, int dir, int recursive);
|
||||
int BLI_move(const char *file, const char *to);
|
||||
int BLI_touch(const char *file);
|
||||
|
@ -52,6 +52,8 @@
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
|
||||
#include "BKE_utildefines.h"
|
||||
@ -104,6 +106,45 @@ int BLI_gzip(const char *from, const char *to) {
|
||||
return rval;
|
||||
}
|
||||
|
||||
/* gzip the file in from_file and write it to memery to_mem, at most size bytes.
|
||||
return the unziped size
|
||||
*/
|
||||
char *BLI_ungzip_to_mem(const char *from_file, int *size_r)
|
||||
{
|
||||
gzFile gzfile;
|
||||
int readsize, size, alloc_size=0;
|
||||
char *mem= NULL;
|
||||
const int chunk_size= 512*1024;
|
||||
|
||||
size= 0;
|
||||
|
||||
gzfile = gzopen( from_file, "rb" );
|
||||
|
||||
for(;;) {
|
||||
if(mem==NULL) {
|
||||
mem= MEM_callocN(chunk_size, "BLI_ungzip_to_mem");
|
||||
alloc_size= chunk_size;
|
||||
} else {
|
||||
mem= MEM_reallocN(mem, size+chunk_size);
|
||||
alloc_size+= chunk_size;
|
||||
}
|
||||
|
||||
readsize= gzread(gzfile, mem+size, chunk_size);
|
||||
if(readsize>0) {
|
||||
size+= readsize;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
if(mem && alloc_size!=size)
|
||||
mem= MEM_reallocN(mem, size);
|
||||
|
||||
*size_r= size;
|
||||
|
||||
return mem;
|
||||
}
|
||||
|
||||
|
||||
/* return 1 when file can be written */
|
||||
int BLI_is_writable(const char *filename)
|
||||
{
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
|
@ -3,7 +3,7 @@ Import ('env')
|
||||
|
||||
sources = env.Glob('*.c')
|
||||
|
||||
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf ../../blenloader'
|
||||
incs = '../include ../../blenfont ../../blenlib ../../blenkernel ../../makesdna ../../imbuf ../../blenloader'
|
||||
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
|
||||
incs += ' ../../gpu ../../makesrna #/intern/opennl/extern'
|
||||
|
||||
|
@ -43,6 +43,8 @@
|
||||
#include "BLI_dlrbTree.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_armature_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
@ -407,15 +409,15 @@ static int poselib_add_menu_invoke (bContext *C, wmOperator *op, wmEvent *UNUSED
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
|
||||
|
||||
/* add new (adds to the first unoccupied frame) */
|
||||
uiItemIntO(layout, "Add New", ICON_NONE, "POSELIB_OT_pose_add", "frame", poselib_get_free_index(ob->poselib));
|
||||
uiItemIntO(layout, UI_translate_do_iface(N_("Add New")), ICON_NONE, "POSELIB_OT_pose_add", "frame", poselib_get_free_index(ob->poselib));
|
||||
|
||||
/* check if we have any choices to add a new pose in any other way */
|
||||
if ((ob->poselib) && (ob->poselib->markers.first)) {
|
||||
/* add new (on current frame) */
|
||||
uiItemIntO(layout, "Add New (Current Frame)", ICON_NONE, "POSELIB_OT_pose_add", "frame", CFRA);
|
||||
uiItemIntO(layout, UI_translate_do_iface(N_("Add New (Current Frame)")), ICON_NONE, "POSELIB_OT_pose_add", "frame", CFRA);
|
||||
|
||||
/* replace existing - submenu */
|
||||
uiItemMenuF(layout, "Replace Existing...", 0, poselib_add_menu_invoke__replacemenu, NULL);
|
||||
uiItemMenuF(layout, UI_translate_do_iface(N_("Replace Existing...")), 0, poselib_add_menu_invoke__replacemenu, NULL);
|
||||
}
|
||||
|
||||
uiPupMenuEnd(C, pup);
|
||||
|
@ -799,9 +799,15 @@ void uiStyleFontDrawRotated(struct uiFontStyle *fs, struct rcti *rect, const cha
|
||||
int UI_GetStringWidth(const char *str); // XXX temp
|
||||
void UI_DrawString(float x, float y, const char *str); // XXX temp
|
||||
void UI_DrawTriIcon(float x, float y, char dir);
|
||||
|
||||
uiStyle* UI_GetStyle(void);
|
||||
/* linker workaround ack! */
|
||||
void UI_template_fix_linking(void);
|
||||
|
||||
/* translation */
|
||||
int UI_translate_iface(void);
|
||||
int UI_translate_tooltips(void);
|
||||
const char *UI_translate_do_iface(const char *msgid);
|
||||
const char *UI_translate_do_tooltip(const char *msgid);
|
||||
|
||||
#endif /* UI_INTERFACE_H */
|
||||
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "BIF_gl.h"
|
||||
|
||||
#include "BLF_api.h"
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
|
||||
@ -93,19 +94,46 @@ static void ui_free_but(const bContext *C, uiBut *but);
|
||||
|
||||
/* ************* translation ************** */
|
||||
|
||||
int ui_translate_buttons(void)
|
||||
int UI_translate_iface(void)
|
||||
{
|
||||
return (U.transopts & USER_TR_BUTTONS);
|
||||
#ifdef INTERNATIONAL
|
||||
return (U.transopts & USER_DOTRANSLATE) && (U.transopts & USER_TR_IFACE);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int ui_translate_menus(void)
|
||||
int UI_translate_tooltips(void)
|
||||
{
|
||||
return (U.transopts & USER_TR_MENUS);
|
||||
#ifdef INTERNATIONAL
|
||||
return (U.transopts & USER_DOTRANSLATE) && (U.transopts & USER_TR_TOOLTIPS);
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int ui_translate_tooltips(void)
|
||||
const char *UI_translate_do_iface(const char *msgid)
|
||||
{
|
||||
return (U.transopts & USER_TR_TOOLTIPS);
|
||||
#ifdef INTERNATIONAL
|
||||
if(UI_translate_iface())
|
||||
return BLF_gettext(msgid);
|
||||
else
|
||||
return msgid;
|
||||
#else
|
||||
return msgid;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *UI_translate_do_tooltip(const char *msgid)
|
||||
{
|
||||
#ifdef INTERNATIONAL
|
||||
if(UI_translate_tooltips())
|
||||
return BLF_gettext(msgid);
|
||||
else
|
||||
return msgid;
|
||||
#else
|
||||
return msgid;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ************* window matrix ************** */
|
||||
@ -229,7 +257,7 @@ void ui_block_translate(uiBlock *block, int x, int y)
|
||||
|
||||
static void ui_text_bounds_block(uiBlock *block, float offset)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first; // XXX pass on as arg
|
||||
uiStyle *style=UI_GetStyle();
|
||||
uiBut *bt;
|
||||
int i = 0, j, x1addval= offset, nextcol;
|
||||
int lastcol= 0, col= 0;
|
||||
@ -238,9 +266,6 @@ static void ui_text_bounds_block(uiBlock *block, float offset)
|
||||
|
||||
for(bt= block->buttons.first; bt; bt= bt->next) {
|
||||
if(bt->type!=SEPR) {
|
||||
//int transopts= ui_translate_buttons();
|
||||
//if(bt->type==TEX || bt->type==IDPOIN) transopts= 0;
|
||||
|
||||
j= BLF_width(style->widget.uifont_id, bt->drawstr);
|
||||
|
||||
if(j > i) i = j;
|
||||
@ -930,7 +955,7 @@ static void ui_but_to_pixelrect(rcti *rect, const ARegion *ar, uiBlock *block, u
|
||||
/* uses local copy of style, to scale things down, and allow widgets to change stuff */
|
||||
void uiDrawBlock(const bContext *C, uiBlock *block)
|
||||
{
|
||||
uiStyle style= *((uiStyle *)U.uistyles.first); // XXX pass on as arg
|
||||
uiStyle style= *UI_GetStyle(); // XXX pass on as arg
|
||||
ARegion *ar;
|
||||
uiBut *but;
|
||||
rcti rect;
|
||||
@ -2033,12 +2058,9 @@ void ui_check_but(uiBut *but)
|
||||
/* if something changed in the button */
|
||||
double value= UI_BUT_VALUE_UNSET;
|
||||
// float okwidth; // UNUSED
|
||||
// int transopts= ui_translate_buttons();
|
||||
|
||||
ui_is_but_sel(but, &value);
|
||||
|
||||
// if(but->type==TEX || but->type==IDPOIN) transopts= 0;
|
||||
|
||||
/* only update soft range while not editing */
|
||||
if(but->rnaprop && !(but->editval || but->editstr || but->editvec)) {
|
||||
UI_GET_BUT_VALUE_INIT(but, value)
|
||||
@ -2547,7 +2569,7 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s
|
||||
DynStr *dynstr;
|
||||
int i, totitem, value, free;
|
||||
|
||||
RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
value= RNA_property_enum_get(ptr, prop);
|
||||
|
||||
dynstr= BLI_dynstr_new();
|
||||
@ -2582,7 +2604,7 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s
|
||||
EnumPropertyItem *item;
|
||||
int i, totitem, free;
|
||||
|
||||
RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
for(i=0; i<totitem; i++) {
|
||||
if(item[i].identifier[0] && item[i].value == (int)max) {
|
||||
str= item[i].name;
|
||||
@ -2710,6 +2732,11 @@ static uiBut *ui_def_but_operator(uiBlock *block, int type, const char *opname,
|
||||
|
||||
if ((!tip || tip[0]=='\0') && ot && ot->description) {
|
||||
tip= ot->description;
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
if(UI_translate_tooltips())
|
||||
tip= BLF_gettext(tip);
|
||||
#endif
|
||||
}
|
||||
|
||||
but= ui_def_but(block, type, -1, str, x1, y1, x2, y2, NULL, 0, 0, 0, 0, tip);
|
||||
|
@ -1269,7 +1269,7 @@ static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
|
||||
/* note, but->block->aspect is used here, when drawing button style is getting scaled too */
|
||||
static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first; // XXX pass on as arg
|
||||
uiStyle *style= UI_GetStyle(); // XXX pass on as arg
|
||||
uiFontStyle *fstyle = &style->widget;
|
||||
int startx= but->x1;
|
||||
char *origstr;
|
||||
@ -4101,7 +4101,7 @@ static uiBlock *menu_change_shortcut(bContext *C, ARegion *ar, void *arg)
|
||||
wmKeyMapItem *kmi;
|
||||
PointerRNA ptr;
|
||||
uiLayout *layout;
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
|
||||
int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, 1, &km);
|
||||
|
||||
@ -4133,7 +4133,7 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg)
|
||||
wmKeyMapItem *kmi;
|
||||
PointerRNA ptr;
|
||||
uiLayout *layout;
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
IDProperty *prop= (but->opptr)? but->opptr->data: NULL;
|
||||
int kmi_id;
|
||||
|
||||
|
@ -347,10 +347,6 @@ typedef struct uiSafetyRct {
|
||||
|
||||
extern void ui_delete_linkline(uiLinkLine *line, uiBut *but);
|
||||
|
||||
extern int ui_translate_buttons(void);
|
||||
extern int ui_translate_menus(void);
|
||||
extern int ui_translate_tooltips(void);
|
||||
|
||||
void ui_fontscale(short *points, float aspect);
|
||||
|
||||
extern void ui_block_to_window_fl(const struct ARegion *ar, uiBlock *block, float *x, float *y);
|
||||
|
@ -43,6 +43,8 @@
|
||||
#include "BLI_string.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_idprop.h"
|
||||
@ -475,7 +477,7 @@ static void ui_item_enum_expand(uiLayout *layout, uiBlock *block, PointerRNA *pt
|
||||
const char *name;
|
||||
int a, totitem, itemw, icon, value, free;
|
||||
|
||||
RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
|
||||
uiBlockSetCurLayout(block, ui_item_local_sublayout(layout, layout, 1));
|
||||
for(a=0; a<totitem; a++) {
|
||||
@ -634,8 +636,14 @@ PointerRNA uiItemFullO(uiLayout *layout, const char *opname, const char *name, i
|
||||
return PointerRNA_NULL;
|
||||
}
|
||||
|
||||
if(!name)
|
||||
if(!name) {
|
||||
name= ot->name;
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
name= UI_translate_do_iface(name);
|
||||
#endif
|
||||
}
|
||||
|
||||
if(layout->root->type == UI_LAYOUT_MENU && !icon)
|
||||
icon= ICON_BLANK1;
|
||||
|
||||
@ -701,7 +709,7 @@ static const char *ui_menu_enumpropname(uiLayout *layout, const char *opname, co
|
||||
int totitem, free;
|
||||
const char *name;
|
||||
|
||||
RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(layout->root->block->evil_C, &ptr, prop, &item, &totitem, &free);
|
||||
if(RNA_enum_name(item, retval, &name)) {
|
||||
if(free) MEM_freeN(item);
|
||||
return name;
|
||||
@ -753,7 +761,7 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname
|
||||
uiLayout *split= uiLayoutSplit(layout, 0, 0);
|
||||
uiLayout *column= uiLayoutColumn(split, 0);
|
||||
|
||||
RNA_property_enum_items(block->evil_C, &ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(block->evil_C, &ptr, prop, &item, &totitem, &free);
|
||||
|
||||
for(i=0; i<totitem; i++) {
|
||||
if(item[i].identifier[0]) {
|
||||
@ -841,7 +849,7 @@ void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char
|
||||
|
||||
/* enum lookup */
|
||||
if((prop= RNA_struct_find_property(&ptr, propname))) {
|
||||
RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free);
|
||||
RNA_property_enum_items_gettexted(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free);
|
||||
if(item==NULL || RNA_enum_value_from_id(item, value_str, &value)==0) {
|
||||
if(free) MEM_freeN(item);
|
||||
RNA_warning("%s.%s, enum %s not found", RNA_struct_identifier(ptr.type), propname, value_str);
|
||||
@ -1091,7 +1099,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *pr
|
||||
return;
|
||||
}
|
||||
|
||||
RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free);
|
||||
RNA_property_enum_items_gettexted(layout->root->block->evil_C, ptr, prop, &item, NULL, &free);
|
||||
|
||||
if(!RNA_enum_value_from_id(item, value, &ivalue)) {
|
||||
if(free) MEM_freeN(item);
|
||||
@ -1135,7 +1143,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname
|
||||
uiLayout *split= uiLayoutSplit(layout, 0, 0);
|
||||
uiLayout *column= uiLayoutColumn(split, 0);
|
||||
|
||||
RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free);
|
||||
|
||||
for(i=0; i<totitem; i++) {
|
||||
if(item[i].identifier[0]) {
|
||||
@ -1421,8 +1429,14 @@ void uiItemM(uiLayout *layout, bContext *UNUSED(C), const char *menuname, const
|
||||
return;
|
||||
}
|
||||
|
||||
if(!name)
|
||||
if(!name) {
|
||||
name= mt->label;
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
name= UI_translate_do_iface(name);
|
||||
#endif
|
||||
}
|
||||
|
||||
if(layout->root->type == UI_LAYOUT_MENU && !icon)
|
||||
icon= ICON_BLANK1;
|
||||
|
||||
@ -2794,7 +2808,7 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in
|
||||
empty= uiDefAutoButsRNA(layout, &ptr, check_prop, label_align) == 0;
|
||||
|
||||
if(empty && (flag & UI_LAYOUT_OP_SHOW_EMPTY)) {
|
||||
uiItemL(layout, "No Properties", ICON_NONE);
|
||||
uiItemL(layout, UI_translate_do_iface(N_("No Properties")), ICON_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,7 +173,7 @@ static void ui_panel_copy_offset(Panel *pa, Panel *papar)
|
||||
|
||||
Panel *uiBeginPanel(ScrArea *sa, ARegion *ar, uiBlock *block, PanelType *pt, int *open)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
Panel *pa, *patab, *palast, *panext;
|
||||
char *drawname= pt->label;
|
||||
char *idname= pt->idname;
|
||||
@ -292,7 +292,7 @@ void uiEndPanel(uiBlock *block, int width, int height)
|
||||
|
||||
static void ui_offset_panel_block(uiBlock *block)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiBut *but;
|
||||
int ofsy;
|
||||
|
||||
@ -442,8 +442,12 @@ static void ui_draw_aligned_panel_header(uiStyle *style, uiBlock *block, rcti *r
|
||||
Panel *panel= block->panel;
|
||||
rcti hrect;
|
||||
int pnl_icons;
|
||||
char *activename= panel->drawname[0]?panel->drawname:panel->panelname;
|
||||
|
||||
const char *activename= panel->drawname[0]?panel->drawname:panel->panelname;
|
||||
|
||||
#ifdef INTERNATIONAL
|
||||
activename= UI_translate_do_iface(activename);
|
||||
#endif
|
||||
|
||||
/* + 0.001f to avoid flirting with float inaccuracy */
|
||||
if(panel->control & UI_PNL_CLOSE) pnl_icons=(panel->labelofs+2*PNL_ICON+5)/block->aspect + 0.001f;
|
||||
else pnl_icons= (panel->labelofs+PNL_ICON+5)/block->aspect + 0.001f;
|
||||
@ -667,7 +671,7 @@ static int compare_panel(const void *a1, const void *a2)
|
||||
/* returns 1 when it did something */
|
||||
static int uiAlignPanelStep(ScrArea *sa, ARegion *ar, float fac, int drag)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
Panel *pa;
|
||||
PanelSort *ps, *panelsort, *psnext;
|
||||
int a, tot=0, done;
|
||||
|
@ -62,6 +62,7 @@
|
||||
#include "UI_view2d.h"
|
||||
|
||||
#include "BLF_api.h"
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "ED_screen.h"
|
||||
|
||||
@ -318,7 +319,7 @@ static void ui_tooltip_region_draw_cb(const bContext *UNUSED(C), ARegion *ar)
|
||||
rcti bbox= data->bbox;
|
||||
int a;
|
||||
|
||||
ui_draw_menu_back(U.uistyles.first, NULL, &data->bbox);
|
||||
ui_draw_menu_back(UI_GetStyle(), NULL, &data->bbox);
|
||||
|
||||
/* draw text */
|
||||
uiStyleFontSet(&data->fstyle);
|
||||
@ -343,9 +344,10 @@ static void ui_tooltip_region_free_cb(ARegion *ar)
|
||||
ar->regiondata= NULL;
|
||||
}
|
||||
|
||||
#define TIP_(msgid) UI_translate_do_tooltip(msgid)
|
||||
ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first; // XXX pass on as arg
|
||||
uiStyle *style= UI_GetStyle();
|
||||
static ARegionType type;
|
||||
ARegion *ar;
|
||||
uiTooltipData *data;
|
||||
@ -374,7 +376,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
EnumPropertyItem *item;
|
||||
int i, totitem, free;
|
||||
|
||||
RNA_property_enum_items(C, &but->rnapoin, but->rnaprop, &item, &totitem, &free);
|
||||
RNA_property_enum_items_gettexted(C, &but->rnapoin, but->rnaprop, &item, &totitem, &free);
|
||||
|
||||
for(i=0; i<totitem; i++) {
|
||||
if(item[i].identifier[0] && item[i].value == (int)but->hardmax) {
|
||||
@ -403,7 +405,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
prop= (but->opptr)? but->opptr->data: NULL;
|
||||
|
||||
if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Shortcut: %s", buf);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Shortcut: %s")), buf);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -413,7 +415,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
/* full string */
|
||||
ui_get_but_string(but, buf, sizeof(buf));
|
||||
if(buf[0]) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Value: %s", buf);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Value: %s")), buf);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -425,7 +427,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
if (unit_type == PROP_UNIT_ROTATION) {
|
||||
if (RNA_property_type(but->rnaprop) == PROP_FLOAT) {
|
||||
float value= RNA_property_array_check(but->rnaprop) ? RNA_property_float_get_index(&but->rnapoin, but->rnaprop, but->rnaindex) : RNA_property_float_get(&but->rnapoin, but->rnaprop);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Radians: %f", value);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Radians: %f")), value);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -434,7 +436,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
if(but->flag & UI_BUT_DRIVEN) {
|
||||
if(ui_but_anim_expression_get(but, buf, sizeof(buf))) {
|
||||
/* expression */
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Expression: %s", buf);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Expression: %s")), buf);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -442,7 +444,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
|
||||
/* rna info */
|
||||
if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s.%s", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop));
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s.%s")), RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop));
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -450,7 +452,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
if(but->rnapoin.id.data) {
|
||||
ID *id= but->rnapoin.id.data;
|
||||
if(id->lib && id->lib->name) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Library: %s", id->lib->name);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Library: %s")), id->lib->name);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -465,7 +467,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
|
||||
/* operator info */
|
||||
if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s", str);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s")), str);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -479,7 +481,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
WM_operator_poll_context(C, but->optype, but->opcontext);
|
||||
poll_msg= CTX_wm_operator_poll_msg_get(C);
|
||||
if(poll_msg) {
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Disabled: %s", poll_msg);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Disabled: %s")), poll_msg);
|
||||
data->color[data->totline]= 0x6666ff; /* alert */
|
||||
data->totline++;
|
||||
}
|
||||
@ -489,7 +491,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
if ((U.flag & USER_TOOLTIPS_PYTHON) == 0) {
|
||||
if(but->menu_create_func && WM_menutype_contains((MenuType *)but->poin)) {
|
||||
MenuType *mt= (MenuType *)but->poin;
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s", mt->idname);
|
||||
BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), TIP_(N_("Python: %s")), mt->idname);
|
||||
data->color[data->totline]= 0x888888;
|
||||
data->totline++;
|
||||
}
|
||||
@ -608,6 +610,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
|
||||
return ar;
|
||||
}
|
||||
#undef TIP_
|
||||
|
||||
void ui_tooltip_free(bContext *C, ARegion *ar)
|
||||
{
|
||||
@ -985,7 +988,7 @@ static void ui_searchbox_region_free_cb(ARegion *ar)
|
||||
|
||||
ARegion *ui_searchbox_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first; // XXX pass on as arg
|
||||
uiStyle *style= UI_GetStyle();
|
||||
static ARegionType type;
|
||||
ARegion *ar;
|
||||
uiSearchboxData *data;
|
||||
@ -2299,7 +2302,7 @@ static uiBlock *ui_block_func_POPUP(bContext *C, uiPopupBlockHandle *handle, voi
|
||||
uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut *but, uiMenuCreateFunc menu_func, void *arg, char *str)
|
||||
{
|
||||
wmWindow *window= CTX_wm_window(C);
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiPopupBlockHandle *handle;
|
||||
uiPopupMenu *pup;
|
||||
|
||||
@ -2348,7 +2351,7 @@ uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut
|
||||
/* only return handler, and set optional title */
|
||||
uiPopupMenu *uiPupMenuBegin(bContext *C, const char *title, int icon)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiPopupMenu *pup= MEM_callocN(sizeof(uiPopupMenu), "popup menu");
|
||||
uiBut *but;
|
||||
|
||||
|
@ -47,6 +47,7 @@
|
||||
|
||||
|
||||
#include "BLF_api.h"
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
|
||||
@ -76,7 +77,7 @@
|
||||
|
||||
/* ********************************************** */
|
||||
|
||||
static uiStyle *ui_style_new(ListBase *styles, const char *name)
|
||||
static uiStyle *ui_style_new(ListBase *styles, const char *name, short uifont_id)
|
||||
{
|
||||
uiStyle *style= MEM_callocN(sizeof(uiStyle), "new style");
|
||||
|
||||
@ -85,7 +86,7 @@ static uiStyle *ui_style_new(ListBase *styles, const char *name)
|
||||
|
||||
style->panelzoom= 1.0; /* unused */
|
||||
|
||||
style->paneltitle.uifont_id= UIFONT_DEFAULT;
|
||||
style->paneltitle.uifont_id= uifont_id;
|
||||
style->paneltitle.points= 12;
|
||||
style->paneltitle.kerning= 1;
|
||||
style->paneltitle.shadow= 1;
|
||||
@ -94,7 +95,7 @@ static uiStyle *ui_style_new(ListBase *styles, const char *name)
|
||||
style->paneltitle.shadowalpha= 0.15f;
|
||||
style->paneltitle.shadowcolor= 1.0f;
|
||||
|
||||
style->grouplabel.uifont_id= UIFONT_DEFAULT;
|
||||
style->grouplabel.uifont_id= uifont_id;
|
||||
style->grouplabel.points= 12;
|
||||
style->grouplabel.kerning= 1;
|
||||
style->grouplabel.shadow= 3;
|
||||
@ -102,7 +103,7 @@ static uiStyle *ui_style_new(ListBase *styles, const char *name)
|
||||
style->grouplabel.shady= -1;
|
||||
style->grouplabel.shadowalpha= 0.25f;
|
||||
|
||||
style->widgetlabel.uifont_id= UIFONT_DEFAULT;
|
||||
style->widgetlabel.uifont_id= uifont_id;
|
||||
style->widgetlabel.points= 11;
|
||||
style->widgetlabel.kerning= 1;
|
||||
style->widgetlabel.shadow= 3;
|
||||
@ -111,7 +112,7 @@ static uiStyle *ui_style_new(ListBase *styles, const char *name)
|
||||
style->widgetlabel.shadowalpha= 0.15f;
|
||||
style->widgetlabel.shadowcolor= 1.0f;
|
||||
|
||||
style->widget.uifont_id= UIFONT_DEFAULT;
|
||||
style->widget.uifont_id= uifont_id;
|
||||
style->widget.points= 11;
|
||||
style->widget.kerning= 1;
|
||||
style->widget.shadowalpha= 0.25f;
|
||||
@ -251,11 +252,19 @@ void uiStyleFontDrawRotated(uiFontStyle *fs, rcti *rect, const char *str)
|
||||
}
|
||||
|
||||
/* ************** helpers ************************ */
|
||||
/* XXX: read a style configure */
|
||||
uiStyle* UI_GetStyle(void)
|
||||
{
|
||||
uiStyle *style = NULL;
|
||||
/* offset is two struct uiStyle pointers */
|
||||
/* style = BLI_findstring( &U.uistyles, "Unifont Style", sizeof(style)*2 ) */;
|
||||
return (style != NULL) ? style : U.uistyles.first;
|
||||
}
|
||||
|
||||
/* temporarily, does widget font */
|
||||
int UI_GetStringWidth(const char *str)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiFontStyle *fstyle= &style->widget;
|
||||
int width;
|
||||
|
||||
@ -274,7 +283,7 @@ int UI_GetStringWidth(const char *str)
|
||||
/* temporarily, does widget font */
|
||||
void UI_DrawString(float x, float y, const char *str)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
|
||||
if (style->widget.kerning == 1)
|
||||
BLF_enable(style->widget.uifont_id, BLF_KERNING_DEFAULT);
|
||||
@ -313,7 +322,17 @@ void uiStyleInit(void)
|
||||
for(font= U.uifonts.first; font; font= font->next) {
|
||||
|
||||
if(font->uifont_id==UIFONT_DEFAULT) {
|
||||
#ifdef INTERNATIONAL
|
||||
int unifont_size;
|
||||
unsigned char *unifont_ttf= BLF_get_unifont(&unifont_size);
|
||||
|
||||
if(unifont_ttf)
|
||||
font->blf_id= BLF_load_mem_unique("default", unifont_ttf, unifont_size);
|
||||
else
|
||||
font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
|
||||
#else
|
||||
font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
font->blf_id= BLF_load(font->filename);
|
||||
@ -337,7 +356,7 @@ void uiStyleInit(void)
|
||||
}
|
||||
|
||||
if(style==NULL) {
|
||||
ui_style_new(&U.uistyles, "Default Style");
|
||||
ui_style_new(&U.uistyles, "Default Style", UIFONT_DEFAULT );
|
||||
}
|
||||
|
||||
// XXX, this should be moved into a style, but for now best only load the monospaced font once.
|
||||
|
@ -68,6 +68,7 @@
|
||||
#include "interface_intern.h"
|
||||
|
||||
#include "BLF_api.h"
|
||||
#include "BLF_translation.h"
|
||||
|
||||
void UI_template_fix_linking(void)
|
||||
{
|
||||
@ -306,31 +307,31 @@ static const char *template_id_browse_tip(StructRNA *type)
|
||||
{
|
||||
if(type) {
|
||||
switch(RNA_type_to_ID_code(type)) {
|
||||
case ID_SCE: return "Browse Scene to be linked";
|
||||
case ID_OB: return "Browse Object to be linked";
|
||||
case ID_ME: return "Browse Mesh Data to be linked";
|
||||
case ID_CU: return "Browse Curve Data to be linked";
|
||||
case ID_MB: return "Browse MetaBall Data to be linked";
|
||||
case ID_MA: return "Browse Material to be linked";
|
||||
case ID_TE: return "Browse Texture to be linked";
|
||||
case ID_IM: return "Browse Image to be linked";
|
||||
case ID_LT: return "Browse Lattice Data to be linked";
|
||||
case ID_LA: return "Browse Lamp Data to be linked";
|
||||
case ID_CA: return "Browse Camera Data to be linked";
|
||||
case ID_WO: return "Browse World Settings to be linked";
|
||||
case ID_SCR: return "Choose Screen lay-out";
|
||||
case ID_TXT: return "Browse Text to be linked";
|
||||
case ID_SPK: return "Browse Speaker Data to be linked";
|
||||
case ID_SO: return "Browse Sound to be linked";
|
||||
case ID_AR: return "Browse Armature data to be linked";
|
||||
case ID_AC: return "Browse Action to be linked";
|
||||
case ID_NT: return "Browse Node Tree to be linked";
|
||||
case ID_BR: return "Browse Brush to be linked";
|
||||
case ID_PA: return "Browse Particle System to be linked";
|
||||
case ID_GD: return "Browse Grease Pencil Data to be linked";
|
||||
case ID_SCE: return N_("Browse Scene to be linked");
|
||||
case ID_OB: return N_("Browse Object to be linked");
|
||||
case ID_ME: return N_("Browse Mesh Data to be linked");
|
||||
case ID_CU: return N_("Browse Curve Data to be linked");
|
||||
case ID_MB: return N_("Browse MetaBall Data to be linked");
|
||||
case ID_MA: return N_("Browse Material to be linked");
|
||||
case ID_TE: return N_("Browse Texture to be linked");
|
||||
case ID_IM: return N_("Browse Image to be linked");
|
||||
case ID_LT: return N_("Browse Lattice Data to be linked");
|
||||
case ID_LA: return N_("Browse Lamp Data to be linked");
|
||||
case ID_CA: return N_("Browse Camera Data to be linked");
|
||||
case ID_WO: return N_("Browse World Settings to be linked");
|
||||
case ID_SCR: return N_("Choose Screen lay-out");
|
||||
case ID_TXT: return N_("Browse Text to be linked");
|
||||
case ID_SPK: return N_("Browse Speaker Data to be linked");
|
||||
case ID_SO: return N_("Browse Sound to be linked");
|
||||
case ID_AR: return N_("Browse Armature data to be linked");
|
||||
case ID_AC: return N_("Browse Action to be linked");
|
||||
case ID_NT: return N_("Browse Node Tree to be linked");
|
||||
case ID_BR: return N_("Browse Brush to be linked");
|
||||
case ID_PA: return N_("Browse Particle System to be linked");
|
||||
case ID_GD: return N_("Browse Grease Pencil Data to be linked");
|
||||
}
|
||||
}
|
||||
return "Browse ID data to be linked";
|
||||
return N_("Browse ID data to be linked");
|
||||
}
|
||||
|
||||
static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, const char *newop, const char *openop, const char *unlinkop)
|
||||
@ -355,7 +356,8 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
|
||||
if(flag & UI_ID_PREVIEWS) {
|
||||
|
||||
but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*6, UI_UNIT_Y*6, template_id_browse_tip(type));
|
||||
but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*6, UI_UNIT_Y*6,
|
||||
UI_translate_do_tooltip(template_id_browse_tip(type)));
|
||||
if(type) {
|
||||
but->icon= RNA_struct_ui_icon(type);
|
||||
if (id) but->icon = ui_id_icon_get(C, id, 1);
|
||||
@ -367,7 +369,8 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
uiLayoutRow(layout, 1);
|
||||
}
|
||||
else if(flag & UI_ID_BROWSE) {
|
||||
but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, template_id_browse_tip(type));
|
||||
but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y,
|
||||
UI_translate_do_tooltip(template_id_browse_tip(type)));
|
||||
if(type) {
|
||||
but->icon= RNA_struct_ui_icon(type);
|
||||
/* default dragging of icon for id browse buttons */
|
||||
@ -393,12 +396,12 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
if(id->lib) {
|
||||
if(id->flag & LIB_INDIRECT) {
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_LIBRARY_DATA_INDIRECT, 0,0,UI_UNIT_X,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
"Indirect library datablock, cannot change");
|
||||
UI_translate_do_tooltip(N_("Indirect library datablock, cannot change")));
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
}
|
||||
else {
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_LIBRARY_DATA_DIRECT, 0,0,UI_UNIT_X,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
"Direct linked library datablock, click to make local");
|
||||
UI_translate_do_tooltip(N_("Direct linked library datablock, click to make local")));
|
||||
if(!id_make_local(id, 1 /* test */) || (idfrom && idfrom->lib))
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
}
|
||||
@ -411,7 +414,8 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
|
||||
sprintf(str, "%d", id->us);
|
||||
|
||||
but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X + ((id->us < 10) ? 0:10), UI_UNIT_Y, NULL, 0, 0, 0, 0, "Displays number of users of this data, click to make a single-user copy");
|
||||
but= uiDefBut(block, BUT, 0, str, 0,0,UI_UNIT_X + ((id->us < 10) ? 0:10), UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(_("Displays number of users of this data. Click to make a single-user copy")));
|
||||
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ALONE));
|
||||
if(!id_copy(id, NULL, 1 /* test only */) || (idfrom && idfrom->lib) || !editable)
|
||||
@ -429,11 +433,11 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
int w= id?UI_UNIT_X: (flag & UI_ID_OPEN)? UI_UNIT_X*3: UI_UNIT_X*6;
|
||||
|
||||
if(newop) {
|
||||
but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": "New", 0, 0, w, UI_UNIT_Y, NULL);
|
||||
but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": UI_translate_do_iface(N_("New")), 0, 0, w, UI_UNIT_Y, NULL);
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW));
|
||||
}
|
||||
else {
|
||||
but= uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, (id)? "": "New", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
but= uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, (id)? "": _("New"), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW));
|
||||
}
|
||||
|
||||
@ -445,11 +449,11 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
int w= id?UI_UNIT_X: (flag & UI_ID_ADD_NEW)? UI_UNIT_X*3: UI_UNIT_X*6;
|
||||
|
||||
if(openop) {
|
||||
but= uiDefIconTextButO(block, BUT, openop, WM_OP_INVOKE_DEFAULT, ICON_FILESEL, (id)? "": "Open", 0, 0, w, UI_UNIT_Y, NULL);
|
||||
but= uiDefIconTextButO(block, BUT, openop, WM_OP_INVOKE_DEFAULT, ICON_FILESEL, (id)? "": UI_translate_do_iface(N_("Open")), 0, 0, w, UI_UNIT_Y, NULL);
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_OPEN));
|
||||
}
|
||||
else {
|
||||
but= uiDefIconTextBut(block, BUT, 0, ICON_FILESEL, (id)? "": "Open", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
but= uiDefIconTextBut(block, BUT, 0, ICON_FILESEL, (id)? "": UI_translate_do_iface(N_("Open")), 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_OPEN));
|
||||
}
|
||||
|
||||
@ -465,7 +469,8 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
|
||||
uiButSetNFunc(but, NULL, MEM_dupallocN(template), NULL);
|
||||
}
|
||||
else {
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Unlink datablock. Shift + Click to set users to zero, data will then not be saved");
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Unlink datablock. Shift + Click to set users to zero, data will then not be saved")));
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_DELETE));
|
||||
|
||||
if(RNA_property_flag(template->prop) & PROP_NEVER_NULL)
|
||||
@ -722,7 +727,8 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
|
||||
sprintf(str, "%s parent deform", md->name);
|
||||
uiDefBut(block, LABEL, 0, str, 0, 0, 185, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Modifier name");
|
||||
|
||||
but = uiDefBut(block, BUT, 0, "Make Real", 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Convert virtual modifier to a real modifier");
|
||||
but = uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Make Real")), 0, 0, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0,
|
||||
UI_translate_do_tooltip(N_("Convert virtual modifier to a real modifier")));
|
||||
uiButSetFunc(but, modifiers_convertToReal, ob, md);
|
||||
}
|
||||
else {
|
||||
@ -756,7 +762,8 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
|
||||
if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex))
|
||||
{
|
||||
/* -- convert to rna ? */
|
||||
but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
|
||||
but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0,
|
||||
UI_translate_do_tooltip(N_("Apply modifier to editing cage during Editmode")));
|
||||
if (index < cageIndex)
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
uiButSetFunc(but, modifiers_setOnCage, ob, md);
|
||||
@ -768,7 +775,8 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
|
||||
if (ELEM3(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) {
|
||||
/* add disabled pre-tesselated button, so users could have
|
||||
message for this modifiers */
|
||||
but = uiDefIconButBitI(block, TOG, eModifierMode_ApplyOnSpline, 0, ICON_SURFACE_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "This modifier could be applied on splines' points only");
|
||||
but = uiDefIconButBitI(block, TOG, eModifierMode_ApplyOnSpline, 0, ICON_SURFACE_DATA, 0, 0, UI_UNIT_X-2, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0,
|
||||
UI_translate_do_tooltip(N_("This modifier could be applied on splines' points only")));
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
} else if (mti->type != eModifierTypeType_Constructive) {
|
||||
/* constructive modifiers tesselates curve before applying */
|
||||
@ -818,17 +826,17 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
|
||||
}
|
||||
else {
|
||||
uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT);
|
||||
uiItemEnumO(row, "OBJECT_OT_modifier_apply", "Apply", 0, "apply_as", MODIFIER_APPLY_DATA);
|
||||
uiItemEnumO(row, "OBJECT_OT_modifier_apply", UI_translate_do_iface(N_("Apply")), 0, "apply_as", MODIFIER_APPLY_DATA);
|
||||
|
||||
if (modifier_sameTopology(md))
|
||||
uiItemEnumO(row, "OBJECT_OT_modifier_apply", "Apply as Shape", 0, "apply_as", MODIFIER_APPLY_SHAPE);
|
||||
uiItemEnumO(row, "OBJECT_OT_modifier_apply", UI_translate_do_iface(N_("Apply as Shape")), 0, "apply_as", MODIFIER_APPLY_SHAPE);
|
||||
}
|
||||
|
||||
uiBlockClearButLock(block);
|
||||
uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
|
||||
|
||||
if (!ELEM5(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth, eModifierType_Smoke))
|
||||
uiItemO(row, "Copy", ICON_NONE, "OBJECT_OT_modifier_copy");
|
||||
uiItemO(row, UI_translate_do_tooltip(N_("Copy")), ICON_NONE, "OBJECT_OT_modifier_copy");
|
||||
}
|
||||
|
||||
/* result is the layout block inside the box, that we return so that modifier settings can be drawn */
|
||||
@ -1005,8 +1013,8 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con)
|
||||
uiBlockSetEmboss(block, UI_EMBOSSN);
|
||||
|
||||
/* draw a ghost icon (for proxy) and also a lock beside it, to show that constraint is "proxy locked" */
|
||||
uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_GHOST, xco+244, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Proxy Protected");
|
||||
uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_LOCKED, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Proxy Protected");
|
||||
uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_GHOST, xco+244, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Proxy Protected")));
|
||||
uiDefIconBut(block, BUT, B_CONSTRAINT_TEST, ICON_LOCKED, xco+262, yco, 19, 19, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Proxy Protected")));
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSS);
|
||||
}
|
||||
@ -1192,14 +1200,14 @@ void uiTemplatePreview(uiLayout *layout, ID *id, int show_buttons, ID *parent, M
|
||||
RNA_pointer_create(id, &RNA_Texture, tex, &texture_ptr);
|
||||
|
||||
uiLayoutRow(layout, 1);
|
||||
uiDefButS(block, ROW, B_MATPRV, "Texture", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_TEXTURE, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Texture")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_TEXTURE, 0, 0, "");
|
||||
if(GS(parent->name) == ID_MA)
|
||||
uiDefButS(block, ROW, B_MATPRV, "Material", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Material")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
else if(GS(parent->name) == ID_LA)
|
||||
uiDefButS(block, ROW, B_MATPRV, "Lamp", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Lamp")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
else if(GS(parent->name) == ID_WO)
|
||||
uiDefButS(block, ROW, B_MATPRV, "World", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, "Both", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_BOTH, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("World")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, "");
|
||||
uiDefButS(block, ROW, B_MATPRV, UI_translate_do_iface(N_("Both")), 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_BOTH, 0, 0, "");
|
||||
|
||||
/* Alpha buton for texture preview */
|
||||
if(*pr_texture!=TEX_PR_OTHER) {
|
||||
@ -1290,21 +1298,23 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand
|
||||
|
||||
if(coba==NULL) return;
|
||||
|
||||
bt= uiDefBut(block, BUT, 0, "Add", 0+xoffs,line1_y,40,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Add a new color stop to the colorband");
|
||||
bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Add")), 0+xoffs,line1_y,40,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Add a new color stop to the colorband")));
|
||||
uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba);
|
||||
|
||||
bt= uiDefBut(block, BUT, 0, "Delete", 45+xoffs,line1_y,45,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Delete the active position");
|
||||
bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Delete")), 45+xoffs,line1_y,45,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Delete the active position")));
|
||||
uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba);
|
||||
|
||||
|
||||
/* XXX, todo for later - convert to operator - campbell */
|
||||
bt= uiDefBut(block, BUT, 0, "F", 95+xoffs,line1_y,20,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Flip colorband");
|
||||
bt= uiDefBut(block, BUT, 0, "F", 95+xoffs,line1_y,20,UI_UNIT_Y, NULL, 0, 0, 0, 0, UI_translate_do_tooltip(N_("Flip colorband")));
|
||||
uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba);
|
||||
|
||||
uiDefButS(block, NUM, 0, "", 120+xoffs,line1_y,80, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, "Choose active color stop");
|
||||
uiDefButS(block, NUM, 0, "", 120+xoffs,line1_y,80, UI_UNIT_Y, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, UI_translate_do_tooltip(N_("Choose active color stop")));
|
||||
|
||||
bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4",
|
||||
210+xoffs, line1_y, 90, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, "Set interpolation between color stops");
|
||||
bt= uiDefButS(block, MENU, 0, UI_translate_do_iface(N_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4")),
|
||||
210+xoffs, line1_y, 90, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, UI_translate_do_tooltip(N_("Set interpolation between color stops")));
|
||||
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
|
||||
uiBlockEndAlign(block);
|
||||
|
||||
@ -1333,11 +1343,13 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand
|
||||
float xs= butr->xmin;
|
||||
|
||||
uiBlockBeginAlign(block);
|
||||
bt= uiDefBut(block, BUT, 0, "Add", xs,butr->ymin+UI_UNIT_Y,2.0f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Add a new color stop to the colorband");
|
||||
bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Add")), xs,butr->ymin+UI_UNIT_Y,2.0f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Add a new color stop to the colorband")));
|
||||
uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba);
|
||||
bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+UI_UNIT_Y,1.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Delete the active position");
|
||||
bt= uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Delete")), xs+2.0f*unit,butr->ymin+UI_UNIT_Y,1.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Delete the active position")));
|
||||
uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba);
|
||||
bt= uiDefBut(block, BUT, 0, "F", xs+3.5f*unit,butr->ymin+UI_UNIT_Y,0.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, "Flip the color ramp");
|
||||
bt= uiDefBut(block, BUT, 0, "F", xs+3.5f*unit,butr->ymin+UI_UNIT_Y,0.5f*unit,UI_UNIT_Y, NULL, 0, 0, 0, 0, UI_translate_do_tooltip(N_("Flip the color ramp")));
|
||||
uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba);
|
||||
uiBlockEndAlign(block);
|
||||
|
||||
@ -1348,8 +1360,9 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand
|
||||
uiItemR(layout, &ptr, "color", 0, "", ICON_NONE);
|
||||
}
|
||||
|
||||
bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4",
|
||||
xs+10.0f*unit, butr->ymin+UI_UNIT_Y, unit*4, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0, "Set interpolation between color stops");
|
||||
bt= uiDefButS(block, MENU, 0, UI_translate_do_tooltip(N_("Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4")),
|
||||
xs+10.0f*unit, butr->ymin+UI_UNIT_Y, unit*4, UI_UNIT_Y, &coba->ipotype, 0.0, 0.0, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Set interpolation between color stops")));
|
||||
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
|
||||
|
||||
bt= uiDefBut(block, BUT_COLORBAND, 0, "", xs,butr->ymin,butr->xmax-butr->xmin,UI_UNIT_Y, coba, 0, 0, 0, 0, "");
|
||||
@ -1600,10 +1613,10 @@ static uiBlock *curvemap_clipping_func(bContext *C, struct ARegion *ar, void *cu
|
||||
uiButSetFunc(bt, curvemap_buttons_setclip, cumap, NULL);
|
||||
|
||||
uiBlockBeginAlign(block);
|
||||
uiDefButF(block, NUM, 0, "Min X ", 0,4*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmin, -100.0, cumap->clipr.xmax, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, "Min Y ", 0,3*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymin, -100.0, cumap->clipr.ymax, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, "Max X ", 0,2*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmax, cumap->clipr.xmin, 100.0, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, "Max Y ", 0,UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymax, cumap->clipr.ymin, 100.0, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Min X ")), 0,4*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmin, -100.0, cumap->clipr.xmax, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Min Y ")), 0,3*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymin, -100.0, cumap->clipr.ymax, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Max X ")), 0,2*UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.xmax, cumap->clipr.xmin, 100.0, 10, 0, "");
|
||||
uiDefButF(block, NUM, 0, UI_translate_do_iface(N_("Max Y ")), 0,UI_UNIT_Y,width,UI_UNIT_Y, &cumap->clipr.ymax, cumap->clipr.ymin, 100.0, 10, 0, "");
|
||||
|
||||
uiBlockSetDirection(block, UI_RIGHT);
|
||||
|
||||
@ -1652,12 +1665,12 @@ static uiBlock *curvemap_tools_func(bContext *C, struct ARegion *ar, void *cumap
|
||||
block= uiBeginBlock(C, ar, "curvemap_tools_func", UI_EMBOSS);
|
||||
uiBlockSetButmFunc(block, curvemap_tools_dofunc, cumap_v);
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset View", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vector Handle", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Auto Handle", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Horizontal", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 4, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Extend Extrapolated", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 5, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset Curve", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset View")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Vector Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Auto Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Extend Horizontal")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 4, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Extend Extrapolated")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 5, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset Curve")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiBlockSetDirection(block, UI_RIGHT);
|
||||
uiTextBoundsBlock(block, 50);
|
||||
@ -1674,10 +1687,10 @@ static uiBlock *curvemap_brush_tools_func(bContext *C, struct ARegion *ar, void
|
||||
block= uiBeginBlock(C, ar, "curvemap_tools_func", UI_EMBOSS);
|
||||
uiBlockSetButmFunc(block, curvemap_tools_dofunc, cumap_v);
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset View", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vector Handle", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Auto Handle", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset Curve", 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset View")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 1, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Vector Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 2, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Auto Handle")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, UI_translate_do_iface(N_("Reset Curve")), 0, yco-=UI_UNIT_Y, menuwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiBlockSetDirection(block, UI_RIGHT);
|
||||
uiTextBoundsBlock(block, 50);
|
||||
@ -1794,24 +1807,24 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSSN);
|
||||
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMIN, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, "Zoom in");
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMIN, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Zoom in")));
|
||||
uiButSetFunc(bt, curvemap_buttons_zoom_in, cumap, NULL);
|
||||
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMOUT, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, "Zoom out");
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_ZOOMOUT, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Zoom out")));
|
||||
uiButSetFunc(bt, curvemap_buttons_zoom_out, cumap, NULL);
|
||||
|
||||
if(brush)
|
||||
bt= uiDefIconBlockBut(block, curvemap_brush_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, "Tools");
|
||||
bt= uiDefIconBlockBut(block, curvemap_brush_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Tools")));
|
||||
else
|
||||
bt= uiDefIconBlockBut(block, curvemap_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, "Tools");
|
||||
bt= uiDefIconBlockBut(block, curvemap_tools_func, cumap, 0, ICON_MODIFIER, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Tools")));
|
||||
|
||||
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
|
||||
|
||||
if(cumap->flag & CUMA_DO_CLIP) icon= ICON_CLIPUV_HLT; else icon= ICON_CLIPUV_DEHLT;
|
||||
bt= uiDefIconBlockBut(block, curvemap_clipping_func, cumap, 0, icon, 0, 0, dx, dx, "Clipping Options");
|
||||
bt= uiDefIconBlockBut(block, curvemap_clipping_func, cumap, 0, icon, 0, 0, dx, dx, UI_translate_do_tooltip(N_("Clipping Options")));
|
||||
uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL);
|
||||
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, "Delete points");
|
||||
bt= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, dx, dx, NULL, 0.0, 0.0, 0.0, 0.0, UI_translate_do_tooltip(N_("Delete points")));
|
||||
uiButSetNFunc(bt, curvemap_buttons_delete, MEM_dupallocN(cb), cumap);
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSS);
|
||||
@ -1830,7 +1843,8 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe
|
||||
uiItemR(uiLayoutColumn(split, 0), ptr, "white_level", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
||||
|
||||
uiLayoutRow(layout, 0);
|
||||
bt=uiDefBut(block, BUT, 0, "Reset", 0, 0, UI_UNIT_X*10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Reset Black/White point and curves");
|
||||
bt=uiDefBut(block, BUT, 0, UI_translate_do_iface(N_("Reset")), 0, 0, UI_UNIT_X*10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Reset Black/White point and curves")));
|
||||
uiButSetNFunc(bt, curvemap_buttons_reset, MEM_dupallocN(cb), cumap);
|
||||
}
|
||||
|
||||
@ -2449,16 +2463,18 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C)
|
||||
(void)ui_abs; // UNUSED
|
||||
|
||||
uiDefIconBut(block, BUT, handle_event, ICON_PANEL_CLOSE,
|
||||
0, UI_UNIT_Y*0.1, UI_UNIT_X*0.8, UI_UNIT_Y*0.8, NULL, 0.0f, 0.0f, 0, 0, "Stop this job");
|
||||
0, UI_UNIT_Y*0.1, UI_UNIT_X*0.8, UI_UNIT_Y*0.8, NULL, 0.0f, 0.0f, 0, 0, UI_translate_do_tooltip(N_("Stop this job")));
|
||||
uiDefBut(block, PROGRESSBAR, 0, WM_jobs_name(wm, owner),
|
||||
UI_UNIT_X, 0, 100, UI_UNIT_Y, NULL, 0.0f, 0.0f, WM_jobs_progress(wm, owner), 0, "Progress");
|
||||
UI_UNIT_X, 0, 100, UI_UNIT_Y, NULL, 0.0f, 0.0f, WM_jobs_progress(wm, owner), 0, UI_translate_do_tooltip(N_("Progress")));
|
||||
|
||||
uiLayoutRow(layout, 0);
|
||||
}
|
||||
if(WM_jobs_test(wm, screen))
|
||||
uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_CANCEL, "Capture", 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop screencast");
|
||||
uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_CANCEL, UI_translate_do_iface(N_("Capture")), 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Stop screencast")));
|
||||
if(screen->animtimer)
|
||||
uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_CANCEL, "Anim Player", 0,0,100,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop animation playback");
|
||||
uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_CANCEL, UI_translate_do_tooltip(N_("Anim Player")), 0,0,100,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0,
|
||||
UI_translate_do_tooltip(N_("Stop animation playback")));
|
||||
}
|
||||
|
||||
/************************* Reports for Last Operator Template **************************/
|
||||
@ -2520,7 +2536,7 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
|
||||
uiBlockSetEmboss(block, UI_EMBOSSN);
|
||||
|
||||
if (reports->list.first != reports->list.last)
|
||||
uiDefIconButO(block, BUT, "UI_OT_reports_to_textblock", WM_OP_INVOKE_REGION_WIN, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, "Click to see rest of reports in textblock: 'Recent Reports'");
|
||||
uiDefIconButO(block, BUT, "UI_OT_reports_to_textblock", WM_OP_INVOKE_REGION_WIN, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, UI_translate_do_tooltip(N_("Click to see rest of reports in textblock: 'Recent Reports'")));
|
||||
else
|
||||
uiDefIconBut(block, LABEL, 0, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "");
|
||||
|
||||
|
@ -37,6 +37,8 @@
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
|
||||
|
||||
@ -114,7 +116,7 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
|
||||
}
|
||||
case PROP_COLLECTION: {
|
||||
char text[256];
|
||||
sprintf(text, "%d items", RNA_property_collection_length(ptr, prop));
|
||||
sprintf(text, UI_translate_do_iface(N_("%d items")), RNA_property_collection_length(ptr, prop));
|
||||
but= uiDefBut(block, LABEL, 0, text, x1, y1, x2, y2, NULL, 0, 0, 0, 0, NULL);
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
break;
|
||||
|
@ -168,7 +168,7 @@ static void view2d_masks(View2D *v2d)
|
||||
void UI_view2d_region_reinit(View2D *v2d, short type, int winx, int winy)
|
||||
{
|
||||
short tot_changed= 0, init= 0;
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
|
||||
/* initialise data if there is a need for such */
|
||||
if ((v2d->flag & V2D_IS_INITIALISED) == 0) {
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "ED_screen.h"
|
||||
|
||||
#include "UI_view2d.h"
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "PIL_time.h" /* USER_ZOOM_CONT */
|
||||
|
||||
@ -1587,7 +1588,7 @@ static void VIEW2D_OT_scroller_activate(wmOperatorType *ot)
|
||||
|
||||
static int reset_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
View2D *v2d= &ar->v2d;
|
||||
int winx, winy;
|
||||
|
@ -43,6 +43,8 @@
|
||||
#include "BLI_rand.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_screen.h"
|
||||
@ -1347,7 +1349,7 @@ void ED_area_prevspace(bContext *C, ScrArea *sa)
|
||||
|
||||
static const char *editortype_pup(void)
|
||||
{
|
||||
return(
|
||||
const char *types= N_(
|
||||
"Editor type:%t"
|
||||
"|3D View %x1"
|
||||
|
||||
@ -1382,6 +1384,8 @@ static const char *editortype_pup(void)
|
||||
|
||||
"|Python Console %x18"
|
||||
);
|
||||
|
||||
return UI_translate_do_iface(types);
|
||||
}
|
||||
|
||||
static void spacefunc(struct bContext *C, void *UNUSED(arg1), void *UNUSED(arg2))
|
||||
@ -1403,8 +1407,7 @@ int ED_area_header_switchbutton(const bContext *C, uiBlock *block, int yco)
|
||||
but= uiDefIconTextButC(block, ICONTEXTROW, 0, ICON_VIEW3D,
|
||||
editortype_pup(), xco, yco, UI_UNIT_X+10, UI_UNIT_Y,
|
||||
&(sa->butspacetype), 1.0, SPACEICONMAX, 0, 0,
|
||||
"Displays current editor type. "
|
||||
"Click for menu of available types");
|
||||
UI_translate_do_tooltip(N_("Displays current editor type. Click for menu of available types")));
|
||||
uiButSetFunc(but, spacefunc, NULL, NULL);
|
||||
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
|
||||
|
||||
@ -1449,7 +1452,7 @@ int ED_area_header_standardbuttons(const bContext *C, uiBlock *block, int yco)
|
||||
void ED_region_panels(const bContext *C, ARegion *ar, int vertical, const char *context, int contextnr)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiBlock *block;
|
||||
PanelType *pt;
|
||||
Panel *panel;
|
||||
@ -1637,7 +1640,7 @@ void ED_region_panels_init(wmWindowManager *wm, ARegion *ar)
|
||||
|
||||
void ED_region_header(const bContext *C, ARegion *ar)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiBlock *block;
|
||||
uiLayout *layout;
|
||||
HeaderType *ht;
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
|
@ -3,7 +3,7 @@ Import ('env')
|
||||
|
||||
sources = env.Glob('*.c')
|
||||
|
||||
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
|
||||
incs = '../include ../../blenfont ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
|
||||
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
|
||||
incs += ' ../../makesrna ../../render/extern/include ../../blenloader'
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
|
||||
@ -124,24 +125,23 @@ void buttons_header_buttons(const bContext *C, ARegion *ar)
|
||||
|
||||
#define BUTTON_HEADER_CTX(_ctx, _icon, _tip) \
|
||||
if(sbuts->pathflag & (1<<_ctx)) { \
|
||||
but= uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco+=BUT_UNIT_X, yco, BUT_UNIT_X, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, _tip); \
|
||||
but= uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco+=BUT_UNIT_X, yco, BUT_UNIT_X, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, UI_translate_do_tooltip(_tip)); \
|
||||
uiButClearFlag(but, UI_BUT_UNDO); \
|
||||
} \
|
||||
|
||||
|
||||
BUTTON_HEADER_CTX(BCONTEXT_RENDER, ICON_SCENE, "Render")
|
||||
BUTTON_HEADER_CTX(BCONTEXT_SCENE, ICON_SCENE_DATA, "Scene");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_WORLD, ICON_WORLD, "World");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_OBJECT, ICON_OBJECT_DATA, "Object");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_CONSTRAINT, ICON_CONSTRAINT, "Object Constraints");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_MODIFIER, ICON_MODIFIER, "Object Modifiers");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_DATA, sbuts->dataicon, "Object Data");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_BONE, ICON_BONE_DATA, "Bone");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_BONE_CONSTRAINT, ICON_CONSTRAINT_BONE, "Bone Constraints");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_MATERIAL, ICON_MATERIAL, "Material");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_TEXTURE, ICON_TEXTURE, "Textures");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_PARTICLE, ICON_PARTICLES, "Particles");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_PHYSICS, ICON_PHYSICS, "Physics");
|
||||
BUTTON_HEADER_CTX(BCONTEXT_RENDER, ICON_SCENE, N_("Render"))
|
||||
BUTTON_HEADER_CTX(BCONTEXT_SCENE, ICON_SCENE_DATA, N_("Scene"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_WORLD, ICON_WORLD, N_("World"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_OBJECT, ICON_OBJECT_DATA, N_("Object"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_CONSTRAINT, ICON_CONSTRAINT, N_("Object Constraints"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_MODIFIER, ICON_MODIFIER, N_("Object Modifiers"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_DATA, sbuts->dataicon, N_("Object Data"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_BONE, ICON_BONE_DATA, N_("Bone"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_BONE_CONSTRAINT, ICON_CONSTRAINT_BONE, N_("Bone Constraints"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_MATERIAL, ICON_MATERIAL, N_("Material"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_TEXTURE, ICON_TEXTURE, N_("Textures"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_PARTICLE, ICON_PARTICLES, N_("Particles"));
|
||||
BUTTON_HEADER_CTX(BCONTEXT_PHYSICS, ICON_PHYSICS, N_("Physics"));
|
||||
|
||||
#undef BUTTON_HEADER_CTX
|
||||
|
||||
|
@ -50,6 +50,7 @@
|
||||
#include "BKE_main.h"
|
||||
|
||||
#include "BLF_api.h"
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
@ -181,7 +182,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
|
||||
but = uiDefButTextO(block, TEX, "FILE_OT_directory", 0, "",
|
||||
min_x, line1_y, line1_w-chan_offs, btn_h,
|
||||
params->dir, 0.0, (float)FILE_MAX-1, 0, 0,
|
||||
"File path");
|
||||
UI_translate_do_tooltip(N_("File path")));
|
||||
uiButSetCompleteFunc(but, autocomplete_directory, NULL);
|
||||
uiButSetFlag(but, UI_BUT_NO_UTF8);
|
||||
|
||||
@ -189,7 +190,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
|
||||
but = uiDefBut(block, TEX, B_FS_FILENAME, "",
|
||||
min_x, line2_y, line2_w-chan_offs, btn_h,
|
||||
params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0,
|
||||
overwrite_alert ?"File name, overwrite existing" : "File name");
|
||||
UI_translate_do_tooltip(overwrite_alert ?N_("File name, overwrite existing") : N_("File name")));
|
||||
uiButSetCompleteFunc(but, autocomplete_file, NULL);
|
||||
uiButSetFlag(but, UI_BUT_NO_UTF8);
|
||||
|
||||
@ -209,13 +210,13 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
|
||||
but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMOUT,
|
||||
min_x + line2_w + separator - chan_offs, line2_y,
|
||||
btn_fn_w, btn_h,
|
||||
"Decrement the filename number");
|
||||
UI_translate_do_tooltip(N_("Decrement the filename number")));
|
||||
RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", -1);
|
||||
|
||||
but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN,
|
||||
min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y,
|
||||
btn_fn_w, btn_h,
|
||||
"Increment the filename number");
|
||||
UI_translate_do_tooltip(N_("Increment the filename number")));
|
||||
RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", 1);
|
||||
uiBlockEndAlign(block);
|
||||
}
|
||||
@ -226,9 +227,9 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
|
||||
uiDefButO(block, BUT, "FILE_OT_execute", WM_OP_EXEC_REGION_WIN, params->title,
|
||||
max_x - loadbutton, line1_y, loadbutton, btn_h,
|
||||
params->title);
|
||||
uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, "Cancel",
|
||||
uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, UI_translate_do_iface(N_("Cancel")),
|
||||
max_x - loadbutton, line2_y, loadbutton, btn_h,
|
||||
"Cancel");
|
||||
UI_translate_do_tooltip(N_("Cancel")));
|
||||
}
|
||||
|
||||
uiEndBlock(C, block);
|
||||
@ -295,7 +296,7 @@ static void file_draw_icon(uiBlock *block, char *path, int sx, int sy, int icon,
|
||||
|
||||
static void file_draw_string(int sx, int sy, const char* string, float width, int height, short align)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiFontStyle fs = style->widgetlabel;
|
||||
rcti rect;
|
||||
char fname[FILE_MAXFILE];
|
||||
|
@ -37,6 +37,8 @@
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
#include "DNA_userdef_types.h"
|
||||
@ -144,7 +146,7 @@ static void file_panel_bookmarks(const bContext *C, Panel *pa)
|
||||
|
||||
if(sfile) {
|
||||
row= uiLayoutRow(pa->layout, 0);
|
||||
uiItemO(row, "Add", ICON_ZOOMIN, "file.bookmark_add");
|
||||
uiItemO(row, UI_translate_do_iface(N_("Add")), ICON_ZOOMIN, "file.bookmark_add");
|
||||
uiItemL(row, NULL, ICON_NONE);
|
||||
|
||||
file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, &sfile->bookmarknr, ICON_BOOKMARKS, 1, 0);
|
||||
|
@ -403,7 +403,7 @@ float file_shorten_string(char* string, float w, int front)
|
||||
|
||||
float file_string_width(const char* str)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiStyleFontSet(&style->widget);
|
||||
return BLF_width(style->widget.uifont_id, str);
|
||||
}
|
||||
@ -413,12 +413,12 @@ float file_font_pointsize(void)
|
||||
#if 0
|
||||
float s;
|
||||
char tmp[2] = "X";
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiStyleFontSet(&style->widget);
|
||||
s = BLF_height(style->widget.uifont_id, tmp);
|
||||
return style->widget.points;
|
||||
#else
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiStyle *style= UI_GetStyle();
|
||||
uiStyleFontSet(&style->widget);
|
||||
return style->widget.points * UI_DPI_FAC;
|
||||
#endif
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
|
@ -3,7 +3,7 @@ Import ('env')
|
||||
|
||||
sources = env.Glob('*.c')
|
||||
|
||||
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../makesrna ../../imbuf'
|
||||
incs = '../include ../../blenfont ../../blenlib ../../blenkernel ../../makesdna ../../makesrna ../../imbuf'
|
||||
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
|
||||
incs += ' #/intern/audaspace/intern ../../blenloader'
|
||||
|
||||
|
@ -46,6 +46,8 @@
|
||||
#include "BLI_rand.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_fcurve.h"
|
||||
@ -750,7 +752,8 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa)
|
||||
block= uiLayoutGetBlock(row);
|
||||
|
||||
// XXX for now, this will be a operator button which calls a 'add modifier' operator
|
||||
uiDefButO(block, BUT, "GRAPH_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, "Add Modifier", 10, 0, 150, 20, "Adds a new F-Curve Modifier for the active F-Curve");
|
||||
uiDefButO(block, BUT, "GRAPH_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, UI_translate_do_iface(N_("Add Modifier")), 10, 0, 150, 20,
|
||||
UI_translate_do_tooltip(N_("Adds a new F-Curve Modifier for the active F-Curve")));
|
||||
|
||||
/* copy/paste (as sub-row)*/
|
||||
row= uiLayoutRow(row, 1);
|
||||
|
@ -41,6 +41,8 @@
|
||||
#include "BLI_rand.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_screen.h"
|
||||
@ -278,7 +280,7 @@ static void recent_files_menu_draw(const bContext *UNUSED(C), Menu *menu)
|
||||
uiItemStringO(layout, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath);
|
||||
}
|
||||
} else {
|
||||
uiItemL(layout, "No Recent Files", ICON_NONE);
|
||||
uiItemL(layout, UI_translate_do_iface(N_("No Recent Files")), ICON_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,10 +21,11 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../interface
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
../../editors/interface
|
||||
../../makesdna
|
||||
../../makesrna
|
||||
../../windowmanager
|
||||
|
@ -4548,7 +4548,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
|
||||
/* ****************** Controllers ****************** */
|
||||
|
||||
xco= 420; yco= 170; width= 300;
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first);
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, UI_GetStyle());
|
||||
row = uiLayoutRow(layout, 1);
|
||||
|
||||
uiDefBlockBut(block, controller_menu, NULL, "Controllers", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
|
||||
@ -4651,7 +4651,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
|
||||
/* ****************** Sensors ****************** */
|
||||
|
||||
xco= 10; yco= 170; width= 340;
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first);
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, UI_GetStyle());
|
||||
row = uiLayoutRow(layout, 1);
|
||||
|
||||
uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
|
||||
@ -4717,7 +4717,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
|
||||
/* ****************** Actuators ****************** */
|
||||
|
||||
xco= 800; yco= 170; width= 340;
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first);
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, UI_GetStyle());
|
||||
row = uiLayoutRow(layout, 1);
|
||||
|
||||
uiDefBlockBut(block, actuator_menu, NULL, "Actuators", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
|
@ -3,7 +3,7 @@ Import ('env')
|
||||
|
||||
sources = env.Glob('*.c')
|
||||
|
||||
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../makesrna ../../imbuf'
|
||||
incs = '../include ../../blenfont ../../blenlib ../../blenkernel ../../makesdna ../../makesrna ../../imbuf'
|
||||
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include ../../blenloader'
|
||||
|
||||
env.BlenderLib ( 'bf_editors_space_nla', sources, Split(incs), [], libtype=['core'], priority=[85] )
|
||||
|
@ -45,6 +45,8 @@
|
||||
#include "BLI_editVert.h"
|
||||
#include "BLI_rand.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_nla.h"
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_screen.h"
|
||||
@ -446,7 +448,8 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa)
|
||||
|
||||
// XXX for now, this will be a operator button which calls a temporary 'add modifier' operator
|
||||
// FIXME: we need to set the only-active property so that this will only add modifiers for the active strip (not all selected)
|
||||
uiDefButO(block, BUT, "NLA_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, "Add Modifier", 10, 0, 150, 20, "Adds a new F-Modifier for the active NLA Strip");
|
||||
uiDefButO(block, BUT, "NLA_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, UI_translate_do_iface(N_("Add Modifier")), 10, 0, 150, 20,
|
||||
UI_translate_do_tooltip(N_("Adds a new F-Modifier for the active NLA Strip")));
|
||||
|
||||
/* copy/paste (as sub-row)*/
|
||||
row= uiLayoutRow(row, 1);
|
||||
|
@ -303,7 +303,7 @@ static void node_update_basis(const bContext *C, bNodeTree *ntree, bNode *node)
|
||||
RNA_pointer_create(&ntree->id, &RNA_Node, node, &ptr);
|
||||
|
||||
layout= uiBlockLayout(node->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL,
|
||||
locx+NODE_DYS, dy, node->butr.xmax, NODE_DY, U.uistyles.first);
|
||||
locx+NODE_DYS, dy, node->butr.xmax, NODE_DY, UI_GetStyle());
|
||||
|
||||
node->typeinfo->uifunc(layout, (bContext *)C, &ptr);
|
||||
|
||||
|
@ -44,6 +44,8 @@
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_screen.h"
|
||||
@ -216,6 +218,7 @@ static void node_add_menu(bContext *C, uiLayout *layout, void *arg_nodeclass)
|
||||
}
|
||||
}
|
||||
|
||||
#define IFACE_(msgid) UI_translate_do_iface(msgid)
|
||||
static void node_menu_add(const bContext *C, Menu *menu)
|
||||
{
|
||||
SpaceNode *snode= CTX_wm_space_node(C);
|
||||
@ -225,39 +228,40 @@ static void node_menu_add(const bContext *C, Menu *menu)
|
||||
uiLayoutSetActive(layout, 0);
|
||||
|
||||
if(snode->treetype==NTREE_SHADER) {
|
||||
uiItemMenuF(layout, "Input", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, "Output", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, "Color", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, "Vector", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
|
||||
uiItemMenuF(layout, "Convertor", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, "Group", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, "Dynamic", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC));
|
||||
uiItemMenuF(layout, "Layout", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Vector")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, IFACE_(N_("Dynamic")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_DYNAMIC));
|
||||
uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
}
|
||||
else if(snode->treetype==NTREE_COMPOSIT) {
|
||||
uiItemMenuF(layout, "Input", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, "Output", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, "Color", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, "Vector", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
|
||||
uiItemMenuF(layout, "Filter", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER));
|
||||
uiItemMenuF(layout, "Convertor", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, "Matte", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE));
|
||||
uiItemMenuF(layout, "Distort", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
|
||||
uiItemMenuF(layout, "Group", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, "Layout", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Vector")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_VECTOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Filter")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_FILTER));
|
||||
uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Matte")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_MATTE));
|
||||
uiItemMenuF(layout, IFACE_(N_("Distort")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
}
|
||||
else if(snode->treetype==NTREE_TEXTURE) {
|
||||
uiItemMenuF(layout, "Input", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, "Output", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, "Color", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, "Patterns", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN));
|
||||
uiItemMenuF(layout, "Textures", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE));
|
||||
uiItemMenuF(layout, "Convertor", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, "Distort", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
|
||||
uiItemMenuF(layout, "Group", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, "Layout", 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Input")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_INPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Output")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OUTPUT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Color")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_OP_COLOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Patterns")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_PATTERN));
|
||||
uiItemMenuF(layout, IFACE_(N_("Textures")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_TEXTURE));
|
||||
uiItemMenuF(layout, IFACE_(N_("Convertor")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_CONVERTOR));
|
||||
uiItemMenuF(layout, IFACE_(N_("Distort")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_DISTORT));
|
||||
uiItemMenuF(layout, IFACE_(N_("Group")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_GROUP));
|
||||
uiItemMenuF(layout, IFACE_(N_("Layout")), 0, node_add_menu, SET_INT_IN_POINTER(NODE_CLASS_LAYOUT));
|
||||
}
|
||||
}
|
||||
#undef IFACE_
|
||||
|
||||
void node_menus_register(void)
|
||||
{
|
||||
|
@ -47,6 +47,8 @@
|
||||
#include "BLI_editVert.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_effect.h"
|
||||
@ -269,16 +271,29 @@ void VIEW3D_OT_layers(wmOperatorType *ot)
|
||||
RNA_def_boolean(ot->srna, "toggle", 1, "Toggle", "Toggle the layer");
|
||||
}
|
||||
|
||||
static int modeselect_addmode(char *str, const char *title, int id, int icon)
|
||||
{
|
||||
static char formatstr[] = "|%s %%x%d %%i%d";
|
||||
|
||||
if(UI_translate_iface())
|
||||
return sprintf(str, formatstr, BLF_gettext(title), id, icon);
|
||||
else
|
||||
return sprintf(str, formatstr, title, id, icon);
|
||||
}
|
||||
|
||||
static char *view3d_modeselect_pup(Scene *scene)
|
||||
{
|
||||
Object *ob= OBACT;
|
||||
static char string[256];
|
||||
static char formatstr[] = "|%s %%x%d %%i%d";
|
||||
const char *title= N_("Mode: %%t");
|
||||
char *str = string;
|
||||
|
||||
str += sprintf(str, "Mode: %%t");
|
||||
if(U.transopts&USER_TR_IFACE)
|
||||
title= BLF_gettext(title);
|
||||
|
||||
sprintf(str, title);
|
||||
|
||||
str += sprintf(str, formatstr, "Object Mode", OB_MODE_OBJECT, ICON_OBJECT_DATA);
|
||||
str += modeselect_addmode(str, N_("Object Mode"), OB_MODE_OBJECT, ICON_OBJECT_DATA);
|
||||
|
||||
if(ob==NULL || ob->data==NULL) return string;
|
||||
if(ob->id.lib) return string;
|
||||
@ -289,31 +304,31 @@ static char *view3d_modeselect_pup(Scene *scene)
|
||||
|| (ob->type == OB_CURVE) || (ob->type == OB_SURF) || (ob->type == OB_FONT)
|
||||
|| (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) {
|
||||
|
||||
str += sprintf(str, formatstr, "Edit Mode", OB_MODE_EDIT, ICON_EDITMODE_HLT);
|
||||
str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT);
|
||||
}
|
||||
else if (ob->type == OB_ARMATURE) {
|
||||
if (ob->mode & OB_MODE_POSE)
|
||||
str += sprintf(str, formatstr, "Edit Mode", OB_MODE_EDIT|OB_MODE_POSE, ICON_EDITMODE_HLT);
|
||||
str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT|OB_MODE_POSE, ICON_EDITMODE_HLT);
|
||||
else
|
||||
str += sprintf(str, formatstr, "Edit Mode", OB_MODE_EDIT, ICON_EDITMODE_HLT);
|
||||
str += modeselect_addmode(str, N_("Edit Mode"), OB_MODE_EDIT, ICON_EDITMODE_HLT);
|
||||
}
|
||||
|
||||
if (ob->type == OB_MESH) {
|
||||
|
||||
str += sprintf(str, formatstr, "Sculpt Mode", OB_MODE_SCULPT, ICON_SCULPTMODE_HLT);
|
||||
str += sprintf(str, formatstr, "Vertex Paint", OB_MODE_VERTEX_PAINT, ICON_VPAINT_HLT);
|
||||
str += sprintf(str, formatstr, "Texture Paint", OB_MODE_TEXTURE_PAINT, ICON_TPAINT_HLT);
|
||||
str += sprintf(str, formatstr, "Weight Paint", OB_MODE_WEIGHT_PAINT, ICON_WPAINT_HLT);
|
||||
str += modeselect_addmode(str, N_("Sculpt Mode"), OB_MODE_SCULPT, ICON_SCULPTMODE_HLT);
|
||||
str += modeselect_addmode(str, N_("Vertex Paint"), OB_MODE_VERTEX_PAINT, ICON_VPAINT_HLT);
|
||||
str += modeselect_addmode(str, N_("Texture Paint"), OB_MODE_TEXTURE_PAINT, ICON_TPAINT_HLT);
|
||||
str += modeselect_addmode(str, N_("Weight Paint"), OB_MODE_WEIGHT_PAINT, ICON_WPAINT_HLT);
|
||||
}
|
||||
}
|
||||
|
||||
/* if active object is an armature */
|
||||
if (ob->type==OB_ARMATURE) {
|
||||
str += sprintf(str, formatstr, "Pose Mode", OB_MODE_POSE, ICON_POSE_HLT);
|
||||
str += modeselect_addmode(str, N_("Pose Mode"), OB_MODE_POSE, ICON_POSE_HLT);
|
||||
}
|
||||
|
||||
if (ob->particlesystem.first || modifiers_findByType(ob, eModifierType_Cloth) || modifiers_findByType(ob, eModifierType_Softbody)) {
|
||||
str += sprintf(str, formatstr, "Particle Mode", OB_MODE_PARTICLE_EDIT, ICON_PARTICLEMODE);
|
||||
str += modeselect_addmode(str, N_("Particle Mode"), OB_MODE_PARTICLE_EDIT, ICON_PARTICLEMODE);
|
||||
}
|
||||
(void)str;
|
||||
return (string);
|
||||
@ -455,6 +470,7 @@ void uiTemplateEditModeSelection(uiLayout *layout, struct bContext *C)
|
||||
}
|
||||
}
|
||||
|
||||
#define TIP_(msgid) UI_translate_do_tooltip(msgid)
|
||||
void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
|
||||
{
|
||||
bScreen *screen= CTX_wm_screen(C);
|
||||
@ -488,7 +504,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
|
||||
|
||||
uiBlockBeginAlign(block);
|
||||
uiDefIconTextButS(block, MENU, B_MODESELECT, object_mode_icon(v3d->modeselect), view3d_modeselect_pup(scene) ,
|
||||
0,0,126 * dpi_fac, UI_UNIT_Y, &(v3d->modeselect), 0, 0, 0, 0, "Mode");
|
||||
0,0,126 * dpi_fac, UI_UNIT_Y, &(v3d->modeselect), 0, 0, 0, 0, TIP_(N_("Mode")));
|
||||
uiBlockEndAlign(block);
|
||||
|
||||
/* Draw type */
|
||||
@ -522,11 +538,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
|
||||
block= uiLayoutGetBlock(row);
|
||||
|
||||
if(v3d->twflag & V3D_USE_MANIPULATOR) {
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode");
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Translate manipulator mode")));
|
||||
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode");
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Rotate manipulator mode")));
|
||||
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode");
|
||||
but= uiDefIconButBitC(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, 0,0,UI_UNIT_X,UI_UNIT_Y, &v3d->twtype, 1.0, 0.0, 0, 0, TIP_(N_("Scale manipulator mode")));
|
||||
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
|
||||
}
|
||||
|
||||
@ -534,8 +550,8 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
|
||||
v3d->twmode = 0;
|
||||
}
|
||||
|
||||
str_menu = BIF_menustringTransformOrientation(C, "Orientation");
|
||||
but= uiDefButC(block, MENU, B_MAN_MODE, str_menu,0,0,70 * dpi_fac, UI_UNIT_Y, &v3d->twmode, 0, 0, 0, 0, "Transform Orientation");
|
||||
str_menu = BIF_menustringTransformOrientation(C, N_("Orientation"));
|
||||
but= uiDefButC(block, MENU, B_MAN_MODE, str_menu,0,0,70 * dpi_fac, UI_UNIT_Y, &v3d->twmode, 0, 0, 0, 0, TIP_(N_("Transform Orientation")));
|
||||
uiButClearFlag(but, UI_BUT_UNDO); /* skip undo on screen buttons */
|
||||
MEM_freeN((void *)str_menu);
|
||||
}
|
||||
@ -555,4 +571,4 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
|
||||
|
||||
uiTemplateEditModeSelection(layout, C);
|
||||
}
|
||||
|
||||
#undef TIP_
|
||||
|
@ -48,6 +48,8 @@
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_ghash.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_idprop.h"
|
||||
#include "BKE_global.h"
|
||||
@ -80,7 +82,7 @@ static void view3d_panel_operator_redo_header(const bContext *C, Panel *pa)
|
||||
wmOperator *op= WM_operator_last_redo(C);
|
||||
|
||||
if(op) BLI_strncpy(pa->drawname, op->type->name, sizeof(pa->drawname));
|
||||
else BLI_strncpy(pa->drawname, "Operator", sizeof(pa->drawname));
|
||||
else BLI_strncpy(pa->drawname, N_("Operator"), sizeof(pa->drawname));
|
||||
}
|
||||
|
||||
static void view3d_panel_operator_redo_operator(const bContext *C, Panel *pa, wmOperator *op)
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
set(INC
|
||||
../include
|
||||
../../blenfont
|
||||
../../blenkernel
|
||||
../../blenlib
|
||||
../../blenloader
|
||||
|
@ -3,7 +3,7 @@ Import ('env')
|
||||
|
||||
sources = env.Glob('*.c')
|
||||
|
||||
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
|
||||
incs = '../include ../../blenfont ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
|
||||
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
|
||||
incs += ' ../../render/extern/include'
|
||||
incs += ' ../../gpu ../../makesrna ../../blenloader'
|
||||
|
@ -50,6 +50,8 @@
|
||||
#include "BLI_editVert.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BLF_translation.h"
|
||||
|
||||
//#include "BIF_editmesh.h"
|
||||
//#include "BIF_interface.h"
|
||||
//#include "BIF_space.h"
|
||||
@ -60,6 +62,8 @@
|
||||
|
||||
#include "RNA_define.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "transform.h"
|
||||
|
||||
/* *********************** TransSpace ************************** */
|
||||
@ -406,14 +410,18 @@ EnumPropertyItem *BIF_enumTransformOrientation(bContext *C)
|
||||
}
|
||||
|
||||
const char * BIF_menustringTransformOrientation(const bContext *C, const char *title) {
|
||||
char menu[] = "%t|Global%x0|Local%x1|Gimbal%x4|Normal%x2|View%x3";
|
||||
const char* menu = N_("%t|Global%x0|Local%x1|Gimbal%x4|Normal%x2|View%x3");
|
||||
ListBase *transform_spaces = &CTX_data_scene(C)->transform_spaces;
|
||||
TransformOrientation *ts;
|
||||
int i = V3D_MANIP_CUSTOM;
|
||||
char *str_menu, *p;
|
||||
|
||||
if(UI_translate_iface()) {
|
||||
title= BLF_gettext(title);
|
||||
menu= BLF_gettext(menu);
|
||||
}
|
||||
|
||||
|
||||
str_menu = MEM_callocN(strlen(menu) + strlen(title) + 1 + 40 * BIF_countTransformOrientation(C), "UserTransSpace from matrix");
|
||||
str_menu = MEM_callocN(strlen(menu) + strlen(title) + 1 + 40 * BIF_countTransformOrientation(C), UI_translate_do_tooltip(N_("UserTransSpace from matrix")));
|
||||
p = str_menu;
|
||||
|
||||
p += sprintf(str_menu, "%s", title);
|
||||
|
@ -510,8 +510,8 @@ extern UserDef U; /* from blenkernel blender.c */
|
||||
|
||||
/* transopts */
|
||||
#define USER_TR_TOOLTIPS (1 << 0)
|
||||
#define USER_TR_BUTTONS (1 << 1)
|
||||
#define USER_TR_MENUS (1 << 2)
|
||||
#define USER_TR_IFACE (1 << 1)
|
||||
/*#define USER_TR_MENUS (1 << 2) deprecated*/
|
||||
/*#define USER_TR_FILESELECT (1 << 3) deprecated*/
|
||||
/*#define USER_TR_TEXTEDIT (1 << 4) deprecated*/
|
||||
#define USER_DOTRANSLATE (1 << 5)
|
||||
|
@ -49,7 +49,10 @@ struct Scene;
|
||||
extern BlenderRNA BLENDER_RNA;
|
||||
extern StructRNA RNA_Action;
|
||||
extern StructRNA RNA_ActionConstraint;
|
||||
extern StructRNA RNA_ActionFCurves;
|
||||
extern StructRNA RNA_ActionGroup;
|
||||
extern StructRNA RNA_ActionGroups;
|
||||
extern StructRNA RNA_ActionPoseMarkers;
|
||||
extern StructRNA RNA_Actuator;
|
||||
extern StructRNA RNA_ActuatorSensor;
|
||||
extern StructRNA RNA_Addon;
|
||||
@ -190,6 +193,7 @@ extern StructRNA RNA_DelaySensor;
|
||||
extern StructRNA RNA_DisplaceModifier;
|
||||
extern StructRNA RNA_DistortedNoiseTexture;
|
||||
extern StructRNA RNA_DomainFluidSettings;
|
||||
extern StructRNA RNA_DopeSheet;
|
||||
extern StructRNA RNA_Driver;
|
||||
extern StructRNA RNA_DriverTarget;
|
||||
extern StructRNA RNA_DriverVariable;
|
||||
@ -260,11 +264,13 @@ extern StructRNA RNA_Key;
|
||||
extern StructRNA RNA_KeyConfig;
|
||||
extern StructRNA RNA_KeyMap;
|
||||
extern StructRNA RNA_KeyMapItem;
|
||||
extern StructRNA RNA_KeyMapItems;
|
||||
extern StructRNA RNA_KeyboardSensor;
|
||||
extern StructRNA RNA_Keyframe;
|
||||
extern StructRNA RNA_KeyingSet;
|
||||
extern StructRNA RNA_KeyingSetInfo;
|
||||
extern StructRNA RNA_KeyingSetPath;
|
||||
extern StructRNA RNA_KeyingSetsAll;
|
||||
extern StructRNA RNA_KinematicConstraint;
|
||||
extern StructRNA RNA_Lamp;
|
||||
extern StructRNA RNA_LampSkySettings;
|
||||
@ -552,6 +558,7 @@ extern StructRNA RNA_UnknownType;
|
||||
extern StructRNA RNA_UserPreferences;
|
||||
extern StructRNA RNA_UserPreferencesEdit;
|
||||
extern StructRNA RNA_UserPreferencesFilePaths;
|
||||
extern StructRNA RNA_UserPreferencesInput;
|
||||
extern StructRNA RNA_UserPreferencesSystem;
|
||||
extern StructRNA RNA_UserPreferencesView;
|
||||
extern StructRNA RNA_UserSolidLight;
|
||||
@ -573,13 +580,13 @@ extern StructRNA RNA_WipeSequence;
|
||||
extern StructRNA RNA_WoodTexture;
|
||||
extern StructRNA RNA_World;
|
||||
extern StructRNA RNA_WorldAmbientOcclusion;
|
||||
extern StructRNA RNA_WorldLighting;
|
||||
extern StructRNA RNA_WorldMistSettings;
|
||||
extern StructRNA RNA_WorldStarsSettings;
|
||||
extern StructRNA RNA_WorldTextureSlot;
|
||||
extern StructRNA RNA_XnorController;
|
||||
extern StructRNA RNA_XorController;
|
||||
|
||||
|
||||
/* Pointer
|
||||
*
|
||||
* These functions will fill in RNA pointers, this can be done in three ways:
|
||||
@ -689,6 +696,7 @@ int RNA_enum_name(EnumPropertyItem *item, const int value, const char **name);
|
||||
int RNA_enum_description(EnumPropertyItem *item, const int value, const char **description);
|
||||
|
||||
void RNA_property_enum_items(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free);
|
||||
void RNA_property_enum_items_gettexted(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free);
|
||||
int RNA_property_enum_value(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const char *identifier, int *value);
|
||||
int RNA_property_enum_identifier(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **identifier);
|
||||
int RNA_property_enum_name(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **name);
|
||||
|
@ -62,4 +62,7 @@ if env['OURPLATFORM'] == 'linux':
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
|
||||
incs += ' ' + env['BF_PTHREADS_INC']
|
||||
|
||||
if env['WITH_BF_INTERNATIONAL']:
|
||||
defs.append('INTERNATIONAL')
|
||||
|
||||
env.BlenderLib ( 'bf_rna', objs, Split(incs), defines=defs, libtype=['core','player'], priority = [165,20] )
|
||||
|
@ -219,6 +219,10 @@ if(WITH_OPENCOLLADA)
|
||||
add_definitions(-DWITH_COLLADA)
|
||||
endif()
|
||||
|
||||
if(WITH_INTERNATIONAL)
|
||||
add_definitions(-DINTERNATIONAL)
|
||||
endif()
|
||||
|
||||
# Build makesrna executable
|
||||
blender_include_dirs(
|
||||
.
|
||||
|
@ -98,6 +98,9 @@ if env['OURPLATFORM'] == 'linux':
|
||||
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
|
||||
incs += ' ' + env['BF_PTHREADS_INC']
|
||||
|
||||
if env['WITH_BF_INTERNATIONAL']:
|
||||
defs.append('INTERNATIONAL')
|
||||
|
||||
makesrna_tool.Append(CPPDEFINES=defs)
|
||||
|
||||
makesrna_tool.Append (CPPPATH = Split(incs))
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user