[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