Exemplo n.º 1
0
 public bool AddObject(IWzObject obj, UndoRedoManager undoRedoMan)
 {
     if (CanNodeBeInserted(this, obj.Name))
     {
         TryParseImage();
         addObjInternal(obj);
         WzNode node = new WzNode(obj);
         Nodes.Add(node);
         if (node.Tag is IWzImageProperty) ((IWzImageProperty)node.Tag).ParentImage.Changed = true;
         undoRedoMan.AddUndoBatch(new System.Collections.Generic.List<UndoRedoAction> { UndoRedoManager.ObjectAdded(this, node) });
         node.EnsureVisible();
         return true;
     }
     else
     {
         MessageBox.Show("Cannot insert object \"" + obj.Name + "\" because an object with the same name already exists. Skipping.", "Skipping Object", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return false;
     }
 }
Exemplo n.º 2
0
        /*private ToolStripMenuItem ExportPropertySubMenu;
        private ToolStripMenuItem ExportAnimationSubMenu;
        private ToolStripMenuItem ExportDirectorySubMenu;
        private ToolStripMenuItem ExportPServerXML;
        private ToolStripMenuItem ExportDataXML;
        private ToolStripMenuItem ExportImgData;
        private ToolStripMenuItem ExportRawData;
        private ToolStripMenuItem ExportGIF;
        private ToolStripMenuItem ExportAPNG;

        private ToolStripMenuItem ImportSubMenu;
        private ToolStripMenuItem ImportXML;
        private ToolStripMenuItem ImportImgData;*/
        public ContextMenuManager(UndoRedoManager undoMan)
        {
            //this.parent = parent;
            SaveFile = new ToolStripMenuItem("Save...", Properties.Resources.disk, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    foreach (WzNode node in GetNodes(sender))
                    {
                        HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeView.Parent.Parent.Parent);
                        new SaveForm(parent, node).ShowDialog();
                    }
                }));
            Remove = new ToolStripMenuItem("Remove", Properties.Resources.delete, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    if (!Warning.Warn("Are you sure you want to remove this node?")) return;
                    foreach (WzNode node in GetNodes(sender))
                    {
                        if (!(node.Tag is WzFile))
                        {
                            node.Delete();
                        }
                    }
                }));
            Unload = new ToolStripMenuItem("Unload", Properties.Resources.delete, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    if (!Warning.Warn("Are you sure you want to unload this file?")) return;
                    foreach (WzNode node in GetNodes(sender))
                    {
                        Program.WzMan.UnloadWzFile((WzFile)node.Tag);
                    }
                }));
            Reload = new ToolStripMenuItem("Reload", Properties.Resources.arrow_refresh, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    if (!Warning.Warn("Are you sure you want to reload this file?")) return;
                    foreach (WzNode node in GetNodes(sender))
                    {
                        HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeView.Parent.Parent.Parent);
                        Program.WzMan.ReloadWzFile((WzFile)node.Tag, parent);
                    }
                }));

            AddImage = new ToolStripMenuItem("Image", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name;
                    if (NameInputBox.Show("Add Image", out name))
                        nodes[0].AddObject(new WzImage(name) { Changed = true }, undoMan);
                }));
            AddDirectory = new ToolStripMenuItem("Directory", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name;
                    if (NameInputBox.Show("Add Directory", out name))
                        nodes[0].AddObject(new WzDirectory(name), undoMan);
                }));
            AddByteFloat = new ToolStripMenuItem("Float", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; double? val;
                    if (FloatingPointInputBox.Show("Add Float", out name, out val))
                        nodes[0].AddObject(new WzFloatProperty(name, (float)val), undoMan);
                }));
            AddCanvas = new ToolStripMenuItem("Canvas", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; Bitmap bmp;
                    if (BitmapInputBox.Show("Add Canvas", out name, out bmp))
                    {
                        WzCanvasProperty prop = new WzCanvasProperty(name);
                        prop.PngProperty = new WzPngProperty();
                        prop.PngProperty.SetPNG(bmp);
                        nodes[0].AddObject(new WzCanvasProperty(name), undoMan);
                    }
                }));
            AddInt = new ToolStripMenuItem("Int", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; int? val;
                    if (IntInputBox.Show("Add Int", out name, out val))
                        nodes[0].AddObject(new WzIntProperty(name, (int)val), undoMan);
                }));
            AddConvex = new ToolStripMenuItem("Convex", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name;
                    if (NameInputBox.Show("Add Convex", out name))
                        nodes[0].AddObject(new WzConvexProperty(name), undoMan);
                }));
            AddDouble = new ToolStripMenuItem("Double", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; double? val;
                    if (FloatingPointInputBox.Show("Add Double", out name, out val))
                        nodes[0].AddObject(new WzDoubleProperty(name, (double)val), undoMan);
                }));
            AddNull = new ToolStripMenuItem("Null", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name;
                    if (NameInputBox.Show("Add Null", out name))
                        nodes[0].AddObject(new WzNullProperty(name), undoMan);
                }));
            AddSound = new ToolStripMenuItem("Sound", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name, path;
                    if (SoundInputBox.Show("Add Sound", out name, out path))
                    {
                        try { nodes[0].AddObject(new WzSoundProperty(name, path), undoMan); }
                        catch (Exception ex) { MessageBox.Show("Exception caught while adding property: \"" + ex.Message + "\"", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                    }
                }));
            AddString = new ToolStripMenuItem("String", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name, value;
                    if (NameValueInputBox.Show("Add String", out name, out value))
                        nodes[0].AddObject(new WzStringProperty(name, value), undoMan);
                }));
            AddSub = new ToolStripMenuItem("Sub", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name;
                    if (NameInputBox.Show("Add Sub", out name))
                        nodes[0].AddObject(new WzSubProperty(name), undoMan);
                }));
            AddUshort = new ToolStripMenuItem("Short", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; int? val;
                    if (IntInputBox.Show("Add Unsigned Short", out name, out val))
                        nodes[0].AddObject(new WzShortProperty(name, (short)val), undoMan);
                }));
            AddUOL = new ToolStripMenuItem("UOL", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name, value;
                    if (NameValueInputBox.Show("Add UOL", out name, out value))
                        nodes[0].AddObject(new WzUOLProperty(name, value), undoMan);
                }));
            AddVector = new ToolStripMenuItem("Vector", null, new EventHandler(
                delegate(object sender, EventArgs e)
                {
                    WzNode[] nodes = GetNodes(sender);
                    if (nodes.Length != 1) { MessageBox.Show("Please select only ONE node"); return; }
                    string name; Point? pt;
                    if (VectorInputBox.Show("Add Vector", out name, out pt))
                        nodes[0].AddObject(new WzVectorProperty(name, new WzIntProperty("X", pt.Value.X), new WzIntProperty("Y", pt.Value.Y)), undoMan);
                }));

            AddConvexSubMenu = new ToolStripMenuItem("Add", Properties.Resources.add, AddVector);
            AddDirsSubMenu = new ToolStripMenuItem("Add", Properties.Resources.add, AddDirectory, AddImage);
            AddPropsSubMenu = new ToolStripMenuItem("Add", Properties.Resources.add, AddCanvas, AddConvex, AddDouble, AddByteFloat, AddInt, AddNull, AddUshort, AddSound, AddString, AddSub, AddUOL, AddVector);

            WzFileMenu = new ContextMenuStrip();
            WzFileMenu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            WzDirectoryMenu = new ContextMenuStrip();
            WzDirectoryMenu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, /*export, import,*/Remove });
            PropertyContainerMenu = new ContextMenuStrip();
            PropertyContainerMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/Remove });
            PropertyMenu = new ContextMenuStrip();
            PropertyMenu.Items.AddRange(new ToolStripItem[] { /*export, import,*/Remove });
            SubPropertyMenu = new ContextMenuStrip();
            SubPropertyMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/Remove });
        }