Split addon code up by purpose

This commit is contained in:
gandalf3
2017-07-07 17:56:49 -07:00
parent bbc1c8b3bf
commit fcf90a0e75
4 changed files with 103 additions and 134 deletions

View File

@@ -1,54 +1,26 @@
# -*- coding: utf-8 -*-
bl_info = {
'name': 'Package Manager',
'description': 'Testing package management',
'category': 'System',
'support': 'TESTING',
}
import bpy
from bpy.props import CollectionProperty
from bpy.types import PropertyGroup, Panel, UIList, AddonPreferences
class RepositoryProperty(PropertyGroup):
url = bpy.props.StringProperty(name="URL")
# from bpy.utils import register_class, unregister_class
import importlib
import sys
import logging
class PACKAGE_UL_repositories(UIList):
def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
split = layout.split(0.3)
split.prop(item, "name")
split.prop(item, "url")
def invoke(self, onctext, event):
pass
class PackagePreferences(AddonPreferences):
bl_idname = __package__
repositories = CollectionProperty(type=RepositoryProperty)
active_repository = bpy.props.IntProperty()
def draw(self, context):
layout = self.layout
row = layout.row()
row.template_list("PACKAGE_UL_repositories", "", self, "repositories", self, "active_repository")
col = row.column(align=True)
col.operator("package.add_repository", icon="ZOOMIN", text="")
col.operator("package.remove_repository", icon="ZOOMOUT", text="")
# class PackageManager:
# # For some reason accessing *Property objects stored in this class gives a TypeError:
# # UILayout.prop(): error with argument 1, "data" - Function.data expected a AnyType type, not tuple
# # But accessing them when not stored in a class or dict is fine?
# settings = bpy.props.PointerProperty(type=PackageSettings)
# last_response_code = bpy.props.PointerProperty(type=bpy.types.StringProperty)
log = logging.getLogger(__name__)
def register():
# Reload support
import sys
if '%s.pkg_ops' % __name__ in sys.modules:
import importlib
if '%s.blender_common' % __name__ in sys.modules:
def reload_mod(name):
print("Reloading %s" % name)
log.debug("Reloading %s", name)
modname = '%s.%s' % (__name__, name)
try:
old_module = sys.modules[modname]
@@ -61,26 +33,13 @@ def register():
sys.modules[modname] = new_module
return new_module
pkg_ops = reload_mod('pkg_ops')
pkg_ui = reload_mod('pkg_ui')
blender_common = reload_mod('blender_common')
else:
from . import (pkg_ops, pkg_ui)
from . import blender_common
bpy.utils.register_class(RepositoryProperty)
bpy.utils.register_class(PACKAGE_UL_repositories)
bpy.utils.register_class(PackagePreferences)
pkg_ops.register()
pkg_ui.register()
blender_common.register()
def unregister():
from . import (pkg_ops, pkg_ui)
pkg_ops.unregister()
pkg_ui.unregister();
bpy.utils.unregister_class(RepositoryProperty)
bpy.utils.unregister_class(PACKAGE_UL_repositories)
bpy.utils.unregister_class(PackagePreferences)
del bpy.types.Scene.custom
del bpy.types.Scene.custom_idx
blender_common.unregister()