Skip to content

Commit 827a7b9

Browse files
committed
Feat: modify tools
1 parent a9d07d0 commit 827a7b9

13 files changed

+414
-447
lines changed

__init__.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
from . import preferences, public
2-
from .tool.addon_search import remember_expanded
3-
1+
from . import registration
42
bl_info = {
53
"name": "Development Kit Tool",
64
"version": (1, 0, 1),
@@ -14,11 +12,8 @@
1412

1513

1614
def register():
17-
public.PublicClass.clear_cache()
18-
preferences.register()
15+
registration.register()
1916

2017

2118
def unregister():
22-
remember_expanded()
23-
public.PublicClass.clear_cache()
24-
preferences.unregister()
19+
registration.unregister()

preferences.py

Lines changed: 33 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,72 @@
11
import bpy.utils
2-
from bpy.props import BoolProperty, IntProperty, StringProperty, CollectionProperty
2+
from bpy.props import BoolProperty, StringProperty, CollectionProperty
33
from bpy.types import AddonPreferences
44

5-
from .public import PublicClass
6-
from .tool import (auto_reload_script,
7-
custom_key,
8-
fast_open_addon_code,
9-
restart_blender,
10-
addon_search,
11-
)
5+
from .tool import update_by_tool_name
6+
from .tool.auto_reload_script import AutoReloadScriptPreferences
127

13-
tool_mod = {'fast_open_addon_code': fast_open_addon_code,
14-
'enabled_reload_script': auto_reload_script,
15-
'restart_blender': restart_blender,
16-
'custom_key': custom_key,
17-
'save_addon_search': addon_search
18-
}
198

20-
21-
def update_tool(un_register=False):
22-
pref = PublicClass.pref_()
23-
for prop_name, tool in tool_mod.items():
24-
is_enable = getattr(pref, prop_name, False)
25-
if un_register or (not is_enable):
26-
tool.unregister()
27-
elif is_enable:
28-
tool.register()
29-
30-
31-
class ShowExpanded(bpy.types.PropertyGroup):
9+
class ShowExpandedItem(bpy.types.PropertyGroup):
10+
"""Used to record the expansion status of the addon"""
3211
show_expanded: BoolProperty(default=False)
3312

3413

35-
class ToolPreferences(AddonPreferences):
14+
class ToolPreferences(AddonPreferences, AutoReloadScriptPreferences):
3615
bl_idname = __package__
3716

38-
@staticmethod
39-
def update_by_tool_name(tool_name):
40-
"""Change prop update tool"""
41-
42-
def update(self, context):
43-
prop = getattr(self, tool_name, None)
44-
if prop:
45-
tool_mod[tool_name].register()
46-
elif prop is False:
47-
tool_mod[tool_name].unregister()
48-
49-
return update
50-
5117
fast_open_addon_code: BoolProperty(
5218
default=False,
53-
name='Feat Open Addon Script or Folder',
54-
description='Rewrite the drawing method of the addon section,'
55-
' and display it in the expansion of the addon',
56-
update=update_by_tool_name('fast_open_addon_code'), )
19+
name="Feat Open Addon Script or Folder",
20+
description="Rewrite the drawing method of the addon section,"
21+
" and display it in the expansion of the addon",
22+
update=update_by_tool_name("fast_open_addon_code"))
5723
restart_blender: BoolProperty(
5824
default=True,
59-
name='Restart Blender',
60-
description='Enabled Multiple Blender,or Restart Blender',
61-
update=update_by_tool_name('restart_blender'),
25+
name="Restart Blender",
26+
description="Enabled Multiple Blender,or Restart Blender",
27+
update=update_by_tool_name("restart_blender"),
6228
)
6329
custom_key: BoolProperty(
6430
default=True,
65-
name='Development Key',
66-
description='alt+Space Toggle Full Screen'
67-
'ctrl+alt+MiddleMouse Show Console'
68-
'ctrl+alt+RightMouse Switch User Translate Interface'
69-
'ctrl+alt+AccentGrave Save Home File',
70-
update=update_by_tool_name('custom_key'),
31+
name="Development Key",
32+
description="alt+Space Toggle Full Screen"
33+
"ctrl+alt+MiddleMouse Show Console"
34+
"ctrl+alt+RightMouse Switch User Translate Interface"
35+
"ctrl+alt+AccentGrave Save Home File",
36+
update=update_by_tool_name("custom_key"),
7137
)
7238
save_addon_search: BoolProperty(
7339
default=True,
74-
name='Save addon search',
75-
description='',
76-
update=update_by_tool_name('save_addon_search'),
40+
name="Save addon search",
41+
description="",
42+
update=update_by_tool_name("save_addon_search"),
7743
)
7844
addon_search: StringProperty()
79-
addon_show_expanded: CollectionProperty(type=ShowExpanded)
8045

8146
enabled_reload_script: BoolProperty(
8247
default=True,
83-
name='ReLoad Script Tool',
84-
description='',
85-
update=update_by_tool_name('enabled_reload_script'),
48+
name="ReLoad Script Tool",
49+
description="",
50+
update=update_by_tool_name("enabled_reload_script"),
8651
)
8752

88-
# Auto Reload
89-
def update_reload_script(self, context):
90-
text = context.space_data.text
91-
try:
92-
bpy.ops.text.reload()
93-
if self.auto_run_script:
94-
try:
95-
bpy.ops.text.run_script()
96-
print(f'Reload Script {text.name},and Run Script!!!')
97-
except Exception as e:
98-
print('Run Error!!', e.args)
99-
except Exception as e:
100-
print(f'Reload Script {text.name} Error,Perhaps this script does not exist', e.args)
101-
self.auto_reload_script = False
102-
103-
reload_script_number: IntProperty(default=True,
104-
update=update_reload_script)
105-
auto_run_script: BoolProperty(name='Auto run script switch, only when auto reload script is turned on can it run',
106-
options={'SKIP_SAVE'},
107-
default=False)
108-
109-
auto_reload_script: BoolProperty(name="Whether to automatically reload scripts", default=True, )
53+
addon_show_expanded: CollectionProperty(type=ShowExpandedItem)
11054

11155
def draw(self, context):
112-
for i in ('fast_open_addon_code',
113-
'enabled_reload_script',
114-
'restart_blender',
115-
'custom_key',
116-
'save_addon_search',
56+
for i in ("fast_open_addon_code",
57+
"enabled_reload_script",
58+
"restart_blender",
59+
"custom_key",
60+
"save_addon_search",
11761
):
11862
self.layout.prop(self, i)
11963

12064

12165
def register():
122-
bpy.utils.register_class(ShowExpanded)
66+
bpy.utils.register_class(ShowExpandedItem)
12367
bpy.utils.register_class(ToolPreferences)
124-
update_tool()
12568

12669

12770
def unregister():
12871
bpy.utils.unregister_class(ToolPreferences)
129-
bpy.utils.unregister_class(ShowExpanded)
130-
update_tool(un_register=True)
72+
bpy.utils.unregister_class(ShowExpandedItem)

registration.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from . import preferences
2+
from . import tool
3+
from .utils import clear_cache
4+
5+
DEVELOPMENT_KEY_MAPS = {
6+
"Window": [
7+
{"idname": "wm.window_fullscreen_toggle", "type": "SPACE", "value": "PRESS", "alt": True},
8+
{"idname": "wm.console_toggle", "type": "MIDDLEMOUSE", "value": "PRESS", "ctrl": True, "alt": True},
9+
{"idname": "wm.save_homefile", "type": "ACCENT_GRAVE", "value": "PRESS", "ctrl": True, "alt": True},
10+
{"idname": "wm.context_toggle", "type": "RIGHTMOUSE", "value": "PRESS", "ctrl": True, "alt": True,
11+
"properties": {"data_path": "preferences.view.use_translate_interface"}
12+
},
13+
],
14+
"Screen": [
15+
{"idname": "screen.userpref_show", "type": "U", "value": "PRESS", "ctrl": True, "alt": True},
16+
{"idname": "screen.region_flip", "type": "RIGHTMOUSE", "value": "PRESS", "shift": True, "ctrl": True}
17+
]
18+
}
19+
20+
21+
def register():
22+
clear_cache()
23+
preferences.register()
24+
tool.register()
25+
26+
27+
def unregister():
28+
preferences.unregister()
29+
tool.unregister()

tool/__init__.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from . import (auto_reload_script,
2+
custom_key,
3+
fast_open_addon_code,
4+
restart_blender,
5+
addon_search,
6+
)
7+
8+
tool_mod = {'fast_open_addon_code': fast_open_addon_code,
9+
'enabled_reload_script': auto_reload_script,
10+
'restart_blender': restart_blender,
11+
'custom_key': custom_key,
12+
'save_addon_search': addon_search
13+
}
14+
from ..utils import get_pref
15+
16+
17+
def update_tool(un_register=False):
18+
pref = get_pref()
19+
for prop_name, tool in tool_mod.items():
20+
is_enable = getattr(pref, prop_name, False)
21+
if un_register or (not is_enable):
22+
tool.unregister()
23+
elif is_enable:
24+
tool.register()
25+
26+
27+
def update_by_tool_name(tool_name: str) -> function:
28+
"""Change prop update tool"""
29+
30+
def update(self, context):
31+
prop = getattr(self, tool_name, None)
32+
if prop:
33+
tool_mod[tool_name].register()
34+
elif prop is False:
35+
tool_mod[tool_name].unregister()
36+
37+
return update
38+
39+
40+
def register():
41+
...
42+
43+
44+
def unregister():
45+
...

tool/addon_search.py

Lines changed: 0 additions & 75 deletions
This file was deleted.

0 commit comments

Comments
 (0)