Exemplo n.º 1
0
        internal WzImageProperty ParsePropertyFromXMLElement(XmlElement element)
        {
            switch (element.Name)
            {
            case "imgdir":
                WzSubProperty sub = new WzSubProperty(element.GetAttribute("name"));
                foreach (XmlElement subelement in element)
                {
                    sub.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(sub);

            case "canvas":
                WzCanvasProperty canvas = new WzCanvasProperty(element.GetAttribute("name"));
                if (!element.HasAttribute("basedata"))
                {
                    throw new NoBase64DataException("no base64 data in canvas element with name " + canvas.Name);
                }
                canvas.PngProperty = new WzPngProperty();
                MemoryStream pngstream = new MemoryStream(Convert.FromBase64String(element.GetAttribute("basedata")));
                canvas.PngProperty.SetPNG((Bitmap)Image.FromStream(pngstream, true, true));
                foreach (XmlElement subelement in element)
                {
                    canvas.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(canvas);

            case "int":
                WzIntProperty compressedInt = new WzIntProperty(element.GetAttribute("name"), int.Parse(element.GetAttribute("value"), formattingInfo));
                return(compressedInt);

            case "double":
                WzDoubleProperty doubleProp = new WzDoubleProperty(element.GetAttribute("name"), double.Parse(element.GetAttribute("value"), formattingInfo));
                return(doubleProp);

            case "null":
                WzNullProperty nullProp = new WzNullProperty(element.GetAttribute("name"));
                return(nullProp);

            case "sound":
                if (!element.HasAttribute("basedata") || !element.HasAttribute("basehead") || !element.HasAttribute("length"))
                {
                    throw new NoBase64DataException("no base64 data in sound element with name " + element.GetAttribute("name"));
                }
                WzSoundProperty sound = new WzSoundProperty(element.GetAttribute("name"),
                                                            int.Parse(element.GetAttribute("length")),
                                                            Convert.FromBase64String(element.GetAttribute("basehead")),
                                                            Convert.FromBase64String(element.GetAttribute("basedata")));
                return(sound);

            case "string":
                WzStringProperty stringProp = new WzStringProperty(element.GetAttribute("name"), element.GetAttribute("value"));
                return(stringProp);

            case "short":
                WzShortProperty shortProp = new WzShortProperty(element.GetAttribute("name"), short.Parse(element.GetAttribute("value"), formattingInfo));
                return(shortProp);

            case "long":
                WzLongProperty longProp = new WzLongProperty(element.GetAttribute("name"), long.Parse(element.GetAttribute("value"), formattingInfo));
                return(longProp);

            case "uol":
                WzUOLProperty uol = new WzUOLProperty(element.GetAttribute("name"), element.GetAttribute("value"));
                return(uol);

            case "vector":
                WzVectorProperty vector = new WzVectorProperty(element.GetAttribute("name"), new WzIntProperty("x", Convert.ToInt32(element.GetAttribute("x"))), new WzIntProperty("y", Convert.ToInt32(element.GetAttribute("y"))));
                return(vector);

            case "float":
                WzFloatProperty floatProp = new WzFloatProperty(element.GetAttribute("name"), float.Parse(element.GetAttribute("value"), formattingInfo));
                return(floatProp);

            case "extended":
                WzConvexProperty convex = new WzConvexProperty(element.GetAttribute("name"));
                foreach (XmlElement subelement in element)
                {
                    convex.AddProperty(ParsePropertyFromXMLElement(subelement));
                }
                return(convex);
            }
            throw new InvalidDataException("unknown XML prop " + element.Name);
        }
Exemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (method == 0)
            {
                switch (data.GetType().Name)
                {
                case "WzDirectory":
                    ((WzDirectory)data).Name = textBox1.Text;
                    break;

                case "WzImage":
                    ((WzImage)data).Name    = textBox1.Text;
                    ((WzImage)data).changed = true;
                    tree.Text = textBox1.Text;
                    Close();
                    return;

                case "WzSubProperty":
                    ((WzSubProperty)data).Name = textBox1.Text;
                    break;

                case "WzCompressedIntProperty":
                    ((WzCompressedIntProperty)data).Name  = textBox1.Text;
                    ((WzCompressedIntProperty)data).Value = Convert.ToInt32(textBox2.Text);
                    break;

                case "WzCanvasProperty":
                    if (((WzCanvasProperty)data).PngProperty == null)
                    {
                        ((WzCanvasProperty)data).PngProperty = new WzPngProperty();
                    }
                    ((WzCanvasProperty)data).PngProperty.Name   = textBox1.Text;
                    ((WzCanvasProperty)data).PngProperty.Height = pictureBox1.Image.Height;
                    ((WzCanvasProperty)data).PngProperty.Width  = pictureBox1.Image.Width;
                    ((WzCanvasProperty)data).PngProperty.PNG    = (Bitmap)pictureBox1.Image;
                    break;

                case "WzVectorProperty":
                    ((WzVectorProperty)data).Name    = textBox1.Text;
                    ((WzVectorProperty)data).X.Value = Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0]);
                    ((WzVectorProperty)data).Y.Value = Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1]);
                    break;

                case "WzStringProperty":
                    ((WzStringProperty)data).Name  = textBox1.Text;
                    ((WzStringProperty)data).Value = textBox2.Text;
                    break;

                case "WzUOLProperty":
                    ((WzUOLProperty)data).Name  = textBox1.Text;
                    ((WzUOLProperty)data).Value = textBox2.Text;
                    break;

                case "WzDoubleProperty":
                    ((WzDoubleProperty)data).Name  = textBox1.Text;
                    ((WzDoubleProperty)data).Value = Convert.ToDouble(textBox2.Text);
                    break;

                case "WzByteFloatProperty":
                    ((WzByteFloatProperty)data).Name  = textBox1.Text;
                    ((WzByteFloatProperty)data).Value = Convert.ToSingle(textBox2.Text);
                    break;

                case "WzSoundProperty":
                    ((WzSoundProperty)data).Name = textBox1.Text;
                    FileStream readmp3 = File.OpenRead(textBox2.Text);
                    byte[]     mpd     = new byte[readmp3.Length];
                    readmp3.Read(mpd, 0, (int)readmp3.Length);
                    ((WzSoundProperty)data).SoundData = mpd;
                    readmp3.Close();
                    break;

                case "WzConvexProperty":
                    ((WzConvexProperty)data).Name = textBox1.Text;
                    break;

                case "WzUnsignedShortProperty":
                    ((WzUnsignedShortProperty)data).Name  = textBox1.Text;
                    ((WzUnsignedShortProperty)data).Value = Convert.ToUInt16(textBox2.Text);
                    break;

                default:
                    break;
                }
                tree.Text = textBox1.Text;
                ((IWzImageProperty)data).ParentImage.changed = true;
                Close();
            }
            else if (method == 1)
            {
                switch (data.GetType().Name)
                {
                case "WzDirectory":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzDirectory dir = new WzDirectory(textBox1.Text);
                        ((WzDirectory)data).AddDirectory(dir);
                        tree.Nodes.Add(textBox1.Text).Tag = dir;
                        break;

                    case 1:
                        WzImage img = new WzImage(textBox1.Text);
                        ((WzDirectory)data).AddImage(img);
                        tree.Nodes.Add(textBox1.Text).Tag = img;
                        img.changed = true;
                        break;
                    }
                    Close();
                    return;

                    break;

                case "WzImage":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ((WzImage)data).AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ((WzImage)data).AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ((WzImage)data).AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ((WzImage)data).AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ((WzImage)data).AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ((WzImage)data).AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ((WzImage)data).AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ((WzImage)data).AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        ((WzImage)data).AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ((WzImage)data).AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ((WzImage)data).AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzSubProperty":
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ((WzSubProperty)data).AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ((WzSubProperty)data).AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ((WzSubProperty)data).AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ((WzSubProperty)data).AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ((WzSubProperty)data).AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        ((WzSubProperty)data).AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ((WzSubProperty)data).AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ((WzSubProperty)data).AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzCanvasProperty":
                    WzCanvasProperty canvas = (WzCanvasProperty)data;
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        canvas.AddProperty(integer);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        png.PngProperty.PNG    = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        canvas.AddProperty(png);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        canvas.AddProperty(vector);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        canvas.AddProperty(str);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        canvas.AddProperty(uol);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        canvas.AddProperty(dou);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        canvas.AddProperty(flo);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        canvas.AddProperty(sub);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData = mpdata;
                        canvas.AddProperty(mps);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        canvas.AddProperty(convex);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        canvas.AddProperty(us);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;

                case "WzConvexProperty":
                    WzExtendedProperty ext = new WzExtendedProperty(textBox1.Text);
                    switch (comboBox1.SelectedIndex)
                    {
                    case 0:
                        WzCompressedIntProperty integer = new WzCompressedIntProperty(textBox1.Text, Convert.ToInt32(textBox2.Text));
                        ext.ExtendedProperty = integer;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = integer;
                        break;

                    case 1:
                        WzCanvasProperty png = new WzCanvasProperty(textBox1.Text);
                        (png.PngProperty = new WzPngProperty()).PNG = (Bitmap)pictureBox1.Image;
                        png.PngProperty.Height = pictureBox1.Image.Height;
                        png.PngProperty.Width  = pictureBox1.Image.Width;
                        ext.ExtendedProperty   = png;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = png;
                        break;

                    case 2:
                        WzVectorProperty vector = new WzVectorProperty(textBox1.Text, new WzCompressedIntProperty("X", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[0])), new WzCompressedIntProperty("Y", Convert.ToInt32(textBox2.Text.Split(Convert.ToChar(","))[1])));
                        ext.ExtendedProperty = vector;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = vector;
                        break;

                    case 3:
                        WzStringProperty str = new WzStringProperty(textBox1.Text, textBox2.Text);
                        ext.ExtendedProperty = str;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = str;
                        break;

                    case 4:
                        WzUOLProperty uol = new WzUOLProperty(textBox1.Text, textBox2.Text);
                        ext.ExtendedProperty = uol;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = uol;
                        break;

                    case 5:
                        WzDoubleProperty dou = new WzDoubleProperty(textBox1.Text, Convert.ToDouble(textBox2.Text));
                        ext.ExtendedProperty = dou;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = dou;
                        break;

                    case 6:
                        WzByteFloatProperty flo = new WzByteFloatProperty(textBox1.Text, Convert.ToSingle(textBox2.Text));
                        ext.ExtendedProperty = flo;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = flo;
                        break;

                    case 7:
                        WzSubProperty sub = new WzSubProperty(textBox1.Text);
                        ext.ExtendedProperty = sub;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = sub;
                        break;

                    case 8:
                        WzSoundProperty mps       = new WzSoundProperty(textBox1.Text);
                        FileStream      readsound = File.OpenRead(textBox2.Text);
                        byte[]          mpdata    = new byte[readsound.Length];
                        readsound.Read(mpdata, 0, (int)readsound.Length);
                        mps.SoundData        = mpdata;
                        ext.ExtendedProperty = mps;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = mps;
                        readsound.Close();
                        break;

                    case 9:
                        WzConvexProperty convex = new WzConvexProperty(textBox1.Text);
                        ext.ExtendedProperty = convex;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = convex;
                        break;

                    case 10:
                        WzUnsignedShortProperty us = new WzUnsignedShortProperty(textBox1.Text, Convert.ToUInt16(textBox2.Text));
                        ext.ExtendedProperty = us;
                        ((WzConvexProperty)data).AddProperty(ext);
                        tree.Nodes.Add(textBox1.Text).Tag = us;
                        break;

                    default:
                        break;
                    }
                    break;
                }
                if (data is WzImage)
                {
                    ((WzImage)data).changed = true;
                }
                else
                {
                    ((IWzImageProperty)data).ParentImage.changed = true;
                }
                Close();
            }
        }