From 1418c45a8aabe043ff678cd166052071b5690218 Mon Sep 17 00:00:00 2001 From: gandalf3 Date: Thu, 29 Jun 2017 21:11:43 -0700 Subject: [PATCH] GUI: demonstrate that blender has recieved results of the request --- __init__.py | 14 ++++++++------ pkg_ops.py | 6 +++++- pkg_ui.py | 11 ++++++++++- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/__init__.py b/__init__.py index 97b7ada..3e4fec5 100644 --- a/__init__.py +++ b/__init__.py @@ -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 diff --git a/pkg_ops.py b/pkg_ops.py index 746dd10..8c86de7 100644 --- a/pkg_ops.py +++ b/pkg_ops.py @@ -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'} diff --git a/pkg_ui.py b/pkg_ui.py index 4de5338..fd8c466 100644 --- a/pkg_ui.py +++ b/pkg_ui.py @@ -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)