OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / src / property / preference / color.py

714 lines · python ref:
import bpy

from mathutils import Vector

from bpy.types import PropertyGroup
from bpy.props import BoolProperty, FloatVectorProperty, FloatProperty, EnumProperty

from ... utilityremove import names
from .... utility import addon

class hops(PropertyGroup):

    colection_color: EnumProperty(
        name = 'Collection Color',
        description = 'Set Cutters Collection Color',
        items = [
            ('NONE','None','', '', 0),
            ('COLOR_01','Red','', 'COLLECTION_COLOR_01', 1),
            ('COLOR_02','Orange','', 'COLLECTION_COLOR_02', 2),
            ('COLOR_03','Yellow','', 'COLLECTION_COLOR_03', 3),
            ('COLOR_04','Green','', 'COLLECTION_COLOR_04', 4),
            ('COLOR_05','Blue','', 'COLLECTION_COLOR_05', 5),
            ('COLOR_06','Violet','', 'COLLECTION_COLOR_06', 6),
            ('COLOR_07','Pink','', 'COLLECTION_COLOR_07', 7),
            ('COLOR_08','Brown','', 'COLLECTION_COLOR_08', 8)],
        default = 'COLOR_01')

    wire: FloatVectorProperty(
        name = names['wire'],
        description = 'Color of the shape\'s wire',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.0, 0.0, 0.0, 0.33))

    show_shape_wire: FloatVectorProperty(
        name = names['show_shape_wire'],
        description = 'Color of the shape\'s wire when the object is to be shown',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.23, 0.7, 0.15, 0.33))

    dot2: FloatVectorProperty(
        name = 'Dot 2',
        description = 'Color of Dot 2',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.35, 1, 0.29, 0.9))

    dot3: FloatVectorProperty(
        name = 'Dot 3',
        description = 'Color of Dot 3',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (1, 0.133, 0.133, 0.9))

    dot4: FloatVectorProperty(
        name = 'Dot 4',
        description = 'Color of Dot 4',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (1, 0.9, 0.03, 0.9))

    dot5: FloatVectorProperty(
        name = 'Dot 5',
        description = 'Color of Dot 5',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.32, 0.67, 1, 0.9))

    dot6: FloatVectorProperty(
        name = 'Dot 5',
        description = 'Color of Dot 6',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.88, 0.19, 1, 0.9))

    dot7: FloatVectorProperty(
        name = 'Dot 5',
        description = 'Color of Dot 7',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (1, 0.57, 0.176, 0.9))

    displace_x: FloatVectorProperty(
        name = 'displace_x',
        description = 'Color of displace_x',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (1, 0.2, 0.322, 0.9))

    displace_y: FloatVectorProperty(
        name = 'displace_y',
        description = 'Color of displace_y',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.54, 0.83, 0, 0.9))

    displace_z: FloatVectorProperty(
        name = 'displace_z',
        description = 'Color of displace_z',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.157, 0.565, 1, 0.9))

    screw_x: FloatVectorProperty(
        name = 'screw_x',
        description = 'Color of screw_x',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    screw_y: FloatVectorProperty(
        name = 'screw_y',
        description = 'Color of screw_y',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    screw_z: FloatVectorProperty(
        name = 'screw_z',
        description = 'Color of screw_z',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    solidify_x: FloatVectorProperty(
        name = 'solidify_x',
        description = 'Color of solidify_x',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    solidify_y: FloatVectorProperty(
        name = 'solidify_y',
        description = 'Color of solidify_y',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    solidify_z: FloatVectorProperty(
        name = 'solidify_z',
        description = 'Color of solidify_z',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    solidify_c: FloatVectorProperty(
        name = 'solidify_c',
        description = 'Color of solidify_c',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.157, 0.565, 1, 0.9))

    array_x: FloatVectorProperty(
        name = 'array_x',
        description = 'Color of array_x',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.875, 0.832, 0, 0.9))

    array_y: FloatVectorProperty(
        name = 'array_y',
        description = 'Color of array_y',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.875, 0.832, 0, 0.9))

    array_z: FloatVectorProperty(
        name = 'array_z',
        description = 'Color of array_z',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.875, 0.832, 0, 0.9))

    simple_deform_x: FloatVectorProperty(
        name = 'simple_deform_x',
        description = 'Color of simple_deform_x',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.939, 0.236, 1, 0.9))

    simple_deform_y: FloatVectorProperty(
        name = 'simple_deform_y',
        description = 'Color of simple_deform_y',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.939, 0.236, 1, 0.9))

    simple_deform_z: FloatVectorProperty(
        name = 'simple_deform_z',
        description = 'Color of simple_deform_z',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.939, 0.236, 1, 0.9))

    wireframe_c: FloatVectorProperty(
        name = 'wireframe_c',
        description = 'Color of wireframe_c',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.939, 0.236, 1, 0.9))

    bevel_c: FloatVectorProperty(
        name = 'bevel_c',
        description = 'Color of bevel_c',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    dot: FloatVectorProperty(
        name = names['dot'],
        description = 'Color of snapping points',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (0.4, 1, 0.9, 0.9))

    dot_highlight: FloatVectorProperty(
        name = names['dot_highlight'],
        description = 'Color of snapping points highlighted',
        size = 4,
        min = 0,
        max = 1,
        subtype='COLOR',
        default = (1, 0.597, 0.133, 0.9))

    enable_tool_overlays: BoolProperty(
        name='Enable tool overlays',
        description='Enable tool overlays',
        default=True)

    Hops_text_color: FloatVectorProperty(
        name="",
        default=Vector((0.6, 0.6, 0.6, 0.9)),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_text2_color: FloatVectorProperty(
        name="",
        default=Vector((0.6, 0.6, 0.6, 0.9)),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_border_color: FloatVectorProperty(
        name="",
        default=Vector((0.235, 0.235, 0.235, 0.8)),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_border2_color: FloatVectorProperty(
        name="",
        default=Vector((0.692, 0.298, 0.137, 0.718)),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_logo_color: FloatVectorProperty(
        name="",
        default=(0.448, 0.448, 0.448, 0.1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_logo_color_csharp: FloatVectorProperty(
        name="",
        default=(1, 0.597, 0.133, 0.9),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_logo_color_cstep: FloatVectorProperty(
        name="",
        default=(0.29, 0.52, 1.0, 0.9),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_logo_color_boolshape2: FloatVectorProperty(
        name="",
        default=(1, 0.133, 0.133, 0.53),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_logo_color_boolshape: FloatVectorProperty(
        name="",
        default=(0.35, 1, 0.29, 0.53),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_hud_color: FloatVectorProperty(
        name="",
        default=(0.17, 0.17, 0.17, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_hud_text_color: FloatVectorProperty(
        name="",
        default=(0.831, 0.831, 0.831, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_hud_help_color: FloatVectorProperty(
        name="",
        default=(0.250, 0.750, 1, 0.7),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_display_logo: BoolProperty(name="Display Logo", default=False)

    Bool_Dots_Text: BoolProperty(name="Display Dots Text", default=True)

    Hops_logo_size: FloatProperty(
        name="HardOps Indicator Size",
        description="BoxCutter indicator size",
        default=2, min=0, max=100)

    Hops_logo_x_position: FloatProperty(
        name="HardOps Indicator X Position",
        description="BoxCutter Indicator X Position",
        default=-203)

    Hops_logo_y_position: FloatProperty(
        name="HardOps Indicator Y Position",
        description="BoxCutter Indicator Y Position",
        default=19)

    Hops_mirror_modal_scale: FloatProperty(
        name="Modal Mirror Operators Scale",
        description="Modal Mirror Operators Scale",
        default=5, min=0.1, max=100)

    Hops_mirror_modal_sides_scale: FloatProperty(
        name="Modal Mirror Operators Sides Scale",
        description="Modal Mirror Operators Sides Scale",
        default=0.20, min=0.01, max=0.99)

    expand: BoolProperty(name="expand color options", default=False)
    hud_expand: BoolProperty(name="Hud color options", default=False)
    col_expand: BoolProperty(name="Collection color options", default=False)

    #UI SYSTEM
    Hops_UI_text_color: FloatVectorProperty(
        name="",
        default=(1, 1, 1, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_secondary_text_color: FloatVectorProperty(
        name="",
        default=(1, 1, 1, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_mods_highlight_color: FloatVectorProperty(
        name="",
        default=(.879, .669, .229, 1), #RGB
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_highlight_color: FloatVectorProperty(
        name="",
        default=(0, 0, 1, .025),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_highlight_drag_color: FloatVectorProperty(
        name="",
        default=(1, 0, 0, .25),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_background_color: FloatVectorProperty(
        name="",
        default=(.75, .75, .75, 0),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_cell_background_color: FloatVectorProperty(
        name="",
        default=(.411, .411, .411, .35),
        size=4,
        min=0, max=1,
        subtype='COLOR',
        description = "Background color for modals")

    tips_background: FloatVectorProperty(
        name="",
        default=(.411, .411, .411),
        size=3,
        min=0, max=1,
        subtype='COLOR',
        description = "Background color for Dot UI Tips")

    Hops_UI_dropshadow_color: FloatVectorProperty(
        name="",
        default=(0, 0, 0, .15),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_border_color: FloatVectorProperty(
        name="",
        default=(0.2, 0.2, 0.2, .7),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_mouse_over_color: FloatVectorProperty(
        name="",
        default=(0, 0, .25, .5),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_text_highlight_color: FloatVectorProperty(
        name="",
        default=(1, 1, 0, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    Hops_UI_uv_color: FloatVectorProperty(
        name="",
        default=(.25, .25, .25, .875),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    # Hops extra drawing
    Hops_wire_mesh: FloatVectorProperty(
        name="",
        default=(1, .5, 0, 1),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    poly_debug_alpha: FloatProperty(
        name="Poly Debug Alpha",
        default=0.20, min=0.001, max=1)

    # --- OPERATIONMS --- #
    grid_system_color: FloatVectorProperty(
        name="",
        default=(1, 1, 1, .5),
        size=4,
        min=0, max=1,
        subtype='COLOR')

    # Form UI : PRIVATE DATA
    form_color_prop_1: FloatVectorProperty(
        name="form_color_prop_1",
        size = 4, min = 0, max = 1,
        subtype='COLOR',
        default = (0, 0, 0, 1))

    form_color_prop_2: FloatVectorProperty(
        name="form_color_prop_2",
        size = 4, min = 0, max = 1,
        subtype='COLOR',
        default = (0, 0, 0, 1))

    form_color_prop_2: FloatVectorProperty(
        name="form_color_prop_3",
        size = 4, min = 0, max = 1,
        subtype='COLOR',
        default = (0, 0, 0, 1))


def header_row(row, prop, label='', emboss=False):
    preference = addon.preference()
    icon = 'DISCLOSURE_TRI_RIGHT' if not getattr(preference.color, prop) else 'DISCLOSURE_TRI_DOWN'
    row.alignment = 'LEFT'
    row.prop(preference.color, prop, text='', emboss=emboss)

    sub = row.row(align=True)
    sub.scale_x = 0.25
    sub.prop(preference.color, prop, text='', icon=icon, emboss=emboss)
    row.prop(preference.color, prop, text=F'{label}', emboss=emboss)

    sub = row.row(align=True)
    sub.scale_x = 0.75
    sub.prop(preference.color, prop, text=' ', icon='BLANK1', emboss=emboss)


def label_row(path, prop, row, label=''):
    row.label(text=label if label else names[prop])
    row.prop(path, prop, text='')


def draw(preference, context, layout):

    # --- Collection --- #
    box = layout.box()
    header_row(box.row(align=True), 'col_expand', label='Collection Display')
    box.separator()
    if preference.color.col_expand:
        label_row(preference.color, 'colection_color', box.row(), label='Collection Color')


    # --- HUD --- #
    box = layout.box()
    header_row(box.row(align=True), 'hud_expand', label='HUD Display')
    box.separator()
    if preference.color.hud_expand:

        # Logo
        main_split = box.split()
        split = main_split.box()
        sub_box = split.box()
        sub_box.label(text="Logo")
        sub_box = sub_box.box()
        label_row(preference.color, 'Hops_display_logo', sub_box.row(), label='Show Logo')
        label_row(preference.color, 'Hops_logo_color', sub_box.row(), label='Color')
        label_row(preference.color, 'Hops_logo_color_boolshape', sub_box.row(), label='Boolshape')
        label_row(preference.color, 'Hops_logo_size', sub_box.row(), label='Size')
        label_row(preference.color, 'Hops_logo_x_position', sub_box.row(), label='Logo X')
        label_row(preference.color, 'Hops_logo_y_position', sub_box.row(), label='Logo Y')

        # Gizmo
        sub_box = split.box()
        sub_box.label(text="Gizmo")
        sub_box = sub_box.box()
        label_row(preference.operator.mirror, 'scale', sub_box.row(), label='Mirror Scale')
        label_row(preference.operator.mirror, 'width', sub_box.row(), label='Mirror Width')

        # Logo
        sub_box = split.box()
        sub_box.label(text="Active tool")
        sub_box = sub_box.box()
        label_row(preference.color, 'wire', sub_box.row())
        label_row(preference.color, 'show_shape_wire', sub_box.row())

        # --- UI System --- #
        split = main_split.split()
        sub_box = split.box()
        sub_box.label(text="UI System")
        sub_box = sub_box.box()
        label_row(preference.color, 'Hops_UI_cell_background_color', sub_box.row(), label='Cell BG')
        label_row(preference.color, 'tips_background', sub_box.row(), label='Tips Background')
        label_row(preference.color, 'Hops_UI_text_color', sub_box.row(), label='Main Text')
        label_row(preference.color, 'Hops_UI_secondary_text_color', sub_box.row(), label='Secoundary Text')
        label_row(preference.color, 'Hops_UI_mods_highlight_color', sub_box.row(), label='Text Highlight')
        label_row(preference.color, 'Hops_UI_background_color', sub_box.row(), label='Background')
        label_row(preference.color, 'Hops_UI_highlight_color', sub_box.row(), label='Highlight')
        label_row(preference.color, 'Hops_UI_dropshadow_color', sub_box.row(), label='Drop Shadow')
        label_row(preference.color, 'Hops_UI_border_color', sub_box.row(), label='Border')
        label_row(preference.color, 'Hops_UI_mouse_over_color', sub_box.row(), label='Hover')
        label_row(preference.color, 'Hops_UI_highlight_drag_color', sub_box.row(), label='Drag')
        label_row(preference.color, 'Hops_UI_uv_color', sub_box.row(), label='UV')
        label_row(preference.color, 'Hops_wire_mesh', sub_box.row(), label='Mesh Wire')
        label_row(preference.color, 'poly_debug_alpha', sub_box.row(), label='Poly Debug Alpha')

        # --- UI System --- #
        main_split = box.split()
        sub_box = main_split.box()
        sub_box.label(text="Operations")
        sub_box = sub_box.box()
        label_row(preference.color, 'grid_system_color', sub_box.row(), label='Grids')

    # --- DOTS --- #
    box = layout.box()
    header_row(box.row(align=True), 'expand', label='Dots Display')
    box.separator()
    if preference.color.expand:

        # Booleandots
        split = box.split()
        sub_box = split.box()
        sub_box.label(text="Booleandots")
        sub_box = sub_box.box()
        label_row(preference.color, 'dot2', sub_box.row(), label='Union')
        label_row(preference.color, 'dot3', sub_box.row(), label='Difference')
        label_row(preference.color, 'dot4', sub_box.row(), label='Slash')
        label_row(preference.color, 'dot5', sub_box.row(), label='Knife')
        label_row(preference.color, 'dot6', sub_box.row(), label='Inset')
        label_row(preference.color, 'dot7', sub_box.row(), label='Intersect')

        # Solidify
        sub_box = split.box()
        sub_box.label(text="Solidify")
        sub_box = sub_box.box()
        label_row(preference.color, 'solidify_x', sub_box.row(), label='Solidify X')
        label_row(preference.color, 'solidify_y', sub_box.row(), label='Solidify Y')
        label_row(preference.color, 'solidify_z', sub_box.row(), label='Solidify Z')
        label_row(preference.color, 'solidify_c', sub_box.row(), label='Solidify C')

        # Displace
        split = box.split()
        sub_box = split.box()
        sub_box.label(text="Displace")
        sub_box = sub_box.box()
        label_row(preference.color, 'displace_x', sub_box.row(), label='Displace X')
        label_row(preference.color, 'displace_y', sub_box.row(), label='Displace Y')
        label_row(preference.color, 'displace_z', sub_box.row(), label='Displace Z')

        # Screw
        sub_box = split.box()
        sub_box.label(text="Screw")
        sub_box = sub_box.box()
        label_row(preference.color, 'screw_x', sub_box.row(), label='Screw X')
        label_row(preference.color, 'screw_y', sub_box.row(), label='Screw Y')
        label_row(preference.color, 'screw_z', sub_box.row(), label='Screw Z')

        # Array
        split = box.split()
        sub_box = split.box()
        sub_box.label(text="Array")
        sub_box = sub_box.box()
        label_row(preference.color, 'array_x', sub_box.row(), label='Array X')
        label_row(preference.color, 'array_y', sub_box.row(), label='Array Y')
        label_row(preference.color, 'array_z', sub_box.row(), label='Array Z')

        # Simple Deform
        sub_box = split.box()
        sub_box.label(text="Simple Deform")
        sub_box = sub_box.box()
        label_row(preference.color, 'simple_deform_x', sub_box.row(), label='Deform X')
        label_row(preference.color, 'simple_deform_y', sub_box.row(), label='Deform Y')
        label_row(preference.color, 'simple_deform_z', sub_box.row(), label='Deform Z')

        # Basic Dots
        split = box.split()
        sub_box = split.box()
        sub_box.label(text="Basic Dots")
        sub_box = sub_box.box()
        label_row(preference.color, 'dot', sub_box.row())
        label_row(preference.color, 'dot_highlight', sub_box.row())

        # Wireframe
        sub_box = split.box()
        sub_box.label(text="Wireframe")
        sub_box = sub_box.box()
        label_row(preference.color, 'wireframe_c', sub_box.row(), label='Wireframe')

        # Bevel
        sub_box = split.box()
        sub_box.label(text="Bevel")
        sub_box = sub_box.box()
        label_row(preference.color, 'bevel_c', sub_box.row(), label='Bevel')

        # Dots Text
        split = box.split()
        sub_box = split.box()
        sub_box.label(text="Dots Text")
        sub_box = sub_box.box()        
        label_row(preference.color, 'Bool_Dots_Text', sub_box.row(), label='Display Dots Text')
        layout.separator()