Beispiel #1
0
        private void set_text(log_view lv)
        {
            if (drawer_ == null)
            {
                drawer_ = new log_view_item_draw_ui(lv)
                {
                    ignore_selection = true
                };
                txt.Font = drawer_.default_font;
            }
            drawer_.set_parent(lv);

            int    msg_col = lv.msgCol.fixed_index();
            string msg_txt = lv.sel_line_text;

            txt.Clear();
            txt.AppendText(msg_txt);

            var prints   = lv.sel.override_print(lv, msg_txt, msg_col);
            var full_row = lv.list.GetItem(lv.sel_row_idx);

            BackColor = txt.BackColor = drawer_.bg_color(full_row, msg_col);
            int last_idx = 0;

            for (int print_idx = 0; print_idx < prints.Count; ++print_idx)
            {
                int    cur_idx = prints[print_idx].Item1, cur_len = prints[print_idx].Item2;
                string before = msg_txt.Substring(last_idx, cur_idx - last_idx);
                if (before != "")
                {
                    txt.Select(last_idx, cur_idx - last_idx);
                    txt.SelectionColor     = drawer_.print_fg_color(full_row, default_print_);
                    txt.SelectionBackColor = drawer_.bg_color(full_row, msg_col);
                }
                txt.Select(cur_idx, cur_len);
                txt.SelectionColor     = drawer_.print_fg_color(full_row, prints[print_idx].Item3);
                txt.SelectionBackColor = drawer_.print_bg_color(full_row, prints[print_idx].Item3);
                last_idx = cur_idx + cur_len;
            }
            last_idx = prints.Count > 0 ? prints.Last().Item1 + prints.Last().Item2 : 0;
            if (last_idx < msg_txt.Length)
            {
                txt.Select(last_idx, msg_txt.Length - last_idx);
                txt.SelectionColor     = drawer_.print_fg_color(full_row, default_print_);
                txt.SelectionBackColor = drawer_.bg_color(full_row, msg_col);
            }

            txt.SelectionStart  = 0;
            txt.SelectionLength = 0;
        }
Beispiel #2
0
        private void set_text(log_view lv)
        {
            if (drawer_ == null)
            {
                drawer_ = new log_view_item_draw_ui(lv)
                {
                    ignore_selection = true
                };
                txt.Font = drawer_.default_font;
            }
            drawer_.set_parent(lv);

            int    msg_col = lv.msgCol.fixed_index();
            string msg_txt = lv.sel_line_text;

            txt.Clear();
            txt.AppendText(msg_txt);

            var prints   = lv.sel.override_print(lv, msg_txt, msg_col, column_formatter_base.format_cell.location_type.msg_description).format_text;
            var full_row = lv.list.GetItem(lv.sel_row_idx);

            BackColor = txt.BackColor = drawer_.bg_color(full_row, msg_col, prints);

            var parts = prints.parts(default_print_);

            foreach (var part in parts)
            {
                txt.Select(part.start, part.len);
                txt.SelectionColor     = drawer_.print_fg_color(full_row, part);
                txt.SelectionBackColor = drawer_.print_bg_color(full_row, part);
            }

            txt.SelectionStart  = 0;
            txt.SelectionLength = 0;
        }
        public override void Render(Graphics g, Rectangle r)
        {
            DrawBackground(g, r);

            var i = ListItem.RowObject as match_item;

            if (i == null)
            {
                return;
            }

            var    col_idx = Column.fixed_index();
            string text    = GetText();

            override_print_ = override_print(i, text, col_idx, column_formatter_base.format_cell.location_type.view);

            var type = log_view_cell.cell_idx_to_type(col_idx);

            if (info_type_io.can_be_multi_line(type))
            {
                override_print_ = override_print_.get_most_important_single_line();
            }
            text = override_print_.text;

            bg_color_ = drawer_.bg_color(ListItem, col_idx, override_print_);
            Brush brush = brush_.brush(bg_color_);

            g.FillRectangle(brush, r);

            StringFormat fmt = new StringFormat(StringFormatFlags.NoWrap);

            fmt.LineAlignment = StringAlignment.Center;
            fmt.Trimming      = override_print_.align == HorizontalAlignment.Left ? StringTrimming.EllipsisCharacter : StringTrimming.None;
            fmt.Alignment     = StringAlignment.Near;

            int left = 0;

            if (override_print_.align != HorizontalAlignment.Left)
            {
                var full_text_size = drawer_.text_width(g, text, drawer_.font(override_print_.merge_parts));
                int width          = r.Width;
                int extra          = width - full_text_size;
                left = override_print_.align == HorizontalAlignment.Right ? extra - 5 : extra / 2;
            }

            draw_string(left, text, g, brush, r, fmt);
            draw_image(g, r);
        }