diff options
author | Ryan Inch <mythologylover75@gmail.com> | 2020-03-16 09:48:02 +0300 |
---|---|---|
committer | Ryan Inch <mythologylover75@gmail.com> | 2020-03-16 09:48:02 +0300 |
commit | b752de9e0da4e8ad694de25497275f66168a2df4 (patch) | |
tree | 8a8f5471e22cf2a1037f0fea1a74149dbff461cc /object_collection_manager/preferences.py | |
parent | a35d66c1337ae5e3f86f11a760ad24770386f9a9 (diff) |
Collection Manager: Add QCD System. Task: T69577
Adds a Quick Content Display (QCD) system to the Collection Manager.
This consists of a 3D View Header widget and a floating panel
similar to the layers system in blender 2.7x, along with
hotkeys to view/move objects to QCD slots, and additions to the
main Collection Manager popup to allow you to manage which collections
correspond to which slots.
Diffstat (limited to 'object_collection_manager/preferences.py')
-rw-r--r-- | object_collection_manager/preferences.py | 512 |
1 files changed, 512 insertions, 0 deletions
diff --git a/object_collection_manager/preferences.py b/object_collection_manager/preferences.py new file mode 100644 index 00000000..154ee3ee --- /dev/null +++ b/object_collection_manager/preferences.py @@ -0,0 +1,512 @@ +# ##### 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 ##### + +# Copyright 2011, Ryan Inch + +import bpy +from bpy.types import AddonPreferences +from bpy.props import ( + BoolProperty, + FloatProperty, + FloatVectorProperty, + ) + +def get_tool_text(self): + if self.tool_text_override: + return self["tool_text_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tool.text + self["tool_text_color"] = color.r, color.g, color.b + return self["tool_text_color"] + +def set_tool_text(self, values): + self["tool_text_color"] = values[0], values[1], values[2] + + +def get_tool_text_sel(self): + if self.tool_text_sel_override: + return self["tool_text_sel_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tool.text_sel + self["tool_text_sel_color"] = color.r, color.g, color.b + return self["tool_text_sel_color"] + +def set_tool_text_sel(self, values): + self["tool_text_sel_color"] = values[0], values[1], values[2] + + +def get_tool_inner(self): + if self.tool_inner_override: + return self["tool_inner_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tool.inner + self["tool_inner_color"] = color[0], color[1], color[2], color[3] + return self["tool_inner_color"] + +def set_tool_inner(self, values): + self["tool_inner_color"] = values[0], values[1], values[2], values[3] + + +def get_tool_inner_sel(self): + if self.tool_inner_sel_override: + return self["tool_inner_sel_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tool.inner_sel + self["tool_inner_sel_color"] = color[0], color[1], color[2], color[3] + return self["tool_inner_sel_color"] + +def set_tool_inner_sel(self, values): + self["tool_inner_sel_color"] = values[0], values[1], values[2], values[3] + + +def get_tool_outline(self): + if self.tool_outline_override: + return self["tool_outline_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tool.outline + self["tool_outline_color"] = color.r, color.g, color.b + return self["tool_outline_color"] + +def set_tool_outline(self, values): + self["tool_outline_color"] = values[0], values[1], values[2] + + +def get_menu_back_text(self): + if self.menu_back_text_override: + return self["menu_back_text_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_menu_back.text + self["menu_back_text_color"] = color.r, color.g, color.b + return self["menu_back_text_color"] + +def set_menu_back_text(self, values): + self["menu_back_text_color"] = values[0], values[1], values[2] + + +def get_menu_back_inner(self): + if self.menu_back_inner_override: + return self["menu_back_inner_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_menu_back.inner + self["menu_back_inner_color"] = color[0], color[1], color[2], color[3] + return self["menu_back_inner_color"] + +def set_menu_back_inner(self, values): + self["menu_back_inner_color"] = values[0], values[1], values[2], values[3] + + +def get_menu_back_outline(self): + if self.menu_back_outline_override: + return self["menu_back_outline_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_menu_back.outline + self["menu_back_outline_color"] = color.r, color.g, color.b + return self["menu_back_outline_color"] + +def set_menu_back_outline(self, values): + self["menu_back_outline_color"] = values[0], values[1], values[2] + + +def get_tooltip_text(self): + if self.tooltip_text_override: + return self["tooltip_text_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tooltip.text + self["tooltip_text_color"] = color.r, color.g, color.b + return self["tooltip_text_color"] + +def set_tooltip_text(self, values): + self["tooltip_text_color"] = values[0], values[1], values[2] + + +def get_tooltip_inner(self): + if self.tooltip_inner_override: + return self["tooltip_inner_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tooltip.inner + self["tooltip_inner_color"] = color[0], color[1], color[2], color[3] + return self["tooltip_inner_color"] + +def set_tooltip_inner(self, values): + self["tooltip_inner_color"] = values[0], values[1], values[2], values[3] + + +def get_tooltip_outline(self): + if self.tooltip_outline_override: + return self["tooltip_outline_color"] + else: + color = bpy.context.preferences.themes[0].user_interface.wcol_tooltip.outline + self["tooltip_outline_color"] = color.r, color.g, color.b + return self["tooltip_outline_color"] + +def set_tooltip_outline(self, values): + self["tooltip_outline_color"] = values[0], values[1], values[2] + + +class CMPreferences(AddonPreferences): + bl_idname = __package__ + + # OVERRIDE BOOLS + tool_text_override: BoolProperty( + name="Text", + description="Override Theme Text Color", + default=False, + ) + + tool_text_sel_override: BoolProperty( + name="Selection", + description="Override Theme Text Selection Color", + default=False, + ) + + tool_inner_override: BoolProperty( + name="Inner", + description="Override Theme Inner Color", + default=False, + ) + + tool_inner_sel_override: BoolProperty( + name="Selection", + description="Override Theme Inner Selection Color", + default=False, + ) + + tool_outline_override: BoolProperty( + name="Outline", + description="Override Theme Outline Color", + default=False, + ) + + menu_back_text_override: BoolProperty( + name="Text", + description="Override Theme Text Color", + default=False, + ) + + menu_back_inner_override: BoolProperty( + name="Inner", + description="Override Theme Inner Color", + default=False, + ) + + menu_back_outline_override: BoolProperty( + name="Outline", + description="Override Theme Outline Color", + default=False, + ) + + tooltip_text_override: BoolProperty( + name="Text", + description="Override Theme Text Color", + default=False, + ) + + tooltip_inner_override: BoolProperty( + name="Inner", + description="Override Theme Inner Color", + default=False, + ) + + tooltip_outline_override: BoolProperty( + name="Outline", + description="Override Theme Outline Color", + default=False, + ) + + + # OVERRIDE COLORS + qcd_ogl_widget_tool_text: FloatVectorProperty( + name="", + description="QCD Move Widget Tool Text Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tool.text, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_tool_text, + set=set_tool_text, + ) + + qcd_ogl_widget_tool_text_sel: FloatVectorProperty( + name="", + description="QCD Move Widget Tool Text Selection Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tool.text_sel, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_tool_text_sel, + set=set_tool_text_sel, + ) + + qcd_ogl_widget_tool_inner: FloatVectorProperty( + name="", + description="QCD Move Widget Tool Inner Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tool.inner, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + size=4, + get=get_tool_inner, + set=set_tool_inner, + ) + + qcd_ogl_widget_tool_inner_sel: FloatVectorProperty( + name="", + description="QCD Move Widget Tool Inner Selection Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tool.inner_sel, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + size=4, + get=get_tool_inner_sel, + set=set_tool_inner_sel, + ) + + qcd_ogl_widget_tool_outline: FloatVectorProperty( + name="", + description="QCD Move Widget Tool Outline Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tool.outline, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_tool_outline, + set=set_tool_outline, + ) + + qcd_ogl_widget_menu_back_text: FloatVectorProperty( + name="", + description="QCD Move Widget Menu Back Text Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.text, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_menu_back_text, + set=set_menu_back_text, + ) + + qcd_ogl_widget_menu_back_inner: FloatVectorProperty( + name="", + description="QCD Move Widget Menu Back Inner Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.inner, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + size=4, + get=get_menu_back_inner, + set=set_menu_back_inner, + ) + + qcd_ogl_widget_menu_back_outline: FloatVectorProperty( + name="", + description="QCD Move Widget Menu Back Outline Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.outline, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_menu_back_outline, + set=set_menu_back_outline, + ) + + qcd_ogl_widget_tooltip_text: FloatVectorProperty( + name="", + description="QCD Move Widget Tooltip Text Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.text, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_tooltip_text, + set=set_tooltip_text, + ) + + qcd_ogl_widget_tooltip_inner: FloatVectorProperty( + name="", + description="QCD Move Widget Tooltip Inner Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.inner, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + size=4, + get=get_tooltip_inner, + set=set_tooltip_inner, + ) + + qcd_ogl_widget_tooltip_outline: FloatVectorProperty( + name="", + description="QCD Move Widget Tooltip Outline Color", + default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.outline, + subtype='COLOR_GAMMA', + min=0.0, + max=1.0, + get=get_tooltip_outline, + set=set_tooltip_outline, + ) + + # NON ACTIVE ICON ALPHA + qcd_ogl_selected_icon_alpha: FloatProperty( + name="Selected Icon Alpha", + description="Set the 'Selected' icon's alpha value", + default=0.9, + min=0.0, + max=1.0, + ) + + qcd_ogl_objects_icon_alpha: FloatProperty( + name="Objects Icon Alpha", + description="Set the 'Objects' icon's alpha value", + default=0.5, + min=0.0, + max=1.0, + ) + + def draw(self, context): + layout = self.layout + box = layout.box() + + box.row().label(text="QCD Move Widget") + + tool_box = box.box() + tool_box.row().label(text="Tool Theme Overrides:") + tool_box.use_property_split = True + + flow = tool_box.grid_flow(row_major=False, columns=2, even_columns=True, even_rows=False, align=False) + + col = flow.column() + col.alignment = 'LEFT' + + row = col.row(align=True) + row.alignment = 'RIGHT' + row.prop(self, "tool_text_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tool_text_override + row.prop(self, "qcd_ogl_widget_tool_text") + + row = col.row(align=True) + row.alignment = 'RIGHT' + row.prop(self, "tool_text_sel_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tool_text_sel_override + row.prop(self, "qcd_ogl_widget_tool_text_sel") + + col = flow.column() + col.alignment = 'RIGHT' + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "tool_inner_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tool_inner_override + row.prop(self, "qcd_ogl_widget_tool_inner") + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "tool_inner_sel_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tool_inner_sel_override + row.prop(self, "qcd_ogl_widget_tool_inner_sel") + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "tool_outline_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tool_outline_override + row.prop(self, "qcd_ogl_widget_tool_outline") + + tool_box.use_property_split = False + tool_box.row().label(text="Icon Alpha:") + icon_fade_row = tool_box.row() + icon_fade_row.alignment = 'EXPAND' + icon_fade_row.prop(self, "qcd_ogl_selected_icon_alpha", text="Selected") + icon_fade_row.prop(self, "qcd_ogl_objects_icon_alpha", text="Objects") + + + menu_back_box = box.box() + menu_back_box.use_property_split = True + menu_back_box.row().label(text="Menu Back Theme Overrides:") + + flow = menu_back_box.grid_flow(row_major=False, columns=2, even_columns=True, even_rows=False, align=False) + + col = flow.column() + col.alignment = 'LEFT' + + row = col.row(align=True) + row.alignment = 'RIGHT' + row.prop(self, "menu_back_text_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.menu_back_text_override + row.prop(self, "qcd_ogl_widget_menu_back_text") + + col = flow.column() + col.alignment = 'RIGHT' + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "menu_back_inner_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.menu_back_inner_override + row.prop(self, "qcd_ogl_widget_menu_back_inner") + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "menu_back_outline_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.menu_back_outline_override + row.prop(self, "qcd_ogl_widget_menu_back_outline") + + + tooltip_box = box.box() + tooltip_box.use_property_split = True + tooltip_box.row().label(text="Tooltip Theme Overrides:") + + flow = tooltip_box.grid_flow(row_major=False, columns=2, even_columns=True, even_rows=False, align=False) + + col = flow.column() + col.alignment = 'LEFT' + + row = col.row(align=True) + row.alignment = 'RIGHT' + row.prop(self, "tooltip_text_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tooltip_text_override + row.prop(self, "qcd_ogl_widget_tooltip_text") + + col = flow.column() + col.alignment = 'RIGHT' + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "tooltip_inner_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tooltip_inner_override + row.prop(self, "qcd_ogl_widget_tooltip_inner") + + row = col.row() + row.alignment = 'RIGHT' + row.prop(self, "tooltip_outline_override") + row = row.row(align=True) + row.alignment = 'RIGHT' + row.enabled = self.tooltip_outline_override + row.prop(self, "qcd_ogl_widget_tooltip_outline") |