Пример #1
0
 public Draw(float X, float Y, IDrawPlugin plugin)
 {
     this.Location  = new PointF(X, Y);
     this.Size      = new SizeF();
     this.plugin    = plugin;
     this.values    = plugin.DefaultValues();
     values["Name"] = GetUniqueKey(10);
     values["Left"] = X;
     values["Top"]  = Y;
 }
Пример #2
0
    public static string ImportSchemeFrom(string filename)
    {
        IDictionary <string, IDrawPlugin> plugins =
            DrawPlugin.LoadPlugins(Application.StartupPath);

        string[]    lines      = System.IO.File.ReadAllLines(filename);
        bool        background = false;
        string      name       = String.Empty;
        Draw        drw        = null;
        Background  bkg        = null;
        List <Draw> drawslist  = new List <Draw>();

        foreach (string line in lines)
        {
            if (!String.IsNullOrWhiteSpace(line))
            {
                if (line.Equals("[Background]"))
                {
                    background = true;
                    bkg        = new Background();
                    drawslist.Add(bkg);
                }
                else if (background)
                {
                    string[] items = line.Split(new char[] { '=' });
                    switch (items[0])
                    {
                    case "Width": bkg.Width = int.Parse(items[1]); break;

                    case "Height": bkg.Height = int.Parse(items[1]); break;

                    case "BackColor":
                        bkg.BackColor = Data.ColorFromBase(items[1]);
                        break;

                    case "SchemeName": bkg.SchemeName = items[1]; break;

                    case "Descriptor": bkg.Descriptor = items[1]; break;
                    }
                }
                else if (drw == 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 "Plugin":
                        if (plugins.ContainsKey(value))
                        {
                            IDrawPlugin plugin = plugins[value];
                            drw      = new Draw(0, 0, plugin);
                            drw.Name = name;
                            drawslist.Add(drw);
                        }
                        break;
                    }
                }
                else if (drw != null)
                {
                    string[] items = line.Split(new char[] { '=' });
                    drw.SetPropValue(items[0], items[1]);
                }
            }
            else
            {
                drw        = null;
                background = false;
            }
        }
        string SchemeName = bkg.SchemeName;

        using (ServerSQL mySQL = new ServerSQL(DatabaseFrom.Database))     // запись
        {
            if (mySQL.Connected)
            {
                string ukey = Data.GetUniqueKey(20);
                int    step = 0;
                try
                {
                    int npp = 0;
                    foreach (Draw item in drawslist)
                    {
                        saveOneDraw(npp++, ukey, item, mySQL);
                    }
                    step++;
                    Data.EmptyScheme(SchemeName, mySQL);
                    Data.RenameScheme(ukey, SchemeName, mySQL);
                }
                catch
                {
                    switch (step)
                    {
                    case 0:
                        Data.EmptyScheme(ukey, mySQL);
                        break;
                    }
                }
            }
        }
        return(SchemeName);
    }
Пример #3
0
    public static List <Draw> LoadScheme(string schemename, string imagepath)
    {
        List <Draw> drawslist = new List <Draw>();

        using (ServerSQL mySQL = new ServerSQL(DatabaseFrom.Database, true))     // чтение
        {
            if (mySQL.Connected)
            {
                List <string> dinlist = Data.GetDinList(schemename, mySQL);
                foreach (string dinname in dinlist)
                {
                    IDictionary <string, string> dinprops =
                        Data.GetDinProps(schemename, dinname, mySQL);
                    if (dinname.Equals("Background") &&
                        dinprops.ContainsKey("Left") &&
                        dinprops.ContainsKey("Top") &&
                        dinprops.ContainsKey("Width") &&
                        dinprops.ContainsKey("Height") &&
                        dinprops.ContainsKey("BackColor") &&
                        dinprops.ContainsKey("Descriptor") &&
                        dinprops.ContainsKey("Expanded") &&
                        dinprops.ContainsKey("SaveAspect")
                        )
                    {
                        Background drw = new Background();
                        drw.Location = new Point(int.Parse(dinprops["Left"]),
                                                 int.Parse(dinprops["Top"]));
                        drw.Width      = int.Parse(dinprops["Width"]);
                        drw.Height     = int.Parse(dinprops["Height"]);
                        drw.BackColor  = Data.ColorFromBase(dinprops["BackColor"]);
                        drw.Descriptor = dinprops["Descriptor"];
                        drw.Expanded   = int.Parse(dinprops["Expanded"]) > 0;
                        drw.SaveAspect = int.Parse(dinprops["SaveAspect"]) > 0;
                        drawslist.Add(drw);
                    }
                    else
                    {
                        if (dinprops.ContainsKey("Plugin") &&
                            dinprops.ContainsKey("Left") &&
                            dinprops.ContainsKey("Top") &&
                            dinprops.ContainsKey("Name"))
                        {
                            string plugname = dinprops["Plugin"];
                            IDictionary <string, IDrawPlugin> plugins =
                                DrawPlugin.LoadPlugins(Application.StartupPath);
                            if (plugins.ContainsKey(plugname))
                            {
                                IDrawPlugin plugin = plugins[plugname];
                                float       x      = float.Parse(dinprops["Left"]);
                                float       y      = float.Parse(dinprops["Top"]);
                                Draw        drw    = new Draw(x, y, plugin);
                                drw.Name = dinprops["Name"];
                                drawslist.Add(drw);
                                foreach (KeyValuePair <string, string> prop in dinprops)
                                {
                                    drw.SetPropValue(prop.Key, prop.Value);
                                }
                                if (drw.Props.ContainsKey("ImagePath"))
                                {
                                    drw.SetPropValue("ImagePath", imagepath);
                                }
                            }
                        }
                    }
                }
            }
        }
        return(drawslist);
    }