OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / ui / Panels / workflow.py

99 lines · python ref:
import bpy
from bpy.types import Panel

from ... utility import addon
from ... utility import modifier

class HOPS_PT_workflow(Panel):
    bl_label = 'Workflow'
    bl_space_type = 'VIEW_3D'
    bl_category = 'HardOps'
    bl_region_type = 'UI'

    def column(self, context):
        layout = self.layout
        column = layout.column(align=True)

        return column

    def draw(self, context):

        column = self.column(context)

        preference = addon.preference().property


        if bpy.app.version[:2] >= (4, 5):
            row = column.row(align=True)
            row.label(text = "Behavior / Boolean Solver ")

        box = column.box()
        row = box.row(align=True)
        row.prop(preference, 'workflow', expand=True)

        row = box.row(align=True)
        row.prop(preference, 'workflow_modifier', expand=True)

        # row = column.row(align=True)
        # row.label(text = "Default Solver: ")
        row = box.row(align=True)
        row.prop(preference, 'boolean_solver', expand=True)

        #row = column.row(align=True).split(factor=0.1, align=True)
        #row.prop(preference, 'add_weighten_normals_mod', toggle=True)

        #row2 = row.row(align=True).split(factor=0.1, align=True)
        #row2.prop(preference, 'use_harden_normals', toggle=True)

        # sub = row2.row(align=True)
        # sub.prop(preference, 'workflow_mode', expand=True)

        box = column.box()

        row = box.row(align=True)
        row.prop(preference, 'sort_modifiers', text='Sort Modifier', expand=True)

        if preference.sort_modifiers:
            row = row.row(align=True)
            row.scale_x = 1.5
            row.alignment = 'RIGHT'
            split = row.split(align=True, factor=0.85)

            row = split.row(align=True)
            for type in modifier.sort_types:
                icon = F'MOD_{type}'
                if icon == 'MOD_WEIGHTED_NORMAL':
                    icon = 'MOD_NORMALEDIT'
                elif icon == 'MOD_SIMPLE_DEFORM':
                    icon = 'MOD_SIMPLEDEFORM'
                elif icon == 'MOD_DECIMATE':
                    icon = 'MOD_DECIM'
                elif icon == 'MOD_WELD':
                    icon = 'AUTOMERGE_OFF'
                elif icon == 'MOD_UV_PROJECT':
                    icon = 'MOD_UVPROJECT'
                elif icon == 'MOD_NODES':
                    icon = 'GEOMETRY_NODES'
                row.prop(preference, F'sort_{type.lower()}', text='', icon=icon)

            row = split.row(align=True)
            row.scale_x = 1.5
            row.popover('HOPS_PT_sort_last', text='', icon='SORT_ASC')

        # sub = row.row(align=True)
        # sub.alignment = 'RIGHT'

        # if addon.preference().property.sort_bevel:
        #     sub.prop(addon.preference().property, 'sort_bevel_last', text='', icon='SORT_ASC')
        #     sub.separator()
        # sub.prop(preference, 'sort_bevel', text='', icon='MOD_BEVEL')
        # sub.prop(preference, 'sort_array', text='', icon='MOD_ARRAY')
        # sub.prop(preference, 'sort_mirror', text='', icon='MOD_MIRROR')
        # sub.prop(preference, 'sort_solidify', text='', icon='MOD_SOLIDIFY')
        # sub.prop(preference, 'sort_weighted_normal', text='', icon='MOD_NORMALEDIT')
        # sub.prop(preference, 'sort_simple_deform', text='', icon='MOD_SIMPLEDEFORM')
        # sub.prop(preference, 'sort_triangulate', text='', icon='MOD_TRIANGULATE')
        # sub.prop(preference, 'sort_decimate', text='', icon='MOD_DECIM')

        column.separator()