Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVilém Duha <vilda.novak@gmail.com>2020-01-05 19:47:04 +0300
committerVilém Duha <vilda.novak@gmail.com>2020-01-07 13:43:44 +0300
commit6b094a1c626b5b14f56f4fae9aac64753e41a00e (patch)
treeadda9d67c19999cfc3d561c09c60a3996a01fbf5 /blenderkit
parent46fb3ac3a1990c6eaea0274c4987bf14de674a2b (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.py57
-rw-r--r--blenderkit/upload.py6
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):