def _apply_query_filter(self, vu, pc): new_pc = [] title = kw.get_widget_title(vu.ct) if title in TEXT_INPUT_FORMS.keys() and pc: sq = TEXT_INPUT_FORMS[title] query = sq.query options = sq.options case_sensitive = options & TextInputForm.SO_FIND_CASE # TODO if options & TextInputForm.SO_FIND_TEXT: kw.set_highlight(vu.ct, query, HL_FLAGS) tmpquery = query.lower() if not case_sensitive else query for sl in pc: haystack = il.tag_remove(sl.line).lstrip().rstrip() haystack = haystack.lower( ) if not case_sensitive else haystack if tmpquery in haystack: new_pc.append(sl.line) else: if options & TextInputForm.SO_FILTER_COLOR: # add line but remove color new_pc.append(self._remove_color_tags(sl.line)) elif options & TextInputForm.SO_FILTER_TEXT: # do not add non-matching text pass elif options & TextInputForm.SO_FIND_REGEX: kw.set_highlight(vu.ct, None, 0) for sl in pc: try: if self._search(query, sl, case_sensitive): new_pc.append(sl.line) else: if options & TextInputForm.SO_FILTER_COLOR: new_pc.append(self._remove_color_tags(sl.line)) elif options & TextInputForm.SO_FILTER_TEXT: # do not add non-matching text pass except re.error as error: kw.msg("%s: %s: \"%s\"" % (PLUGIN_NAME, error, query)) return pc.clear() sl = kw.simpleline_t() for line in new_pc: sl.line = line pc.push_back(sl) return
def _apply_query_filter(self, vu, pc): new_pc = [] title = kw.get_widget_title(vu.ct) if title in TEXT_INPUT_FORMS.keys() and pc: sq = TEXT_INPUT_FORMS[title] query = sq.query options = sq.options # TODO if options & TextInputForm.SO_FIND_TEXT: kw.set_highlight(vu.ct, query, kw.HIF_LOCKED) for sl in pc: if query in il.tag_remove(sl.line).lstrip().rstrip(): new_pc.append(sl.line) else: if options & TextInputForm.SO_FILTER_COLOR: new_pc.append(self._remove_color_tags(sl.line)) elif options & TextInputForm.SO_FILTER_TEXT: # do not add non-matching text pass elif options & TextInputForm.SO_FIND_REGEX: kw.set_highlight(vu.ct, None, 0) for sl in pc: try: if self._search(query, sl): new_pc.append(sl.line) else: if options & TextInputForm.SO_FILTER_COLOR: new_pc.append(self._remove_color_tags(sl.line)) elif options & TextInputForm.SO_FILTER_TEXT: # do not add non-matching text pass except re.error as error: kw.msg("%s: %s: \"%s\"" % (PLUGIN_NAME, error, query)) return pc.clear() sl = kw.simpleline_t() for line in new_pc: sl.line = line pc.push_back(sl) return