[Bf-blender-cvs] [c08d8474880] master: UI: Status Bar Statistics and Other Options

Harley Acheson noreply at git.blender.org
Sat Jul 18 16:50:40 CEST 2020


Commit: c08d847488048e9d5233bfd14e363de574332846
Author: Harley Acheson
Date:   Sat Jul 18 07:49:25 2020 -0700
Branches: master
https://developer.blender.org/rBc08d847488048e9d5233bfd14e363de574332846

UI: Status Bar Statistics and Other Options

Status Bar can show scene statistics, memory usage, version, etc set by context menu. Part two of T75672.

Differential Revision: https://developer.blender.org/D7557

Reviewed by Julian Eisel

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

M	release/datafiles/userdef/userdef_default.c
M	release/scripts/startup/bl_ui/space_statusbar.py
M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenloader/intern/versioning_userdef.c
M	source/blender/editors/include/ED_info.h
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_info/info_stats.c
M	source/blender/gpu/intern/gpu_extensions.c
M	source/blender/makesdna/DNA_layer_types.h
M	source/blender/makesdna/DNA_screen_types.h
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/makesrna/intern/rna_screen.c
M	source/blender/makesrna/intern/rna_userdef.c

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

diff --git a/release/datafiles/userdef/userdef_default.c b/release/datafiles/userdef/userdef_default.c
index 31d0eb8e923..fbdb226ab6d 100644
--- a/release/datafiles/userdef/userdef_default.c
+++ b/release/datafiles/userdef/userdef_default.c
@@ -229,6 +229,8 @@ const UserDef U_default = {
 
     .collection_instance_empty_size = 1.0f,
 
+    .statusbar_flag = STATUSBAR_SHOW_VERSION,
+
     .runtime =
         {
             .is_dirty = 0,
diff --git a/release/scripts/startup/bl_ui/space_statusbar.py b/release/scripts/startup/bl_ui/space_statusbar.py
index 4984372eed3..cbf72a7bc59 100644
--- a/release/scripts/startup/bl_ui/space_statusbar.py
+++ b/release/scripts/startup/bl_ui/space_statusbar.py
@@ -31,17 +31,20 @@ class STATUSBAR_HT_header(Header):
 
         layout.separator_spacer()
 
-        # messages
-        layout.template_reports_banner()
-        layout.template_running_jobs()
-
+        # Nothing in the center.
         layout.separator_spacer()
 
-        # stats
-        scene = context.scene
-        view_layer = context.view_layer
+        row = layout.row()
+        row.alignment = 'RIGHT'
+
+        # Stats & Info
+        row.label(text=context.screen.statusbar_info(), translate=False)
+
+        # Messages
+        row.template_reports_banner()
 
-        layout.label(text=scene.statistics(view_layer), translate=False)
+        # Progress Bar
+        row.template_running_jobs()
 
 
 classes = (
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 66c98b81e0e..03f85578b6e 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -283,6 +283,22 @@ class USERPREF_PT_interface_temporary_windows(InterfacePanel, CenterAlignMixIn,
         col.prop(view, "filebrowser_display_type", text="File Browser")
 
 
+class USERPREF_PT_interface_statusbar(InterfacePanel, CenterAlignMixIn, Panel):
+    bl_label = "Status Bar"
+    bl_parent_id = "USERPREF_PT_interface_editors"
+    bl_options = {'DEFAULT_CLOSED'}
+
+    def draw_centered(self, context, layout):
+        prefs = context.preferences
+        view = prefs.view
+
+        col = layout.column(heading="Show")
+        col.prop(view, "show_statusbar_stats", text="Scene Statistics")
+        col.prop(view, "show_statusbar_memory", text="System Memory")
+        col.prop(view, "show_statusbar_vram", text="Video Memory")
+        col.prop(view, "show_statusbar_version", text="Blender Version")
+
+
 class USERPREF_PT_interface_menus(InterfacePanel, Panel):
     bl_label = "Menus"
     bl_options = {'DEFAULT_CLOSED'}
@@ -2189,6 +2205,7 @@ classes = (
     USERPREF_PT_interface_display,
     USERPREF_PT_interface_editors,
     USERPREF_PT_interface_temporary_windows,
+    USERPREF_PT_interface_statusbar,
     USERPREF_PT_interface_translation,
     USERPREF_PT_interface_text,
     USERPREF_PT_interface_menus,
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 57f22a8d709..14fb1091045 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -34,7 +34,7 @@ extern "C" {
 /* Blender major and minor version. */
 #define BLENDER_VERSION 290
 /* Blender patch version for bugfix releases. */
-#define BLENDER_VERSION_PATCH 0
+#define BLENDER_VERSION_PATCH 1
 /** Blender release cycle stage: alpha/beta/rc/release. */
 #define BLENDER_VERSION_CYCLE alpha
 
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 1b0e41ec54a..9a3f4be6786 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -753,6 +753,10 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
     userdef->transopts &= ~USER_DOTRANSLATE_DEPRECATED;
   }
 
+  if (!USER_VERSION_ATLEAST(290, 1)) {
+    userdef->statusbar_flag = STATUSBAR_SHOW_VERSION;
+  }
+
   /**
    * Versioning code until next subversion bump goes here.
    *
diff --git a/source/blender/editors/include/ED_info.h b/source/blender/editors/include/ED_info.h
index 1146c49bef2..e97fd424742 100644
--- a/source/blender/editors/include/ED_info.h
+++ b/source/blender/editors/include/ED_info.h
@@ -31,9 +31,11 @@ struct Main;
 
 /* info_stats.c */
 void ED_info_stats_clear(struct ViewLayer *view_layer);
-const char *ED_info_footer_string(struct ViewLayer *view_layer);
+const char *ED_info_statusbar_string(struct Main *bmain,
+                                     struct bScreen *screen,
+                                     struct bContext *C);
 void ED_info_draw_stats(
-    Main *bmain, Scene *scene, ViewLayer *view_layer, int x, int *y, int height);
+    struct Main *bmain, Scene *scene, ViewLayer *view_layer, int x, int *y, int height);
 
 #ifdef __cplusplus
 }
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index b034fb186d2..6bf08195b1c 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -89,6 +89,8 @@
 #include "UI_resources.h"
 #include "UI_view2d.h"
 
+#include "GPU_extensions.h"
+
 #include "screen_intern.h" /* own module include */
 
 #define KM_MODAL_CANCEL 1
@@ -4127,12 +4129,6 @@ static void SCREEN_OT_header_toggle_menus(wmOperatorType *ot)
 /** \name Region Context Menu Operator (Header/Footer/Navbar)
  * \{ */
 
-static bool screen_region_context_menu_poll(bContext *C)
-{
-  ScrArea *area = CTX_wm_area(C);
-  return (area && area->spacetype != SPACE_STATUSBAR);
-}
-
 void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *UNUSED(arg))
 {
   ScrArea *area = CTX_wm_area(C);
@@ -4221,15 +4217,35 @@ void ED_screens_navigation_bar_tools_menu_create(bContext *C, uiLayout *layout,
   uiItemO(layout, but_flip_str, ICON_NONE, "SCREEN_OT_region_flip");
 }
 
+static void ED_screens_statusbar_menu_create(bContext *C, uiLayout *layout, void *UNUSED(arg))
+{
+  PointerRNA ptr;
+
+  RNA_pointer_create(NULL, &RNA_PreferencesView, &U, &ptr);
+  uiItemR(layout, &ptr, "show_statusbar_stats", 0, IFACE_("Scene Statistics"), ICON_NONE);
+  uiItemR(layout, &ptr, "show_statusbar_memory", 0, IFACE_("System Memory"), ICON_NONE);
+  if (GPU_mem_stats_supported()) {
+    uiItemR(layout, &ptr, "show_statusbar_vram", 0, IFACE_("Video Memory"), ICON_NONE);
+  }
+  uiItemR(layout, &ptr, "show_statusbar_version", 0, IFACE_("Blender Version"), ICON_NONE);
+}
+
 static int screen_context_menu_invoke(bContext *C,
                                       wmOperator *UNUSED(op),
                                       const wmEvent *UNUSED(event))
 {
   uiPopupMenu *pup;
   uiLayout *layout;
+  const ScrArea *area = CTX_wm_area(C);
   const ARegion *region = CTX_wm_region(C);
 
-  if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) {
+  if (area && area->spacetype == SPACE_STATUSBAR) {
+    pup = UI_popup_menu_begin(C, IFACE_("Status Bar"), ICON_NONE);
+    layout = UI_popup_menu_layout(pup);
+    ED_screens_statusbar_menu_create(C, layout, NULL);
+    UI_popup_menu_end(C, pup);
+  }
+  else if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) {
     pup = UI_popup_menu_begin(C, IFACE_("Header"), ICON_NONE);
     layout = UI_popup_menu_layout(pup);
     ED_screens_header_tools_menu_create(C, layout, NULL);
@@ -4259,7 +4275,6 @@ static void SCREEN_OT_region_context_menu(wmOperatorType *ot)
   ot->idname = "SCREEN_OT_region_context_menu";
 
   /* api callbacks */
-  ot->poll = screen_region_context_menu_poll;
   ot->invoke = screen_context_menu_invoke;
 }
 
diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c
index e1937dffb37..4e91da01cc9 100644
--- a/source/blender/editors/space_info/info_stats.c
+++ b/source/blender/editors/space_info/info_stats.c
@@ -43,6 +43,7 @@
 #include "BLT_translation.h"
 
 #include "BKE_blender_version.h"
+#include "BKE_context.h"
 #include "BKE_curve.h"
 #include "BKE_displist.h"
 #include "BKE_editmesh.h"
@@ -405,46 +406,6 @@ static void stats_update(Depsgraph *depsgraph, ViewLayer *view_layer)
   *(view_layer->stats) = stats;
 }
 
-static const char *footer_string(ViewLayer *view_layer)
-{
-#define MAX_INFO_MEM_LEN 64
-  char memstr[MAX_INFO_MEM_LEN];
-  char gpumemstr[MAX_INFO_MEM_LEN] = "";
-  char formatted_mem[15];
-  size_t ofs = 0;
-
-  uintptr_t mem_in_use = MEM_get_memory_in_use();
-
-  /* get memory statistics */
-  BLI_str_format_byte_unit(formatted_mem, mem_in_use, false);
-  ofs = BLI_snprintf(memstr, MAX_INFO_MEM_LEN, TIP_("Mem: %s"), formatted_mem);
-
-  if (GPU_mem_stats_supported()) {
-    int gpu_free_mem, gpu_tot_memory;
-
-    GPU_mem_stats_get(&gpu_tot_memory, &gpu_free_mem);
-
-    BLI_str_format_byte_unit(formatted_mem, gpu_free_mem, false);
-    ofs = BLI_snprintf(gpumemstr, MAX_INFO_MEM_LEN, TIP_(" | Free GPU Mem: %s"), formatted_mem);
-
-    if (gpu_tot_memory) {
-      BLI_str_format_byte_unit(formatted_mem, gpu_tot_memory, false);
-      BLI_snprintf(gpumemstr + ofs, MAX_INFO_MEM_LEN - ofs, TIP_("/%s"), formatted_mem);
-    }
-  }
-
-  BLI_snprintf(view_layer->footer_str,
-               sizeof(view_layer->footer_str),
-               "%s%s | %s",
-               memstr,
-               gpumemstr,
-               BKE_blender_version_string());
-
-  return view_layer->footer_str;
-
-#undef MAX_INFO_MEM_LEN
-}
-
 void ED_info_stats_clear(ViewLayer *view_layer)
 {
   if (view_layer->stats) {
@@ -453,45 +414,26 @@ void ED_info_stats_clear(ViewLayer *view_layer)
   }
 }
 
-const char *ED_info_footer_string(ViewLayer *view_layer)
-{
-  return footer_string(view_layer);
-}
-
-static void stats_row(int col1,
-                      const char *key,
-                      int col2,
-                      const char *value1,
-                      const char *value2,
-                      int *y,
-                      int height)
-{
-  *y -= height;
-  BLF_draw_default(col1, *y, 0.0f, key, 128);
-  char values[128];
-  BLI_snprintf(values, sizeof(values), (value2) ? "%s / %s" : "%s", value1, value2);
-  BLF_draw_default(col2, *y, 0.

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list