1 # SPDX-License-Identifier: GPL-2.0-or-later
3 # Copyright 2011, Ryan Inch
6 from bpy
.types
import AddonPreferences
7 from bpy
.props
import (
14 from . import qcd_init
16 def update_disable_objects_hotkeys_status(self
, context
):
17 if self
.enable_disable_objects_override
:
18 cm_init
.register_disable_objects_hotkeys()
21 cm_init
.unregister_disable_objects_hotkeys()
23 def update_qcd_status(self
, context
):
25 qcd_init
.register_qcd()
28 qcd_init
.unregister_qcd()
30 def update_qcd_view_hotkeys_status(self
, context
):
31 if self
.enable_qcd_view_hotkeys
:
32 qcd_init
.register_qcd_view_hotkeys()
34 qcd_init
.unregister_qcd_view_hotkeys()
36 def update_qcd_view_edit_mode_hotkeys_status(self
, context
):
37 if self
.enable_qcd_view_edit_mode_hotkeys
:
38 qcd_init
.register_qcd_view_edit_mode_hotkeys()
40 qcd_init
.unregister_qcd_view_edit_mode_hotkeys()
42 def update_qcd_3dview_header_widget_status(self
, context
):
43 if self
.enable_qcd_3dview_header_widget
:
44 qcd_init
.register_qcd_3dview_header_widget()
46 qcd_init
.unregister_qcd_3dview_header_widget()
48 def get_tool_text(self
):
49 if self
.tool_text_override
:
50 return self
["tool_text_color"]
52 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text
53 self
["tool_text_color"] = color
.r
, color
.g
, color
.b
54 return self
["tool_text_color"]
56 def set_tool_text(self
, values
):
57 self
["tool_text_color"] = values
[0], values
[1], values
[2]
60 def get_tool_text_sel(self
):
61 if self
.tool_text_sel_override
:
62 return self
["tool_text_sel_color"]
64 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text_sel
65 self
["tool_text_sel_color"] = color
.r
, color
.g
, color
.b
66 return self
["tool_text_sel_color"]
68 def set_tool_text_sel(self
, values
):
69 self
["tool_text_sel_color"] = values
[0], values
[1], values
[2]
72 def get_tool_inner(self
):
73 if self
.tool_inner_override
:
74 return self
["tool_inner_color"]
76 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner
77 self
["tool_inner_color"] = color
[0], color
[1], color
[2], color
[3]
78 return self
["tool_inner_color"]
80 def set_tool_inner(self
, values
):
81 self
["tool_inner_color"] = values
[0], values
[1], values
[2], values
[3]
84 def get_tool_inner_sel(self
):
85 if self
.tool_inner_sel_override
:
86 return self
["tool_inner_sel_color"]
88 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner_sel
89 self
["tool_inner_sel_color"] = color
[0], color
[1], color
[2], color
[3]
90 return self
["tool_inner_sel_color"]
92 def set_tool_inner_sel(self
, values
):
93 self
["tool_inner_sel_color"] = values
[0], values
[1], values
[2], values
[3]
96 def get_tool_outline(self
):
97 if self
.tool_outline_override
:
98 return self
["tool_outline_color"]
100 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.outline
101 self
["tool_outline_color"] = color
.r
, color
.g
, color
.b
102 return self
["tool_outline_color"]
104 def set_tool_outline(self
, values
):
105 self
["tool_outline_color"] = values
[0], values
[1], values
[2]
108 def get_menu_back_text(self
):
109 if self
.menu_back_text_override
:
110 return self
["menu_back_text_color"]
112 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.text
113 self
["menu_back_text_color"] = color
.r
, color
.g
, color
.b
114 return self
["menu_back_text_color"]
116 def set_menu_back_text(self
, values
):
117 self
["menu_back_text_color"] = values
[0], values
[1], values
[2]
120 def get_menu_back_inner(self
):
121 if self
.menu_back_inner_override
:
122 return self
["menu_back_inner_color"]
124 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.inner
125 self
["menu_back_inner_color"] = color
[0], color
[1], color
[2], color
[3]
126 return self
["menu_back_inner_color"]
128 def set_menu_back_inner(self
, values
):
129 self
["menu_back_inner_color"] = values
[0], values
[1], values
[2], values
[3]
132 def get_menu_back_outline(self
):
133 if self
.menu_back_outline_override
:
134 return self
["menu_back_outline_color"]
136 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.outline
137 self
["menu_back_outline_color"] = color
.r
, color
.g
, color
.b
138 return self
["menu_back_outline_color"]
140 def set_menu_back_outline(self
, values
):
141 self
["menu_back_outline_color"] = values
[0], values
[1], values
[2]
144 def get_tooltip_text(self
):
145 if self
.tooltip_text_override
:
146 return self
["tooltip_text_color"]
148 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.text
149 self
["tooltip_text_color"] = color
.r
, color
.g
, color
.b
150 return self
["tooltip_text_color"]
152 def set_tooltip_text(self
, values
):
153 self
["tooltip_text_color"] = values
[0], values
[1], values
[2]
156 def get_tooltip_inner(self
):
157 if self
.tooltip_inner_override
:
158 return self
["tooltip_inner_color"]
160 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.inner
161 self
["tooltip_inner_color"] = color
[0], color
[1], color
[2], color
[3]
162 return self
["tooltip_inner_color"]
164 def set_tooltip_inner(self
, values
):
165 self
["tooltip_inner_color"] = values
[0], values
[1], values
[2], values
[3]
168 def get_tooltip_outline(self
):
169 if self
.tooltip_outline_override
:
170 return self
["tooltip_outline_color"]
172 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.outline
173 self
["tooltip_outline_color"] = color
.r
, color
.g
, color
.b
174 return self
["tooltip_outline_color"]
176 def set_tooltip_outline(self
, values
):
177 self
["tooltip_outline_color"] = values
[0], values
[1], values
[2]
180 class CMPreferences(AddonPreferences
):
181 bl_idname
= __package__
183 # ENABLE DISABLE OBJECTS OVERRIDE
184 enable_disable_objects_override
: BoolProperty(
185 name
="Disable objects instead of Hiding",
187 "Replace the object hiding hotkeys with object disabling hotkeys and add them to the Object->Show/Hide menu.\n"
188 "Disabling objects prevents them from being automatically shown again when collections are unexcluded"
191 update
=update_disable_objects_hotkeys_status
,
195 enable_qcd
: BoolProperty(
197 description
="Enable/Disable QCD System.\nThe Quick Content Display system allows you to specify collections as QCD \"slots\" up to a maximum of 20. You can then interact with them through numerical hotkeys, a popup move widget, and a 3D Viewport header widget",
199 update
=update_qcd_status
,
202 enable_qcd_view_hotkeys
: BoolProperty(
204 description
="Enable/Disable the numerical hotkeys to view QCD slots",
206 update
=update_qcd_view_hotkeys_status
,
209 enable_qcd_view_edit_mode_hotkeys
: BoolProperty(
210 name
="QCD Edit Mode Hotkeys",
211 description
="Enable/Disable the numerical hotkeys to view QCD slots in Edit Mode",
213 update
=update_qcd_view_edit_mode_hotkeys_status
,
216 enable_qcd_3dview_header_widget
: BoolProperty(
217 name
="QCD 3D Viewport Header Widget",
218 description
="Enable/Disable the 3D Viewport header widget. This widget graphically represents the 20 QCD slots and allows you to interact with them through the GUI",
220 update
=update_qcd_3dview_header_widget_status
,
225 tool_text_override
: BoolProperty(
227 description
="Override Theme Text Color",
231 tool_text_sel_override
: BoolProperty(
233 description
="Override Theme Text Selection Color",
237 tool_inner_override
: BoolProperty(
239 description
="Override Theme Inner Color",
243 tool_inner_sel_override
: BoolProperty(
245 description
="Override Theme Inner Selection Color",
249 tool_outline_override
: BoolProperty(
251 description
="Override Theme Outline Color",
255 menu_back_text_override
: BoolProperty(
257 description
="Override Theme Text Color",
261 menu_back_inner_override
: BoolProperty(
263 description
="Override Theme Inner Color",
267 menu_back_outline_override
: BoolProperty(
269 description
="Override Theme Outline Color",
273 tooltip_text_override
: BoolProperty(
275 description
="Override Theme Text Color",
279 tooltip_inner_override
: BoolProperty(
281 description
="Override Theme Inner Color",
285 tooltip_outline_override
: BoolProperty(
287 description
="Override Theme Outline Color",
293 qcd_ogl_widget_tool_text
: FloatVectorProperty(
295 description
="QCD Move Widget Tool Text Color",
296 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text
,
297 subtype
='COLOR_GAMMA',
304 qcd_ogl_widget_tool_text_sel
: FloatVectorProperty(
306 description
="QCD Move Widget Tool Text Selection Color",
307 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text_sel
,
308 subtype
='COLOR_GAMMA',
311 get
=get_tool_text_sel
,
312 set=set_tool_text_sel
,
315 qcd_ogl_widget_tool_inner
: FloatVectorProperty(
317 description
="QCD Move Widget Tool Inner Color",
318 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner
,
319 subtype
='COLOR_GAMMA',
327 qcd_ogl_widget_tool_inner_sel
: FloatVectorProperty(
329 description
="QCD Move Widget Tool Inner Selection Color",
330 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner_sel
,
331 subtype
='COLOR_GAMMA',
335 get
=get_tool_inner_sel
,
336 set=set_tool_inner_sel
,
339 qcd_ogl_widget_tool_outline
: FloatVectorProperty(
341 description
="QCD Move Widget Tool Outline Color",
342 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.outline
,
343 subtype
='COLOR_GAMMA',
346 get
=get_tool_outline
,
347 set=set_tool_outline
,
350 qcd_ogl_widget_menu_back_text
: FloatVectorProperty(
352 description
="QCD Move Widget Menu Back Text Color",
353 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.text
,
354 subtype
='COLOR_GAMMA',
357 get
=get_menu_back_text
,
358 set=set_menu_back_text
,
361 qcd_ogl_widget_menu_back_inner
: FloatVectorProperty(
363 description
="QCD Move Widget Menu Back Inner Color",
364 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.inner
,
365 subtype
='COLOR_GAMMA',
369 get
=get_menu_back_inner
,
370 set=set_menu_back_inner
,
373 qcd_ogl_widget_menu_back_outline
: FloatVectorProperty(
375 description
="QCD Move Widget Menu Back Outline Color",
376 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.outline
,
377 subtype
='COLOR_GAMMA',
380 get
=get_menu_back_outline
,
381 set=set_menu_back_outline
,
384 qcd_ogl_widget_tooltip_text
: FloatVectorProperty(
386 description
="QCD Move Widget Tooltip Text Color",
387 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.text
,
388 subtype
='COLOR_GAMMA',
391 get
=get_tooltip_text
,
392 set=set_tooltip_text
,
395 qcd_ogl_widget_tooltip_inner
: FloatVectorProperty(
397 description
="QCD Move Widget Tooltip Inner Color",
398 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.inner
,
399 subtype
='COLOR_GAMMA',
403 get
=get_tooltip_inner
,
404 set=set_tooltip_inner
,
407 qcd_ogl_widget_tooltip_outline
: FloatVectorProperty(
409 description
="QCD Move Widget Tooltip Outline Color",
410 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.outline
,
411 subtype
='COLOR_GAMMA',
414 get
=get_tooltip_outline
,
415 set=set_tooltip_outline
,
418 # NON ACTIVE ICON ALPHA
419 qcd_ogl_selected_icon_alpha
: FloatProperty(
420 name
="Selected Icon Alpha",
421 description
="Set the 'Selected' icon's alpha value",
427 qcd_ogl_objects_icon_alpha
: FloatProperty(
428 name
="Objects Icon Alpha",
429 description
="Set the 'Objects' icon's alpha value",
435 def draw(self
, context
):
439 box
.row().prop(self
, "enable_disable_objects_override")
440 box
.row().prop(self
, "enable_qcd")
442 if not self
.enable_qcd
:
445 box
.row().prop(self
, "enable_qcd_view_hotkeys")
446 box
.row().prop(self
, "enable_qcd_view_edit_mode_hotkeys")
447 box
.row().prop(self
, "enable_qcd_3dview_header_widget")
449 box
.row().label(text
="QCD Move Widget")
453 tool_box
.row().label(text
="Tool Theme Overrides:")
455 overrides
= tool_box
.split(align
=True)
458 col
= overrides
.column()
459 col
.alignment
= 'RIGHT'
462 override
= col
.row(align
=True)
463 override
.alignment
= 'RIGHT'
464 checkbox
= override
.row(align
=True)
465 checkbox
.alignment
= 'RIGHT'
466 checkbox
.label(text
="Text")
467 checkbox
.prop(self
, "tool_text_override", text
="")
468 color_picker
= override
.row(align
=True)
469 color_picker
.alignment
= 'RIGHT'
470 color_picker
.enabled
= self
.tool_text_override
471 color_picker
.prop(self
, "qcd_ogl_widget_tool_text")
474 override
= col
.row(align
=True)
475 override
.alignment
= 'RIGHT'
476 checkbox
= override
.row(align
=True)
477 checkbox
.alignment
= 'RIGHT'
478 checkbox
.label(text
="Selection")
479 checkbox
.prop(self
, "tool_text_sel_override", text
="")
480 color_picker
= override
.row(align
=True)
481 color_picker
.alignment
= 'RIGHT'
482 color_picker
.enabled
= self
.tool_text_sel_override
483 color_picker
.prop(self
, "qcd_ogl_widget_tool_text_sel")
486 col
= overrides
.column()
487 col
.alignment
= 'RIGHT'
490 override
= col
.row(align
=True)
491 override
.alignment
= 'RIGHT'
492 checkbox
= override
.row(align
=True)
493 checkbox
.alignment
= 'RIGHT'
494 checkbox
.label(text
="Inner")
495 checkbox
.prop(self
, "tool_inner_override", text
="")
496 color_picker
= override
.row(align
=True)
497 color_picker
.alignment
= 'RIGHT'
498 color_picker
.enabled
= self
.tool_inner_override
499 color_picker
.prop(self
, "qcd_ogl_widget_tool_inner")
502 override
= col
.row(align
=True)
503 override
.alignment
= 'RIGHT'
504 checkbox
= override
.row(align
=True)
505 checkbox
.alignment
= 'RIGHT'
506 checkbox
.label(text
="Selection")
507 checkbox
.prop(self
, "tool_inner_sel_override", text
="")
508 color_picker
= override
.row(align
=True)
509 color_picker
.alignment
= 'RIGHT'
510 color_picker
.enabled
= self
.tool_inner_sel_override
511 color_picker
.prop(self
, "qcd_ogl_widget_tool_inner_sel")
514 override
= col
.row(align
=True)
515 override
.alignment
= 'RIGHT'
516 checkbox
= override
.row(align
=True)
517 checkbox
.alignment
= 'RIGHT'
518 checkbox
.label(text
="Outline")
519 checkbox
.prop(self
, "tool_outline_override", text
="")
520 color_picker
= override
.row(align
=True)
521 color_picker
.alignment
= 'RIGHT'
522 color_picker
.enabled
= self
.tool_outline_override
523 color_picker
.prop(self
, "qcd_ogl_widget_tool_outline")
526 tool_box
.row().label(text
="Icon Alpha:")
527 icon_fade_row
= tool_box
.row()
528 icon_fade_row
.alignment
= 'EXPAND'
529 icon_fade_row
.prop(self
, "qcd_ogl_selected_icon_alpha", text
="Selected")
530 icon_fade_row
.prop(self
, "qcd_ogl_objects_icon_alpha", text
="Objects")
533 # MENU BACK OVERRIDES
534 menu_back_box
= box
.box()
535 menu_back_box
.row().label(text
="Menu Back Theme Overrides:")
537 overrides
= menu_back_box
.split(align
=True)
540 col
= overrides
.column()
541 col
.alignment
= 'RIGHT'
544 override
= col
.row(align
=True)
545 override
.alignment
= 'RIGHT'
546 checkbox
= override
.row(align
=True)
547 checkbox
.alignment
= 'RIGHT'
548 checkbox
.label(text
="Text")
549 checkbox
.prop(self
, "menu_back_text_override", text
="")
550 color_picker
= override
.row(align
=True)
551 color_picker
.alignment
= 'RIGHT'
552 color_picker
.enabled
= self
.menu_back_text_override
553 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_text")
556 col
= overrides
.column()
557 col
.alignment
= 'RIGHT'
560 override
= col
.row(align
=True)
561 override
.alignment
= 'RIGHT'
562 checkbox
= override
.row(align
=True)
563 checkbox
.alignment
= 'RIGHT'
564 checkbox
.label(text
="Inner")
565 checkbox
.prop(self
, "menu_back_inner_override", text
="")
566 color_picker
= override
.row(align
=True)
567 color_picker
.alignment
= 'RIGHT'
568 color_picker
.enabled
= self
.menu_back_inner_override
569 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_inner")
572 override
= col
.row(align
=True)
573 override
.alignment
= 'RIGHT'
574 checkbox
= override
.row(align
=True)
575 checkbox
.alignment
= 'RIGHT'
576 checkbox
.label(text
="Outline")
577 checkbox
.prop(self
, "menu_back_outline_override", text
="")
578 color_picker
= override
.row(align
=True)
579 color_picker
.alignment
= 'RIGHT'
580 color_picker
.enabled
= self
.menu_back_outline_override
581 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_outline")
585 tooltip_box
= box
.box()
586 tooltip_box
.row().label(text
="Tooltip Theme Overrides:")
588 overrides
= tooltip_box
.split(align
=True)
591 col
= overrides
.column()
592 col
.alignment
= 'RIGHT'
595 override
= col
.row(align
=True)
596 override
.alignment
= 'RIGHT'
597 checkbox
= override
.row(align
=True)
598 checkbox
.alignment
= 'RIGHT'
599 checkbox
.label(text
="Text")
600 checkbox
.prop(self
, "tooltip_text_override", text
="")
601 color_picker
= override
.row(align
=True)
602 color_picker
.alignment
= 'RIGHT'
603 color_picker
.enabled
= self
.tooltip_text_override
604 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_text")
607 col
= overrides
.column()
608 col
.alignment
= 'RIGHT'
611 override
= col
.row(align
=True)
612 override
.alignment
= 'RIGHT'
613 checkbox
= override
.row(align
=True)
614 checkbox
.alignment
= 'RIGHT'
615 checkbox
.label(text
="Inner")
616 checkbox
.prop(self
, "tooltip_inner_override", text
="")
617 color_picker
= override
.row(align
=True)
618 color_picker
.alignment
= 'RIGHT'
619 color_picker
.enabled
= self
.tooltip_inner_override
620 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_inner")
623 override
= col
.row(align
=True)
624 override
.alignment
= 'RIGHT'
625 checkbox
= override
.row(align
=True)
626 checkbox
.alignment
= 'RIGHT'
627 checkbox
.label(text
="Outline")
628 checkbox
.prop(self
, "tooltip_outline_override", text
="")
629 color_picker
= override
.row(align
=True)
630 color_picker
.alignment
= 'RIGHT'
631 color_picker
.enabled
= self
.tooltip_outline_override
632 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_outline")