Basic package browsing UI

This commit is contained in:
Ellwood Zwovic
2017-07-13 22:19:09 -07:00
parent 2e45bf637a
commit 29e2db8952
2 changed files with 44 additions and 14 deletions

View File

@@ -346,22 +346,37 @@ class USERPREF_PT_packages(bpy.types.Panel):
repo = context.user_preferences.addons[__package__].preferences['repo'] repo = context.user_preferences.addons[__package__].preferences['repo']
layout = self.layout layout = self.layout
# top = layout.row() main = layout.row()
# top.prop(context.window_manager, "addon_search", text="", icon='VIEWZOOM') spl = main.split(.12)
# top.prop( sidebar = spl.column(align=True)
pkgzone = spl.column()
def draw_package(layout): sidebar.label(text="Category")
pass sidebar.prop(context.window_manager, "addon_filter", text="")
top = pkgzone.row()
spl = top.split(.6)
spl.prop(context.window_manager, "package_search", text="", icon='VIEWZOOM')
spl_r = spl.row()
spl_r.prop(context.window_manager, "package_install_filter", expand=True)
def draw_package(package, layout):
pkgbox = layout.box()
spl = pkgbox.split(.8)
left = spl.column()
right = spl.row()
right.alignment = 'RIGHT'
lr1 = left.row()
lr2 = left.row()
lr1.label(text=pkg['bl_info'].get('name', "MISSING NAME"))
lr2.label(text=pkg['bl_info'].get('description', "MISSING DESCRIPTION"))
lr2.enabled = False #Give name more visual weight
right.scale_y = 2
right.operator(BPKG_OT_install.bl_idname).package_url="Asdf"
for pkg in repo['packages']: for pkg in repo['packages']:
row = layout.row() row = pkgzone.row()
draw_package(pkg, row)
pkgbox = row.box()
left = pkgbox.split(.7)
row1 = left.row()
row2 = left.row()
row1.label(text=pkg['bl_info'].get('name', "MISSING NAME"))
row2.label(text=pkg['bl_info'].get('description', "MISSING DESCRIPTION"))
class PackageManagerPreferences(bpy.types.AddonPreferences): class PackageManagerPreferences(bpy.types.AddonPreferences):
@@ -390,6 +405,19 @@ def register():
bpy.utils.register_class(BPKG_OT_refresh) bpy.utils.register_class(BPKG_OT_refresh)
bpy.utils.register_class(BPKG_OT_hang) bpy.utils.register_class(BPKG_OT_hang)
bpy.utils.register_class(USERPREF_PT_packages) bpy.utils.register_class(USERPREF_PT_packages)
bpy.types.WindowManager.package_search = bpy.props.StringProperty(
name="Search",
description="Filter packages by name",
options={'TEXTEDIT_UPDATE'}
)
bpy.types.WindowManager.package_install_filter = bpy.props.EnumProperty(
items=[('AVAILABLE', "Available", "All packages in selected repositories"),
('INSTALLED', "Installed", "All installed packages"),
('UPDATES', "Updates", "All installed packages for which there is a newer version availabe")
],
name="Install filter",
default='AVAILABLE',
)
bpy.utils.register_class(PackageManagerPreferences) bpy.utils.register_class(PackageManagerPreferences)
@@ -398,4 +426,6 @@ def unregister():
bpy.utils.unregister_class(BPKG_OT_refresh) bpy.utils.unregister_class(BPKG_OT_refresh)
bpy.utils.unregister_class(BPKG_OT_hang) bpy.utils.unregister_class(BPKG_OT_hang)
bpy.utils.unregister_class(USERPREF_PT_packages) bpy.utils.unregister_class(USERPREF_PT_packages)
del bpy.types.WindowManager.package_search
del bpy.types.WindowManager.package_install_filter
bpy.utils.unregister_class(PackageManagerPreferences) bpy.utils.unregister_class(PackageManagerPreferences)

View File

@@ -263,7 +263,7 @@ class Repository:
setattr(self, attr, value) setattr(self, attr, value)
@classmethod @classmethod
def from_dict(cls, repodict: dict) -> Repository: def from_dict(cls, repodict: dict):
""" """
Like `set_from_dict`, but immutable Like `set_from_dict`, but immutable
""" """