[Bf-blender-cvs] [4ac54cf6b0a] modifier-panels-ui: Add apply / copy buttons

Hans Goudey noreply at git.blender.org
Fri Apr 3 23:47:18 CEST 2020


Commit: 4ac54cf6b0afb5c16e0f413e37122db69704072b
Author: Hans Goudey
Date:   Thu Apr 2 18:52:10 2020 -0500
Branches: modifier-panels-ui
https://developer.blender.org/rB4ac54cf6b0afb5c16e0f413e37122db69704072b

Add apply / copy buttons

They're not working yet, but it's one possibility for
the location of these buttons.

Also make the order of statements in the panel_draw
functions more consistent.

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/interface_panel.c
M	source/blender/editors/interface/interface_templates.c
M	source/blender/editors/screen/area.c
M	source/blender/modifiers/intern/MOD_armature.c
M	source/blender/modifiers/intern/MOD_array.c
M	source/blender/modifiers/intern/MOD_bevel.c
M	source/blender/modifiers/intern/MOD_boolean.c
M	source/blender/modifiers/intern/MOD_build.c
M	source/blender/modifiers/intern/MOD_cast.c
M	source/blender/modifiers/intern/MOD_cloth.c
M	source/blender/modifiers/intern/MOD_collision.c
M	source/blender/modifiers/intern/MOD_correctivesmooth.c
M	source/blender/modifiers/intern/MOD_curve.c
M	source/blender/modifiers/intern/MOD_datatransfer.c
M	source/blender/modifiers/intern/MOD_decimate.c
M	source/blender/modifiers/intern/MOD_displace.c
M	source/blender/modifiers/intern/MOD_dynamicpaint.c
M	source/blender/modifiers/intern/MOD_edgesplit.c
M	source/blender/modifiers/intern/MOD_explode.c
M	source/blender/modifiers/intern/MOD_fluid.c
M	source/blender/modifiers/intern/MOD_hook.c
M	source/blender/modifiers/intern/MOD_laplaciandeform.c
M	source/blender/modifiers/intern/MOD_laplaciansmooth.c
M	source/blender/modifiers/intern/MOD_lattice.c
M	source/blender/modifiers/intern/MOD_mask.cc
M	source/blender/modifiers/intern/MOD_meshcache.c
M	source/blender/modifiers/intern/MOD_meshdeform.c
M	source/blender/modifiers/intern/MOD_meshsequencecache.c
M	source/blender/modifiers/intern/MOD_mirror.c
M	source/blender/modifiers/intern/MOD_multires.c
M	source/blender/modifiers/intern/MOD_normal_edit.c
M	source/blender/modifiers/intern/MOD_ocean.c
M	source/blender/modifiers/intern/MOD_particleinstance.c
M	source/blender/modifiers/intern/MOD_particlesystem.c
M	source/blender/modifiers/intern/MOD_remesh.c
M	source/blender/modifiers/intern/MOD_screw.c
M	source/blender/modifiers/intern/MOD_shrinkwrap.c
M	source/blender/modifiers/intern/MOD_simpledeform.c
M	source/blender/modifiers/intern/MOD_skin.c
M	source/blender/modifiers/intern/MOD_smooth.c
M	source/blender/modifiers/intern/MOD_softbody.c
M	source/blender/modifiers/intern/MOD_solidify.c
M	source/blender/modifiers/intern/MOD_subsurf.c
M	source/blender/modifiers/intern/MOD_surface.c
M	source/blender/modifiers/intern/MOD_surfacedeform.c
M	source/blender/modifiers/intern/MOD_triangulate.c
M	source/blender/modifiers/intern/MOD_ui_common.c
M	source/blender/modifiers/intern/MOD_ui_common.h
M	source/blender/modifiers/intern/MOD_uvproject.c
M	source/blender/modifiers/intern/MOD_uvwarp.c
M	source/blender/modifiers/intern/MOD_warp.c
M	source/blender/modifiers/intern/MOD_wave.c
M	source/blender/modifiers/intern/MOD_weighted_normal.c
M	source/blender/modifiers/intern/MOD_weightvgedit.c
M	source/blender/modifiers/intern/MOD_weightvgmix.c
M	source/blender/modifiers/intern/MOD_weightvgproximity.c
M	source/blender/modifiers/intern/MOD_weld.c
M	source/blender/modifiers/intern/MOD_wireframe.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 7e80ad50de7..b418a2b2a91 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -54,7 +54,6 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         col.operator("object.modifier_active_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
 
         layout.template_modifiers()
-        # HANS-TODO: Add new modifier properties since March 20th
 
 class DATA_UL_modifiers(UIList):
     def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index def9bce591a..e6958d30ece 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -1663,11 +1663,11 @@ void UI_panel_end(const struct ScrArea *sa,
                   int width,
                   int height,
                   bool open);
-struct Panel *UI_panel_add(struct ScrArea *sa,
-                           struct ARegion *region,
-                           struct ListBase *panels,
-                           struct PanelType *panel_type,
-                           int modifier_index);
+struct Panel *UI_panel_add_recreate(struct ScrArea *sa,
+                                    struct ARegion *region,
+                                    struct ListBase *panels,
+                                    struct PanelType *panel_type,
+                                    int modifier_index);
 void UI_panel_set_list_index(struct Panel *panel, int i);
 void UI_panel_delete(struct ListBase *panels, struct Panel *panel);
 
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index c2367d7b03f..1e2bba24cd2 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -460,7 +460,7 @@ static void ui_offset_panel_block(uiBlock *block)
  * Called in situations where panels need to be added dynamically rather than only having one panel
  * corresponding to each PanelType.
  */
-Panel *UI_panel_add(
+Panel *UI_panel_add_recreate(
     ScrArea *sa, ARegion *region, ListBase *panels, PanelType *panel_type, int modifier_index)
 {
   Panel *panel = MEM_callocN(sizeof(Panel), "new panel");
@@ -490,7 +490,7 @@ Panel *UI_panel_add(
   /* Add the panel's children too. */
   for (LinkData *link = panel_type->children.first; link; link = link->next) {
     PanelType *child = link->data;
-    UI_panel_add(sa, region, &panel->children, child, modifier_index);
+    UI_panel_add_recreate(sa, region, &panel->children, child, modifier_index);
   }
 
   BLI_addtail(panels, panel);
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 8f2a116cc54..f0972f9b909 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -1863,69 +1863,6 @@ void uiTemplatePathBuilder(uiLayout *layout,
 //   /* Switch context button. */
 //   uiItemS(column);
 
-//   /* Apply / Convert / Copy Buttons. */
-//   if (!is_virtual && (md->mode & eModifierMode_Expanded)) {
-//     row = uiLayoutRow(column, false);
-
-//     if (!ELEM(md->type, eModifierType_Collision, eModifierType_Surface)) {
-//       /* only here obdata, the rest of modifiers is ob level */
-//       UI_block_lock_set(block, BKE_object_obdata_is_libdata(ob), ERROR_LIBDATA_MESSAGE);
-
-//       if (md->type == eModifierType_ParticleSystem) {
-//         ParticleSystem *psys = ((ParticleSystemModifierData *)md)->psys;
-
-//         if (!(ob->mode & OB_MODE_PARTICLE_EDIT)) {
-//           if (ELEM(psys->part->ren_as, PART_DRAW_GR, PART_DRAW_OB)) {
-//             uiItemO(row,
-//                     CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Convert"),
-//                     ICON_NONE,
-//                     "OBJECT_OT_duplicates_make_real");
-//           }
-//           else if (psys->part->ren_as == PART_DRAW_PATH) {
-//             uiItemO(row,
-//                     CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Convert"),
-//                     ICON_NONE,
-//                     "OBJECT_OT_modifier_convert");
-//           }
-//         }
-//       }
-//       else {
-//         uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT);
-//         uiItemEnumO(row,
-//                     "OBJECT_OT_modifier_apply",
-//                     CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Apply"),
-//                     0,
-//                     "apply_as",
-//                     MODIFIER_APPLY_DATA);
-
-//         if (modifier_isSameTopology(md) && !modifier_isNonGeometrical(md)) {
-//           uiItemEnumO(row,
-//                       "OBJECT_OT_modifier_apply",
-//                       CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Apply as Shape Key"),
-//                       0,
-//                       "apply_as",
-//                       MODIFIER_APPLY_SHAPE);
-//         }
-//       }
-
-//       UI_block_lock_clear(block);
-//       UI_block_lock_set(block, ob && ID_IS_LINKED(ob), ERROR_LIBDATA_MESSAGE);
-
-//       if (!ELEM(md->type,
-//                 eModifierType_Fluidsim,
-//                 eModifierType_Softbody,
-//                 eModifierType_ParticleSystem,
-//                 eModifierType_Cloth,
-//                 eModifierType_Fluid)) {
-//         uiItemO(row,
-//                 CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Copy"),
-//                 ICON_NONE,
-//                 "OBJECT_OT_modifier_copy");
-//       }
-//     }
-//   }
-// }
-
 static PanelType *panel_type_from_modifier_type(ARegion *region, ModifierType type)
 {
   ARegionType *region_type = region->type;
@@ -1990,7 +1927,13 @@ void uiTemplateModifiers(uiLayout *UNUSED(layout), bContext *C)
         PanelType *panel_type = panel_type_from_modifier_type(region, md->type);
         BLI_assert(panel_type != NULL);
 
-        UI_panel_add(sa, region, &region->panels, panel_type, i);
+        Panel *new_panel = UI_panel_add_recreate(sa, region, &region->panels, panel_type, i);
+        if (md->mode & eModifierMode_Expanded) {
+          new_panel->flag |= PNL_CLOSEDY;
+        }
+        else {
+          new_panel->flag &= ~PNL_CLOSEDY;
+        }
       }
     }
   }
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 03eaa0fe11a..194ef903526 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -2594,7 +2594,6 @@ void ED_region_panels_layout_ex(const bContext *C,
   }
 
   if (has_always_recreate_panel) {
-    // printf("  Drawing Recreate Panels:");
     for (Panel *panel = region->panels.first; panel; panel = panel->next) {
       if (panel->type != NULL) { /* Some panels don't have a type.. */
         if (panel->type->flag & PANELTYPE_RECREATE) {
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index 10c4840ff2a..4441d15878e 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -258,6 +258,7 @@ static void panel_draw(const bContext *C, Panel *panel)
   PointerRNA ptr;
   PointerRNA ob_ptr;
   modifier_panel_get_property_pointers(C, panel, &ob_ptr, &ptr);
+  modifier_panel_buttons(C, panel);
 
   bool has_vertex_group = RNA_string_length(&ptr, "vertex_group") != 0;
 
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 66f52b87a92..b03147f9f90 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -805,13 +805,13 @@ static bool isDisabled(const struct Scene *UNUSED(scene),
 
 static void panel_draw(const bContext *C, Panel *panel)
 {
-  uiLayout *sub, *row, *col, *split;
-
+  uiLayout *sub, *col, *split;
   uiLayout *layout = panel->layout;
+
   PointerRNA ptr;
   PointerRNA ob_ptr;
-
   modifier_panel_get_property_pointers(C, panel, &ob_ptr, &ptr);
+  modifier_panel_buttons(C, panel);
 
   uiItemR(layout, &ptr, "fit_type", 0, NULL, ICON_NONE);
 
@@ -848,54 +848,57 @@ static void panel_draw(const bContext *C, Panel *panel)
   uiLayoutSetActive(col, RNA_boolean_get(&ptr, "use_object_offset"));
   uiItemR(col, &ptr, "offset_object", 0, "", ICON_NONE);
 
-  /* Rows. */
-  uiItemL(layout, IFACE_("UV Offsets:"), ICON_NONE);
-  row = uiLayoutRow(layout, false);
-  sub = uiLayoutColumn(row, true);
-  uiItemR(sub, &ptr, "offset_u", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
-  uiItemR(sub, &ptr, "offset_v", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
-
-  uiItemS(layout);
   uiItemR(layout, &ptr, "start_cap", 0, NULL, ICON_NONE);
   uiItemR(layout, &ptr, "end_cap", 0, NULL, ICON_NONE);
 
   modifier_panel_end(layout, &ptr);
 }
 
-static void array_merge_header_draw(const bContext *C, Panel *panel)
+static void merge_header_draw(const bContext *C, Panel *panel)
 {
+  uiLayout *layout = panel->layout;
+
   PointerRNA ptr;
   modifier_panel_get_property_pointers(C, panel, NULL, &ptr);
-  uiLayout *layout = panel->layout;
 
   uiItemR(layout, &ptr, "use_merge_vertices", 0, IFACE_("Merge"), ICON_NONE);
 }
 
-static void array_merge_panel_draw(const bContext *C, Panel *panel)
+static void merge_panel_draw(const bContext *C, Panel *panel)
 {
+  uiLayout *layout = panel->layout;
+
   PointerRNA ptr;
   modifier_panel_get_property_pointers(C, panel, NULL, &ptr);
-  uiLayout *layout = panel->layout;
 
   uiItemR(layout, &ptr, "use_merge_vertices", 0, IFACE_("Merge"), ICON_NONE);
   uiLayout *col = uiLayoutColumn(layout, false);
   uiLayoutSetActive(col, RNA_boolean_get(&ptr, "use_merge_vertices"));
   uiItemR(col, &ptr, "use_merge_vertices_cap", 0, IFACE_("First Last"), ICON_NONE);
   uiItemR(col, &ptr, "merge_threshold", 0, IFACE_("Distance"), ICON_NONE);
+}
 
-  modifier_panel_end(layout, &ptr);
+static void uv_panel_draw(const bContext *C, Panel *panel)
+{
+  uiLayout *row, *sub;
+  uiLayout *layout = pane

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list