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); }
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(); } }