예제 #1
0
        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();
        }
예제 #2
0
        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 + "?}");
            }
        }