[Bf-blender-cvs] [284f04a53dd] soc-2019-npr: LANPR: UI refactor: modifier ui now put into separate tab.

YimingWu noreply at git.blender.org
Fri Jul 26 09:48:59 CEST 2019


Commit: 284f04a53dd7aeafe7f8d31d5dceb9a0177e8dc6
Author: YimingWu
Date:   Fri Jul 26 15:48:29 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB284f04a53dd7aeafe7f8d31d5dceb9a0177e8dc6

LANPR: UI refactor: modifier ui now put into separate tab.

===================================================================

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	release/scripts/startup/bl_ui/properties_lanpr.py
M	source/blender/editors/space_buttons/buttons_context.c
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/modifiers/intern/MOD_featureline.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index aeceb8edcfb..5edede73ceb 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -22,12 +22,6 @@ from bpy.types import Panel
 from bpy.app.translations import pgettext_iface as iface_
 from mathutils import Vector
 
-def is_unit_transformation(ob):
-    if ob.scale.xyz==Vector((1,1,1)) and ob.location.xyz==Vector((0,0,0)) and \
-        ob.rotation_euler.x == 0.0 and ob.rotation_euler.y == 0.0 and ob.rotation_euler.z == 0.0:
-        return True
-    return False
-
 class ModifierButtonsPanel:
     bl_space_type = 'PROPERTIES'
     bl_region_type = 'WINDOW'
@@ -1678,50 +1672,12 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         col.prop(md, "thresh", text="Threshold")
         col.prop(md, "face_influence")
 
-    def FEATURE_LINE(self, layout, ob, md):
-        lanpr_enabled = bpy.context.scene.lanpr.enabled
-        modifier_useless = bpy.context.scene.render.engine!="BLENDER_LANPR" and not lanpr_enabled
-        layout.active = not modifier_useless
-        
-        if modifier_useless:
-            layout.label(text="LANPR is not enabled")
-
-        layout.label(text='Enable Types:')
-        row = layout.row(align=True)
-        row.prop(md,'enable_contour',toggle=True)
-        row.prop(md,'enable_crease',toggle=True)
-        row.prop(md,'enable_mark',toggle=True)
-        row.prop(md,'enable_material',toggle=True)
-        row.prop(md,'enable_intersection',toggle=True)
-        row.prop(md,'enable_modifier_mark',toggle=True)
-
-        row = layout.row(align=True)
-        row.prop(md,'use_multiple_levels', icon='GP_MULTIFRAME_EDITING', icon_only=True)
-        row.prop(md,'level_begin')
-        if md.use_multiple_levels:
-            row.prop(md,'level_end')
-
-        split = layout.split(factor=0.5)
-        col = split.column()
-        col.label(text="Object:")
-        col.prop(md, "target", text="")
-        col = split.column()
-        col.label(text="Vertex Group:")
-        col.label(text="Inoperative")
-
-        if not md.target:
-            layout.label(text="You have to specify a target GP Object")
+    def FEATURE_LINE(self, layout, _ob, _md):
+        if not (bpy.context.scene.render.engine == "BLENDER_LANPR" or bpy.context.scene.lanpr.enabled):
+            layout.label(text="LANPR is disabled.")
         else:
-            if not is_unit_transformation(md.target):
-                row = layout.row()
-                row.label(text = "Target GP has self transformations.")
-                row = layout.row()
-                row.operator("lanpr.reset_object_transfromations").obj=md.target.name
-            #remove this for now.
-            #layout.prop(md,'replace', text='Replace existing frames')
-            row = layout.row()
-            row.prop(md,'layer')
-            row.prop(md,'material')
+            layout.label(text="Settings are inside the LANPR tab.")
+        
 
 class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
     bl_label = "Modifiers"
diff --git a/release/scripts/startup/bl_ui/properties_lanpr.py b/release/scripts/startup/bl_ui/properties_lanpr.py
index 21da841f195..efc6454c41c 100644
--- a/release/scripts/startup/bl_ui/properties_lanpr.py
+++ b/release/scripts/startup/bl_ui/properties_lanpr.py
@@ -30,8 +30,19 @@ class LanprButtonsPanel:
 
     @classmethod
     def poll(cls, context):
-        return (context.engine in cls.COMPAT_ENGINES)
+        return True
 
+def find_feature_line_modifier(ob):
+    for md in ob.modifiers:
+        if md.type=='FEATURE_LINE':
+            return md
+    return None
+
+def is_unit_transformation(ob):
+    if ob.scale.xyz==Vector((1,1,1)) and ob.location.xyz==Vector((0,0,0)) and \
+        ob.rotation_euler.x == 0.0 and ob.rotation_euler.y == 0.0 and ob.rotation_euler.z == 0.0:
+        return True
+    return False
 
 class OBJECT_PT_lanpr_settings(LanprButtonsPanel, Panel):
     bl_label = "Object LANPR Settings"
@@ -41,16 +52,73 @@ class OBJECT_PT_lanpr_settings(LanprButtonsPanel, Panel):
         return context.scene.render.engine == 'BLENDER_LANPR' or context.scene.lanpr.enabled
 
     def draw(self,context):
-        layout = self.layout
         collection = context.collection
         lanpr = collection.lanpr
         ob = context.object
+        md = find_feature_line_modifier(ob)
+
+        layout = self.layout
+        layout.use_property_split = True
+        layout.use_property_decorate = False
+
+        if not md:
+            layout.label(text="No feature line modifier for this object.")
+            return
+        
+        layout.prop(md,'use_multiple_levels', text="Multiple Levels")
+        if md.use_multiple_levels:
+            col = layout.column(align=True)
+            col.prop(md,'level_begin')
+            col.prop(md,'level_end', text="End")
+        else:
+            layout.prop(md,'level_begin', text="Level")
+
+        layout.prop(md,'enable_contour')
+        layout.prop(md,'enable_crease')
+        layout.prop(md,'enable_mark')
+        layout.prop(md,'enable_material')
+        layout.prop(md,'enable_intersection')
+        layout.prop(md,'enable_modifier_mark')
+
+class OBJECT_PT_lanpr_modifier_target(LanprButtonsPanel, Panel):
+    bl_label = "GPencil Target"
+    bl_parent_id = "OBJECT_PT_lanpr_settings"
+    COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_LANPR', 'BLENDER_OPENGL', 'BLENDER_EEVEE'}
+
+    @classmethod
+    def poll(cls, context):
+        scene = context.scene
+        lanpr = scene.lanpr
+        ob = context.object
+        return (scene.render.engine=="BLENDER_LANPR" or lanpr.enabled) and find_feature_line_modifier(ob)
 
-        layout.label(text="Waiting to be implemented")
+    def draw(self, context):
+        lanpr = context.scene.lanpr
+        ob = context.object
+        md = find_feature_line_modifier(ob)
+
+        layout = self.layout
+        layout.use_property_split = True
+        layout.use_property_decorate = False
 
+        split = layout.split(factor=0.5)
+        col = split.column()
+        col.label(text="Object:")
+        col.prop(md, "target", text="")
+        col = split.column()
+        col.label(text="Vertex Group:")
+        col.label(text="Inoperative")
+        
+        if md.target:
+            if not is_unit_transformation(md.target):
+                layout.label(text = "Target GP has self transformations.")
+                layout.operator("lanpr.reset_object_transfromations").obj=md.target.name
+            layout.prop(md,'layer')
+            layout.prop(md,'material')
 
 classes = (
     OBJECT_PT_lanpr_settings,
+    OBJECT_PT_lanpr_modifier_target,
 )
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index aafcb266e40..ddcbfd7b6a0 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -604,7 +604,11 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma
       found = buttons_context_path_collection(path, window);
       break;
     case BCONTEXT_LANPR:
-      found = buttons_context_path_object(path);
+      if(scene && (scene->lanpr.enabled||!strcmp(scene->r.engine,"BLENDER_LANPR"))){
+        found = buttons_context_path_object(path);
+      }else{
+        found = 0;
+      }
       break;
     case BCONTEXT_TOOL:
       found = true;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 10ced022bcd..94e3e99cb2f 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -7201,6 +7201,7 @@ static void rna_def_scene_lanpr(BlenderRNA *brna)
   prop = RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_default(prop, 0);
   RNA_def_property_ui_text(prop, "Enabled", "Is LANPR enabled");
+  RNA_def_property_update(prop, NC_WINDOW, NULL);
 
   prop = RNA_def_property(srna, "auto_update", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_default(prop, 0);
diff --git a/source/blender/modifiers/intern/MOD_featureline.c b/source/blender/modifiers/intern/MOD_featureline.c
index 6124386770f..54d93d71f26 100644
--- a/source/blender/modifiers/intern/MOD_featureline.c
+++ b/source/blender/modifiers/intern/MOD_featureline.c
@@ -108,7 +108,7 @@ ModifierTypeInfo modifierType_FeatureLine = {
     /* structName */ "FeatureLineModifierData",
     /* structSize */ sizeof(FeatureLineModifierData),
     /* type */ eModifierTypeType_Constructive,
-    /* flags */ eModifierTypeFlag_AcceptsMesh,
+    /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_Single,
     /* copyData */ copyData,
 
     /* deformVerts */ NULL,



More information about the Bf-blender-cvs mailing list