Merge from 2.5 rev 20515 through 20647.
authorArystanbek Dyussenov <arystan.d@gmail.com>
Fri, 5 Jun 2009 14:06:29 +0000 (14:06 +0000)
committerArystanbek Dyussenov <arystan.d@gmail.com>
Fri, 5 Jun 2009 14:06:29 +0000 (14:06 +0000)
172 files changed:
CMakeLists.txt
SConstruct
config/darwin-config.py
config/irix6-config.py
config/linux2-config.py
config/linuxcross-config.py
config/openbsd3-config.py
config/sunos5-config.py
config/win32-mingw-config.py
config/win32-vc-config.py
config/win64-vc-config.py
projectfiles_vc9/blender/blender.sln
projectfiles_vc9/blender/editors/ED_editors.vcproj
release/ui/buttons_data_armature.py
release/ui/buttons_data_bone.py
release/ui/buttons_data_camera.py
release/ui/buttons_data_curve.py
release/ui/buttons_data_empty.py
release/ui/buttons_data_lamp.py
release/ui/buttons_data_lattice.py
release/ui/buttons_data_mesh.py
release/ui/buttons_data_modifier.py
release/ui/buttons_data_text.py
release/ui/buttons_material.py
release/ui/buttons_object_constraint.py
release/ui/buttons_objects.py
release/ui/buttons_physic_cloth.py
release/ui/buttons_scene.py
release/ui/buttons_texture.py
release/ui/buttons_world.py
release/windows/installer/00.blender.nsi [deleted file]
release/windows/installer/00.checked.bmp [deleted file]
release/windows/installer/00.header.bmp [deleted file]
release/windows/installer/00.installer.adx [deleted file]
release/windows/installer/00.installer.ico [deleted file]
release/windows/installer/00.sconsblender.nsi [deleted file]
release/windows/installer/00.unchecked.bmp [deleted file]
release/windows/installer/01.installer.bmp [deleted file]
release/windows/installer/01.welcome.rtf [deleted file]
release/windows/installer/02.copyright.txt [deleted file]
release/windows/installer/03.readme.txt [deleted file]
release/windows/installer/04.folder.rtf [deleted file]
release/windows/installer/05.progress.rtf [deleted file]
release/windows/installer/06.complete.rtf [deleted file]
release/windows/installer/input/24bits-image.bmp [deleted file]
release/windows/publ_installer/00.installer.adx [deleted file]
release/windows/publ_installer/00.installer.ico [deleted file]
release/windows/publ_installer/01.installer.bmp [deleted file]
release/windows/publ_installer/01.welcome.rtf [deleted file]
release/windows/publ_installer/02.copyright.txt [deleted file]
release/windows/publ_installer/03.readme.txt [deleted file]
release/windows/publ_installer/04.folder.rtf [deleted file]
release/windows/publ_installer/05.progress.rtf [deleted file]
release/windows/publ_installer/06.complete.rtf [deleted file]
source/Makefile
source/blender/CMakeLists.txt
source/blender/Makefile
source/blender/SConscript
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/node.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/include/ED_fileselect.h
source/blender/editors/include/ED_object.h
source/blender/editors/include/UI_interface.h
source/blender/editors/include/UI_resources.h
source/blender/editors/include/UI_view2d.h
source/blender/editors/interface/interface.c
source/blender/editors/interface/interface_api.c
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/interface_panel.c
source/blender/editors/interface/interface_regions.c
source/blender/editors/interface/interface_style.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_utils.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/interface/view2d.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/object/editconstraint.c
source/blender/editors/object/object_intern.h
source/blender/editors/object/object_modifier.c
source/blender/editors/object/object_ops.c
source/blender/editors/preview/previewrender.c
source/blender/editors/screen/area.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/space_buttons/buttons_intern.h
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_file/file_draw.c
source/blender/editors/space_file/file_header.c
source/blender/editors/space_file/filelist.c
source/blender/editors/space_file/filelist.h
source/blender/editors/space_file/filesel.c
source/blender/editors/space_file/space_file.c
source/blender/editors/space_info/info_header.c
source/blender/editors/space_outliner/outliner.c
source/blender/editors/space_sequencer/sequencer_draw.c
source/blender/makesdna/DNA_space_types.h
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesdna/DNA_view3d_types.h
source/blender/makesrna/RNA_access.h
source/blender/makesrna/RNA_define.h
source/blender/makesrna/intern/makesrna.c
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_access.c
source/blender/makesrna/intern/rna_action.c
source/blender/makesrna/intern/rna_armature.c
source/blender/makesrna/intern/rna_brush.c
source/blender/makesrna/intern/rna_camera.c
source/blender/makesrna/intern/rna_constraint.c
source/blender/makesrna/intern/rna_curve.c
source/blender/makesrna/intern/rna_define.c
source/blender/makesrna/intern/rna_fcurve.c
source/blender/makesrna/intern/rna_group.c
source/blender/makesrna/intern/rna_image.c
source/blender/makesrna/intern/rna_internal.h
source/blender/makesrna/intern/rna_internal_types.h
source/blender/makesrna/intern/rna_key.c
source/blender/makesrna/intern/rna_lamp.c
source/blender/makesrna/intern/rna_lattice.c
source/blender/makesrna/intern/rna_main.c
source/blender/makesrna/intern/rna_material.c
source/blender/makesrna/intern/rna_mesh.c
source/blender/makesrna/intern/rna_meta.c
source/blender/makesrna/intern/rna_modifier.c
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_nodetree_types.h
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_rna.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_screen.c
source/blender/makesrna/intern/rna_scriptlink.c
source/blender/makesrna/intern/rna_sound.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_text.c
source/blender/makesrna/intern/rna_texture.c
source/blender/makesrna/intern/rna_ui.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/makesrna/intern/rna_vfont.c
source/blender/makesrna/intern/rna_wm.c
source/blender/makesrna/intern/rna_world.c
source/blender/render/CMakeLists.txt
source/blender/render/SConscript
source/blender/render/intern/source/Makefile
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c
source/blender/windowmanager/intern/wm_event_system.c
source/blender/windowmanager/intern/wm_operators.c
source/blender/windowmanager/wm_event_types.h
source/blender/yafray/CMakeLists.txt [deleted file]
source/blender/yafray/Makefile [deleted file]
source/blender/yafray/SConscript [deleted file]
source/blender/yafray/YafRay_Api.h [deleted file]
source/blender/yafray/intern/Makefile [deleted file]
source/blender/yafray/intern/api.cpp [deleted file]
source/blender/yafray/intern/export_File.cpp [deleted file]
source/blender/yafray/intern/export_File.h [deleted file]
source/blender/yafray/intern/export_Plugin.cpp [deleted file]
source/blender/yafray/intern/export_Plugin.h [deleted file]
source/blender/yafray/intern/yafexternal.cpp [deleted file]
source/blender/yafray/intern/yafexternal.h [deleted file]
source/blender/yafray/intern/yafray_Render.cpp [deleted file]
source/blender/yafray/intern/yafray_Render.h [deleted file]
source/nan_compile.mk
tools/btools.py

index f2bf65dfb57545e1645d3b6077e166625c087c08..3efaa82e1f33d6e0f4b0e3e78b32f43507a2b53c 100644 (file)
@@ -67,7 +67,6 @@ OPTION(WITH_OPENJPEG          "Enable OpenJpeg Support (http://www.openjpeg.org/)"    OFF)
 OPTION(WITH_OPENAL             "Enable OpenAL Support (http://www.openal.org)"         ON)
 OPTION(WITH_OPENMP             "Enable OpenMP (has to be supported by the compiler)"   OFF)
 OPTION(WITH_WEBPLUGIN          "Enable Web Plugin (Unix only)"                         OFF)
-OPTION(WITH_YAFRAY             "Enable Yafray (Renderer)"                              OFF)
 
 IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
   MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE")
index f7986ec878964704a2d43072b7d328c7cb217b46..125594f69c5c26bbcd1a1ee4369941d8a1079689 100644 (file)
@@ -279,7 +279,6 @@ if 'blenderlite' in B.targets:
        target_env_defs['WITH_BF_OPENJPEG'] = False
        target_env_defs['WITH_BF_FFMPEG'] = False
        target_env_defs['WITH_BF_QUICKTIME'] = False
-       target_env_defs['WITH_BF_YAFRAY'] = False
        target_env_defs['WITH_BF_REDCODE'] = False
        target_env_defs['WITH_BF_DDS'] = False
        target_env_defs['WITH_BF_ZLIB'] = False
index 78a8c71b7ddfe1d665d70f50acdaba4dbae1c58a..080820f885a0b7ecfbc5793ffe303714c2167e42 100644 (file)
@@ -155,8 +155,6 @@ BF_SOLID = '#extern/solid'
 BF_SOLID_INC = '${BF_SOLID}'
 BF_SOLID_LIB = 'extern_solid'
 
-WITH_BF_YAFRAY = True
-
 #WITH_BF_NSPR = True
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index 1ef271b50749ecd528c43546d16fb2c7628a4923..a927dfb12be78f5c83ee8311eafc930a2da2ce7c 100644 (file)
@@ -93,8 +93,6 @@ BF_SOLID = '#extern/solid'
 BF_SOLID_INC = '${BF_SOLID}'
 BF_SOLID_LIB = 'extern_solid'
 
-WITH_BF_YAFRAY = 'true'
-
 #WITH_BF_NSPR = 'true'
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index eb93d8084f172398d80d207d6ab25bf0a95f219f..f57124327940b83f01d415efc68e77e75130ec2b 100644 (file)
@@ -87,8 +87,6 @@ BF_SOLID = '#extern/solid'
 BF_SOLID_INC = '${BF_SOLID}'
 BF_SOLID_LIB = 'extern_solid'
 
-WITH_BF_YAFRAY = True
-
 #WITH_BF_NSPR = True
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index 4b17224eacc488f9c4d9c3c5aefee13f34a5498f..2f15ef67e6ccb4ed8e415007248b8db9c3a85c36 100644 (file)
@@ -1,8 +1,6 @@
 LCGDIR = '#../lib/windows'
 LIBDIR = '${LCGDIR}'
 
-WITH_BF_YAFRAY = True
-
 BF_PYTHON = LIBDIR + '/python'
 BF_PYTHON_VERSION = '2.5'
 BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
index 6a7518a79287c1bd930de7b97883edddbf579b5b..f27066b43f7fce0a2469d559950f4546710c804b 100644 (file)
@@ -75,8 +75,6 @@ BF_SOLID = '#extern/solid'
 BF_SOLID_INC = '${BF_SOLID}'
 BF_SOLID_LIB = 'extern_solid'
 
-WITH_BF_YAFRAY = True
-
 #WITH_BF_NSPR = True
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index 25f200fe346d86e93b9b06517445ad8207a12d42..e050a5950aa4bf98bb0fefaf3fec3b0a85ab2c48 100644 (file)
@@ -83,8 +83,6 @@ BF_SOLID = '#extern/solid'
 BF_SOLID_INC = '${BF_SOLID}'
 BF_SOLID_LIB = 'extern_solid'
 
-WITH_BF_YAFRAY = True
-
 #WITH_BF_NSPR = True
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index a579d21a54471d52f5f30f6e259474f7a89eb55e..5b9b2f9b9dc5390d20b00f2997acdb3bc60ab58e 100644 (file)
@@ -94,8 +94,6 @@ BF_SOLID_LIB = 'extern_solid'
 BF_WINTAB = LIBDIR + '/wintab'
 BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
 
-WITH_BF_YAFRAY = True
-
 #WITH_BF_NSPR = True
 #BF_NSPR = $(LIBDIR)/nspr
 #BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
index b94a9c4effe01639b34ea7fc04e03c747deb7acd..1fc1d219f5727aced1aba5571ebd8fbd5c71ff6f 100644 (file)
@@ -107,8 +107,6 @@ BF_SOLID_LIB = 'extern_solid'
 BF_WINTAB = LIBDIR + '/wintab'
 BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
 
-WITH_BF_YAFRAY = True
-
 WITH_BF_BINRELOC = False
 
 #WITH_BF_NSPR = True
index 945efecdc3c784d422ac83fbe53dee359db7ab26..172fb286fc8ea68bd41adabbca8a663b1fe3abd1 100644 (file)
@@ -110,8 +110,6 @@ BF_SOLID_LIB = 'extern_solid'
 BF_WINTAB = LIBDIR + '/wintab'
 BF_WINTAB_INC = '${BF_WINTAB}/INCLUDE'
 
-WITH_BF_YAFRAY = True
-
 WITH_BF_BINRELOC = False
 
 #WITH_BF_NSPR = True
index 315adc06723b7b3f7d0ec300e0ca717b25d0e0db..b782f9b8a864a5be175080dfd308f314ad2c34d9 100644 (file)
@@ -39,7 +39,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blender", "blender.vcproj",
                {BAC615B0-F1AF-418B-8D23-A10FD8870D6A} = {BAC615B0-F1AF-418B-8D23-A10FD8870D6A}\r
                {E90C7BC2-CF30-4A60-A8F2-0050D592E358} = {E90C7BC2-CF30-4A60-A8F2-0050D592E358}\r
                {8B8D4FC3-3234-4E54-8376-5AB83D00D164} = {8B8D4FC3-3234-4E54-8376-5AB83D00D164}\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879} = {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}\r
                {4B6AFCC5-968C-424A-8F20-76E41B3BEF74} = {4B6AFCC5-968C-424A-8F20-76E41B3BEF74}\r
                {0112CAD5-3584-412A-A2E5-1315A00437B4} = {0112CAD5-3584-412A-A2E5-1315A00437B4}\r
                {EB75F4D6-2970-4A3A-8D99-2BAD7201C0E9} = {EB75F4D6-2970-4A3A-8D99-2BAD7201C0E9}\r
@@ -210,8 +209,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_messaging", "..\kernel\
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PHY_Sumo", "..\gameengine\physics\PHY_Physics\PHY_Sumo\PHY_Sumo.vcproj", "{9625642D-6F20-4FB6-A089-BE7441B223E3}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BRE_yafray", "yafray\BRE_yafray.vcproj", "{9991A3C3-83FE-4AFE-9E18-9D01CB57E879}"\r
-EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PHY_Bullet", "..\gameengine\physics\PHY_Physics\PHY_Bullet\PHY_Bullet.vcproj", "{E90C7BC2-CF30-4A60-A8F2-0050D592E358}"\r
        ProjectSection(ProjectDependencies) = postProject\r
                {FFD3C64A-30E2-4BC7-BC8F-51818C320400} = {FFD3C64A-30E2-4BC7-BC8F-51818C320400}\r
@@ -831,20 +828,6 @@ Global
                {9625642D-6F20-4FB6-A089-BE7441B223E3}.Debug|Win32.Build.0 = 3D Plugin Debug|Win32\r
                {9625642D-6F20-4FB6-A089-BE7441B223E3}.Release|Win32.ActiveCfg = BlenderPlayer Release|Win32\r
                {9625642D-6F20-4FB6-A089-BE7441B223E3}.Release|Win32.Build.0 = BlenderPlayer Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Debug|Win32.ActiveCfg = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Debug|Win32.Build.0 = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Release|Win32.ActiveCfg = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.3D Plugin Release|Win32.Build.0 = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Debug|Win32.ActiveCfg = Blender Debug|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Debug|Win32.Build.0 = Blender Debug|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Release|Win32.ActiveCfg = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Blender Release|Win32.Build.0 = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Debug|Win32.ActiveCfg = Blender Debug|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Debug|Win32.Build.0 = Blender Debug|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Release|Win32.ActiveCfg = Blender Release|Win32\r
-               {9991A3C3-83FE-4AFE-9E18-9D01CB57E879}.Release|Win32.Build.0 = Blender Release|Win32\r
                {E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32\r
                {E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Debug|Win32.Build.0 = 3D Plugin Debug|Win32\r
                {E90C7BC2-CF30-4A60-A8F2-0050D592E358}.3D Plugin Release|Win32.ActiveCfg = 3D Plugin Release|Win32\r
index 3ed0e772d2ff2224aa5a56cbbcc4e33e21e58b6b..8fa89f2c4a5ff296ef8ec20c595ed02fb801e6a1 100644 (file)
                <Filter\r
                        Name="space_buttons"\r
                        >\r
+                       <File\r
+                               RelativePath="..\..\..\source\blender\editors\space_buttons\buttons_context.c"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath="..\..\..\source\blender\editors\space_buttons\buttons_header.c"\r
                                >\r
index 1d0043a5179df34c02a996b9a9a98bccb954aaf0..46a077ebfdb7b51db74b616e490040afd52df940 100644 (file)
@@ -7,15 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'ARMATURE')
+               return (context.armature != None)
 
 class DATA_PT_skeleton(DataButtonsPanel):
        __idname__ = "DATA_PT_skeleton"
        __label__ = "Skeleton"
 
        def draw(self, context):
-               arm = context.active_object.data
+               arm = context.armature
                layout = self.layout
                
                layout.itemR(arm, "rest_position")
@@ -42,7 +41,7 @@ class DATA_PT_display(DataButtonsPanel):
        __label__ = "Display"
        
        def draw(self, context):
-               arm = context.active_object.data
+               arm = context.armature
                layout = self.layout
 
                split = layout.split()
@@ -62,7 +61,7 @@ class DATA_PT_paths(DataButtonsPanel):
        __label__ = "Paths"
 
        def draw(self, context):
-               arm = context.active_object.data
+               arm = context.armature
                layout = self.layout
 
                split = layout.split()
@@ -90,7 +89,7 @@ class DATA_PT_ghost(DataButtonsPanel):
        __label__ = "Ghost"
 
        def draw(self, context):
-               arm = context.active_object.data
+               arm = context.armature
                layout = self.layout
 
                split = layout.split()
@@ -111,4 +110,4 @@ class DATA_PT_ghost(DataButtonsPanel):
 bpy.types.register(DATA_PT_skeleton)
 bpy.types.register(DATA_PT_display)
 bpy.types.register(DATA_PT_paths)
-bpy.types.register(DATA_PT_ghost)
\ No newline at end of file
+bpy.types.register(DATA_PT_ghost)
index a4e0fe4e2fb5caca20b5b7d74bf0692937bc6545..75c201f015e7856175d015570615571f1c675a04 100644 (file)
@@ -7,15 +7,14 @@ class BoneButtonsPanel(bpy.types.Panel):
        __context__ = "bone"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'ARMATURE')
+               return (context.bone != None)
 
 class BONE_PT_bone(BoneButtonsPanel):
        __idname__ = "BONE_PT_bone"
        __label__ = "Bone"
 
        def draw(self, context):
-               bone = context.active_object.data.bones[0]
+               bone = context.bone
                layout = self.layout
 
                split = layout.split()
index d4dabea94803f9a72fd7be994ef8d757ded3fed3..7f3682b1c942545ef0be79a8c3af8b895d3cc648 100644 (file)
@@ -7,15 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
 
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'CAMERA')
+               return (context.camera != None)
                
 class DATA_PT_cameralens(DataButtonsPanel):
        __idname__ = "DATA_PT_camera"
        __label__ = "Lens"
 
        def draw(self, context):
-               cam = context.active_object.data
+               cam = context.camera
                layout = self.layout
 
                layout.itemR(cam, "type", expand=True)
@@ -52,7 +51,7 @@ class DATA_PT_cameradisplay(DataButtonsPanel):
        __label__ = "Display"
        
        def draw(self, context):
-               cam = context.active_object.data
+               cam = context.camera
                layout = self.layout
 
                split = layout.split()
@@ -71,4 +70,4 @@ class DATA_PT_cameradisplay(DataButtonsPanel):
                col.itemR(cam, "draw_size", text="Size")
                
 bpy.types.register(DATA_PT_cameralens)
-bpy.types.register(DATA_PT_cameradisplay)
\ No newline at end of file
+bpy.types.register(DATA_PT_cameradisplay)
index 754c26aa3e68067a5df7c5227771be475c4fa3e9..9baee5516bed9c7a4e5599ff334cec3f3d30f1f0 100644 (file)
@@ -7,15 +7,15 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'CURVE')
+               ob = context.object
+               return (ob and ob.type == 'CURVE' and context.curve)
 
 class DATA_PT_shape_curve(DataButtonsPanel):
                __idname__ = "DATA_PT_shape_curve"
                __label__ = "Shape"
 
                def draw(self, context):
-                       curve = context.active_object.data
+                       curve = context.curve
                        layout = self.layout
 
                        layout.itemR(curve, "curve_2d")                 
@@ -50,7 +50,7 @@ class DATA_PT_geometry(DataButtonsPanel):
                __label__ = "Geometry"
 
                def draw(self, context):
-                       curve = context.active_object.data
+                       curve = context.curve
                        layout = self.layout
 
                        split = layout.split()
@@ -72,13 +72,13 @@ class DATA_PT_pathanim(DataButtonsPanel):
                __label__ = "Path Animation"
                
                def draw_header(self, context):
-                       curve = context.active_object.data
+                       curve = context.curve
 
                        layout = self.layout
                        layout.itemR(curve, "path", text="")
 
                def draw(self, context):
-                       curve = context.active_object.data
+                       curve = context.curve
                        layout = self.layout
                        layout.active = curve.path      
                        
@@ -97,7 +97,7 @@ class DATA_PT_current_curve(DataButtonsPanel):
                __label__ = "Current Curve"
 
                def draw(self, context):
-                       currentcurve = context.active_object.data.curves[0]
+                       currentcurve = context.curve.curves[0] # XXX
                        layout = self.layout
 
                        split = layout.split()
@@ -128,4 +128,4 @@ class DATA_PT_current_curve(DataButtonsPanel):
 bpy.types.register(DATA_PT_shape_curve)
 bpy.types.register(DATA_PT_geometry)
 bpy.types.register(DATA_PT_pathanim)
-bpy.types.register(DATA_PT_current_curve)
\ No newline at end of file
+bpy.types.register(DATA_PT_current_curve)
index 94caa4ed700551f5c800e1456447e3c4d6edab88..7f994c94a07e28dc70c041b21fe6080c7661d2a9 100644 (file)
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
+               ob = context.object
                return (ob and ob.type == 'EMPTY')
        
 class DATA_PT_empty(DataButtonsPanel):
@@ -15,10 +15,10 @@ class DATA_PT_empty(DataButtonsPanel):
        __label__ = "Empty"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                layout.itemR(ob, "empty_draw_type")
                layout.itemR(ob, "empty_draw_size")
                
-bpy.types.register(DATA_PT_empty)
\ No newline at end of file
+bpy.types.register(DATA_PT_empty)
index a2a6ad0426c5acfde1457c07e65517cd6e3b39e5..86be9cd1a68b5ee600c27db8544eb8029ba941ad 100644 (file)
@@ -7,15 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'LAMP')
+               return (context.lamp != None)
        
 class DATA_PT_lamp(DataButtonsPanel):
        __idname__ = "DATA_PT_lamp"
        __label__ = "Lamp"
 
        def draw(self, context):
-               lamp = context.active_object.data
+               lamp = context.lamp
                layout = self.layout
 
                layout.itemR(lamp, "type", expand=True)
@@ -56,11 +55,11 @@ class DATA_PT_sunsky(DataButtonsPanel):
        __label__ = "Sun/Sky"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob.type == 'LAMP' and ob.data.type == 'SUN')
+               lamp = context.lamp
+               return (lamp and lamp.type == 'SUN')
 
        def draw(self, context):
-               lamp = context.active_object.data.sky
+               lamp = context.lamp.sky
                layout = self.layout
 
                row = layout.row()
@@ -99,11 +98,11 @@ class DATA_PT_shadow(DataButtonsPanel):
        __label__ = "Shadow"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob.type == 'LAMP' and ob.data.type in ('POINT','SUN', 'SPOT', 'AREA'))
+               lamp = context.lamp
+               return (lamp and lamp.type in ('POINT','SUN', 'SPOT', 'AREA'))
 
        def draw(self, context):
-               lamp = context.active_object.data
+               lamp = context.lamp
                layout = self.layout
 
                layout.itemR(lamp, "shadow_method", expand=True)
@@ -178,11 +177,11 @@ class DATA_PT_spot(DataButtonsPanel):
        __label__ = "Spot"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob.type == 'LAMP' and ob.data.type == 'SPOT')
+               lamp = context.lamp
+               return (lamp and lamp.type == 'SPOT')
 
        def draw(self, context):
-               lamp = context.active_object.data
+               lamp = context.lamp
                layout = self.layout
 
                split = layout.split()
@@ -200,7 +199,28 @@ class DATA_PT_spot(DataButtonsPanel):
                if lamp.shadow_method == 'BUFFER_SHADOW':
                        colsub.itemR(lamp, "halo_step", text="Step")
 
+class DATA_PT_falloff_curve(DataButtonsPanel):
+       __idname__ = "DATA_PT_falloff_curve"
+       __label__ = "Falloff Curve"
+       
+       def poll(self, context):
+               lamp = context.lamp
+
+               if lamp and lamp.type in ('POINT', 'SPOT'):
+                       if lamp.falloff_type == 'CUSTOM_CURVE':
+                               return True
+
+               return False
+
+       def draw(self, context):
+               lamp = context.lamp
+               layout = self.layout
+
+               layout.template_curve_mapping(lamp.falloff_curve)
+
 bpy.types.register(DATA_PT_lamp)
 bpy.types.register(DATA_PT_shadow)
 bpy.types.register(DATA_PT_sunsky)
-bpy.types.register(DATA_PT_spot)
\ No newline at end of file
+bpy.types.register(DATA_PT_spot)
+bpy.types.register(DATA_PT_falloff_curve)
+
index 4bcff9f53892f75f0c4ba1d47dc93ae8b9f66a00..6172c255d154c89d21bf82668385c5d7fbf8bb9b 100644 (file)
@@ -7,15 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'LATTICE')
+               return (context.lattice != None)
        
 class DATA_PT_lattice(DataButtonsPanel):
        __idname__ = "DATA_PT_lattice"
        __label__ = "Lattice"
 
        def draw(self, context):
-               lat = context.active_object.data
+               lat = context.lattice
                layout = self.layout
 
                row = layout.row()
@@ -34,4 +33,4 @@ class DATA_PT_lattice(DataButtonsPanel):
                row.itemR(lat, "outside")
                row.itemR(lat, "shape_keys")
 
-bpy.types.register(DATA_PT_lattice)
\ No newline at end of file
+bpy.types.register(DATA_PT_lattice)
index 6e9a30cefbcfc5e6046590b4df0b6c94fbcdc0d9..fceb235343a5471da7c7f4ad3d15b492b9d14773 100644 (file)
@@ -7,15 +7,14 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.type == 'MESH')
+               return (context.mesh != None)
 
 class DATA_PT_surface(DataButtonsPanel):
                __idname__ = "DATA_PT_surface"
                __label__ = "Mesh"
 
                def draw(self, context):
-                       mesh = context.active_object.data
+                       mesh = context.mesh
                        layout = self.layout
 
                        split = layout.split()
@@ -31,4 +30,4 @@ class DATA_PT_surface(DataButtonsPanel):
                        
                        layout.itemR(mesh, "texco_mesh")                        
                                                
-bpy.types.register(DATA_PT_surface)
\ No newline at end of file
+bpy.types.register(DATA_PT_surface)
index c087e5f5e36d627e6347af4ff23df0868e0abf3c..0f5d446f889b2f788214cb02159d4fb4d70f94dd 100644 (file)
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "modifier"
 
        def poll(self, context):
-               ob = context.active_object
+               ob = context.object
                return (ob and ob.type in ('MESH', 'CURVE', 'SURFACE', 'TEXT', 'LATTICE'))
                
 class DATA_PT_modifiers(DataButtonsPanel):
@@ -15,7 +15,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
        __label__ = "Modifiers"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                row = layout.row()
@@ -61,7 +61,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
                                if md.type == 'MASK':
                                        self.mask(box, md)
                                if md.type == 'MESH_DEFORM':
-                                       self.meshdeform(box, md)
+                                       self.mesh_deform(box, md)
                                if md.type == 'MIRROR':
                                        self.mirror(box, md)
                                if md.type == 'MULTIRES':
@@ -104,6 +104,8 @@ class DATA_PT_modifiers(DataButtonsPanel):
                        layout.itemR(md, "length")
                if md.fit_type == 'FIT_CURVE':
                        layout.itemR(md, "curve")
+
+               layout.itemS()
                
                split = layout.split()
                
@@ -112,7 +114,10 @@ class DATA_PT_modifiers(DataButtonsPanel):
                col.itemR(md, "constant_offset")
                colsub = col.column()
                colsub.active = md.constant_offset
-               colsub.itemR(md, "constant_offset_displacement", text="Displacement")
+               colsub.itemR(md, "constant_offset_displacement", text="")
+
+               col.itemS()
+
                sub = col.row().itemR(md, "merge_adjacent_vertices", text="Merge")
                colsub = col.column()
                colsub.active = md.merge_adjacent_vertices
@@ -124,12 +129,17 @@ class DATA_PT_modifiers(DataButtonsPanel):
                col.itemR(md, "relative_offset")
                colsub = col.column()
                colsub.active = md.relative_offset
-               colsub.itemR(md, "relative_offset_displacement", text="Displacement")
+               colsub.itemR(md, "relative_offset_displacement", text="")
+
+               col.itemS()
+
                col = col.column()
                col.itemR(md, "add_offset_object")
                colsub = col.column()
                colsub.active = md.add_offset_object
-               colsub.itemR(md, "offset_object")
+               colsub.itemR(md, "offset_object", text="")
+
+               layout.itemS()
                
                col = layout.column()
                col.itemR(md, "start_cap")
@@ -249,13 +259,16 @@ class DATA_PT_modifiers(DataButtonsPanel):
                        layout.itemR(md, "vertex_group")
                layout.itemR(md, "inverse")
                
-       def meshdeform(self, layout, md):
+       def mesh_deform(self, layout, md):
                layout.itemR(md, "object")
                layout.itemR(md, "vertex_group")
                layout.itemR(md, "invert")
-               layout.itemR(md, "precision")
-               layout.itemR(md, "dynamic")
-               # Missing: "Bind"
+
+               layout.itemS()
+               layout.itemO("OBJECT_OT_modifier_mdef_bind", text="Bind")
+               row = layout.row()
+               row.itemR(md, "precision")
+               row.itemR(md, "dynamic")
                
        def mirror(self, layout, md):
                layout.itemR(md, "merge_limit")
@@ -402,4 +415,4 @@ class DATA_PT_modifiers(DataButtonsPanel):
                col.itemR(md, "width", slider=True)
                col.itemR(md, "narrowness", slider=True)
 
-bpy.types.register(DATA_PT_modifiers)
\ No newline at end of file
+bpy.types.register(DATA_PT_modifiers)
index 96147270209dd9bfc56d4428f687e53e95860165..9683dbee22bc84c09b536c1a7c89d59c247677e6 100644 (file)
@@ -7,7 +7,7 @@ class DataButtonsPanel(bpy.types.Panel):
        __context__ = "data"
        
        def poll(self, context):
-               ob = context.active_object
+               ob = context.object
                return (ob and ob.type == 'TEXT')
                
 class DATA_PT_shape_text(DataButtonsPanel):
@@ -15,7 +15,7 @@ class DATA_PT_shape_text(DataButtonsPanel):
                __label__ = "Shape"
 
                def draw(self, context):
-                       curve = context.active_object.data
+                       curve = context.curve
                        layout = self.layout
 
                        layout.itemR(curve, "curve_2d")                 
@@ -46,7 +46,7 @@ class DATA_PT_font(DataButtonsPanel):
        __label__ = "Font"
 
        def draw(self, context):
-               text = context.active_object.data
+               text = context.curve
                layout = self.layout
 
                layout.row()
@@ -77,7 +77,7 @@ class DATA_PT_paragraph(DataButtonsPanel):
        __label__ = "Paragraph"
 
        def draw(self, context):
-               text = context.active_object.data
+               text = context.curve
                layout = self.layout
 
                layout.itemL(text="Align:")
@@ -102,10 +102,10 @@ class DATA_PT_textboxes(DataButtonsPanel):
                __label__ = "Text Boxes"
 
                def draw(self, context):
-                       text = context.active_object.data
+                       text = context.curve
                        layout = self.layout
 
 bpy.types.register(DATA_PT_shape_text) 
 bpy.types.register(DATA_PT_font)
 bpy.types.register(DATA_PT_paragraph)
-#bpy.types.register(DATA_PT_textboxes)
\ No newline at end of file
+#bpy.types.register(DATA_PT_textboxes)
index c9a5fa6db0680e35ca6fd365f854ff6458a618b3..7cffb5b18cf9b11c5e07c6a9d6ca84d7e76dee75 100644 (file)
@@ -7,8 +7,7 @@ class MaterialButtonsPanel(bpy.types.Panel):
        __context__ = "material"
 
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.active_material)
+               return (context.material != None)
 
 class MATERIAL_PT_preview(MaterialButtonsPanel):
        __idname__= "MATERIAL_PT_preview"
@@ -17,7 +16,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel):
        def draw(self, context):
                layout = self.layout
 
-               mat = context.active_object.active_material
+               mat = context.material
                layout.template_preview(mat)
        
 class MATERIAL_PT_material(MaterialButtonsPanel):
@@ -26,7 +25,7 @@ class MATERIAL_PT_material(MaterialButtonsPanel):
 
        def draw(self, context):
                layout = self.layout
-               mat = context.active_object.active_material
+               mat = context.material
        
                layout.itemR(mat, "type", expand=True)
 
@@ -42,18 +41,18 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
        __label__ = "Subsurface Scattering"
 
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+               mat = context.material
+               return (mat and mat.type == "SURFACE")
 
        def draw_header(self, context):
-               sss = context.active_object.active_material.subsurface_scattering
+               sss = context.material.subsurface_scattering
 
                layout = self.layout
                layout.itemR(sss, "enabled", text="")
        
        def draw(self, context):
                layout = self.layout
-               sss = context.active_object.active_material.subsurface_scattering
+               sss = context.material.subsurface_scattering
                layout.active = sss.enabled     
                
                flow = layout.column_flow()
@@ -76,18 +75,18 @@ class MATERIAL_PT_raymir(MaterialButtonsPanel):
        __label__ = "Ray Mirror"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+               mat = context.material
+               return (mat and mat.type == "SURFACE")
        
        def draw_header(self, context):
-               raym = context.active_object.active_material.raytrace_mirror
+               raym = context.material.raytrace_mirror
 
                layout = self.layout
                layout.itemR(raym, "enabled", text="")
        
        def draw(self, context):
                layout = self.layout
-               raym = context.active_object.active_material.raytrace_mirror
+               raym = context.material.raytrace_mirror
                layout.active = raym.enabled    
                split = layout.split()
                
@@ -113,18 +112,18 @@ class MATERIAL_PT_raytransp(MaterialButtonsPanel):
        __label__= "Ray Transparency"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.active_material and ob.active_material.type == "SURFACE")
+               mat = context.material
+               return (mat and mat.type == "SURFACE")
 
        def draw_header(self, context):
-               rayt = context.active_object.active_material.raytrace_transparency
+               rayt = context.material.raytrace_transparency
 
                layout = self.layout
                layout.itemR(rayt, "enabled", text="")
 
        def draw(self, context):
                layout = self.layout
-               rayt = context.active_object.active_material.raytrace_transparency
+               rayt = context.material.raytrace_transparency
                layout.active = rayt.enabled    
                
                split = layout.split()
@@ -151,12 +150,12 @@ class MATERIAL_PT_halo(MaterialButtonsPanel):
        __label__= "Halo"
        
        def poll(self, context):
-               ob = context.active_object
-               return (ob and ob.active_material and ob.active_material.type == "HALO")
+               mat = context.material
+               return (mat and mat.type == "HALO")
        
        def draw(self, context):
                layout = self.layout
-               mat = context.active_object.active_material
+               mat = context.material
                halo = mat.halo
 
                split = layout.split()
@@ -202,4 +201,5 @@ bpy.types.register(MATERIAL_PT_material)
 bpy.types.register(MATERIAL_PT_raymir)
 bpy.types.register(MATERIAL_PT_raytransp)
 bpy.types.register(MATERIAL_PT_sss)
-bpy.types.register(MATERIAL_PT_halo)
\ No newline at end of file
+bpy.types.register(MATERIAL_PT_halo)
+
index d44e6fdd10de241b0395dcb0563ca4460c8841bb..5b32124ff334b5321b7e3b32c79d8f7f3f42eb0d 100644 (file)
@@ -11,9 +11,47 @@ class ConstraintButtonsPanel(bpy.types.Panel):
                box = layout.template_constraint(con)
 
                if box:
-                       if con.type == "COPY_LOCATION":
+                       if con.type == "CHILD_OF":
+                               self.child_of(box, con)
+                       elif con.type == "TRACK_TO":
+                               self.track_to(box, con)
+                       elif con.type == "IK":
+                               self.ik(box, con)
+                       elif con.type == "FOLLOW_PATH":
+                               self.follow_path(box, con)
+                       elif con.type == "LIMIT_ROTATION":
+                               self.limit_rotation(box, con)
+                       elif con.type == "LIMIT_LOCATION":
+                               self.limit_location(box, con)
+                       elif con.type == "LIMIT_SCALE":
+                               self.limit_scale(box, con)
+                       elif con.type == "COPY_ROTATION":
+                               self.copy_rotation(box, con)
+                       elif con.type == "COPY_LOCATION":
                                self.copy_location(box, con)
-
+                       elif con.type == "COPY_SCALE":
+                               self.copy_scale(box, con)
+                       #elif con.type == "SCRIPT":
+                       #       self.script(box, con)
+                       elif con.type == "ACTION":
+                               self.action(box, con)
+                       elif con.type == "LOCKED_TRACK":
+                               self.locked_track(box, con)
+                       elif con.type == "LIMIT_DISTANCE":
+                               self.limit_distance(box, con)
+                       elif con.type == "STRETCH_TO":
+                               self.stretch_to(box, con)
+                       elif con.type == "FLOOR":
+                               self.floor(box, con)
+                       elif con.type == "RIGID_BODY_JOINT":
+                               self.rigid_body(box, con)
+                       elif con.type == "CLAMP_TO":
+                               self.clamp_to(box, con)
+                       elif con.type == "TRANSFORM":
+                               self.transform(box, con)
+                       elif con.type == "SHRINKWRAP":
+                               self.shrinkwrap(box, con)
+                               
                        # show/key buttons here are most likely obsolete now, with
                        # keyframing functionality being part of every button
                        if con.type not in ("RIGID_BODY_JOINT", "NULL"):
@@ -47,32 +85,437 @@ class ConstraintButtonsPanel(bpy.types.Panel):
                        elif con.target.type in ("MESH", "LATTICE"):
                                layout.itemR(con, "subtarget", text="Vertex Group") # XXX autocomplete
        
+       def child_of(self, layout, con):
+               self.target_template(layout, con)
+
+               split = layout.split()
+               
+               sub = split.column()
+               sub.itemL(text="Location:")
+               sub.itemR(con, "locationx", text="X")
+               sub.itemR(con, "locationy", text="Y")
+               sub.itemR(con, "locationz", text="Z")
+               
+               sub = split.column()
+               sub.itemL(text="Rotation:")
+               sub.itemR(con, "rotationx", text="X")
+               sub.itemR(con, "rotationy", text="Y")
+               sub.itemR(con, "rotationz", text="Z")
+               
+               sub = split.column()
+               sub.itemL(text="Scale:")
+               sub.itemR(con, "sizex", text="X")
+               sub.itemR(con, "sizey", text="Y")
+               sub.itemR(con, "sizez", text="Z")
+               
+               # Missing
+               row = layout.row()
+               row.itemL(text="SET OFFSET")
+               row.itemL(text="CLEAR OFFSET")
+               
+       def track_to(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemL(text="To:")
+               row.itemR(con, "track", expand=True)
+               
+               row = layout.row()
+               row.itemR(con, "up", text="Up")
+               row.itemR(con, "target_z")
+               
+               self.space_template(layout, con)
+               
+       def ik(self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "pole_target")
+               layout.itemR(con, "pole_subtarget")
+               
+               col = layout.column_flow()
+               col.itemR(con, "iterations")
+               col.itemR(con, "pole_angle")
+               col.itemR(con, "weight")
+               col.itemR(con, "orient_weight")
+               col.itemR(con, "chain_length")
+               
+               col = layout.column_flow()
+               col.itemR(con, "tail")
+               col.itemR(con, "rotation")
+               col.itemR(con, "targetless")
+               col.itemR(con, "stretch")
+               
+       def follow_path(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemR(con, "curve_follow")
+               row.itemR(con, "offset")
+               
+               row = layout.row()
+               row.itemL(text="Forward:")
+               row.itemR(con, "forward", expand=True)
+               
+               row = layout.row()
+               row.itemR(con, "up", text="Up")
+               row.itemL()
+               
+       def limit_rotation(self, layout, con):
+               
+               split = layout.split()
+               
+               col = split.column()
+               col.itemR(con, "use_limit_x")
+               colsub = col.column()
+               colsub.active = con.use_limit_x
+               colsub.itemR(con, "minimum_x", text="Min")
+               colsub.itemR(con, "maximum_x", text="Max")
+               
+               col = split.column()
+               col.itemR(con, "use_limit_y")
+               colsub = col.column()
+               colsub.active = con.use_limit_y
+               colsub.itemR(con, "minimum_y", text="Min")
+               colsub.itemR(con, "maximum_y", text="Max")
+               
+               col = split.column()
+               col.itemR(con, "use_limit_z")
+               colsub = col.column()
+               colsub.active = con.use_limit_z
+               colsub.itemR(con, "minimum_z", text="Min")
+               colsub.itemR(con, "maximum_z", text="Max")
+               
+               row = layout.row()
+               row.itemR(con, "limit_transform")
+               row.itemL()
+               
+               row = layout.row()
+               row.itemL(text="Convert:")
+               row.itemR(con, "owner_space", text="")
+               
+       def limit_location(self, layout, con):
+               split = layout.split()
+               
+               col = split.column()
+               col.itemR(con, "use_minimum_x")
+               colsub = col.column()
+               colsub.active = con.use_minimum_x
+               colsub.itemR(con, "minimum_x", text="")
+               col.itemR(con, "use_maximum_x")
+               colsub = col.column()
+               colsub.active = con.use_maximum_x
+               colsub.itemR(con, "maximum_x", text="")
+               
+               col = split.column()
+               col.itemR(con, "use_minimum_y")
+               colsub = col.column()
+               colsub.active = con.use_minimum_y
+               colsub.itemR(con, "minimum_y", text="")
+               col.itemR(con, "use_maximum_y")
+               colsub = col.column()
+               colsub.active = con.use_maximum_y
+               colsub.itemR(con, "maximum_y", text="")
+               
+               col = split.column()
+               col.itemR(con, "use_minimum_z")
+               colsub = col.column()
+               colsub.active = con.use_minimum_z
+               colsub.itemR(con, "minimum_z", text="")
+               col.itemR(con, "use_maximum_z")
+               colsub = col.column()
+               colsub.active = con.use_maximum_z
+               colsub.itemR(con, "maximum_z", text="")
+       
+               row = layout.row()
+               row.itemR(con, "limit_transform")
+               row.itemL()
+               
+               row = layout.row()
+               row.itemL(text="Convert:")
+               row.itemR(con, "owner_space", text="")
+               
+       def limit_scale(self, layout, con):
+               split = layout.split()
+
+               col = split.column()
+               col.itemR(con, "use_minimum_x")
+               colsub = col.column()
+               colsub.active = con.use_minimum_x
+               colsub.itemR(con, "minimum_x", text="")
+               col.itemR(con, "use_maximum_x")
+               colsub = col.column()
+               colsub.active = con.use_maximum_x
+               colsub.itemR(con, "maximum_x", text="")
+               
+               col = split.column()
+               col.itemR(con, "use_minimum_y")
+               colsub = col.column()
+               colsub.active = con.use_minimum_y
+               colsub.itemR(con, "minimum_y", text="")
+               col.itemR(con, "use_maximum_y")
+               colsub = col.column()
+               colsub.active = con.use_maximum_y
+               colsub.itemR(con, "maximum_y", text="")
+               
+               col = split.column()
+               col.itemR(con, "use_minimum_z")
+               colsub = col.column()
+               colsub.active = con.use_minimum_z
+               colsub.itemR(con, "minimum_z", text="")
+               col.itemR(con, "use_maximum_z")
+               colsub = col.column()
+               colsub.active = con.use_maximum_z
+               colsub.itemR(con, "maximum_z", text="")
+               
+               row = layout.row()
+               row.itemR(con, "limit_transform")
+               row.itemL()
+               
+               row = layout.row()
+               row.itemL(text="Convert:")
+               row.itemR(con, "owner_space", text="")
+       
+       def copy_rotation(self, layout, con):
+               self.target_template(layout, con)
+               
+               split = layout.split()
+               
+               col = split.column()
+               col.itemR(con, "rotate_like_x", text="X")
+               colsub = col.column()
+               colsub.active = con.rotate_like_x
+               colsub.itemR(con, "invert_x", text="Invert")
+               
+               col = split.column()
+               col.itemR(con, "rotate_like_y", text="Y")
+               colsub = col.column()
+               colsub.active = con.rotate_like_y
+               colsub.itemR(con, "invert_y", text="Invert")
+               
+               col = split.column()
+               col.itemR(con, "rotate_like_z", text="Z")
+               colsub = col.column()
+               colsub.active = con.rotate_like_z
+               colsub.itemR(con, "invert_z", text="Invert")
+
+               layout.itemR(con, "offset")
+               
+               self.space_template(layout, con)
+               
        def copy_location(self, layout, con):
                self.target_template(layout, con)
                
-               row = layout.row(align=True)
-               row.itemR(con, "locate_like_x", text="X", toggle=True)
-               row.itemR(con, "invert_x", text="-", toggle=True)
-               row.itemR(con, "locate_like_y", text="Y", toggle=True)
-               row.itemR(con, "invert_y", text="-", toggle=True)
-               row.itemR(con, "locate_like_z", text="Z", toggle=True)
-               row.itemR(con, "invert_z", text="-", toggle=True)
+               split = layout.split()
+               
+               col = split.column()
+               col.itemR(con, "locate_like_x", text="X")
+               colsub = col.column()
+               colsub.active = con.locate_like_x
+               colsub.itemR(con, "invert_x", text="Invert")
+               
+               col = split.column()
+               col.itemR(con, "locate_like_y", text="Y")
+               colsub = col.column()
+               colsub.active = con.locate_like_y
+               colsub.itemR(con, "invert_y", text="Invert")
+               
+               col = split.column()
+               col.itemR(con, "locate_like_z", text="Z")
+               colsub = col.column()
+               colsub.active = con.locate_like_z
+               colsub.itemR(con, "invert_z", text="Invert")
 
                layout.itemR(con, "offset")
+                       
+               self.space_template(layout, con)
+               
+       def copy_scale(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row(align=True)
+               row.itemR(con, "size_like_x", text="X")
+               row.itemR(con, "size_like_y", text="Y")
+               row.itemR(con, "size_like_z", text="Z")
 
+               layout.itemR(con, "offset")
+               
                self.space_template(layout, con)
+               
+       #def script(self, layout, con):
+       
+       def action(self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "action")
+               layout.itemR(con, "transform_channel")
 
+               split = layout.split()
+       
+               col = split.column(align=True)
+               col.itemR(con, "start_frame", text="Start")
+               col.itemR(con, "end_frame", text="End")
+               
+               col = split.column(align=True)
+               col.itemR(con, "minimum", text="Min")
+               col.itemR(con, "maximum", text="Max")
+               
+               row = layout.row()
+               row.itemL(text="Convert:")
+               row.itemR(con, "owner_space", text="")
+       
+       def locked_track(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemL(text="To:")
+               row.itemR(con, "track", expand=True)
+               
+               row = layout.row()
+               row.itemL(text="Lock:")
+               row.itemR(con, "locked", expand=True)
+               
+       def limit_distance(self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "distance")
+               
+               row = layout.row()
+               row.itemL(text="Clamp Region:")
+               row.itemR(con, "limit_mode", text="")
+               #Missing: Recalculate Button
+               
+       def stretch_to(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemR(con, "original_length", text="Rest Length")
+               row.itemR(con, "bulge", text="Volume Variation")
+               
+               row = layout.row()
+               row.itemL(text="Volume:")
+               row.itemR(con, "volume", expand=True)
+               row.itemL(text="Plane:")
+               row.itemR(con, "keep_axis", expand=True)
+               #Missing: Recalculate Button
+               
+       def floor(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemR(con, "sticky")
+               row.itemR(con, "use_rotation")
+               
+               layout.itemR(con, "offset")
+               
+               row = layout.row()
+               row.itemL(text="Min/Max:")
+               row.itemR(con, "floor_location", expand=True)
+               
+       def rigid_body(self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "pivot_type")
+               layout.itemR(con, "child")
+               
+               row = layout.row()
+               row.itemR(con, "disable_linked_collision", text="No Collision")
+               row.itemR(con, "draw_pivot")
+               
+               split = layout.split()
+               
+               col = split.column()
+               col.itemR(con, "pivot_x")
+               col.itemR(con, "pivot_y")
+               col.itemR(con, "pivot_z")
+               
+               col = split.column()
+               col.itemR(con, "axis_x")
+               col.itemR(con, "axis_y")
+               col.itemR(con, "axis_z")
+               
+               #Missing: Limit arrays (not wrapped in RNA yet) 
+       
+       def clamp_to(self, layout, con):
+               self.target_template(layout, con)
+               
+               row = layout.row()
+               row.itemL(text="Main Axis:")
+               row.itemR(con, "main_axis", expand=True)
+               
+               row = layout.row()
+               row.itemR(con, "cyclic")
+               
+       def transform(self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "extrapolate_motion", text="Extrapolate")
+               
+               split = layout.split()
+               
+               col = split.column()
+               col.itemL(text="Source:")
+               col.row().itemR(con, "map_from", expand=True)
+               
+               sub = col.row(align=True)
+               sub.itemL(text="X:")
+               sub.itemR(con, "from_min_x", text="")
+               sub.itemR(con, "from_max_x", text="")
+               
+               sub = col.row(align=True)
+               sub.itemL(text="Y:")
+               sub.itemR(con, "from_min_y", text="")
+               sub.itemR(con, "from_max_y", text="")
+               
+               sub = col.row(align=True)
+               sub.itemL(text="Z:")
+               sub.itemR(con, "from_min_z", text="")
+               sub.itemR(con, "from_max_z", text="")
+               
+               split = layout.split()
+               
+               col = split.column()
+               col.itemL(text="Destination:")
+               col.row().itemR(con, "map_to", expand=True)
+
+               sub = col.row(align=True)
+               sub.itemR(con, "map_to_x_from", text="")
+               sub.itemR(con, "to_min_x", text="")
+               sub.itemR(con, "to_max_x", text="")
+               
+               sub = col.row(align=True)
+               sub.itemR(con, "map_to_y_from", text="")
+               sub.itemR(con, "to_min_y", text="")
+               sub.itemR(con, "to_max_y", text="")
+               
+               sub = col.row(align=True)
+               sub.itemR(con, "map_to_z_from", text="")
+               sub.itemR(con, "to_min_z", text="")
+               sub.itemR(con, "to_max_z", text="")
+               
+               self.space_template(layout, con)
+               
+       def shrinkwrap (self, layout, con):
+               self.target_template(layout, con)
+               
+               layout.itemR(con, "distance")
+               layout.itemR(con, "shrinkwrap_type")
+               
+               if con.shrinkwrap_type == "PROJECT":
+                       row = layout.row(align=True)
+                       row.itemR(con, "axis_x")
+                       row.itemR(con, "axis_y")
+                       row.itemR(con, "axis_z")
+               
 class OBJECT_PT_constraints(ConstraintButtonsPanel):
        __idname__ = "OBJECT_PT_constraints"
        __label__ = "Constraints"
        __context__ = "object"
 
        def poll(self, context):
-               ob = context.active_object
-               return (ob != None)
+               return (context.object != None)
                
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                row = layout.row()
@@ -88,12 +531,12 @@ class BONE_PT_constraints(ConstraintButtonsPanel):
        __context__ = "bone"
 
        def poll(self, context):
-               ob = context.active_object
+               ob = context.object
                return (ob and ob.type == "ARMATURE")
                
        def draw(self, context):
-               ob = context.active_object
-               pchan = ob.pose.pose_channels[0]
+               ob = context.object
+               pchan = ob.pose.pose_channels[0] # XXX
                layout = self.layout
 
                #row = layout.row()
index a5074614515880906bbba711d7ce492296b6aa14..6d75146fe5ffb11436e3a30687d9b1dcefb9fbe2 100644 (file)
@@ -7,14 +7,14 @@ class ObjectButtonsPanel(bpy.types.Panel):
        __context__ = "object"
 
        def poll(self, context):
-               return (context.active_object != None)
+               return (context.object != None)
 
 class OBJECT_PT_transform(ObjectButtonsPanel):
        __idname__ = "OBJECT_PT_transform"
        __label__ = "Transform"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                row = layout.row()
@@ -27,7 +27,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
        __label__ = "Groups"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                row = layout.row()
@@ -54,7 +54,7 @@ class OBJECT_PT_display(ObjectButtonsPanel):
        __label__ = "Display"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
                        
                row = layout.row()
@@ -74,7 +74,7 @@ class OBJECT_PT_duplication(ObjectButtonsPanel):
        __label__ = "Duplication"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
 
                layout.itemR(ob, "dupli_type", expand=True)
@@ -108,7 +108,7 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
        __label__ = "Animation"
 
        def draw(self, context):
-               ob = context.active_object
+               ob = context.object
                layout = self.layout
                
                split = layout.split()
@@ -132,3 +132,4 @@ bpy.types.register(OBJECT_PT_groups)
 bpy.types.register(OBJECT_PT_display)
 bpy.types.register(OBJECT_PT_duplication)
 bpy.types.register(OBJECT_PT_animation)
+
index 6dab2bcf57c8df41a25d01e7cd4362297fa2433f..efa796df5b029d6d2c711656671ad7b19fe5177e 100644 (file)
@@ -6,17 +6,8 @@ class PhysicButtonsPanel(bpy.types.Panel):
        __region_type__ = "WINDOW"
        __context__ = "physics"
 
-       def cloth_modifier(self, context):
-               ob = context.active_object
-               for md in ob.modifiers:
-                       if md.type == 'CLOTH':
-                               return md
-
-               return None
-       
        def poll(self, context):
-               md = self.cloth_modifier(context)
-               return (md != None)
+               return (context.cloth != None)
                
 class Physic_PT_cloth(PhysicButtonsPanel):
        __idname__ = "Physic_PT_cloth"
@@ -24,7 +15,7 @@ class Physic_PT_cloth(PhysicButtonsPanel):
 
        def draw(self, context):
                layout = self.layout
-               md = self.cloth_modifier(context)
+               md = context.cloth
                cloth = md.settings
                
                split = layout.split()
@@ -60,7 +51,7 @@ class Physic_PT_cloth_collision(PhysicButtonsPanel):
        
        def draw_header(self, context):
                layout = self.layout
-               md = self.cloth_modifier(context)                       
+               md = context.cloth
                cloth = md.collision_settings
        
                layout.itemR(cloth, "enable_collision", text="")
@@ -68,7 +59,7 @@ class Physic_PT_cloth_collision(PhysicButtonsPanel):
        def draw(self, context):
                layout = self.layout
                
-               md = self.cloth_modifier(context)
+               md = context.cloth
                cloth = md.collision_settings
                layout.active = cloth.enable_collision  
                
@@ -91,7 +82,7 @@ class Physic_PT_cloth_stiffness(PhysicButtonsPanel):
        
        def draw_header(self, context):
                layout = self.layout
-               md = self.cloth_modifier(context)
+               md = context.cloth
                cloth = md.settings
        
                layout.itemR(cloth, "stiffness_scaling", text="")
@@ -99,7 +90,7 @@ class Physic_PT_cloth_stiffness(PhysicButtonsPanel):
        def draw(self, context):
                layout = self.layout
                
-               md = self.cloth_modifier(context)
+               md = context.cloth
                cloth = md.settings
                layout.active = cloth.stiffness_scaling 
                
index 2d0aaff6f467c66eb317cb74a642e3ce3c4b05ce..d7f215f2297e4847ed92bb92d8c8d28ddcd59a65 100644 (file)
@@ -45,9 +45,8 @@ class RENDER_PT_output(RenderButtonsPanel):
                
                col = split.column()
                col.itemR(rd, "file_format", text="Format")
-               colsub = col.column()
-               colsub.active = rd.file_format in ("AVIJPEG", "JPEG")
-               colsub.itemR(rd, "quality", slider=True)
+               if rd.file_format in ("AVIJPEG", "JPEG"):
+                       col.itemR(rd, "quality", slider=True)
                
                sub = split.column()
                sub.itemR(rd, "color_mode")
@@ -219,4 +218,4 @@ bpy.types.register(RENDER_PT_dimensions)
 bpy.types.register(RENDER_PT_antialiasing)
 bpy.types.register(RENDER_PT_shading)
 bpy.types.register(RENDER_PT_output)
-bpy.types.register(RENDER_PT_stamp)
\ No newline at end of file
+bpy.types.register(RENDER_PT_stamp)
index ccdbda5d54dddeda610ace8dfab840bbf84248dc..7d0ef9371d7563f69bd8c5d46a0438a788bb5d64 100644 (file)
@@ -7,8 +7,7 @@ class TextureButtonsPanel(bpy.types.Panel):
        __context__ = "texture"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture != None)
-               except:return False
+               return (context.texture != None)
 
 class TEXTURE_PT_preview(TextureButtonsPanel):
        __idname__= "TEXTURE_PT_preview"
@@ -17,7 +16,7 @@ class TEXTURE_PT_preview(TextureButtonsPanel):
        def draw(self, context):
                layout = self.layout
 
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                layout.template_preview(tex)
 
 class TEXTURE_PT_texture(TextureButtonsPanel):
@@ -26,21 +25,38 @@ class TEXTURE_PT_texture(TextureButtonsPanel):
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "type")
 
+class TEXTURE_PT_colors(TextureButtonsPanel):
+       __idname__= "TEXTURE_PT_colors"
+       __label__ = "Colors"
+
+       def draw(self, context):
+               layout = self.layout
+               tex = context.texture
+
+               if tex.color_ramp:
+                       layout.template_color_ramp(tex.color_ramp, expand=True)
+               else:
+                       layout.itemR(tex, "rgb_factor")
+
+               row = layout.row()
+               row.itemR(tex, "brightness")
+               row.itemR(tex, "contrast")
+
 class TEXTURE_PT_clouds(TextureButtonsPanel):
        __idname__= "TEXTURE_PT_clouds"
        __label__ = "Clouds"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'CLOUDS')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'CLOUDS')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "stype", expand=True)
                layout.itemL(text="Noise:")
@@ -57,12 +73,12 @@ class TEXTURE_PT_wood(TextureButtonsPanel):
        __label__ = "Wood"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'WOOD')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'WOOD')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "stype", expand=True)
                layout.itemR(tex, "noisebasis2", expand=True)
@@ -80,12 +96,12 @@ class TEXTURE_PT_marble(TextureButtonsPanel):
        __label__ = "Marble"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'MARBLE')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'MARBLE')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "stype", expand=True)
                layout.itemR(tex, "noisebasis2", expand=True)
@@ -104,12 +120,12 @@ class TEXTURE_PT_magic(TextureButtonsPanel):
        __label__ = "Magic"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'MAGIC')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'MAGIC')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                        
                row = layout.row()
                row.itemR(tex, "noise_depth", text="Depth")
@@ -120,12 +136,12 @@ class TEXTURE_PT_blend(TextureButtonsPanel):
        __label__ = "Blend"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'BLEND')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'BLEND')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
 
                layout.itemR(tex, "progression")
                layout.itemR(tex, "flip_axis")
@@ -135,12 +151,12 @@ class TEXTURE_PT_stucci(TextureButtonsPanel):
        __label__ = "Stucci"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'STUCCI')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'STUCCI')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "stype", expand=True)
                layout.itemL(text="Noise:")
@@ -156,12 +172,12 @@ class TEXTURE_PT_image(TextureButtonsPanel):
        __label__ = "Image/Movie"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'IMAGE')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'IMAGE')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                split = layout.split()
                
@@ -183,12 +199,12 @@ class TEXTURE_PT_mapping(TextureButtonsPanel):
        __label__ = "Mapping"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'IMAGE')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'IMAGE')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                                
                split = layout.split()
                
@@ -226,12 +242,12 @@ class TEXTURE_PT_plugin(TextureButtonsPanel):
        __label__ = "Plugin"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'PLUGIN')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'PLUGIN')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemL(text="Nothing yet")
                
@@ -240,12 +256,12 @@ class TEXTURE_PT_envmap(TextureButtonsPanel):
        __label__ = "Environment Map"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'ENVIRONMENT_MAP')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'ENVIRONMENT_MAP')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemL(text="Nothing yet")
                
@@ -254,12 +270,12 @@ class TEXTURE_PT_musgrave(TextureButtonsPanel):
        __label__ = "Musgrave"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'MUSGRAVE')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'MUSGRAVE')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
                
                layout.itemR(tex, "musgrave_type")      
                
@@ -289,13 +305,12 @@ class TEXTURE_PT_voronoi(TextureButtonsPanel):
        __label__ = "Voronoi"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'VORONOI')
-               except:return False
-
+               tex = context.texture
+               return (tex and tex.type == 'VORONOI')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
        
                layout.itemR(tex, "distance_metric")
                layout.itemR(tex, "coloring")
@@ -321,12 +336,12 @@ class TEXTURE_PT_distortednoise(TextureButtonsPanel):
        __label__ = "Distorted Noise"
        
        def poll(self, context):
-               try:    return (context.active_object.active_material.active_texture.texture.type == 'DISTORTED_NOISE')
-               except:return False
+               tex = context.texture
+               return (tex and tex.type == 'DISTORTED_NOISE')
 
        def draw(self, context):
                layout = self.layout
-               tex = context.active_object.active_material.active_texture.texture
+               tex = context.texture
 
                layout.itemR(tex, "noise_distortion")
                layout.itemR(tex, "noise_basis", text="Basis")
@@ -342,6 +357,7 @@ class TEXTURE_PT_distortednoise(TextureButtonsPanel):
 
 bpy.types.register(TEXTURE_PT_preview)
 bpy.types.register(TEXTURE_PT_texture)
+bpy.types.register(TEXTURE_PT_colors)
 bpy.types.register(TEXTURE_PT_clouds)
 bpy.types.register(TEXTURE_PT_wood)
 bpy.types.register(TEXTURE_PT_marble)
index c38e791d92adfcde3b2444795027c9c621c25d77..79826e04dfce4d2539b0592f0b372acbedb14446 100644 (file)
@@ -7,7 +7,7 @@ class WorldButtonsPanel(bpy.types.Panel):
        __context__ = "world"
 
        def poll(self, context):
-               return (context.scene.world != None)
+               return (context.world != None)
 
 class WORLD_PT_preview(WorldButtonsPanel):
        __label__ = "Preview"
@@ -15,14 +15,14 @@ class WORLD_PT_preview(WorldButtonsPanel):
        def draw(self, context):
                layout = self.layout
 
-               world = context.scene.world
+               world = context.world
                layout.template_preview(world)
        
 class WORLD_PT_world(WorldButtonsPanel):
        __label__ = "World"
 
        def draw(self, context):
-               world = context.scene.world
+               world = context.world
                layout = self.layout
                
                row = layout.row()
@@ -32,14 +32,16 @@ class WORLD_PT_world(WorldButtonsPanel):
                
                row = layout.row()
                row.column().itemR(world, "horizon_color")
-               row.column().itemR(world, "zenith_color")
+               col = row.column()
+               col.itemR(world, "zenith_color")
+               col.active = world.blend_sky
                row.column().itemR(world, "ambient_color")
                
 class WORLD_PT_color_correction(WorldButtonsPanel):
        __label__ = "Color Correction"
 
        def draw(self, context):
-               world = context.scene.world
+               world = context.world
                layout = self.layout
 
                row = layout.row()
@@ -50,13 +52,13 @@ class WORLD_PT_mist(WorldButtonsPanel):
        __label__ = "Mist"
 
        def draw_header(self, context):
-               world = context.scene.world
+               world = context.world
 
                layout = self.layout
                layout.itemR(world.mist, "enabled", text="")
 
        def draw(self, context):
-               world = context.scene.world
+               world = context.world
                layout = self.layout
                layout.active = world.mist.enabled
 
@@ -73,13 +75,13 @@ class WORLD_PT_stars(WorldButtonsPanel):
        __label__ = "Stars"
 
        def draw_header(self, context):
-               world = context.scene.world
+               world = context.world
 
                layout = self.layout
                layout.itemR(world.stars, "enabled", text="")
 
        def draw(self, context):
-               world = context.scene.world
+               world = context.world
                layout = self.layout
                layout.active = world.stars.enabled
 
@@ -93,13 +95,13 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
        __label__ = "Ambient Occlusion"
 
        def draw_header(self, context):
-               world = context.scene.world
+               world = context.world
 
                layout = self.layout
                layout.itemR(world.ambient_occlusion, "enabled", text="")
 
        def draw(self, context):
-               world = context.scene.world
+               world = context.world
                ao = world.ambient_occlusion
                layout = self.layout
                layout.active = ao.enabled
@@ -107,9 +109,15 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
                layout.itemR(ao, "gather_method", expand=True)
                
                if ao.gather_method == 'RAYTRACE':
-                       row = layout.row()
-                       row.itemR(ao, "samples")
-                       row.itemR(ao, "distance")
+                       split = layout.split()
+                       col = split.column()
+                       col.itemR(ao, "samples")
+                       col.itemR(ao, "distance")
+                       col = split.column()
+                       col.itemR(ao, "falloff")
+                       colsub = col.column()
+                       colsub.active = ao.falloff
+                       colsub.itemR(ao, "strength")
                        
                        layout.itemR(ao, "sample_method")
                        if ao.sample_method == 'ADAPTIVE_QMC':
@@ -122,16 +130,18 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
                                row.itemR(ao, "bias")
                                                
                if ao.gather_method == 'APPROXIMATE':
-                       col = layout.column_flow()
+                       split = layout.split()
+                       col = split.column()
                        col.itemR(ao, "passes")
                        col.itemR(ao, "error_tolerance", text="Error")
                        col.itemR(ao, "correction")
+                       col = split.column() 
+                       col.itemR(ao, "falloff")
+                       colsub = col.column()
+                       colsub.active = ao.falloff
+                       colsub.itemR(ao, "strength")
                        col.itemR(ao, "pixel_cache")
 
-               row = layout.row()
-               row.itemR(ao, "falloff")        
-               row.itemR(ao, "strength")
-               
                col = layout.column()
                col.row().itemR(ao, "blend_mode", expand=True)
                col.row().itemR(ao, "color", expand=True)
@@ -143,4 +153,3 @@ bpy.types.register(WORLD_PT_ambient_occlusion)
 bpy.types.register(WORLD_PT_mist)
 bpy.types.register(WORLD_PT_stars)
 bpy.types.register(WORLD_PT_color_correction)
-
diff --git a/release/windows/installer/00.blender.nsi b/release/windows/installer/00.blender.nsi
deleted file mode 100644 (file)
index 8666ed8..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-;
-; $Id$
-;
-; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
-;
-
-!include "MUI.nsh"
-
-Name "Blender VERSION" 
-
-!define MUI_ABORTWARNING
-
-!define MUI_WELCOMEPAGE_TEXT  "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully."
-!define MUI_WELCOMEFINISHPAGE_BITMAP "01.installer.bmp"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP  "00.header.bmp"
-!define MUI_COMPONENTSPAGE_SMALLDESC
-!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
-!define MUI_CHECKBITMAP "00.checked.bmp"
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt"
-!insertmacro MUI_PAGE_COMPONENTS
-    
-!insertmacro MUI_PAGE_DIRECTORY
-Page custom DataLocation
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-  
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-
-Icon "00.installer.ico"
-UninstallIcon "00.installer.ico"
-
-;--------------------------------
-;Languages
-  !insertmacro MUI_LANGUAGE "English"
-    
-;--------------------------------
-;Language Strings
-
-  ;Description
-  LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."
-  LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
-  LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
-  LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
-  LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
-;--------------------------------
-;Data
-
-Caption "Blender VERSION Installer"
-OutFile "DISTDIR\..\VERSION\blender-VERSION-windows.exe"
-
-InstallDir "$PROGRAMFILES\Blender Foundation\Blender"
-
-BrandingText "http://www.blender.org/bf"
-ComponentText "This will install Blender VERSION on your computer."
-
-DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder."
-
-; GetWindowsVersion
-;
-; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
-; Updated by Joost Verburg
-;
-; Returns on top of stack
-;
-; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
-; or
-; '' (Unknown Windows Version)
-;
-; Usage:
-;   Call GetWindowsVersion
-;   Pop $R0
-;   ; at this point $R0 is "NT 4.0" or whatnot
-
-Function GetWindowsVersion
-
-  Push $R0
-  Push $R1
-
-  ReadRegStr $R0 HKLM \
-  "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
-
-  IfErrors 0 lbl_winnt
-   
-  ; we are not NT
-  ReadRegStr $R0 HKLM \
-  "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
-  StrCpy $R1 $R0 1
-  StrCmp $R1 '4' 0 lbl_error
-  StrCpy $R1 $R0 3
-  StrCmp $R1 '4.0' lbl_win32_95
-  StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
-  lbl_win32_95:
-    StrCpy $R0 '95'
-  Goto lbl_done
-  lbl_win32_98:
-    StrCpy $R0 '98'
-  Goto lbl_done
-  lbl_win32_ME:
-    StrCpy $R0 'ME'
-  Goto lbl_done
-  lbl_winnt:
-
-  StrCpy $R1 $R0 1
-  StrCmp $R1 '3' lbl_winnt_x
-  StrCmp $R1 '4' lbl_winnt_x
-  StrCpy $R1 $R0 3
-  StrCmp $R1 '5.0' lbl_winnt_2000
-  StrCmp $R1 '5.1' lbl_winnt_XP
-  StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
-  lbl_winnt_x:
-    StrCpy $R0 "NT $R0" 6
-  Goto lbl_done
-  lbl_winnt_2000:
-    Strcpy $R0 '2000'
-  Goto lbl_done
-  lbl_winnt_XP:
-    Strcpy $R0 'XP'
-  Goto lbl_done
-  lbl_winnt_2003:
-    Strcpy $R0 '2003'
-  Goto lbl_done
-  lbl_error:
-    Strcpy $R0 ''
-  lbl_done:
-  Pop $R1
-  Exch $R0
-
-FunctionEnd
-
-Var BLENDERHOME
-Var winversion
-
-Function SetWinXPPath
-  StrCpy $BLENDERHOME "$PROFILE\Application Data\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWin9xPath
-  StrCpy $BLENDERHOME $INSTDIR
-FunctionEnd
-
-Function .onInit
-  Call GetWindowsVersion
-  Pop $R0
-  Strcpy $winversion $R0
-  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "data.ini"
-FunctionEnd
-
-Var HWND
-Var DLGITEM
-Var is2KXP
-
-Function DataLocation
-  !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" ""
-  
-  ; Set default choice
-  !insertmacro MUI_INSTALLOPTIONS_WRITE "data.ini" "Field 3" "State" 1
-  
-  StrCpy $R1 $winversion 2
-  StrCmp $R1 "NT" do_win2kxp
-  StrCmp $winversion "2000" do_win2kxp
-  StrCmp $winversion "XP" do_win2kxp
-  StrCmp $winversion "2003" do_win2kxp
-  
-  ;else...
-  Strcpy $is2KXP "false"
-
-  Goto continue
-
-  do_win2kXP:
-    Strcpy $is2KXP "true"
-    
-  continue: 
-  
-  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "data.ini"
-  Pop $HWND
-  
-  Strcmp $is2KXP "true" do_dlg
-  
-  ; Disable App Data option on Win9x
-  
-  GetDlgItem $DLGITEM $HWND 1201
-  EnableWindow $DLGITEM 0  
-  
-  do_dlg:
-  
-    !insertmacro MUI_INSTALLOPTIONS_SHOW
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 2" "State" ; App Dir
-    Strcmp $R0 1 do_app_data
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 3" "State" ; Inst Dir
-    Strcmp $R0 1 do_inst_path
-    !insertmacro MUI_INSTALLOPTIONS_READ $R0 "data.ini" "Field 4" "State" ; Home Dir
-    Strcmp $R0 1 do_home_path
-  
-  Goto end
-  
-  do_app_data:
-    Call SetWinXPPath
-    Goto end
-  do_home_path:
-    ReadEnvStr $BLENDERHOME "HOME"
-    Goto end
-  do_inst_path:
-    Call SetWin9xPath
-  end:
-  
-FunctionEnd
-
-Section "Blender-VERSION (required)" SecCopyUI
-  SectionIn RO
-    
-; Sets $BLENDERHOME to suit Windows version...
-
-  ; Set output path to the installation directory.
-  SetOutPath $INSTDIR
-  ; Put file there
-  File DISTDIR\blender.exe
-  File DISTDIR\blenderplayer.exe
-  File DISTDIR\python23.dll
-  File DISTDIR\python23.zip
-  File DISTDIR\sdl.dll
-  File DISTDIR\gnu_gettext.dll
-  File DISTDIR\Copyright.txt
-  File DISTDIR\Blender.html
-  File DISTDIR\python-license.txt
-  File DISTDIR\Release_SHORTVERS.txt
-  File DISTDIR\GPL-license.txt
-  File DISTDIR\Help.url
-  File DISTDIR\zlib.pyd
-     
-  SetOutPath $BLENDERHOME\.blender
-  File DISTDIR\.blender\.bfont.ttf
-  
-  SetOutPath $BLENDERHOME\.blender\scripts
-  File DISTDIR\.blender\scripts\ac3d_export.py
-  File DISTDIR\.blender\scripts\ac3d_import.py
-  File DISTDIR\.blender\scripts\Apply_def.py
-  File DISTDIR\.blender\scripts\Axiscopy.py
-  File DISTDIR\.blender\scripts\batch_name_edit.py
-  File DISTDIR\.blender\scripts\bevel_center.py
-  File DISTDIR\.blender\scripts\blender2cal3d.py
-  File DISTDIR\.blender\scripts\bvh_export.py
-  File DISTDIR\.blender\scripts\bvh_import.py
-  File DISTDIR\.blender\scripts\clean_mesh.py
-  File DISTDIR\.blender\scripts\config.py
-  File DISTDIR\.blender\scripts\DirectX8Exporter.py
-  File DISTDIR\.blender\scripts\DirectXExporter.py
-  File DISTDIR\.blender\scripts\disp_paint.py
-  File DISTDIR\.blender\scripts\doc_browser.py
-  File DISTDIR\.blender\scripts\fixfromarmature.py
-  File DISTDIR\.blender\scripts\help_browser.py
-  File DISTDIR\.blender\scripts\help_getting_started.py
-  File DISTDIR\.blender\scripts\help_manual.py
-  File DISTDIR\.blender\scripts\help_py_reference.py
-  File DISTDIR\.blender\scripts\help_release_notes.py
-  File DISTDIR\.blender\scripts\help_tutorials.py
-  File DISTDIR\.blender\scripts\help_web_blender.py
-  File DISTDIR\.blender\scripts\help_web_devcomm.py
-  File DISTDIR\.blender\scripts\help_web_eshop.py
-  File DISTDIR\.blender\scripts\help_web_usercomm.py
-  File DISTDIR\.blender\scripts\hotkeys.py
-  File DISTDIR\.blender\scripts\kloputils.py
-  File DISTDIR\.blender\scripts\knife.py
-  File DISTDIR\.blender\scripts\lightwave_export.py
-  File DISTDIR\.blender\scripts\lightwave_import.py
-  File DISTDIR\.blender\scripts\nendo_export.py
-  File DISTDIR\.blender\scripts\nendo_import.py
-  File DISTDIR\.blender\scripts\obdatacopier.py
-  File DISTDIR\.blender\scripts\obj_export.py
-  File DISTDIR\.blender\scripts\obj_import.py
-  File DISTDIR\.blender\scripts\off_export.py
-  File DISTDIR\.blender\scripts\off_import.py
-  File DISTDIR\.blender\scripts\paths_import.py
-  File DISTDIR\.blender\scripts\radiosity_export.py
-  File DISTDIR\.blender\scripts\radiosity_import.py
-  File DISTDIR\.blender\scripts\raw_export.py
-  File DISTDIR\.blender\scripts\raw_import.py
-  File DISTDIR\.blender\scripts\renameobjectbyblock.py
-  File DISTDIR\.blender\scripts\rvk1_torvk2.py
-  File DISTDIR\.blender\scripts\save_theme.py
-  File DISTDIR\.blender\scripts\sel_same.py
-  File DISTDIR\.blender\scripts\skin.py
-  File DISTDIR\.blender\scripts\slp_import.py
-  File DISTDIR\.blender\scripts\sysinfo.py
-  File DISTDIR\.blender\scripts\tex2uvbaker.py
-  File DISTDIR\.blender\scripts\truespace_export.py
-  File DISTDIR\.blender\scripts\truespace_import.py
-  File DISTDIR\.blender\scripts\unweld.py
-  File DISTDIR\.blender\scripts\uv_export.py
-  File DISTDIR\.blender\scripts\UVpaint05.py
-  File DISTDIR\.blender\scripts\videoscape_export.py
-  File DISTDIR\.blender\scripts\vrml97_export.py
-  File DISTDIR\.blender\scripts\wings_export.py
-  File DISTDIR\.blender\scripts\wings_import.py
-  File DISTDIR\.blender\scripts\wrl2export.py
-  SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
-  File DISTDIR\.blender\scripts\bpymodules\ai2obj.py
-  File DISTDIR\.blender\scripts\bpymodules\BPyBlender.py
-  File DISTDIR\.blender\scripts\bpymodules\BPyRegistry.py
-  File DISTDIR\.blender\scripts\bpymodules\eps2obj.py
-  File DISTDIR\.blender\scripts\bpymodules\gimp2obj.py
-  File DISTDIR\.blender\scripts\bpymodules\meshtools.py
-  File DISTDIR\.blender\scripts\bpymodules\svg2obj.py
-  SetOutPath $BLENDERHOME\.blender\scripts\bpydata
-  File DISTDIR\.blender\scripts\bpydata\readme.txt
-  File DISTDIR\.blender\scripts\bpydata\KUlang.txt
-  SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
-  File DISTDIR\.blender\scripts\bpydata\config\readme.txt
-  
-  ; Additional Languages files
-  SetOutPath $BLENDERHOME\.blender
-  File DISTDIR\.blender\.Blanguages
-  SetOutPath $BLENDERHOME\.blender\locale\ca\LC_MESSAGES
-  File DISTDIR\.blender\locale\ca\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\cs\LC_MESSAGES
-  File DISTDIR\.blender\locale\cs\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\de\LC_MESSAGES
-  File DISTDIR\.blender\locale\de\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\fi\LC_MESSAGES
-  File DISTDIR\.blender\locale\fi\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\es\LC_MESSAGES
-  File DISTDIR\.blender\locale\es\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\fr\LC_MESSAGES
-  File DISTDIR\.blender\locale\fr\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\it\LC_MESSAGES
-  File DISTDIR\.blender\locale\it\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\ja\LC_MESSAGES
-  File DISTDIR\.blender\locale\ja\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\nl\LC_MESSAGES
-  File DISTDIR\.blender\locale\nl\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\sv\LC_MESSAGES
-  File DISTDIR\.blender\locale\sv\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\zh_cn\LC_MESSAGES
-  File DISTDIR\.blender\locale\zh_cn\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\pt_br\LC_MESSAGES
-  File DISTDIR\.blender\locale\pt_br\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\hr_HR\LC_MESSAGES
-  File DISTDIR\.blender\locale\hr_HR\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\ru\LC_MESSAGES
-  File DISTDIR\.blender\locale\ru\LC_MESSAGES\blender.mo
-  SetOutPath $BLENDERHOME\.blender\locale\pl\LC_MESSAGES
-  File DISTDIR\.blender\locale\pl\LC_MESSAGES\blender.mo
-  
-  SetOutPath $INSTDIR
-  ; Write the installation path into the registry
-  WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
-  ; Write the uninstall keys for Windows
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "uninstall.exe"
-SectionEnd
-
-Section "Add Start Menu shortcuts" Section2
-  SetOutPath $INSTDIR
-  CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
-SectionEnd
-
-Section "Add Desktop Blender-VERSION shortcut" Section3
-  SetOutPath $INSTDIR
-  CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
-SectionEnd
-
-Section "Open .blend files with Blender-VERSION" Section4
-  SetOutPath $INSTDIR
-  ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
-  ;do it the manual way! ;)
-  
-  WriteRegStr HKCR ".blend" "" "blendfile"
-  WriteRegStr HKCR "blendfile" "" "Blender .blend File"
-  WriteRegStr HKCR "blendfile\shell" "" "open"
-  WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
-  WriteRegStr HKCR "blendfile\shell\open\command" "" \
-    '"$INSTDIR\blender.exe" "%1"'
-  
-SectionEnd
-
-UninstallText "This will uninstall Blender VERSION. Hit next to continue."
-
-Section "Uninstall"
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
-  DeleteRegKey HKLM SOFTWARE\BlenderFoundation
-  ; remove files
-  Delete $INSTDIR\blender.exe
-  Delete $INSTDIR\blenderplayer.exe
-  Delete $INSTDIR\python23.dll
-  Delete $INSTDIR\python23.zip
-  Delete $INSTDIR\sdl.dll
-  Delete $INSTDIR\gnu_gettext.dll
-  Delete $INSTDIR\Copyright.txt
-  Delete $INSTDIR\Blender.html
-  Delete $INSTDIR\GPL-license.txt
-  Delete $INSTDIR\python-license.txt
-  Delete $INSTDIR\Release_SHORTVERS.txt
-  Delete $INSTDIR\Help.url
-  Delete $INSTDIR\uninstall.exe
-  Delete $INSTDIR\zlib.pyd
-  Delete $INSTDIR\.blender\.bfont.ttf
-  Delete $INSTDIR\.blender\.Blanguages
-  ; remove shortcuts, if any.
-  Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
-  Delete "$DESKTOP\Blender.lnk"
-  ; remove directories used.
-  RMDir /r $INSTDIR\.blender\locale 
-  RMDir /r $INSTDIR\.blender\scripts
-  RMDir /r $INSTDIR\.blender\scripts\bpydata
-  RMDir /r $INSTDIR\.blender\scripts\bpydata\config
-  RMDir /r $INSTDIR\.blender\scripts\bpymodules
-  RMDir $INSTDIR\.blender
-  RMDir "$SMPROGRAMS\Blender Foundation\Blender"
-  RMDir "$SMPROGRAMS\Blender Foundation"
-  RMDir "$INSTDIR"
-  RMDir "$INSTDIR\.."
-SectionEnd
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/release/windows/installer/00.checked.bmp b/release/windows/installer/00.checked.bmp
deleted file mode 100644 (file)
index 6c2e98d..0000000
Binary files a/release/windows/installer/00.checked.bmp and /dev/null differ
diff --git a/release/windows/installer/00.header.bmp b/release/windows/installer/00.header.bmp
deleted file mode 100644 (file)
index b631ba7..0000000
Binary files a/release/windows/installer/00.header.bmp and /dev/null differ
diff --git a/release/windows/installer/00.installer.adx b/release/windows/installer/00.installer.adx
deleted file mode 100644 (file)
index af1b432..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-[ADX]
-ADXVersion=1.00.00
-<=>2240
-CCM^8603:<;8=2
-CCM^8603:>;8=6
-CCM^8603:?;8=3
-CCM^8603:?;9=2
-CCM^8603:8;8=2
-CCM^8603:8;9=2
-CCM^8603::;8=2
-CCM^8603::;9=2
-CCM^8603::;:=2
-CCM^8603:;;8=2
-CCM^8603:4;:=2
-CCM^8603:4;<=2
-CCM^8603:5;8=$HM
-CCM^8603:5;9=$Dgokcl
-CCM^8603:5;:=$Naogte
-CCM^8603:5;;=$^cr
-CCM^8603:5;<=$Ii
-CCM^8603:5;\13=$Etn\7fue
-CCM^8603:5;>=[bu!\i %K`g
-CCM^8603:5;?=$Ucuz\7f
-CCM^8603:5;0=Qbjdkr %K`g
-CCM^8603:5;1=G!~uzgcw*E\7fmf&x'
-CCM^8603:5:8=$Ciom
-CCM^8603:5:9=Lbrvgtk-$"
-CCM^8603:5::=$Fdnzr
-CCM^8603;<;8=2
-CCM^8604:<;8=3
-CCM^8604:<;9=@kcolcr#',Ymz{n}v
-CCM^8604:<;:=Rkc`{c pzihamw+zjb&qirh#~c+\7fcghf"nrdeu tc`g(ik+kzst`kreg$,+Qd{+cc~&`duo#z~n{x.\7ffg'Dsgqsf*n~|\7fae.vh&rmje`~,jf+ksgqsooo&pb~d%(+^jzjt&l}ut#cbhd~jn.c'bsape#fi\7f|n|+ap'dd(g VDO+fjcn 
-CCM^8604:<:9=67?7
-CCM^8604:\13;8=3
-CCM^8604:\13;9=@kcolcr#',Ymz{n}v
-CCM^8604:\13;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs-*,[zn}x. ^cr*&ie*ud}+yj`v'rn(ivfx{ya\7fk+zjb&gaje-*,[zn}x. Ii#(of#sc~(oae)v'q`fr we,d~n|||ksc!|ne#legm%.+^pbur($Cbdond).bh"~it(qam~,\7fg+}\7far'cy|ta`~eeo+.bzgju/
-CCM^8604:\13:9=4625
-CCM^8604:>;8=3
-CCM^8604:>;9=@kcolcr#',Ymz{n}v
-CCM^8604:>;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs#kbo(b}+\gfb,Ghlz$,+Xykx}"%_d{$ jl,rg~.|ols&ug&ouo~|zbzn.voc!nolf$,+Xykx}"%Hn*&ie*ud}+jd`%s&viht#~c+g}kyypnrd(rhf*jbdn +.Rucr{&"@kbhmg,+gd'\7fn}&wbdx+|d.xzmw&dprrbixbfl.+gvbkr&
-CCM^8604:>:9=4625
-CCM^8604:?;8=3
-CCM^8604:?;9=@kcolcr#',Ymz{n}v
-CCM^8604:?;:=Voc!nolf*eelbmjzgc&cmjot*dj{+oe.gftmacr#|iy{bae.lrkcmt lx,oi\7fk+zjfh!|ne#ebn(jbykcc\7f!gh zeyy(xwxzgj(!(Vrfy\7f+*Rkx,"n`!qiu#}me|+zd.pbvmiee#~dn(mggk,'&Qzcsp*.Eg).bh"~it(bom-x+\7fj`\7f.vh&smvlbii+|ck+hkkc/(&Pqo\7fx()Mj`abj#(of#sc~(|oez"si!{ros*is|yohzkia!(otfg\7f%
-CCM^8604:?:9=4625
-CCM^8604:8;8=3
-CCM^8604:8;9=@kcolcr#',Ymz{n}v
-CCM^8604:8;:=Rkc`{c fdxnz+zck"wgr{qoqn$x!+`nkfbb!|i frxyihz+zjb&h|cmp$,+Xykx}"%IJ*&tl*odf\7fge{g'is($Cbdond).\7fa"trnx&e{~~jk\7fgei"nrdeu.
-CCM^8604:8:9=7641
-CCM^8604:9;8=3
-CCM^8604:9;9=@kcolcr#',Np\7f|jmvnio(Vrlm~n{x
-CCM^8604:9;:=Voc!{raw\7f\7f+jnbdy"tnn\7fu tbm\7f({kymgir`oc ll,\7f`n.bzgju!`gs#hinf+kszpfeumb.
-CCM^8604:9:9=15170
-CCM^8604::;8=3
-CCM^8604::;9=@kcolcr#',Np\7f|jmvnio(Vrlm~n{x
-CCM^8604::;:=Voc!{raw\7f\7f+jnbdy"tnn\7fu tbm\7f({kymgir`oc ll,\7f`n.bzgju!`gs#hinf+kszpfeumb.#*\ymx}+,Afhbmj"#~c+{\7fa{.g\7frsietjdk+a\7fkf},
-CCM^8604:::9=15170
-CCM^8604:;;8=3
-CCM^8604:;;9=@kcolcr#',Nzyay
-CCM^8604:;;:=Voc!xgtk*eelbmjzgc&cmjot*od}gj+`ms&cm&cqom\7fmo.d|"cid{&nl~,jdykjj{'cyaut-*,_zr.x~gdogqond*m+lbhmkpbhu(vawb"
-CCM^8604:;:9=4625
-CCM^8604:4;8=3
-CCM^8604:4;9=@kcolcr#',Nzyay
-CCM^8604:4;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&ouo~|zbz\7fkl)
-CCM^8604:4:9=4625
-CCM^8604:5;8=3
-CCM^8604:5;9=@kcolcr#',Nzyay
-CCM^8604:5;:=Voc!nolf*eelbmjzgc&cmjot*ex(j.Ykcc+Nfjy#legm+oej"ditdb mex+jn.dxguqsartfd"
-CCM^8604:5:9=4625
-CCM^8604;<;8=3
-CCM^8604;<;9=@kcolcr#',Nzyay
-CCM^8604;<;:=Voc!xgsp}cyl+wd{"tvdkofjoh+\7fj}+gldiszccw$,+Xykx}"%E`feeo(,\7fg+}\7far'cy|ta`~eeo+g\7fkot(!(Vrfy\7f+*Bieapb$!|i pae{(dxn|"snd(vapy{dzo#{|mscb|cd#cxne%
-CCM^8604;<:9=2
-CCM^8604;\13;8=3
-CCM^8604;\13;9=@kcolcr#',Nzyay
-CCM^8604;\13;:=Mic!gt ne~n(dh+zjb&qzigqkax(\7ffjz"pcsm&svz|d{n.\7fa"uso(eovfh+fdz+lg'`n}hd-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^8604;\13:9=2
-CCM^8604;>;8=3
-CCM^8604;>;9=@kcolcr#',Nzyay
-CCM^8604;>;:=Onurahg#imiaek\7f.dnjd u)-
-CCM^8604;>:9=2
-CCM^8604;?;8=3
-CCM^8604;?;9=@kcolcr#',Nzyay
-CCM^8604;?;:=Voc!ksswea+znib}vu\7f!ahflxaj|bae.dnjd(rhb~,|ix.x{rwirmb we,im+cn|ebb!\7fotk*xcm+}r}vbk!zcgjyxyq+md{nc&ogr ao,mg~`o "'Vmmgsf*odf\7fohz"~itz&sllx|iyk+~phphlcr#lcy(ckg~,
-CCM^8604;?:9=2
-CCM^8604;8;8=3
-CCM^8604;8;9=@kcolcr#',Nzyay
-CCM^8604;8;:=Voc!aren*eelbmjzgc&hf&tko,manbo.`bjn\7f&cl\7f`o(ea\7f.`b&smaip~iymo +.Rkc`{c `eb\7fihz+wmrt!{ifw}mym+~yatnbdz&flx,cmg~%
-CCM^8604;8:9=4625
-CCM^8604;9;8=3
-CCM^8604;9;9=@kcolcr#',Nzyay
-CCM^8604;9;:=Voc!mhd#ej+|ck+]gk`,M~tqko\7faei+tkw&gaje#}mx(ykjmjbb!jcflxi+igb+ad'rim&iwoax(ha~bf'dd(vrlziydr.nvvugb|cd-*,_`b}+]gk`,M~tqko\7faei+tkw&gaje#gmr(ik+jcjgfmb.#*\gmj}n.mer`ah b*jymxf+mmw\7f!ihd#~~r(jijgl)
-CCM^8604;9:9=2
-CCM^8604;:;8=3
-CCM^8604;:;9=@kcolcr#',Nzyay
-CCM^8604;:;:=Voc!m~tqko\7fad`+~phed{u gch+fdz+mmjvmmre#yyhkn}xhwkjx&& Wbex(for.jfpd(defd,hi~}nj"e\7f!ih lziyi\7fay.Afhbmj lx,d|cky.gutnz( #Z`nixk+mmir`kr zeyy(xamzuftd(vrl|eomy.map'nddv.
-CCM^8604;::9=2
-CCM^8604;;;8=3
-CCM^8604;;;9=@kcolcr#',Nzyay
-CCM^8604;;;:=[hss(uyp~if(oan}"iiu(nauo,nfd{lf"fp`ajaafi+encd|{'rn(uu`iix{m{gb{'cy|ta`~,\7f`n.bzgju!nton*xcax.Xkna+Dprrbixbfl.qgr'`hdc.#*\gmj}n.ahhuiet#sc~z+}dhvpgsm&pqezbln|+hmu&imjp-
-CCM^8604;;:9=2
-CCM^8604;4;8=0
-CCM^8604;4;9=@kcolcr#',Nzyay
-CCM^8604;4;:=Voc!m~tqko\7fad`+~phed{u tk\7f+kj`hknkce(deee~n(jbg.ma&u`c j~if{+yn|g'cy|ta`~io&+.Raw'k`q&nfoh+|d.y{l'rim&e{~~jk\7fgd`"wtnkcsp*mlib`%
-CCM^8604;4:9=2
-CCM^8604;5;8=3
-CCM^8604;5;9=@kcolcr#',Nzyay
-CCM^8604;5;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&e{~~jk\7fko "'Ou(kaz*mgznoow"ec!ah vyi+jr.\7ffg'ux{ren*cy(gahegc&cq&amexcmy.j~rkobirild"+A\7f.|gnk&cm&shc|{mo 
-CCM^8604;5:9=4625
-CCM^86048<;8=3
-CCM^86048<;9=@kcolcr#',Nzyay
-CCM^86048<;:=Ci&dztoq*chk~|ykf'btzond*xcm+kszpfeuain#z~dkn}x "'Rim&aqidb~n.mgnb.r!&mbs,im+jjcc`ce&& Sfij{n.dlvfoo(g exix`+md~{'gol&tqs,jojge 
-CCM^86048<:9=2
-CCM^86048\13;8=3
-CCM^86048\13;9=@kcolcr#',Nzyay
-CCM^86048\13;:=Uoomm&e{~~jk\7fgei"nrdeu b*hj|j.n|pht!`gs#eoh}y|nj,'Riau Po`m%Nv\7f|cdrhfa yc|+nbbn.of\7f!jc gkajonj%."Wjdiue#en\7fib`+o"atd{n `e|r(j`o.vu\7f!iaajd"
-CCM^86048\13:9=4625
-CCM^86048>;8=3
-CCM^86048>;9=@kcolcr#',Nzyay
-CCM^86048>;:=Uoomm&e{~~jk\7fgei"nrdeu wbiym+yj}l r!mhovmd+zdaf.mi&u`c go\7f\7faeo\7fgmi&ezovf$,+Qd{+cc~&omcd#~c+zncdxg'unec ec`n{+lnhmuc!qiu#ime(nv\7f|cdr!ijl#ej+|ck+gvbkr&
-CCM^86048>:9=2
-CCM^86048?;8=0
-CCM^86048?;9=@kcolcr#',\iy`b`e
-CCM^86048?;:=Uoomm&e{~~jk\7fgei"nrdeu excf(\7ffn.Qbjg%Cxwxmh|b`l.xnv!nolf*\7fden.bzgju!\7fcrf*\7f`a{~nj,
-CCM^86048?:9=2
-CCM^860488;8=0
-CCM^860488;9=@kcolcr#',Bfmayccsonf
-CCM^860488;:=Ckj!areny,|myk+}wded{ufvf`r(nv\7f|cdrdl(
-CCM^860488:9=2
-CCM^860489;8=3
-CCM^860489;9=Kiouagljpi
-CCM^860489;:=Rucqitimm,mgy.Nvvugb|oom$,+Xgkj}g'Q`ar.
-CCM^860489:9=2
-CCM^86048:;8=3
-CCM^86048:;9=@kcolcr#',Nzyay
-CCM^86048:;:=Ci&dztoq*{j{+kemmrhumteg*{cagk+~pbv`zond*jdz+kszpfeuain-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^86048::9=2
-CCM^860484;8=3
-CCM^860484;9=@kcolcr#',H`daxk"Aimlcr#Fchi\7fgd`
-CCM^860484:9=2
-CCM^86048498=Fntdkroqcix
-CCM^86048499=Fuowmu
-CCM^860485;8=3
-CCM^860485;9=@kcolcr#',Xmgkhz"@tn}v ee~+[cayzarrr
-CCM^860485:9=2
-CCM^86048598=Girdz&oq*\7fndnm\7f.c'asgsp#dmfm+hd|"nhr|glocbl(xfd|vdsu{(
-CCM^86049<;8=3
-CCM^86049<;9=@kcolcr#',Nzyay
-CCM^86049<;:=Ci&dztoq*chk~|ykf'qiaje#kx\7fmf~\7fgl`&ug&imyxjdg.xfmurb}rs-
-CCM^86049<:9=2
-CCM^86049\13;8=3
-CCM^86049\13;9=@kcolcr#',Ymz{n}v
-CCM^86049\13;:=Mic!gt ne~n(mggkq'qdzc jd\7f\7figbnj"sn`|&rf{ybzn.rawu&rqutfg,\7fg+ln.pbuuittfn"
-CCM^86049\13:9=2
-CCM^86049\1398=Pbuuitt#,Bd\7f
-CCM^86049\1399=Pbuuitt#,@j|n|
-CCM^86049>;8=3
-CCM^86049>;9=@kcolcr#',Ymz{n}v
-CCM^86049>;:=Rkc`{c jd\7fnz\7f.]anrkd(Hunhiy(.j+glsi!|ne#xifg}oibg'bsape-
-CCM^86049>:9=67?7
-CCM^86049?;8=3
-CCM^86049?;9=@kcolcr#',Nzyay
-CCM^86049?;:=[hs!`gvf*ee{n|\7fkf'rim&wqebl(]ag{ob(!(Vlfk\7fn(hfnmi'rim&mfnej(j`o.vu\7f!iaajd"
-CCM^86049?:9=2
-CCM^860498;8=3
-CCM^860498;9=@kcolcr#',Nzyay
-CCM^860498;:=Voc!losh*ex(ea\7f.pbgeq&flx,jkhkx},'&Qdcapo,h`nm`.vh&lime#yyym+zcov'rim&mfnej(b}+ypnrd(cnbh`nl+oej"wtnxcros,bfxkyzgc&hfro#~dn(o|bxg)
-CCM^860498:9=2
-CCM^860::?31=Ahhgatm
-CCM^860::?28='t&iiu mex+jnke.qbrtx( Bxi+qd{+}wuc!qiu#}me|+zd.g\7fou7
-CCM^860::>31=Gutnz
-CCM^860::>28=Qbrtx&hby,bf\7fky`ck&dztoq$,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^860::<;8=1
-CCM^8603:\13;9=^[udzpeqVdden}Wa`mZcdcngo~&kykjzmu+3&~x.}eeldyx g\7fc
-CCM^8603:\13;8=A\13ZEGEUNOr:Tm|j`i[JNKGLPt\13W\nc{Rqa~7K0.yc|
-CCM^8603:4;8=2
-CCM^8603:9;8=2
-CCM^8603:9;9=2
-CCM^8603:9;:=2
-CCM^8603:\13;;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^76/ahswk`gmy bmm<6
-CCM^860334;8=2
-CCM^860334;9=2
-CCM^860339;8=@kcolcr8:
-CCM^8603:8;;=2
-CCM^860::\13>\13=3
-CCM^860::<?;=3
-CCM^860::<9:=3
-CCM^860::<;;=2
-CCM^860::<9<=A\13ZEgeunob\7f{+oej"Tcu|ondyPmzj``RFbuj|ip_yddz\7fm~z,fby
-CCM^860::>38=3
-CCM^860::<;\13=>Nhr|gloLcgln|5RWioo{raof"npn
-CCM^860::<;?=3
-CCM^860::<;1=3
-CCM^860::<9\13=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.zICCY\I@J[XKXQPHIUTdlfdhmagk0&Fb``}jt*vD@MRQHBCTUD[YRLEXWjgkejdnjdTuhff`Wg{keRahklihd8"Hnnj{gz+{NJM__@FMX[N]T\MHR]jjemnjbdnROkdfsm|Ocld7#Lnhj{ns/}@MEZU@DKJBTCCDNHFC\Pej\7f\7fj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejgu\13EaupokuEifkwFIB_^DICBFSFIHFB@G[UnnrwbxiWEbmyaqh`uTQimnc|{WM~|pbhu^crpcceT^`b`qsgmdZBoobomy5^`kiuuijlP~~bflr
-CCM^860::<;0=>Nhr|gloLcgln|5R@kcolcr-otnt7Ge}vfjmNilgo~5THa{wpnai|(t{~p7Ae}\7fonk@ndbeq4PYmjjfk,s~ut:ImyxjdgHdbfbt?TNeoz"~zg505~;Oo{raofJddoky0^w\7fu`in1:"odg505~
-CCM^860::\13>;=3
-CCM^860::<?<=2
-CCM^860::\13?1=3
-CCM^860::<91=2
-CCM^860::\13>8=3502:455
-CCM^860::\13?\13=
-CCM^860::\13?>=
-CCM^860::\13?0=2
-CCM^860::\13>:=3
-CCM^860::\13\13?=1
-CCM^860::\13\130=3
-CCM^860::>3\13=2
-CCM^860::\13\13\13=>WtnotanLegmx0WLnbhemt
-CCM^860::\13\13>=@kcolcr-otn37Ge}vfjmNilgo~5TIbn`fbt/m~e8:7;3;505~Diqqtidbx%|sz02KiuuijlEe`omy0WMmw\7fsaahw$xs|0>0>97\13:3zRfkhfm%zsz9;Oo{raofJddoky0^Uc`lke-~t\7f3;5;52<\13:tNeoz"~zg57Gltr`djFlfhnz5RCknw(tzj;31<08050rr~righ23$hgd02B`qsgmd@ooniy6W~rzjhh38(dof7;3;5;59<z
-CCM^860::>3>=3
-CCM^860::>3?=2
-CCM^860::\13<8=3
-CCM^860::>?8=2
-CCM^860::\13<9=3
-CCM^860::>?9=2
-CCM^860::\13<:=3
-CCM^860::>?:=2
-CCM^860::\13<;=3
-CCM^860::>?;=2
-CCM^860::\13<<=3
-CCM^860::>?<=2
-CCM^860::\13<\13=2
-CCM^860::>?\13=2
-CCM^860::\13<>=3
-CCM^860::>?>=2
-CCM^860::\13\139=Lhr!i&Nvgnnz
-CCM^860::\13\13:=
-CCM^860::\13\13;=upq/jjemniy&eb
-CCM^860::\13\13<=
-CCM^860::\13>1=@kcolcr#I~ni\7fay
-CCM^860::\13\138=0)40k
-CCM^860::9>9=2
-CCM^860::9>:=3
-CCM^860::9><=3
-CCM^860::9>\13=3
-CCM^860::5<<=2
-CCM^860::9>?=
-CCM^860::<8;=2
-CCM^860::<8<=
-CCM^860::<8\13=>Nhr|gloLcgln|5RJbjq&sro
-CCM^860::<8>=
-CCM^860::831=2
-CCM^860::5\139=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^77/ahswk`gmy icr
-CCM^860::5\13:=
-CCM^860::5\13;=2
-CCM^860::<9>=3
-CCM^860::<9?=3
-CCM^860::5\13<=2
-CCM^860::5\13\13=2
-CCM^860::5\13>=2
-CCM^860::5<\13=2
-CCM^860::5<>=2
-CCM^860::5<?=
-CCM^860::5<1=2
-CCM^860::5<0=2
-CCM^860::538=2
-CCM^860::52>=3
-CCM^860::52?=>Nhr|gloLcgln|5R@FEJ]V
-CCM^860::520=2
-CCM^860::\13>>=2
-CCM^860::\13>?=2
-CCM^8603:?;:=3
-CCM^8603:?;;=2
-CCM^8603:>;:=>FBUmkp\13
-CCM^8603:;;>=2
-CCM^860::9>;=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.\13cdcnglegm0]\7f|kia}@MEZUOGIX]N]]UIN\Zboobonbbn5*Ccgislw#7Idn`okp'@hdc;P~~bflrCEG^YBDGSPO_TZDA_R`kcol`iooPx`nbgRmwcoTeongmel0&Okdfsm|/;!6Ee{\7fogbDhjemt>_H`nfoky g\7fc#($%2(7X|ygei~OMDQYCOK_XMXQYAMSZcdcnglegmWJnhcrjuAeom1$Ommo~bv.\13#4Onp~mgdMagjgu8]Jjemniy&nvn,.6\13R|timmpCCNWTBMDGMWKA@BEEMW]dhvpgsmZMji~d{dh\7fRUnhegqs_Iyyzn`\7fXguuhgh\Vdee{\7fogb^Ejdfbeq1Hb{{bjwLfkd3Dlfdhnz0]\7f|kia}@MEZU@DKJBTCCDNHFC\Pej\7f\7fj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejgu\13Tfonp~mgdXzygl`\13\13Ahswk`gNdbokp9ZTfonp~mgd%ksk9Trsahg\7f
-CCM^860::\1328=Ubjbgke
-CCM^860::>:8=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^77/\7fcl`ean&yzm
-CCM^860::>\138=2
-CCM^860::521=[bu
-CCM^860:;<;8=Lh
-CCM^860::829=Rkc`{c qomo(\7ffn.dhjmgqimm,Gahke}g'Gfzcenob\7f&+.^}g'rim&s`xcgd+lj|"si!~oet*xcm+|n}v'ig(rhf*hdk~cn`v)
-CCM^860::9:9=Fh&xgs bionx\7f.jbn'rim&tfxax(dh+zjb&qzccfneeo+Bbmgiud(Ggqoifmez4."N`!qiu#iddgxk+@m+&rmrus*{bdg.hbmtc/(&Tl*ee{\7fogb"snd(vrlm~je'.raw'kt{r bionx\7f.\7ffkt&`otefgie|%
-CCM^860::\1329=Nnedfue#Kkymncn`v
-CCM^860::>:9=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^74/kipzxel`\7f \7fvv
-CCM^860::>\139=3
-CCM^860::\132:=Ceit|&Boobomy.H|gfrnz
-CCM^860::>::=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^75/zcaggi%|sz
-CCM^860::>\13:=2
-CCM^860::82;=Kiuuijlb~edf+Hdbfbt
-CCM^860::9:;=Wtc!|ne#lendo.iknhq!|i pzihamw+zjb&ggjdfx,|`n|n.{hs!\7fgnw*xcm+o{~nne`|oom*jbdn}+zm'dd(eoscio(\7fa%.Vh&rxccjlu+i+jbhdbtdfr ee`omy"+z{wc!i&nf},eifk'.mu&t{c wbi+Ti.I|mpudTd0#*n~|\7fae.vh&rmje`~,jf+ksgqsooo&flfhnz%.+^pbur(Zb#Dis|Wl;."si!kinwcb~m%\11
-CCM^860::\132;=Aoin{c Pox~x+Hdbfbt
-CCM^860::>:;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^72/nilgo~%z\7fh
-CCM^860::>\13;=2
-CCM^860::82<=Uhtjahg
-CCM^860::9:<=Rkc`{c tke\7f(|fbbg'#r(os#yi\7f}{.d`"~itz&clg|~|n|%\11
-CCM^860::\132<=Qbrtx&Pqekymx}
-CCM^860::>:<=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^73/xtodxix{%|\7fh
-CCM^860::>\13<=2
-CCM^860::82>=Qbrtx&wby,x}hmn}qasm
-CCM^860::9:>='t&viu p\7fohmx}m{nk\7f!{ctvz,df+wd{p'enevuwo~%(+^ykqt&]j&Fjdex`Wl;."si!m~iw*\7fn|~~%\11
-CCM^860::98>=Qsgs|&Boobomy
-CCM^860::>3;=>Nhr|gloLcgln|5R`kcolcr-otn
-CCM^860::>3<=2
-CCM^860::>39=3
-CCM^860::\132>=Qbrtx&Clg|gm\7fk
-CCM^860::>:>=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^70/kimsfi\7fm%|\7fh
-CCM^860::>\13>=2
-CCM^860::<:8=Wioo{raofiy
-CCM^860::<:9=Voc!}himyxjdg.{|m`t`e&wjf`+zncdxg'`hdcs#kbo(magjguu-(uhlxxh}\7f}'.cib!zcgjyxyq+kezpncr(`rlg,\7f`n.ogql(!(Grf*ud}+}~|g'\7fn}&wbdx+|d.~`kiuuijl<
-CCM^860::<::=Mic!g` `ea{gekezq'or(gcwczn&+.Nvks&u`c sxclzjc+lgaism&swk~\7faei+[lnhr|glo$
-CCM^860::<:;=Wioo{raof,x}hmn}qasmd\7f!
-CCM^860::<:<=Ci&dztoq*chk~|ykf'qiaje#~~raei+zm'soahswk`g(\7ffn.ruifzgm-*,^fb`xzckj!`gs#hinf+mj`abjdl(
-CCM^860::\13><=Qbrtx
-CCM^860::<9;=Lhr!i&Nvgnnzwrwr~{Dmmhdfx,Hzno\7fap{4/:7c\7f
-CCM^860::<;:=Giamauh#',^fbznj"Tr`|cs
-CCM^860::<;9=3752
-CCM^86033:;8=>DAsgsp\1310BfxzjbnAimlcr\13VNgmejn|,b~d3\13Boobomy5059<6
-CCM^86033:;9=>DAsgsp\1310BfxzjbnAimlcr\13VYeae}\7fonk(dpc;8_bbfxzjbn'Dmmhdfx70305;
-CCM^86033:;:=>DAsgsp\1310BfxzjbnAimlcr\13V^niocn v\7fr:3Tebnan305052
-CCM^86033:;;=>DAsgsp\1310BfxzjbnAimlcr\13VOdxr|bijs(upr;8Ic{qyglfv<\13:3\130
-CCM^86033:;<=>DAsgsp\1310BfxzjbnAimlcr\13VDnd{ ~|n<\13Imjp81703;
-CCM^86033:;\13=>Ccrcros477Ae}\7fonk@ndbeq4PIdn`okp)cym\13;Afieln|059<\131
-CCM^860:;<;9=^[udzpeqVdden}Wa`mZcdcngo~&\7fb`oautZ+&,
\ No newline at end of file
diff --git a/release/windows/installer/00.installer.ico b/release/windows/installer/00.installer.ico
deleted file mode 100644 (file)
index 922c9d4..0000000
Binary files a/release/windows/installer/00.installer.ico and /dev/null differ
diff --git a/release/windows/installer/00.sconsblender.nsi b/release/windows/installer/00.sconsblender.nsi
deleted file mode 100644 (file)
index 1cb1590..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-;
-; $Id$
-;
-; Blender Self-Installer for Windows (NSIS - http://nsis.sourceforge.net)
-;
-; Requires the MoreInfo plugin - http://nsis.sourceforge.net/MoreInfo_plug-in
-;
-
-!include "MUI.nsh"
-!include "WinVer.nsh"
-!include "FileFunc.nsh"
-!include "WordFunc.nsh"
-!include "nsDialogs.nsh"
-
-SetCompressor /SOLID lzma
-
-Name "Blender VERSION" 
-
-!define MUI_ABORTWARNING
-
-!define MUI_WELCOMEPAGE_TEXT  "This wizard will guide you through the installation of Blender.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\nNote to Win2k/XP users: You may require administrator privileges to install Blender successfully."
-!define MUI_WELCOMEFINISHPAGE_BITMAP "RELDIR\01.installer.bmp"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP  "RELDIR\00.header.bmp"
-!define MUI_COMPONENTSPAGE_SMALLDESC
-!define MUI_FINISHPAGE_RUN "$INSTDIR\blender.exe"
-!define MUI_CHECKBITMAP "RELDIR\00.checked.bmp"
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "DISTDIR\Copyright.txt"
-!insertmacro MUI_PAGE_COMPONENTS
-    
-!insertmacro MUI_PAGE_DIRECTORY
-Page custom DataLocation DataLocationOnLeave
-;Page custom AppDataChoice AppDataChoiceOnLeave
-Page custom PreMigrateUserSettings MigrateUserSettings
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-  
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-!insertmacro Locate
-!insertmacro VersionCompare
-
-
-Icon "RELDIR\00.installer.ico"
-UninstallIcon "RELDIR\00.installer.ico"
-
-;--------------------------------
-;Languages
-  !insertmacro MUI_LANGUAGE "English"
-    
-;--------------------------------
-;Language Strings
-
-  ;Description
-  LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy all required files to the application folder."
-  LangString DESC_Section2 ${LANG_ENGLISH} "Add shortcut items to the Start Menu. (Recommended)"
-  LangString DESC_Section3 ${LANG_ENGLISH} "Add a shortcut to Blender on your desktop."
-  LangString DESC_Section4 ${LANG_ENGLISH} "Blender can register itself with .blend files to allow double-clicking from Windows Explorer, etc."
-  LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Specify User Data Location"
-;--------------------------------
-;Data
-
-Caption "Blender VERSION Installer"
-OutFile "DISTDIR\..\blender-VERSION-windows.exe"
-InstallDir "$PROGRAMFILES\Blender Foundation\Blender"
-
-BrandingText "http://www.blender.org"
-ComponentText "This will install Blender VERSION on your computer."
-
-DirText "Use the field below to specify the folder where you want Blender to be copied to. To specify a different folder, type a new name or use the Browse button to select an existing folder."
-
-SilentUnInstall normal
-
-# Uses $0
-Function openLinkNewWindow
-  Push $3 
-  Push $2
-  Push $1
-  Push $0
-  ReadRegStr $0 HKCR "http\shell\open\command" ""
-# Get browser path
-    DetailPrint $0
-  StrCpy $2 '"'
-  StrCpy $1 $0 1
-  StrCmp $1 $2 +2 # if path is not enclosed in " look for space as final char
-    StrCpy $2 ' '
-  StrCpy $3 1
-  loop:
-    StrCpy $1 $0 1 $3
-    DetailPrint $1
-    StrCmp $1 $2 found
-    StrCmp $1 "" found
-    IntOp $3 $3 + 1
-    Goto loop
-  found:
-    StrCpy $1 $0 $3
-    StrCmp $2 " " +2
-      StrCpy $1 '$1"'
-  Pop $0
-  Exec '$1 $0'
-  Pop $1
-  Pop $2
-  Pop $3
-FunctionEnd
-
-Var BLENDERHOME
-Var DLL_found
-Var PREVHOME
-
-Function SetWinXPPathCurrentUser
-  SetShellVarContext current
-  StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWinXPPathAllUsers
-  SetShellVarContext all
-  StrCpy $BLENDERHOME "$APPDATA\Blender Foundation\Blender"
-FunctionEnd
-
-Function SetWin9xPath
-  StrCpy $BLENDERHOME $INSTDIR
-FunctionEnd
-
-; custom controls
-Var HWND
-
-Var HWND_APPDATA
-Var HWND_INSTDIR
-Var HWND_HOMEDIR
-
-Var HWND_BUTTON_YES
-Var HWND_BUTTON_NO
-
-Var SETUSERCONTEXT
-
-Function PreMigrateUserSettings
-  StrCpy $PREVHOME "$PROFILE\Application Data\Blender Foundation\Blender"
-  StrCpy $0 "$PROFILE\Application Data\Blender Foundation\Blender\.blender"
-  
-  IfFileExists $0 0 nochange
-  
-  StrCmp $BLENDERHOME $PREVHOME nochange
-  
-  nsDialogs::Create /NOUNLOAD 1018
-  Pop $HWND
-  
-  ${If} $HWND == error
-       Abort
-  ${EndIf}
-  
-  ${NSD_CreateLabel} 0 0 100% 12u "You have existing settings at:"
-  ${NSD_CreateLabel} 0 20 100% 12u $PREVHOME
-  ${NSD_CreateLabel} 0 40 100% 12u "Do you wish to migrate this data to:"
-  ${NSD_CreateLabel} 0 60 100% 12u $BLENDERHOME
-  ${NSD_CreateLabel} 0 80 100% 12u "Please note: If you choose no, Blender will not be able to use these files!"
-  ${NSD_CreateRadioButton} 0 100 100% 12u "Yes"
-  Pop $HWND_BUTTON_YES
-  ${NSD_CreateRadioButton} 0 120 100% 12u "No"
-  Pop $HWND_BUTTON_NO
-  
-  SendMessage $HWND_BUTTON_YES ${BM_SETCHECK} 1 0
-  
-  nsDialogs::Show
-  nochange:
-  
-FunctionEnd
-
-Function MigrateUserSettings
-  ${NSD_GetState} $HWND_BUTTON_YES $R0
-  ${If} $R0 == "1"
-    CreateDirectory $BLENDERHOME
-    CopyFiles $PREVHOME\*.* $BLENDERHOME
-    ;RMDir /r $PREVHOME
-  ${EndIf}  
-FunctionEnd
-
-!define DLL_VER "9.00.21022.8"
-
-Function LocateCallback_90
-    MoreInfo::GetProductVersion "$R9"
-    Pop $0
-
-        ${VersionCompare} "$0" "${DLL_VER}" $R1
-
-        StrCmp $R1 0 0 new
-      new:
-        StrCmp $R1 1 0 old
-      old:
-        StrCmp $R1 2 0 end
-    ; Found DLL is older
-        Call DownloadDLL
-
-     end:
-       StrCpy "$0" StopLocate
-       StrCpy $DLL_found "true"
-       Push "$0"
-
-FunctionEnd
-
-Function DownloadDLL
-    MessageBox MB_OK "You will need to download the Microsoft Visual C++ 2008 Redistributable Package in order to run Blender. Pressing OK will take you to the download page, please follow the instructions on the page that appears."
-    StrCpy $0 "http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&DisplayLang=en"
-    Call openLinkNewWindow
-FunctionEnd
-
-Function PythonInstall
-    MessageBox MB_OK "You will need to install python 2.5.2 in order to run blender. Pressing OK will take you to the python.org website."
-    StrCpy $0 "http://www.python.org"
-    Call openLinkNewWindow
-FunctionEnd
-
-Function DataLocation
-  nsDialogs::Create /NOUNLOAD 1018
-  Pop $HWND
-  
-  ${If} $HWND == error
-    Abort
-  ${EndIf}
-  
-  ${NSD_CreateLabel} 0 0 100% 12u "Please specify where you wish to install Blender's user data files."
-  ${NSD_CreateRadioButton} 0 20 100% 12u "Use the Application Data directory (Requires Windows 2000 or better)"
-  Pop $HWND_APPDATA
-  ${NSD_CreateRadioButton} 0 50 100% 12u "Use the installation directory (ie. location chosen to install blender.exe)."
-  Pop $HWND_INSTDIR
-  ${NSD_CreateRadioButton} 0 80 100% 12u "I have defined a %HOME% variable, please install files here."
-  Pop $HWND_HOMEDIR
-  
-  ${If} ${AtMostWinME}
-    GetDlgItem $0 $HWND $HWND_APPDATA
-    EnableWindow $0 0
-    SendMessage $HWND_INSTDIR ${BM_SETCHECK} 1 0
-  ${Else}
-    SendMessage $HWND_APPDATA ${BM_SETCHECK} 1 0
-  ${EndIf}
-  
-  nsDialogs::Show
-  
-FunctionEnd
-
-Function DataLocationOnLeave
-       StrCpy $SETUSERCONTEXT "false"
-       ${NSD_GetState} $HWND_APPDATA $R0
-       ${If} $R0 == "1"
-         ; FIXME: disabled 'all users' until fully multi-user compatible
-         ;StrCpy $SETUSERCONTEXT "true"
-         Call SetWinXPPathCurrentUser
-       ${Else}
-         ${NSD_GetState} $HWND_INSTDIR $R0
-         ${If} $R0 == "1"
-           Call SetWin9xPath
-         ${Else}
-           ${NSD_GetState} $HWND_HOMEDIR $R0
-           ${If} $R0 == "1"
-             ReadEnvStr $BLENDERHOME "HOME"
-           ${EndIf}
-         ${EndIf}
-       ${EndIf}
-FunctionEnd
-
-Var HWND_APPDATA_CURRENT
-Var HWND_APPDATA_ALLUSERS
-
-Function AppDataChoice
-  StrCmp $SETUSERCONTEXT "false" skip
-  
-  nsDialogs::Create /NOUNLOAD 1018
-  Pop $HWND
-  
-  ${NSD_CreateLabel} 0 0 100% 12u "Please choose which Application Data directory to use."
-  ${NSD_CreateRadioButton} 0 40 100% 12u "Current User"
-  Pop $HWND_APPDATA_CURRENT
-  ${NSD_CreateRadioButton} 0 70 100% 12u "All Users"
-  Pop $HWND_APPDATA_ALLUSERS
-  
-  SendMessage $HWND_APPDATA_CURRENT ${BM_SETCHECK} 1 0
-  
-  StrCmp $SETUSERCONTEXT "true" 0 skip ; show dialog if we need to set context, otherwise skip it
-  nsDialogs::Show
-  
-skip:
-
-FunctionEnd
-
-Function AppDataChoiceOnLeave
-       StrCmp $SETUSERCONTEXT "false" skip
-       ${NSD_GetState} $HWND_APPDATA_CURRENT $R0
-       ${If} $R0 == "1"
-          Call SetWinXPPathCurrentUser
-       ${Else}
-          Call SetWinXPPathAllUsers
-       ${EndIf}
-skip:
-
-FunctionEnd
-
-Section "Blender-VERSION (required)" SecCopyUI
-  SectionIn RO
-
-  ; Set output path to the installation directory.
-  SetOutPath $INSTDIR
-  ; Put file there
- [ROOTDIRCONTS]
-     
-  SetOutPath $BLENDERHOME\.blender
-  [DOTBLENDERCONTS]
-  
-  SetOutPath $BLENDERHOME\.blender\scripts
-  [SCRIPTCONTS]
-  SetOutPath $BLENDERHOME\.blender\scripts\bpymodules
-  [SCRIPTMODCONTS]
-  SetOutPath $BLENDERHOME\.blender\scripts\bpymodules\colladaImEx
-  [SCRIPTMODCOLLADACONT]
-  SetOutPath $BLENDERHOME\.blender\scripts\bpydata
-  [SCRIPTDATACONTS]
-  SetOutPath $BLENDERHOME\.blender\scripts\bpydata\config
-  [SCRIPTDATACFGCONTS]
-  SetOutPath $BLENDERHOME\plugins\include
-  [PLUGINCONTS]
-  
-  ; Language files
-  [LANGUAGECONTS]
-  
-  SetOutPath $INSTDIR
-  ; Write the installation path into the registry
-  WriteRegStr HKLM SOFTWARE\BlenderFoundation "Install_Dir" "$INSTDIR"
-  WriteRegStr HKLM SOFTWARE\BlenderFoundation "Home_Dir" "$BLENDERHOME"
-  ; Write the uninstall keys for Windows
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "DisplayName" "Blender (remove only)"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender" "UninstallString" '"$INSTDIR\uninstall.exe"'
-  WriteUninstaller "uninstall.exe"
-
-  IfSilent 0 +2
-    Goto silentdone
-  ; Check for msvcr80.dll - give notice to download if not found
-  MessageBox MB_OK "The installer will now check your system for the required system dlls."
-  StrCpy $1 $WINDIR
-  StrCpy $DLL_found "false"
-  ${Locate} "$1" "/L=F /M=MSVCR90.DLL /S=0B" "LocateCallback_90"
-  StrCmp $DLL_found "false" 0 +2
-    Call DownloadDLL
-  ReadRegStr $0 HKLM SOFTWARE\Python\PythonCore\2.5\InstallPath ""
-  StrCmp $0 "" 0 +2
-    Call PythonInstall
-silentdone:
-SectionEnd
-
-Section "Add Start Menu shortcuts" Section2
-  SetOutPath $INSTDIR
-  CreateDirectory "$SMPROGRAMS\Blender Foundation\Blender\"
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Blender.lnk" "$INSTDIR\Blender.exe" "" "$INSTDIR\blender.exe" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Readme.lnk" "$INSTDIR\Blender.html" "" "" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Copyright.lnk" "$INSTDIR\Copyright.txt" "" "$INSTDIR\copyright.txt" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\GPL-license.lnk" "$INSTDIR\GPL-license.txt" "" "$INSTDIR\GPL-license.txt" 0
-  CreateShortCut "$SMPROGRAMS\Blender Foundation\Blender\Help.lnk" "$INSTDIR\Help.url"
-SectionEnd
-
-Section "Add Desktop Blender-VERSION shortcut" Section3
-  SetOutPath $INSTDIR
-  CreateShortCut "$DESKTOP\Blender.lnk" "$INSTDIR\blender.exe" "" "$INSTDIR\blender.exe" 0
-SectionEnd
-
-Section "Open .blend files with Blender-VERSION" Section4
-  SetOutPath $INSTDIR
-  ;ExecShell "open" '"$INSTDIR\blender.exe"' "-R -b"
-  ;do it the manual way! ;)
-  
-  WriteRegStr HKCR ".blend" "" "blendfile"
-  WriteRegStr HKCR "blendfile" "" "Blender .blend File"
-  WriteRegStr HKCR "blendfile\shell" "" "open"
-  WriteRegStr HKCR "blendfile\DefaultIcon" "" $INSTDIR\blender.exe,1
-  WriteRegStr HKCR "blendfile\shell\open\command" "" \
-    '"$INSTDIR\blender.exe" "%1"'
-  
-SectionEnd
-
-UninstallText "This will uninstall Blender VERSION. Hit next to continue."
-
-Section "Uninstall"
-  Delete $INSTDIR\uninstall.exe
-  
-  ReadRegStr $BLENDERHOME HKLM "SOFTWARE\BlenderFoundation" "Home_Dir"
-  
-  ; remove registry keys
-  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Blender"
-  DeleteRegKey HKLM SOFTWARE\BlenderFoundation
-  ; remove files
-  [DELROOTDIRCONTS]
-  
-  Delete $BLENDERHOME\.blender\.bfont.ttf
-  Delete $BLENDERHOME\.blender\.Blanguages
-  ; remove shortcuts, if any.
-  Delete "$SMPROGRAMS\Blender Foundation\Blender\*.*"
-  Delete "$DESKTOP\Blender.lnk"
-  ; remove directories used.
-  RMDir /r $BLENDERHOME\.blender\locale
-  MessageBox MB_YESNO "Erase .blender\scripts folder? (ALL contents will be erased!)" /SD IDYES IDNO Next
-  RMDir /r $BLENDERHOME\.blender\scripts
-  RMDir /r $BLENDERHOME\.blender\scripts\bpymodules
-  RMDir /r $BLENDERHOME\.blender\scripts\bpydata
-  RMDir /r $BLENDERHOME\.blender\scripts\bpydata\config
-Next:
-  RMDir /r $BLENDERHOME\plugins\include
-  RMDir /r $BLENDERHOME\plugins
-  RMDir $BLENDERHOME\.blender
-  RMDir "$SMPROGRAMS\Blender Foundation\Blender"
-  RMDir "$SMPROGRAMS\Blender Foundation"
-  RMDir "$INSTDIR"
-  RMDir "$INSTDIR\.."
-SectionEnd
-
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
-  !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
diff --git a/release/windows/installer/00.unchecked.bmp b/release/windows/installer/00.unchecked.bmp
deleted file mode 100644 (file)
index 6d3ff5c..0000000
Binary files a/release/windows/installer/00.unchecked.bmp and /dev/null differ
diff --git a/release/windows/installer/01.installer.bmp b/release/windows/installer/01.installer.bmp
deleted file mode 100644 (file)
index 10fb014..0000000
Binary files a/release/windows/installer/01.installer.bmp and /dev/null differ
diff --git a/release/windows/installer/01.welcome.rtf b/release/windows/installer/01.welcome.rtf
deleted file mode 100644 (file)
index 3235e65..0000000
Binary files a/release/windows/installer/01.welcome.rtf and /dev/null differ
diff --git a/release/windows/installer/02.copyright.txt b/release/windows/installer/02.copyright.txt
deleted file mode 100644 (file)
index 4e67c25..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-BLENDER CREATOR LICENSE AGREEMENT
-
-IMPORTANT: PLEASE READ CAREFULLY BEFORE USING THE BLENDER CREATOR SOFTWARE. 
-
-This License Agreement for the Blender Creator software ("License Agreement") is an agreement between NaN Technologies B.V., Meerenakkerplein 11, 5652 BJ Eindhoven, the Netherlands ("NaN") and you (either an individual or a legal entity) ("You") with respect to the software product which this License Agreement accompanies (the "Software"). 
-
-By installing, copying or otherwise using the Software, You agree to be bound by the terms of this License Agreement. If You do not agree to the terms of this License Agreement do not install or use the Software.
-
-
-1. Grant of License
-
-Subject to the provisions of this License Agreement, NaN grants You a limited, non-exclusive, personal, non-sublicenseable, non-transferable, revocable license to use the Software at any computer You own or use. 
-
-2. License Restrictions
-
-Except as expressly provided under this License Agreement, or without prior written consent from NaN, or without permission by law, You may not: (a) remove or alter any proprietary, copyright or trademark notices in or on the Software; (b) modify, decompile, disassemble or reverse-engineer the Software; (c) sublicense, rent, lease, lend, assign or otherwise transfer rights to the Software.
-
-3. Permitted copying and electronic distribution of Software
-
-You are hereby granted permission to copy and distribute the Software without written agreement from NaN, only for non-commercial purposes.  Distributing the Software within a restricted non-public environment, such as using a local network in a company or a local network of a university, is considered a 'non-commercial purpose'. This entire License Agreement must appear in and/or accompany all copies of the Software.
-Distributing the Software 'bundled' in with ANY product is considered to be a 'commercial purpose'. 
-
-4. Intellectual Property Rights and Ownership
-
-Title and ownership to all rights, including intellectual property rights, in and to the Software shall at all times solely and exclusively remain with NaN. The Software is protected by national and international (copyright) laws and treaties. All rights not expressly granted herein are reserved to NaN.
-
-5. Disclaimer of Warranties
-
-NaN provides you with the Software "as is" and with all faults. NaN explicitly disclaims all warranties and guarantees and does not make any representations with respect to the Software, whether express, implied, or statutory, including, but not limited to any (if any) warranties of or related to: fitness for a particular purpose, title, non-infringement, lack of viruses, accuracy or completeness of responses, results, lack of negligence or lack of workmanlike effort, and correspondence to description. The entire risk arising out of use or performance of the Software remains with You.
-
-6. Limitation of Liability
-
-In no event shall NaN or its employees, agents or suppliers be liable for any direct, indirect, consequential, incidental, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, claims of third parties, damages as a result of injury to any person, or any other loss) arising out of or in connection with the license granted under this License Agreement or the use of or inability to use the Software, even if NaN has been advised of the possibility of such damages. 
-7. User warning and indemnification
-
-WARNING: use of the Software and use of any works that are (partially) created with the Software (the "Works") may cause physical or psychological reactions from You or from third parties, which may result in damages, injuries, losses and/or other negative consequences. You acknowledge that NaN can not be held liable for any such damages, injuries, losses and/or other negative consequences. You acknowledge that it is your obligation to investigate, prevent and/or minimize such reactions prior to having third parties use the Works.
-
-You shall indemnify and hold harmless NaN from and against all actions, claims, demands, proceedings, losses, damages, costs, charges and expenses, including but not limited to legal fees and expenses, arising out of or in connection with (i) the use of the Software by You and (ii) the use of any Works created with the Software by You or any third parties.
-
-8. Term and Termination
-
-This License Agreement and the license granted hereunder is effective until terminated. This License Agreement shall terminate automatically and forthwith if You fail to comply with the terms of this License Agreement. Upon termination, You shall cease the use of the Software, remove the Software from (the memory of) your computer and destroy all copies of the Software.
-
-9. Entire Agreement
-
-This License Agreement is the entire agreement between NaN and You in respect of the subject matter of the License Agreement. This License Agreement supersedes all prior written or oral agreements, proposals or understandings, and any other communications between NaN and You relating to the subject matter of this License Agreement.
-
-10. Enforceability
-
-If any provision of this License Agreement is held to be unenforceable by a court of competent jurisdiction for any reason, such provision shall be adapted or amended only to the extent necessary to make it enforceable, and the remainder of the License Agreement shall remain in effect.
-
-11. Governing law and disputes
-
-This License Agreement and all disputes arising from it will be governed by the laws of The Netherlands. All disputes arising in connection with this Agreement that cannot be settled amicably shall be brought before the competent court in Amsterdam, the Netherlands, to which jurisdiction NaN and You hereby irrevocably consent.
-
diff --git a/release/windows/installer/03.readme.txt b/release/windows/installer/03.readme.txt
deleted file mode 100644 (file)
index 9cfcc83..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-                    Blender V2.2
-
-  NaN Technologies B.V., the Netherlands
-
-     ----- GENERAL INFORMATION -----
-
-Blender Creator is a free and fully functional 3D modeling, rendering, animation and game creation package for Unix and Windows. Blender Creator is distributed without sources, it is exclusively developed and maintained by the Dutch company NaN Technologies B.V.
-
-This software is free to be applied for any purpose, excluding commercial distribution. For more about this, read the copyright notice included in the download file.
-
-The best resource for getting to know Blender Creator is of course 'The official Blender 2.0 guide'. This wonderfully designed 250 pages book contains tutorials, examples and a complete description of every aspect of the interface. 
-
-You can visit the shop page of the Blender site for more about this:
-
-    http://www.blender.nl/shop/
-
-More information about Blender can be found at:
-
-- The website
-
-    http://www.blender.nl
-
-- The beginners page
-
-    http://www.blender.nl/support/beginners.php
-
-- The Support Pages
-
-    http://www.blender.nl/support/
-
-- The frequently asked questions
-
-    http://www.blender.nl/support/faq/index.php
-
-- Tutorials
-
-  Good tutorials to start with are 'User Interface' and
-  'Navigating in 3D Space' and 'The Blender Windows'
-
-    http://www.blender.nl/search_item.php?part=tutorial
-
-- The Blender news-server: to post questions and contact other users
-
-    http://www.blender.nl/discussion/index.php
-
-
-Thank you for getting Blender Creator, I hope you will enjoy using it.
-
-Ton Roosendaal
-NaN Technologies B.V.
-
-http://www.blender.nl
-support@blender.nl
-
diff --git a/release/windows/installer/04.folder.rtf b/release/windows/installer/04.folder.rtf
deleted file mode 100644 (file)
index 1929843..0000000
Binary files a/release/windows/installer/04.folder.rtf and /dev/null differ
diff --git a/release/windows/installer/05.progress.rtf b/release/windows/installer/05.progress.rtf
deleted file mode 100644 (file)
index 5cf4ca9..0000000
Binary files a/release/windows/installer/05.progress.rtf and /dev/null differ
diff --git a/release/windows/installer/06.complete.rtf b/release/windows/installer/06.complete.rtf
deleted file mode 100644 (file)
index 1d2917d..0000000
Binary files a/release/windows/installer/06.complete.rtf and /dev/null differ
diff --git a/release/windows/installer/input/24bits-image.bmp b/release/windows/installer/input/24bits-image.bmp
deleted file mode 100644 (file)
index 5c7fd06..0000000
Binary files a/release/windows/installer/input/24bits-image.bmp and /dev/null differ
diff --git a/release/windows/publ_installer/00.installer.adx b/release/windows/publ_installer/00.installer.adx
deleted file mode 100644 (file)
index d0ecf54..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-[ADX]
-ADXVersion=1.00.00
-<=>2240
-CCM^8603:<;8=2
-CCM^8603:>;8=6
-CCM^8603:?;8=3
-CCM^8603:?;9=2
-CCM^8603:8;8=2
-CCM^8603:8;9=2
-CCM^8603::;8=2
-CCM^8603::;9=2
-CCM^8603::;:=2
-CCM^8603:;;8=2
-CCM^8603:4;:=2
-CCM^8603:4;<=2
-CCM^8603:5;8=$HM
-CCM^8603:5;9=$Dgokcl
-CCM^8603:5;:=$Naogte
-CCM^8603:5;;=$^cr
-CCM^8603:5;<=$Ii
-CCM^8603:5;\13=$Etn\7fue
-CCM^8603:5;>=[bu!\i %K`g
-CCM^8603:5;?=$Ucuz\7f
-CCM^8603:5;0=Qbjdkr %K`g
-CCM^8603:5;1=G!~uzgcw*E\7fmf&x'
-CCM^8603:5:8=$Ciom
-CCM^8603:5:9=Lbrvgtk-$"
-CCM^8603:5::=$Fdnzr
-CCM^8603;<;8=2
-CCM^8604:<;8=3
-CCM^8604:<;9=@kcolcr#',Ymz{n}v
-CCM^8604:<;:=Rkc`{c pzihamw+zjb&qirh#~c+\7fcghf"nrdeu tc`g(ik+kzst`kreg$,+Qd{+cc~&`duo#z~n{x.\7ffg'Dsgqsf*n~|\7fae.vh&rmje`~,jf+ksgqsooo&pb~d%(+^jzjt&l}ut#cbhd~jn.c'bsape#fi\7f|n|+ap'dd(g VDO+fjcn 
-CCM^8604:<:9=67?7
-CCM^8604:\13;8=3
-CCM^8604:\13;9=@kcolcr#',Ymz{n}v
-CCM^8604:\13;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs-*,[zn}x. ^cr*&ie*ud}+yj`v'rn(ivfx{ya\7fk+zjb&gaje-*,[zn}x. Ii#(of#sc~(oae)v'q`fr we,d~n|||ksc!|ne#legm%.+^pbur($Cbdond).bh"~it(qam~,\7fg+}\7far'cy|ta`~eeo+.bzgju/
-CCM^8604:\13:9=4625
-CCM^8604:>;8=3
-CCM^8604:>;9=@kcolcr#',Ymz{n}v
-CCM^8604:>;:=Voc!nolf*eelbmjzgc&cmjot*mgznoow"b~h{rs#kbo(b}+\gfb,Ghlz$,+Xykx}"%_d{$ jl,rg~.|ols&ug&ouo~|zbzn.voc!nolf$,+Xykx}"%Hn*&ie*ud}+jd`%s&viht#~c+g}kyypnrd(rhf*jbdn +.Rucr{&"@kbhmg,+gd'\7fn}&wbdx+|d.xzmw&dprrbixbfl.+gvbkr&
-CCM^8604:>:9=4625
-CCM^8604:?;8=3
-CCM^8604:?;9=@kcolcr#',Ymz{n}v
-CCM^8604:?;:=Voc!nolf*eelbmjzgc&cmjot*dj{+oe.gftmacr#|iy{bae.lrkcmt lx,oi\7fk+zjfh!|ne#ebn(jbykcc\7f!gh zeyy(xwxzgj(!(Vrfy\7f+*Rkx,"n`!qiu#}me|+zd.pbvmiee#~dn(mggk,'&Qzcsp*.Eg).bh"~it(bom-x+\7fj`\7f.vh&smvlbii+|ck+hkkc/(&Pqo\7fx()Mj`abj#(of#sc~(|oez"si!{ros*is|yohzkia!(otfg\7f%
-CCM^8604:?:9=4625
-CCM^8604:8;8=3
-CCM^8604:8;9=@kcolcr#',Ymz{n}v
-CCM^8604:8;:=Rkc`{c fdxnz+zck"wgr{qoqn$x!+`nkfbb!|i frxyihz+zjb&h|cmp$,+Xykx}"%IJ*&tl*odf\7fge{g'is($Cbdond).\7fa"trnx&e{~~jk\7fgei"nrdeu.
-CCM^8604:8:9=7641
-CCM^8604:9;8=3
-CCM^8604:9;9=@kcolcr#',Np\7f|jmvnio(Vrlm~n{x
-CCM^8604:9;:=Voc!{raw\7f\7f+jnbdy"tnn\7fu tbm\7f({kymgir`oc ll,\7f`n.bzgju!`gs#hinf+kszpfeumb.
-CCM^8604:9:9=15170
-CCM^8604::;8=3
-CCM^8604::;9=@kcolcr#',Np\7f|jmvnio(Vrlm~n{x
-CCM^8604::;:=Voc!{raw\7f\7f+jnbdy"tnn\7fu tbm\7f({kymgir`oc ll,\7f`n.bzgju!`gs#hinf+kszpfeumb.#*\ymx}+,Afhbmj"#~c+{\7fa{.g\7frsietjdk+a\7fkf},
-CCM^8604:::9=15170
-CCM^8604:;;8=3
-CCM^8604:;;9=@kcolcr#',Nzyay
-CCM^8604:;;:=Voc!xgtk*eelbmjzgc&cmjot*od}gj+`ms&cm&cqom\7fmo.d|"cid{&nl~,jdykjj{'cyaut-*,_zr.x~gdogqond*m+lbhmkpbhu(vawb"
-CCM^8604:;:9=4625
-CCM^8604:4;8=3
-CCM^8604:4;9=@kcolcr#',Nzyay
-CCM^8604:4;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&ouo~|zbz\7fkl)
-CCM^8604:4:9=4625
-CCM^8604:5;8=3
-CCM^8604:5;9=@kcolcr#',Nzyay
-CCM^8604:5;:=Voc!nolf*eelbmjzgc&cmjot*ex(j.Ykcc+Nfjy#legm+oej"ditdb mex+jn.dxguqsartfd"
-CCM^8604:5:9=4625
-CCM^8604;<;8=3
-CCM^8604;<;9=@kcolcr#',Nzyay
-CCM^8604;<;:=Voc!xgsp}cyl+wd{"tvdkofjoh+\7fj}+gldiszccw$,+Xykx}"%E`feeo(,\7fg+}\7far'cy|ta`~eeo+g\7fkot(!(Vrfy\7f+*Bieapb$!|i pae{(dxn|"snd(vapy{dzo#{|mscb|cd#cxne%
-CCM^8604;<:9=2
-CCM^8604;\13;8=3
-CCM^8604;\13;9=@kcolcr#',Nzyay
-CCM^8604;\13;:=Mic!gt ne~n(dh+zjb&qzigqkax(\7ffjz"pcsm&svz|d{n.\7fa"uso(eovfh+fdz+lg'`n}hd-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^8604;\13:9=2
-CCM^8604;>;8=3
-CCM^8604;>;9=@kcolcr#',Nzyay
-CCM^8604;>;:=Onurahg#imiaek\7f.dnjd u)-
-CCM^8604;>:9=2
-CCM^8604;?;8=3
-CCM^8604;?;9=@kcolcr#',Nzyay
-CCM^8604;?;:=Voc!ksswea+znib}vu\7f!ahflxaj|bae.dnjd(rhb~,|ix.x{rwirmb we,im+cn|ebb!\7fotk*xcm+}r}vbk!zcgjyxyq+md{nc&ogr ao,mg~`o "'Vmmgsf*odf\7fohz"~itz&sllx|iyk+~phphlcr#lcy(ckg~,
-CCM^8604;?:9=2
-CCM^8604;8;8=3
-CCM^8604;8;9=@kcolcr#',Nzyay
-CCM^8604;8;:=Voc!aren*eelbmjzgc&hf&tko,manbo.`bjn\7f&cl\7f`o(ea\7f.`b&smaip~iymo +.Rkc`{c `eb\7fihz+wmrt!{ifw}mym+~yatnbdz&flx,cmg~%
-CCM^8604;8:9=4625
-CCM^8604;9;8=3
-CCM^8604;9;9=@kcolcr#',Nzyay
-CCM^8604;9;:=Voc!mhd#ej+|ck+]gk`,M~tqko\7faei+tkw&gaje#}mx(ykjmjbb!jcflxi+igb+ad'rim&iwoax(ha~bf'dd(vrlziydr.nvvugb|cd-*,_`b}+]gk`,M~tqko\7faei+tkw&gaje#gmr(ik+jcjgfmb.#*\gmj}n.mer`ah b*jymxf+mmw\7f!ihd#~~r(jijgl)
-CCM^8604;9:9=2
-CCM^8604;:;8=3
-CCM^8604;:;9=@kcolcr#',Nzyay
-CCM^8604;:;:=Voc!m~tqko\7fad`+~phed{u gch+fdz+mmjvmmre#yyhkn}xhwkjx&& Wbex(for.jfpd(defd,hi~}nj"e\7f!ih lziyi\7fay.Afhbmj lx,d|cky.gutnz( #Z`nixk+mmir`kr zeyy(xamzuftd(vrl|eomy.map'nddv.
-CCM^8604;::9=2
-CCM^8604;;;8=3
-CCM^8604;;;9=@kcolcr#',Nzyay
-CCM^8604;;;:=[hss(uyp~if(oan}"iiu(nauo,nfd{lf"fp`ajaafi+encd|{'rn(uu`iix{m{gb{'cy|ta`~,\7f`n.bzgju!nton*xcax.Xkna+Dprrbixbfl.qgr'`hdc.#*\gmj}n.ahhuiet#sc~z+}dhvpgsm&pqezbln|+hmu&imjp-
-CCM^8604;;:9=2
-CCM^8604;4;8=0
-CCM^8604;4;9=@kcolcr#',Nzyay
-CCM^8604;4;:=Voc!m~tqko\7fad`+~phed{u tk\7f+kj`hknkce(deee~n(jbg.ma&u`c j~if{+yn|g'cy|ta`~io&+.Raw'k`q&nfoh+|d.y{l'rim&e{~~jk\7fgd`"wtnkcsp*mlib`%
-CCM^8604;4:9=2
-CCM^8604;5;8=3
-CCM^8604;5;9=@kcolcr#',Nzyay
-CCM^8604;5;:=Voc!nolf*eelbmjzgc&cmjot*od}gj+`ms&cm&e{~~jk\7fko "'Ou(kaz*mgznoow"ec!ah vyi+jr.\7ffg'ux{ren*cy(gahegc&cq&amexcmy.j~rkobirild"+A\7f.|gnk&cm&shc|{mo 
-CCM^8604;5:9=4625
-CCM^86048<;8=3
-CCM^86048<;9=@kcolcr#',Nzyay
-CCM^86048<;:=Ci&dztoq*chk~|ykf'btzond*xcm+kszpfeuain#z~dkn}x "'Rim&aqidb~n.mgnb.r!&mbs,im+jjcc`ce&& Sfij{n.dlvfoo(g exix`+md~{'gol&tqs,jojge 
-CCM^86048<:9=2
-CCM^86048\13;8=3
-CCM^86048\13;9=@kcolcr#',Nzyay
-CCM^86048\13;:=Uoomm&e{~~jk\7fgei"nrdeu b*hj|j.n|pht!`gs#eoh}y|nj,'Riau Po`m%Nv\7f|cdrhfa yc|+nbbn.of\7f!jc gkajonj%."Wjdiue#en\7fib`+o"atd{n `e|r(j`o.vu\7f!iaajd"
-CCM^86048\13:9=4625
-CCM^86048>;8=3
-CCM^86048>;9=@kcolcr#',Nzyay
-CCM^86048>;:=Uoomm&e{~~jk\7fgei"nrdeu wbiym+yj}l r!mhovmd+zdaf.mi&u`c go\7f\7faeo\7fgmi&ezovf$,+Qd{+cc~&omcd#~c+zncdxg'unec ec`n{+lnhmuc!qiu#ime(nv\7f|cdr!ijl#ej+|ck+gvbkr&
-CCM^86048>:9=2
-CCM^86048?;8=0
-CCM^86048?;9=@kcolcr#',\iy`b`e
-CCM^86048?;:=Uoomm&e{~~jk\7fgei"nrdeu excf(\7ffn.Qbjg%Cxwxmh|b`l.xnv!nolf*\7fden.bzgju!\7fcrf*\7f`a{~nj,
-CCM^86048?:9=2
-CCM^860488;8=0
-CCM^860488;9=@kcolcr#',Bfmayccsonf
-CCM^860488;:=Ckj!areny,|myk+}wded{ufvf`r(nv\7f|cdrdl(
-CCM^860488:9=2
-CCM^860489;8=3
-CCM^860489;9=Kiouagljpi
-CCM^860489;:=Rucqitimm,mgy.Nvvugb|oom$,+Xgkj}g'Q`ar.
-CCM^860489:9=2
-CCM^86048:;8=3
-CCM^86048:;9=@kcolcr#',Nzyay
-CCM^86048:;:=Ci&dztoq*{j{+kemmrhumteg*{cagk+~pbv`zond*jdz+kszpfeuain-*,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^86048::9=2
-CCM^860484;8=3
-CCM^860484;9=@kcolcr#',H`daxk"Aimlcr#Fchi\7fgd`
-CCM^860484:9=2
-CCM^86048498=Fntdkroqcix
-CCM^86048499=Fuowmu
-CCM^860485;8=3
-CCM^860485;9=@kcolcr#',Xmgkhz"@tn}v ee~+[cayzarrr
-CCM^860485:9=2
-CCM^86048598=Girdz&oq*\7fndnm\7f.c'asgsp#dmfm+hd|"nhr|glocbl(xfd|vdsu{(
-CCM^86049<;8=3
-CCM^86049<;9=@kcolcr#',Nzyay
-CCM^86049<;:=Ci&dztoq*chk~|ykf'qiaje#kx\7fmf~\7fgl`&ug&imyxjdg.xfmurb}rs-
-CCM^86049<:9=2
-CCM^86049\13;8=3
-CCM^86049\13;9=@kcolcr#',Ymz{n}v
-CCM^86049\13;:=Mic!gt ne~n(mggkq'qdzc jd\7f\7figbnj"sn`|&rf{ybzn.rawu&rqutfg,\7fg+ln.pbuuittfn"
-CCM^86049\13:9=2
-CCM^86049\1398=Pbuuitt#,Bd\7f
-CCM^86049\1399=Pbuuitt#,@j|n|
-CCM^86049>;8=3
-CCM^86049>;9=@kcolcr#',Ymz{n}v
-CCM^86049>;:=Rkc`{c jd\7fnz\7f.]anrkd(Hunhiy(.j+glsi!|ne#xifg}oibg'bsape-
-CCM^86049>:9=67?7
-CCM^86049?;8=3
-CCM^86049?;9=@kcolcr#',Nzyay
-CCM^86049?;:=[hs!`gvf*ee{n|\7fkf'rim&wqebl(]ag{ob(!(Vlfk\7fn(hfnmi'rim&mfnej(j`o.vu\7f!iaajd"
-CCM^86049?:9=2
-CCM^860498;8=3
-CCM^860498;9=@kcolcr#',Nzyay
-CCM^860498;:=Voc!losh*ex(ea\7f.pbgeq&flx,jkhkx},'&Qdcapo,h`nm`.vh&lime#yyym+zcov'rim&mfnej(b}+ypnrd(cnbh`nl+oej"wtnxcros,bfxkyzgc&hfro#~dn(o|bxg)
-CCM^860498:9=2
-CCM^860::?31=Ahhgatm
-CCM^860::?28='t&iiu mex+jnke.qbrtx( Bxi+qd{+}wuc!qiu#}me|+zd.g\7fou7
-CCM^860::>31=Gutnz
-CCM^860::>28=Qbrtx&hby,bf\7fky`ck&dztoq$,[dnoxk"dio|gcw*ud}y.xadsq`zc sxc}aoky.dht!`cls$
-CCM^860::<;8=1
-CCM^8603:\13;9=^[udzpeqVdden}Wa`mZcdcngo~&kykjzmu+3&~x.}eeldyx g\7fc
-CCM^8603:\13;8=A\13ZEGEUNOr:Tm|j`i[JNKGLPt\13W\nc{Rqa~EN(zjz
-CCM^8603:4;8=2
-CCM^8603:9;8=2
-CCM^8603:9;9=2
-CCM^8603:9;:=2
-CCM^8603:\13;;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\jd\7f\7figbn|^76/ahswk`gmy bmm<6
-CCM^860334;8=2
-CCM^860334;9=2
-CCM^860339;8=
-CCM^8603:8;;=2
-CCM^860::\13>\13=3
-CCM^860::<?;=3
-CCM^860::<9:=3
-CCM^860::<;;=2
-CCM^860::<9<=A\13ZEgeunob\7f{+oej"Tcu|ondyPmzj``RFbuj|ip_yddz\7fm~z,fby
-CCM^860::>38=3
-CCM^860::<;\13=>Nhr|gloLcgln|5RWioo{raof"npn
-CCM^860::<;?=3
-CCM^860::<;1=3
-CCM^860::<9\13=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.zICCY\I@J[XKXQPHIUTdlfdhmagk0&Fb``}jt*vD@MRQHBCTUD[YRLEXWjgkejdnjdTuhff`Wg{keRahklihd8"Hnnj{gz+{NJM__@FMX[N]T\MHR]jjemnjbdnROkdfsm|Ocld7#Lnhj{ns/}@MEZU@DKJBTCCDNHFC\Pej\7f\7fj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejgu\13EaupokuEifkwFIB_^DICBFSFIHFB@G[UnnrwbxiWEbmyaqh`uTQimnc|{WM~|pbhu^crpcceT^`b`qsgmdZBoobomy5^`kiuuijlP~~bflr
-CCM^860::<;0=>Nhr|gloLcgln|5R@kcolcr-otnt7Ge}vfjmNilgo~5THa{wpnai|(t{~p7Ae}\7fonk@ndbeq4PYmjjfk,s~ut:ImyxjdgHdbfbt?TNeoz"~zg505~;Oo{raofJddoky0^w\7fu`in1:"odg505~
-CCM^860::\13>;=3
-CCM^860::<?<=2
-CCM^860::\13?1=3
-CCM^860::<91=2
-CCM^860::\13>8=3502:455
-CCM^860::\13?\13=
-CCM^860::\13?>=
-CCM^860::\13?0=2
-CCM^860::\13>:=3
-CCM^860::\13\13?=1
-CCM^860::\13\130=3
-CCM^860::>3\13=2
-CCM^860::\13\13\13=>WtnotanLegmx0WLnbhemt
-CCM^860::\13\13>=@kcolcr-otn37Ge}vfjmNilgo~5TIbn`fbt/m~e8:7;3;505~Diqqtidbx%|sz02KiuuijlEe`omy0WMmw\7fsaahw$xs|0>0>97\13:3zRfkhfm%zsz9;Oo{raofJddoky0^Uc`lke-~t\7f3;5;52<\13:tNeoz"~zg57Gltr`djFlfhnz5RCknw(tzj;31<08050rr~righ23$hgd02B`qsgmd@ooniy6W~rzjhh38(dof7;3;5;59<z
-CCM^860::>3>=3
-CCM^860::>3?=2
-CCM^860::\13<8=3
-CCM^860::>?8=2
-CCM^860::\13<9=3
-CCM^860::>?9=2
-CCM^860::\13<:=3
-CCM^860::>?:=2
-CCM^860::\13<;=3
-CCM^860::>?;=2
-CCM^860::\13<<=3
-CCM^860::>?<=2
-CCM^860::\13<\13=2
-CCM^860::>?\13=2
-CCM^860::\13<>=3
-CCM^860::>?>=2
-CCM^860::\13\139=Lhr!i&Nvgnnz
-CCM^860::\13\13:=
-CCM^860::\13\13;=upq/jjemniy&eb
-CCM^860::\13\13<=
-CCM^860::\13>1=@kcolcr#Zyidb}ckp
-CCM^860::\13\138=0)43
-CCM^860::9>9=2
-CCM^860::9>:=3
-CCM^860::9><=3
-CCM^860::9>\13=3
-CCM^860::5<<=2
-CCM^860::9>?=
-CCM^860::<8;=2
-CCM^860::<8<=
-CCM^860::<8\13=>Nhr|gloLcgln|5RJbjq&sro
-CCM^860::<8>=
-CCM^860::831=2
-CCM^860::5\139=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ02$ee{\7fogbgu(cev
-CCM^860::5\13:=
-CCM^860::5\13;=2
-CCM^860::<9>=3
-CCM^860::<9?=3
-CCM^860::5\13<=2
-CCM^860::5\13\13=2
-CCM^860::5\13>=3
-CCM^860::5<\13=2
-CCM^860::5<>=2
-CCM^860::5<?=
-CCM^860::5<1=2
-CCM^860::5<0=2
-CCM^860::538=2
-CCM^860::52>=3
-CCM^860::52?=>Nhr|gloLcgln|5R@FEJ]V
-CCM^860::520=2
-CCM^860::\13>>=2
-CCM^860::\13>?=2
-CCM^8603:?;:=3
-CCM^8603:?;;=2
-CCM^8603:>;:=>FBUmkp\13
-CCM^8603:;;>=2
-CCM^860::9>;=JLCXWELBY_N[T\DAV[(cdcng1$Ommo~bv.\13cdcnglegm0]\7f|kia}@MEZUOGIX]N]]UIN\Zboobonbbn5*Ccgislw#7Idn`okp'@hdc;P~~bflrCEG^YBDGSPO_TZDA_R`kcol`iooPx`nbgRmwcoTeongmel0&Okdfsm|/;!6Ee{\7fogbDhjemt>_H`nfoky g\7fc#($%2(7X|ygei~OMDQYCOK_XMXQYAMSZcdcnglegmWJnhcrjuAeom1$Ommo~bv.\13#4Onp~mgdMagjgu8]Jjemniy&nvn,.6\13R|timmpCCNWTBMDGMWKA@BEEMW]dhvpgsmZMji~d{dh\7fRUnhegqs_Iyyzn`\7fXguuhgh\Vdee{\7fogb^Ejdfbeq1Hb{{bjwLfkd3Dlfdhnz0]\7f|kia}@MEZU@DKJBTCCDNHFC\Pej\7f\7fj|nROnesguoe~P\aejdyq[Etztem~Znzxgd`^Rhhfutbf`WJgkejgu\13Tfonp~mgdXzygl`\13\13Ahswk`gNdbokp9ZTfonp~mgd%ksk9Trsahg\7f
-CCM^860::\1328=Ubjbgke
-CCM^860::>:8=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ02${ndhafk,urg
-CCM^860::>\138=2
-CCM^860::521=[bu
-CCM^860:;<;8=Lh
-CCM^860::829=Rkc`{c qomo(\7ffn.dhjmgqimm,Gahke}g'Gfzcenob\7f&+.^}g'rim&s`xcgd+lj|"si!~oet*xcm+|n}v'ig(rhf*hdk~cn`v)
-CCM^860::9:9=Fh&xgs bionx\7f.jbn'rim&tfxax(dh+zjb&qzccfneeo+Bbmgiud(Ggqoifmez4."N`!qiu#iddgxk+@m+&rmrus*{bdg.hbmtc/(&Tl*ee{\7fogb"snd(vrlm~je'.raw'kt{r bionx\7f.\7ffkt&`otefgie|%
-CCM^860::\1329=Nnedfue#Kkymncn`v
-CCM^860::>:9=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ01$odxr|bijs(upr
-CCM^860::>\139=3
-CCM^860::\132:=Ceit|&Boobomy.H|gfrnz
-CCM^860::>::=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ00$~niocn v\7fr
-CCM^860::>\13:=2
-CCM^860::82;=Kiuuijlb~edf+Hdbfbt
-CCM^860::9:;=Wtc!|ne#lendo.iknhq!|i pzihamw+zjb&ggjdfx,|`n|n.{hs!\7fgnw*xcm+o{~nne`|oom*jbdn}+zm'dd(eoscio(\7fa%.Vh&rxccjlu+i+jbhdbtdfr ee`omy"+z{wc!i&nf},eifk'.mu&t{c wbi+Ti.I|mpudTd0#*n~|\7fae.vh&rmje`~,jf+ksgqsooo&flfhnz%.+^pbur(Zb#Dis|Wl;."si!kinwcb~m%\11
-CCM^860::\132;=Aoin{c Pox~x+Hdbfbt
-CCM^860::>:;=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ07$jddoky ps`
-CCM^860::>\13;=2
-CCM^860::82<=Uhtjahg
-CCM^860::9:<=Rkc`{c tke\7f(|fbbg'#r(os#yi\7f}{.d`"~itz&clg|~|n|%\11
-CCM^860::\132<=Qbrtx&Pqekymx}
-CCM^860::>:<=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ06$|ygl|n}q)tun
-CCM^860::>\13<=2
-CCM^860::82>=Qbrtx&wby,x}hmn}qasm
-CCM^860::9:>='t&viu p\7fohmx}m{nk\7f!{ctvz,df+wd{p'enevuwo~%(+^ykqt&]j&Fjdex`Wl;."si!m~iw*\7fn|~~%\11
-CCM^860::98>=Qsgs|&Boobomy.[{`kor`cr
-CCM^860::>3;=>Nhr|gloLcgln|5R`kcolcr-otn
-CCM^860::>3<=2
-CCM^860::>39=3
-CCM^860::\132>=Qbrtx&Clg|gm\7fk
-CCM^860::>:>=^[udzpeqVdden}Wjgqcmgv\qo`nixkWykibn\7fu\s\7fngWb`xzckjdzZ05$ode{bnzg)tun
-CCM^860::>\13>=2
-CCM^860::<:8=Wioo{raofiy
-CCM^860::<:9=Voc!}himyxjdg.{|m`t`e&wjf`+zncdxg'`hdcs#kbo(magjguu-(uhlxxh}\7f}'.cib!zcgjyxyq+kezpncr(`rlg,\7f`n.ogql(!(Grf*ud}+}~|g'\7fn}&wbdx+|d.~`kiuuijl<
-CCM^860::<::=Mic!g` `ea{gekezq'or(gcwczn&+.Nvks&u`c sxclzjc+lgaism&swk~\7faei+[lnhr|glo$
-CCM^860::<:;=Wioo{raof,x}hmn}qasmd\7f!
-CCM^860::<:<=Ci&dztoq*chk~|ykf'qiaje#~~raei+zm'soahswk`g(\7ffn.ruifzgm-*,^fb`xzckj!`gs#hinf+mj`abjdl(
-CCM^860::\13><=Qbrtx
-CCM^860::<9;=Lhr!i&Nvgnnzwrwr~{Dmmhdfx,[}ibb}jbt}:(21v
-CCM^860::<;:=Giamauh#',^fbznj"Tr`|cs
-CCM^860::<;9=3752
-CCM^860:;<;9=^[udzpeqVdden}Wa`mZcdcngo~&\7fb`oautZ+&,
\ No newline at end of file
diff --git a/release/windows/publ_installer/00.installer.ico b/release/windows/publ_installer/00.installer.ico
deleted file mode 100644 (file)
index 4daf11e..0000000
Binary files a/release/windows/publ_installer/00.installer.ico and /dev/null differ
diff --git a/release/windows/publ_installer/01.installer.bmp b/release/windows/publ_installer/01.installer.bmp
deleted file mode 100644 (file)
index d62832c..0000000
Binary files a/release/windows/publ_installer/01.installer.bmp and /dev/null differ
diff --git a/release/windows/publ_installer/01.welcome.rtf b/release/windows/publ_installer/01.welcome.rtf
deleted file mode 100644 (file)
index b7ff8c2..0000000
Binary files a/release/windows/publ_installer/01.welcome.rtf and /dev/null differ
diff --git a/release/windows/publ_installer/02.copyright.txt b/release/windows/publ_installer/02.copyright.txt
deleted file mode 100644 (file)
index 4e67c25..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-BLENDER CREATOR LICENSE AGREEMENT
-
-IMPORTANT: PLEASE READ CAREFULLY BEFORE USING THE BLENDER CREATOR SOFTWARE. 
-
-This License Agreement for the Blender Creator software ("License Agreement") is an agreement between NaN Technologies B.V., Meerenakkerplein 11, 5652 BJ Eindhoven, the Netherlands ("NaN") and you (either an individual or a legal entity) ("You") with respect to the software product which this License Agreement accompanies (the "Software"). 
-
-By installing, copying or otherwise using the Software, You agree to be bound by the terms of this License Agreement. If You do not agree to the terms of this License Agreement do not install or use the Software.
-
-
-1. Grant of License
-
-Subject to the provisions of this License Agreement, NaN grants You a limited, non-exclusive, personal, non-sublicenseable, non-transferable, revocable license to use the Software at any computer You own or use. 
-
-2. License Restrictions
-
-Except as expressly provided under this License Agreement, or without prior written consent from NaN, or without permission by law, You may not: (a) remove or alter any proprietary, copyright or trademark notices in or on the Software; (b) modify, decompile, disassemble or reverse-engineer the Software; (c) sublicense, rent, lease, lend, assign or otherwise transfer rights to the Software.
-
-3. Permitted copying and electronic distribution of Software
-
-You are hereby granted permission to copy and distribute the Software without written agreement from NaN, only for non-commercial purposes.  Distributing the Software within a restricted non-public environment, such as using a local network in a company or a local network of a university, is considered a 'non-commercial purpose'. This entire License Agreement must appear in and/or accompany all copies of the Software.
-Distributing the Software 'bundled' in with ANY product is considered to be a 'commercial purpose'. 
-
-4. Intellectual Property Rights and Ownership
-
-Title and ownership to all rights, including intellectual property rights, in and to the Software shall at all times solely and exclusively remain with NaN. The Software is protected by national and international (copyright) laws and treaties. All rights not expressly granted herein are reserved to NaN.
-
-5. Disclaimer of Warranties
-
-NaN provides you with the Software "as is" and with all faults. NaN explicitly disclaims all warranties and guarantees and does not make any representations with respect to the Software, whether express, implied, or statutory, including, but not limited to any (if any) warranties of or related to: fitness for a particular purpose, title, non-infringement, lack of viruses, accuracy or completeness of responses, results, lack of negligence or lack of workmanlike effort, and correspondence to description. The entire risk arising out of use or performance of the Software remains with You.
-
-6. Limitation of Liability
-
-In no event shall NaN or its employees, agents or suppliers be liable for any direct, indirect, consequential, incidental, special, punitive, or other damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, claims of third parties, damages as a result of injury to any person, or any other loss) arising out of or in connection with the license granted under this License Agreement or the use of or inability to use the Software, even if NaN has been advised of the possibility of such damages. 
-7. User warning and indemnification
-
-WARNING: use of the Software and use of any works that are (partially) created with the Software (the "Works") may cause physical or psychological reactions from You or from third parties, which may result in damages, injuries, losses and/or other negative consequences. You acknowledge that NaN can not be held liable for any such damages, injuries, losses and/or other negative consequences. You acknowledge that it is your obligation to investigate, prevent and/or minimize such reactions prior to having third parties use the Works.
-
-You shall indemnify and hold harmless NaN from and against all actions, claims, demands, proceedings, losses, damages, costs, charges and expenses, including but not limited to legal fees and expenses, arising out of or in connection with (i) the use of the Software by You and (ii) the use of any Works created with the Software by You or any third parties.
-
-8. Term and Termination
-
-This License Agreement and the license granted hereunder is effective until terminated. This License Agreement shall terminate automatically and forthwith if You fail to comply with the terms of this License Agreement. Upon termination, You shall cease the use of the Software, remove the Software from (the memory of) your computer and destroy all copies of the Software.
-
-9. Entire Agreement
-
-This License Agreement is the entire agreement between NaN and You in respect of the subject matter of the License Agreement. This License Agreement supersedes all prior written or oral agreements, proposals or understandings, and any other communications between NaN and You relating to the subject matter of this License Agreement.
-
-10. Enforceability
-
-If any provision of this License Agreement is held to be unenforceable by a court of competent jurisdiction for any reason, such provision shall be adapted or amended only to the extent necessary to make it enforceable, and the remainder of the License Agreement shall remain in effect.
-
-11. Governing law and disputes
-
-This License Agreement and all disputes arising from it will be governed by the laws of The Netherlands. All disputes arising in connection with this Agreement that cannot be settled amicably shall be brought before the competent court in Amsterdam, the Netherlands, to which jurisdiction NaN and You hereby irrevocably consent.
-
diff --git a/release/windows/publ_installer/03.readme.txt b/release/windows/publ_installer/03.readme.txt
deleted file mode 100644 (file)
index 9cfcc83..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-                    Blender V2.2
-
-  NaN Technologies B.V., the Netherlands
-
-     ----- GENERAL INFORMATION -----
-
-Blender Creator is a free and fully functional 3D modeling, rendering, animation and game creation package for Unix and Windows. Blender Creator is distributed without sources, it is exclusively developed and maintained by the Dutch company NaN Technologies B.V.
-
-This software is free to be applied for any purpose, excluding commercial distribution. For more about this, read the copyright notice included in the download file.
-
-The best resource for getting to know Blender Creator is of course 'The official Blender 2.0 guide'. This wonderfully designed 250 pages book contains tutorials, examples and a complete description of every aspect of the interface. 
-
-You can visit the shop page of the Blender site for more about this:
-
-    http://www.blender.nl/shop/
-
-More information about Blender can be found at:
-
-- The website
-
-    http://www.blender.nl
-
-- The beginners page
-
-    http://www.blender.nl/support/beginners.php
-
-- The Support Pages
-
-    http://www.blender.nl/support/
-
-- The frequently asked questions
-
-    http://www.blender.nl/support/faq/index.php
-
-- Tutorials
-
-  Good tutorials to start with are 'User Interface' and
-  'Navigating in 3D Space' and 'The Blender Windows'
-
-    http://www.blender.nl/search_item.php?part=tutorial
-
-- The Blender news-server: to post questions and contact other users
-
-    http://www.blender.nl/discussion/index.php
-
-
-Thank you for getting Blender Creator, I hope you will enjoy using it.
-
-Ton Roosendaal
-NaN Technologies B.V.
-
-http://www.blender.nl
-support@blender.nl
-
diff --git a/release/windows/publ_installer/04.folder.rtf b/release/windows/publ_installer/04.folder.rtf
deleted file mode 100644 (file)
index 2e9daee..0000000
Binary files a/release/windows/publ_installer/04.folder.rtf and /dev/null differ
diff --git a/release/windows/publ_installer/05.progress.rtf b/release/windows/publ_installer/05.progress.rtf
deleted file mode 100644 (file)
index af6b140..0000000
Binary files a/release/windows/publ_installer/05.progress.rtf and /dev/null differ
diff --git a/release/windows/publ_installer/06.complete.rtf b/release/windows/publ_installer/06.complete.rtf
deleted file mode 100644 (file)
index d901313..0000000
Binary files a/release/windows/publ_installer/06.complete.rtf and /dev/null differ
index 85486c3a81fe890e70eb98c60e3c636362a6ff7c..087369e0ad4809944826d8edb795ae6c3c529b22 100644 (file)
@@ -159,7 +159,6 @@ COMLIB += $(OCGDIR)/blender/makesdna/$(DEBUG_DIR)libdna.a
 COMLIB += $(NAN_GUARDEDALLOC)/lib/libguardedalloc.a
 COMLIB += $(NAN_MEMUTIL)/lib/libmemutil.a
 COMLIB += $(NAN_PNG)/lib/libpng.a
-COMLIB += $(OCGDIR)/blender/yafray/$(DEBUG_DIR)libyafrayexport.a
 
 ifeq ($(WITH_QUICKTIME), true)
     COMLIB += $(OCGDIR)/blender/blenderqt/$(DEBUG_DIR)libblenderqt.a
index 9ec9efa6a8db360cd5ae367b245896e2465d4a26..344d51db248b53450df8e93ab829c957670acb8d 100644 (file)
@@ -41,7 +41,3 @@ ENDIF(WITH_QUICKTIME)
 IF(WITH_PYTHON)
   SUBDIRS(python)
 ENDIF(WITH_PYTHON)
-
-IF(WITH_YAFRAY)
-  SUBDIRS(yafray)
-ENDIF(WITH_YAFRAY)
index b8809c87213ead47af83a59d75d52816f349b410..64eb1a2614b6a1f45c5e63a21a148c57a7be7a0a 100644 (file)
@@ -32,7 +32,7 @@ include nan_definitions.mk
 
 DIRS = windowmanager editors blenloader readblenfile
 DIRS += avi imbuf render radiosity blenlib blenkernel blenpluginapi
-DIRS += makesdna makesrna yafray
+DIRS += makesdna makesrna
 DIRS += python nodes gpu
 DIRS += blenfont
 
index f8b7fd358fefade163f5b17f4b3c74b7d54f2925..691fbf9b494c6c195d90d5ada1a91f47a397b4bb 100644 (file)
@@ -25,9 +25,6 @@ SConscript(['avi/SConscript',
 if env['WITH_BF_PYTHON']:
     SConscript(['python/SConscript'])
 
-if env['WITH_BF_YAFRAY']:
-    SConscript(['yafray/SConscript'])
-
 if env['WITH_BF_DDS']:
     SConscript (['imbuf/intern/dds/SConscript'])
 
index c37b200d38b1eeee283340a04bb035b81e88f50d..e91039e31f40d9911470059e9dcdf7998a674897 100644 (file)
@@ -124,7 +124,8 @@ typedef struct ModifierTypeInfo {
         */
        void (*deformVerts)(struct ModifierData *md, struct Object *ob,
                            struct DerivedMesh *derivedData,
-                           float (*vertexCos)[3], int numVerts);
+                           float (*vertexCos)[3], int numVerts,
+                           int useRenderParams, int isFinalCalc);
 
        /* Like deformVerts but called during editmode (for supporting modifiers)
         */
index fd92360f6c21fab47a29cd74a7dcfb85d4a339dd..25ca0b0f1b1d56cde140c1c3f7efc62befb6b5b0 100644 (file)
@@ -1403,7 +1403,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier
                int numVerts;
                float (*deformedVerts)[3] = mesh_getVertexCos(me, &numVerts);
 
-               mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+               mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, 0, 0);
                dm = getMeshDerivedMesh(me, ob, deformedVerts);
 
                MEM_freeN(deformedVerts);
@@ -1628,7 +1628,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
                                if(!deformedVerts)
                                        deformedVerts = mesh_getVertexCos(me, &numVerts);
 
-                               mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+                               mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, useRenderParams, useDeform);
                        } else {
                                break;
                        }
@@ -1709,7 +1709,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
                                }
                        }
 
-                       mti->deformVerts(md, ob, dm, deformedVerts, numVerts);
+                       mti->deformVerts(md, ob, dm, deformedVerts, numVerts, useRenderParams, useDeform);
                } else {
                        DerivedMesh *ndm;
 
index 645f468d250f91af8df998bc52fec81ba5959664..8779ed5404b0fd58bff7ce29b30f01cf3d44fe78 100644 (file)
@@ -1256,7 +1256,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
                                originalVerts = MEM_dupallocN(deformedVerts);
                        }
                        
-                       mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
+                       mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, forRender, editmode);
 
                        if (md==preTesselatePoint)
                                break;
@@ -1317,7 +1317,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
                                fp+= offs;
                        }
                        
-                       mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert);
+                       mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert, forRender, editmode);
                        
                        fp= allverts;
                        for (dl=dispbase->first; dl; dl=dl->next) {
@@ -1329,7 +1329,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
                }
                else {
                        for (dl=dispbase->first; dl; dl=dl->next) {
-                               mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr);
+                               mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr, forRender, editmode);
                        }
                }
        }
index 6e5f7c82aed0b68fa2cafa760877533a402573cd..5cf52d093147466df98793812958ff4cee993151 100644 (file)
@@ -924,7 +924,7 @@ void lattice_calc_modifiers(Scene *scene, Object *ob)
                if (mti->type!=eModifierTypeType_OnlyDeform) continue;
 
                if (!vertexCos) vertexCos = lattice_getVertexCos(ob, &numVerts);
-               mti->deformVerts(md, ob, NULL, vertexCos, numVerts);
+               mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
        }
 
        /* always displist to make this work like derivedmesh */
index d02b660d99262c2361191838137e7d3aaa3171ee..5610db355e13fa70d8a7ffab38f378402dca36ef 100644 (file)
@@ -187,7 +187,7 @@ static void curveModifier_updateDepgraph(
 
 static void curveModifier_deformVerts(
                                      ModifierData *md, Object *ob, DerivedMesh *derivedData,
-         float (*vertexCos)[3], int numVerts)
+         float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        CurveModifierData *cmd = (CurveModifierData*) md;
 
@@ -203,7 +203,7 @@ static void curveModifier_deformVertsEM(
 
        if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 
-       curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
+       curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 
        if(!derivedData) dm->release(dm);
 }
@@ -276,7 +276,7 @@ static void modifier_vgroup_cache(ModifierData *md, float (*vertexCos)[3])
 
 static void latticeModifier_deformVerts(
                                        ModifierData *md, Object *ob, DerivedMesh *derivedData,
-     float (*vertexCos)[3], int numVerts)
+     float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        LatticeModifierData *lmd = (LatticeModifierData*) md;
 
@@ -295,7 +295,7 @@ static void latticeModifier_deformVertsEM(
 
        if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 
-       latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
+       latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
 
        if(!derivedData) dm->release(dm);
 }
@@ -3686,7 +3686,7 @@ static void displaceModifier_do(
 
 static void displaceModifier_deformVerts(
                                         ModifierData *md, Object *ob, DerivedMesh *derivedData,
-      float (*vertexCos)[3], int numVerts)
+      float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm;
 
@@ -4371,7 +4371,7 @@ static void smoothModifier_do(
 
 static void smoothModifier_deformVerts(
                                       ModifierData *md, Object *ob, DerivedMesh *derivedData,
-          float (*vertexCos)[3], int numVerts)
+          float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm;
 
@@ -4951,7 +4951,7 @@ static void castModifier_cuboid_do(
 
 static void castModifier_deformVerts(
                                     ModifierData *md, Object *ob, DerivedMesh *derivedData,
-        float (*vertexCos)[3], int numVerts)
+        float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm = derivedData;
        CastModifierData *cmd = (CastModifierData *)md;
@@ -5354,7 +5354,7 @@ static void waveModifier_do(WaveModifierData *md,
 
 static void waveModifier_deformVerts(
                                     ModifierData *md, Object *ob, DerivedMesh *derivedData,
-        float (*vertexCos)[3], int numVerts)
+        float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm;
        WaveModifierData *wmd = (WaveModifierData *)md;
@@ -5459,7 +5459,7 @@ static void armatureModifier_updateDepgraph(
 
 static void armatureModifier_deformVerts(
                                         ModifierData *md, Object *ob, DerivedMesh *derivedData,
-      float (*vertexCos)[3], int numVerts)
+      float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        ArmatureModifierData *amd = (ArmatureModifierData*) md;
 
@@ -5580,7 +5580,7 @@ static void hookModifier_updateDepgraph(ModifierData *md, DagForest *forest, Sce
 
 static void hookModifier_deformVerts(
                                     ModifierData *md, Object *ob, DerivedMesh *derivedData,
-        float (*vertexCos)[3], int numVerts)
+        float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        HookModifierData *hmd = (HookModifierData*) md;
        float vec[3], mat[4][4];
@@ -5701,7 +5701,7 @@ static void hookModifier_deformVertsEM(
 
        if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
 
-       hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts);
+       hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts, 0, 0);
 
        if(!derivedData) dm->release(dm);
 }
@@ -5710,7 +5710,7 @@ static void hookModifier_deformVertsEM(
 
 static void softbodyModifier_deformVerts(
                                         ModifierData *md, Object *ob, DerivedMesh *derivedData,
-      float (*vertexCos)[3], int numVerts)
+      float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        sbObjectStep(md->scene, ob, (float)md->scene->r.cfra, vertexCos, numVerts);
 }
@@ -5898,7 +5898,7 @@ static int collisionModifier_dependsOnTime(ModifierData *md)
 
 static void collisionModifier_deformVerts(
                                          ModifierData *md, Object *ob, DerivedMesh *derivedData,
-       float (*vertexCos)[3], int numVerts)
+       float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        CollisionModifierData *collmd = (CollisionModifierData*) md;
        DerivedMesh *dm = NULL;
@@ -6060,7 +6060,7 @@ static int surfaceModifier_dependsOnTime(ModifierData *md)
 
 static void surfaceModifier_deformVerts(
                                          ModifierData *md, Object *ob, DerivedMesh *derivedData,
-       float (*vertexCos)[3], int numVerts)
+       float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        SurfaceModifierData *surmd = (SurfaceModifierData*) md;
        unsigned int numverts = 0, i = 0;
@@ -6268,7 +6268,7 @@ static int is_last_displist(Object *ob)
 /* saves the current emitter state for a particle system and calculates particles */
 static void particleSystemModifier_deformVerts(
                                               ModifierData *md, Object *ob, DerivedMesh *derivedData,
-           float (*vertexCos)[3], int numVerts)
+           float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm = derivedData;
        ParticleSystemModifierData *psmd= (ParticleSystemModifierData*) md;
@@ -7789,7 +7789,7 @@ static void meshdeformModifier_do(
 
 static void meshdeformModifier_deformVerts(
                                           ModifierData *md, Object *ob, DerivedMesh *derivedData,
-       float (*vertexCos)[3], int numVerts)
+       float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm;
 
@@ -7937,7 +7937,7 @@ static void shrinkwrapModifier_foreachObjectLink(ModifierData *md, Object *ob, O
        walk(userData, ob, &smd->auxTarget);
 }
 
-static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
+static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm = NULL;
        CustomDataMask dataMask = shrinkwrapModifier_requiredDataMask(md);
@@ -8051,7 +8051,7 @@ static void simpledeformModifier_updateDepgraph(ModifierData *md, DagForest *for
                dag_add_relation(forest, dag_get_node(forest, smd->origin), obNode, DAG_RL_OB_DATA, "SimpleDeform Modifier");
 }
 
-static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
+static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
 {
        DerivedMesh *dm = NULL;
        CustomDataMask dataMask = simpledeformModifier_requiredDataMask(md);
index 941e73982a5dbbc3cd4b02c56501cb6b4fb8ac80..43df11335febc07631ae6e4040b6545bc03ff9cd 100644 (file)
@@ -1055,6 +1055,14 @@ bNodeTree *ntreeAddTree(int type)
        ntree->type= type;
        ntree->alltypes.first = NULL;
        ntree->alltypes.last = NULL;
+
+       /* this helps RNA identify ID pointers as nodetree */
+    if(ntree->type==NTREE_SHADER)
+               BLI_strncpy(ntree->id.name, "NTShader Nodetree", sizeof(ntree->id.name));
+    else if(ntree->type==NTREE_COMPOSIT)
+               BLI_strncpy(ntree->id.name, "NTComposit Nodetree", sizeof(ntree->id.name));
+    else if(ntree->type==NTREE_TEXTURE)
+               BLI_strncpy(ntree->id.name, "NTTexture Nodetree", sizeof(ntree->id.name));
        
        ntreeInitTypes(ntree);
        return ntree;
index f8657125014c888a9263ed164d04c3232397bc8a..78a156559ff17e6229e4882360a322f18fde5259 100644 (file)
@@ -4190,6 +4190,7 @@ static void lib_link_screen(FileData *fd, Main *main)
                                                SpaceButs *sbuts= (SpaceButs *)sl;
                                                sbuts->lockpoin= NULL;
                                                sbuts->ri= NULL;
+                                               sbuts->pinid= newlibadr(fd, sc->id.lib, sbuts->pinid);
                                                if(main->versionfile<132)
                                                        butspace_version_132(sbuts);
                                        }
@@ -4391,6 +4392,7 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
                                else if(sl->spacetype==SPACE_BUTS) {
                                        SpaceButs *sbuts= (SpaceButs *)sl;
                                        sbuts->lockpoin= NULL;
+                                       sbuts->pinid = restore_pointer_by_name(newmain, sbuts->pinid, 0);
                                        //XXX if (sbuts->ri) sbuts->ri->curtile = 0;
                                }
                                else if(sl->spacetype==SPACE_FILE) {
@@ -4674,6 +4676,10 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
                                        direct_link_gpencil(fd, sseq->gpd);
                                }
                        }
+                       else if(sl->spacetype==SPACE_BUTS) {
+                               SpaceButs *sbuts= (SpaceButs *)sl;
+                               sbuts->path= NULL;
+                       }
                }
                
                sa->actionzones.first= sa->actionzones.last= NULL;
@@ -6744,26 +6750,26 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
                                        
                                                if(sbuts->mainb==BUTS_LAMP) {
                                                        sbuts->mainb= CONTEXT_SHADING;
-                                                       sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_LAMP;
+                                                       //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_LAMP;
                                                }
                                                else if(sbuts->mainb==BUTS_MAT) {
                                                        sbuts->mainb= CONTEXT_SHADING;
-                                                       sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
+                                                       //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
                                                }
                                                else if(sbuts->mainb==BUTS_TEX) {
                                                        sbuts->mainb= CONTEXT_SHADING;
-                                                       sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_TEX;
+                                                       //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_TEX;
                                                }
                                                else if(sbuts->mainb==BUTS_ANIM) {
                                                        sbuts->mainb= CONTEXT_OBJECT;
                                                }
                                                else if(sbuts->mainb==BUTS_WORLD) {
                                                        sbuts->mainb= CONTEXT_SCENE;
-                                                       sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_WORLD;
+                                                       //sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_WORLD;
                                                }
                                                else if(sbuts->mainb==BUTS_RENDER) {
                                                        sbuts->mainb= CONTEXT_SCENE;
-                                                       sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_RENDER;
+                                                       //sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_RENDER;
                                                }
                                                else if(sbuts->mainb==BUTS_GAME) {
                                                        sbuts->mainb= CONTEXT_LOGIC;
@@ -6773,7 +6779,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
                                                }
                                                else if(sbuts->mainb==BUTS_RADIO) {
                                                        sbuts->mainb= CONTEXT_SHADING;
-                                                       sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_RAD;
+                                                       //sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_RAD;
                                                }
                                                else if(sbuts->mainb==BUTS_CONSTRAINT) {
                                                        sbuts->mainb= CONTEXT_OBJECT;
index 7cbef4984d7e8a9a68a97706bec0fcba0125dce0..34aefa9122549b8a1b029cab2b52237ef0804317 100644 (file)
@@ -35,7 +35,6 @@ struct SpaceFile;
 #define FILE_IMGDISPLAY                3
 
 typedef struct FileSelectParams {
-       int type; /* the mode of the filebrowser, FILE_BLENDER, FILE_SPECIAL, FILE_MAIN or FILE_LOADLIB */
        char title[24]; /* title, also used for the text of the execute button */
        char dir[240]; /* directory */
        char file[80]; /* file */
@@ -96,8 +95,8 @@ typedef struct FileLayout
 
 FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile);
 
-short ED_fileselect_set_params(struct SpaceFile *sfile, int type, const char *title, const char *path, 
-                                                  short flag, short display, short filter);
+short ED_fileselect_set_params(struct SpaceFile *sfile, const char *title, const char *path, 
+                                                  short flag, short display, short filter, short sort);
 
 void ED_fileselect_reset_params(struct SpaceFile *sfile);
 
index 3d0de795778cef82348bd8ce482f1b2c8a85d2bc..bfa819632c9fc22831bc4ebd267ed5bee3a45195 100644 (file)
@@ -56,7 +56,7 @@ void ED_base_object_free_and_unlink(struct Scene *scene, struct Base *base);
 
 void ED_object_apply_obmat(struct Object *ob);
        /* single object duplicate, if dupflag==0, fully linked, else it uses U.dupflag */
-Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
+struct Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int usedupflag);
 
 
 /* bitflags for enter/exit editmode */
index 97c2da5297f61e2e5171217aa150e03cd8a3205e..feca59bca3054cbe371a4badc4ad8116bb3d6f07 100644 (file)
@@ -52,6 +52,7 @@ struct rctf;
 struct uiStyle;
 struct uiFontStyle;
 struct ColorBand;
+struct CurveMapping;
 
 typedef struct uiBut uiBut;
 typedef struct uiBlock uiBlock;
@@ -177,20 +178,21 @@ typedef struct uiLayout uiLayout;
 #define INLINK (23<<9)
 #define KEYEVT (24<<9)
 #define ICONTEXTROW (25<<9)
-#define HSVCUBE (26<<9)
-#define PULLDOWN (27<<9)
-#define ROUNDBOX (28<<9)
-#define CHARTAB (29<<9)
+#define HSVCUBE                (26<<9)
+#define PULLDOWN       (27<<9)
+#define ROUNDBOX       (28<<9)
+#define CHARTAB                (29<<9)
 #define BUT_COLORBAND (30<<9)
-#define BUT_NORMAL (31<<9)
-#define BUT_CURVE (32<<9)
+#define BUT_NORMAL     (31<<9)
+#define BUT_CURVE      (32<<9)
 #define BUT_TOGDUAL (33<<9)
-#define ICONTOGN (34<<9)
-#define FTPREVIEW (35<<9)
-#define NUMABS (36<<9)
-#define TOGBUT  (37<<9)
-#define OPTION  (38<<9)
-#define OPTIONN (39<<9)
+#define ICONTOGN       (34<<9)
+#define FTPREVIEW      (35<<9)
+#define NUMABS         (36<<9)
+#define TOGBUT         (37<<9)
+#define OPTION         (38<<9)
+#define OPTIONN                (39<<9)
+#define SEARCH_MENU    (40<<9)
 #define BUTTYPE        (63<<9)
 
 /* Drawing
@@ -401,6 +403,8 @@ uiBut *uiDefIconTextBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg,
 
 void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip);
 
+uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, short x1, short y1, short x2, short y2, char *tip);
+
 void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval);
 void uiBlockColorbandButtons(struct uiBlock *block, struct ColorBand *coba, struct rctf *butr, int event);
 
@@ -425,20 +429,33 @@ uiBut *uiFindInlink(uiBlock *block, void *poin);
  *
  * uiButSetCompleteFunc is for tab completion.
  *
+ * uiButSearchFunc is for name buttons, showing a popup with matches
+ *
  * uiBlockSetFunc and uiButSetFunc are callbacks run when a button is used,
  * in case events, operators or RNA are not sufficient to handle the button.
  *
  * uiButSetNFunc will free the argument with MEM_freeN. */
 
+typedef struct uiSearchItems uiSearchItems;
+
 typedef void (*uiButHandleFunc)(struct bContext *C, void *arg1, void *arg2);
+typedef void (*uiButHandleRenameFunc)(struct bContext *C, void *arg, char *origstr);
 typedef void (*uiButHandleNFunc)(struct bContext *C, void *argN, void *arg2);
 typedef void (*uiButCompleteFunc)(struct bContext *C, char *str, void *arg);
+typedef void (*uiButSearchFunc)(const struct bContext *C, void *arg, char *str, uiSearchItems *items);
 typedef void (*uiBlockHandleFunc)(struct bContext *C, void *arg, int event);
+               
+               /* use inside searchfunc to add items */
+int            uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin);
+               /* bfunc gets search item *poin as arg2, or if NULL the old string */
+void   uiButSetSearchFunc      (uiBut *but,            uiButSearchFunc sfunc, void *arg1, uiButHandleFunc bfunc);
+
 
 void   uiBlockSetHandleFunc(uiBlock *block,    uiBlockHandleFunc func, void *arg);
 void   uiBlockSetButmFunc      (uiBlock *block,        uiMenuHandleFunc func, void *arg);
 
 void   uiBlockSetFunc          (uiBlock *block,        uiButHandleFunc func, void *arg1, void *arg2);
+void   uiBlockSetRenameFunc(uiBlock *block,    uiButHandleRenameFunc func, void *arg1);
 void   uiButSetFunc            (uiBut *but,            uiButHandleFunc func, void *arg1, void *arg2);
 void   uiButSetNFunc           (uiBut *but,            uiButHandleNFunc func, void *argN, void *arg2);
 
@@ -497,9 +514,9 @@ void test_imapoin_but(struct bContext *C, char *name, struct ID **idpp);
 void autocomplete_bone(struct bContext *C, char *str, void *arg_v);
 void autocomplete_vgroup(struct bContext *C, char *str, void *arg_v);
 
-struct CurveMapping;
 struct rctf;
 void curvemap_buttons(uiBlock *block, struct CurveMapping *cumap, char labeltype, short event, short redraw, struct rctf *rect);
+void colorband_buttons(uiBlock *block, struct ColorBand *coba, struct rctf *rect, int small);
 
 
 /* Module
@@ -539,9 +556,10 @@ uiBut *uiDefMenuTogR(uiBlock *block, struct PointerRNA *ptr, char *propname, cha
 #define UI_UNIT_X                              20
 #define UI_UNIT_Y                              20
 
-#define UI_LAYOUT_ALIGN_LEFT   0
-#define UI_LAYOUT_ALIGN_CENTER 1
-#define UI_LAYOUT_ALIGN_RIGHT  2
+#define UI_LAYOUT_ALIGN_EXPAND 0
+#define UI_LAYOUT_ALIGN_LEFT   1
+#define UI_LAYOUT_ALIGN_CENTER 2
+#define UI_LAYOUT_ALIGN_RIGHT  3
 
 uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int size, int em, struct uiStyle *style);
 void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout);
@@ -558,14 +576,16 @@ void uiLayoutSetEnabled(uiLayout *layout, int enabled);
 void uiLayoutSetRedAlert(uiLayout *layout, int redalert);
 void uiLayoutSetAlignment(uiLayout *layout, int alignment);
 void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect);
-void uiLayoutSetScale(uiLayout *layout, float scale);
+void uiLayoutSetScaleX(uiLayout *layout, float scale);
+void uiLayoutSetScaleY(uiLayout *layout, float scale);
 
 int uiLayoutGetActive(uiLayout *layout);
 int uiLayoutGetEnabled(uiLayout *layout);
 int uiLayoutGetRedAlert(uiLayout *layout);
 int uiLayoutGetAlignment(uiLayout *layout);
 int uiLayoutGetKeepAspect(uiLayout *layout);
-float uiLayoutGetScale(uiLayout *layout);
+float uiLayoutGetScaleX(uiLayout *layout);
+float uiLayoutGetScaleY(uiLayout *layout);
 
 /* layout specifiers */
 uiLayout *uiLayoutRow(uiLayout *layout, int align);
@@ -584,6 +604,8 @@ void uiTemplateHeaderID(uiLayout *layout, struct bContext *C, struct PointerRNA
 uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
 uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
 void uiTemplatePreview(uiLayout *layout, struct ID *id);
+void uiTemplateColorRamp(uiLayout *layout, struct ColorBand *coba, int expand);
+void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int type);
 
 /* items */
 void uiItemO(uiLayout *layout, char *name, int icon, char *opname);
index 84ce3762f86b09b728316fa0fe63062f037f3ce2..5339a255dbcbd4fcc7603dd58d00021949ae3911 100644 (file)
@@ -1098,9 +1098,6 @@ void      UI_ColorPtrBlendShade3ubv(char *cp1, char *cp2, float fac, int offset);
 // get a 3 byte color, blended and shaded between two other char color pointers
 void   UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, int offset);
 
-// get pointer from RNA pointer
-int            UI_GetIconRNA(struct PointerRNA *ptr);
-
 // internal (blender) usage only, for init and set active
 void   UI_SetTheme(int spacetype, int regionid);
 
index 7ff312151c52f3498e591f561fc7d7053999f62f..4813b6957952e8de7214205e50f91b1734b61c57 100644 (file)
@@ -129,6 +129,7 @@ struct View2DScrollers;
 struct wmWindowManager;
 struct bScreen;
 struct ScrArea;
+struct ARegion;
 struct bContext;
 struct rctf;
 
@@ -181,6 +182,10 @@ void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
 
 short UI_view2d_mouse_in_scrollers(const struct bContext *C, struct View2D *v2d, int x, int y);
 
+/* cached text drawing in v2d, to allow pixel-aligned draw as post process */
+void UI_view2d_text_cache_add(struct View2D *v2d, float x, float y, char *str);
+void UI_view2d_text_cache_rectf(struct View2D *v2d, struct rctf *rect, char *str);
+void UI_view2d_text_cache_draw(struct ARegion *ar);
 
 /* operators */
 void ui_view2d_operatortypes(void);
index e9a886375c3b053f6a656e9d4affc46bf27fce7b..68973fe540c6620db4c6418cb8a9dea89eee3c23 100644 (file)
@@ -537,10 +537,17 @@ void uiEndBlock(const bContext *C, uiBlock *block)
                /* temp? Proper check for greying out */
                if(but->optype) {
                        wmOperatorType *ot= but->optype;
+
+                       if(but->context)
+                               CTX_store_set((bContext*)C, but->context);
+
                        if(ot==NULL || (ot->poll && ot->poll((bContext *)C)==0)) {
                                but->flag |= UI_BUT_DISABLED;
                                but->lock = 1;
                        }
+
+                       if(but->context)
+                               CTX_store_set((bContext*)C, NULL);
                }
 
                /* only update soft range while not editing */
@@ -1359,7 +1366,7 @@ int ui_get_but_string_max_length(uiBut *but)
 
 void ui_get_but_string(uiBut *but, char *str, int maxlen)
 {
-       if(but->rnaprop && ELEM(but->type, TEX, IDPOIN)) {
+       if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
                PropertyType type;
                char *buf= NULL;
 
@@ -1402,6 +1409,11 @@ void ui_get_but_string(uiBut *but, char *str, int maxlen)
                BLI_strncpy(str, but->poin, maxlen);
                return;
        }
+       else if(but->type == SEARCH_MENU) {
+               /* string */
+               BLI_strncpy(str, but->poin, maxlen);
+               return;
+       }
        else {
                /* number */
                double value;
@@ -1491,7 +1503,7 @@ static void ui_rna_ID_autocomplete(bContext *C, char *str, void *arg_but)
 
 int ui_set_but_string(bContext *C, uiBut *but, const char *str)
 {
-       if(but->rnaprop && ELEM(but->type, TEX, IDPOIN)) {
+       if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
                if(RNA_property_editable(&but->rnapoin, but->rnaprop)) {
                        PropertyType type;
 
@@ -1535,6 +1547,11 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str)
                BLI_strncpy(but->poin, str, but->hardmax);
                return 1;
        }
+       else if(but->type == SEARCH_MENU) {
+               /* string */
+               BLI_strncpy(but->poin, str, but->hardmax);
+               return 1;
+       }
        else {
                double value;
 
@@ -1817,11 +1834,11 @@ void ui_check_but(uiBut *but)
        /* if something changed in the button */
        double value;
        float okwidth;
-       int transopts= ui_translate_buttons();
+//     int transopts= ui_translate_buttons();
        
        ui_is_but_sel(but);
        
-       if(but->type==TEX || but->type==IDPOIN) transopts= 0;
+//     if(but->type==TEX || but->type==IDPOIN) transopts= 0;
 
        /* test for min and max, icon sliders, etc */
        switch( but->type ) {
@@ -1926,6 +1943,7 @@ void ui_check_but(uiBut *but)
 
        case IDPOIN:
        case TEX:
+       case SEARCH_MENU:
                if(!but->editstr) {
                        char str[UI_MAX_DRAW_STR];
 
@@ -2945,6 +2963,11 @@ void uiBlockSetFunc(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2
        block->func_arg2= arg2;
 }
 
+void uiBlockSetRenameFunc(uiBlock *block, uiButHandleRenameFunc func, void *arg1)
+{
+       
+}
+
 void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)())
 {
        block->drawextra= func;
@@ -3065,6 +3088,32 @@ void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1,
        ui_check_but(but);
 }
 
+/* arg is pointer to string/name, use uiButSetSearchFunc() below to make this work */
+uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, short x1, short y1, short x2, short y2, char *tip)
+{
+       uiBut *but= ui_def_but(block, SEARCH_MENU, retval, "", x1, y1, x2, y2, arg, 0.0, maxlen, 0.0, 0.0, tip);
+       
+       but->icon= (BIFIconID) icon;
+       but->flag|= UI_HAS_ICON;
+       
+       but->flag|= UI_ICON_LEFT|UI_TEXT_LEFT;
+       but->flag|= UI_ICON_SUBMENU;
+       
+       ui_check_but(but);
+       
+       return but;
+}
+
+/* arg is user value, searchfunc and handlefunc both get it as arg */
+void uiButSetSearchFunc(uiBut *but, uiButSearchFunc sfunc, void *arg, uiButHandleFunc bfunc)
+{
+       but->search_func= sfunc;
+       but->search_arg= arg;
+       
+       uiButSetFunc(but, bfunc, arg, NULL);
+}
+
+
 /* Program Init/Exit */
 
 void UI_init(void)
index 2bbaee857d1704a622050015db179457d893e4af..5aff0c0ad824ed4f7947e30d8152e88a193459b8 100644 (file)
@@ -54,6 +54,12 @@ void RNA_api_ui_layout(StructRNA *srna)
        FunctionRNA *func;
        PropertyRNA *parm;
 
+       static EnumPropertyItem curve_type_items[] = {
+               {0, "NONE", "None", ""},
+               {'v', "VECTOR", "Vector", ""},
+               {'c', "COLOR", "Color", ""},
+               {0, NULL, NULL, NULL}};
+
        /* simple layout specifiers */
        func= RNA_def_function(srna, "row", "uiLayoutRow");
        parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
@@ -214,5 +220,14 @@ void RNA_api_ui_layout(StructRNA *srna)
        parm= RNA_def_pointer(func, "id", "ID", "", "ID datablock.");
        RNA_def_property_flag(parm, PROP_REQUIRED);
 
+       func= RNA_def_function(srna, "template_curve_mapping", "uiTemplateCurveMapping");
+       parm= RNA_def_pointer(func, "curvemap", "CurveMapping", "", "Curve mapping pointer.");
+       RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_enum(func, "type", curve_type_items, 0, "Type", "Type of curves to display.");
+
+       func= RNA_def_function(srna, "template_color_ramp", "uiTemplateColorRamp");
+       parm= RNA_def_pointer(func, "ramp", "ColorRamp", "", "Color ramp pointer.");
+       RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail.");
 }
 
index 955abe1aecd7002384fb7a1a210a750786fd7c20..6d6d4ab92993d25a1effae048df0ea08784abe32 100644 (file)
@@ -806,7 +806,8 @@ void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect)
        glEnable(GL_LIGHT7);
        glEnable(GL_LIGHTING);
        
-       VECCOPY(dir, (float *)but->poin);
+       ui_get_but_vectorf(but, dir);
+
        dir[3]= 0.0f;   /* glLight needs 4 args, 0.0 is sun */
        glLightfv(GL_LIGHT7, GL_POSITION, dir); 
        glLightfv(GL_LIGHT7, GL_DIFFUSE, diffn); 
@@ -817,7 +818,12 @@ void ui_draw_but_NORMAL(uiBut *but, uiWidgetColors *wcol, rcti *rect)
        /* transform to button */
        glPushMatrix();
        glTranslatef(rect->xmin + 0.5f*(rect->xmax-rect->xmin), rect->ymin+ 0.5f*(rect->ymax-rect->ymin), 0.0f);
-       size= (rect->xmax-rect->xmin)/200.f;
+       
+       if( rect->xmax-rect->xmin < rect->ymax-rect->ymin)
+               size= (rect->xmax-rect->xmin)/200.f;
+       else
+               size= (rect->ymax-rect->ymin)/200.f;
+       
        glScalef(size, size, size);
        
        if(displist==0) {
index ec2f960dd1465141481a94e3cdd958a5a42ab622..52b14d6823e39fa1d3561255c69ad281711c0778 100644 (file)
@@ -97,7 +97,7 @@ typedef struct uiHandleButtonData {
 
        /* overall state */
        uiHandleButtonState state;
-       int cancel, retval;
+       int cancel, escapecancel, retval;
        int applied, appliedinteractive;
        wmTimer *flashtimer;
 
@@ -127,6 +127,9 @@ typedef struct uiHandleButtonData {
        /* menu open */
        uiPopupBlockHandle *menu;
        int menuretval;
+       
+       /* search box */
+       ARegion *searchbox;
 
        /* post activate */
        uiButtonActivateType posttype;
@@ -139,7 +142,8 @@ typedef struct uiAfterFunc {
        uiButHandleFunc func;
        void *func_arg1;
        void *func_arg2;
-
+       void *func_arg3;
+       
        uiButHandleNFunc funcN;
        void *func_argN;
 
@@ -157,6 +161,8 @@ typedef struct uiAfterFunc {
 
        PointerRNA rnapoin;
        PropertyRNA *rnaprop;
+
+       bContextStore *context;
 } uiAfterFunc;
 
 static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state);
@@ -228,6 +234,7 @@ static void ui_apply_but_func(bContext *C, uiBut *but)
                after->func= but->func;
                after->func_arg1= but->func_arg1;
                after->func_arg2= but->func_arg2;
+               after->func_arg3= but->func_arg3;
 
                after->funcN= but->funcN;
                after->func_argN= but->func_argN;
@@ -249,6 +256,9 @@ static void ui_apply_but_func(bContext *C, uiBut *but)
                after->rnapoin= but->rnapoin;
                after->rnaprop= but->rnaprop;
 
+               if(but->context)
+                       after->context= CTX_store_copy(but->context);
+
                but->optype= NULL;
                but->opcontext= 0;
                but->opptr= NULL;
@@ -270,6 +280,9 @@ static void ui_apply_but_funcs_after(bContext *C)
                after= *afterf; /* copy to avoid memleak on exit() */
                BLI_freelinkN(&funcs, afterf);
 
+               if(after.context)
+                       CTX_store_set(C, after.context);
+
                if(after.func)
                        after.func(C, after.func_arg1, after.func_arg2);
                if(after.funcN)
@@ -289,6 +302,11 @@ static void ui_apply_but_funcs_after(bContext *C)
 
                if(after.rnapoin.data)
                        RNA_property_update(C, &after.rnapoin, after.rnaprop);
+
+               if(after.context) {
+                       CTX_store_set(C, NULL);
+                       CTX_store_free(after.context);
+               }
        }
 }
 
@@ -402,9 +420,10 @@ static void ui_apply_but_TEX(bContext *C, uiBut *but, uiHandleButtonData *data)
 
        /* give butfunc the original text too */
        /* feature used for bone renaming, channels, etc */
-       if(but->func_arg2==NULL) but->func_arg2= data->origstr;
+       /* XXX goes via uiButHandleRenameFunc now */
+//     if(but->func_arg2==NULL) but->func_arg2= data->origstr;
        ui_apply_but_func(C, but);
-       if(but->func_arg2==data->origstr) but->func_arg2= NULL;
+//     if(but->func_arg2==data->origstr) but->func_arg2= NULL;
 
        data->retval= but->retval;
        data->applied= 1;
@@ -557,6 +576,7 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut
                        ui_apply_but_BUT(C, but, data);
                        break;
                case TEX:
+               case SEARCH_MENU:
                        ui_apply_but_TEX(C, but, data);
                        break;
                case TOGBUT: 
@@ -871,7 +891,7 @@ static int ui_textedit_type_ascii(uiBut *but, uiHandleButtonData *data, char asc
                }
        }
 
-       return WM_UI_HANDLER_BREAK;
+       return changed;
 }
 
 void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump)
@@ -1030,7 +1050,7 @@ static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int directio
        else { /* backspace */
                if(len!=0) {
                        if ((but->selend - but->selsta) > 0) {
-                               ui_textedit_delete_selection(but, data);
+                               changed= ui_textedit_delete_selection(but, data);
                        }
                        else if(but->pos>0) {
                                for(x=but->pos; x<len; x++)
@@ -1124,7 +1144,7 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
        return changed;
 }
 
-static void ui_textedit_begin(uiBut *but, uiHandleButtonData *data)
+static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data)
 {
        if(data->str) {
                MEM_freeN(data->str);
@@ -1146,13 +1166,27 @@ static void ui_textedit_begin(uiBut *but, uiHandleButtonData *data)
        but->selsta= 0;
        but->selend= strlen(but->drawstr) - strlen(but->str);
 
+       /* optional searchbox */
+       if(but->type==SEARCH_MENU) {
+               data->searchbox= ui_searchbox_create(C, data->region, but);
+               ui_searchbox_update(C, data->searchbox, but);
+       }
+       
        ui_check_but(but);
 }
 
-static void ui_textedit_end(uiBut *but, uiHandleButtonData *data)
+static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data)
 {
        if(but) {
-               but->editstr= 0;
+               if(data->searchbox) {
+                       if(data->cancel==0)
+                               ui_searchbox_apply(but, data->searchbox);
+
+                       ui_searchbox_free(C, data->searchbox);
+                       data->searchbox= NULL;
+               }
+               
+               but->editstr= NULL;
                but->pos= -1;
        }
 }
@@ -1205,18 +1239,30 @@ static void ui_textedit_prev_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
        }
 }
 
+
 static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
 {
-       int mx, my, changed= 0, retval= WM_UI_HANDLER_CONTINUE;
+       int mx, my, changed= 0, inbox=0, retval= WM_UI_HANDLER_CONTINUE;
 
        switch(event->type) {
+               case MOUSEMOVE:
+                       if(data->searchbox)
+                               ui_searchbox_event(data->searchbox, event);
+                       
+                       break;
                case RIGHTMOUSE:
                case ESCKEY:
                        data->cancel= 1;
+                       data->escapecancel= 1;
                        button_activate_state(C, but, BUTTON_STATE_EXIT);
                        retval= WM_UI_HANDLER_BREAK;
                        break;
                case LEFTMOUSE: {
+                       
+                       /* exit on LMB only on RELEASE for searchbox, to mimic other popups, and allow multiple menu levels */
+                       if(data->searchbox)
+                               inbox= BLI_in_rcti(&data->searchbox->winrct, event->x, event->y);
+
                        if(event->val==KM_PRESS) {
                                mx= event->x;
                                my= event->y;
@@ -1230,11 +1276,15 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
                                        button_activate_state(C, but, BUTTON_STATE_TEXT_SELECTING);
                                        retval= WM_UI_HANDLER_BREAK;
                                }
-                               else {
+                               else if(inbox==0) {
                                        button_activate_state(C, but, BUTTON_STATE_EXIT);
                                        retval= WM_UI_HANDLER_BREAK;
                                }
                        }
+                       else if(inbox) {
+                               button_activate_state(C, but, BUTTON_STATE_EXIT);
+                               retval= WM_UI_HANDLER_BREAK;
+                       }
                        break;
                }
        }
@@ -1264,11 +1314,21 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case DOWNARROWKEY:
+                               if(data->searchbox) {
+                                       ui_searchbox_event(data->searchbox, event);
+                                       break;
+                               }
+                               /* pass on purposedly */
                        case ENDKEY:
                                ui_textedit_move_end(but, data, 1, event->shift);
                                retval= WM_UI_HANDLER_BREAK;
                                break;
                        case UPARROWKEY:
+                               if(data->searchbox) {
+                                       ui_searchbox_event(data->searchbox, event);
+                                       break;
+                               }
+                               /* pass on purposedly */
                        case HOMEKEY:
                                ui_textedit_move_end(but, data, 0, event->shift);
                                retval= WM_UI_HANDLER_BREAK;
@@ -1316,6 +1376,9 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
        if(changed) {
                if(data->interactive) ui_apply_button(C, block, but, data, 1);
                else ui_check_but(but);
+               
+               if(data->searchbox)
+                       ui_searchbox_update(C, data->searchbox, but);
        }
 
        if(changed || (retval == WM_UI_HANDLER_BREAK))
@@ -1549,7 +1612,7 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, w
 static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
 {
        if(data->state == BUTTON_STATE_HIGHLIGHT) {
-               if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) {
+               if(ELEM4(event->type, LEFTMOUSE, PADENTER, RETKEY, EVT_BUT_OPEN) && event->val==KM_PRESS) {
                        button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
                        return WM_UI_HANDLER_BREAK;
                }
@@ -1710,7 +1773,12 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
                }
        }
        else if(data->state == BUTTON_STATE_NUM_EDITING) {
-               if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
+               if(event->type == ESCKEY) {
+                       data->cancel= 1;
+                       data->escapecancel= 1;
+                       button_activate_state(C, but, BUTTON_STATE_EXIT);
+               }
+               else if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
                        if(data->dragchange)
                                button_activate_state(C, but, BUTTON_STATE_EXIT);
                        else
@@ -1906,7 +1974,12 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton
                }
        }
        else if(data->state == BUTTON_STATE_NUM_EDITING) {
-               if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
+               if(event->type == ESCKEY) {
+                       data->cancel= 1;
+                       data->escapecancel= 1;
+                       button_activate_state(C, but, BUTTON_STATE_EXIT);
+               }
+               else if(event->type == LEFTMOUSE && event->val!=KM_PRESS) {
                        if(data->dragchange)
                                button_activate_state(C, but, BUTTON_STATE_EXIT);
                        else
@@ -2702,6 +2775,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event)
                break;
        case TEX:
        case IDPOIN:
+       case SEARCH_MENU:
                retval= ui_do_but_TEX(C, block, but, data, event);
                break;
        case MENU:
@@ -2928,9 +3002,9 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
 
        /* text editing */
        if(state == BUTTON_STATE_TEXT_EDITING && data->state != BUTTON_STATE_TEXT_SELECTING)
-               ui_textedit_begin(but, data);
+               ui_textedit_begin(C, but, data);
        else if(data->state == BUTTON_STATE_TEXT_EDITING && state != BUTTON_STATE_TEXT_SELECTING)
-               ui_textedit_end(but, data);
+               ui_textedit_end(C, but, data);
        
        /* number editing */
        if(state == BUTTON_STATE_NUM_EDITING)
@@ -2982,7 +3056,9 @@ static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonA
        data= MEM_callocN(sizeof(uiHandleButtonData), "uiHandleButtonData");
        data->window= CTX_wm_window(C);
        data->region= ar;
-       data->interactive= but->type==BUT_CURVE?0:1; // XXX temp
+       if( ELEM(but->type, BUT_CURVE, SEARCH_MENU) );  // XXX curve is temp
+       else data->interactive= 1;
+       
        data->state = BUTTON_STATE_INIT;
 
        /* activate button */
@@ -3035,12 +3111,14 @@ static void button_activate_exit(bContext *C, uiHandleButtonData *data, uiBut *b
        /* if this button is in a menu, this will set the button return
         * value to the button value and the menu return value to ok, the
         * menu return value will be picked up and the menu will close */
-       if(block->handle && !(block->flag & UI_BLOCK_KEEP_OPEN) && !data->cancel) {
-               uiPopupBlockHandle *menu;
+       if(block->handle && !(block->flag & UI_BLOCK_KEEP_OPEN)) {
+               if(!data->cancel || data->escapecancel) {
+                       uiPopupBlockHandle *menu;
 
-               menu= block->handle;
-               menu->butretval= data->retval;
-               menu->menuretval= UI_RETURN_OK;
+                       menu= block->handle;
+                       menu->butretval= data->retval;
+                       menu->menuretval= (data->cancel)? UI_RETURN_CANCEL: UI_RETURN_OK;
+               }
        }
 
        /* disable tooltips until mousemove */
@@ -3084,16 +3162,35 @@ void ui_button_active_cancel(const bContext *C, uiBut *but)
 
 /************** handle activating a button *************/
 
+static uiBut *uit_but_find_open_event(ARegion *ar, wmEvent *event)
+{
+       uiBlock *block;
+       uiBut *but;
+       
+       for(block=ar->uiblocks.first; block; block=block->next) {
+               for(but=block->buttons.first; but; but= but->next)
+                       if(but==event->customdata)
+                               return but;
+       }
+       return NULL;
+}
+
 static int ui_handle_button_over(bContext *C, wmEvent *event, ARegion *ar)
 {
        uiBut *but;
 
        if(event->type == MOUSEMOVE) {
                but= ui_but_find_mouse_over(ar, event->x, event->y);
-
                if(but)
                        button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
        }
+       else if(event->type == EVT_BUT_OPEN) {
+               but= uit_but_find_open_event(ar, event);
+               if(but) {
+                       button_activate_init(C, ar, but, BUTTON_ACTIVATE_OVER);
+                       ui_do_button(C, but->block, but, event);
+               }
+       }
 
        return WM_UI_HANDLER_CONTINUE;
 }
index 090c0313dae269ec0b551a904017a949b8a8c7b3..db100d8cf86432c5364dcfb04c845a0a1033ecc9 100644 (file)
@@ -77,7 +77,8 @@ typedef enum {
        UI_WTYPE_ICON,
        UI_WTYPE_SWATCH,
        UI_WTYPE_RGB_PICKER,
-       UI_WTYPE_NORMAL
+       UI_WTYPE_NORMAL,
+       UI_WTYPE_BOX
        
 } uiWidgetTypeEnum;
 
@@ -163,6 +164,7 @@ struct uiBut {
        uiButHandleFunc func;
        void *func_arg1;
        void *func_arg2;
+       void *func_arg3;
 
        uiButHandleNFunc funcN;
        void *func_argN;
@@ -175,6 +177,9 @@ struct uiBut {
        uiButCompleteFunc autocomplete_func;
        void *autofunc_arg;
        
+       uiButSearchFunc search_func;
+       void *search_arg;
+       
        uiLink *link;
        
        char *tip, *lockstr;
@@ -350,6 +355,13 @@ uiBlock *ui_block_func_COL(struct bContext *C, uiPopupBlockHandle *handle, void
 struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
 void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
 
+/* searchbox for string button */
+ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
+void ui_searchbox_update(struct bContext *C, struct ARegion *ar, uiBut *but);
+void ui_searchbox_event(struct ARegion *ar, struct wmEvent *event);
+void ui_searchbox_apply(uiBut *but, struct ARegion *ar);
+void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
+
 typedef uiBlock* (*uiBlockHandleCreateFunc)(struct bContext *C, struct uiPopupBlockHandle *handle, void *arg1);
 
 uiPopupBlockHandle *ui_popup_block_create(struct bContext *C, struct ARegion *butregion, uiBut *but,
@@ -388,11 +400,15 @@ extern int ui_button_is_active(struct ARegion *ar);
 /* interface_widgets.c */
 void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);
 void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
+void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
+
 extern void ui_draw_but(ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
                /* theme color init */
 struct ThemeUI;
 void ui_widget_color_init(struct ThemeUI *tui);
 
+void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int state);
+
 /* interface_style.c */
 void uiStyleInit(void);
 
index 2e123c2833943b7e980aee2113af95c06c12a966..8ef1cd32f224d3c486f789f24092557f63c45894 100644 (file)
@@ -115,6 +115,7 @@ typedef enum uiItemType {
 typedef struct uiItem {
        void *next, *prev;
        uiItemType type;
+       int flag;
 } uiItem;
 
 typedef struct uiButtonItem {
@@ -130,7 +131,7 @@ struct uiLayout {
        ListBase items;
 
        int x, y, w, h;
-       float scale;
+       float scale[2];
        short space;
        char align;
        char active;
@@ -177,26 +178,29 @@ static char *ui_item_name_add_colon(char *name, char namestr[UI_MAX_NAME_STR])
        return name;
 }
 
-#define UI_FIT_EXPAND 1
-
-static int ui_item_fit(int item, int pos, int all, int available, int spacing, int last, int flag)
+static int ui_item_fit(int item, int pos, int all, int available, int last, int alignment, int *offset)
 {
        /* available == 0 is unlimited */
-
-       if(available != 0 && all > available-spacing) {
+       if(available == 0)
+               return item;
+       
+       if(offset)
+               *offset= 0;
+       
+       if(all > available) {
                /* contents is bigger than available space */
                if(last)
                        return available-pos;
                else
-                       return (item*(available-spacing))/all;
+                       return (item*available)/all;
        }
        else {
                /* contents is smaller or equal to available space */
-               if(available != 0 && (flag & UI_FIT_EXPAND)) {
+               if(alignment == UI_LAYOUT_ALIGN_EXPAND) {
                        if(last)
                                return available-pos;
                        else
-                               return (item*(available-spacing))/all;
+                               return (item*available)/all;
                }
                else
                        return item;
@@ -209,7 +213,7 @@ static int ui_item_fit(int item, int pos, int all, int available, int spacing, i
 
 static int ui_layout_vary_direction(uiLayout *layout)
 {
-       return (layout->root->type == UI_LAYOUT_HEADER)? UI_ITEM_VARY_X: UI_ITEM_VARY_Y;
+       return (layout->root->type == UI_LAYOUT_HEADER || layout->alignment != UI_LAYOUT_ALIGN_EXPAND)? UI_ITEM_VARY_X: UI_ITEM_VARY_Y;
 }
 
 /* estimated size of text + icon */
@@ -220,9 +224,9 @@ static int ui_text_icon_width(uiLayout *layout, char *name, int icon)
        if(icon && strcmp(name, "") == 0)
                return UI_UNIT_X; /* icon only */
        else if(icon)
-               return (variable)? UI_GetStringWidth(name) + UI_UNIT_X: 10*UI_UNIT_X; /* icon + text */
+               return (variable)? UI_GetStringWidth(name) + 4 + UI_UNIT_X: 10*UI_UNIT_X; /* icon + text */
        else
-               return (variable)? UI_GetStringWidth(name) + UI_UNIT_X: 10*UI_UNIT_X; /* text only */
+               return (variable)? UI_GetStringWidth(name) + 4 + UI_UNIT_X: 10*UI_UNIT_X; /* text only */
 }
 
 static void ui_item_size(uiItem *item, int *r_w, int *r_h)
@@ -655,9 +659,6 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PropertyRNA
        subtype= RNA_property_subtype(prop);
        len= RNA_property_array_length(prop);
 
-       if(ELEM(type, PROP_STRING, PROP_ENUM))
-               w += 10*UI_UNIT_X;
-
        /* increase height for arrays */
        if(index == RNA_NO_INDEX && len > 0) {
                if(strcmp(name, "") == 0 && icon == 0)
@@ -1033,14 +1034,22 @@ static void ui_litem_estimate_row(uiLayout *litem)
        }
 }
 
+static int ui_litem_min_width(int itemw)
+{
+       return MIN2(UI_UNIT_X, itemw);
+}
+
 static void ui_litem_layout_row(uiLayout *litem)
 {
        uiItem *item;
-       int neww, itemw, itemh, x, y, w, tot= 0, totw= 0, extra=0, available=0;
+       int x, y, w, tot, totw, neww, itemw, minw, itemh, offset;
+       int fixedw, freew, fixedx, freex, flag= 0, lastw= 0;
 
        x= litem->x;
        y= litem->y;
        w= litem->w;
+       totw= 0;
+       tot= 0;
 
        for(item=litem->items.first; item; item=item->next) {
                ui_item_size(item, &itemw, &itemh);
@@ -1051,40 +1060,81 @@ static void ui_litem_layout_row(uiLayout *litem)
        if(totw == 0)
                return;
        
-       /* two step to enforce minimum button with .. could be better */
-       for(item=litem->items.first; item; item=item->next) {
-               ui_item_size(item, &itemw, &itemh);
+       if(w != 0)
+               w -= (tot-1)*litem->space;
+       fixedw= 0;
 
-               itemw= ui_item_fit(itemw, x-litem->x, totw, w, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
-               x += itemw;
+       /* keep clamping items to fixed minimum size until all are done */
+       do {
+               freew= 0;
+               x= 0;
+               flag= 0;
 
-               if(itemw < UI_UNIT_X)
-                       extra += UI_UNIT_X - itemw;
-               else
-                       available += itemw - UI_UNIT_X;
+               for(item=litem->items.first; item; item=item->next) {
+                       if(item->flag)
+                               continue;
 
-               if(item->next)
-                       x += litem->space;
-       }
+                       ui_item_size(item, &itemw, &itemh);
+                       minw= ui_litem_min_width(itemw);
+
+                       if(w - lastw > 0)
+                               neww= ui_item_fit(itemw, x, totw, w-lastw, !item->next, litem->alignment, NULL);
+                       else
+                               neww= 0; /* no space left, all will need clamping to minimum size */
 
+                       x += neww;
+
+                       if(neww < minw && w != 0) {
+                               /* fixed size */
+                               item->flag= 1;
+                               fixedw += minw;
+                               flag= 1;
+                               totw -= itemw;
+                       }
+                       else {
+                               /* keep free size */
+                               item->flag= 0;
+                               freew += itemw;
+                       }
+               }
+
+               lastw= fixedw;
+       } while(flag);
+
+       freex= 0;
+       fixedx= 0;
        x= litem->x;
 
        for(item=litem->items.first; item; item=item->next) {
                ui_item_size(item, &itemw, &itemh);
+               minw= ui_litem_min_width(itemw);
 
-               neww= ui_item_fit(itemw, x-litem->x, totw, w, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
-               if(neww < UI_UNIT_X) {
-                       if(item->next)
-                               itemw= UI_UNIT_X;
-                       else
-                               itemw= litem->w - (x-litem->x);
+               if(item->flag) {
+                       /* fixed minimum size items */
+                       itemw= ui_item_fit(minw, fixedx, fixedw, MIN2(w, fixedw), !item->next, litem->alignment, NULL);
+                       fixedx += itemw;
+               }
+               else {
+                       /* free size item */
+                       itemw= ui_item_fit(itemw, freex, freew, w-fixedw, !item->next, litem->alignment, NULL);
+                       freex += itemw;
                }
-               else
-                       itemw= ui_item_fit(itemw, x-litem->x, totw, w-extra, (tot-1)*litem->space, !item->next, UI_FIT_EXPAND);
 
-               ui_item_position(item, x, y-itemh, itemw, itemh);
-               x += itemw;
+               /* align right/center */
+               offset= 0;
+               if(litem->alignment == UI_LAYOUT_ALIGN_RIGHT) {
+                       if(fixedw == 0 && freew < w-fixedw)
+                               offset= (w - fixedw) - freew;
+               }
+               else if(litem->alignment == UI_LAYOUT_ALIGN_CENTER) {
+                       if(fixedw == 0 && freew < w-fixedw)
+                               offset= ((w - fixedw) - freew)/2;
+               }
+
+               /* position item */
+               ui_item_position(item, x+offset, y-itemh, itemw, itemh);
 
+               x += itemw;
                if(item->next)
                        x += litem->space;
        }
@@ -1263,7 +1313,7 @@ static void ui_litem_layout_column_flow(uiLayout *litem)
        uiLayoutItemFlow *flow= (uiLayoutItemFlow*)litem;
        uiItem *item;
        int col, x, y, w, emh, emy, miny, itemw, itemh;
-       int toth, totitem;
+       int toth, totitem, offset;
 
        /* compute max needed width and total height */
        toth= 0;
@@ -1280,18 +1330,18 @@ static void ui_litem_layout_column_flow(uiLayout *litem)
        emy= 0;
        miny= 0;
 
-       w= litem->w;
+       w= litem->w - (flow->totcol-1)*style->columnspace;
        emh= toth/flow->totcol;
 
        /* create column per column */
        col= 0;
        for(item=litem->items.first; item; item=item->next) {
                ui_item_size(item, NULL, &itemh);
-               itemw= ui_item_fit(1, x-litem->x, flow->totcol, w, (flow->totcol-1)*style->columnspace, col == flow->totcol-1, UI_FIT_EXPAND);
+               itemw= ui_item_fit(1, x-litem->x, flow->totcol, w, col == flow->totcol-1, litem->alignment, &offset);
        
                y -= itemh;
                emy -= itemh;
-               ui_item_position(item, x, y, itemw, itemh);
+               ui_item_position(item, x+offset, y, itemw, itemh);
                y -= style->buttonspacey;
                miny= MIN2(miny, y);
 
@@ -1578,9 +1628,14 @@ void uiLayoutSetAlignment(uiLayout *layout, int alignment)
        layout->alignment= alignment;
 }
 
-void uiLayoutSetScale(uiLayout *layout, float scale)
+void uiLayoutSetScaleX(uiLayout *layout, float scale)
 {
-       layout->scale= scale;
+       layout->scale[0]= scale;
+}
+
+void uiLayoutSetScaleY(uiLayout *layout, float scale)
+{
+       layout->scale[1]= scale;
 }
 
 int uiLayoutGetActive(uiLayout *layout)
@@ -1608,13 +1663,41 @@ int uiLayoutGetAlignment(uiLayout *layout)
        return layout->alignment;
 }
 
-float uiLayoutGetScale(uiLayout *layout)
+float uiLayoutGetScaleX(uiLayout *layout)
 {
-       return layout->scale;
+       return layout->scale[0];
+}
+
+float uiLayoutGetScaleY(uiLayout *layout)
+{
+       return layout->scale[0];
 }
 
 /********************** Layout *******************/
 
+static void ui_item_scale(uiLayout *litem, float scale[2])
+{
+       uiItem *item;
+       int x, y, w, h;
+
+       for(item=litem->items.last; item; item=item->prev) {
+               ui_item_size(item, &w, &h);
+               ui_item_offset(item, &x, &y);
+
+               if(scale[0] != 0.0f) {
+                       x *= scale[0];
+                       w *= scale[0];
+               }
+
+               if(scale[1] != 0.0f) {
+                       y *= scale[1];
+                       h *= scale[1];
+               }
+
+               ui_item_position(item, x, y, w, h);
+       }
+}
+
 static void ui_item_estimate(uiItem *item)
 {
        uiItem *subitem;
@@ -1628,6 +1711,9 @@ static void ui_item_estimate(uiItem *item)
                if(litem->items.first == NULL)
                        return;
 
+               if(litem->scale[0] != 0.0f || litem->scale[1] != 0.0f)
+                       ui_item_scale(litem, litem->scale);
+
                switch(litem->item.type) {
                        case ITEM_LAYOUT_COLUMN:
                                ui_litem_estimate_column(litem);
index 539f18c2cd81693821e53478d10fcb158d3a2762..a141e58fbe9802ef4fb9b9806fb1f58634c9e7ad 100644 (file)
@@ -119,7 +119,7 @@ static int panels_re_align(ScrArea *sa, ARegion *ar, Panel **r_pa)
                SpaceButs *sbuts= sa->spacedata.first;
 
                if(sbuts->align)
-                       if(sbuts->re_align || sbuts->mainbo!=sbuts->mainb || sbuts->tabo!=sbuts->tab[sbuts->mainb])
+                       if(sbuts->re_align || sbuts->mainbo!=sbuts->mainb)
                                return 1;
        }
        else if(ar->regiontype==RGN_TYPE_UI)
index 0109612fdc0eab1a70378783b1185fe830890657..0bde1be21075ef4d34719b8d35fe372024692381 100644 (file)
@@ -383,6 +383,289 @@ void ui_tooltip_free(bContext *C, ARegion *ar)
        ui_remove_temporary_region(C, CTX_wm_screen(C), ar);
 }
 
+
+/************************* Creating Search Box **********************/
+
+struct uiSearchItems {
+       int maxitem, totitem, maxstrlen;
+       
+       char **names;
+       void **pointers;
+       
+};
+
+typedef struct uiSearchboxData {
+       rcti bbox;
+       uiFontStyle fstyle;
+       uiSearchItems items;
+       int active;
+} uiSearchboxData;
+
+#define SEARCH_ITEMS   10
+
+/* exported for use by search callbacks */
+/* returns zero if nothing to add */
+int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin)
+{
+       
+       if(items->totitem>=items->maxitem)
+               return 0;
+       
+       BLI_strncpy(items->names[items->totitem], name, items->maxstrlen);
+       items->pointers[items->totitem]= poin;
+       
+       items->totitem++;
+       
+       return items->totitem<items->maxitem;
+}
+
+
+/* ar is the search box itself */
+static void ui_searchbox_select(ARegion *ar, int step)
+{
+       uiSearchboxData *data= ar->regiondata;
+       
+       /* apply step */
+       data->active+= step;
+       
+       if(data->items.totitem==0)
+               data->active= 0;
+       else if(data->active> data->items.totitem)
+               data->active= 1;
+       else if(data->active < 0)
+               data->active= data->items.totitem;
+       
+       ED_region_tag_redraw(ar);
+}
+
+static void ui_searchbox_butrect(rcti *rect, uiSearchboxData *data, int itemnr)
+{
+       int buth= (data->bbox.ymax-data->bbox.ymin - 2*MENU_SEPR_HEIGHT)/SEARCH_ITEMS;
+       
+       *rect= data->bbox;
+       rect->xmin= data->bbox.xmin + 3.0f;
+       rect->xmax= data->bbox.xmax - 3.0f;
+       
+       rect->ymax= data->bbox.ymax - MENU_SEPR_HEIGHT - itemnr*buth;
+       rect->ymin= rect->ymax - buth;
+       
+}
+
+/* string validated to be of correct length (but->hardmax) */
+void ui_searchbox_apply(uiBut *but, ARegion *ar)
+{
+       uiSearchboxData *data= ar->regiondata;
+
+       but->func_arg2= NULL;
+       
+       if(data->active) {
+               char *name= data->items.names[data->active-1];
+               char *cpoin= strchr(name, '|');
+               
+               if(cpoin) cpoin[0]= 0;
+               BLI_strncpy(but->editstr, name, data->items.maxstrlen);
+               if(cpoin) cpoin[0]= '|';
+               
+               but->func_arg2= data->items.pointers[data->active-1];
+       }
+}
+
+void ui_searchbox_event(ARegion *ar, wmEvent *event)
+{
+       uiSearchboxData *data= ar->regiondata;
+       
+       switch(event->type) {
+               case UPARROWKEY:
+                       ui_searchbox_select(ar, -1);
+                       break;
+               case DOWNARROWKEY:
+                       ui_searchbox_select(ar, 1);
+                       break;
+               case MOUSEMOVE:
+                       if(BLI_in_rcti(&ar->winrct, event->x, event->y)) {
+                               rcti rect;
+                               int a;
+                               
+                               for(a=0; a<data->items.totitem; a++) {
+                                       ui_searchbox_butrect(&rect, data, a);
+                                       if(BLI_in_rcti(&rect, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin)) {
+                                               if( data->active!= a+1) {
+                                                       data->active= a+1;
+                                                       ui_searchbox_select(ar, 0);
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       break;
+       }
+}
+
+/* ar is the search box itself */
+void ui_searchbox_update(bContext *C, ARegion *ar, uiBut *but)
+{
+       uiSearchboxData *data= ar->regiondata;
+       
+       /* callback */
+       data->items.totitem= 0;
+       data->active= 0;
+       if(but->search_func)
+               but->search_func(C, but->search_arg, but->editstr, &data->items);
+       
+       /* validate selected item */
+       ui_searchbox_select(ar, 0);
+       
+       ED_region_tag_redraw(ar);
+}
+
+static void ui_searchbox_region_draw(const bContext *C, ARegion *ar)
+{
+       uiSearchboxData *data= ar->regiondata;
+       
+       /* pixel space */
+       wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f);
+
+       ui_draw_search_back(U.uistyles.first, NULL, &data->bbox);
+       
+       /* draw text */
+       if(data->items.totitem) {
+               rcti rect;
+               int a;
+                               
+               /* draw items */
+               for(a=0; a<data->items.totitem; a++) {
+                       ui_searchbox_butrect(&rect, data, a);
+                       
+                       ui_draw_menu_item(&data->fstyle, &rect, data->items.names[a], (a+1)==data->active?UI_ACTIVE:0);
+               }
+       }
+}
+
+static void ui_searchbox_region_free(ARegion *ar)
+{
+       uiSearchboxData *data= ar->regiondata;
+       int a;
+
+       /* free search data */
+       for(a=0; a<SEARCH_ITEMS; a++)
+               MEM_freeN(data->items.names[a]);
+       MEM_freeN(data->items.names);
+       MEM_freeN(data->items.pointers);
+       
+       MEM_freeN(data);
+       ar->regiondata= NULL;
+}
+
+ARegion *ui_searchbox_create(bContext *C, ARegion *butregion, uiBut *but)
+{
+       uiStyle *style= U.uistyles.first;       // XXX pass on as arg
+       static ARegionType type;
+       ARegion *ar;
+       uiSearchboxData *data;
+       float aspect= but->block->aspect;
+       float x1f, x2f, y1f, y2f;
+       int x1, x2, y1, y2, winx, winy, ofsx, ofsy;
+       
+       /* create area region */
+       ar= ui_add_temporary_region(CTX_wm_screen(C));
+       
+       memset(&type, 0, sizeof(ARegionType));
+       type.draw= ui_searchbox_region_draw;
+       type.free= ui_searchbox_region_free;
+       ar->type= &type;
+       
+       /* create searchbox data */
+       data= MEM_callocN(sizeof(uiSearchboxData), "uiSearchboxData");
+       
+       /* set font, get bb */
+       data->fstyle= style->widget; /* copy struct */
+       data->fstyle.align= UI_STYLE_TEXT_CENTER;
+       ui_fontscale(&data->fstyle.points, aspect);
+       uiStyleFontSet(&data->fstyle);
+       
+       ar->regiondata= data;
+       
+       /* compute position */
+       ofsx= (but->block->panel)? but->block->panel->ofsx: 0;
+       ofsy= (but->block->panel)? but->block->panel->ofsy: 0;
+       
+       x1f= but->x1;
+       x2f= but->x2;
+       y2f= but->y1;
+       y1f= y2f - SEARCH_ITEMS*MENU_BUTTON_HEIGHT - 2*MENU_SEPR_HEIGHT;
+       
+       /* minimal width */
+       if(x2f - x1f < 180) x2f= x1f+180; // XXX arbitrary
+       
+       /* copy to int, gets projected if possible too */
+       x1= x1f; y1= y1f; x2= x2f; y2= y2f; 
+       
+       if(butregion) {
+               if(butregion->v2d.cur.xmin != butregion->v2d.cur.xmax) {
+                       UI_view2d_to_region_no_clip(&butregion->v2d, x1f, y1f, &x1, &y1);
+                       UI_view2d_to_region_no_clip(&butregion->v2d, x2f, y2f, &x2, &y2);
+               }
+               
+               x1 += butregion->winrct.xmin;
+               x2 += butregion->winrct.xmin;
+               y1 += butregion->winrct.ymin;
+               y2 += butregion->winrct.ymin;
+       }
+       
+       wm_window_get_size(CTX_wm_window(C), &winx, &winy);
+       
+       if(x2 > winx) {
+               /* super size */
+               if(x2 > winx + x1) {
+                       x2= winx;
+                       x1= 0;
+               }
+               else {
+                       x1 -= x2-winx;
+                       x2= winx;
+               }
+       }
+       if(y1 < 0) {
+               y1 += 36;
+               y2 += 36;
+       }
+       
+       /* widget rect, in region coords */
+       data->bbox.xmin= MENU_SHADOW_SIDE;
+       data->bbox.xmax= x2-x1 + MENU_SHADOW_SIDE;
+       data->bbox.ymin= MENU_SHADOW_BOTTOM;
+       data->bbox.ymax= y2-y1 + MENU_SHADOW_BOTTOM;
+       
+       /* region bigger for shadow */
+       ar->winrct.xmin= x1 - MENU_SHADOW_SIDE;
+       ar->winrct.xmax= x2 + MENU_SHADOW_SIDE;
+       ar->winrct.ymin= y1 - MENU_SHADOW_BOTTOM;
+       ar->winrct.ymax= y2;
+       
+       /* adds subwindow */
+       ED_region_init(C, ar);
+       
+       /* notify change and redraw */
+       ED_region_tag_redraw(ar);
+       
+       /* prepare search data */
+       data->items.maxitem= SEARCH_ITEMS;
+       data->items.maxstrlen= but->hardmax;
+       data->items.totitem= 0;
+       data->items.names= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search names");
+       data->items.pointers= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search pointers");
+       for(x1=0; x1<SEARCH_ITEMS; x1++)
+               data->items.names[x1]= MEM_callocN(but->hardmax+1, "search pointers");
+       
+       return ar;
+}
+
+void ui_searchbox_free(bContext *C, ARegion *ar)
+{
+       ui_remove_temporary_region(C, CTX_wm_screen(C), ar);
+}
+
+
 /************************* Creating Menu Blocks **********************/
 
 /* position block relative to but, result is in window space */
@@ -703,8 +986,6 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
 
        /* get winmat now that we actually have the subwindow */
        wmSubWindowSet(window, ar->swinid);
-                       // XXX ton, AA pixel space...
-       wmOrtho2(0.0, (float)ar->winrct.xmax-ar->winrct.xmin+1, 0.0, (float)ar->winrct.ymax-ar->winrct.ymin+1);
        
        wm_subwindow_getmatrix(window, ar->swinid, block->winmat);
        
@@ -716,7 +997,9 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut
 
 void ui_popup_block_free(bContext *C, uiPopupBlockHandle *handle)
 {
-       ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
+       /* XXX ton added, chrash on load file with popup open... need investigate */
+       if(CTX_wm_screen(C))
+               ui_remove_temporary_region(C, CTX_wm_screen(C), handle->region);
        MEM_freeN(handle);
 }
 
index 34f4d7294ee0ca4f01a7e24b97b3ed6ca681104b..62a4c01bc6c1f56a35ae3bef2b87d0636ce7f9db 100644 (file)
@@ -164,16 +164,16 @@ void uiStyleFontDraw(uiFontStyle *fs, rcti *rect, char *str)
        
        uiStyleFontSet(fs);
        
-       height= BLF_height("A");
+       height= BLF_height("2");        /* correct offset is on baseline, the j is below that */
        yofs= floor( 0.5f*(rect->ymax - rect->ymin - height));
 
        if(fs->align==UI_STYLE_TEXT_CENTER)
                xofs= floor( 0.5f*(rect->xmax - rect->xmin - BLF_width(str)));
        else if(fs->align==UI_STYLE_TEXT_RIGHT)
-               xofs= rect->xmax - rect->xmin - BLF_width(str);
+               xofs= rect->xmax - rect->xmin - BLF_width(str) - 1;
        
        /* clip is very strict, so we give it some space */
-       BLF_clipping(rect->xmin-4, rect->ymin-4, rect->xmax+4, rect->ymax+4);
+       BLF_clipping(rect->xmin-1, rect->ymin-4, rect->xmax+1, rect->ymax+4);
        BLF_enable(BLF_CLIPPING);
        
        if(fs->shadow) 
index 8e169023b1866a3c0ce1927e5d6f3c283a01f37e..12954fe77c0ef5afcfb3b63b3bceaaaed9ee7186 100644 (file)
@@ -240,33 +240,16 @@ void uiTemplateHeaderID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *pr
 
 #define ERROR_LIBDATA_MESSAGE "Can't edit external libdata"
 
-#define B_NOP                          0
-#define B_MODIFIER_RECALC      1
-#define B_MODIFIER_REDRAW      2
-#define B_CHANGEDEP                    3
-#define B_ARM_RECALCDATA       4
-
 #include <string.h>
 
-#include "DNA_armature_types.h"
-#include "DNA_curve_types.h"
 #include "DNA_object_force.h"
 #include "DNA_object_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
 #include "DNA_modifier_types.h"
-#include "DNA_particle_types.h"
 #include "DNA_scene_types.h"
 
-#include "BKE_bmesh.h"
-#include "BKE_curve.h"
 #include "BKE_depsgraph.h"
 #include "BKE_DerivedMesh.h"
-#include "BKE_displist.h"
 #include "BKE_global.h"
-#include "BKE_lattice.h"
-#include "BKE_main.h"
-#include "BKE_mesh.h"
 #include "BKE_modifier.h"
 #include "BKE_object.h"
 #include "BKE_particle.h"
@@ -280,33 +263,20 @@ void uiTemplateHeaderID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *pr
 
 #include "ED_object.h"
 
-void do_modifier_panels(bContext *C, void *arg, int event)
+static void modifiers_del(bContext *C, void *ob_v, void *md_v)
 {
        Scene *scene= CTX_data_scene(C);
-       Object *ob = CTX_data_active_object(C);
+       Object *ob= ob_v;
+       ReportList reports;
 
-       switch(event) {
-       case B_MODIFIER_REDRAW:
-               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
-               break;
+       BKE_reports_init(&reports, RPT_STORE);
 
-       case B_MODIFIER_RECALC:
+       if(ED_object_modifier_delete(&reports, ob_v, md_v)) {
                WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
                DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
-               object_handle_update(scene, ob);
-               // XXX countall();
-               break;
-       }
-}
-
-static void modifiers_del(bContext *C, void *ob_v, void *md_v)
-{
-       ReportList reports;
-
-       BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_delete(&reports, ob_v, md_v))
                ED_undo_push(C, "Delete modifier");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -315,12 +285,18 @@ static void modifiers_del(bContext *C, void *ob_v, void *md_v)
 
 static void modifiers_moveUp(bContext *C, void *ob_v, void *md_v)
 {
+       Scene *scene= CTX_data_scene(C);
+       Object *ob= ob_v;
        ReportList reports;
 
        BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_move_up(&reports, ob_v, md_v))
+       if(ED_object_modifier_move_up(&reports, ob_v, md_v)) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+               DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
                ED_undo_push(C, "Move modifier");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -329,12 +305,18 @@ static void modifiers_moveUp(bContext *C, void *ob_v, void *md_v)
 
 static void modifiers_moveDown(bContext *C, void *ob_v, void *md_v)
 {
+       Scene *scene= CTX_data_scene(C);
+       Object *ob= ob_v;
        ReportList reports;
 
        BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_move_down(&reports, ob_v, md_v))
+       if(ED_object_modifier_move_down(&reports, ob_v, md_v)) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+               DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
                ED_undo_push(C, "Move modifier");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -344,12 +326,17 @@ static void modifiers_moveDown(bContext *C, void *ob_v, void *md_v)
 static void modifiers_convertParticles(bContext *C, void *obv, void *mdv)
 {
        Scene *scene= CTX_data_scene(C);
+       Object *ob= obv;
        ReportList reports;
 
        BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_convert(&reports, scene, obv, mdv))
+       if(ED_object_modifier_convert(&reports, scene, obv, mdv)) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+               DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
                ED_undo_push(C, "Convert particles to mesh object(s).");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -359,12 +346,17 @@ static void modifiers_convertParticles(bContext *C, void *obv, void *mdv)
 static void modifiers_applyModifier(bContext *C, void *obv, void *mdv)
 {
        Scene *scene= CTX_data_scene(C);
+       Object *ob= obv;
        ReportList reports;
 
        BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_apply(&reports, scene, obv, mdv))
+       if(ED_object_modifier_apply(&reports, scene, obv, mdv)) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+               DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
                ED_undo_push(C, "Apply modifier");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -373,12 +365,17 @@ static void modifiers_applyModifier(bContext *C, void *obv, void *mdv)
 
 static void modifiers_copyModifier(bContext *C, void *ob_v, void *md_v)
 {
+       Scene *scene= CTX_data_scene(C);
+       Object *ob= ob_v;
        ReportList reports;
 
        BKE_reports_init(&reports, RPT_STORE);
 
-       if(ED_object_modifier_copy(&reports, ob_v, md_v))
+       if(ED_object_modifier_copy(&reports, ob_v, md_v)) {
+               WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+               DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
                ED_undo_push(C, "Copy modifier");
+       }
        else
                uiPupMenuReports(C, &reports);
 
@@ -387,21 +384,27 @@ static void modifiers_copyModifier(bContext *C, void *ob_v, void *md_v)
 
 static void modifiers_setOnCage(bContext *C, void *ob_v, void *md_v)
 {
+       Scene *scene= CTX_data_scene(C);
        Object *ob = ob_v;
        ModifierData *md;
        
        int i, cageIndex = modifiers_getCageIndex(ob, NULL );
 
-       for( i = 0, md=ob->modifiers.first; md; ++i, md=md->next )
-               if( md == md_v ) {
-                       if( i >= cageIndex )
+       for(i = 0, md=ob->modifiers.first; md; ++i, md=md->next) {
+               if(md == md_v) {
+                       if(i >= cageIndex)
                                md->mode ^= eModifierMode_OnCage;
                        break;
                }
+       }
+
+       WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+       DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
 }
 
 static void modifiers_convertToReal(bContext *C, void *ob_v, void *md_v)
 {
+       Scene *scene= CTX_data_scene(C);
        Object *ob = ob_v;
        ModifierData *md = md_v;
        ModifierData *nmd = modifier_new(md->type);
@@ -413,169 +416,56 @@ static void modifiers_convertToReal(bContext *C, void *ob_v, void *md_v)
 
        ob->partype = PAROBJECT;
 
-       ED_undo_push(C, "Modifier convert to real");
-}
+       WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob);
+       DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
 
-#if 0
-static void modifiers_clearHookOffset(bContext *C, void *ob_v, void *md_v)
-{
-       Object *ob = ob_v;
-       ModifierData *md = md_v;
-       HookModifierData *hmd = (HookModifierData*) md;
-       
-       if (hmd->object) {
-               Mat4Invert(hmd->object->imat, hmd->object->obmat);
-               Mat4MulSerie(hmd->parentinv, hmd->object->imat, ob->obmat, NULL, NULL, NULL, NULL, NULL, NULL);
-               ED_undo_push(C, "Clear hook offset");
-       }
-}
-
-static void modifiers_cursorHookCenter(bContext *C, void *ob_v, void *md_v)
-{
-       /* XXX 
-       Object *ob = ob_v;
-       ModifierData *md = md_v;
-       HookModifierData *hmd = (HookModifierData*) md;
-
-       if(G.vd) {
-               float *curs = give_cursor();
-               float bmat[3][3], imat[3][3];
-
-               where_is_object(ob);
-       
-               Mat3CpyMat4(bmat, ob->obmat);
-               Mat3Inv(imat, bmat);
-
-               curs= give_cursor();
-               hmd->cent[0]= curs[0]-ob->obmat[3][0];
-               hmd->cent[1]= curs[1]-ob->obmat[3][1];
-               hmd->cent[2]= curs[2]-ob->obmat[3][2];
-               Mat3MulVecfl(imat, hmd->cent);
-
-               ED_undo_push(C, "Hook cursor center");
-       }*/
-}
-
-static void modifiers_selectHook(bContext *C, void *ob_v, void *md_v)
-{
-       /* XXX ModifierData *md = md_v;
-       HookModifierData *hmd = (HookModifierData*) md;
-
-       hook_select(hmd);*/
-}
-
-static void modifiers_reassignHook(bContext *C, void *ob_v, void *md_v)
-{
-       /* XXX ModifierData *md = md_v;
-       HookModifierData *hmd = (HookModifierData*) md;
-       float cent[3];
-       int *indexar, tot, ok;
-       char name[32];
-               
-       ok= hook_getIndexArray(&tot, &indexar, name, cent);
-
-       if (!ok) {
-               uiPupMenuError(C, "Requires selected vertices or active Vertex Group");
-       } else {
-               if (hmd->indexar) {
-                       MEM_freeN(hmd->indexar);
-               }
-
-               VECCOPY(hmd->cent, cent);
-               hmd->indexar = indexar;
-               hmd->totindex = tot;
-       }*/
-}
-
-static void modifiers_bindMeshDeform(bContext *C, void *ob_v, void *md_v)
-{
-       Scene *scene= CTX_data_scene(C);
-       MeshDeformModifierData *mmd = (MeshDeformModifierData*) md_v;
-       Object *ob = (Object*)ob_v;
-
-       if(mmd->bindcos) {
-               if(mmd->bindweights) MEM_freeN(mmd->bindweights);
-               if(mmd->bindcos) MEM_freeN(mmd->bindcos);
-               if(mmd->dyngrid) MEM_freeN(mmd->dyngrid);
-               if(mmd->dyninfluences) MEM_freeN(mmd->dyninfluences);
-               if(mmd->dynverts) MEM_freeN(mmd->dynverts);
-               mmd->bindweights= NULL;
-               mmd->bindcos= NULL;
-               mmd->dyngrid= NULL;
-               mmd->dyninfluences= NULL;
-               mmd->dynverts= NULL;
-               mmd->totvert= 0;
-               mmd->totcagevert= 0;
-               mmd->totinfluence= 0;
-       }
-       else {
-               DerivedMesh *dm;
-               int mode= mmd->modifier.mode;
-
-               /* force modifier to run, it will call binding routine */
-               mmd->needbind= 1;
-               mmd->modifier.mode |= eModifierMode_Realtime;
-
-               if(ob->type == OB_MESH) {
-                       dm= mesh_create_derived_view(scene, ob, 0);
-                       dm->release(dm);
-               }
-               else if(ob->type == OB_LATTICE) {
-                       lattice_calc_modifiers(scene, ob);
-               }
-               else if(ob->type==OB_MBALL) {
-                       makeDispListMBall(scene, ob);
-               }
-               else if(ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT)) {
-                       makeDispListCurveTypes(scene, ob, 0);
-               }
-
-               mmd->needbind= 0;
-               mmd->modifier.mode= mode;
-       }
-}
-
-void modifiers_explodeFacepa(bContext *C, void *arg1, void *arg2)
-{
-       ExplodeModifierData *emd=arg1;
-
-       emd->flag |= eExplodeFlag_CalcFaces;
-}
-
-void modifiers_explodeDelVg(bContext *C, void *arg1, void *arg2)
-{
-       ExplodeModifierData *emd=arg1;
-       emd->vgroup = 0;
+       ED_undo_push(C, "Modifier convert to real");
 }
-#endif
 
-static int modifier_is_fluid_particles(ModifierData *md)
+static int modifier_can_delete(ModifierData *md)
 {
-       if(md->type == eModifierType_ParticleSystem) {
+       // deletion over the deflection panel
+       // fluid particle modifier can't be deleted here
+
+       if(md->type==eModifierType_Fluidsim)
+               return 0;
+       if(md->type==eModifierType_Collision)
+               return 0;
+       if(md->type==eModifierType_Surface)
+               return 0;
+       if(md->type == eModifierType_ParticleSystem)
                if(((ParticleSystemModifierData *)md)->psys->part->type == PART_FLUID)
-                       return 1;
-       }
-       return 0;
+                       return 0;
+
+       return 1;
 }
 
 static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex)
 {
        ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+       PointerRNA ptr;
        uiBut *but;
        uiBlock *block;
-       uiLayout *column, *row, *result= NULL;
+       uiLayout *column, *row, *subrow, *result= NULL;
        int isVirtual = md->mode&eModifierMode_Virtual;
-       int x = 0, y = 0; // XXX , color = md->error?TH_REDALERT:TH_BUT_NEUTRAL;
+       // XXX short color = md->error?TH_REDALERT:TH_BUT_NEUTRAL;
        short width = 295, buttonWidth = width-120-10;
        char str[128];
 
+       RNA_pointer_create(&ob->id, &RNA_Modifier, md, &ptr);
+
        column= uiLayoutColumn(layout, 1);
+       uiLayoutSetContextPointer(column, "modifier", &ptr);
 
        /* rounded header */
        /* XXX uiBlockSetCol(block, color); */
                /* roundbox 4 free variables: corner-rounding, nop, roundbox type, shade */
-       block= uiLayoutFreeBlock(uiLayoutBox(column));
-       uiBlockSetHandleFunc(block, do_modifier_panels, NULL);
+
+       row= uiLayoutRow(uiLayoutBox(column), 0);
+       block= uiLayoutGetBlock(row);
+
+       subrow= uiLayoutRow(row, 0);
+       uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
 
        //uiDefBut(block, ROUNDBOX, 0, "", x-10, y-4, width, 25, NULL, 7.0, 0.0, 
        //               (!isVirtual && (md->mode&eModifierMode_Expanded))?3:15, 20, ""); 
@@ -584,27 +474,27 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
        /* open/close icon */
        if (!isVirtual) {
                uiBlockSetEmboss(block, UI_EMBOSSN);
-               uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, B_MODIFIER_REDRAW, ICON_TRIA_RIGHT, x-10, y-2, 20, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
+               uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, 0, ICON_TRIA_RIGHT, 0, 0, UI_UNIT_X, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier");
        }
 
        uiBlockSetEmboss(block, UI_EMBOSS);
        
        if (isVirtual) {
                sprintf(str, "%s parent deform", md->name);
-               uiDefBut(block, LABEL, 0, str, x+10, y-1, width-110, 19, NULL, 0.0, 0.0, 0.0, 0.0, "Modifier 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, B_MODIFIER_RECALC, "Make Real", x+width-100, y, 80, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Convert virtual modifier to a real modifier");
+               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");
                uiButSetFunc(but, modifiers_convertToReal, ob, md);
        } else {
                uiBlockBeginAlign(block);
-               uiDefBut(block, TEX, B_MODIFIER_REDRAW, "", x+10, y-1, buttonWidth-60, 19, md->name, 0.0, sizeof(md->name)-1, 0.0, 0.0, "Modifier name"); 
+               uiDefBut(block, TEX, 0, "", 0, 0, buttonWidth-60, UI_UNIT_Y, md->name, 0.0, sizeof(md->name)-1, 0.0, 0.0, "Modifier name"); 
 
                /* Softbody not allowed in this situation, enforce! */
                if (((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && (md->type!=eModifierType_Surface)) {
-                       uiDefIconButBitI(block, TOG, eModifierMode_Render, B_MODIFIER_RECALC, ICON_SCENE, x+10+buttonWidth-60, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
-                       but= uiDefIconButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, ICON_VIEW3D, x+10+buttonWidth-40, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
+                       uiDefIconButBitI(block, TOG, eModifierMode_Render, 0, ICON_SCENE, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
+                       but= uiDefIconButBitI(block, TOG, eModifierMode_Realtime, 0, ICON_VIEW3D, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
                        if (mti->flags&eModifierTypeFlag_SupportsEditmode) {
-                               uiDefIconButBitI(block, TOG, eModifierMode_Editmode, B_MODIFIER_RECALC, ICON_EDITMODE_HLT, x+10+buttonWidth-20, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode (only if enabled for display)");
+                               uiDefIconButBitI(block, TOG, eModifierMode_Editmode, 0, ICON_EDITMODE_HLT, 0, 0, 19, UI_UNIT_Y,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode (only if enabled for display)");
                        }
                }
                uiBlockEndAlign(block);
@@ -625,26 +515,28 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i
                                icon = ICON_BLANK1;
                        }
                        /* XXX uiBlockSetCol(block, color); */
-                       but = uiDefIconBut(block, BUT, B_MODIFIER_RECALC, icon, x+width-105, y, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
+                       but = uiDefIconBut(block, BUT, 0, icon, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode");
                        uiButSetFunc(but, modifiers_setOnCage, ob, md);
                        /* XXX uiBlockSetCol(block, TH_AUTO); */
                }
+       }
 
+       subrow= uiLayoutRow(row, 0);
+       uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
+
+       if(!isVirtual) {
                /* XXX uiBlockSetCol(block, TH_BUT_ACTION); */
 
-               but = uiDefIconBut(block, BUT, B_MODIFIER_RECALC, VICON_MOVE_UP, x+width-75, y, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier up in stack");
+               but = uiDefIconBut(block, BUT, 0, VICON_MOVE_UP, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier up in stack");
                uiButSetFunc(but, modifiers_moveUp, ob, md);
 
-               but = uiDefIconBut(block, BUT, B_MODIFIER_RECALC, VICON_MOVE_DOWN, x+width-75+20, y, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier down in stack");
+               but = uiDefIconBut(block, BUT, 0, VICON_MOVE_DOWN, 0, 0, 16, 16, NULL, 0.0, 0.0, 0.0, 0.0, "Move modifier down in stack");
                uiButSetFunc(but, modifiers_moveDown, ob, md);
                
                uiBlockSetEmboss(block, UI_EMBOSSN);
                
-               // deletion over the deflection panel
-               // fluid particle modifier can't be deleted here
-               if(md->type!=eModifierType_Fluidsim && md->type!=eModifierType_Collision && md->type!=eModifierType_Surface && !modifier_is_fluid_particles(md))<