GUI: demonstrate that blender has recieved results of the request

This commit is contained in:
gandalf3
2017-06-29 21:11:43 -07:00
parent 0b506d8759
commit 1418c45a8a
3 changed files with 23 additions and 8 deletions

View File

@@ -10,17 +10,18 @@ class PackageSettings(bpy.types.PropertyGroup):
url = bpy.props.StringProperty(name="URL")
# class PackageManager:
# # For some reason accessing 'settings' PointerProperty via wm.package_manager.settings gives a value error
# # but accessing it when not stored in this class (wm.package_manager_settings) is fine?
# # settings = bpy.props.PointerProperty(type=PackageSettings)
# pipes = []
# # 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)
def register():
from . import (pkg_ops, pkg_ui)
bpy.utils.register_class(PackageSettings)
# bpy.types.WindowManager.package_manager = PackageManager()
bpy.types.WindowManager.package_manager_settings = bpy.props.PointerProperty(type=PackageSettings)
# bpy.types.WindowManager.pm_last_response_code = bpy.props.StringProperty(name="pm_last_response_code")
pkg_ops.register()
pkg_ui.register()
@@ -30,5 +31,6 @@ def unregister():
pkg_ops.unregister()
pkg_ui.unregister();
bpy.utils.unregister_class(PackageSettings)
del bpy.types.WindowManager.package_manager
del bpy.types.WindowManager.package_manager_settings
# del bpy.types.WindowManager.pm_last_response_code

View File

@@ -42,6 +42,7 @@ class SubprocessOperatorMixin:
else:
newdata = None
except EOFError:
print("done polling")
return {'FINISHED'}
if newdata is not None:
@@ -52,13 +53,16 @@ class PACKAGE_OT_fetch(SubprocessOperatorMixin, bpy.types.Operator):
bl_idname = "package.fetch"
bl_label = "Update package list(s)"
last_response = None
def __init__(self):
SubprocessOperatorMixin.__init__(self)
settings = bpy.context.window_manager.package_manager_settings
self.subprocess = Process(target=blenderpack.fetch, args=(settings.url, self.pipe))
def handle_response(self, resp):
print("your response:", resp)
self.__class__.last_response = resp
self.report({'INFO'}, "Request returned %s" % self.__class__.last_response)
def execute(self, context):
return {'FINISHED'}

View File

@@ -13,12 +13,21 @@ class USERPREF_PT_packages(bpy.types.Panel):
return (userpref.active_section == 'PACKAGES')
def draw(self, context):
wm = context.window_manager
# pm = wm.package_manager
# see comment in __init__.py
pm_settings = wm.package_manager_settings
# pm_last_code = wm.pm_last_response_code
layout = self.layout
row = layout.row()
row.prop(context.window_manager.package_manager_settings, "url")
row.prop(pm_settings, "url")
row.operator(pkg_ops.PACKAGE_OT_fetch.bl_idname, text="Fetch")
row = layout.row()
# just a demonstration
row.label(text="Last response: %s" % pkg_ops.PACKAGE_OT_fetch.last_response)
def register():
bpy.utils.register_class(USERPREF_PT_packages)