[Bf-extensions-cvs] [2259a24a] blender-v3.0-release: BlenderKit: new asset bar fixes and improvements

Vilem Duha noreply at git.blender.org
Mon Nov 8 11:59:56 CET 2021


Commit: 2259a24adb662c35ce0a9a3ee64e7e17c4a39d7c
Author: Vilem Duha
Date:   Fri Nov 5 08:40:56 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rBA2259a24adb662c35ce0a9a3ee64e7e17c4a39d7c

BlenderKit: new asset bar fixes and improvements

Reports are back and split in reports.py
Quality is drawn in tooltip
comments and notification improvements and fixes
Tips were updated

(cherry picked from commit 3222ff126c2193d7f9c8f0279d6459acd955f4c2)

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

M	blenderkit/__init__.py
M	blenderkit/asset_bar_op.py
M	blenderkit/bkit_oauth.py
M	blenderkit/bl_ui_widgets/bl_ui_draw_op.py
M	blenderkit/bl_ui_widgets/bl_ui_widget.py
M	blenderkit/categories.py
M	blenderkit/comments_utils.py
M	blenderkit/download.py
M	blenderkit/paths.py
M	blenderkit/ratings_utils.py
M	blenderkit/reports.py
M	blenderkit/rerequests.py
M	blenderkit/search.py
M	blenderkit/ui.py
M	blenderkit/ui_panels.py
M	blenderkit/upload.py
M	blenderkit/upload_bg.py
M	blenderkit/utils.py

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

diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 3b35b912..22afd2a1 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -60,6 +60,7 @@ if "bpy" in locals():
     upload = reload(upload)
     upload_bg = reload(upload_bg)
     utils = reload(utils)
+    reports = reload(reports)
 
     bl_ui_widget = reload(bl_ui_widget)
     bl_ui_label = reload(bl_ui_label)
@@ -99,6 +100,7 @@ else:
     from blenderkit import upload
     from blenderkit import upload_bg
     from blenderkit import utils
+    from blenderkit import reports
 
     from blenderkit.bl_ui_widgets import bl_ui_widget
     from blenderkit.bl_ui_widgets import bl_ui_label
@@ -270,7 +272,7 @@ def switch_search_results(self, context):
         wm['search results'] = wm.get('bkit brush search')
         wm['search results orig'] = wm.get('bkit brush search orig')
         if not (context.sculpt_object or context.image_paint_object):
-            ui.add_report(
+            reports.add_report(
                 'Switch to paint or sculpt mode to search in BlenderKit brushes.')
     # if wm['search results'] == None:
     #     wm['search results'] = []
@@ -1658,7 +1660,7 @@ class BlenderKitAddonPreferences(AddonPreferences):
     tips_on_start: BoolProperty(
         name="Show tips when starting blender",
         description="Show tips when starting blender",
-        default=False
+        default=True
     )
 
     search_in_header: BoolProperty(
diff --git a/blenderkit/asset_bar_op.py b/blenderkit/asset_bar_op.py
index 17638f4e..98b89f14 100644
--- a/blenderkit/asset_bar_op.py
+++ b/blenderkit/asset_bar_op.py
@@ -24,6 +24,7 @@ from bpy.props import (
     StringProperty
 )
 
+active_area_pointer = 0
 
 def get_area_height(self):
     if type(self.context) != dict:
@@ -64,7 +65,7 @@ def modal_inside(self, context, event):
         self.finish()
         return {'FINISHED'}
 
-    self.update_timer +=1
+    self.update_timer += 1
 
     if self.update_timer > self.update_timer_limit:
         self.update_timer = 0
@@ -84,7 +85,6 @@ def modal_inside(self, context, event):
                 else:
                     asset_button.progress_bar.visible = False
 
-
     if self.handle_widget_events(event):
         return {'RUNNING_MODAL'}
 
@@ -124,11 +124,16 @@ def asset_bar_invoke(self, context, event):
     self.register_handlers(args, context)
 
     self.update_timer_limit = 30
-    self.update_timer =0
+    self.update_timer = 0
     # print('adding timer')
     # self._timer = context.window_manager.event_timer_add(10.0, window=context.window)
-
+    global active_area_pointer
     context.window_manager.modal_handler_add(self)
+    self.active_window_pointer = context.window.as_pointer()
+    self.active_area_pointer = context.area.as_pointer()
+    active_area_pointer = context.area.as_pointer()
+    self.active_region_pointer = context.region.as_pointer()
+
     return {"RUNNING_MODAL"}
 
 
@@ -188,7 +193,7 @@ def get_tooltip_data(asset_data):
         if rc:
             rcount = min(rc.get('quality', 0), rc.get('workingHours', 0))
         if rcount > show_rating_threshold:
-            quality = round(asset_data['ratingsAverage'].get('quality'))
+            quality = str(round(asset_data['ratingsAverage'].get('quality')))
         tooltip_data = {
             'aname': aname,
             'author_text': author_text,
@@ -273,16 +278,32 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         self.authors_name = authors_name
         self.tooltip_widgets.append(authors_name)
 
-        gravatar_image = BL_UI_Image(self.tooltip_width - self.gravatar_size, self.tooltip_height - self.gravatar_size, 1, 1)
+        gravatar_image = BL_UI_Image(self.tooltip_width - self.gravatar_size, self.tooltip_height - self.gravatar_size,
+                                     1, 1)
         img_path = paths.get_addon_thumbnail_path('thumbnail_notready.jpg')
         gravatar_image.set_image(img_path)
         gravatar_image.set_image_size((self.gravatar_size - 1 * self.margin, self.gravatar_size - 1 * self.margin))
         gravatar_image.set_image_position((0, 0))
         self.gravatar_image = gravatar_image
         self.tooltip_widgets.append(gravatar_image)
-        offset_y = 16 + self.margin
-        # label = self.new_text('Left click or drag to append/link. Right click for more options.', self.margin*2, labels_start + offset_y,
-        #                       text_size=14)
+
+        quality_star = BL_UI_Image(self.margin, self.tooltip_height - self.margin - self.asset_name_text_size,
+                                     1, 1)
+        img_path = paths.get_addon_thumbnail_path('star_grey.png')
+        quality_star.set_image(img_path)
+        quality_star.set_image_size((self.asset_name_text_size, self.asset_name_text_size))
+        quality_star.set_image_position((0, 0))
+        # self.quality_star = quality_star
+        self.tooltip_widgets.append(quality_star)
+        label = self.new_text('', 2*self.margin+self.asset_name_text_size,
+                              self.tooltip_height - int(self.asset_name_text_size+ self.margin * .5),
+                              text_size=self.asset_name_text_size)
+        self.tooltip_widgets.append(label)
+        self.quality_label = label
+
+        # label = self.new_text('Right click for menu.', self.margin,
+        #                       self.tooltip_height - int(self.author_text_size) - self.margin,
+        #                       text_size=int(self.author_text_size*.7))
         # self.tooltip_widgets.append(label)
 
     def hide_tooltip(self):
@@ -383,7 +404,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         if not bpy.context.preferences.system.use_region_overlap:
             reg_multiplier = 0
         for r in area.regions:
-            if r.type == 'UI' :
+            if r.type == 'UI':
                 ui_width = r.width * reg_multiplier
             if r.type == 'TOOLS':
                 tools_width = r.width * reg_multiplier
@@ -409,13 +430,17 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         # self.bar_y = region.height - ui_props.bar_y_offset * ui_scale
         self.bar_y = ui_props.bar_y_offset * ui_scale
         if ui_props.down_up == 'UPLOAD':
-            self.reports_y = self.bar_y - 600
+            self.reports_y = region.height - self.bar_y - 600
+            ui_props.reports_y = region.height - self.bar_y - 600
             self.reports_x = self.bar_x
-        else:
-            self.reports_y = self.bar_y - self.bar_height - 100
-            self.reports_x = self.bar_x
-
+            ui_props.reports_x = self.bar_x
+        else:#ui.bar_y - ui.bar_height - 100
 
+            self.reports_y = region.height - self.bar_y - self.bar_height - 50
+            ui_props.reports_y =region.height -  self.bar_y - self.bar_height- 50
+            self.reports_x = self.bar_x
+            ui_props.reports_x = self.bar_x
+            # print(self.bar_y, self.bar_height, region.height)
 
     def update_layout(self, context, event):
         # restarting asset_bar completely since the widgets are too hard to get working with updates.
@@ -437,9 +462,10 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
             self.tooltip_panel.width = self.tooltip_width
             self.tooltip_image.width = self.tooltip_width
             self.tooltip_image.set_image_size((self.tooltip_width, self.tooltip_height))
-            self.gravatar_image.set_location(self.tooltip_width - self.gravatar_size, self.tooltip_height - self.gravatar_size)
+            self.gravatar_image.set_location(self.tooltip_width - self.gravatar_size,
+                                             self.tooltip_height - self.gravatar_size)
             self.authors_name.set_location(self.tooltip_width - self.gravatar_size - self.margin,
-            self.tooltip_height - self.author_text_size - self.margin)
+                                           self.tooltip_height - self.author_text_size - self.margin)
 
         # to hide arrows accordingly
         self.scroll_update()
@@ -491,6 +517,12 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         new_button.progress_bar = progress_bar
         self.progress_bars.append(progress_bar)
 
+        if utils.profile_is_validator():
+            red_alert = BL_UI_Widget(asset_x, asset_y, self.button_size, self.button_size)
+            red_alert.bg_color = (1.0, 0.0, 0.0, 0.0)
+            red_alert.visible = False
+            new_button.red_alert = red_alert
+            self.red_alerts.append(red_alert)
         # if result['downloaded'] > 0:
         #     ui_bgl.draw_rect(x, y, int(ui_props.thumb_size * result['downloaded'] / 100.0), 2, green)
 
@@ -506,6 +538,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         self.asset_buttons = []
         self.validation_icons = []
         self.progress_bars = []
+        self.red_alerts = []
         self.widgets_panel = []
 
         self.panel = BL_UI_Drag_Panel(0, 0, self.bar_width, self.bar_height)
@@ -608,6 +641,8 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
                     button.visible = False
                     button.validation_icon.visible = False
                     button.progress_bar.visible = False
+                if utils.profile_is_validator():
+                    button.red_alert.set_location(asset_x, asset_y)
                 i += 1
 
         for a in range(i, len(self.asset_buttons)):
@@ -641,6 +676,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         widgets_panel.extend(self.asset_buttons)
         widgets_panel.extend(self.validation_icons)
         widgets_panel.extend(self.progress_bars)
+        widgets_panel.extend(self.red_alerts)
 
         widgets = [self.panel]
 
@@ -702,6 +738,14 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
         # to hide arrows accordingly
         self.scroll_update()
 
+        self.window = context.window
+        self.area = context.area
+        self.scene = bpy.context.scene
+        # global active_window_pointer, active_area_pointer, active_region_pointer
+        # ui.active_window_pointer = self.window.as_pointer()

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list