Add simple preferences display (just good enough to match functionality with addons section)
This commit is contained in:
@@ -538,6 +538,7 @@ else:
|
|||||||
|
|
||||||
displayed_packages = []
|
displayed_packages = []
|
||||||
expanded_packages = []
|
expanded_packages = []
|
||||||
|
preference_package = None
|
||||||
|
|
||||||
redraw = True
|
redraw = True
|
||||||
|
|
||||||
@@ -549,7 +550,6 @@ else:
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
wm = context.window_manager
|
wm = context.window_manager
|
||||||
prefs = context.user_preferences.addons[__package__].preferences
|
|
||||||
|
|
||||||
mainrow = layout.row()
|
mainrow = layout.row()
|
||||||
spl = mainrow.split(.2)
|
spl = mainrow.split(.2)
|
||||||
@@ -649,6 +649,7 @@ else:
|
|||||||
|
|
||||||
def draw_package(metapkg: ConsolidatedPackage, layout: bpy.types.UILayout): #{{{
|
def draw_package(metapkg: ConsolidatedPackage, layout: bpy.types.UILayout): #{{{
|
||||||
"""Draws the given package"""
|
"""Draws the given package"""
|
||||||
|
pkg = metapkg.get_display_version()
|
||||||
|
|
||||||
def draw_operators(metapkg, layout): # {{{
|
def draw_operators(metapkg, layout): # {{{
|
||||||
"""
|
"""
|
||||||
@@ -665,10 +666,12 @@ else:
|
|||||||
).package_name=metapkg.name
|
).package_name=metapkg.name
|
||||||
layout.separator()
|
layout.separator()
|
||||||
|
|
||||||
# layout.operator(
|
#TODO: only show preferences button if addon has preferences to show
|
||||||
# PACKAGE_OT_toggle_preferences.bl_idname,
|
if pkg.enabled:
|
||||||
# text="Preferences",
|
layout.operator(
|
||||||
# ).package_name=metapkg.name
|
WM_OT_package_toggle_preferences.bl_idname,
|
||||||
|
text="Preferences",
|
||||||
|
).package_name=metapkg.name
|
||||||
layout.operator(
|
layout.operator(
|
||||||
PACKAGE_OT_uninstall.bl_idname,
|
PACKAGE_OT_uninstall.bl_idname,
|
||||||
text="Uninstall",
|
text="Uninstall",
|
||||||
@@ -680,6 +683,24 @@ else:
|
|||||||
).package_name=metapkg.name
|
).package_name=metapkg.name
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
def draw_preferences(pkg: Package, layout: bpy.types.UILayout):
|
||||||
|
"""Draw the package's preferences in the given layout"""
|
||||||
|
addon_preferences = context.user_preferences.addons[pkg.module_name].preferences
|
||||||
|
if addon_preferences is not None:
|
||||||
|
draw = getattr(addon_preferences, "draw", None)
|
||||||
|
if draw is not None:
|
||||||
|
addon_preferences_class = type(addon_preferences)
|
||||||
|
box_prefs = layout.box()
|
||||||
|
box_prefs.label("Preferences:")
|
||||||
|
addon_preferences_class.layout = box_prefs
|
||||||
|
try:
|
||||||
|
draw(context)
|
||||||
|
except:
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
|
box_prefs.label(text="Error (see console)", icon='ERROR')
|
||||||
|
del addon_preferences_class.layout
|
||||||
|
|
||||||
def collapsed(metapkg, layout):# {{{
|
def collapsed(metapkg, layout):# {{{
|
||||||
"""Draw collapsed version of package layout"""
|
"""Draw collapsed version of package layout"""
|
||||||
pkg = metapkg.get_display_version()
|
pkg = metapkg.get_display_version()
|
||||||
@@ -798,6 +819,7 @@ else:
|
|||||||
for version in metapkg.versions:
|
for version in metapkg.versions:
|
||||||
subvbox = pkgbox.box()
|
subvbox = pkgbox.box()
|
||||||
draw_version(subvbox, version)
|
draw_version(subvbox, version)
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
is_expanded = (metapkg.name in self.expanded_packages)
|
is_expanded = (metapkg.name in self.expanded_packages)
|
||||||
@@ -815,22 +837,9 @@ else:
|
|||||||
else:
|
else:
|
||||||
collapsed(metapkg, row)# }}}
|
collapsed(metapkg, row)# }}}
|
||||||
|
|
||||||
# addon_preferences = userpref.addons[module_name].preferences
|
if pkg.installed and pkg.enabled and pkg.name == USERPREF_PT_packages.preference_package:
|
||||||
# if addon_preferences is not None:
|
draw_preferences(pkg, pkgbox)
|
||||||
# draw = getattr(addon_preferences, "draw", None)
|
|
||||||
# if draw is not None:
|
|
||||||
# addon_preferences_class = type(addon_preferences)
|
|
||||||
# box_prefs = col_box.box()
|
|
||||||
# box_prefs.label("Preferences:")
|
|
||||||
# addon_preferences_class.layout = box_prefs
|
|
||||||
# try:
|
|
||||||
# draw(context)
|
|
||||||
# except:
|
|
||||||
# import traceback
|
|
||||||
# traceback.print_exc()
|
|
||||||
# box_prefs.label(text="Error (see console)", icon='ERROR')
|
|
||||||
# del addon_preferences_class.layout
|
|
||||||
#
|
|
||||||
|
|
||||||
def center_message(layout, msg: str):
|
def center_message(layout, msg: str):
|
||||||
"""draw a label in the center of an extra-tall row"""
|
"""draw a label in the center of an extra-tall row"""
|
||||||
@@ -887,6 +896,24 @@ else:
|
|||||||
|
|
||||||
return {'FINISHED'}# }}}
|
return {'FINISHED'}# }}}
|
||||||
|
|
||||||
|
class WM_OT_package_toggle_preferences(bpy.types.Operator):# {{{
|
||||||
|
bl_idname = "wm.package_toggle_preferences"
|
||||||
|
bl_label = ""
|
||||||
|
bl_description = "Toggle display of package preferences"
|
||||||
|
bl_options = {'INTERNAL'}
|
||||||
|
|
||||||
|
package_name = bpy.props.StringProperty(
|
||||||
|
name="Package Name",
|
||||||
|
description="Name of package whos preferences to display",
|
||||||
|
)
|
||||||
|
|
||||||
|
def invoke(self, context, event):
|
||||||
|
if USERPREF_PT_packages.preference_package == self.package_name:
|
||||||
|
USERPREF_PT_packages.preference_package = None
|
||||||
|
else:
|
||||||
|
USERPREF_PT_packages.preference_package = self.package_name
|
||||||
|
return {'FINISHED'}# }}}
|
||||||
|
|
||||||
class PACKAGE_OT_toggle_enabled(bpy.types.Operator):# {{{
|
class PACKAGE_OT_toggle_enabled(bpy.types.Operator):# {{{
|
||||||
bl_idname = "package.toggle_enabled"
|
bl_idname = "package.toggle_enabled"
|
||||||
bl_label = ""
|
bl_label = ""
|
||||||
@@ -1018,6 +1045,7 @@ else:
|
|||||||
bpy.utils.register_class(PACKAGE_OT_refresh)
|
bpy.utils.register_class(PACKAGE_OT_refresh)
|
||||||
bpy.utils.register_class(USERPREF_PT_packages)
|
bpy.utils.register_class(USERPREF_PT_packages)
|
||||||
bpy.utils.register_class(WM_OT_package_toggle_expand)
|
bpy.utils.register_class(WM_OT_package_toggle_expand)
|
||||||
|
bpy.utils.register_class(WM_OT_package_toggle_preferences)
|
||||||
bpy.types.WindowManager.package_search = bpy.props.StringProperty(
|
bpy.types.WindowManager.package_search = bpy.props.StringProperty(
|
||||||
name="Search",
|
name="Search",
|
||||||
description="Filter packages by name",
|
description="Filter packages by name",
|
||||||
@@ -1055,6 +1083,7 @@ else:
|
|||||||
bpy.utils.unregister_class(PACKAGE_OT_refresh)
|
bpy.utils.unregister_class(PACKAGE_OT_refresh)
|
||||||
bpy.utils.unregister_class(USERPREF_PT_packages)
|
bpy.utils.unregister_class(USERPREF_PT_packages)
|
||||||
bpy.utils.unregister_class(WM_OT_package_toggle_expand)
|
bpy.utils.unregister_class(WM_OT_package_toggle_expand)
|
||||||
|
bpy.utils.unregister_class(WM_OT_package_toggle_preferences)
|
||||||
del bpy.types.WindowManager.package_search
|
del bpy.types.WindowManager.package_search
|
||||||
del bpy.types.WindowManager.package_install_filter
|
del bpy.types.WindowManager.package_install_filter
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user