code cleanup:
authorCampbell Barton <ideasman42@gmail.com>
Tue, 15 Jan 2013 23:17:45 +0000 (23:17 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 15 Jan 2013 23:17:45 +0000 (23:17 +0000)
- cycles ui used 'cscene' for scene.cycles and scene.cycles_curves
- style cleanup

23 files changed:
build_files/buildbot/master.cfg
build_files/buildbot/slave_rsync.py
build_files/cmake/cmake_static_check_clang_array.py
build_files/cmake/cmake_static_check_cppcheck.py
build_files/cmake/cmake_static_check_smatch.py
build_files/cmake/cmake_static_check_sparse.py
build_files/cmake/cmake_static_check_splint.py
build_files/cmake/project_info.py
build_files/cmake/project_source_info.py
doc/python_api/examples/bpy.props.5.py
doc/python_api/examples/bpy.types.UIList.py
doc/python_api/rst_from_bmesh_opdefines.py
doc/python_api/sphinx_doc_gen.py
intern/cycles/blender/addon/__init__.py
intern/cycles/blender/addon/engine.py
intern/cycles/blender/addon/osl.py
intern/cycles/blender/addon/properties.py
intern/cycles/blender/addon/ui.py
source/blender/editors/interface/interface_regions.c
source/blender/editors/transform/transform.h
source/tests/bl_load_addons.py
source/tests/bl_rst_completeness.py
source/tests/rst_to_doctree_mini.py

index 9d0839b..3cfea2a 100644 (file)
@@ -28,8 +28,8 @@ c['slavePortnum'] = 9989
 from buildbot.changes.svnpoller import SVNPoller
 
 c['change_source'] = SVNPoller(
-       'https://svn.blender.org/svnroot/bf-blender/trunk/',
-       pollinterval=1200)
+    'https://svn.blender.org/svnroot/bf-blender/trunk/',
+    pollinterval=1200)
 
 # BUILDERS
 #
@@ -74,9 +74,11 @@ def svn_step(branch=''):
     else:
         return SVN(baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/blender', mode='update', defaultBranch='trunk', workdir='blender')
 
+
 def lib_svn_step(dir):
     return SVN(name='lib svn', baseURL='https://svn.blender.org/svnroot/bf-blender/%%BRANCH%%/lib/' + dir, mode='update', defaultBranch='trunk', workdir='lib/' + dir)
 
+
 def rsync_step(id, branch, rsync_script):
     return ShellCommand(name='rsync', command=['python', rsync_script, id, branch], description='uploading', descriptionDone='uploaded', workdir='install')
 
@@ -155,9 +157,9 @@ for i in range(0, schedule_cycle):
 
     print(names)
     c['schedulers'].append(timed.Nightly(name='nightly' + str(i),
-        builderNames=names,
-        hour=3+i,
-        minute=0))
+                                         builderNames=names,
+                                         hour=3 + i,
+                                         minute=0))
 
 # STATUS TARGETS
 #
index aea1b65..6936232 100644 (file)
@@ -41,5 +41,3 @@ print(command)
 
 ret = os.system(command)
 sys.exit(ret)
-
-
index 7f45cc6..448454c 100644 (file)
@@ -50,7 +50,7 @@ def main():
     check_commands = []
     for c, inc_dirs, defs in source_info:
         cmd = ([CHECKER_BIN] +
-                CHECKER_ARGS +
+               CHECKER_ARGS +
                [c] +
                [("-I%s" % i) for i in inc_dirs] +
                [("-D%s" % d) for d in defs]
index d79145f..2f7ffa5 100644 (file)
@@ -56,7 +56,7 @@ def main():
     check_commands = []
     for c, inc_dirs, defs in source_info:
         cmd = ([CHECKER_BIN] +
-                CHECKER_ARGS +
+               CHECKER_ARGS +
                [c] +
                [("-I%s" % i) for i in inc_dirs] +
                [("-D%s" % d) for d in defs]
index 7535f1c..2cf07b0 100644 (file)
@@ -41,6 +41,7 @@ import os
 
 USE_QUIET = (os.environ.get("QUIET", None) is not None)
 
+
 def main():
     source_info = project_source_info.build_info(use_cxx=False, ignore_prefix_list=CHECKER_IGNORE_PREFIX)
 
@@ -48,7 +49,7 @@ def main():
     for c, inc_dirs, defs in source_info:
 
         cmd = ([CHECKER_BIN] +
-                CHECKER_ARGS +
+               CHECKER_ARGS +
                [c] +
                [("-I%s" % i) for i in inc_dirs] +
                [("-D%s" % d) for d in defs]
index 06bef1a..8a3fb47 100644 (file)
@@ -47,7 +47,7 @@ def main():
     for c, inc_dirs, defs in source_info:
 
         cmd = ([CHECKER_BIN] +
-                CHECKER_ARGS +
+               CHECKER_ARGS +
                [c] +
                [("-I%s" % i) for i in inc_dirs] +
                [("-D%s" % d) for d in defs]
index 5b12075..6ad03f2 100644 (file)
@@ -79,7 +79,7 @@ def main():
     check_commands = []
     for c, inc_dirs, defs in source_info:
         cmd = ([CHECKER_BIN] +
-                CHECKER_ARGS +
+               CHECKER_ARGS +
                [c] +
                [("-I%s" % i) for i in inc_dirs] +
                [("-D%s" % d) for d in defs]
index e73b94a..99c6ad0 100755 (executable)
@@ -150,7 +150,6 @@ def cmake_advanced_info():
 
         os.system(cmd)
         return join(CMAKE_DIR, ".cproject")
-        
 
     includes = []
     defines = []
index 69d09b0..1adc468 100644 (file)
@@ -89,12 +89,12 @@ def makefile_log():
     if make_exe_basename.startswith("make"):
         print("running 'make' with --dry-run ...")
         process = subprocess.Popen([make_exe, "--always-make", "--dry-run", "--keep-going", "VERBOSE=1"],
-                                    stdout=subprocess.PIPE,
+                                   stdout=subprocess.PIPE,
                                    )
     elif make_exe_basename.startswith("ninja"):
         print("running 'ninja' with -t commands ...")
         process = subprocess.Popen([make_exe, "-t", "commands"],
-                                    stdout=subprocess.PIPE,
+                                   stdout=subprocess.PIPE,
                                    )
 
     while process.poll():
index e49d0f2..1f61e33 100644 (file)
@@ -16,6 +16,7 @@ import bpy
 def get_float(self):
     return self["testprop"]
 
+
 def set_float(self, value):
     self["testprop"] = value
 
@@ -36,6 +37,7 @@ bpy.types.Scene.test_date = bpy.props.StringProperty(get=get_date)
 def get_array(self):
     return (True, self["somebool"])
 
+
 def set_array(self, values):
     self["somebool"] = values[0] and values[1]
 
@@ -51,10 +53,12 @@ test_items = [
     ("YELLOW", "Red", "", 4),
     ]
 
+
 def get_enum(self):
     import random
     return random.randint(1, 4)
 
+
 def set_enum(self, value):
     print("setting value", value)
 
@@ -66,16 +70,16 @@ bpy.types.Scene.test_enum = bpy.props.EnumProperty(items=test_items, get=get_enu
 scene = bpy.context.scene
 
 scene.test_float = 12.34
-print (scene.test_float)
+print(scene.test_float)
 
 scene.test_array = (True, False)
-print ([x for x in scene.test_array])
+print([x for x in scene.test_array])
 
 #scene.test_date = "blah"   # this would fail, property is read-only
-print (scene.test_date)
+print(scene.test_date)
 
 scene.test_enum = 'BLUE'
-print (scene.test_enum)
+print(scene.test_enum)
 
 
 # >>> 12.34000015258789
index f2017e3..a37bbff 100644 (file)
@@ -86,4 +86,4 @@ def unregister():
 
 
 if __name__ == "__main__":
-    register()
\ No newline at end of file
+    register()
index c1b6643..3776ef7 100644 (file)
@@ -65,10 +65,10 @@ def main():
     fsrc = open(FILE_OP_DEFINES_C, 'r', encoding="utf-8")
 
     blocks = []
-    
+
     is_block = False
     is_comment = False  # /* global comments only */
-    
+
     comment_ctx = None
     block_ctx = None
 
@@ -82,7 +82,7 @@ def main():
         elif l.strip().startswith("/*"):
             is_comment = True
             comment_ctx = []
-        
+
         if is_block:
             if l.strip().startswith("//"):
                 pass
@@ -93,11 +93,11 @@ def main():
                     l = l[:cpp_comment]
 
                 block_ctx.append(l)
-            
+
             if l.strip() == "};":
                 is_block = False
                 comment_ctx = None
-        
+
         if is_comment:
             c_comment_start = l.find("/*")
             if c_comment_start != -1:
@@ -113,7 +113,6 @@ def main():
     fsrc.close()
     del fsrc
 
-
    # namespace hack
     vars = (
         "BMO_OP_SLOT_ELEMENT_BUF",
@@ -124,7 +123,7 @@ def main():
         "BMO_OP_SLOT_VEC",
         "BMO_OP_SLOT_PTR",
         "BMO_OP_SLOT_MAPPING",
-        
+
         "BMO_OP_SLOT_SUBTYPE_MAP_ELEM",
         "BMO_OP_SLOT_SUBTYPE_MAP_BOOL",
         "BMO_OP_SLOT_SUBTYPE_MAP_INT",
@@ -157,23 +156,23 @@ def main():
     for comment, b in blocks:
         # magic, translate into python
         b[0] = b[0].replace("static BMOpDefine ", "")
-        
+
         for i, l in enumerate(b):
             l = l.strip()
             l = l.replace("{", "(")
             l = l.replace("}", ")")
-            
+
             if l.startswith("/*"):
                 l = l.replace("/*", "'''own <")
             else:
                 l = l.replace("/*", "'''inline <")
             l = l.replace("*/", ">''',")
-            
+
             # exec func. eg: bmo_rotate_edges_exec,
             if l.startswith("bmo_") and l.endswith("_exec,"):
                 l = "None,"
             b[i] = l
-            
+
         #for l in b:
         #    print(l)
 
@@ -182,7 +181,7 @@ def main():
             "__file__": "generated",
             "__name__": "__main__",
         }
-        
+
         global_namespace.update(vars_dict)
 
         text_a, text_b = text.split("=", 1)
@@ -191,7 +190,6 @@ def main():
         # print(global_namespace["result"])
         blocks_py.append((comment, global_namespace["result"]))
 
-
     # ---------------------
     # Now convert into rst.
     fout = open(OUT_RST, 'w', encoding="utf-8")
@@ -217,7 +215,7 @@ def main():
             args_out_index[:] = [i for (i, a) in enumerate(args_out) if type(a) == tuple]
 
         fw(".. function:: %s(bm, %s)\n\n" % (b[0], ", ".join([args_in[i][0] for i in args_in_index])))
-        
+
         # -- wash the comment
         comment_washed = []
         for i, l in enumerate(comment):
@@ -236,7 +234,6 @@ def main():
         fw("\n")
         # -- done
 
-
         # get the args
         def get_args_wash(args, args_index, is_ret):
             args_wash = []
@@ -268,7 +265,7 @@ def main():
                         comment_next = comment_next[8:-1]  # strip inline <...>
                     else:
                         comment_next = ""
-                        
+
                 comment = ""
                 if comment_prev:
                     comment += comment_prev.strip()
@@ -304,18 +301,21 @@ def main():
 
                 elif tp == BMO_OP_SLOT_ELEMENT_BUF:
                     assert(tp_sub is not None)
-                    
+
                     ls = []
-                    if tp_sub & BM_VERT: ls.append(":class:`bmesh.types.BMVert`")
-                    if tp_sub & BM_EDGE: ls.append(":class:`bmesh.types.BMEdge`")
-                    if tp_sub & BM_FACE: ls.append(":class:`bmesh.types.BMFace`")
+                    if tp_sub & BM_VERT:
+                        ls.append(":class:`bmesh.types.BMVert`")
+                    if tp_sub & BM_EDGE:
+                        ls.append(":class:`bmesh.types.BMEdge`")
+                    if tp_sub & BM_FACE:
+                        ls.append(":class:`bmesh.types.BMFace`")
                     assert(ls)  # must be at least one
 
                     if tp_sub & BMO_OP_SLOT_SUBTYPE_ELEM_IS_SINGLE:
                         tp_str = "/".join(ls)
                     else:
                         tp_str = ("list of (%s)" % ", ".join(ls))
-                        
+
                     del ls
                 elif tp == BMO_OP_SLOT_MAPPING:
                     if tp_sub & BMO_OP_SLOT_SUBTYPE_MAP_EMPTY:
@@ -356,21 +356,21 @@ def main():
 
             fw("   :arg %s: %s\n" % (name, comment))
             fw("   :type %s: %s\n" % (name, tp))
-        
+
         if args_out_wash:
             fw("   :return:\n\n")
-            
+
             for (name, tp, comment) in args_out_wash:
                 assert(name.endswith(".out"))
                 name = name[:-4]
                 fw("      - ``%s``: %s\n\n" % (name, comment))
                 fw("        **type** %s\n" % tp)
-            
+
             fw("\n")
             fw("   :rtype: dict with string keys\n")
 
         fw("\n\n")
-        
+
     fout.close()
     del fout
     print(OUT_RST)
index af6ddac..7457ae0 100644 (file)
@@ -612,10 +612,10 @@ def pyfunc2sphinx(ident, fw, identifier, py_func, is_class=True):
     '''
     function or class method to sphinx
     '''
-    
+
     if type(py_func) == type(bpy.types.Space.draw_handler_add):
         return
-    
+
     arg_str = inspect.formatargspec(*inspect.getargspec(py_func))
 
     if not is_class:
@@ -984,6 +984,7 @@ context_type_map = {
     "world": ("World", False),
 }
 
+
 def pycontext2sphinx(basepath):
     # Only use once. very irregular
 
@@ -1011,7 +1012,6 @@ def pycontext2sphinx(basepath):
         "sequencer_context_dir",
     )
 
-
     unique = set()
     blend_cdll = ctypes.CDLL("")
     for ctx_str in context_strings:
index 39871bc..36fb5c0 100644 (file)
@@ -34,6 +34,7 @@ import bpy
 
 from . import engine
 
+
 class CyclesRender(bpy.types.RenderEngine):
     bl_idname = 'CYCLES'
     bl_label = "Cycles Render"
@@ -68,7 +69,7 @@ class CyclesRender(bpy.types.RenderEngine):
     def view_update(self, context):
         if not self.session:
             engine.create(self, context.blend_data, context.scene,
-                context.region, context.space_data, context.region_data)
+                          context.region, context.space_data, context.region_data)
         engine.update(self, context.blend_data, context.scene)
 
     def view_draw(self, context):
@@ -104,4 +105,3 @@ def unregister():
     properties.unregister()
     presets.unregister()
     bpy.utils.unregister_module(__name__)
-
index 9641128..ef700ba 100644 (file)
@@ -18,6 +18,7 @@
 
 # <pep8 compliant>
 
+
 def init():
     import bpy
     import _cycles
@@ -89,4 +90,3 @@ def available_devices():
 def with_osl():
     import _cycles
     return _cycles.with_osl
-
index 79ce3df..0a67eda 100644 (file)
 
 # <pep8 compliant>
 
-import bpy, _cycles, os, tempfile
+import bpy
+import _cycles
+
 
-# compile .osl file with given filepath to temporary .oso file
 def osl_compile(input_path, report):
+    """compile .osl file with given filepath to temporary .oso file"""
+    import tempfile
     output_file = tempfile.NamedTemporaryFile(mode='w', suffix=".oso", delete=False)
     output_path = output_file.name
     output_file.close()
@@ -33,9 +36,12 @@ def osl_compile(input_path, report):
 
     return ok, output_path
 
-# compile and update shader script node
+
 def update_script_node(node, report):
-    import os, shutil
+    """compile and update shader script node"""
+    import os
+    import shutil
+    import tempfile
 
     if node.mode == 'EXTERNAL':
         # compile external script file
@@ -103,7 +109,7 @@ def update_script_node(node, report):
 
                 report({'ERROR'}, "Can't read OSO bytecode to store in node at %r" % oso_path)
                 ok = False
-    
+
     else:
         report({'WARNING'}, "No text or file specified in node, nothing to compile")
         return
@@ -125,4 +131,3 @@ def update_script_node(node, report):
             pass
 
     return ok
-
index 9dfacf1..18a829a 100644 (file)
@@ -96,7 +96,7 @@ enum_curves_interpolation = (
     ('CARDINAL', "Cardinal interpolation", "Use cardinal interpolation between segments"),
     ('BSPLINE', "B-spline interpolation", "Use b-spline interpolation between segments"),
     )
-    
+
 enum_tile_order = (
     ('CENTER', "Center", "Render from center to the edges"),
     ('RIGHT_TO_LEFT', "Right to Left", "Render from right to left"),
@@ -105,6 +105,7 @@ enum_tile_order = (
     ('BOTTOM_TO_TOP', "Bottom to Top", "Render from bottom to top"),
     )
 
+
 class CyclesRenderSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -620,6 +621,7 @@ class CyclesMeshSettings(bpy.types.PropertyGroup):
         del bpy.types.Curve.cycles
         del bpy.types.MetaBall.cycles
 
+
 class CyclesCurveRenderSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -706,7 +708,7 @@ class CyclesCurveRenderSettings(bpy.types.PropertyGroup):
                 name="Use Cycles Hair Rendering",
                 description="Activate Cycles hair rendering for particle system",
                 default=True,
-                )        
+                )
         cls.segments = IntProperty(
                 name="Segments",
                 description="Number of segments between path keys (note that this combines with the 'draw step' value)",
@@ -742,6 +744,7 @@ class CyclesCurveRenderSettings(bpy.types.PropertyGroup):
     def unregister(cls):
         del bpy.types.Scene.cycles_curves
 
+
 class CyclesCurveSettings(bpy.types.PropertyGroup):
     @classmethod
     def register(cls):
@@ -778,6 +781,7 @@ class CyclesCurveSettings(bpy.types.PropertyGroup):
     def unregister(cls):
         del bpy.types.ParticleSettings.cycles
 
+
 def register():
     bpy.utils.register_class(CyclesRenderSettings)
     bpy.utils.register_class(CyclesCameraSettings)
index 9767bd7..6b79404 100644 (file)
@@ -946,91 +946,98 @@ class CyclesParticle_PT_textures(CyclesButtonsPanel, Panel):
             slot = part.texture_slots[part.active_texture_index]
             layout.template_ID(slot, "texture", new="texture.new")
 
+
 class CyclesRender_PT_CurveRendering(CyclesButtonsPanel, Panel):
     bl_label = "Cycles Hair Rendering"
     bl_context = "particle"
-    
+
     @classmethod
     def poll(cls, context):
+        scene = context.scene
+        cscene = scene.cycles
         psys = context.particle_system
         device_type = context.user_preferences.system.compute_device_type
-        experimental = context.scene.cycles.feature_set == 'EXPERIMENTAL' and (context.scene.cycles.device == 'CPU' or device_type == 'NONE')
+        experimental = ((cscene.feature_set == 'EXPERIMENTAL') and (cscene.device == 'CPU' or device_type == 'NONE'))
         return CyclesButtonsPanel.poll(context) and experimental and psys
-        
+
     def draw_header(self, context):
-        cscene = context.scene.cycles_curves
-        self.layout.prop(cscene, "use_curves", text="")
-    
+        ccscene = context.scene.cycles_curves
+        self.layout.prop(ccscene, "use_curves", text="")
+
     def draw(self, context):
         layout = self.layout
-        
+
         scene = context.scene
-        cscene = scene.cycles_curves
-        
-        layout.active = cscene.use_curves
-        
-        layout.prop(cscene, "preset", text="Mode")
-        
-        if cscene.preset == 'CUSTOM':
-            layout.prop(cscene, "primitive", text="Primitive")
-        
-            if cscene.primitive == 'TRIANGLES':
-                layout.prop(cscene, "triangle_method", text="Method")
-                if cscene.triangle_method == 'TESSELLATED_TRIANGLES':
-                    layout.prop(cscene, "resolution", text="Resolution")
-                layout.prop(cscene, "use_smooth", text="Smooth")
-            elif cscene.primitive == 'LINE_SEGMENTS':
-                layout.prop(cscene, "use_backfacing", text="Check back-faces")
-                
+        ccscene = scene.cycles_curves
+
+        layout.active = ccscene.use_curves
+
+        layout.prop(ccscene, "preset", text="Mode")
+
+        if ccscene.preset == 'CUSTOM':
+            layout.prop(ccscene, "primitive", text="Primitive")
+
+            if ccscene.primitive == 'TRIANGLES':
+                layout.prop(ccscene, "triangle_method", text="Method")
+                if ccscene.triangle_method == 'TESSELLATED_TRIANGLES':
+                    layout.prop(ccscene, "resolution", text="Resolution")
+                layout.prop(ccscene, "use_smooth", text="Smooth")
+            elif ccscene.primitive == 'LINE_SEGMENTS':
+                layout.prop(ccscene, "use_backfacing", text="Check back-faces")
+
                 row = layout.row()
-                row.prop(cscene, "use_encasing", text="Exclude encasing")
+                row.prop(ccscene, "use_encasing", text="Exclude encasing")
                 sub = row.row()
-                sub.active = cscene.use_encasing
-                sub.prop(cscene, "encasing_ratio", text="Ratio for encasing")
-                
-                layout.prop(cscene, "line_method", text="Method")
-                layout.prop(cscene, "use_tangent_normal", text="Use tangent normal as default")
-                layout.prop(cscene, "use_tangent_normal_geometry", text="Use tangent normal geometry")
-                layout.prop(cscene, "use_tangent_normal_correction", text="Correct tangent normal for slope")
-                layout.prop(cscene, "interpolation", text="Interpolation")
-                
+                sub.active = ccscene.use_encasing
+                sub.prop(ccscene, "encasing_ratio", text="Ratio for encasing")
+
+                layout.prop(ccscene, "line_method", text="Method")
+                layout.prop(ccscene, "use_tangent_normal", text="Use tangent normal as default")
+                layout.prop(ccscene, "use_tangent_normal_geometry", text="Use tangent normal geometry")
+                layout.prop(ccscene, "use_tangent_normal_correction", text="Correct tangent normal for slope")
+                layout.prop(ccscene, "interpolation", text="Interpolation")
+
                 row = layout.row()
-                row.prop(cscene, "segments", text="Segments")
-                row.prop(cscene, "normalmix", text="Ray Mix")
-            elif cscene.primitive == 'CURVE_SEGMENTS' or cscene.primitive == 'CURVE_RIBBONS':
-                layout.prop(cscene, "subdivisions", text="Curve subdivisions")
-                layout.prop(cscene, "use_backfacing", text="Check back-faces")
-                
-                layout.prop(cscene, "interpolation", text="Interpolation")
+                row.prop(ccscene, "segments", text="Segments")
+                row.prop(ccscene, "normalmix", text="Ray Mix")
+            elif ccscene.primitive in {'CURVE_SEGMENTS', 'CURVE_RIBBONS'}:
+                layout.prop(ccscene, "subdivisions", text="Curve subdivisions")
+                layout.prop(ccscene, "use_backfacing", text="Check back-faces")
+
+                layout.prop(ccscene, "interpolation", text="Interpolation")
                 row = layout.row()
-                row.prop(cscene, "segments", text="Segments")
-            
+                row.prop(ccscene, "segments", text="Segments")
+
             row = layout.row()
-            row.prop(cscene, "use_cache", text="Export cache with children")
-            if cscene.use_cache:
-                row.prop(cscene, "use_parents", text="Include parents")  
-            
+            row.prop(ccscene, "use_cache", text="Export cache with children")
+            if ccscene.use_cache:
+                row.prop(ccscene, "use_parents", text="Include parents")
+
+
 class CyclesParticle_PT_CurveSettings(CyclesButtonsPanel, Panel):
     bl_label = "Cycles Hair Settings"
     bl_context = "particle"
-    
+
     @classmethod
     def poll(cls, context):
-        use_curves = context.scene.cycles_curves.use_curves and context.particle_system
+        scene = context.scene
+        cscene = scene.cycles
+        ccscene = scene.cycles_curves
+        use_curves = ccscene.use_curves and context.particle_system
         device_type = context.user_preferences.system.compute_device_type
-        experimental = context.scene.cycles.feature_set == 'EXPERIMENTAL' and (context.scene.cycles.device == 'CPU' or device_type == 'NONE')
+        experimental = cscene.feature_set == 'EXPERIMENTAL' and (cscene.device == 'CPU' or device_type == 'NONE')
         return CyclesButtonsPanel.poll(context) and experimental and use_curves
 
     def draw(self, context):
         layout = self.layout
-        
+
         psys = context.particle_settings
         cpsys = psys.cycles
-        
+
         row = layout.row()
         row.prop(cpsys, "shape", text="Shape")
         row.prop(cpsys, "use_closetip", text="Close tip")
-        
+
         layout.label(text="Width multiplier:")
         row = layout.row()
         row.prop(cpsys, "root_width", text="Root")
@@ -1097,74 +1104,75 @@ def draw_pause(self, context):
 
 
 def get_panels():
+    types = bpy.types
     return (
-        bpy.types.RENDER_PT_render,
-        bpy.types.RENDER_PT_output,
-        bpy.types.RENDER_PT_encoding,
-        bpy.types.RENDER_PT_dimensions,
-        bpy.types.RENDER_PT_stamp,
-        bpy.types.SCENE_PT_scene,
-        bpy.types.SCENE_PT_audio,
-        bpy.types.SCENE_PT_unit,
-        bpy.types.SCENE_PT_keying_sets,
-        bpy.types.SCENE_PT_keying_set_paths,
-        bpy.types.SCENE_PT_physics,
-        bpy.types.WORLD_PT_context_world,
-        bpy.types.DATA_PT_context_mesh,
-        bpy.types.DATA_PT_context_camera,
-        bpy.types.DATA_PT_context_lamp,
-        bpy.types.DATA_PT_context_speaker,
-        bpy.types.DATA_PT_texture_space,
-        bpy.types.DATA_PT_curve_texture_space,
-        bpy.types.DATA_PT_mball_texture_space,
-        bpy.types.DATA_PT_vertex_groups,
-        bpy.types.DATA_PT_shape_keys,
-        bpy.types.DATA_PT_uv_texture,
-        bpy.types.DATA_PT_vertex_colors,
-        bpy.types.DATA_PT_camera,
-        bpy.types.DATA_PT_camera_display,
-        bpy.types.DATA_PT_lens,
-        bpy.types.DATA_PT_speaker,
-        bpy.types.DATA_PT_distance,
-        bpy.types.DATA_PT_cone,
-        bpy.types.DATA_PT_customdata,
-        bpy.types.DATA_PT_custom_props_mesh,
-        bpy.types.DATA_PT_custom_props_camera,
-        bpy.types.DATA_PT_custom_props_lamp,
-        bpy.types.DATA_PT_custom_props_speaker,
-        bpy.types.TEXTURE_PT_clouds,
-        bpy.types.TEXTURE_PT_wood,
-        bpy.types.TEXTURE_PT_marble,
-        bpy.types.TEXTURE_PT_magic,
-        bpy.types.TEXTURE_PT_blend,
-        bpy.types.TEXTURE_PT_stucci,
-        bpy.types.TEXTURE_PT_image,
-        bpy.types.TEXTURE_PT_image_sampling,
-        bpy.types.TEXTURE_PT_image_mapping,
-        bpy.types.TEXTURE_PT_musgrave,
-        bpy.types.TEXTURE_PT_voronoi,
-        bpy.types.TEXTURE_PT_distortednoise,
-        bpy.types.TEXTURE_PT_voxeldata,
-        bpy.types.TEXTURE_PT_pointdensity,
-        bpy.types.TEXTURE_PT_pointdensity_turbulence,
-        bpy.types.TEXTURE_PT_mapping,
-        bpy.types.TEXTURE_PT_influence,
-        bpy.types.TEXTURE_PT_colors,
-        bpy.types.PARTICLE_PT_context_particles,
-        bpy.types.PARTICLE_PT_emission,
-        bpy.types.PARTICLE_PT_hair_dynamics,
-        bpy.types.PARTICLE_PT_cache,
-        bpy.types.PARTICLE_PT_velocity,
-        bpy.types.PARTICLE_PT_rotation,
-        bpy.types.PARTICLE_PT_physics,
-        bpy.types.PARTICLE_PT_boidbrain,
-        bpy.types.PARTICLE_PT_render,
-        bpy.types.PARTICLE_PT_draw,
-        bpy.types.PARTICLE_PT_children,
-        bpy.types.PARTICLE_PT_field_weights,
-        bpy.types.PARTICLE_PT_force_fields,
-        bpy.types.PARTICLE_PT_vertexgroups,
-        bpy.types.PARTICLE_PT_custom_props,
+        types.RENDER_PT_render,
+        types.RENDER_PT_output,
+        types.RENDER_PT_encoding,
+        types.RENDER_PT_dimensions,
+        types.RENDER_PT_stamp,
+        types.SCENE_PT_scene,
+        types.SCENE_PT_audio,
+        types.SCENE_PT_unit,
+        types.SCENE_PT_keying_sets,
+        types.SCENE_PT_keying_set_paths,
+        types.SCENE_PT_physics,
+        types.WORLD_PT_context_world,
+        types.DATA_PT_context_mesh,
+        types.DATA_PT_context_camera,
+        types.DATA_PT_context_lamp,
+        types.DATA_PT_context_speaker,
+        types.DATA_PT_texture_space,
+        types.DATA_PT_curve_texture_space,
+        types.DATA_PT_mball_texture_space,
+        types.DATA_PT_vertex_groups,
+        types.DATA_PT_shape_keys,
+        types.DATA_PT_uv_texture,
+        types.DATA_PT_vertex_colors,
+        types.DATA_PT_camera,
+        types.DATA_PT_camera_display,
+        types.DATA_PT_lens,
+        types.DATA_PT_speaker,
+        types.DATA_PT_distance,
+        types.DATA_PT_cone,
+        types.DATA_PT_customdata,
+        types.DATA_PT_custom_props_mesh,
+        types.DATA_PT_custom_props_camera,
+        types.DATA_PT_custom_props_lamp,
+        types.DATA_PT_custom_props_speaker,
+        types.TEXTURE_PT_clouds,
+        types.TEXTURE_PT_wood,
+        types.TEXTURE_PT_marble,
+        types.TEXTURE_PT_magic,
+        types.TEXTURE_PT_blend,
+        types.TEXTURE_PT_stucci,
+        types.TEXTURE_PT_image,
+        types.TEXTURE_PT_image_sampling,
+        types.TEXTURE_PT_image_mapping,
+        types.TEXTURE_PT_musgrave,
+        types.TEXTURE_PT_voronoi,
+        types.TEXTURE_PT_distortednoise,
+        types.TEXTURE_PT_voxeldata,
+        types.TEXTURE_PT_pointdensity,
+        types.TEXTURE_PT_pointdensity_turbulence,
+        types.TEXTURE_PT_mapping,
+        types.TEXTURE_PT_influence,
+        types.TEXTURE_PT_colors,
+        types.PARTICLE_PT_context_particles,
+        types.PARTICLE_PT_emission,
+        types.PARTICLE_PT_hair_dynamics,
+        types.PARTICLE_PT_cache,
+        types.PARTICLE_PT_velocity,
+        types.PARTICLE_PT_rotation,
+        types.PARTICLE_PT_physics,
+        types.PARTICLE_PT_boidbrain,
+        types.PARTICLE_PT_render,
+        types.PARTICLE_PT_draw,
+        types.PARTICLE_PT_children,
+        types.PARTICLE_PT_field_weights,
+        types.PARTICLE_PT_force_fields,
+        types.PARTICLE_PT_vertexgroups,
+        types.PARTICLE_PT_custom_props,
         )
 
 
index ca5e2a1..e846fc3 100644 (file)
@@ -651,7 +651,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
        ofsx = 0; //(but->block->panel) ? but->block->panel->ofsx : 0;
        ofsy = 0; //(but->block->panel) ? but->block->panel->ofsy : 0;
 
-       rect_fl.xmin = (but->rect.xmin + but->rect.xmax) * 0.5f + ofsx - TIP_BORDER_X;
+       rect_fl.xmin = BLI_rctf_cent_x(&but->rect) + ofsx - TIP_BORDER_X;
        rect_fl.xmax = rect_fl.xmin + fontw + TIP_BORDER_X;
        rect_fl.ymax = but->rect.ymin + ofsy - TIP_BORDER_Y;
        rect_fl.ymin = rect_fl.ymax - fonth  - TIP_BORDER_Y;
index 28264a4..083d7b9 100644 (file)
@@ -108,7 +108,7 @@ typedef struct TransCon {
        void  (*applyVec)(struct TransInfo *t, struct TransData *td, const float in[3], float out[3], float pvec[3]);
                             /* Apply function pointer for linear vectorial transformation                */
                             /* The last three parameters are pointers to the in/out/printable vectors    */
-       void  (*applySize)(struct TransInfo *t, struct TransData *td, float [3][3]);
+       void  (*applySize)(struct TransInfo *t, struct TransData *td, float smat[3][3]);
                             /* Apply function pointer for size transformation */
        void  (*applyRot)(struct TransInfo *t, struct TransData *td, float vec[3], float *angle);
                             /* Apply function pointer for rotation transformation */
index fab2e2e..1ed76a1 100644 (file)
@@ -26,6 +26,7 @@ import addon_utils
 import sys
 import imp
 
+
 def disable_addons():
     # first disable all
     addons = bpy.context.user_preferences.addons
index e9e2779..6e67f8d 100644 (file)
@@ -56,6 +56,7 @@ modules = (
     ("gpu.rst", "gpu", False),
 )
 
+
 def is_directive_pydata(filepath, directive):
     if directive.type in {"function", "method", "class", "attribute", "data"}:
         return True
@@ -113,7 +114,6 @@ def module_validate(filepath, mod, mod_name, doctree, partial_ok):
                                 print(directive_to_str(filepath, directive_child), end=" ")
                                 print("rst contains non existing class member %r" % attr_id)
 
-
     # MODULE member missing from RST ???
     doctree_dict = directive_members_dict(filepath, doctree)
     for attr in dir(mod):
@@ -136,7 +136,7 @@ def module_validate(filepath, mod, mod_name, doctree, partial_ok):
 
 
 def main():
-    
+
     if bge is None:
         print("Skipping BGE modules!")
 
@@ -151,7 +151,7 @@ def main():
         doctree = rst_to_doctree_mini.parse_rst_py(filepath)
         __import__(modname)
         mod = sys.modules[modname]
-        
+
         module_validate(filepath, mod, modname, doctree, partial_ok)
 
 
index 1810372..cb7b029 100644 (file)
@@ -45,7 +45,7 @@ def parse_rst_py(filepath):
     # -->
     # ("foo", "bar")
     re_prefix = re.compile(r"^\.\.\s([a-zA-Z09\-]+)::\s*(.*)\s*$")
-    
+
     tree = collections.defaultdict(list)
     indent_map = {}
     indent_prev = 0