Paint Palletes: Cleanup, refactor some code

Bumped version to 0.9.2
Pep8 cleanup
Remove star imports
Imports as tuples
Consistent props definitions
Refactor the VIEW3D_OT_reset_weight_palette operator
and VIEW3D_PT_weight_palette panel removing if else walls
Fix crash with trying to save a preset into a non existing path
Small UI fixes (introduce the active icon in the palette menu)
Update some tooltips
Update links
This commit is contained in:
Vuk Gardašević 2017-04-15 03:25:47 +02:00
parent b7b4e2fbe7
commit 5f883054ce
1 changed files with 259 additions and 267 deletions

View File

@ -1,34 +1,33 @@
# paint_palette.py (c) 2011 Dany Lebel (Axon_D)
# ##### BEGIN GPL LICENSE BLOCK #####
#
# ***** 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.
#
# 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.
# 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.
#
# 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 LICENCE BLOCK *****
# ##### END GPL LICENSE BLOCK #####
bl_info = {
"name": "Paint Palettes",
"author": "Dany Lebel (Axon D)",
"version": (0, 9, 1),
"version": (0, 9, 2),
"blender": (2, 63, 0),
"location": "Image Editor and 3D View > Any Paint mode > Color Palette or Weight Palette panel",
"description": "Palettes for color and weight paint modes",
"warning": "",
"wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
"wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
"Scripts/Paint/Palettes",
"category": "Paint",
}
@ -44,7 +43,21 @@ with the brush by using the button under the color.
"""
import bpy
from bpy.props import *
from bpy.types import (
Operator,
Menu,
Panel,
PropertyGroup,
)
from bpy.props import (
BoolProperty,
FloatProperty,
FloatVectorProperty,
IntProperty,
StringProperty,
PointerProperty,
CollectionProperty,
)
def update_panels():
@ -55,6 +68,7 @@ def update_panels():
brush.color = current_color
pp.index = pp.current_color_index
def sample():
pp = bpy.context.scene.palette_props
current_color = pp.colors[pp.current_color_index]
@ -62,15 +76,16 @@ def sample():
current_color.color = brush.color
return None
def current_brush():
context = bpy.context
if context.area.type == 'VIEW_3D' and context.vertex_paint_object:
brush = context.tool_settings.vertex_paint.brush
elif context.area.type == 'VIEW_3D' and context.image_paint_object:
brush = context.tool_settings.image_paint.brush
elif context.area.type == 'IMAGE_EDITOR' and context.space_data.mode == 'PAINT':
elif context.area.type == 'IMAGE_EDITOR' and context.space_data.mode == 'PAINT':
brush = context.tool_settings.image_paint.brush
else :
else:
brush = None
return brush
@ -82,7 +97,7 @@ def update_weight_value():
return None
class PALETTE_MT_menu(bpy.types.Menu):
class PALETTE_MT_menu(Menu):
bl_label = "Presets"
preset_subdir = ""
preset_operator = "palette.load_gimp_palette"
@ -98,7 +113,7 @@ class PALETTE_MT_menu(bpy.types.Menu):
layout.label("* Missing Paths *")
# collect paths
else :
else:
files = []
for directory in searchpaths:
files.extend([(f, os.path.join(directory, f)) for f in os.listdir(directory)])
@ -153,8 +168,6 @@ class LoadGimpPalette(bpy.types.Operator):
preset_class = getattr(bpy.types, self.menu_idname)
preset_class.bl_label = bpy.path.display_name(basename(filepath))
ts = bpy.context.tool_settings
palette_props.columns = 0
if filepath[-4:] == ".gpl":
gpl = open(filepath, "r")
@ -170,9 +183,9 @@ class LoadGimpPalette(bpy.types.Operator):
palette_props.columns = int(line[8:])
elif line[0] == "#":
palette_props.notes += line
else :
else:
has_color = True
#index_0 = i
# index_0 = i
break
i = -1
if has_color:
@ -181,7 +194,7 @@ class LoadGimpPalette(bpy.types.Operator):
palette_props.colors[i]
except IndexError:
palette_props.colors.add()
color = [float(rgb)/255 for rgb in [ln[0:3], ln[4:7], ln[8:11]]]
color = [float(rgb) / 255 for rgb in [ln[0: 3], ln[4: 7], ln[8: 11]]]
palette_props.colors[i].color = color
@ -195,7 +208,7 @@ class LoadGimpPalette(bpy.types.Operator):
update_panels()
gpl.close()
pass
else :
else:
self.report({'INFO'}, "Not a supported palette format")
return {'FINISHED'}
@ -206,14 +219,17 @@ class WriteGimpPalette():
subclasses must define
- preset_values
- preset_subdir """
bl_options = {'REGISTER'} # only because invoke_props_popup requires.
bl_options = {'REGISTER'} # only because invoke_props_popup requires
name = bpy.props.StringProperty(name="Name",
description="Name of the preset, used to make the path name",
maxlen=64, default="")
remove_active = bpy.props.BoolProperty(default=False, options={'HIDDEN'})
name = StringProperty(
name="Name",
description="Name of the preset, used to make the path name",
maxlen=64, default=""
)
remove_active = BoolProperty(
default=False,
options={'HIDDEN'}
)
@staticmethod
def as_filename(name): # could reuse for other presets
@ -242,7 +258,13 @@ class WriteGimpPalette():
self.report({'WARNING'}, "Failed to create presets path")
return {'CANCELLED'}
if not os.path.exists(target_path):
self.report({'WARNING'},
"Failure to open the saved Palletes Folder. Check if the path exists")
return {'CANCELLED'}
filepath = os.path.join(target_path, filename) + ".gpl"
file_preset = open(filepath, 'wb')
gpl = "GIMP Palette\n"
gpl += "Name: %s\n" % filename
@ -250,7 +272,8 @@ class WriteGimpPalette():
gpl += pp.notes
if pp.colors.items():
for i, color in enumerate(pp.colors):
gpl += "%3d%4d%4d %s" % (color.color.r * 255, color.color.g * 255, color.color.b * 255, color.name + '\n')
gpl += "%3d%4d%4d %s" % (color.color.r * 255, color.color.g * 255,
color.color.b * 255, color.name + '\n')
file_preset.write(bytes(gpl, 'UTF-8'))
file_preset.close()
@ -298,22 +321,21 @@ class WriteGimpPalette():
return self.execute(context)
class AddPresetPalette(WriteGimpPalette, bpy.types.Operator):
"""Add a Palette Preset"""
class AddPresetPalette(WriteGimpPalette, Operator):
bl_idname = "palette.preset_add"
bl_label = "Add Palette Preset"
preset_menu = "PALETTE_MT_menu"
bl_description = "Add a Palette Preset"
preset_defines = []
preset_values = []
preset_subdir = "palette"
class PALETTE_OT_add_color(bpy.types.Operator):
class PALETTE_OT_add_color(Operator):
bl_idname = "palette_props.add_color"
bl_label = ""
bl_description = "Add a Color to the Palette"
bl_idname = "palette_props.add_color"
def execute(self, context):
pp = bpy.context.scene.palette_props
@ -324,81 +346,82 @@ class PALETTE_OT_add_color(bpy.types.Operator):
last = pp.colors.__len__() - 1
pp.colors.move(last, new_index)
pp.current_color_index = new_index
sample()
update_panels()
return {'FINISHED'}
class PALETTE_OT_remove_color(bpy.types.Operator):
class PALETTE_OT_remove_color(Operator):
bl_idname = "palette_props.remove_color"
bl_label = ""
bl_description = "Remove Selected Color"
bl_idname = "palette_props.remove_color"
@classmethod
def poll(cls, context):
pp = bpy.context.scene.palette_props
return bool(pp.colors.items())
def execute(self, context):
pp = bpy.context.scene.palette_props
pp = context.scene.palette_props
i = pp.current_color_index
pp.colors.remove(i)
if pp.current_color_index >= pp.colors.__len__():
pp.index = pp.current_color_index = pp.colors.__len__() - 1
return {'FINISHED'}
class PALETTE_OT_sample_tool_color(bpy.types.Operator):
class PALETTE_OT_sample_tool_color(Operator):
bl_idname = "palette_props.sample_tool_color"
bl_label = ""
bl_description = "Sample Tool Color"
bl_idname = "palette_props.sample_tool_color"
def execute(self, context):
pp = bpy.context.scene.palette_props
pp = context.scene.palette_props
brush = current_brush()
pp.colors[pp.current_color_index].color = brush.color
return {'FINISHED'}
class IMAGE_OT_select_color(bpy.types.Operator):
class IMAGE_OT_select_color(Operator):
bl_idname = "paint.select_color"
bl_label = ""
bl_description = "Select this color"
bl_idname = "paint.select_color"
bl_options = {'UNDO'}
color_index = IntProperty()
def invoke(self, context, event):
palette_props = bpy.context.scene.palette_props
palette_props = context.scene.palette_props
palette_props.current_color_index = self.color_index
update_panels()
return {'FINISHED'}
def color_palette_draw(self, context):
palette_props = bpy.context.scene.palette_props
layout = self.layout
bpy.types.PALETTE_MT_menu.preset_subdir = palette_props.presets_folder
row = layout.row(align=True)
row.menu("PALETTE_MT_menu", text=palette_props.palette_name.rstrip())
row.operator("palette.preset_add", text="", icon="ZOOMIN")
row.operator("palette.preset_add", text="", icon="ZOOMOUT").remove_active = True
col = layout.column(align=True)
row = col.row(align=True)
row.operator("palette_props.add_color", icon="ZOOMIN")
row.prop(palette_props, "index")
row.operator("palette_props.remove_color", icon="PANEL_CLOSE")
row = col.row(align=True)
row.prop(palette_props, "columns")
if palette_props.colors.items():
@ -411,22 +434,21 @@ def color_palette_draw(self, context):
if palette_props.columns:
columns = palette_props.columns
else :
else:
columns = 16
for i, color in enumerate(palette_props.colors):
if not i % columns:
row1 = laycol.row(align=True)
row1.scale_y = 0.8
row2 = laycol.row(align=True)
row2.scale_y = 0.5
row2.scale_y = 0.8
if i == palette_props.current_color_index:
row1.prop(palette_props.colors[i], "color", event=True, toggle=True)
row2.operator("paint.select_color", emboss=False).color_index = i
else :
row1.prop(palette_props.colors[i], "color", event=True, toggle=True)
row2.operator("paint.select_color").color_index = i
active = True if i == palette_props.current_color_index else False
icons = "LAYER_ACTIVE" if active else "LAYER_USED"
row1.prop(palette_props.colors[i], "color", event=True, toggle=True)
row2.operator("paint.select_color", text=" ",
emboss=active, icon=icons).color_index = i
layout = self.layout
row = layout.row()
@ -464,7 +486,7 @@ class PaintPanel():
return None
class IMAGE_PT_color_palette(BrushButtonsPanel, bpy.types.Panel):
class IMAGE_PT_color_palette(BrushButtonsPanel, Panel):
bl_label = "Color Palette"
bl_options = {'DEFAULT_CLOSED'}
@ -472,7 +494,7 @@ class IMAGE_PT_color_palette(BrushButtonsPanel, bpy.types.Panel):
color_palette_draw(self, context)
class VIEW3D_PT_color_palette(PaintPanel, bpy.types.Panel):
class VIEW3D_PT_color_palette(PaintPanel, Panel):
bl_label = "Color Palette"
bl_options = {'DEFAULT_CLOSED'}
@ -484,10 +506,10 @@ class VIEW3D_PT_color_palette(PaintPanel, bpy.types.Panel):
color_palette_draw(self, context)
class VIEW3D_OT_select_weight(bpy.types.Operator):
bl_label = ""
bl_description = "Select this weight"
class VIEW3D_OT_select_weight(Operator):
bl_idname = "paint.select_weight"
bl_label = ""
bl_description = "Select this weight value slot"
bl_options = {'UNDO'}
weight_index = IntProperty()
@ -519,8 +541,7 @@ class VIEW3D_OT_select_weight(bpy.types.Operator):
return weight
def invoke(self, context, event):
palette_props = bpy.context.scene.palette_props
palette_props = context.scene.palette_props
palette_props.current_weight_index = self.weight_index
if self.weight_index == 0:
@ -546,64 +567,42 @@ class VIEW3D_OT_select_weight(bpy.types.Operator):
elif self.weight_index == 10:
weight = palette_props.weight_10
palette_props.weight = weight
#bpy.context.tool_settings.vertex_group_weight = weight
return {'FINISHED'}
class VIEW3D_OT_reset_weight_palette(bpy.types.Operator):
bl_label = ""
class VIEW3D_OT_reset_weight_palette(Operator):
bl_idname = "paint.reset_weight_palette"
bl_label = ""
bl_description = "Reset the active Weight slot to it's default value"
def execute(self, context):
palette_props = context.scene.palette_props
try:
palette_props = context.scene.palette_props
dict_defs = {0: 0.0, 1: 0.1, 2: 0.25,
3: 0.333, 4: 0.4, 5: 0.5,
6: 0.6, 7: 0.6666, 8: 0.75,
9: 0.9, 10: 1.0
}
current_idx = palette_props.current_weight_index
palette_props.weight = dict_defs[current_idx]
if palette_props.current_weight_index == 0:
palette_props.weight = 0.0
palette_props.weight_0 = 0.0
var_name = "weight_" + str(current_idx)
var_to_change = getattr(palette_props, var_name, None)
if var_to_change:
var_to_change = dict_defs[current_idx]
palette_props.weight_1 = 0.1
if palette_props.current_weight_index == 1:
palette_props.weight = 0.1
return {'FINISHED'}
if palette_props.current_weight_index == 2:
palette_props.weight = 0.25
palette_props.weight_2 = 0.25
except Exception as e:
self.report({'WARNING'},
"Reset Weight pallete could not be completed (See Console for more info)")
print("\n[Paint Palette]\nOperator: paint.reset_weight_palette\nError: %s\n" % e)
if palette_props.current_weight_index == 3:
palette_props.weight = 0.3333
palette_props.weight_3 = 0.3333
return {'CANCELLED'}
if palette_props.current_weight_index == 4:
palette_props.weight = 0.4
palette_props.weight_4 = 0.4
if palette_props.current_weight_index == 5:
palette_props.weight = 0.5
palette_props.weight_5 = 0.5
if palette_props.current_weight_index == 6:
palette_props.weight = 0.6
palette_props.weight_6 = 0.6
if palette_props.current_weight_index == 7:
palette_props.weight = 0.6666
palette_props.weight_7 = 0.6666
if palette_props.current_weight_index == 8:
palette_props.weight = 0.75
palette_props.weight_8 = 0.75
if palette_props.current_weight_index == 9:
palette_props.weight = 0.9
palette_props.weight_9 = 0.9
if palette_props.current_weight_index == 10:
palette_props.weight = 1.0
palette_props.weight_10 = 1.0
return {'FINISHED'}
class VIEW3D_PT_weight_palette(PaintPanel, bpy.types.Panel):
class VIEW3D_PT_weight_palette(PaintPanel, Panel):
bl_label = "Weight Palette"
bl_options = {'DEFAULT_CLOSED'}
@ -612,115 +611,59 @@ class VIEW3D_PT_weight_palette(PaintPanel, bpy.types.Panel):
return context.weight_paint_object
def draw(self, context):
palette_props = bpy.context.scene.palette_props
#vertex_group_weight = bpy.context.tool_settings.unified_paint_settings.weight
palette_props = context.scene.palette_props
layout = self.layout
row = layout.row()
row.prop(palette_props, "weight", slider=True)
box = layout.box()
row = box.row()
if palette_props.current_weight_index == 0:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_0,
emboss=False).weight_index = 0
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_0,
emboss=True).weight_index = 0
selected_weight = palette_props.current_weight_index
for props in range(0, 11):
embossed = False if props == selected_weight else True
prop_name = "weight_" + str(props)
prop_value = getattr(palette_props, prop_name, "")
if props in (0, 10):
row = box.row(align=True)
elif (props + 2) % 3 == 0:
col = box.column(align=True)
row = col.row(align=True)
else:
if props == 1:
row = box.row(align=True)
row = row.row(align=True)
row = box.row(align=True)
if palette_props.current_weight_index == 1:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_1,
emboss=False).weight_index = 1
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_1,
emboss=True).weight_index = 1
if palette_props.current_weight_index == 2:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_2,
emboss=False).weight_index = 2
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_2,
emboss=True).weight_index = 2
if palette_props.current_weight_index == 3:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_3,
emboss=False).weight_index = 3
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_3,
emboss=True).weight_index = 3
row = box.row(align=True)
if palette_props.current_weight_index == 4:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_4,
emboss=False).weight_index = 4
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_4,
emboss=True).weight_index = 4
if palette_props.current_weight_index == 5:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_5,
emboss=False).weight_index = 5
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_5,
emboss=True).weight_index = 5
if palette_props.current_weight_index == 6:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_6,
emboss=False).weight_index = 6
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_6,
emboss=True).weight_index = 6
row = box.row(align=True)
if palette_props.current_weight_index == 7:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_7,
emboss=False).weight_index = 7
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_7,
emboss=True).weight_index = 7
if palette_props.current_weight_index == 8:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_8,
emboss=False).weight_index = 8
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_8,
emboss=True).weight_index = 8
if palette_props.current_weight_index == 9:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_9,
emboss=False).weight_index = 9
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_9,
emboss=True).weight_index = 9
row = box.row(align=True)
if palette_props.current_weight_index == 10:
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_10,
emboss=False).weight_index = 10
else :
row.operator("paint.select_weight", text="%.2f" % palette_props.weight_10,
emboss=True).weight_index = 10
row.operator("paint.select_weight", text="%.2f" % prop_value,
emboss=embossed).weight_index = props
row = layout.row()
row.operator("paint.reset_weight_palette", text="Reset")
class Colors(bpy.types.PropertyGroup):
class Colors(PropertyGroup):
"""Class for colors CollectionProperty"""
color = bpy.props.FloatVectorProperty(
name="", description="", default=(0.8, 0.8, 0.8), min=0, max=1,
step=1, precision=3, subtype='COLOR_GAMMA', size=3)
color = FloatVectorProperty(
name="",
description="",
default=(0.8, 0.8, 0.8),
min=0, max=1,
step=1, precision=3,
subtype='COLOR_GAMMA',
size=3
)
class Weights(bpy.types.PropertyGroup):
class Weights(PropertyGroup):
"""Class for Weights Collection Property"""
weight = bpy.props.FloatProperty(
default=0.0, min=0.0, max=1.0, precision=3)
weight = FloatProperty(
default=0.0,
min=0.0,
max=1.0,
precision=3
)
class PaletteProps(bpy.types.PropertyGroup):
class PaletteProps(PropertyGroup):
def update_color_name(self, context):
pp = bpy.context.scene.palette_props
@ -732,6 +675,7 @@ class PaletteProps(bpy.types.PropertyGroup):
if pp.colors.items() and pp.current_color_index != pp.index:
if pp.index >= pp.colors.__len__():
pp.index = pp.colors.__len__() - 1
pp.colors.move(pp.current_color_index, pp.index)
pp.current_color_index = pp.index
return None
@ -762,73 +706,128 @@ class PaletteProps(bpy.types.PropertyGroup):
elif pp.current_weight_index == 10:
pp.weight_10 = weight
bpy.context.tool_settings.unified_paint_settings.weight = weight
#bpy.context.tool_settings.vertex_group_weight = weight
return None
palette_name = StringProperty(
name="Palette Name", default="Preset", subtype='FILE_NAME')
name="Palette Name",
default="Preset",
subtype='FILE_NAME'
)
color_name = StringProperty(
name="", description="Color Name", default="Untitled", update=update_color_name)
name="",
description="Color Name",
default="Untitled",
update=update_color_name
)
columns = IntProperty(
name="Columns",
description="Number of Columns",
min=0, max=16, default=0)
name="Columns",
description="Number of Columns",
min=0, max=16,
default=0
)
index = IntProperty(
name="Index",
description="Move Selected Color",
min=0,
update=move_color)
name="Index",
description="Move Selected Color",
min=0,
update=move_color
)
notes = StringProperty(
name="Palette Notes", default="#\n")
name="Palette Notes",
default="#\n"
)
current_color_index = IntProperty(
name="Current Color Index", description="", default=0, min=0)
name="Current Color Index",
description="",
default=0,
min=0
)
current_weight_index = IntProperty(
name="Current Color Index", description="", default=10, min=-1)
name="Current Color Index",
description="",
default=10,
min=-1
)
presets_folder = StringProperty(name="",
description="Palettes Folder",
subtype="DIR_PATH")
colors = bpy.props.CollectionProperty(type=Colors)
weight = bpy.props.FloatProperty(name="Weight",
default=0.0, min=0.0, max=1.0, precision=3, update=update_weight)
weight_0 = bpy.props.FloatProperty(
default=0.0, min=0.0, max=1.0, precision=3)
weight_1 = bpy.props.FloatProperty(
default=0.1, min=0.0, max=1.0, precision=3)
weight_2 = bpy.props.FloatProperty(
default=0.25, min=0.0, max=1.0, precision=3)
weight_3 = bpy.props.FloatProperty(
default=0.333, min=0.0, max=1.0, precision=3)
weight_4 = bpy.props.FloatProperty(
default=0.4, min=0.0, max=1.0, precision=3)
weight_5 = bpy.props.FloatProperty(
default=0.5, min=0.0, max=1.0, precision=3)
weight_6 = bpy.props.FloatProperty(
default=0.6, min=0.0, max=1.0, precision=3)
weight_7 = bpy.props.FloatProperty(
default=0.6666, min=0.0, max=1.0, precision=3)
weight_8 = bpy.props.FloatProperty(
default=0.75, min=0.0, max=1.0, precision=3)
weight_9 = bpy.props.FloatProperty(
default=0.9, min=0.0, max=1.0, precision=3)
weight_10 = bpy.props.FloatProperty(
default=1.0, min=0.0, max=1.0, precision=3)
description="Palettes Folder",
subtype="DIR_PATH"
)
colors = CollectionProperty(
type=Colors
)
weight = FloatProperty(
name="Weight",
description="Modify the active Weight preset slot value",
default=0.0,
min=0.0, max=1.0,
precision=3,
update=update_weight
)
weight_0 = FloatProperty(
default=0.0,
min=0.0, max=1.0,
precision=3
)
weight_1 = FloatProperty(
default=0.1,
min=0.0, max=1.0,
precision=3
)
weight_2 = FloatProperty(
default=0.25,
min=0.0, max=1.0,
precision=3
)
weight_3 = FloatProperty(
default=0.333,
min=0.0, max=1.0,
precision=3
)
weight_4 = FloatProperty(
default=0.4,
min=0.0, max=1.0,
precision=3
)
weight_5 = FloatProperty(
default=0.5,
min=0.0, max=1.0,
precision=3
)
weight_6 = FloatProperty(
default=0.6,
min=0.0, max=1.0,
precision=3
)
weight_7 = FloatProperty(
default=0.6666,
min=0.0, max=1.0,
precision=3
)
weight_8 = FloatProperty(
default=0.75,
min=0.0, max=1.0,
precision=3
)
weight_9 = FloatProperty(
default=0.9,
min=0.0, max=1.0,
precision=3
)
weight_10 = FloatProperty(
default=1.0,
min=0.0, max=1.0,
precision=3
)
pass
def register():
bpy.utils.register_module(__name__)
bpy.types.Scene.palette_props = PointerProperty(
type=PaletteProps, name="Palette Props", description="")
type=PaletteProps,
name="Palette Props",
description=""
)
pass
@ -841,10 +840,3 @@ def unregister():
if __name__ == "__main__":
register()
# To Do List
# ToDo1 Overiting the current file
# ToDo3 Foreground Background