OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / ui / Submenus / tools.py

150 lines · python ref:
import bpy
from ... icons import get_icon_id
from ... utils.addons import addon_exists
from ... utility import addon, modifier


class HOPS_MT_ObjectToolsSubmenu(bpy.types.Menu):
    bl_label = 'Objects Tools Submenu'
    bl_idname = 'HOPS_MT_ObjectToolsSubmenu'

    def draw(self, context):
        layout = self.layout

        row = layout.column().row()

        if addon.preference().ui.expanded_menu:
            column = row.column()
        else:
            column =self.layout

        column.operator("hops.flatten_align", text="Reset Axis/Align/Select", icon_value=get_icon_id("Xslap"))
        column.operator("hops.set_origin", text="Set Origin", icon_value=get_icon_id("CircleSetup"))
        column.operator("hops.floor_object", text="To Floor", icon_value=get_icon_id("grey"))
        column.separator()

        column.operator("hops.bool_dice_v2", text="Dice V2", icon_value=get_icon_id("Dice"))
        column.operator("hops.array_twist", text="Twist 360", icon_value=get_icon_id("ATwist360"))
        if addon.preference().property.radial_array_type == 'CLASSIC':
            column.operator("hops.radial_array", text="Radial Array", icon_value=get_icon_id("ArrayCircle"))
        else:
            column.operator("hops.radial_array_nodes", text="Radial Array V2", icon_value=get_icon_id("ArrayCircle")).from_empty = True
        column.separator()
        column.operator("hops.taper", text = "Taper / Deform", icon_value=get_icon_id("Tris"))
        column.separator()

        column.operator("hops.sphere_cast", text="SphereCast", icon_value=get_icon_id("SphereCast"))
        column.separator()

        column.operator("hops.edge2curve", text="Curve/Extract", icon_value=get_icon_id("Curve"))
        column.operator("view3d.face_extract", text="Face Extract", icon_value=get_icon_id("FacePanel"))
        #column.separator()

        #column.operator("hops.st3_array", text="Array V2", icon_value=get_icon_id("GreyArrayX"))
        # column.separator()

        column.separator() #.modifier_types='BOOLEAN'
        column.operator("hops.apply_modifiers", text="Smart Apply", icon_value=get_icon_id("Applyall"))
        column.operator("hops.adjust_auto_smooth", text="AutoSmooth", icon_value=get_icon_id("Diagonal"))

        if addon.preference().ui.expanded_menu:
            column = row.column()
        else:
            column.separator()

        if bpy.context.active_object and bpy.context.active_object.type == 'MESH':
            column.menu("HOPS_MT_MaterialListMenu", text = "Material List", icon="MATERIAL_DATA")
            if len(context.selected_objects) >= 2:
                column.operator("material.simplify", text="Material Link", icon_value=get_icon_id("Applyall"))
            #column.separator()

        column.operator_context = 'INVOKE_DEFAULT'
        column.operator("material.hops_new", text = 'Add Blank Material', icon="PLUS")

        column.separator()

        column.operator("hops.xunwrap", text="Auto Unwrap", icon_value=get_icon_id("CUnwrap"))
        #column.separator()

        if len(context.selected_objects) == 1:
            column.operator("hops.reset_status", text="HOPS Reset", icon_value=get_icon_id("StatusReset"))
            #column.separator()

        if context.active_object and context.active_object.type == 'MESH':
            column.menu("HOPS_MT_SelectViewSubmenu", text="Selection Options",  icon_value=get_icon_id("ShowNgonsTris"))
            #column.separator()

        column.separator()

        column.menu("HOPS_MT_BoolScrollOperatorsSubmenu", text="Mod Scroll/Toggle", icon_value=get_icon_id("Diagonal"))

        column.separator()

        column.menu("HOPS_MT_Export", text = 'Export', icon="EXPORT")
        column.separator()

        if addon_exists("MESHmachine"):
            column.separator()
            column.menu("MACHIN3_MT_mesh_machine", text="MESHmachine", icon_value=get_icon_id("Machine"))

        if addon_exists("Cablerator"):
            column.menu("VIEW3D_MT_cablerator", text="Cable Ops", icon_value=get_icon_id("Cablerator"))

        if len(context.selected_objects) == 2:
            if addon_exists("conform_object"):
                column.menu("OBJECT_MT_conform_object", text="Conform Object", icon_value=get_icon_id("Cablerator"))
                column.separator()
            column.operator("hops.shrinkwrap2", text="ShrinkTo", icon='GP_MULTIFRAME_EDITING')
        else:
            column.separator()

        column.operator("hops.to_gpstroke", text="To_Stroke", icon="GREASEPENCIL")
        column.separator()
        if addon_exists("nSolve"):
            column.operator("nsolve.swap_mode", text="nSolve", icon_value=get_icon_id("nSolve"))

        column.operator("hops.timer", text="hTimer", icon="TIME")


class HOPS_MT_MeshToolsSubmenu(bpy.types.Menu):
    bl_label = 'Mesh Tools Submenu'
    bl_idname = 'HOPS_MT_MeshToolsSubmenu'

    def draw(self, context):
        layout = self.layout
        is_boolean = len([mod for mod in bpy.context.active_object.modifiers if modifier.mod_type(mod) == 'BOOLEAN'])

        layout.operator_context = 'INVOKE_DEFAULT'
        layout.operator("hops.helper", text="Modifier Helper", icon="SCRIPTPLUGINS")

        layout.separator()

        layout.operator("hops.bevel_assist", text="Bevel / Edge Manager", icon_value=get_icon_id("CSharpen"))

        layout.separator()

        layout.operator("hops.bevel_helper", text="Bevel Helper", icon_value=get_icon_id("ModifierHelper"))
        layout.operator("hops.sharp_manager", text="Edge Manager", icon_value=get_icon_id("Diagonal"))
        layout.operator("view3d.bevel_multiplier", text="Bevel Exponent", icon_value=get_icon_id("FaceGrate"))

        layout.separator()

        if is_boolean:
            #layout.operator("hops.scroll_multi", text="Bool Multi Scroll ", icon_value=get_icon_id("Diagonal"))
            layout.operator("hops.ever_scroll_v2", text="Ever Scroll", icon_value=get_icon_id("StatusReset"))
            layout.operator("hops.bool_scroll_objects", text="Object Scroll", icon_value=get_icon_id("StatusReset"))
            layout.separator()

        # layout.operator("hops.scroll_multi", text="Mod Scroll/Toggle", icon_value=get_icon_id("StatusReset"))
        layout.operator("hops.ever_scroll_v2", text="Ever Scroll", icon_value=get_icon_id("StatusReset"))

        op = layout.operator("hops.modifier_scroll", text="Modifier Scroll", icon_value=get_icon_id("Diagonal"))
        op.additive = True
        op.all = True

        layout.operator("hops.bool_toggle_viewport", text= "Toggle Modifiers", icon_value=get_icon_id("Ngons")).all_modifiers = False

        layout.separator()

        layout.menu("HOPS_MT_Export", text = 'Export', icon="EXPORT")