[Bf-extensions-cvs] [f57d359e] master: space_view3d_brush_menus; moved to contrib: T63750

meta-androcto noreply at git.blender.org
Fri May 24 02:03:11 CEST 2019


Commit: f57d359e7e0892d0d5848086aa2e0f9f334f230d
Author: meta-androcto
Date:   Fri May 24 10:02:48 2019 +1000
Branches: master
https://developer.blender.org/rBACf57d359e7e0892d0d5848086aa2e0f9f334f230d

space_view3d_brush_menus; moved to contrib: T63750

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

A	space_view3d_brush_menus/__init__.py
A	space_view3d_brush_menus/brush_menu.py
A	space_view3d_brush_menus/brushes.py
A	space_view3d_brush_menus/curve_menu.py
A	space_view3d_brush_menus/dyntopo_menu.py
A	space_view3d_brush_menus/stroke_menu.py
A	space_view3d_brush_menus/symmetry_menu.py
A	space_view3d_brush_menus/texture_menu.py
A	space_view3d_brush_menus/utils_core.py

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

diff --git a/space_view3d_brush_menus/__init__.py b/space_view3d_brush_menus/__init__.py
new file mode 100644
index 00000000..891a22de
--- /dev/null
+++ b/space_view3d_brush_menus/__init__.py
@@ -0,0 +1,131 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+# Modified by Meta-Androcto
+
+""" Copyright 2011 GPL licence applies"""
+
+bl_info = {
+    "name": "Sculpt/Paint Brush Menus",
+    "description": "Fast access to brushes & tools in Sculpt and Paint Modes",
+    "author": "Ryan Inch (Imaginer)",
+    "version": (1, 1, 6),
+    "blender": (2, 78, 0),
+    "location": "Alt V in Sculpt/Paint Modes",
+    "warning": '',
+    "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
+                "Scripts/3D_interaction/Advanced_UI_Menus",
+    "category": "3D View"}
+
+
+if "bpy" in locals():
+    import importlib
+    importlib.reload(utils_core)
+    importlib.reload(brush_menu)
+    importlib.reload(brushes)
+    importlib.reload(curve_menu)
+    importlib.reload(dyntopo_menu)
+    importlib.reload(stroke_menu)
+    importlib.reload(symmetry_menu)
+    importlib.reload(texture_menu)
+else:
+    from . import utils_core
+    from . import brush_menu
+    from . import brushes
+    from . import curve_menu
+    from . import dyntopo_menu
+    from . import stroke_menu
+    from . import symmetry_menu
+    from . import texture_menu
+
+
+import bpy
+from bpy.types import AddonPreferences
+from bpy.props import (
+        EnumProperty,
+        IntProperty,
+        )
+
+
+class VIEW3D_MT_Brushes_Pref(AddonPreferences):
+    bl_idname = __name__
+
+    use_brushes_menu_type: EnumProperty(
+        name="Choose Brushes Selection",
+        description="",
+        items=[('lists', "Use compact Menus",
+                "Use more compact menus instead  \n"
+                "of thumbnails for displaying brushes"),
+               ('template', "Template ID Preview",
+                "Use Template ID preview menu (thumbnails) for brushes\n"
+                "(Still part of the menu)"),
+               ('popup', "Pop up menu",
+                "Use a separate pop-up window for accessing brushes")
+            ],
+        default='lists'
+        )
+    column_set: IntProperty(
+        name="Number of Columns",
+        description="Number of columns used for the brushes menu",
+        default=2,
+        min=1,
+        max=10
+        )
+
+    def draw(self, context):
+        layout = self.layout
+
+        col = layout.column(align=True)
+        row = col.row(align=True)
+        row.prop(self, "use_brushes_menu_type", expand=True)
+        col.prop(self, "column_set", slider=True)
+
+
+# New hotkeys and registration
+
+addon_keymaps = []
+
+
+def register():
+    # register all blender classes
+    bpy.utils.register_module(__name__)
+
+    # set the add-on name variable to access the preferences
+    utils_core.get_addon_name = __name__
+
+    # register hotkeys
+    wm = bpy.context.window_manager
+    modes = ('Sculpt', 'Vertex Paint', 'Weight Paint', 'Image Paint', 'Particle')
+
+    for mode in modes:
+        km = wm.keyconfigs.addon.keymaps.new(name=mode)
+        kmi = km.keymap_items.new('wm.call_menu', 'V', 'PRESS', alt=True)
+        kmi.properties.name = "VIEW3D_MT_sv3_brush_options"
+        addon_keymaps.append((km, kmi))
+
+
+def unregister():
+    for km, kmi in addon_keymaps:
+        km.keymap_items.remove(kmi)
+    addon_keymaps.clear()
+
+    # unregister all blender classes
+    bpy.utils.unregister_module(__name__)
+
+
+if __name__ == "__main__":
+    register()
diff --git a/space_view3d_brush_menus/brush_menu.py b/space_view3d_brush_menus/brush_menu.py
new file mode 100644
index 00000000..d4c6863f
--- /dev/null
+++ b/space_view3d_brush_menus/brush_menu.py
@@ -0,0 +1,625 @@
+# gpl author: Ryan Inch (Imaginer)
+
+import bpy
+from bpy.types import (
+        Operator,
+        Menu,
+        )
+from bpy.props import BoolProperty
+from . import utils_core
+from . import brushes
+from bl_ui.properties_paint_common import UnifiedPaintPanel
+
+class BrushOptionsMenu(Menu):
+    bl_label = "Brush Options"
+    bl_idname = "VIEW3D_MT_sv3_brush_options"
+
+    @classmethod
+    def poll(self, context):
+        return utils_core.get_mode() in (
+                    'SCULPT', 'VERTEX_PAINT',
+                    'WEIGHT_PAINT', 'TEXTURE_PAINT',
+                    'PARTICLE_EDIT'
+                    )
+
+    def draw_brushes(self, layout, h_brush, ico, context):
+        if utils_core.addon_settings(lists=True) == 'popup' or not h_brush:
+            layout.row().operator(
+                    "view3d.sv3_brush_menu_popup", text="Brush",
+                    icon=ico
+                    )
+        else:
+            layout.row().menu(
+                    "VIEW3D_MT_sv3_brushes_menu", text="Brush",
+                    icon=ico
+                    )
+
+    def draw(self, context):
+        mode = utils_core.get_mode()
+        layout = self.layout
+
+        if mode == 'SCULPT':
+            self.sculpt(mode, layout, context)
+
+        elif mode in ('VERTEX_PAINT', 'WEIGHT_PAINT'):
+            self.vw_paint(mode, layout, context)
+
+        elif mode == 'TEXTURE_PAINT':
+            self.texpaint(mode, layout, context)
+
+        else:
+            self.particle(layout, context)
+
+    def sculpt(self, mode, layout, context):
+        has_brush = utils_core.get_brush_link(context, types="brush")
+        icons = brushes.brush_icon[mode][has_brush.sculpt_tool] if \
+                has_brush else "BRUSH_DATA"
+
+        self.draw_brushes(layout, has_brush, icons, context)
+
+        layout.row().menu(BrushRadiusMenu.bl_idname)
+
+        if has_brush:
+            # if the active brush is unlinked these menus don't do anything
+            layout.row().menu(BrushStrengthMenu.bl_idname)
+            layout.row().menu(BrushAutosmoothMenu.bl_idname)
+            layout.row().menu(BrushModeMenu.bl_idname)
+            layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+            layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+            layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
+
+        layout.row().menu("VIEW3D_MT_sv3_dyntopo")
+        layout.row().menu("VIEW3D_MT_sv3_master_symmetry_menu")
+
+    def vw_paint(self, mode, layout, context):
+        has_brush = utils_core.get_brush_link(context, types="brush")
+        icons = brushes.brush_icon[mode][has_brush.vertex_tool] if \
+                has_brush else "BRUSH_DATA"
+
+        if mode == 'VERTEX_PAINT':
+            layout.row().operator(ColorPickerPopup.bl_idname, icon="COLOR")
+            layout.row().separator()
+
+        self.draw_brushes(layout, has_brush, icons, context)
+
+        if mode == 'VERTEX_PAINT':
+            layout.row().menu(BrushRadiusMenu.bl_idname)
+
+            if has_brush:
+                # if the active brush is unlinked these menus don't do anything
+                layout.row().menu(BrushStrengthMenu.bl_idname)
+                layout.row().menu(BrushModeMenu.bl_idname)
+                layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+                layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+                layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
+
+        if mode == 'WEIGHT_PAINT':
+            layout.row().menu(BrushWeightMenu.bl_idname)
+            layout.row().menu(BrushRadiusMenu.bl_idname)
+
+            if has_brush:
+                # if the active brush is unlinked these menus don't do anything
+                layout.row().menu(BrushStrengthMenu.bl_idname)
+                layout.row().menu(BrushModeMenu.bl_idname)
+                layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+                layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
+
+    def texpaint(self, mode, layout, context):
+        toolsettings = context.tool_settings.image_paint
+
+        if context.image_paint_object and not toolsettings.detect_data():
+            layout.row().label(text="Missing Data", icon="INFO")
+            layout.row().label(text="See Tool Shelf", icon="BACK")
+        else:
+            has_brush = utils_core.get_brush_link(context, types="brush")
+            if has_brush and has_brush.image_tool in {'DRAW', 'FILL'} and \
+               has_brush.blend not in {'ERASE_ALPHA', 'ADD_ALPHA'}:
+                layout.row().operator(ColorPickerPopup.bl_idname, icon="COLOR")
+                layout.row().separator()
+
+            icons = brushes.brush_icon[mode][has_brush.image_tool] if \
+                    has_brush else "BRUSH_DATA"
+
+            self.draw_brushes(layout, has_brush, icons, context)
+
+            if has_brush:
+                # if the active brush is unlinked these menus don't do anything
+                if has_brush and has_brush.image_tool in {'MASK'}:
+                    layout.row().menu(BrushWeightMenu.bl_idname, text="Mask Value")
+
+                if has_brush and has_brush.image_tool not in {'FILL'}:
+                    layout.row().menu(BrushRadiusMenu.bl_idname)
+
+                layout.row().menu(BrushStrengthMenu.bl_idname)
+
+                if has_brush and has_brush.image_tool in {'DRAW'}:
+                    layout.row().menu(BrushModeMenu.bl_idname)
+
+                layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+                layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+                layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
+
+            layout.row().menu("VIEW3D_

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list