public formatted_text override_print(match_item i, string text, int row_idx, int col_idx) {
            if (!can_cache(col_idx))
                return override_print_no_cache(i, text, col_idx);

            if (cache_.Count >= max_cache_size)
                drop_old_items();
            if (next_cache_index_ % 500 == 0)
                dump_cache_info();

            var key = new Tuple<int,int>(row_idx, col_idx);
            cache_data in_cache;
            if (cache_.TryGetValue(key, out in_cache)) {
                in_cache.cache_index = ++next_cache_index_;
                return in_cache.format;
            }

            var print = override_print_no_cache(i, text, col_idx);
            
            if (cache_.TryGetValue(key, out in_cache)) {
                // we can sometimes get here - seems a call to top_row_idx => visible_row_indexes() => gets us here, within another overrideprint
                in_cache.cache_index = ++next_cache_index_;
                return in_cache.format;
            }

            cache_.Add(key, new cache_data { format = print, cache_index = ++next_cache_index_ });
            return print;
        }
        private formatted_text override_print_no_cache(match_item i, string text, int col_idx) {
            var print = i.override_print(parent_, text, col_idx, location_).format_text;

            var type = log_view_cell.cell_idx_to_type(col_idx);
            if (info_type_io.can_be_multi_line(type)) 
                print = print.get_most_important_single_line();
            return print;
        }
        private formatted_text override_print_no_cache(match_item i, string text, int col_idx)
        {
            var print = i.override_print(parent_, text, col_idx, location_).format_text;

            var type = log_view_cell.cell_idx_to_type(col_idx);

            if (info_type_io.can_be_multi_line(type))
            {
                print = print.get_most_important_single_line();
            }
            return(print);
        }
Beispiel #4
0
 internal bool matches(match_item item)
 {
     lock (this)
         foreach (var snoop in snoops_)
         {
             if (snoop.Value.snoop_selection.Count > 0 && snoop.Value.selection_used)
             {
                 var cur_value = (item as filter.match).line.part(snoop.Key);
                 if (!snoop.Value.snoop_selection.Contains(cur_value))
                 {
                     return(false);
                 }
             }
         }
     return(true);
 }
            public format_cell(match_item item, log_view parent, int col_idx, info_type col_type, formatted_text text, int row_index, int top_row_index, int sel_index, bool is_bookmark, string prev_text, location_type location) {
                this.item = item;
                this.parent = parent;
                this.col_idx = col_idx;
                this.col_type = col_type;
                this.format_text = text;
                this.row_index = row_index;
                this.top_row_index = top_row_index;
                this.prev_text = prev_text;
                this.location = location;
                this.sel_index = sel_index;
                this.is_bookmark = is_bookmark;

                fg_color = item.fg(parent);
                bg_color = item.bg(parent);
            }
            public format_cell(match_item item, log_view parent, int col_idx, info_type col_type, formatted_text text, int row_index, int top_row_index, int sel_index, bool is_bookmark, string prev_text, location_type location)
            {
                this.item          = item;
                this.parent        = parent;
                this.col_idx       = col_idx;
                this.col_type      = col_type;
                this.format_text   = text;
                this.row_index     = row_index;
                this.top_row_index = top_row_index;
                this.prev_text     = prev_text;
                this.location      = location;
                this.sel_index     = sel_index;
                this.is_bookmark   = is_bookmark;

                fg_color = item.fg(parent);
                bg_color = item.bg(parent);
            }
        public formatted_text override_print(match_item i, string text, int row_idx, int col_idx)
        {
            if (!can_cache(col_idx))
            {
                return(override_print_no_cache(i, text, col_idx));
            }

            if (cache_.Count >= max_cache_size)
            {
                drop_old_items();
            }
            if (next_cache_index_ % 500 == 0)
            {
                dump_cache_info();
            }

            var        key = new Tuple <int, int>(row_idx, col_idx);
            cache_data in_cache;

            if (cache_.TryGetValue(key, out in_cache))
            {
                in_cache.cache_index = ++next_cache_index_;
                return(in_cache.format);
            }

            var print = override_print_no_cache(i, text, col_idx);

            if (cache_.TryGetValue(key, out in_cache))
            {
                // we can sometimes get here - seems a call to top_row_idx => visible_row_indexes() => gets us here, within another overrideprint
                in_cache.cache_index = ++next_cache_index_;
                return(in_cache.format);
            }

            cache_.Add(key, new cache_data {
                format = print, cache_index = ++next_cache_index_
            });
            return(print);
        }
        // IMPORTANT: here, when doing preview, we don't show any results from find/find-as-you-type/running filters
        private formatted_text override_print(match_item i, string text, int col_idx, column_formatter_base.format_cell.location_type location)
        {
            int row_idx = list_.IndexOf(i);

            Debug.Assert(row_idx >= 0);

            int    top_row_idx = top_idx();
            string prev_text   = "";

            if (row_idx > 0)
            {
                prev_text = log_view_cell.cell_value(list_.GetItem(row_idx - 1).RowObject as match_item, col_idx);
            }

            int  sel_index  = parent_.sel_row_idx_ui_thread;
            bool is_bokmark = parent_.has_bookmark(i.line_idx);

            var cell = new column_formatter_base.format_cell(i, parent_, col_idx, log_view_cell.cell_idx_to_type(col_idx), new formatted_text(text),
                                                             row_idx, top_row_idx, sel_index, is_bokmark, prev_text, location);

            formatter_.format_before(cell);
            formatter_.format_after(cell);
            return(cell.format_text);
        }
        // IMPORTANT: here, when doing preview, we don't show any results from find/find-as-you-type/running filters
        private formatted_text override_print(match_item i, string text, int col_idx, column_formatter_base.format_cell.location_type location) {
            int row_idx = list_.IndexOf(i);
            Debug.Assert(row_idx >= 0);

            int top_row_idx = top_idx();
            string prev_text = "";
            if (row_idx > 0)
                prev_text = log_view_cell.cell_value( list_.GetItem(row_idx - 1).RowObject as match_item , col_idx);

            int sel_index = parent_.sel_row_idx_ui_thread;
            bool is_bokmark = parent_.has_bookmark(i.line_idx);

            var cell = new column_formatter_base.format_cell(i, parent_, col_idx, log_view_cell.cell_idx_to_type(col_idx), new formatted_text(text),
                row_idx, top_row_idx, sel_index, is_bokmark, prev_text, location);
            formatter_.format_before(cell);
            formatter_.format_after(cell);
            return cell.format_text;
        }