Esempio n. 1
0
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            int currentDataTreeSelectedCount = parentPanel.DataTree.SelectedNodes.Count;

            ContextMenuStrip menu = new ContextMenuStrip();

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                if (Tag is WzSubProperty)
                {
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });
                }
                else
                {
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });
                }
            }
            else if (Tag is WzImageProperty)
            {
                menu.Items.AddRange(new ToolStripItem[] { Rename, /*export, import,*/ Remove });
            }
            else if (Tag is WzDirectory)
            {
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, Rename, /*export, import,*/ Remove });
            }
            else if (Tag is WzFile)
            {
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            }

            currNode = node;
            return(menu);
        }
Esempio n. 2
0
        protected void removePaintFromNodes()
        {
            if (m_coll.Count == 0)
            {
                return;
            }

            TreeNode n0 = (TreeNode)m_coll[0];

            /*Color back = n0.TreeView.BackColor;
            *  Color fore = n0.TreeView.ForeColor;*/
            Color back = BackColor;
            Color fore = ForeColor;

            foreach (TreeNode n in m_coll)
            {
                n.BackColor = back;

                WzNode node = (WzNode)n;
                if (node.IsWzObjectAddedManually)
                {
                    n.ForeColor = WzNode.NewObjectForeColor;
                }
                else
                {
                    n.ForeColor = fore;
                }
            }
        }
        /// <summary>
        /// Delayed loading of the loaded WzFile to the TreeNode panel
        /// This primarily fixes some performance issue when loading multiple WZ concurrently.
        /// </summary>
        /// <param name="newFile"></param>
        /// <param name="panel"></param>
        /// <param name="currentDispatcher"></param>
        public void AddLoadedWzFileToMainPanel(WzFile newFile, MainPanel panel, Dispatcher currentDispatcher = null)
        {
            WzNode node = new WzNode(newFile);

            // execute in main thread
            if (currentDispatcher != null)
            {
                currentDispatcher.BeginInvoke((Action)(() =>
                {
                    panel.DataTree.BeginUpdate();

                    panel.DataTree.Nodes.Add(node);
                    SortNodesRecursively(node);

                    panel.DataTree.EndUpdate();
                }));
            }
            else
            {
                panel.DataTree.BeginUpdate();

                panel.DataTree.Nodes.Add(node);
                SortNodesRecursively(node);

                panel.DataTree.EndUpdate();
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Adds a WzObject to the WzNode and returns the newly created WzNode
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="undoRedoMan"></param>
 /// <returns></returns>
 public WzNode AddObject(WzObject obj, UndoRedoManager undoRedoMan)
 {
     if (CanNodeBeInserted(this, obj.Name))
     {
         TryParseImage();
         if (addObjInternal(obj))
         {
             WzNode node = new WzNode(obj, true);
             Nodes.Add(node);
             if (node.Tag is WzImageProperty)
             {
                 ((WzImageProperty)node.Tag).ParentImage.Changed = true;
             }
             undoRedoMan.AddUndoBatch(new System.Collections.Generic.List <UndoRedoAction> {
                 UndoRedoManager.ObjectAdded(this, node)
             });
             node.EnsureVisible();
             return(node);
         }
         else
         {
             Warning.Error("Could not insert property, make sure all types are correct");
             return(null);
         }
     }
     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(null);
     }
 }
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            ContextMenuStrip menu = null;

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                if (Tag is WzSubProperty)
                {
                    menu = new ContextMenuStrip();
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
                }
                else
                {
                    menu = new ContextMenuStrip();
                    menu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
                }
            }
            else if (Tag is WzImageProperty)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { /*export, import,*/ Remove });
            }
            else if (Tag is WzDirectory)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, /*export, import,*/ Remove });
            }
            else if (Tag is WzFile)
            {
                menu = new ContextMenuStrip();
                menu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            }
            currNode = node;
            return(menu);
        }
Esempio n. 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="otherWzFileToLoadAt"></param>
        /// <param name="path"></param>
        /// <param name="encVersion"></param>
        /// <param name="version"></param>
        /// <param name="panel"></param>
        /// <param name="currentDispatcher">Dispatcher thread</param>
        /// <returns></returns>
        private WzFile LoadWzFile(string path, WzMapleVersion encVersion, short version, MainPanel panel, Dispatcher currentDispatcher = null)
        {
            WzFile newFile;

            if (!OpenWzFile(path, encVersion, version, out newFile))
            {
                return(null);
            }
            WzNode node = new WzNode(newFile);

            // execute in main thread
            if (currentDispatcher != null)
            {
                currentDispatcher.BeginInvoke((Action)(() =>
                {
                    panel.DataTree.Nodes.Add(node);
                    SortNodesRecursively(node);
                }));
            }
            else
            {
                panel.DataTree.Nodes.Add(node);
                SortNodesRecursively(node);
            }
            return(newFile);
        }
Esempio n. 7
0
        private void SortNodesRecursively(WzNode parent)
        {
            if (Program.ConfigurationManager.UserSettings.Sort)
            {
                parent.TreeView.TreeViewNodeSorter = SORTER;

                parent.TreeView.Sort();
            }
        }
        /// <summary>
        /// Sort all nodes that is a parent of
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="sortFromTheParentNode">Sorts only items in the parent node</param>
        public void SortNodesRecursively(WzNode parent, bool sortFromTheParentNode = false)
        {
            if (Program.ConfigurationManager.UserSettings.Sort || sortFromTheParentNode)
            {
                parent.TreeView.TreeViewNodeSorter = new TreeViewNodeSorter(sortFromTheParentNode ? parent : null);

                parent.TreeView.BeginUpdate();
                parent.TreeView.Sort();
                parent.TreeView.EndUpdate();
            }
        }
Esempio n. 9
0
 public static WzNode GetChildNode(WzNode parentNode, string name)
 {
     foreach (WzNode node in parentNode.Nodes)
     {
         if (node.Text == name)
         {
             return(node);
         }
     }
     return(null);
 }
Esempio n. 10
0
        public void InsertWzFileUnsafe(WzFile f, MainPanel panel)
        {
            lock (wzFiles)
            {
                wzFiles.Add(f);
            }
            WzNode node = new WzNode(f);

            panel.DataTree.Nodes.Add(node);

            SortNodesRecursively(node);
        }
        /// <summary>
        /// Toolstrip menu when right clicking on nodes
        /// </summary>
        /// <param name="node"></param>
        /// <param name="Tag"></param>
        /// <returns></returns>
        public ContextMenuStrip CreateMenu(WzNode node, WzObject Tag)
        {
            int currentDataTreeSelectedCount = parentPanel.DataTree.SelectedNodes.Count;

            List <ToolStripItem> toolStripmenuItems = new List <ToolStripItem>();

            ContextMenuStrip menu = new ContextMenuStrip();

            if (Tag is WzImage || Tag is IPropertyContainer)
            {
                toolStripmenuItems.Add(AddPropsSubMenu);
                toolStripmenuItems.Add(Rename);
                // export, import
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzImageProperty)
            {
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzDirectory)
            {
                toolStripmenuItems.Add(AddDirsSubMenu);
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(Remove);
            }
            else if (Tag is WzFile)
            {
                toolStripmenuItems.Add(AddDirsSubMenu);
                toolStripmenuItems.Add(Rename);
                toolStripmenuItems.Add(SaveFile);
                toolStripmenuItems.Add(Unload);
                toolStripmenuItems.Add(Reload);
            }

            toolStripmenuItems.Add(FixLink);
            toolStripmenuItems.Add(ExpandAllChildNode);
            toolStripmenuItems.Add(CollapseAllChildNode);
            toolStripmenuItems.Add(SortAllChildNode);

            // Add
            foreach (ToolStripItem toolStripItem in toolStripmenuItems)
            {
                menu.Items.Add(toolStripItem);
            }

            currNode = node;
            return(menu);
        }
Esempio n. 12
0
 /// <summary>
 /// Adds a node
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public bool AddNode(WzNode node, bool reparseImage)
 {
     if (CanNodeBeInserted(this, node.Text))
     {
         TryParseImage(reparseImage);
         this.Nodes.Add(node);
         addObjInternal((WzObject)node.Tag);
         return(true);
     }
     else
     {
         MessageBox.Show("Cannot insert node \"" + node.Text + "\" because a node with the same name already exists. Skipping.", "Skipping Node", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return(false);
     }
 }
Esempio n. 13
0
        /// <summary>
        /// Loads the Data.wz file
        /// </summary>
        /// <param name="path"></param>
        /// <param name="encVersion"></param>
        /// <param name="panel"></param>
        /// <returns></returns>
        public WzImage LoadDataWzHotfixFile(string path, WzMapleVersion encVersion, MainPanel panel)
        {
            FileStream fs = File.Open(path, FileMode.Open);

            WzImage img = new WzImage(Path.GetFileName(path), fs, encVersion);

            img.ParseImage(true);

            WzNode node = new WzNode(img);

            panel.DataTree.Nodes.Add(node);
            if (Program.ConfigurationManager.UserSettings.Sort)
            {
                SortNodesRecursively(node);
            }
            return(img);
        }
        /// <summary>
        /// Loads the Data.wz file
        /// </summary>
        /// <param name="path"></param>
        /// <param name="encVersion"></param>
        /// <param name="panel"></param>
        /// <returns></returns>
        public WzImage LoadDataWzHotfixFile(string path, WzMapleVersion encVersion, MainPanel panel)
        {
            FileStream fs = File.Open(path, FileMode.Open); // dont close this file stream until it is unloaded from memory

            WzImage img = new WzImage(Path.GetFileName(path), fs, encVersion);

            img.ParseImage(true);

            WzNode node = new WzNode(img);

            panel.DataTree.BeginUpdate();
            panel.DataTree.Nodes.Add(node);
            panel.DataTree.EndUpdate();

            if (Program.ConfigurationManager.UserSettings.Sort)
            {
                SortNodesRecursively(node);
            }
            return(img);
        }
Esempio n. 15
0
        public static bool CanNodeBeInserted(WzNode parentNode, string name)
        {
            WzObject obj = (WzObject)parentNode.Tag;

            if (obj is IPropertyContainer)
            {
                return(((IPropertyContainer)obj)[name] == null);
            }
            else if (obj is WzDirectory)
            {
                return(((WzDirectory)obj)[name] == null);
            }
            else if (obj is WzFile)
            {
                return(((WzFile)obj).WzDirectory[name] == null);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 16
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(MainPanel haRepackerMainPanel, UndoRedoManager undoMan)
        {
            this.parentPanel = haRepackerMainPanel;

            SaveFile = new ToolStripMenuItem("Save", Properties.Resources.disk, new EventHandler(
                                                 delegate(object sender, EventArgs e)
            {
                foreach (WzNode node in GetNodes(sender))
                {
                    new SaveForm(parentPanel, node).ShowDialog();
                }
            }));
            Rename = new ToolStripMenuItem("Rename", Properties.Resources.rename, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                WzNode currentNode = currNode;

                haRepackerMainPanel.PromptRenameWzTreeNode(currentNode);
            }));
            Remove = new ToolStripMenuItem("Remove", Properties.Resources.delete, new EventHandler(
                                               delegate(object sender, EventArgs e)
            {
                haRepackerMainPanel.PromptRemoveSelectedTreeNodes();
            }));

            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.WzFileManager.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))
                {
                    Program.WzFileManager.ReloadWzFile((WzFile)node.Tag, parentPanel);
                }
            }));
            CollapseAllChildNode = new ToolStripMenuItem("Collapse All", Properties.Resources.collapse, new EventHandler(
                                                             delegate(object sender, EventArgs e)
            {
                foreach (WzNode node in GetNodes(sender))
                {
                    node.Collapse();
                }
            }));
            ExpandAllChildNode = new ToolStripMenuItem("Expand all", Properties.Resources.expand, new EventHandler(
                                                           delegate(object sender, EventArgs e)
            {
                foreach (WzNode node in GetNodes(sender))
                {
                    node.ExpandAll();
                }
            }));
            SortAllChildNode = new ToolStripMenuItem("Sort child nodes", Properties.Resources.sort, new EventHandler(
                                                         delegate(object sender, EventArgs e)
            {
                foreach (WzNode node in GetNodes(sender))
                {
                    Program.WzFileManager.SortNodesRecursively(node, true);
                }
            }));

            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", 0, 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;
                }
                haRepackerMainPanel.AddWzDirectoryToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzByteFloatToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzCanvasToSelectedNode(nodes[0]);
            }));
            AddLong = new ToolStripMenuItem("Long", null, new EventHandler(
                                                delegate(object sender, EventArgs e)
            {
                WzNode[] nodes = GetNodes(sender);
                if (nodes.Length != 1)
                {
                    MessageBox.Show("Please select only ONE node");
                    return;
                }
                haRepackerMainPanel.AddWzLongToSelectedNode(nodes[0]);
            }));
            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;
                }
                haRepackerMainPanel.AddWzCompressedIntToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzConvexPropertyToSelectedNode(nodes[0]);
            }));
            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;
                }
                haRepackerMainPanel.AddWzDoublePropertyToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzNullPropertyToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzSoundPropertyToSelectedNode(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzStringPropertyToSelectedIndex(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzSubPropertyToSelectedIndex(nodes[0]);
            }));
            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;
                }

                haRepackerMainPanel.AddWzUnsignedShortPropertyToSelectedIndex(nodes[0]);
            }));
            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;
                }
                haRepackerMainPanel.AddWzUOLPropertyToSelectedIndex(nodes[0]);
            }));
            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;
                }
                haRepackerMainPanel.AddWzVectorPropertyToSelectedIndex(nodes[0]);
            }));

            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, AddLong, 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, Rename, /*export, import,*/ Remove });

            PropertyContainerMenu = new ContextMenuStrip();
            PropertyContainerMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });

            PropertyMenu = new ContextMenuStrip();
            PropertyMenu.Items.AddRange(new ToolStripItem[] { Rename, /*export, import,*/ Remove });

            SubPropertyMenu = new ContextMenuStrip();
            SubPropertyMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, Rename, /*export, import,*/ Remove });
        }
 public static UndoRedoAction ObjectRenamed(WzNode parent, WzNode item)
 {
     return(new UndoRedoAction(item, parent, UndoRedoType.ObjectRemoved));
 }
 public UndoRedoAction(WzNode item, WzNode parent, UndoRedoType type)
 {
     this.item   = item;
     this.parent = parent;
     this.type   = type;
 }