示例#1
0
        public test_log_view()
        {
            InitializeComponent();

            string file   = @"C:\john\code\buff\lw-tests\small.log";
            string syntax = "$time[0,12] $ctx1[13,10] $level[24,5] $class[' ','- '] $msg";

            settings_as_string sett = new settings_as_string("");

            sett.set("type", "file");
            sett.set("name", file);
            sett.set("syntax", syntax);

            lv_      = new log_view(this, "testing 123");
            lv_.Dock = DockStyle.Fill;
            this.Controls.Add(lv_);
            lv_.show_name = false;

            lv_.set_log(new log_reader(new log_parser(new file_text_reader(sett))));
            var filter = new List <raw_filter_row>();

            lv_.set_filter(filter);

            app.inst.edit_mode = app.edit_mode_type.always;
//            app.inst.edit_mode = app.edit_mode_type.with_space;
        }
示例#2
0
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);

            load_sub_syntax(sett, multi_, "multiline", ref error);
            load_sub_syntax(sett, color_, "all", ref error);
            load_sub_syntax(sett, date_, "date", ref error);
            load_sub_syntax(sett, time_, "time", ref error);
            load_sub_syntax(sett, compare_number_, "compare-n", ref error);
            load_sub_syntax(sett, format_number_, "number", ref error);
            load_sub_syntax(sett, alternate_bg_, "alternate", ref error);

            for (int idx = 0;; idx++) {
                string prefix = "regex" + (idx > 0 ? "" + (idx + 1) : "");
                string regex_expr = sett.get(prefix + ".expr");
                if (regex_expr != "") {
                    regex_color regex = new regex_color();
                    load_sub_syntax(sett, regex, prefix, ref error);
                    sub_.Add(regex);
                } else break;
            }

            for (int idx = 0;; idx++) {
                string prefix = "abb" + (idx > 0 ? "" + (idx + 1) : "");
                string abbr_expr = sett.get(prefix + ".find");
                if (abbr_expr != "") {
                    var abb = new abbreviation();
                    load_sub_syntax(sett, abb, prefix, ref error);
                    sub_.Add(abb);
                } else break;
            }
        }
示例#3
0
        internal override void load_syntax(settings_as_string sett, ref string error)
        {
            base.load_syntax(sett, ref error);
            light_color_ = sett.get("light");
            if (light_color_ != "" && !is_color_str_valid(light_color_))
            {
                error = "Invalid color: " + light_color_;
            }

            show_diff_ = sett.get("show_diff", "1") == "1";
            var format = sett.get("format");

            if (format != "")
            {
                formatting_ = text_part.from_friendly_string(format);
            }

            format_time_ = sett.get("format_time");
            try {
                if (format_time_ != "")
                {
                    DateTime.Now.ToString(format_time_);
                }
            } catch {
                error        = "Invalid time format: " + format_time_;
                format_time_ = "";
            }
        }
示例#4
0
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);

            for (int idx = 0;; ++idx) {
                string sett_name = "pic" + (idx > 0 ? "" +(idx+1) : "");
                var pic = sett.get(sett_name);
                if (pic != "") {
                    var sep = pic.IndexOf("->");
                    if (sep >= 0) {
                        Image bmp = null;
                        string prefix = pic.Substring(0, sep).Trim().ToLower();
                        string file = pic.Substring(sep + 2).Trim();
                        if (prefix == "" || file == "")
                            continue;
                        file = util.absolute_logwizard_filename(file);
                        try {
                            if (file != "") 
                                bmp = Image.FromFile(file);                            
                        } catch(Exception e) {                            
                            logger.Error("bad picture " + e.Message);
                        }
                        if (bmp != null)
                            name_to_picture_.Add(prefix, bmp);
                        else {
                            error = "Invalid file: " + file;
                            logger.Error("could not load file " + file);
                        }
                    } else
                        error = "Invalid line: " + pic;
                } else
                    break;
            }
        }
示例#5
0
文件: cell.cs 项目: jtorjo/logwizard
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);
            var format = sett.get("format");
            if ( format != "")
                formatting_ = text_part.from_friendly_string(format);

            var sel = sett.get("selection");
            var bookmark = sett.get("bookmark");
            if (sel != "")
                sel = util.absolute_logwizard_filename(sel);
            if (bookmark != "")
                bookmark = util.absolute_logwizard_filename(bookmark);

            if ( sel != "")
                try {
                    selection_image_ = Image.FromFile(sel);
                } catch(Exception e) {
                    logger.Error("bad picture " + e.Message);
                    error = "Bad image file: " + sel;
                }
            if ( bookmark != "")
                try {
                    bookmark_image_ = Image.FromFile(bookmark);
                } catch(Exception e) {
                    logger.Error("bad picture " + e.Message);
                    error = "Bad image file: " + bookmark;
                }

            if (selection_image_ != null && bookmark_image_ != null)
                selection_and_bookmark_image_ = util.merge_images_horizontally(selection_image_, bookmark_image_);
        }
示例#6
0
 internal override void load_syntax(settings_as_string sett, ref string error) {
     base.load_syntax(sett, ref error);
     base_ = int.Parse(sett.get("base", "10"));
     pad_ = sett.get("pad");
     color_ = sett.get("color", "red");
     if (color_ == "-")
         color_ = "";
     look_for_hex_ = sett.get("look_for_hex", "1") == "1";
 }
        // file name is set only if it's a file
        public edit_log_settings_form(string settings, edit_type edit = edit_type.edit)
        {
            old_settings_ = new settings_as_string(settings);
            settings_     = new settings_as_string(settings);
            edit_         = edit;
            InitializeComponent();
            fileName.Text       = settings_.get("type") == "file" ? settings_.get("name") : "";
            type.Enabled        = edit == edit_type.add;
            browserFile.Enabled = edit == edit_type.add;

            if (edit == edit_type.add)
            {
                settings_.set("event.log_type", "Application|System");
            }

            hide_tabs(typeTab);
            hide_tabs(fileTypeTab);
            cancel.Left       = -100;
            friendlyName.Text = settings_.get("friendly_name");

            fileType.SelectedIndex = file_type_to_index(settings_.get("file_type"));

            update_syntax();
            ifLine.Checked = settings_.get("line.if_line", "0") != "0";

            partSeparator.Text = settings_.get("part.separator");

            xmlDelimeter.Text = settings_.get("xml.delimeter");

            csvHasHeader.Checked = settings_.get("csv.has_header", "1") != "0";
            csvSeparator.Text    = settings_.get("csv.separator", ",");

            remoteMachineName.Text = settings_.get("event.remote_machine_name");
            remoteDomain.Text      = settings_.get("event.remote_domain");
            remoteUserName.Text    = settings_.get("event.remote_user_name");
            remotePassword.Text    = settings_.get("event.remote_password");
            selectedEventLogs.Text = settings_.get("event.log_type").Replace("|", "\r\n");
            eventsReversed.Checked = settings_.get("event.reversed", "0") != "0";

            type.SelectedIndex = type_to_index();
            if (edit == edit_type.add)
            {
                Text = "Open Log";
                settings_.set("guid", Guid.NewGuid().ToString());
                util.postpone(() => type.Focus(), 1);
                util.postpone(() => type.DroppedDown = true, 200);
            }
            if (edit == edit_type.edit && typeTab.SelectedIndex == 1 && remoteMachineName.Text.Trim() != "")
            {
                util.postpone(() => remotePassword.Focus(), 1);
            }

            new Thread(check_event_log_thread)
            {
                IsBackground = true
            }.Start();
        }
示例#8
0
        private void load_sub_syntax(settings_as_string sett, column_formatter_base sub, string prefix, ref string error) {
            prefix += ".";
            settings_as_string sub_sett = new settings_as_string("");
            foreach ( var name in sett.names())
                if ( name.StartsWith(prefix)) 
                    sub_sett.set(name.Substring(prefix.Length), sett.get(name));

            sub.load_syntax(sub_sett, ref error);
        }
示例#9
0
 internal override void load_syntax(settings_as_string sett, ref string error)
 {
     base.load_syntax(sett, ref error);
     base_  = int.Parse(sett.get("base", "10"));
     pad_   = sett.get("pad");
     color_ = sett.get("color", "red");
     if (color_ == "-")
     {
         color_ = "";
     }
     look_for_hex_ = sett.get("look_for_hex", "1") == "1";
 }
示例#10
0
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);
            show_multi_into_single_line_ = sett.get("multi", "0") != "0";
            separator_ = sett.get("separator", " ¶ ");

            var alternate = sett.get("alternate_format");
            var separator = sett.get("separator_format");
            if ( alternate != "")
                alternate_format_ = text_part.from_friendly_string(alternate);
            if ( separator != "")
                separator_format_ = text_part.from_friendly_string(separator);
        }
示例#11
0
        static public text_reader create_text_reader(settings_as_string settings) {
            Debug.Assert(settings.get("guid") != "");

            switch (settings.get("type", "file")) {
            case "file":        return new file_text_reader(settings);
            case "event_log":   return new event_log_reader(settings);
            case "debug_print": return new debug_text_reader(settings);
            default:
                Debug.Assert(false);
                return null;
            }

        }
示例#12
0
 internal override void load_syntax(settings_as_string sett, ref string error) {
     base.load_syntax(sett, ref error);
     color_ = sett.get("format");
     if (color_ != "" && !is_color_str_valid(color_))
         error = "Invalid color: " + color_;
     expr_ = sett.get("expr");
     try {
         regex_ = new Regex(expr_);
     } catch {
         error = "Invalid regex: " + expr_;
         regex_ = null;
     }
 }
示例#13
0
        internal override void load_syntax(settings_as_string sett, ref string error)
        {
            base.load_syntax(sett, ref error);

            for (int idx = 0;; ++idx)
            {
                string sett_name = "pic" + (idx > 0 ? "" + (idx + 1) : "");
                var    pic       = sett.get(sett_name);
                if (pic != "")
                {
                    var sep = pic.IndexOf("->");
                    if (sep >= 0)
                    {
                        Image  bmp    = null;
                        string prefix = pic.Substring(0, sep).Trim().ToLower();
                        string file   = pic.Substring(sep + 2).Trim();
                        if (prefix == "" || file == "")
                        {
                            continue;
                        }
                        file = util.absolute_logwizard_filename(file);
                        if (file == "")
                        {
                            continue;
                        }
                        try {
                            bmp = Image.FromFile(file);
                        } catch (Exception e) {
                            logger.Error("bad picture " + e.Message);
                        }
                        if (bmp != null)
                        {
                            name_to_picture_.Add(prefix, bmp);
                        }
                        else
                        {
                            error = "Invalid file: " + file;
                            logger.Error("could not load file " + file);
                        }
                    }
                    else
                    {
                        error = "Invalid line: " + pic;
                    }
                }
                else
                {
                    break;
                }
            }
        }
        // file name is set only if it's a file
        public edit_log_settings_form(string settings, edit_type edit = edit_type.edit) {
            old_settings_ = new settings_as_string(settings);
            settings_ = new settings_as_string(settings);
            file_name_ =  settings_.get("type") == "file" ? settings_.get("name") : "" ;

            edit_ = edit;
            InitializeComponent();
            type.Enabled = edit == edit_type.add;

            if (edit == edit_type.add) {
                settings_.set("event.log_type", "Application|System");
            }

            hide_tabs(typeTab);
            hide_tabs(fileTypeTab);
            cancel.Left = -100;
            friendlyName.Text = settings_.get("friendly_name");

            fileType.SelectedIndex = file_type_to_index( settings_.get("file_type") );

            syntax.Text = settings_.get("syntax");
            syntax.ForeColor = syntax.Text == find_log_syntax.UNKNOWN_SYNTAX ? Color.Red : Color.Black;
            ifLine.Checked = settings_.get("line.if_line", "0") != "0";
            
            partSeparator.Text = settings_.get("part.separator");

            xmlDelimeter.Text = settings_.get("xml.delimeter");

            csvHasHeader.Checked = settings_.get("csv.has_header", "1") != "0";
            csvSeparator.Text = settings_.get("csv.separator", ",");

            remoteMachineName.Text = settings_.get("event.remote_machine_name");
            remoteDomain.Text = settings_.get("event.remote_domain");
            remoteUserName.Text = settings_.get("event.remote_user_name");
            remotePassword.Text = settings_.get("event.remote_password");
            selectedEventLogs.Text = settings_.get("event.log_type").Replace("|", "\r\n");

            type.SelectedIndex = type_to_index();
            if (edit == edit_type.add) {
                Text = "Open Log";
                settings_.set("guid", Guid.NewGuid().ToString());
                util.postpone(() => type.Focus(), 1);
                util.postpone(() => type.DroppedDown = true, 200);
            }
            if (edit == edit_type.edit && typeTab.SelectedIndex == 1 && remoteMachineName.Text.Trim() != "")
                util.postpone(() => remotePassword.Focus(), 1);

            new Thread(check_event_log_thread) {IsBackground = true}.Start();
        }
示例#15
0
 internal override void load_syntax(settings_as_string sett, ref string error)
 {
     base.load_syntax(sett, ref error);
     color_ = sett.get("format");
     if (color_ != "" && !is_color_str_valid(color_))
     {
         error = "Invalid color: " + color_;
     }
     expr_ = sett.get("expr");
     try {
         regex_ = new Regex(expr_);
     } catch {
         error  = "Invalid regex: " + expr_;
         regex_ = null;
     }
 }
示例#16
0
        static public text_reader create_text_reader(settings_as_string settings)
        {
            Debug.Assert(settings.get("guid") != "");

            switch (settings.get("type", "file"))
            {
            case "file":        return(new file_text_reader(settings));

            case "event_log":   return(new event_log_reader(settings));

            case "debug_print": return(new debug_text_reader(settings));

            default:
                Debug.Assert(false);
                return(null);
            }
        }
示例#17
0
        internal override void load_syntax(settings_as_string sett, ref string error)
        {
            base.load_syntax(sett, ref error);
            var format = sett.get("format");

            if (format != "")
            {
                formatting_ = text_part.from_friendly_string(format);
            }

            var sel      = sett.get("selection");
            var bookmark = sett.get("bookmark");

            if (sel != "")
            {
                sel = util.absolute_logwizard_filename(sel);
            }
            if (bookmark != "")
            {
                bookmark = util.absolute_logwizard_filename(bookmark);
            }

            if (sel != "")
            {
                try {
                    selection_image_ = Image.FromFile(sel);
                } catch (Exception e) {
                    logger.Error("bad picture " + e.Message);
                    error = "Bad image file: " + sel;
                }
            }
            if (bookmark != "")
            {
                try {
                    bookmark_image_ = Image.FromFile(bookmark);
                } catch (Exception e) {
                    logger.Error("bad picture " + e.Message);
                    error = "Bad image file: " + bookmark;
                }
            }

            if (selection_image_ != null && bookmark_image_ != null)
            {
                selection_and_bookmark_image_ = util.merge_images_horizontally(selection_image_, bookmark_image_);
            }
        }
示例#18
0
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);

            var where = sett.get("where");
            if (where != "") {
                int delim = where.IndexOf("*");
                if (delim >= 0) {
                    before_ = where.Substring(0, delim);
                    after_ = where.Substring(delim + 1);
                } else
                    before_ = where;
            }
            var value_type = sett.get("value", "int");
            is_int_ = value_type != "double";

            for (int idx = 0;; ++idx) {
                var compare_str = sett.get("compare" + (idx > 0 ? "" + (idx + 1) : ""));
                if (compare_str == "")
                    break;
                var compare_parts = compare_str.Split(',');
                if (compare_parts.Length != 4) {
                    error = "Invalid compare string: " + compare_str;
                    break;
                }
                compare comp = new compare();
                // read the number
                bool ok1 = double.TryParse(compare_parts[0], out comp.compare_double);
                bool ok2 = long.TryParse(compare_parts[0], out comp.compare_int);
                if (!ok1 && !ok2) {
                    error = "Invalid compare string: " + compare_str;
                    break;                    
                }
                if (ok1 && !ok2)
                    try {
                        comp.compare_int = (long) comp.compare_double;
                    } catch {}

                if ( compare_parts[1] != "-")
                    comp.less = text_part.from_friendly_string(compare_parts[1]);
                if ( compare_parts[2] != "-")
                    comp.equal = text_part.from_friendly_string(compare_parts[2]);
                if ( compare_parts[3] != "-")
                    comp.greater = text_part.from_friendly_string(compare_parts[3]);
                compare_.Add(comp);
            }
        }
示例#19
0
        internal override void load_syntax(settings_as_string sett, ref string error)
        {
            base.load_syntax(sett, ref error);
            show_multi_into_single_line_ = sett.get("multi", "0") != "0";
            separator_ = sett.get("separator", " ¶ ");

            var alternate = sett.get("alternate_format");
            var separator = sett.get("separator_format");

            if (alternate != "")
            {
                alternate_format_ = text_part.from_friendly_string(alternate);
            }
            if (separator != "")
            {
                separator_format_ = text_part.from_friendly_string(separator);
            }
        }
示例#20
0
        public static bool is_file_line_by_line(string file_name, string sett)
        {
            file_name = file_name.ToLower();
            var all       = new settings_as_string(sett);
            var file_type = all.get("file_type");

            switch (file_type)
            {
            case "line-by-line":
                return(true);

            case "":
                // best guess
                return(guess_file_type(file_name) == "line-by-line");

            default:
                return(false);
            }
        }
示例#21
0
 internal override void load_syntax(settings_as_string sett, ref string error) {
     base.load_syntax(sett, ref error);
     find_ = sett.get("find");
     original_replace_string_ = sett.get("replace");
     try {
         new Regex(find_);
     } catch {
         error = "Invalid Find regex: " + find_;
         is_on_ = false;
     }
     try {
         Regex.Replace("blablabla", find_, original_replace_string_);
     } catch {
         error = "Invalid Replace regex: " + original_replace_string_;
         is_on_ = false;
     }
     if ( error == "")
         parse_replace_format();
 }
示例#22
0
        internal virtual void load_syntax(settings_as_string sett, ref string error)
        {
            var align = sett.get("align");

            switch (align)
            {
            case "left":
                align_ = align_type.left;
                break;

            case "center":
                align_ = align_type.center;
                break;

            case "right":
                align_ = align_type.right;
                break;
            }
        }
示例#23
0
        internal override void load_syntax(settings_as_string sett, ref string error) {
            base.load_syntax(sett, ref error);
            light_color_ = sett.get("light");
            if (light_color_ != "" && !is_color_str_valid(light_color_))
                error = "Invalid color: " + light_color_;

            show_diff_ = sett.get("show_diff", "1") == "1";
            var format = sett.get("format");
            if ( format != "")
                formatting_ = text_part.from_friendly_string(format);

            format_time_ = sett.get("format_time");
            try {
                if (format_time_ != "")
                    DateTime.Now.ToString(format_time_);
            } catch {
                error = "Invalid time format: " + format_time_;
                format_time_ = "";
            }
        }
示例#24
0
 internal override void load_syntax(settings_as_string sett, ref string error)
 {
     base.load_syntax(sett, ref error);
     find_ = sett.get("find");
     original_replace_string_ = sett.get("replace");
     try {
         new Regex(find_);
     } catch {
         error  = "Invalid Find regex: " + find_;
         is_on_ = false;
     }
     try {
         Regex.Replace("blablabla", find_, original_replace_string_);
     } catch {
         error  = "Invalid Replace regex: " + original_replace_string_;
         is_on_ = false;
     }
     if (error == "")
     {
         parse_replace_format();
     }
 }
示例#25
0
        private static string to_string(parts_layout_template layout)
        {
            string rows  = util.concatenate(layout.rows_.Select(x => "" + x.label_width_ + "," + x.row_width_ + "," + x.parts_.Count), ";");
            string parts = "";

            for (int i = 0; i < layout.rows_.Count; ++i)
            {
                var r = layout.rows_[i];
                if (parts != "")
                {
                    parts += ";";
                }
                parts += util.concatenate(r.parts_.Select(x => "" + i + "," + (int)x.type
                                                          + "," + (x.visible ? "1" : "0") + "," + (x.multi_line ? "1" : "0") + "," + (x.auto_resize ? "1" : "0") + "," + x.line_count), ";");
            }
            settings_as_string sett = new settings_as_string("");

            sett.set("rows", rows);
            sett.set("parts", parts);
            sett.set("name", layout.name_);
            return(sett.ToString());
        }
示例#26
0
        private static string to_string(parts_layout_template layout)
        {
            string rows  = util.concatenate(layout.rows_.Select(x => "" + x.label_width_ + "," + x.row_width_ + "," + x.parts_.Count), ";");
            string parts = "";

            for (int i = 0; i < layout.rows_.Count; ++i)
            {
                var r = layout.rows_[i];
                if (parts != "")
                {
                    parts += ";";
                }
                parts += util.concatenate(r.parts_.Select(x => "" + i + "," + (int)x.type
                                                          + "," + (x.visible ? "1" : "0") + "," + (x.multi_line ? "1" : "0") + "," + (x.auto_resize ? "1" : "0") + "," + x.line_count), ";");
            }
            // note: when too many settings here, I should use a log_settings_string-like or something - at this point, it's manageable, but perhaps later
            settings_as_string sett = new settings_as_string("");

            sett.set("rows", rows);
            sett.set("parts", parts);
            sett.set("name", layout.name_);
            return(sett.ToString());
        }
示例#27
0
        private static parts_layout_template from_string(string s)
        {
            settings_as_string    sett = new settings_as_string(s);
            string                rows = sett.get("rows"), parts = sett.get("parts");
            parts_layout_template layout = new parts_layout_template();

            foreach (var row_data in rows.Split(';'))
            {
                var cur_row = row_data.Split(',');
                Debug.Assert(cur_row.Length == 3);
                row r = new row();
                r.label_width_ = int.Parse(cur_row[0]);
                r.row_width_   = int.Parse(cur_row[1]);
                int count = int.Parse(cur_row[2]);
                layout.rows_.Add(r);
            }

            foreach (var part_data in parts.Split(';'))
            {
                if (part_data == "")
                {
                    continue;
                }
                var cur_part = part_data.Split(',');
                Debug.Assert(cur_part.Length == 6);
                row  r = layout.rows_[int.Parse(cur_part[0])];
                part p = new part();
                p.type        = (info_type)int.Parse(cur_part[1]);
                p.visible     = cur_part[2] == "1";
                p.multi_line  = cur_part[3] == "1";
                p.auto_resize = cur_part[4] == "1";
                p.line_count  = int.Parse(cur_part[5]);
                r.parts_.Add(p);
            }
            layout.name_ = sett.get("name");
            return(layout);
        }
示例#28
0
 public aliases(string aliases_string) {
     sett_ = new settings_as_string(aliases_string.Replace(separator_, "\r\n"));
     init();
 }
示例#29
0
 public aliases(string aliases_string)
 {
     sett_ = new settings_as_string(aliases_string.Replace(separator_, "\r\n"));
     init();
 }
示例#30
0
 private static string to_string(parts_layout_template layout) {
     string rows = util.concatenate( layout.rows_.Select(x => "" + x.label_width_ + "," + x.row_width_ + "," + x.parts_.Count), ";");
     string parts = "";
     for (int i = 0; i < layout.rows_.Count; ++i) {
         var r = layout.rows_[i];
         if (parts != "")
             parts += ";";
         parts += util.concatenate(r.parts_.Select(x => "" + i + "," + (int)x.type 
             + "," + (x.visible ? "1" : "0") + "," + (x.multi_line ? "1" : "0") + "," + (x.auto_resize ? "1" : "0") + "," + x.line_count), ";");
     }
     settings_as_string sett = new settings_as_string("");
     sett.set("rows", rows);
     sett.set("parts", parts);
     sett.set("name", layout.name_);
     return sett.ToString();
 }
示例#31
0
        internal override void load_syntax(settings_as_string sett, ref string error)
        {
            base.load_syntax(sett, ref error);

            var where = sett.get("where");
            if (where != "")
            {
                int delim = where.IndexOf("*");
                if (delim >= 0)
                {
                    before_ = where.Substring(0, delim);
                    after_  = where.Substring(delim + 1);
                }
                else
                {
                    before_ = where;
                }
            }
            var value_type = sett.get("value", "int");

            is_int_ = value_type != "double";

            for (int idx = 0;; ++idx)
            {
                var compare_str = sett.get("compare" + (idx > 0 ? "" + (idx + 1) : ""));
                if (compare_str == "")
                {
                    break;
                }
                var compare_parts = compare_str.Split(',');
                if (compare_parts.Length != 4)
                {
                    error = "Invalid compare string: " + compare_str;
                    break;
                }
                compare comp = new compare();
                // read the number
                bool ok1 = double.TryParse(compare_parts[0], out comp.compare_double);
                bool ok2 = long.TryParse(compare_parts[0], out comp.compare_int);
                if (!ok1 && !ok2)
                {
                    error = "Invalid compare string: " + compare_str;
                    break;
                }
                if (ok1 && !ok2)
                {
                    try {
                        comp.compare_int = (long)comp.compare_double;
                    } catch {}
                }

                if (compare_parts[1] != "-")
                {
                    comp.less = text_part.from_friendly_string(compare_parts[1]);
                }
                if (compare_parts[2] != "-")
                {
                    comp.equal = text_part.from_friendly_string(compare_parts[2]);
                }
                if (compare_parts[3] != "-")
                {
                    comp.greater = text_part.from_friendly_string(compare_parts[3]);
                }
                compare_.Add(comp);
            }
        }
示例#32
0
        // for a given log
        // I need to know the default category type (default: thread)
        // for each category type -> have the default category colors

        // settings_as_string ??? have delimeter instead of "\r\n"

        public category_format_settings(string str)
        {
            sett_ = new settings_as_string(str, delim);
        }
示例#33
0
 private static string to_string(parts_layout_template layout) {
     string rows = util.concatenate( layout.rows_.Select(x => "" + x.label_width_ + "," + x.row_width_ + "," + x.parts_.Count), ";");
     string parts = "";
     for (int i = 0; i < layout.rows_.Count; ++i) {
         var r = layout.rows_[i];
         if (parts != "")
             parts += ";";
         parts += util.concatenate(r.parts_.Select(x => "" + i + "," + (int)x.type 
             + "," + (x.visible ? "1" : "0") + "," + (x.multi_line ? "1" : "0") + "," + (x.auto_resize ? "1" : "0") + "," + x.line_count), ";");
     }
     // note: when too many settings here, I should use a log_settings_string-like or something - at this point, it's manageable, but perhaps later
     settings_as_string sett = new settings_as_string("");
     sett.set("rows", rows);
     sett.set("parts", parts);
     sett.set("name", layout.name_);
     return sett.ToString();
 }
示例#34
0
 internal override void load_syntax(settings_as_string sett, ref string error) {
     base.load_syntax(sett, ref error);
     int.TryParse(sett.get("row_count"), out row_count_);
     alternate_color_ = sett.get("color", "darker");
 }
示例#35
0
        private static parts_layout_template from_string(string s) {
            settings_as_string sett = new settings_as_string(s);
            string rows = sett.get("rows"), parts = sett.get("parts");
            parts_layout_template layout = new parts_layout_template();
            foreach (var row_data in rows.Split(';')) {
                var cur_row = row_data.Split(',');
                Debug.Assert(cur_row.Length == 3);
                row r = new row();
                r.label_width_ = int.Parse(cur_row[0]);
                r.row_width_ = int.Parse(cur_row[1]);
                int count = int.Parse(cur_row[2]);
                layout.rows_.Add(r);
            }

            foreach (var part_data in parts.Split(';')) {
                if (part_data == "")
                    continue;
                var cur_part = part_data.Split(',');
                Debug.Assert(cur_part.Length == 6);
                row r = layout.rows_[int.Parse(cur_part[0]) ];
                part p = new part();
                p.type = (info_type) int.Parse(cur_part[1]);
                p.visible = cur_part[2] == "1";
                p.multi_line = cur_part[3] == "1";
                p.auto_resize = cur_part[4] == "1";
                p.line_count = int.Parse(cur_part[5]);
                r.parts_.Add(p);
            }
            layout.name_ = sett.get("name");
            return layout;
        }
示例#36
0
 internal override void load_syntax(settings_as_string sett, ref string error)
 {
     base.load_syntax(sett, ref error);
     int.TryParse(sett.get("row_count"), out row_count_);
     alternate_color_ = sett.get("color", "darker");
 }
示例#37
0
        public static bool is_file_line_by_line(string file_name, string sett) {
            file_name = file_name.ToLower();
            var all = new settings_as_string(sett);
            var file_type = all.get("file_type");

            switch (file_type) {
            case "line-by-line":
                return true;
            case "":
                // best guess
                return guess_file_type(file_name) == "line-by-line";
            default:
                return false;
            }
            
        }
示例#38
0
 internal virtual void load_syntax(settings_as_string sett, ref string error) {
     var align = sett.get("align");
     switch (align) {
     case "left":
         align_ = align_type.left;
         break;
     case "center": 
         align_ = align_type.center;
         break;
     case "right":
         align_ = align_type.right;
         break;
     }
 }