GUI: demonstrate that blender has recieved results of the request
This commit is contained in:
14
__init__.py
14
__init__.py
@@ -10,17 +10,18 @@ class PackageSettings(bpy.types.PropertyGroup):
|
|||||||
url = bpy.props.StringProperty(name="URL")
|
url = bpy.props.StringProperty(name="URL")
|
||||||
|
|
||||||
# class PackageManager:
|
# class PackageManager:
|
||||||
# # For some reason accessing 'settings' PointerProperty via wm.package_manager.settings gives a value error
|
# # For some reason accessing *Property objects stored in this class gives a TypeError:
|
||||||
# # but accessing it when not stored in this class (wm.package_manager_settings) is fine?
|
# # UILayout.prop(): error with argument 1, "data" - Function.data expected a AnyType type, not tuple
|
||||||
# # settings = bpy.props.PointerProperty(type=PackageSettings)
|
# # But accessing them when not stored in a class or dict is fine?
|
||||||
# pipes = []
|
# settings = bpy.props.PointerProperty(type=PackageSettings)
|
||||||
|
# last_response_code = bpy.props.PointerProperty(type=bpy.types.StringProperty)
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
from . import (pkg_ops, pkg_ui)
|
from . import (pkg_ops, pkg_ui)
|
||||||
|
|
||||||
bpy.utils.register_class(PackageSettings)
|
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.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_ops.register()
|
||||||
pkg_ui.register()
|
pkg_ui.register()
|
||||||
|
|
||||||
@@ -30,5 +31,6 @@ def unregister():
|
|||||||
pkg_ops.unregister()
|
pkg_ops.unregister()
|
||||||
pkg_ui.unregister();
|
pkg_ui.unregister();
|
||||||
bpy.utils.unregister_class(PackageSettings)
|
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
|
||||||
|
|
||||||
|
@@ -42,6 +42,7 @@ class SubprocessOperatorMixin:
|
|||||||
else:
|
else:
|
||||||
newdata = None
|
newdata = None
|
||||||
except EOFError:
|
except EOFError:
|
||||||
|
print("done polling")
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
if newdata is not None:
|
if newdata is not None:
|
||||||
@@ -52,13 +53,16 @@ class PACKAGE_OT_fetch(SubprocessOperatorMixin, bpy.types.Operator):
|
|||||||
bl_idname = "package.fetch"
|
bl_idname = "package.fetch"
|
||||||
bl_label = "Update package list(s)"
|
bl_label = "Update package list(s)"
|
||||||
|
|
||||||
|
last_response = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
SubprocessOperatorMixin.__init__(self)
|
SubprocessOperatorMixin.__init__(self)
|
||||||
settings = bpy.context.window_manager.package_manager_settings
|
settings = bpy.context.window_manager.package_manager_settings
|
||||||
self.subprocess = Process(target=blenderpack.fetch, args=(settings.url, self.pipe))
|
self.subprocess = Process(target=blenderpack.fetch, args=(settings.url, self.pipe))
|
||||||
|
|
||||||
def handle_response(self, resp):
|
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):
|
def execute(self, context):
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
11
pkg_ui.py
11
pkg_ui.py
@@ -13,12 +13,21 @@ class USERPREF_PT_packages(bpy.types.Panel):
|
|||||||
return (userpref.active_section == 'PACKAGES')
|
return (userpref.active_section == 'PACKAGES')
|
||||||
|
|
||||||
def draw(self, context):
|
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
|
layout = self.layout
|
||||||
|
|
||||||
row = layout.row()
|
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.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():
|
def register():
|
||||||
bpy.utils.register_class(USERPREF_PT_packages)
|
bpy.utils.register_class(USERPREF_PT_packages)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user