public void ImportLines(ref PrinterSettings ps, string[] lines) { bool report = false; string name = String.Empty; Plot plt = null; SelList.Clear(); PlotList.Clear(); foreach (string line in lines) { if (!String.IsNullOrWhiteSpace(line)) { if (line.Equals("[Report]")) { report = true; } else if (report) { string[] items = line.Split(new char[] { '=' }); switch (items[0]) { case "Descriptor": Descriptor = items[1]; break; case "ReportName": ReportName = items[1]; break; case "PrinterName": ps.PrinterName = PrinterName = items[1]; break; case "PaperName": SetPaperSize(ref ps, items[1]); break; case "Landscape": int landscape; if (int.TryParse(items[1], out landscape)) { ps.DefaultPageSettings.Landscape = landscape > 0; } break; case "Left": int left; if (int.TryParse(items[1], out left)) { ps.DefaultPageSettings.Margins.Left = left; } break; case "Right": int right; if (int.TryParse(items[1], out right)) { ps.DefaultPageSettings.Margins.Right = right; } break; case "Top": int top; if (int.TryParse(items[1], out top)) { ps.DefaultPageSettings.Margins.Top = top; } break; case "Bottom": int bottom; if (int.TryParse(items[1], out bottom)) { ps.DefaultPageSettings.Margins.Bottom = bottom; } break; } } else if (plt == null) { string[] items = line.Split(new char[] { '=' }); string value = (items.Length == 2) ? items[1] : String.Empty; switch (items[0]) { case "Name": name = value; break; case "PlotKind": int plotkind; if (int.TryParse(value, out plotkind)) { plt = new Plot(plotkind); plt.Name = name; PlotList.Add(plt); } break; } } else if (plt != null) { string[] items = line.Split(new char[] { '=' }); string propname = items[0]; if (plt.Props.ContainsKey(propname)) { string typename = plt.Props[propname].GetType().Name; switch (typename) { case "Single": Single sv; if (Single.TryParse(items[1], out sv)) { plt.Props[propname] = sv; } break; case "Color": plt.Props[propname] = Data.ColorFromBase(items[1]); break; case "Boolean": int bv; if (int.TryParse(items[1], out bv)) { plt.Props[propname] = (bv > 0); } break; case "Int32": int iv; if (int.TryParse(items[1], out iv)) { plt.Props[propname] = iv; } break; default: plt.Props[propname] = items[1]; break; } } else { plt.SetPropValue(propname, items[1]); } //if (items[0].Equals("ImagePath")) // plt.SetPropValue("ImagePath", // Application.StartupPath + "\\images\\"); } } else { plt = null; report = false; } } calcWorkRects(); }
private string BuildInFunc(Plot plt, string name, DateTime dt, ServerSQL dataSQL) { Calendar cal; int formatPV; switch (name.ToUpper()) { case "PRINTTIME": return(DateTime.Now.ToString("dd.MM.yyyy ddd HH:mm:ss")); case "PRINTDAYSTART": return(dt.ToString("dd.MM.yyyy ddd 00:00:00")); case "PRINTDAYFINISH": return(dt.ToString("dd.MM.yyyy ddd 23:59:59")); case "PRINTSHIFT1START": return(dt.ToString("dd.MM.yyyy ddd 08:00:00")); case "PRINTSHIFT1FINISH": return(dt.ToString("dd.MM.yyyy ddd 19:59:59")); case "PRINTPREVDAYSTART": return(dt.AddDays(-1).ToString("dd.MM.yyyy ddd 00:00:00")); case "PRINTPREVDAYFINISH": return(dt.AddDays(-1).ToString("dd.MM.yyyy ddd 23:59:59")); case "PRINTSHIFT2START": return(dt.AddDays(-1).ToString("dd.MM.yyyy ddd 20:00:00")); case "PRINTSHIFT2FINISH": return(dt.ToString("dd.MM.yyyy ddd 07:59:59")); case "PRINTMONTHSTART": return(dt.ToString("01.MM.yyyy ddd 00:00:00")); case "PRINTMONTHFINISH": cal = new GregorianCalendar(GregorianCalendarTypes.Localized); return(dt.ToString(String.Format("{0}.MM.yyyy ddd 23:59:59", cal.GetDaysInMonth(dt.Year, dt.Month)))); case "PRINTPREVMONTHSTART": return(dt.AddMonths(-1).ToString("01.MM.yyyy ddd 00:00:00")); case "PRINTPREVMONTHFINISH": cal = new GregorianCalendar(GregorianCalendarTypes.Localized); return(dt.AddMonths(-1).ToString(String.Format("{0}.MM.yyyy ddd 23:59:59", cal.GetDaysInMonth(dt.AddMonths(-1).Year, dt.AddMonths(-1).Month)))); default: string value = name.ToUpper(); if (value.StartsWith("HOUR(") && value.EndsWith(")")) // [{HOUR(N, POINT.PV)}] где N - offset (часов) { string[] args = value.Substring(5, value.IndexOf(')') - 5).Split(new char[] { ',' }); if (args.Length == 2) { double offset; formatPV = getFormatPV(args[1].Trim(), plt, dataSQL); if (double.TryParse(args[0].Trim(), out offset)) { return(Data.GetHourData(args[1].Trim(), dt.AddHours(-offset), dataSQL, formatPV)); } else { return(value.Substring(0, value.IndexOf(',') - 1) + "?"); } } else { return("HOUR(?,?)"); } } else if (value.StartsWith("DAILY(") && value.EndsWith(")")) // [{DAILY(N, POINT.PV)}] где N - offset (дней) { string[] args = value.Substring(6, value.IndexOf(')') - 6).Split(new char[] { ',' }); if (args.Length == 2) { double offset; formatPV = getFormatPV(args[1].Trim(), plt, dataSQL); if (double.TryParse(args[0].Trim(), out offset)) { return(Data.GetDailyData(args[1].Trim(), dt.AddDays(-offset), dataSQL, formatPV)); } else { return(value.Substring(0, value.IndexOf(',') - 1) + "?"); } } else { return("DAILY(?,?)"); } } else if (value.StartsWith("MONTH(") && value.EndsWith(")")) // [{MONTH(N, POINT.PV)}] где N - offset (месяцев) { string[] args = value.Substring(6, value.IndexOf(')') - 6).Split(new char[] { ',' }); if (args.Length == 2) { int offset; formatPV = getFormatPV(args[1].Trim(), plt, dataSQL); if (int.TryParse(args[0].Trim(), out offset)) { return(Data.GetMonthData(args[1].Trim(), dt.AddMonths(-offset), dataSQL, formatPV)); } else { return(value.Substring(0, value.IndexOf(',') - 1) + "?"); } } else { return("MONTH(?,?)"); } } return("{" + name + "?}"); } }