[Bf-extensions-cvs] [6b094a1c] master: 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.
Vilém Duha
noreply at git.blender.org
Tue Jan 7 11:43:57 CET 2020
Commit: 6b094a1c626b5b14f56f4fae9aac64753e41a00e
Author: Vilém Duha
Date: Sun Jan 5 17:47:04 2020 +0100
Branches: master
https://developer.blender.org/rBA6b094a1c626b5b14f56f4fae9aac64753e41a00e
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.
===================================================================
M blenderkit/ui.py
M blenderkit/upload.py
===================================================================
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):
More information about the Bf-extensions-cvs
mailing list