diff --git a/debug-viewer/GstDebugViewer/GUI/filters.py b/debug-viewer/GstDebugViewer/GUI/filters.py index 8367e0e3fe..5f59065833 100644 --- a/debug-viewer/GstDebugViewer/GUI/filters.py +++ b/debug-viewer/GstDebugViewer/GUI/filters.py @@ -21,43 +21,59 @@ from GstDebugViewer.GUI.models import LogModelBase +def get_comparison_function (all_but_this): + + if (all_but_this): + return lambda x, y : x == y + else: + return lambda x, y : x != y + class Filter (object): pass class DebugLevelFilter (Filter): - def __init__ (self, debug_level): + only_this, all_but_this, this_and_above = range(3) + + def __init__ (self, debug_level, mode = 0): col_id = LogModelBase.COL_LEVEL + if mode == self.this_and_above: + comparison_function = lambda x, y : x < y + else: + comparison_function = get_comparison_function (mode == self.all_but_this) def filter_func (row): - return row[col_id] != debug_level + return comparison_function (row[col_id], debug_level) self.filter_func = filter_func class CategoryFilter (Filter): - def __init__ (self, category): + def __init__ (self, category, all_but_this = False): col_id = LogModelBase.COL_CATEGORY + comparison_function = get_comparison_function (all_but_this) def category_filter_func (row): - return row[col_id] != category + return comparison_function(row[col_id], category) self.filter_func = category_filter_func class ObjectFilter (Filter): - def __init__ (self, object_): + def __init__ (self, object_, all_but_this = False): col_id = LogModelBase.COL_OBJECT + comparison_function = get_comparison_function (all_but_this) def object_filter_func (row): - return row[col_id] != object_ + return comparison_function (row[col_id], object_) self.filter_func = object_filter_func class FilenameFilter (Filter): - def __init__ (self, filename): + def __init__ (self, filename, all_but_this = False): col_id = LogModelBase.COL_FILENAME + comparison_function = get_comparison_function (all_but_this) def filename_filter_func (row): - return row[col_id] != filename + return comparison_function (row[col_id], filename) self.filter_func = filename_filter_func