Beispiel #1
0
 public NewForm(HaRepackerMainPanel panel)
 {
     this.panel = panel;
     InitializeComponent();
     encryptionBox.SelectedIndex = (int)ApplicationSettings.MapleVersion;
     versionBox.Value            = 1;
 }
Beispiel #2
0
 public void ReloadAll(HaRepackerMainPanel panel)
 {
     for (int i = 0; i < wzFiles.Count; i++)
     {
         ReloadWzFile(wzFiles[i], panel);
     }
 }
Beispiel #3
0
 public SaveForm(HaRepackerMainPanel panel, WzNode wzNode)
 {
     InitializeComponent();
     this.wzNode = wzNode;
     this.wzf    = (WzFile)wzNode.Tag;
     this.panel  = panel;
 }
Beispiel #4
0
        public WzFile LoadWzFile(string path, HaRepackerMainPanel panel)
        {
            short fileVersion = -1;
            bool  isList      = WzTool.IsListFile(path);

            return(LoadWzFile(path, WzTool.DetectMapleVersion(path, out fileVersion), fileVersion, panel));
        }
Beispiel #5
0
        public void InsertWzFileUnsafe(WzFile f, HaRepackerMainPanel panel)
        {
            wzFiles.Add(f);
            WzNode node = new WzNode(f);

            panel.DataTree.Nodes.Add(node);
            SortNodesRecursively(node);
        }
Beispiel #6
0
        public void ReloadAll(HaRepackerMainPanel panel)
        {
            Dispatcher currentThread = Dispatcher.CurrentDispatcher;
            IReadOnlyCollection <WzFile> wzFileListCopy = this.WzFileListReadOnly;

            Parallel.ForEach(wzFiles, file =>
            {
                ReloadWzFile(file, panel, currentThread);
            });
        }
Beispiel #7
0
        public void ReloadWzFile(WzFile file, HaRepackerMainPanel panel)
        {
            WzMapleVersion encVersion = file.MapleVersion;
            string         path       = file.FilePath;
            short          version    = ((WzFile)file).Version;

            ((WzNode)file.HRTag).Delete();
            wzFiles.Remove(file);
            LoadWzFile(path, encVersion, (short)-1, panel);
        }
Beispiel #8
0
 public NewForm(HaRepackerMainPanel panel)
 {
     this.panel = panel;
     InitializeComponent();
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeGMS);
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeMSEA);
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeNone);
     encryptionBox.SelectedIndex = (int)ApplicationSettings.MapleVersion;
     versionBox.Value            = 1;
 }
Beispiel #9
0
 public SaveForm(HaRepackerMainPanel panel, WzNode wzNode)
 {
     InitializeComponent();
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeGMS);
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeMSEA);
     encryptionBox.Items.Add(HaRepacker.Properties.Resources.EncTypeNone);
     this.wzNode = wzNode;
     this.wzf    = (WzFile)wzNode.Tag;
     this.panel  = panel;
 }
Beispiel #10
0
 private void LoadWzFileThreadSafe(string path, HaRepackerMainPanel panel, bool detectMapleVersion)
 {
     if (panel.InvokeRequired)
     {
         panel.Invoke(new LoadWzFileDelegate(LoadWzFileCallback), path, panel, detectMapleVersion);
     }
     else
     {
         LoadWzFileCallback(path, panel, detectMapleVersion);
     }
 }
Beispiel #11
0
 public OptionsForm(HaRepackerMainPanel panel)
 {
     this.panel = panel;
     InitializeComponent();
     sortBox.Checked          = UserSettings.Sort;
     apngIncompEnable.Checked = UserSettings.UseApngIncompatibilityFrame;
     autoAssociateBox.Checked = UserSettings.AutoAssociate;
     if (UserSettings.DefaultXmlFolder != "")
     {
         defXmlFolderEnable.Checked = true;
         defXmlFolderBox.Text       = UserSettings.DefaultXmlFolder;
     }
     indentBox.Value            = UserSettings.Indentation;
     lineBreakBox.SelectedIndex = (int)UserSettings.LineBreakType;
     autoUpdate.Checked         = UserSettings.AutoUpdate;
 }
Beispiel #12
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, HaRepackerMainPanel 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 (UserSettings.Sort)
            {
                SortNodesRecursively(node);
            }
            return(img);
        }
Beispiel #13
0
 private void LoadWzFileCallback(string path, HaRepackerMainPanel panel, bool detectMapleVersion)
 {
     try
     {
         if (detectMapleVersion)
         {
             Program.WzMan.LoadWzFile(path, panel);
         }
         else
         {
             Program.WzMan.LoadWzFile(path, (WzMapleVersion)encryptionBox.SelectedIndex, MainPanel);
         }
     }
     catch
     {
         Warning.Error(string.Format(HaRepacker.Properties.Resources.MainCouldntOpenWZ, path));
     }
 }
Beispiel #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="file"></param>
        /// <param name="panel"></param>
        /// <param name="currentDispatcher"></param>
        public void ReloadWzFile(WzFile file, HaRepackerMainPanel panel, Dispatcher currentDispatcher = null)
        {
            WzMapleVersion encVersion = file.MapleVersion;
            string         path       = file.FilePath;
            short          version    = ((WzFile)file).Version;

            if (currentDispatcher != null)
            {
                currentDispatcher.BeginInvoke((Action)(() =>
                {
                    UnloadWzFile(file);
                }));
            }
            else
            {
                UnloadWzFile(file);
            }

            LoadWzFile(path, encVersion, (short)-1, panel, currentDispatcher);
        }
        public SaveForm(HaRepackerMainPanel panel, WzNode wzNode)
        {
            InitializeComponent();

            MainForm.AddWzEncryptionTypesToComboBox(encryptionBox);

            this.wzNode = wzNode;
            if (wzNode.Tag is WzImage)
            {
                this.wzImg           = (WzImage)wzNode.Tag;
                this.IsRegularWzFile = false;

                versionBox.Enabled = false;
            }
            else
            {
                this.wzf             = (WzFile)wzNode.Tag;
                this.IsRegularWzFile = true;
            }
            this.panel = panel;
        }
Beispiel #16
0
 public UndoRedoManager(HaRepackerMainPanel parentPanel)
 {
     this.parentPanel = parentPanel;
 }
 public FHMapper(HaRepackerMainPanel MainPanel)
 {
     this.MainPanel = MainPanel;
 }
Beispiel #18
0
        private WzFile LoadWzFile(string path, WzMapleVersion encVersion, short version, HaRepackerMainPanel panel)
        {
            WzFile newFile;

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

            panel.DataTree.Nodes.Add(node);
            if (UserSettings.Sort)
            {
                SortNodesRecursively(node);
            }
            return(newFile);
        }
Beispiel #19
0
 public WzFile LoadWzFile(string path, WzMapleVersion encVersion, HaRepackerMainPanel panel)
 {
     return(LoadWzFile(path, encVersion, (short)-1, panel));
 }
Beispiel #20
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, HaRepackerMainPanel 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);
        }
Beispiel #21
0
 /// <summary>
 /// Load a WZ file from path
 /// </summary>
 /// <param name="path"></param>
 /// <param name="encVersion"></param>
 /// <param name="panel"></param>
 /// <param name="currentDispatcher">Dispatcher thread</param>
 /// <returns></returns>
 public WzFile LoadWzFile(string path, WzMapleVersion encVersion, HaRepackerMainPanel panel, Dispatcher currentDispatcher = null)
 {
     return(LoadWzFile(path, encVersion, (short)-1, panel, currentDispatcher));
 }
Beispiel #22
0
        public ContextMenuManager(/*HaRepackerMainPanel parent*/)
        {
            //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.TreeControl.Parent.Parent.Parent);
                    parent.CallSaveForm(node);
                }
            }));
            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 IWzFile))
                    {
                        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))
                {
                    HaRepackerMainPanel parent = ((HaRepackerMainPanel)node.TreeControl.Parent.Parent.Parent);
                    parent.CallUnloadFile(node);
                }
            }));
            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.TreeControl.Parent.Parent.Parent);
                    parent.CallReloadFile(node);
                }
            }));

            AddList = new ToolStripMenuItem("List Entry", 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 (Interaction.NameInputBox.Show("Add List Entry", out name))
                {
                    nodes[0].AddObject(new WzListEntry(name));
                }
            }));
            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 (Interaction.NameInputBox.Show("Add Image", out name))
                {
                    nodes[0].AddObject(new WzImage(name));
                }
            }));
            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 (Interaction.NameInputBox.Show("Add Directory", out name))
                {
                    nodes[0].AddObject(new WzDirectory(name));
                }
            }));
            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 (Interaction.FloatingPointInputBox.Show("Add Float", out name, out val))
                {
                    nodes[0].AddObject(new WzByteFloatProperty(name, (float)val));
                }
            }));
            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; string path;
                if (Interaction.BitmapInputBox.Show("Add Canvas", out name, out path))
                {
                    Bitmap bmp            = new Bitmap(path);
                    WzCanvasProperty prop = new WzCanvasProperty(name);
                    prop.PngProperty      = new WzPngProperty();
                    prop.PngProperty.SetPNG(bmp);
                    nodes[0].AddObject(new WzCanvasProperty(name));
                }
            }));
            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 (Interaction.IntInputBox.Show("Add Int", out name, out val))
                {
                    nodes[0].AddObject(new WzCompressedIntProperty(name, (int)val));
                }
            }));
            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 (Interaction.NameInputBox.Show("Add Convex", out name))
                {
                    nodes[0].AddObject(new WzConvexProperty(name));
                }
            }));
            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 (Interaction.FloatingPointInputBox.Show("Add Double", out name, out val))
                {
                    nodes[0].AddObject(new WzDoubleProperty(name, (double)val));
                }
            }));
            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 (Interaction.NameInputBox.Show("Add Null", out name))
                {
                    nodes[0].AddObject(new WzNullProperty(name));
                }
            }));
            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 (Interaction.SoundInputBox.Show("Add Sound", out name, out path))
                {
                    try { nodes[0].AddObject(WzSoundProperty.CreateCustomProperty(name, path)); }
                    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 (Interaction.NameValueInputBox.Show("Add String", out name, out value))
                {
                    nodes[0].AddObject(new WzStringProperty(name, value));
                }
            }));
            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 (Interaction.NameInputBox.Show("Add Sub", out name))
                {
                    nodes[0].AddObject(new WzSubProperty(name));
                }
            }));
            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 (Interaction.IntInputBox.Show("Add Unsigned Short", out name, out val))
                {
                    nodes[0].AddObject(new WzUnsignedShortProperty(name, (ushort)val));
                }
            }));
            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 (Interaction.NameValueInputBox.Show("Add UOL", out name, out value))
                {
                    nodes[0].AddObject(new WzUOLProperty(name, value));
                }
            }));
            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 (Interaction.VectorInputBox.Show("Add Vector", out name, out pt))
                {
                    nodes[0].AddObject(new WzVectorProperty(name, new WzCompressedIntProperty("X", pt.Value.X), new WzCompressedIntProperty("Y", pt.Value.Y)));
                }
            }));

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

            WzFileMenu = new ContextMenuStrip();
            WzFileMenu.Items.AddRange(new ToolStripItem[] { AddDirsSubMenu, SaveFile, Unload, Reload });
            WzListFileMenu = new ContextMenuStrip();
            WzListFileMenu.Items.AddRange(new ToolStripItem[] { AddListSubMenu, 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 });
            MessageBox.Show(PropertyContainerMenu.Items.Count.ToString());
            PropertyMenu = new ContextMenuStrip();
            PropertyMenu.Items.AddRange(new ToolStripItem[] { /*export, import,*/ Remove });
            SubPropertyMenu = new ContextMenuStrip();
            SubPropertyMenu.Items.AddRange(new ToolStripItem[] { AddPropsSubMenu, /*export, import,*/ Remove });
        }
        /*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(HaRepackerMainPanel haRepackerMainPanel, 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)
            {
                haRepackerMainPanel.PromotRemoveSelectedTreeNodes();
            }));

            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 });
        }
Beispiel #24
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(HaRepackerMainPanel haRepackerMainPanel, 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)
            {
                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.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;
                }
                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, /*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 });
        }