1 # ##### BEGIN GPL LICENSE BLOCK #####
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # ##### END GPL LICENSE BLOCK #####
19 # Copyright 2011, Ryan Inch
22 from bpy
.types
import AddonPreferences
23 from bpy
.props
import (
30 from . import qcd_init
32 def update_disable_objects_hotkeys_status(self
, context
):
33 if self
.enable_disable_objects_override
:
34 cm_init
.register_disable_objects_hotkeys()
37 cm_init
.unregister_disable_objects_hotkeys()
39 def update_qcd_status(self
, context
):
41 qcd_init
.register_qcd()
44 qcd_init
.unregister_qcd()
46 def update_qcd_view_hotkeys_status(self
, context
):
47 if self
.enable_qcd_view_hotkeys
:
48 qcd_init
.register_qcd_view_hotkeys()
50 qcd_init
.unregister_qcd_view_hotkeys()
52 def update_qcd_view_edit_mode_hotkeys_status(self
, context
):
53 if self
.enable_qcd_view_edit_mode_hotkeys
:
54 qcd_init
.register_qcd_view_edit_mode_hotkeys()
56 qcd_init
.unregister_qcd_view_edit_mode_hotkeys()
58 def get_tool_text(self
):
59 if self
.tool_text_override
:
60 return self
["tool_text_color"]
62 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text
63 self
["tool_text_color"] = color
.r
, color
.g
, color
.b
64 return self
["tool_text_color"]
66 def set_tool_text(self
, values
):
67 self
["tool_text_color"] = values
[0], values
[1], values
[2]
70 def get_tool_text_sel(self
):
71 if self
.tool_text_sel_override
:
72 return self
["tool_text_sel_color"]
74 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text_sel
75 self
["tool_text_sel_color"] = color
.r
, color
.g
, color
.b
76 return self
["tool_text_sel_color"]
78 def set_tool_text_sel(self
, values
):
79 self
["tool_text_sel_color"] = values
[0], values
[1], values
[2]
82 def get_tool_inner(self
):
83 if self
.tool_inner_override
:
84 return self
["tool_inner_color"]
86 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner
87 self
["tool_inner_color"] = color
[0], color
[1], color
[2], color
[3]
88 return self
["tool_inner_color"]
90 def set_tool_inner(self
, values
):
91 self
["tool_inner_color"] = values
[0], values
[1], values
[2], values
[3]
94 def get_tool_inner_sel(self
):
95 if self
.tool_inner_sel_override
:
96 return self
["tool_inner_sel_color"]
98 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner_sel
99 self
["tool_inner_sel_color"] = color
[0], color
[1], color
[2], color
[3]
100 return self
["tool_inner_sel_color"]
102 def set_tool_inner_sel(self
, values
):
103 self
["tool_inner_sel_color"] = values
[0], values
[1], values
[2], values
[3]
106 def get_tool_outline(self
):
107 if self
.tool_outline_override
:
108 return self
["tool_outline_color"]
110 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.outline
111 self
["tool_outline_color"] = color
.r
, color
.g
, color
.b
112 return self
["tool_outline_color"]
114 def set_tool_outline(self
, values
):
115 self
["tool_outline_color"] = values
[0], values
[1], values
[2]
118 def get_menu_back_text(self
):
119 if self
.menu_back_text_override
:
120 return self
["menu_back_text_color"]
122 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.text
123 self
["menu_back_text_color"] = color
.r
, color
.g
, color
.b
124 return self
["menu_back_text_color"]
126 def set_menu_back_text(self
, values
):
127 self
["menu_back_text_color"] = values
[0], values
[1], values
[2]
130 def get_menu_back_inner(self
):
131 if self
.menu_back_inner_override
:
132 return self
["menu_back_inner_color"]
134 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.inner
135 self
["menu_back_inner_color"] = color
[0], color
[1], color
[2], color
[3]
136 return self
["menu_back_inner_color"]
138 def set_menu_back_inner(self
, values
):
139 self
["menu_back_inner_color"] = values
[0], values
[1], values
[2], values
[3]
142 def get_menu_back_outline(self
):
143 if self
.menu_back_outline_override
:
144 return self
["menu_back_outline_color"]
146 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.outline
147 self
["menu_back_outline_color"] = color
.r
, color
.g
, color
.b
148 return self
["menu_back_outline_color"]
150 def set_menu_back_outline(self
, values
):
151 self
["menu_back_outline_color"] = values
[0], values
[1], values
[2]
154 def get_tooltip_text(self
):
155 if self
.tooltip_text_override
:
156 return self
["tooltip_text_color"]
158 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.text
159 self
["tooltip_text_color"] = color
.r
, color
.g
, color
.b
160 return self
["tooltip_text_color"]
162 def set_tooltip_text(self
, values
):
163 self
["tooltip_text_color"] = values
[0], values
[1], values
[2]
166 def get_tooltip_inner(self
):
167 if self
.tooltip_inner_override
:
168 return self
["tooltip_inner_color"]
170 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.inner
171 self
["tooltip_inner_color"] = color
[0], color
[1], color
[2], color
[3]
172 return self
["tooltip_inner_color"]
174 def set_tooltip_inner(self
, values
):
175 self
["tooltip_inner_color"] = values
[0], values
[1], values
[2], values
[3]
178 def get_tooltip_outline(self
):
179 if self
.tooltip_outline_override
:
180 return self
["tooltip_outline_color"]
182 color
= bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.outline
183 self
["tooltip_outline_color"] = color
.r
, color
.g
, color
.b
184 return self
["tooltip_outline_color"]
186 def set_tooltip_outline(self
, values
):
187 self
["tooltip_outline_color"] = values
[0], values
[1], values
[2]
190 class CMPreferences(AddonPreferences
):
191 bl_idname
= __package__
193 # ENABLE DISABLE OBJECTS OVERRIDE
194 enable_disable_objects_override
: BoolProperty(
195 name
="Disable objects instead of Hiding",
197 "Replace the object hiding hotkeys with object disabling hotkeys and add them to the Object->Show/Hide menu.\n"
198 "Disabling objects prevents them from being automatically shown again when collections are unexcluded"
201 update
=update_disable_objects_hotkeys_status
,
205 enable_qcd
: BoolProperty(
207 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 View header widget",
209 update
=update_qcd_status
,
212 enable_qcd_view_hotkeys
: BoolProperty(
214 description
="Enable/Disable the numerical hotkeys to view QCD slots",
216 update
=update_qcd_view_hotkeys_status
,
219 enable_qcd_view_edit_mode_hotkeys
: BoolProperty(
220 name
="QCD Edit Mode Hotkeys",
221 description
="Enable/Disable the numerical hotkeys to view QCD slots in Edit Mode",
223 update
=update_qcd_view_edit_mode_hotkeys_status
,
228 tool_text_override
: BoolProperty(
230 description
="Override Theme Text Color",
234 tool_text_sel_override
: BoolProperty(
236 description
="Override Theme Text Selection Color",
240 tool_inner_override
: BoolProperty(
242 description
="Override Theme Inner Color",
246 tool_inner_sel_override
: BoolProperty(
248 description
="Override Theme Inner Selection Color",
252 tool_outline_override
: BoolProperty(
254 description
="Override Theme Outline Color",
258 menu_back_text_override
: BoolProperty(
260 description
="Override Theme Text Color",
264 menu_back_inner_override
: BoolProperty(
266 description
="Override Theme Inner Color",
270 menu_back_outline_override
: BoolProperty(
272 description
="Override Theme Outline Color",
276 tooltip_text_override
: BoolProperty(
278 description
="Override Theme Text Color",
282 tooltip_inner_override
: BoolProperty(
284 description
="Override Theme Inner Color",
288 tooltip_outline_override
: BoolProperty(
290 description
="Override Theme Outline Color",
296 qcd_ogl_widget_tool_text
: FloatVectorProperty(
298 description
="QCD Move Widget Tool Text Color",
299 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text
,
300 subtype
='COLOR_GAMMA',
307 qcd_ogl_widget_tool_text_sel
: FloatVectorProperty(
309 description
="QCD Move Widget Tool Text Selection Color",
310 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.text_sel
,
311 subtype
='COLOR_GAMMA',
314 get
=get_tool_text_sel
,
315 set=set_tool_text_sel
,
318 qcd_ogl_widget_tool_inner
: FloatVectorProperty(
320 description
="QCD Move Widget Tool Inner Color",
321 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner
,
322 subtype
='COLOR_GAMMA',
330 qcd_ogl_widget_tool_inner_sel
: FloatVectorProperty(
332 description
="QCD Move Widget Tool Inner Selection Color",
333 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.inner_sel
,
334 subtype
='COLOR_GAMMA',
338 get
=get_tool_inner_sel
,
339 set=set_tool_inner_sel
,
342 qcd_ogl_widget_tool_outline
: FloatVectorProperty(
344 description
="QCD Move Widget Tool Outline Color",
345 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tool
.outline
,
346 subtype
='COLOR_GAMMA',
349 get
=get_tool_outline
,
350 set=set_tool_outline
,
353 qcd_ogl_widget_menu_back_text
: FloatVectorProperty(
355 description
="QCD Move Widget Menu Back Text Color",
356 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.text
,
357 subtype
='COLOR_GAMMA',
360 get
=get_menu_back_text
,
361 set=set_menu_back_text
,
364 qcd_ogl_widget_menu_back_inner
: FloatVectorProperty(
366 description
="QCD Move Widget Menu Back Inner Color",
367 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.inner
,
368 subtype
='COLOR_GAMMA',
372 get
=get_menu_back_inner
,
373 set=set_menu_back_inner
,
376 qcd_ogl_widget_menu_back_outline
: FloatVectorProperty(
378 description
="QCD Move Widget Menu Back Outline Color",
379 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_menu_back
.outline
,
380 subtype
='COLOR_GAMMA',
383 get
=get_menu_back_outline
,
384 set=set_menu_back_outline
,
387 qcd_ogl_widget_tooltip_text
: FloatVectorProperty(
389 description
="QCD Move Widget Tooltip Text Color",
390 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.text
,
391 subtype
='COLOR_GAMMA',
394 get
=get_tooltip_text
,
395 set=set_tooltip_text
,
398 qcd_ogl_widget_tooltip_inner
: FloatVectorProperty(
400 description
="QCD Move Widget Tooltip Inner Color",
401 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.inner
,
402 subtype
='COLOR_GAMMA',
406 get
=get_tooltip_inner
,
407 set=set_tooltip_inner
,
410 qcd_ogl_widget_tooltip_outline
: FloatVectorProperty(
412 description
="QCD Move Widget Tooltip Outline Color",
413 default
=bpy
.context
.preferences
.themes
[0].user_interface
.wcol_tooltip
.outline
,
414 subtype
='COLOR_GAMMA',
417 get
=get_tooltip_outline
,
418 set=set_tooltip_outline
,
421 # NON ACTIVE ICON ALPHA
422 qcd_ogl_selected_icon_alpha
: FloatProperty(
423 name
="Selected Icon Alpha",
424 description
="Set the 'Selected' icon's alpha value",
430 qcd_ogl_objects_icon_alpha
: FloatProperty(
431 name
="Objects Icon Alpha",
432 description
="Set the 'Objects' icon's alpha value",
438 def draw(self
, context
):
442 box
.row().prop(self
, "enable_disable_objects_override")
443 box
.row().prop(self
, "enable_qcd")
445 if not self
.enable_qcd
:
448 box
.row().prop(self
, "enable_qcd_view_hotkeys")
449 box
.row().prop(self
, "enable_qcd_view_edit_mode_hotkeys")
451 box
.row().label(text
="QCD Move Widget")
455 tool_box
.row().label(text
="Tool Theme Overrides:")
457 overrides
= tool_box
.split(align
=True)
460 col
= overrides
.column()
461 col
.alignment
= 'RIGHT'
464 override
= col
.row(align
=True)
465 override
.alignment
= 'RIGHT'
466 checkbox
= override
.row(align
=True)
467 checkbox
.alignment
= 'RIGHT'
468 checkbox
.label(text
="Text")
469 checkbox
.prop(self
, "tool_text_override", text
="")
470 color_picker
= override
.row(align
=True)
471 color_picker
.alignment
= 'RIGHT'
472 color_picker
.enabled
= self
.tool_text_override
473 color_picker
.prop(self
, "qcd_ogl_widget_tool_text")
476 override
= col
.row(align
=True)
477 override
.alignment
= 'RIGHT'
478 checkbox
= override
.row(align
=True)
479 checkbox
.alignment
= 'RIGHT'
480 checkbox
.label(text
="Selection")
481 checkbox
.prop(self
, "tool_text_sel_override", text
="")
482 color_picker
= override
.row(align
=True)
483 color_picker
.alignment
= 'RIGHT'
484 color_picker
.enabled
= self
.tool_text_sel_override
485 color_picker
.prop(self
, "qcd_ogl_widget_tool_text_sel")
488 col
= overrides
.column()
489 col
.alignment
= 'RIGHT'
492 override
= col
.row(align
=True)
493 override
.alignment
= 'RIGHT'
494 checkbox
= override
.row(align
=True)
495 checkbox
.alignment
= 'RIGHT'
496 checkbox
.label(text
="Inner")
497 checkbox
.prop(self
, "tool_inner_override", text
="")
498 color_picker
= override
.row(align
=True)
499 color_picker
.alignment
= 'RIGHT'
500 color_picker
.enabled
= self
.tool_inner_override
501 color_picker
.prop(self
, "qcd_ogl_widget_tool_inner")
504 override
= col
.row(align
=True)
505 override
.alignment
= 'RIGHT'
506 checkbox
= override
.row(align
=True)
507 checkbox
.alignment
= 'RIGHT'
508 checkbox
.label(text
="Selection")
509 checkbox
.prop(self
, "tool_inner_sel_override", text
="")
510 color_picker
= override
.row(align
=True)
511 color_picker
.alignment
= 'RIGHT'
512 color_picker
.enabled
= self
.tool_inner_sel_override
513 color_picker
.prop(self
, "qcd_ogl_widget_tool_inner_sel")
516 override
= col
.row(align
=True)
517 override
.alignment
= 'RIGHT'
518 checkbox
= override
.row(align
=True)
519 checkbox
.alignment
= 'RIGHT'
520 checkbox
.label(text
="Outline")
521 checkbox
.prop(self
, "tool_outline_override", text
="")
522 color_picker
= override
.row(align
=True)
523 color_picker
.alignment
= 'RIGHT'
524 color_picker
.enabled
= self
.tool_outline_override
525 color_picker
.prop(self
, "qcd_ogl_widget_tool_outline")
528 tool_box
.row().label(text
="Icon Alpha:")
529 icon_fade_row
= tool_box
.row()
530 icon_fade_row
.alignment
= 'EXPAND'
531 icon_fade_row
.prop(self
, "qcd_ogl_selected_icon_alpha", text
="Selected")
532 icon_fade_row
.prop(self
, "qcd_ogl_objects_icon_alpha", text
="Objects")
535 # MENU BACK OVERRIDES
536 menu_back_box
= box
.box()
537 menu_back_box
.row().label(text
="Menu Back Theme Overrides:")
539 overrides
= menu_back_box
.split(align
=True)
542 col
= overrides
.column()
543 col
.alignment
= 'RIGHT'
546 override
= col
.row(align
=True)
547 override
.alignment
= 'RIGHT'
548 checkbox
= override
.row(align
=True)
549 checkbox
.alignment
= 'RIGHT'
550 checkbox
.label(text
="Text")
551 checkbox
.prop(self
, "menu_back_text_override", text
="")
552 color_picker
= override
.row(align
=True)
553 color_picker
.alignment
= 'RIGHT'
554 color_picker
.enabled
= self
.menu_back_text_override
555 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_text")
558 col
= overrides
.column()
559 col
.alignment
= 'RIGHT'
562 override
= col
.row(align
=True)
563 override
.alignment
= 'RIGHT'
564 checkbox
= override
.row(align
=True)
565 checkbox
.alignment
= 'RIGHT'
566 checkbox
.label(text
="Inner")
567 checkbox
.prop(self
, "menu_back_inner_override", text
="")
568 color_picker
= override
.row(align
=True)
569 color_picker
.alignment
= 'RIGHT'
570 color_picker
.enabled
= self
.menu_back_inner_override
571 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_inner")
574 override
= col
.row(align
=True)
575 override
.alignment
= 'RIGHT'
576 checkbox
= override
.row(align
=True)
577 checkbox
.alignment
= 'RIGHT'
578 checkbox
.label(text
="Outline")
579 checkbox
.prop(self
, "menu_back_outline_override", text
="")
580 color_picker
= override
.row(align
=True)
581 color_picker
.alignment
= 'RIGHT'
582 color_picker
.enabled
= self
.menu_back_outline_override
583 color_picker
.prop(self
, "qcd_ogl_widget_menu_back_outline")
587 tooltip_box
= box
.box()
588 tooltip_box
.row().label(text
="Tooltip Theme Overrides:")
590 overrides
= tooltip_box
.split(align
=True)
593 col
= overrides
.column()
594 col
.alignment
= 'RIGHT'
597 override
= col
.row(align
=True)
598 override
.alignment
= 'RIGHT'
599 checkbox
= override
.row(align
=True)
600 checkbox
.alignment
= 'RIGHT'
601 checkbox
.label(text
="Text")
602 checkbox
.prop(self
, "tooltip_text_override", text
="")
603 color_picker
= override
.row(align
=True)
604 color_picker
.alignment
= 'RIGHT'
605 color_picker
.enabled
= self
.tooltip_text_override
606 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_text")
609 col
= overrides
.column()
610 col
.alignment
= 'RIGHT'
613 override
= col
.row(align
=True)
614 override
.alignment
= 'RIGHT'
615 checkbox
= override
.row(align
=True)
616 checkbox
.alignment
= 'RIGHT'
617 checkbox
.label(text
="Inner")
618 checkbox
.prop(self
, "tooltip_inner_override", text
="")
619 color_picker
= override
.row(align
=True)
620 color_picker
.alignment
= 'RIGHT'
621 color_picker
.enabled
= self
.tooltip_inner_override
622 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_inner")
625 override
= col
.row(align
=True)
626 override
.alignment
= 'RIGHT'
627 checkbox
= override
.row(align
=True)
628 checkbox
.alignment
= 'RIGHT'
629 checkbox
.label(text
="Outline")
630 checkbox
.prop(self
, "tooltip_outline_override", text
="")
631 color_picker
= override
.row(align
=True)
632 color_picker
.alignment
= 'RIGHT'
633 color_picker
.enabled
= self
.tooltip_outline_override
634 color_picker
.prop(self
, "qcd_ogl_widget_tooltip_outline")