[Bf-blender-cvs] [3a2eddc0981] soc-2020-info-editor: Add log and report filtering in info editor

Mateusz Grzeliński noreply at git.blender.org
Thu Aug 13 21:06:27 CEST 2020


Commit: 3a2eddc0981bce9db2452d208735006d1a887646
Author: Mateusz Grzeliński
Date:   Thu Aug 13 20:14:45 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB3a2eddc0981bce9db2452d208735006d1a887646

Add log and report filtering in info editor

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

M	release/scripts/startup/bl_ui/space_info.py
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_defaults.c
M	source/blender/editors/space_info/CMakeLists.txt
M	source/blender/editors/space_info/info_clog.c
M	source/blender/editors/space_info/info_draw_clog.c
M	source/blender/editors/space_info/info_draw_report.c
M	source/blender/editors/space_info/info_intern.h
M	source/blender/editors/space_info/info_report.c
A	source/blender/editors/space_info/info_utils.c
M	source/blender/editors/space_info/space_info.c
M	source/blender/editors/space_info/textview.h
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 6a9dc984770..ab5cefd3198 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -30,8 +30,11 @@ class INFO_HT_header(Header):
 
         INFO_MT_editor_menus.draw_collapsible(context, layout)
         row = layout.row(align=True)
-        row.prop(sinfo, "filter_text", text="")
-        row.prop(sinfo, "use_match_case", icon="SMALL_CAPS", text="")
+        row.prop(sinfo.search_filter, "search_string", text="")
+        row.prop(sinfo.search_filter, "use_match_reverse", text="")
+        row.prop(sinfo.search_filter, "use_match_case", text="")
+        row.prop(sinfo.search_filter, "use_glob", text="")
+
         layout.separator_spacer()
 
         layout.separator_spacer()
@@ -157,6 +160,7 @@ class INFO_PT_report_type_visibility(Panel):
     bl_space_type = 'INFO'
     bl_region_type = 'HEADER'
     bl_label = "Report Types"
+
     # bl_ui_units_x = 8
 
     def draw(self, context):
@@ -173,9 +177,9 @@ class INFO_PT_report_type_visibility(Panel):
             col.prop(sinfo, "show_report_property", text="Property")
             col.prop(sinfo, "show_report_warning", text="Warning")
             col.prop(sinfo, "show_report_error", text="Error")
-            col.prop(sinfo, "show_report_error_out_of_memory", text="Error")
-            col.prop(sinfo, "show_report_error_invalid_context", text="Error")
-            col.prop(sinfo, "show_report_error_invalid_input", text="Error")
+            col.prop(sinfo, "show_report_error_out_of_memory", text="Error Out of Memory")
+            col.prop(sinfo, "show_report_error_invalid_context", text="Error Invalid Context")
+            col.prop(sinfo, "show_report_error_invalid_input", text="Error Invalid Input")
             layout.separator()
         else:
             layout.label(text="Filter Log Severity")
@@ -191,9 +195,9 @@ class INFO_PT_report_type_visibility(Panel):
                 row = box.row(align=True)
                 row.active = sinfo.use_log_file_line_filter
                 row.prop(filter, "search_string", text="")
-                row.prop(sinfo, "use_match_case", text="", icon='SMALL_CAPS')
-                row.prop(sinfo, "use_match_case", text="", icon='FILTER')
-                # row.prop(path_cmp, "use_glob", text="", icon='FILTER')
+                row.prop(filter, "use_match_reverse", text="")
+                row.prop(filter, "use_match_case", text="")
+                row.prop(filter, "use_glob", text="")
                 row.operator("info.log_file_line_filter_remove", text="", icon='X', emboss=False).index = i
 
             box = layout.box()
@@ -201,9 +205,12 @@ class INFO_PT_report_type_visibility(Panel):
             row.prop(sinfo, "use_log_type_filter", text="Filter Log Type")
             row.operator("info.log_type_filter_add", text="", icon='ADD', emboss=False)
             for i, filter in enumerate(sinfo.filter_log_type):
-                row = box.row()
+                row = box.row(align=True)
                 row.active = sinfo.use_log_type_filter
                 row.prop(filter, "search_string", text="")
+                row.prop(filter, "use_match_reverse", text="")
+                row.prop(filter, "use_match_case", text="")
+                row.prop(filter, "use_glob", text="")
                 row.operator("info.log_type_filter_remove", text="", icon='X', emboss=False).index = i
 
             box = layout.box()
@@ -211,12 +218,14 @@ class INFO_PT_report_type_visibility(Panel):
             row.prop(sinfo, "use_log_function_filter", text="Filter Log Function")
             row.operator("info.log_function_filter_add", text="", icon='ADD', emboss=False)
             for i, filter in enumerate(sinfo.filter_log_function):
-                row = box.row()
+                row = box.row(align=True)
                 row.active = sinfo.use_log_function_filter
                 row.prop(filter, "search_string", text="")
+                row.prop(filter, "use_match_reverse", text="")
+                row.prop(filter, "use_match_case", text="")
+                row.prop(filter, "use_glob", text="")
                 row.operator("info.log_function_filter_remove", text="", icon='X', emboss=False).index = i
 
-            # col = layout.column(align=True)
             row = layout.row(align=True)
             row.prop(sinfo, "use_log_level_filter", text="")
             row.active = sinfo.use_log_level_filter
@@ -236,5 +245,6 @@ classes = (
 
 if __name__ == "__main__":  # only for live edit.
     from bpy.utils import register_class
+
     for cls in classes:
         register_class(cls)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 1b3eb4dbf63..628dde94126 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7073,6 +7073,10 @@ static void direct_link_area(BlendDataReader *reader, ScrArea *area)
       sbuts->mainbo = sbuts->mainb;
       sbuts->mainbuser = sbuts->mainb;
     }
+    else if (sl->spacetype == SPACE_INFO) {
+      SpaceInfo *sinfo = (SpaceInfo *)sl;
+      sinfo->search_filter = NULL;
+    }
     else if (sl->spacetype == SPACE_CONSOLE) {
       SpaceConsole *sconsole = (SpaceConsole *)sl;
       ConsoleLine *cl, *cl_next;
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index 5bbbf07cf78..3e496f89941 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -19,6 +19,7 @@
  */
 
 #include "MEM_guardedalloc.h"
+#include <CLG_log.h>
 
 #include "BLI_listbase.h"
 #include "BLI_math.h"
@@ -179,6 +180,9 @@ static void blo_update_defaults_screen(bScreen *screen,
     else if (area->spacetype == SPACE_INFO) {
       SpaceInfo *sinfo = area->spacedata.first;
       sinfo->report_mask_exclude = RPT_DEBUG_ALL;
+      sinfo->log_severity_mask = CLG_DEFAULT_SEVERITY;
+      sinfo->log_format = INFO_LOG_FORMAT_DEFAULT;
+      sinfo->use_short_file_line = true;
     }
     else if (area->spacetype == SPACE_TEXT) {
       /* Show syntax and line numbers in Script workspace text editor. */
diff --git a/source/blender/editors/space_info/CMakeLists.txt b/source/blender/editors/space_info/CMakeLists.txt
index ec0f0be7731..5142a0c43bf 100644
--- a/source/blender/editors/space_info/CMakeLists.txt
+++ b/source/blender/editors/space_info/CMakeLists.txt
@@ -39,6 +39,7 @@ set(INC_SYS
 )
 
 set(SRC
+  info_utils.c
   info_draw.c
   info_draw_report.c
   info_draw_clog.c
diff --git a/source/blender/editors/space_info/info_clog.c b/source/blender/editors/space_info/info_clog.c
index 5c7c9694e9e..292f7fb36fb 100644
--- a/source/blender/editors/space_info/info_clog.c
+++ b/source/blender/editors/space_info/info_clog.c
@@ -43,15 +43,96 @@
 #include "CLG_log.h"
 #include "info_intern.h"
 
-bool ED_operator_info_clog_active(bContext *C)
+static bool ED_operator_info_clog_active(bContext *C)
 {
   const SpaceInfo *sinfo = CTX_wm_space_info(C);
   return ED_operator_info_active(C) && sinfo->view == INFO_VIEW_CLOG;
 }
 
-bool is_log_record_visible(const CLG_LogRecord *record, const SpaceInfo *sinfo)
+bool is_clog_record_visible(const CLG_LogRecord *record, const SpaceInfo *sinfo)
 {
-  UNUSED_VARS(record, sinfo);
+  /* general search */
+  const SpaceInfoFilter *search_filter = sinfo->search_filter;
+  if (!info_match_string_filter(search_filter->search_string,
+                                record->message,
+                                search_filter->flag & INFO_FILTER_USE_MATCH_CASE,
+                                search_filter->flag & INFO_FILTER_USE_GLOB,
+                                search_filter->flag & INFO_FILTER_USE_MATCH_REVERSE)) {
+    return false;
+  }
+
+  /* filter log severity (flag like)  */
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_DEBUG) &&
+      record->severity == CLG_SEVERITY_DEBUG) {
+    return false;
+  }
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_VERBOSE) &&
+      record->severity == CLG_SEVERITY_VERBOSE) {
+    return false;
+  }
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_INFO) &&
+      record->severity == CLG_SEVERITY_INFO) {
+    return false;
+  }
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_WARN) &&
+      record->severity == CLG_SEVERITY_WARN) {
+    return false;
+  }
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_ERROR) &&
+      record->severity == CLG_SEVERITY_ERROR) {
+    return false;
+  }
+  if (!(sinfo->log_severity_mask & INFO_CLOG_SEVERITY_FATAL) &&
+      record->severity == CLG_SEVERITY_FATAL) {
+    return false;
+  }
+
+  /* filter verbosity */
+  if (sinfo->use_log_filter & INFO_FILTER_LOG_LEVEL) {
+    if (sinfo->filter_log_level < record->verbosity) {
+      return false;
+    }
+  }
+
+  /* filter log type */
+  if (sinfo->use_log_filter & INFO_FILTER_LOG_TYPE) {
+    LISTBASE_FOREACH (struct SpaceInfoFilter *, filter, &sinfo->filter_log_type) {
+      if (!info_match_string_filter(filter->search_string,
+                                    record->type->identifier,
+                                    filter->flag & INFO_FILTER_USE_MATCH_CASE,
+                                    filter->flag & INFO_FILTER_USE_GLOB,
+                                    filter->flag & INFO_FILTER_USE_MATCH_REVERSE)) {
+        return false;
+      }
+    }
+  }
+
+  /* filter log function */
+  if (sinfo->use_log_filter & INFO_FILTER_LOG_FUNCTION) {
+    LISTBASE_FOREACH (struct SpaceInfoFilter *, filter, &sinfo->filter_log_function) {
+      if (!info_match_string_filter(filter->search_string,
+                                    record->function,
+                                    filter->flag & INFO_FILTER_USE_MATCH_CASE,
+                                    filter->flag & INFO_FILTER_USE_GLOB,
+                                    filter->flag & INFO_FILTER_USE_MATCH_REVERSE)) {
+        return false;
+      }
+    }
+  }
+
+  /* filter file line */
+  if (sinfo->use_log_filter & INFO_FILTER_FILE_LINE) {
+    LISTBASE_FOREACH (struct SpaceInfoFilter 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list