Beispiel #1
0
        /// <summary>
        /// Creates toolbar
        /// </summary>
        /// <param name="buttons">Buttons</param>
        /// <param name="tools">Tools</param>
        /// <param name="size">Size</param>
        /// <param name="translate">The "translate" sign</param>
        /// <param name="resources">Resources</param>
        /// <returns>Toolbar</returns>
        public static PaletteToolBar CreateToolBar(IList <ButtonWrapper> buttons, ToolsDiagram tools, Size size, bool translate,
                                                   Dictionary <string, object>[] resources)
        {
            ImageList imageList = new ImageList();

            imageList.ImageSize = size;
            foreach (ButtonWrapper bw in buttons)
            {
                imageList.Images.Add(bw.buttonImage);
            }
            PaletteToolBar toolbar = new PaletteToolBar(tools);

            toolbar.ImageList = imageList;
            for (int i = 0; i < buttons.Count; i++)
            {
                ButtonWrapper b  = buttons[i];
                string        tt = b.toolTipText;
                if (translate)
                {
                    tt = Resources.GetControlResource(tt, resources);
                }
                PaletteButton pb = new PaletteButton(toolbar, b.type, b.stringKind, tt, b.buttonImage, i, b.isArrow);
                if (!b.isVisible)
                {
                    pb.Visible = false;
                }
            }
            return(toolbar);
        }
        /// <summary>
        /// Initialization of containers tools
        /// </summary>
        /// <param name="baseDirectory">Base directory</param>
        /// <param name="tools">Tools</param>
        /// <param name="tabControl">Tab control</param>
        /// <param name="resources">Resources</param>
        static public void InitContainers(string baseDirectory, ToolsDiagram tools, TabControl tabControl,
                                          Dictionary <string, object>[] resources)
        {
            string cont = baseDirectory;

            if (cont[cont.Length - 1] != Path.DirectorySeparatorChar)
            {
                cont = cont + Path.DirectorySeparatorChar;
            }
            cont = cont + "Containers" +
                   Path.DirectorySeparatorChar + "Containers.xml";
            if (!File.Exists(cont))
            {
                return;
            }
            XmlDocument doc = new XmlDocument();

            doc.Load(cont);
            XmlNodeList nl = doc.GetElementsByTagName("Assemblies");

            if (nl.Count > 0)
            {
                XmlElement ass = nl[0] as XmlElement;
                string     dir = AppDomain.CurrentDomain.BaseDirectory;
                foreach (XmlNode ndll in ass.ChildNodes)
                {
                    if (!(ndll is XmlElement))
                    {
                        continue;
                    }
                    XmlElement dll = ndll as XmlElement;
                    string     fn  = dir + dll.GetAttribute("file");
                    if (!File.Exists(fn))
                    {
                        throw new Exception("File + \"" + fn + "\" does not exist");
                    }
                    byte[] b = fn.GetFileBytes();
                    AppDomain.CurrentDomain.Load(b);
                }
            }
            XmlNodeList contPages = doc.GetElementsByTagName("Page");
            //  int k = 0;
            LightDictionary <string, ButtonWrapper[]> dict = new LightDictionary <string, ButtonWrapper[]>();

            foreach (XmlElement page in contPages)
            {
                XmlNodeList          list    = page.ChildNodes;
                List <ButtonWrapper> buttons = new List <ButtonWrapper>();
                foreach (XmlNode eln in list)
                {
                    if (!(eln is XmlElement))
                    {
                        continue;
                    }
                    XmlElement    el      = eln as XmlElement;
                    string        tag     = el.Name;
                    string        ico     = AppDomain.CurrentDomain.BaseDirectory + el.Attributes["icon"].Value;
                    Image         image   = Image.FromFile(ico);
                    string        name    = el.GetAttribute("name");
                    string        hint    = el.Attributes["hint"].Value;
                    bool          isArrow = el.Attributes["arrow"].Value.Equals("true");
                    ButtonWrapper button  = null;
                    if (isArrow)
                    {
                        button = new ButtonWrapper(typeof(LibraryArrowWrapper), name, hint, image, null, true, true);
                    }
                    else
                    {
                        if (tag.Equals("Aggregate"))
                        {
                            bool b = true;
                            if (el.Attributes["wrapper"] != null)
                            {
                                if (el.GetAttribute("wrapper").Equals("true"))
                                {
                                    button = new ButtonWrapper(typeof(LibraryObjectWrapper), name, hint, image, null, true, false);
                                    b      = false;
                                }
                            }
                            if (b)
                            {
                                button = new ButtonWrapper(typeof(ObjectContainer), name, hint, image, null, true, false);
                            }
                        }
                        if (tag.Equals("Object"))
                        {
                            string tp = el.GetAttribute("type");
                            Type   t  = Type.GetType(tp);
                            if (t == null)
                            {
                                throw new Exception("Type \"" + tp + "\" does not exist");
                            }
                            button = new ButtonWrapper(t, el.GetAttribute("param"), hint, image, null, true, false);
                        }
                    }
                    buttons.Add(button);
                }
                XmlAttribute an  = page.Attributes["pageName"];
                string       vis = page.GetAttribute("visible");
                if (vis == "false")
                {
                    vis = "@";
                }
                else
                {
                    vis = "";
                }
                dict.Add(new string[] { an.Value + vis }, new ButtonWrapper[][] { buttons.ToArray() });
            }
            ButtonWrapper.Add(dict, tabControl, tools, new Size(25, 25), resources, false);
        }