private parts_layout_template set_defaults() { // default: 2 rows // - on first row, I have everything but level, time, date, line, thread, msg // - on second row I have msg, multi-line, auto-resize parts_layout_template def_ = new parts_layout_template(); def_.rows_.Add(new row { row_width_ = 250 }); def_.rows_.Add(new row()); foreach (info_type type in Enum.GetValues(typeof(info_type))) { switch (type) { case info_type.max: break; // 1.6.9+ by default, hide them - in other words, normally they are shown in the view. But the user can choose to show them here case info_type.level: case info_type.date: case info_type.time: case info_type.view: case info_type.line: case info_type.thread: def_.rows_[0].parts_.Add(new part { type = type, visible = false }); break; case info_type.msg: def_.rows_[1].parts_.Add(new part { type = type, auto_resize = true, multi_line = true, line_count = 0 }); break; default: def_.rows_[0].parts_.Add(new part { type = type }); break; } } return(def_); }
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()); }
private parts_layout_template set_defaults() { // default: 2 rows // - on first row, I have everything but level, time, date, line, thread, msg // - on second row I have msg, multi-line, auto-resize parts_layout_template def_ = new parts_layout_template(); def_.rows_.Add(new row { row_width_ = 250 }); def_.rows_.Add(new row()); foreach (info_type type in Enum.GetValues(typeof(info_type))) { switch (type) { case info_type.max: case info_type.level: case info_type.date: case info_type.time: case info_type.view: case info_type.line: case info_type.thread: break; case info_type.msg: def_.rows_[1].parts_.Add(new part { type = type, auto_resize = true, multi_line = true, line_count = 0 }); break; default: def_.rows_[0].parts_.Add(new part { type = type }); break; } } return(def_); }
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()); }
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); }
private void copy_Click(object sender, EventArgs e) { Debug.Assert(layouts_.Count > 0); var layout = layouts_[cur_layout_idx_]; var copy = new parts_layout_template { name_ = layout.name_ + "_Copy" }; foreach (var r in layout.rows_) { copy.rows_.Add(new row { label_width_ = r.label_width_, row_width_ = r.row_width_ }); foreach (var p in r.parts_) { copy.rows_.Last().parts_.Add(new part { auto_resize = p.auto_resize, type = p.type, visible = p.visible, multi_line = p.multi_line, line_count = p.line_count }); } } layouts_.Add(copy); cur_layout_idx_ = layouts_.Count - 1; update_ui(); }
private void copy_Click(object sender, EventArgs e) { Debug.Assert(layouts_.Count > 0); var layout = layouts_[cur_layout_idx_]; var copy = new parts_layout_template { name_ = layout.name_ + "_Copy" }; foreach (var r in layout.rows_) { copy.rows_.Add(new row { label_width_ = r.label_width_, row_width_ = r.row_width_ }); foreach ( var p in r.parts_) copy.rows_.Last().parts_.Add( new part { auto_resize = p.auto_resize, type = p.type, visible = p.visible, multi_line = p.multi_line, line_count = p.line_count } ); } layouts_.Add(copy); cur_layout_idx_ = layouts_.Count - 1; update_ui(); }
private parts_layout_template set_defaults() { // default: 2 rows // - on first row, I have everything but level, time, date, line, thread, msg // - on second row I have msg, multi-line, auto-resize parts_layout_template def_ = new parts_layout_template(); def_.rows_.Add( new row { row_width_ = 250}); def_.rows_.Add( new row()); foreach ( info_type type in Enum.GetValues(typeof(info_type))) switch (type) { case info_type.max: break; // 1.6.9+ by default, hide them - in other words, normally they are shown in the view. But the user can choose to show them here case info_type.level: case info_type.date: case info_type.time: case info_type.view: case info_type.line: case info_type.thread: def_.rows_[0].parts_.Add( new part { type = type, visible = false } ); break; case info_type.msg: def_.rows_[1].parts_.Add( new part { type = type, auto_resize = true, multi_line = true, line_count = 0 } ); break; default: def_.rows_[0].parts_.Add( new part { type = type } ); break; } return def_; }
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; }
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(); }
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(); }
private parts_layout_template set_defaults() { // default: 2 rows // - on first row, I have everything but level, time, date, line, thread, msg // - on second row I have msg, multi-line, auto-resize parts_layout_template def_ = new parts_layout_template(); def_.rows_.Add( new row { row_width_ = 250}); def_.rows_.Add( new row()); foreach ( info_type type in Enum.GetValues(typeof(info_type))) switch (type) { case info_type.max: case info_type.level: case info_type.date: case info_type.time: case info_type.view: case info_type.line: case info_type.thread: break; case info_type.msg: def_.rows_[1].parts_.Add( new part { type = type, auto_resize = true, multi_line = true, line_count = 0 } ); break; default: def_.rows_[0].parts_.Add( new part { type = type } ); break; } return def_; }