diff options
author | Vilém Duha <vilda.novak@gmail.com> | 2020-01-05 19:47:04 +0300 |
---|---|---|
committer | Vilém Duha <vilda.novak@gmail.com> | 2020-01-07 13:43:44 +0300 |
commit | 6b094a1c626b5b14f56f4fae9aac64753e41a00e (patch) | |
tree | adda9d67c19999cfc3d561c09c60a3996a01fbf5 /blenderkit | |
parent | 46fb3ac3a1990c6eaea0274c4987bf14de674a2b (diff) |
BlenderKit: fix dual window problem, enable to run asset bar with fixed context
This will possibly be used for opening the asset bar after first search.
Diffstat (limited to 'blenderkit')
-rw-r--r-- | blenderkit/ui.py | 57 | ||||
-rw-r--r-- | blenderkit/upload.py | 6 |
2 files changed, 52 insertions, 11 deletions
diff --git a/blenderkit/ui.py b/blenderkit/ui.py index 12c1138b..ab31c07a 100644 --- a/blenderkit/ui.py +++ b/blenderkit/ui.py @@ -597,9 +597,11 @@ def draw_tooltip_old(x, y, text='', author='', img=None): def draw_callback_2d(self, context): a = context.area + w = context.window try: # self.area might throw error just by itself. a1 = self.area + w1 = self.window go = True if len(a.spaces[0].region_quadviews) > 0: # print(dir(bpy.context.region_data)) @@ -610,7 +612,7 @@ def draw_callback_2d(self, context): # bpy.types.SpaceView3D.draw_handler_remove(self._handle_2d, 'WINDOW') # bpy.types.SpaceView3D.draw_handler_remove(self._handle_3d, 'WINDOW') go = False - if go and a == a1: + if go and a == a1 and w == w1: props = context.scene.blenderkitUI if props.down_up == 'SEARCH': @@ -1149,7 +1151,25 @@ def update_ui_size(area, region): ui.rating_x = ui.bar_x ui.rating_y = ui.bar_y - ui.bar_height +def get_largest_3dview(): + maxsurf = 0 + maxa = None + maxw = None + region = None + for w in bpy.context.window_manager.windows: + screen = w.screen + for a in screen.areas: + if a.type == 'VIEW_3D': + asurf = a.width * a.height + if asurf>maxsurf: + maxa = a + maxw = w + maxsurf = asurf + for r in a.regions: + if r.type == 'WINDOW': + region = r + return maxw, maxa, region class AssetBarOperator(bpy.types.Operator): @@ -1230,12 +1250,9 @@ class AssetBarOperator(bpy.types.Operator): update_ui_size(self.area, self.region) - # search.timer_update() - # download.timer_update() - # bg_blender.bg_update() - if context.region != self.region: - print(time.time(), 'pass trough because of region') + print(time.time(), 'pass through because of region') + print(context.region.type, self.region.type) return {'PASS_THROUGH'} # this was here to check if sculpt stroke is running, but obviously that didn't help, @@ -1660,6 +1677,7 @@ class AssetBarOperator(bpy.types.Operator): if context.area.type == 'VIEW_3D': # the arguments we pass the the callback args = (self, context) + self.window = context.window self.area = context.area self.scene = bpy.context.scene self.has_quad_views = len(bpy.context.area.spaces[0].region_quadviews) > 0 @@ -1702,9 +1720,31 @@ class TransferBlenderkitData(bpy.types.Operator): source_ob.property_unset('blenderkit') return {'FINISHED'} +class RunAssetBarWithContext(bpy.types.Operator): + """Regenerate cobweb""" + bl_idname = "object.run_assetbar_fix_context" + bl_label = "BlnenderKit assetbar with fixed context" + bl_description = "Run assetbar with fixed context" + bl_options = {'REGISTER', 'UNDO', 'INTERNAL'} + + # def modal(self, context, event): + # return {'RUNNING_MODAL'} + + + + def invoke(self, context, event): + C_dict = bpy.context.copy() + C_dict.update(region = 'WINDOW') + if context.area.type != 'VIEW_3D': + w,a,r = get_largest_3dview() + override = {'window': w, 'screen': w.screen, 'area': a, 'region' : r} + C_dict.update(override) + bpy.ops.view3d.blenderkit_asset_bar(C_dict, 'INVOKE_REGION_WIN', keep_running=True, do_search=False) + return {'RUNNING_MODAL'} classess = ( AssetBarOperator, + RunAssetBarWithContext, TransferBlenderkitData ) @@ -1732,7 +1772,10 @@ def register_ui(): kmi = km.keymap_items.new(AssetBarOperator.bl_idname, 'SEMI_COLON', 'PRESS', ctrl=False, shift=False) kmi.properties.keep_running = False kmi.properties.do_search = False - + addon_keymapitems.append(kmi) + #auto open after searching: + kmi = km.keymap_items.new(RunAssetBarWithContext.bl_idname, 'SEMI_COLON', 'PRESS',\ + ctrl=True, shift=True, alt = True) addon_keymapitems.append(kmi) diff --git a/blenderkit/upload.py b/blenderkit/upload.py index 44bbb313..3d46c106 100644 --- a/blenderkit/upload.py +++ b/blenderkit/upload.py @@ -465,7 +465,7 @@ def get_upload_data(self, context, asset_type): return export_data, upload_data, eval_path_computing, eval_path_state, eval_path, props -def verification_status_change(self, context, asset_id, state): +def verification_status_change(asset_id, state): user_preferences = bpy.context.preferences.addons['blenderkit'].preferences upload_data = { "verificationStatus": state @@ -474,8 +474,6 @@ def verification_status_change(self, context, asset_id, state): headers = utils.get_headers(user_preferences.api_key) try: r = rerequests.patch(url, json=upload_data, headers=headers, verify=True) # files = files, - # print('changed status ') - # print(r.text) except requests.exceptions.RequestException as e: print(e) return {'CANCELLED'} @@ -825,7 +823,7 @@ class AssetVerificationStatusChange(Operator): # layout.prop(self, 'state') def execute(self, context): - result = verification_status_change(self, context, self.asset_id, self.state) + result = verification_status_change(self.asset_id, self.state) return result def invoke(self, context, event): |