[Bf-extensions-cvs] [89ce3f1e] master: BlenderKit: warn on assets from newer Blender versions in popup card

Vilem Duha noreply at git.blender.org
Fri Jul 23 16:02:59 CEST 2021


Commit: 89ce3f1e1ca9f715b790cb3901001782d27bebea
Author: Vilem Duha
Date:   Fri Jul 23 16:02:28 2021 +0200
Branches: master
https://developer.blender.org/rBA89ce3f1e1ca9f715b790cb3901001782d27bebea

BlenderKit: warn on assets from newer Blender versions in popup card

===================================================================

M	blenderkit/ui_panels.py
M	blenderkit/upload.py
M	blenderkit/utils.py

===================================================================

diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index d5b0e66b..c763ba9e 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -1401,7 +1401,7 @@ def numeric_to_str(s):
     return s
 
 
-def push_op_left(layout, strength =5):
+def push_op_left(layout, strength =3):
     for a in range(0, strength):
         layout.label(text='')
 
@@ -1418,7 +1418,7 @@ def label_or_url(layout, text='', tooltip='', url='', icon_value=None, icon=None
             op = layout.operator('wm.blenderkit_url', text=text)
         op.url = url
         op.tooltip = tooltip
-        push_op_left(layout)
+        push_op_left(layout, strength = 5)
 
         return
     if tooltip != '':
@@ -1429,8 +1429,9 @@ def label_or_url(layout, text='', tooltip='', url='', icon_value=None, icon=None
         else:
             op = layout.operator('wm.blenderkit_tooltip', text=text)
         op.tooltip = tooltip
+
         # these are here to move the text to left, since operators can only center text by default
-        push_op_left(layout)
+        push_op_left(layout, strength = 3)
         return
     if icon:
         layout.label(text=text, icon=icon)
@@ -1666,6 +1667,16 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
             date = self.asset_data['created'][:10]
             date = f"{date[8:10]}. {date[5:7]}. {date[:4]}"
             self.draw_property(box, 'Created', date)
+        if utils.asset_from_newer_blender_version(self.asset_data):
+            # row = box.row()
+            box.alert=True
+            self.draw_property(box,
+                               'Blender version',
+                               self.asset_data['sourceAppVersion'],
+                               # icon='ERROR',
+                               tooltip='Asset is from a newer Blender version and might work incorrectly in your scene',
+                               )
+            box.alert = False
         box.separator()
 
     def draw_author_area(self, context, layout, width=330):
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index d4570bf3..887ffe57 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -63,6 +63,7 @@ def get_app_version():
     return '%i.%i.%i' % (ver[0], ver[1], ver[2])
 
 
+
 def add_version(data):
     app_version = get_app_version()
     addon_version = version_checker.get_addon_version()
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index d5bdd84b..c16bc017 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -39,7 +39,9 @@ NORMAL_PRIORITY_CLASS = 0x00000020
 REALTIME_PRIORITY_CLASS = 0x00000100
 
 supported_material_click = ('MESH', 'CURVE', 'META', 'FONT', 'SURFACE', 'VOLUME', 'GPENCIL')
-supported_material_drag = ('MESH', 'CURVE', 'META', 'FONT','SURFACE', 'VOLUME', 'GPENCIL')
+supported_material_drag = ('MESH', 'CURVE', 'META', 'FONT', 'SURFACE', 'VOLUME', 'GPENCIL')
+
+
 # supported_material_drag = ('MESH')
 
 
@@ -185,8 +187,8 @@ def get_search_props():
     return props
 
 
-def get_active_asset_by_type(asset_type = 'model'):
-    asset_type =asset_type.lower()
+def get_active_asset_by_type(asset_type='model'):
+    asset_type = asset_type.lower()
     if asset_type == 'model':
         if bpy.context.view_layer.objects.active is not None:
             ob = get_active_model()
@@ -206,6 +208,7 @@ def get_active_asset_by_type(asset_type = 'model'):
             return b
     return None
 
+
 def get_active_asset():
     scene = bpy.context.scene
     ui_props = scene.blenderkitUI
@@ -341,8 +344,8 @@ def get_hidden_texture(name, force_reload=False):
     return t
 
 
-def img_to_preview(img, copy_original = False):
-    if bpy.app.version[0]>=3:
+def img_to_preview(img, copy_original=False):
+    if bpy.app.version[0] >= 3:
         img.preview_ensure()
     if not copy_original:
         return;
@@ -352,6 +355,7 @@ def img_to_preview(img, copy_original = False):
     # img.preview.icon_size = (img.size[0], img.size[1])
     # img.preview.icon_pixels_float = img.pixels[:]
 
+
 def get_hidden_image(tpath, bdata_name, force_reload=False, colorspace='sRGB'):
     if bdata_name[0] == '.':
         hidden_name = bdata_name
@@ -709,11 +713,13 @@ def name_update(props):
         # Here we actually rename assets datablocks, but don't do that with HDR's and possibly with others
         asset.name = fname
 
+
 def fmt_length(prop):
     prop = str(round(prop, 2))
     return prop
 
-def get_param(asset_data, parameter_name, default = None):
+
+def get_param(asset_data, parameter_name, default=None):
     if not asset_data.get('parameters'):
         # this can appear in older version files.
         return default
@@ -793,6 +799,7 @@ def profile_is_validator():
         return True
     return False
 
+
 def user_is_owner(asset_data=None):
     '''Checks if the current logged in user is owner of the asset'''
     profile = bpy.context.window_manager.get('bkit profile')
@@ -802,6 +809,15 @@ def user_is_owner(asset_data=None):
         return True
     return False
 
+
+def asset_from_newer_blender_version(asset_data):
+    bver = bpy.app.version
+    aver = asset_data['sourceAppVersion'].split('.')
+    print(aver,bver)
+    bver_f = bver[0] + bver[1] * .01 + bver[2] * .0001
+    aver_f = int(aver[0]) + int(aver[1]) * .01 + int(aver[2]) * .0001
+    return aver_f>bver_f
+
 def guard_from_crash():
     '''
     Blender tends to crash when trying to run some functions
@@ -861,10 +877,11 @@ def get_fake_context(context, area_type='VIEW_3D'):
         # print(w,a,r)
     return C_dict
 
+
 # def is_url(text):
 
 
-def label_multiline(layout, text='', icon='NONE', width=-1, max_lines = 10):
+def label_multiline(layout, text='', icon='NONE', width=-1, max_lines=10):
     '''
      draw a ui label, but try to split it in multiple lines.
 
@@ -882,7 +899,7 @@ def label_multiline(layout, text='', icon='NONE', width=-1, max_lines = 10):
     '''
     if text.strip() == '':
         return
-    text = text.replace('\r\n','\n')
+    text = text.replace('\r\n', '\n')
     lines = text.split('\n')
     if width > 0:
         threshold = int(width / 5.5)
@@ -891,7 +908,7 @@ def label_multiline(layout, text='', icon='NONE', width=-1, max_lines = 10):
     li = 0
     for l in lines:
         # if is_url(l):
-        li+=1
+        li += 1
         while len(l) > threshold:
             i = l.rfind(' ', 0, threshold)
             if i < 1:
@@ -907,10 +924,9 @@ def label_multiline(layout, text='', icon='NONE', width=-1, max_lines = 10):
             break;
         layout.label(text=l, icon=icon)
         icon = 'NONE'
-    if li>max_lines:
+    if li > max_lines:
         return True
 
 
-
 def trace():
     traceback.print_stack()



More information about the Bf-extensions-cvs mailing list