AnimAll: rename the "Animate" tab back to "Animation"
[blender-addons.git] / object_collection_manager / preferences.py
blob062b6352af5c2a57cdb86c3c449c4d6478603a09
1 # SPDX-FileCopyrightText: 2011 Ryan Inch
3 # SPDX-License-Identifier: GPL-2.0-or-later
5 import bpy
6 from bpy.types import AddonPreferences
7 from bpy.props import (
8 BoolProperty,
9 FloatProperty,
10 FloatVectorProperty,
13 from . import cm_init
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()
20 else:
21 cm_init.unregister_disable_objects_hotkeys()
23 def update_qcd_status(self, context):
24 if self.enable_qcd:
25 qcd_init.register_qcd()
27 else:
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()
33 else:
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()
39 else:
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()
45 else:
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"]
51 else:
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"]
63 else:
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"]
75 else:
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"]
87 else:
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"]
99 else:
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"]
111 else:
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"]
123 else:
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"]
135 else:
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"]
147 else:
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"]
159 else:
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"]
171 else:
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",
186 description=(
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"
190 default=False,
191 update=update_disable_objects_hotkeys_status,
194 # ENABLE QCD BOOLS
195 enable_qcd: BoolProperty(
196 name="QCD",
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",
198 default=True,
199 update=update_qcd_status,
202 enable_qcd_view_hotkeys: BoolProperty(
203 name="QCD Hotkeys",
204 description="Enable/Disable the numerical hotkeys to view QCD slots",
205 default=True,
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",
212 default=False,
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",
219 default=True,
220 update=update_qcd_3dview_header_widget_status,
224 # OVERRIDE BOOLS
225 tool_text_override: BoolProperty(
226 name="Text",
227 description="Override Theme Text Color",
228 default=False,
231 tool_text_sel_override: BoolProperty(
232 name="Selection",
233 description="Override Theme Text Selection Color",
234 default=False,
237 tool_inner_override: BoolProperty(
238 name="Inner",
239 description="Override Theme Inner Color",
240 default=False,
243 tool_inner_sel_override: BoolProperty(
244 name="Selection",
245 description="Override Theme Inner Selection Color",
246 default=False,
249 tool_outline_override: BoolProperty(
250 name="Outline",
251 description="Override Theme Outline Color",
252 default=False,
255 menu_back_text_override: BoolProperty(
256 name="Text",
257 description="Override Theme Text Color",
258 default=False,
261 menu_back_inner_override: BoolProperty(
262 name="Inner",
263 description="Override Theme Inner Color",
264 default=False,
267 menu_back_outline_override: BoolProperty(
268 name="Outline",
269 description="Override Theme Outline Color",
270 default=False,
273 tooltip_text_override: BoolProperty(
274 name="Text",
275 description="Override Theme Text Color",
276 default=False,
279 tooltip_inner_override: BoolProperty(
280 name="Inner",
281 description="Override Theme Inner Color",
282 default=False,
285 tooltip_outline_override: BoolProperty(
286 name="Outline",
287 description="Override Theme Outline Color",
288 default=False,
292 # OVERRIDE COLORS
293 qcd_ogl_widget_tool_text: FloatVectorProperty(
294 name="",
295 description="QCD Move Widget Tool Text Color",
296 default=bpy.context.preferences.themes[0].user_interface.wcol_tool.text,
297 subtype='COLOR_GAMMA',
298 min=0.0,
299 max=1.0,
300 get=get_tool_text,
301 set=set_tool_text,
304 qcd_ogl_widget_tool_text_sel: FloatVectorProperty(
305 name="",
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',
309 min=0.0,
310 max=1.0,
311 get=get_tool_text_sel,
312 set=set_tool_text_sel,
315 qcd_ogl_widget_tool_inner: FloatVectorProperty(
316 name="",
317 description="QCD Move Widget Tool Inner Color",
318 default=bpy.context.preferences.themes[0].user_interface.wcol_tool.inner,
319 subtype='COLOR_GAMMA',
320 min=0.0,
321 max=1.0,
322 size=4,
323 get=get_tool_inner,
324 set=set_tool_inner,
327 qcd_ogl_widget_tool_inner_sel: FloatVectorProperty(
328 name="",
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',
332 min=0.0,
333 max=1.0,
334 size=4,
335 get=get_tool_inner_sel,
336 set=set_tool_inner_sel,
339 qcd_ogl_widget_tool_outline: FloatVectorProperty(
340 name="",
341 description="QCD Move Widget Tool Outline Color",
342 default=bpy.context.preferences.themes[0].user_interface.wcol_tool.outline,
343 subtype='COLOR_GAMMA',
344 min=0.0,
345 max=1.0,
346 size=4,
347 get=get_tool_outline,
348 set=set_tool_outline,
351 qcd_ogl_widget_menu_back_text: FloatVectorProperty(
352 name="",
353 description="QCD Move Widget Menu Back Text Color",
354 default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.text,
355 subtype='COLOR_GAMMA',
356 min=0.0,
357 max=1.0,
358 get=get_menu_back_text,
359 set=set_menu_back_text,
362 qcd_ogl_widget_menu_back_inner: FloatVectorProperty(
363 name="",
364 description="QCD Move Widget Menu Back Inner Color",
365 default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.inner,
366 subtype='COLOR_GAMMA',
367 min=0.0,
368 max=1.0,
369 size=4,
370 get=get_menu_back_inner,
371 set=set_menu_back_inner,
374 qcd_ogl_widget_menu_back_outline: FloatVectorProperty(
375 name="",
376 description="QCD Move Widget Menu Back Outline Color",
377 default=bpy.context.preferences.themes[0].user_interface.wcol_menu_back.outline,
378 subtype='COLOR_GAMMA',
379 min=0.0,
380 max=1.0,
381 size=4,
382 get=get_menu_back_outline,
383 set=set_menu_back_outline,
386 qcd_ogl_widget_tooltip_text: FloatVectorProperty(
387 name="",
388 description="QCD Move Widget Tooltip Text Color",
389 default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.text,
390 subtype='COLOR_GAMMA',
391 min=0.0,
392 max=1.0,
393 get=get_tooltip_text,
394 set=set_tooltip_text,
397 qcd_ogl_widget_tooltip_inner: FloatVectorProperty(
398 name="",
399 description="QCD Move Widget Tooltip Inner Color",
400 default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.inner,
401 subtype='COLOR_GAMMA',
402 min=0.0,
403 max=1.0,
404 size=4,
405 get=get_tooltip_inner,
406 set=set_tooltip_inner,
409 qcd_ogl_widget_tooltip_outline: FloatVectorProperty(
410 name="",
411 description="QCD Move Widget Tooltip Outline Color",
412 default=bpy.context.preferences.themes[0].user_interface.wcol_tooltip.outline,
413 subtype='COLOR_GAMMA',
414 min=0.0,
415 max=1.0,
416 size=4,
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",
425 default=0.9,
426 min=0.0,
427 max=1.0,
430 qcd_ogl_objects_icon_alpha: FloatProperty(
431 name="Objects Icon Alpha",
432 description="Set the 'Objects' icon's alpha value",
433 default=0.5,
434 min=0.0,
435 max=1.0,
438 def draw(self, context):
439 layout = self.layout
440 box = layout.box()
442 box.row().prop(self, "enable_disable_objects_override")
443 box.row().prop(self, "enable_qcd")
445 if not self.enable_qcd:
446 return
448 box.row().prop(self, "enable_qcd_view_hotkeys")
449 box.row().prop(self, "enable_qcd_view_edit_mode_hotkeys")
450 box.row().prop(self, "enable_qcd_3dview_header_widget")
452 box.row().label(text="QCD Move Widget")
454 # TOOL OVERRIDES
455 tool_box = box.box()
456 tool_box.row().label(text="Tool Theme Overrides:")
458 overrides = tool_box.split(align=True)
460 # Column 1
461 col = overrides.column()
462 col.alignment = 'RIGHT'
464 # Text
465 override = col.row(align=True)
466 override.alignment = 'RIGHT'
467 checkbox = override.row(align=True)
468 checkbox.alignment = 'RIGHT'
469 checkbox.label(text="Text")
470 checkbox.prop(self, "tool_text_override", text="")
471 color_picker = override.row(align=True)
472 color_picker.alignment = 'RIGHT'
473 color_picker.enabled = self.tool_text_override
474 color_picker.prop(self, "qcd_ogl_widget_tool_text")
476 # Text Selection
477 override = col.row(align=True)
478 override.alignment = 'RIGHT'
479 checkbox = override.row(align=True)
480 checkbox.alignment = 'RIGHT'
481 checkbox.label(text="Selection")
482 checkbox.prop(self, "tool_text_sel_override", text="")
483 color_picker = override.row(align=True)
484 color_picker.alignment = 'RIGHT'
485 color_picker.enabled = self.tool_text_sel_override
486 color_picker.prop(self, "qcd_ogl_widget_tool_text_sel")
488 # Column 2
489 col = overrides.column()
490 col.alignment = 'RIGHT'
492 # Inner
493 override = col.row(align=True)
494 override.alignment = 'RIGHT'
495 checkbox = override.row(align=True)
496 checkbox.alignment = 'RIGHT'
497 checkbox.label(text="Inner")
498 checkbox.prop(self, "tool_inner_override", text="")
499 color_picker = override.row(align=True)
500 color_picker.alignment = 'RIGHT'
501 color_picker.enabled = self.tool_inner_override
502 color_picker.prop(self, "qcd_ogl_widget_tool_inner")
504 # Inner Selection
505 override = col.row(align=True)
506 override.alignment = 'RIGHT'
507 checkbox = override.row(align=True)
508 checkbox.alignment = 'RIGHT'
509 checkbox.label(text="Selection")
510 checkbox.prop(self, "tool_inner_sel_override", text="")
511 color_picker = override.row(align=True)
512 color_picker.alignment = 'RIGHT'
513 color_picker.enabled = self.tool_inner_sel_override
514 color_picker.prop(self, "qcd_ogl_widget_tool_inner_sel")
516 # Outline
517 override = col.row(align=True)
518 override.alignment = 'RIGHT'
519 checkbox = override.row(align=True)
520 checkbox.alignment = 'RIGHT'
521 checkbox.label(text="Outline")
522 checkbox.prop(self, "tool_outline_override", text="")
523 color_picker = override.row(align=True)
524 color_picker.alignment = 'RIGHT'
525 color_picker.enabled = self.tool_outline_override
526 color_picker.prop(self, "qcd_ogl_widget_tool_outline")
528 # Icon Alpha
529 tool_box.row().label(text="Icon Alpha:")
530 icon_fade_row = tool_box.row()
531 icon_fade_row.alignment = 'EXPAND'
532 icon_fade_row.prop(self, "qcd_ogl_selected_icon_alpha", text="Selected")
533 icon_fade_row.prop(self, "qcd_ogl_objects_icon_alpha", text="Objects")
536 # MENU BACK OVERRIDES
537 menu_back_box = box.box()
538 menu_back_box.row().label(text="Menu Back Theme Overrides:")
540 overrides = menu_back_box.split(align=True)
542 # Column 1
543 col = overrides.column()
544 col.alignment = 'RIGHT'
546 # Text
547 override = col.row(align=True)
548 override.alignment = 'RIGHT'
549 checkbox = override.row(align=True)
550 checkbox.alignment = 'RIGHT'
551 checkbox.label(text="Text")
552 checkbox.prop(self, "menu_back_text_override", text="")
553 color_picker = override.row(align=True)
554 color_picker.alignment = 'RIGHT'
555 color_picker.enabled = self.menu_back_text_override
556 color_picker.prop(self, "qcd_ogl_widget_menu_back_text")
558 # Column 2
559 col = overrides.column()
560 col.alignment = 'RIGHT'
562 # Inner
563 override = col.row(align=True)
564 override.alignment = 'RIGHT'
565 checkbox = override.row(align=True)
566 checkbox.alignment = 'RIGHT'
567 checkbox.label(text="Inner")
568 checkbox.prop(self, "menu_back_inner_override", text="")
569 color_picker = override.row(align=True)
570 color_picker.alignment = 'RIGHT'
571 color_picker.enabled = self.menu_back_inner_override
572 color_picker.prop(self, "qcd_ogl_widget_menu_back_inner")
574 # Outline
575 override = col.row(align=True)
576 override.alignment = 'RIGHT'
577 checkbox = override.row(align=True)
578 checkbox.alignment = 'RIGHT'
579 checkbox.label(text="Outline")
580 checkbox.prop(self, "menu_back_outline_override", text="")
581 color_picker = override.row(align=True)
582 color_picker.alignment = 'RIGHT'
583 color_picker.enabled = self.menu_back_outline_override
584 color_picker.prop(self, "qcd_ogl_widget_menu_back_outline")
587 # TOOLTIP OVERRIDES
588 tooltip_box = box.box()
589 tooltip_box.row().label(text="Tooltip Theme Overrides:")
591 overrides = tooltip_box.split(align=True)
593 # Column 1
594 col = overrides.column()
595 col.alignment = 'RIGHT'
597 # Text
598 override = col.row(align=True)
599 override.alignment = 'RIGHT'
600 checkbox = override.row(align=True)
601 checkbox.alignment = 'RIGHT'
602 checkbox.label(text="Text")
603 checkbox.prop(self, "tooltip_text_override", text="")
604 color_picker = override.row(align=True)
605 color_picker.alignment = 'RIGHT'
606 color_picker.enabled = self.tooltip_text_override
607 color_picker.prop(self, "qcd_ogl_widget_tooltip_text")
609 # Column 2
610 col = overrides.column()
611 col.alignment = 'RIGHT'
613 # Inner
614 override = col.row(align=True)
615 override.alignment = 'RIGHT'
616 checkbox = override.row(align=True)
617 checkbox.alignment = 'RIGHT'
618 checkbox.label(text="Inner")
619 checkbox.prop(self, "tooltip_inner_override", text="")
620 color_picker = override.row(align=True)
621 color_picker.alignment = 'RIGHT'
622 color_picker.enabled = self.tooltip_inner_override
623 color_picker.prop(self, "qcd_ogl_widget_tooltip_inner")
625 # Outline
626 override = col.row(align=True)
627 override.alignment = 'RIGHT'
628 checkbox = override.row(align=True)
629 checkbox.alignment = 'RIGHT'
630 checkbox.label(text="Outline")
631 checkbox.prop(self, "tooltip_outline_override", text="")
632 color_picker = override.row(align=True)
633 color_picker.alignment = 'RIGHT'
634 color_picker.enabled = self.tooltip_outline_override
635 color_picker.prop(self, "qcd_ogl_widget_tooltip_outline")