From dc840605aada1220e29c8545609a9fd1e2482ea4 Mon Sep 17 00:00:00 2001 From: MaxED Date: Fri, 25 Sep 2015 13:20:53 +0000 Subject: [PATCH] Added emergency map backup system (EMBS). When the editor crashes, it will try to export a backup copy of the map structures. When the same map is loaded again, it will ask the user if he wants to restore the map. High-DPI: fixed many issues with incorrect controls size (Tag selector width, Comment Editor size, icons size, tabs size etc.). Cosmetic: changed map geometry dragging undo messages to more descriptive ones. Fixed, Textures Browser, cosmetic: "Show textures in subdirectories" checkbox should be repositioned when "Long texture names" one is invisible. Updated ZDoom_DECORATE.cfg (added A_SetFloatSpeed + a couple of fixes). --- Build/Scripting/ZDoom_DECORATE.cfg | 5 +- Source/Core/Builder.csproj | 3 +- Source/Core/Controls/CheckedColoredListBox.cs | 2 +- .../Core/Controls/CommentEditor.Designer.cs | 9 +- Source/Core/Controls/CommentEditor.cs | 8 + .../Core/Controls/DockersControl.Designer.cs | 1 - .../Controls/ImageBrowserControl.Designer.cs | 4 +- Source/Core/Controls/ImageBrowserControl.cs | 3 + .../Controls/ResourceListEditor.Designer.cs | 97 +--- Source/Core/Controls/ResourceListEditor.cs | 26 +- Source/Core/Controls/ResourceListEditor.resx | 166 +++--- .../Controls/ScriptEditorPanel.Designer.cs | 3 - .../Controls/ThingBrowserControl.Designer.cs | 65 ++- Source/Core/Controls/ThingBrowserControl.cs | 2 + Source/Core/Editing/CopyPasteManager.cs | 1 - Source/Core/Editing/UndoSnapshot.cs | 1 - .../Controls/TagSelector.Designer.cs | 6 +- Source/Core/GZBuilder/Controls/TagSelector.cs | 9 + .../Controls/TagsSelector.Designer.cs | 32 +- .../Core/GZBuilder/Controls/TagsSelector.cs | 11 + .../Core/GZBuilder/Controls/TagsSelector.resx | 6 - .../GZBuilder/Data/SharpCompressHelper.cs | 1 + .../Core/GZBuilder/Windows/ExceptionDialog.cs | 7 + .../Windows/ExceptionDialog.designer.cs | 1 + Source/Core/General/General.cs | 22 +- Source/Core/General/MapManager.cs | 164 ++++-- Source/Core/Geometry/Triangulation.cs | 4 +- Source/Core/IO/WAD.cs | 19 +- Source/Core/Map/MapSet.cs | 6 +- Source/Core/Map/Sector.cs | 1 + Source/Core/Rendering/IRenderer3D.cs | 1 - Source/Core/Rendering/Renderer2D.cs | 1 - Source/Core/Rendering/Renderer3D.cs | 3 +- .../Windows/ActionBrowserForm.Designer.cs | 1 - Source/Core/Windows/ConfigForm.Designer.cs | 1 - Source/Core/Windows/MainForm.Designer.cs | 9 +- Source/Core/Windows/MainForm.cs | 50 +- .../Core/Windows/PreferencesForm.Designer.cs | 1 - .../Windows/ResourceOptionsForm.Designer.cs | 1 - .../Windows/ThingEditFormUDMF.Designer.cs | 34 +- .../BuilderEffects/BuilderEffects.csproj | 1 + .../Plugins/BuilderModes/BuilderModes.csproj | 3 +- .../ClassicModes/DragGeometryMode.cs | 5 +- .../ClassicModes/DragLinedefsMode.cs | 1 + .../ClassicModes/DragSectorsMode.cs | 1 + .../ClassicModes/DragThingsMode.cs | 2 +- .../ClassicModes/DragVerticesMode.cs | 1 + .../ClassicModes/MakeSectorMode.cs | 12 +- .../Interface/MenusForm.Designer.cs | 497 +++++++++--------- 49 files changed, 679 insertions(+), 631 deletions(-) diff --git a/Build/Scripting/ZDoom_DECORATE.cfg b/Build/Scripting/ZDoom_DECORATE.cfg index ade38d94..a9db05bc 100644 --- a/Build/Scripting/ZDoom_DECORATE.cfg +++ b/Build/Scripting/ZDoom_DECORATE.cfg @@ -166,16 +166,17 @@ keywords A_Respawn = "A_Respawn[(int flags = RSF_FOG)]\nflags: RSF flags"; A_ScaleVelocity = "A_ScaleVelocity(float scale[, int pointer = AAPTR_DEFAULT])"; A_ScreamAndUnblock = "A_ScreamAndUnblock"; - A_SetAngle = "A_SetAngle(float angle[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\nangle: the actor\"s new angle, in degrees.\nflags: SPF flags."; + A_SetAngle = "A_SetAngle(float angle[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\nangle: the actor's new angle, in degrees.\nflags: SPF flags."; A_SetArg = "A_SetArg(int position, int value)"; A_SetDamageType = "A_SetDamageType(str damagetype)"; A_SetFloat = "A_SetFloat"; + A_SetFloatSpeed = "A_SetFloatSpeed(float speed[, int pointer = AAPTR_DEFAULT])"; A_FloatBobPhase = "A_FloatBobPhase(int bob)\nChanges the calling actor's FloatBobPhase to bob, which takes a number from 0 to 63.\nIf the number is invalid or not in range, the function does nothing."; A_SetFloorClip = "A_SetFloorClip"; A_SetHealth = "A_SetHealth(int health[, int pointer = AAPTR_DEFAULT])\nhealth: The health value to set for the actor. Valid values are 1 and above.\npointer: The actor to set its health. Default is AAPTR_DEFAULT, which corresponds to the calling actor."; A_SetInvulnerable = "A_SetInvulnerable"; A_SetMass = "A_SetMass(int mass)"; - A_SetPitch = "A_SetPitch(float pitch[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\npitch: The actor\"s new pitch, in degrees.\nflags: SPF flags."; + A_SetPitch = "A_SetPitch(float pitch[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\npitch: The actor's new pitch, in degrees.\nflags: SPF flags."; A_SetReflective = "A_SetReflective"; A_SetReflectiveInvulnerable = "A_SetReflectiveInvulnerable"; A_SetScale = "A_SetScale(float scaleX[, float scaleY = scaleX[, int pointer = AAPTR_DEFAULT]])"; diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj index c478d8ec..f6d9bd81 100644 --- a/Source/Core/Builder.csproj +++ b/Source/Core/Builder.csproj @@ -39,7 +39,7 @@ ..\..\Build\ true true - none + pdbonly x86 false prompt @@ -47,6 +47,7 @@ 3 + true true diff --git a/Source/Core/Controls/CheckedColoredListBox.cs b/Source/Core/Controls/CheckedColoredListBox.cs index 89231908..972ec018 100644 --- a/Source/Core/Controls/CheckedColoredListBox.cs +++ b/Source/Core/Controls/CheckedColoredListBox.cs @@ -7,7 +7,7 @@ namespace CodeImp.DoomBuilder.Controls { public class CheckedColoredListBox : CheckedListBox { - public Image WarningIcon { private get; set; } + public Image WarningIcon { get; set; } public CheckedColoredListBox() { diff --git a/Source/Core/Controls/CommentEditor.Designer.cs b/Source/Core/Controls/CommentEditor.Designer.cs index 393b8168..b18ceb13 100644 --- a/Source/Core/Controls/CommentEditor.Designer.cs +++ b/Source/Core/Controls/CommentEditor.Designer.cs @@ -39,9 +39,6 @@ // // textbox // - this.textbox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.textbox.Location = new System.Drawing.Point(3, 29); this.textbox.Multiline = true; this.textbox.Name = "textbox"; @@ -56,7 +53,6 @@ // // clear // - this.clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.clear.Image = global::CodeImp.DoomBuilder.Properties.Resources.Clear; this.clear.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.clear.Location = new System.Drawing.Point(424, 2); @@ -156,14 +152,15 @@ // // CommentEditor // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.clear); this.Controls.Add(this.panel1); this.Controls.Add(this.label1); this.Controls.Add(this.textbox); this.Name = "CommentEditor"; this.Size = new System.Drawing.Size(487, 300); + this.Resize += new System.EventHandler(this.CommentEditor_Resize); this.panel1.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Source/Core/Controls/CommentEditor.cs b/Source/Core/Controls/CommentEditor.cs index 9d76822a..ec4d58ae 100644 --- a/Source/Core/Controls/CommentEditor.cs +++ b/Source/Core/Controls/CommentEditor.cs @@ -136,6 +136,14 @@ namespace CodeImp.DoomBuilder.Controls if(e.KeyCode == Keys.Enter) e.IsInputKey = true; } + //mxd. Because anchor-based alignment fails when using high-Dpi settings... + private void CommentEditor_Resize(object sender, EventArgs e) + { + clear.Left = this.Width - clear.Margin.Right - clear.Width; + textbox.Width = this.Width - textbox.Left - textbox.Margin.Right; + textbox.Height = this.Height - textbox.Top - textbox.Margin.Bottom; + } + #endregion } } diff --git a/Source/Core/Controls/DockersControl.Designer.cs b/Source/Core/Controls/DockersControl.Designer.cs index 6ec048f9..81b25203 100644 --- a/Source/Core/Controls/DockersControl.Designer.cs +++ b/Source/Core/Controls/DockersControl.Designer.cs @@ -67,7 +67,6 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.ItemSize = new System.Drawing.Size(100, 26); this.tabs.Location = new System.Drawing.Point(0, 18); this.tabs.Margin = new System.Windows.Forms.Padding(0); this.tabs.Multiline = true; diff --git a/Source/Core/Controls/ImageBrowserControl.Designer.cs b/Source/Core/Controls/ImageBrowserControl.Designer.cs index 29afc0a2..7918e4a0 100644 --- a/Source/Core/Controls/ImageBrowserControl.Designer.cs +++ b/Source/Core/Controls/ImageBrowserControl.Designer.cs @@ -119,7 +119,7 @@ namespace CodeImp.DoomBuilder.Controls // showsubdirtextures // this.showsubdirtextures.AutoSize = true; - this.showsubdirtextures.Location = new System.Drawing.Point(595, 9); + this.showsubdirtextures.Location = new System.Drawing.Point(595, 8); this.showsubdirtextures.Name = "showsubdirtextures"; this.showsubdirtextures.Size = new System.Drawing.Size(172, 17); this.showsubdirtextures.TabIndex = 0; @@ -131,7 +131,7 @@ namespace CodeImp.DoomBuilder.Controls // longtexturenames // this.longtexturenames.AutoSize = true; - this.longtexturenames.Location = new System.Drawing.Point(470, 9); + this.longtexturenames.Location = new System.Drawing.Point(470, 8); this.longtexturenames.Name = "longtexturenames"; this.longtexturenames.Size = new System.Drawing.Size(119, 17); this.longtexturenames.TabIndex = 0; diff --git a/Source/Core/Controls/ImageBrowserControl.cs b/Source/Core/Controls/ImageBrowserControl.cs index 68df4567..706640b6 100644 --- a/Source/Core/Controls/ImageBrowserControl.cs +++ b/Source/Core/Controls/ImageBrowserControl.cs @@ -142,11 +142,14 @@ namespace CodeImp.DoomBuilder.Controls //mxd. Use long texture names? longtexturenames.Checked = (uselongtexturenames && General.Map.Config.UseLongTextureNames); longtexturenames.Visible = General.Map.Config.UseLongTextureNames; + if(!General.Map.Config.UseLongTextureNames) + showsubdirtextures.Left = longtexturenames.Left; //mxd } else { longtexturenames.Visible = false; //mxd uselongtexturenames = false; //mxd + showsubdirtextures.Left = longtexturenames.Left; //mxd } //mxd diff --git a/Source/Core/Controls/ResourceListEditor.Designer.cs b/Source/Core/Controls/ResourceListEditor.Designer.cs index 0d543f10..2e9f7dd3 100644 --- a/Source/Core/Controls/ResourceListEditor.Designer.cs +++ b/Source/Core/Controls/ResourceListEditor.Designer.cs @@ -29,8 +29,6 @@ namespace CodeImp.DoomBuilder.Controls private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.SplitContainer buttonsbar2; - System.Windows.Forms.SplitContainer buttonsbar1; System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] { "C:\\Windows\\Doom\\Doom2.wad"}, 3, System.Drawing.SystemColors.GrayText, System.Drawing.SystemColors.Window, null); System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem(new string[] { @@ -40,7 +38,6 @@ namespace CodeImp.DoomBuilder.Controls this.editresource = new System.Windows.Forms.Button(); this.deleteresources = new System.Windows.Forms.Button(); this.addresource = new System.Windows.Forms.Button(); - this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.resourceitems = new CodeImp.DoomBuilder.Controls.ResourceListView(); this.column = new System.Windows.Forms.ColumnHeader(); this.copypastemenu = new System.Windows.Forms.ContextMenuStrip(this.components); @@ -52,43 +49,13 @@ namespace CodeImp.DoomBuilder.Controls this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.removeresources = new System.Windows.Forms.ToolStripMenuItem(); this.images = new System.Windows.Forms.ImageList(this.components); - buttonsbar2 = new System.Windows.Forms.SplitContainer(); - buttonsbar1 = new System.Windows.Forms.SplitContainer(); - buttonsbar2.Panel1.SuspendLayout(); - buttonsbar2.Panel2.SuspendLayout(); - buttonsbar2.SuspendLayout(); - buttonsbar1.Panel1.SuspendLayout(); - buttonsbar1.Panel2.SuspendLayout(); - buttonsbar1.SuspendLayout(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); this.copypastemenu.SuspendLayout(); this.SuspendLayout(); // - // buttonsbar2 - // - buttonsbar2.Dock = System.Windows.Forms.DockStyle.Fill; - buttonsbar2.IsSplitterFixed = true; - buttonsbar2.Location = new System.Drawing.Point(0, 0); - buttonsbar2.Name = "buttonsbar2"; - // - // buttonsbar2.Panel1 - // - buttonsbar2.Panel1.Controls.Add(this.editresource); - // - // buttonsbar2.Panel2 - // - buttonsbar2.Panel2.Controls.Add(this.deleteresources); - buttonsbar2.Size = new System.Drawing.Size(228, 24); - buttonsbar2.SplitterDistance = 136; - buttonsbar2.TabIndex = 0; - // // editresource // - this.editresource.Dock = System.Windows.Forms.DockStyle.Fill; this.editresource.Enabled = false; - this.editresource.Location = new System.Drawing.Point(0, 0); + this.editresource.Location = new System.Drawing.Point(122, 140); this.editresource.Name = "editresource"; this.editresource.Size = new System.Drawing.Size(136, 24); this.editresource.TabIndex = 0; @@ -98,9 +65,8 @@ namespace CodeImp.DoomBuilder.Controls // // deleteresources // - this.deleteresources.Dock = System.Windows.Forms.DockStyle.Fill; this.deleteresources.Enabled = false; - this.deleteresources.Location = new System.Drawing.Point(0, 0); + this.deleteresources.Location = new System.Drawing.Point(259, 140); this.deleteresources.Name = "deleteresources"; this.deleteresources.Size = new System.Drawing.Size(88, 24); this.deleteresources.TabIndex = 0; @@ -108,28 +74,9 @@ namespace CodeImp.DoomBuilder.Controls this.deleteresources.UseVisualStyleBackColor = true; this.deleteresources.Click += new System.EventHandler(this.deleteresources_Click); // - // buttonsbar1 - // - buttonsbar1.Dock = System.Windows.Forms.DockStyle.Fill; - buttonsbar1.IsSplitterFixed = true; - buttonsbar1.Location = new System.Drawing.Point(0, 0); - buttonsbar1.Name = "buttonsbar1"; - // - // buttonsbar1.Panel1 - // - buttonsbar1.Panel1.Controls.Add(this.addresource); - // - // buttonsbar1.Panel2 - // - buttonsbar1.Panel2.Controls.Add(buttonsbar2); - buttonsbar1.Size = new System.Drawing.Size(350, 24); - buttonsbar1.SplitterDistance = 118; - buttonsbar1.TabIndex = 0; - // // addresource // - this.addresource.Dock = System.Windows.Forms.DockStyle.Fill; - this.addresource.Location = new System.Drawing.Point(0, 0); + this.addresource.Location = new System.Drawing.Point(3, 140); this.addresource.Name = "addresource"; this.addresource.Size = new System.Drawing.Size(118, 24); this.addresource.TabIndex = 0; @@ -137,34 +84,12 @@ namespace CodeImp.DoomBuilder.Controls this.addresource.UseVisualStyleBackColor = true; this.addresource.Click += new System.EventHandler(this.addresource_Click); // - // splitContainer1 - // - this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; - this.splitContainer1.IsSplitterFixed = true; - this.splitContainer1.Location = new System.Drawing.Point(0, 0); - this.splitContainer1.Name = "splitContainer1"; - this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; - // - // splitContainer1.Panel1 - // - this.splitContainer1.Panel1.Controls.Add(this.resourceitems); - // - // splitContainer1.Panel2 - // - this.splitContainer1.Panel2.Controls.Add(buttonsbar1); - this.splitContainer1.Panel2MinSize = 24; - this.splitContainer1.Size = new System.Drawing.Size(350, 166); - this.splitContainer1.SplitterDistance = 138; - this.splitContainer1.TabIndex = 0; - // // resourceitems // this.resourceitems.AllowDrop = true; this.resourceitems.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.column}); this.resourceitems.ContextMenuStrip = this.copypastemenu; - this.resourceitems.Dock = System.Windows.Forms.DockStyle.Fill; this.resourceitems.FullRowSelect = true; this.resourceitems.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; this.resourceitems.HideSelection = false; @@ -274,18 +199,13 @@ namespace CodeImp.DoomBuilder.Controls this.AllowDrop = true; this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.splitContainer1); + this.Controls.Add(this.resourceitems); + this.Controls.Add(this.addresource); + this.Controls.Add(this.editresource); + this.Controls.Add(this.deleteresources); this.Name = "ResourceListEditor"; this.Size = new System.Drawing.Size(350, 166); - buttonsbar2.Panel1.ResumeLayout(false); - buttonsbar2.Panel2.ResumeLayout(false); - buttonsbar2.ResumeLayout(false); - buttonsbar1.Panel1.ResumeLayout(false); - buttonsbar1.Panel2.ResumeLayout(false); - buttonsbar1.ResumeLayout(false); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - this.splitContainer1.ResumeLayout(false); + this.Resize += new System.EventHandler(this.ResourceListEditor_Resize); this.copypastemenu.ResumeLayout(false); this.ResumeLayout(false); @@ -298,7 +218,6 @@ namespace CodeImp.DoomBuilder.Controls private System.Windows.Forms.Button addresource; private CodeImp.DoomBuilder.Controls.ResourceListView resourceitems; private System.Windows.Forms.ColumnHeader column; - private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.ImageList images; private System.Windows.Forms.ContextMenuStrip copypastemenu; private System.Windows.Forms.ToolStripMenuItem copyresources; diff --git a/Source/Core/Controls/ResourceListEditor.cs b/Source/Core/Controls/ResourceListEditor.cs index 7bbcd36e..19b83c26 100644 --- a/Source/Core/Controls/ResourceListEditor.cs +++ b/Source/Core/Controls/ResourceListEditor.cs @@ -33,9 +33,7 @@ namespace CodeImp.DoomBuilder.Controls #region ================== Delegates / Events public delegate void ContentChanged(); - public event ContentChanged OnContentChanged; - public string StartPath; //mxd #endregion @@ -592,5 +590,29 @@ namespace CodeImp.DoomBuilder.Controls } #endregion + + #region ================== Events (mxd) + + //mxd. Because anchor-based alignment fails when using high-Dpi settings... + private void ResourceListEditor_Resize(object sender, EventArgs e) + { + resourceitems.Width = this.Width; + resourceitems.Height = this.Height - addresource.Height - addresource.Margin.Top - addresource.Margin.Bottom; + + addresource.Top = resourceitems.Bottom + addresource.Margin.Top; + editresource.Top = addresource.Top; + deleteresources.Top = addresource.Top; + + int buttonwidth = (this.Width - addresource.Margin.Left * 2) / 3; + addresource.Width = buttonwidth; + editresource.Width = buttonwidth; + deleteresources.Width = buttonwidth; + + addresource.Left = 0; + editresource.Left = addresource.Right + addresource.Margin.Left; + deleteresources.Left = editresource.Right + addresource.Margin.Left; + } + + #endregion } } diff --git a/Source/Core/Controls/ResourceListEditor.resx b/Source/Core/Controls/ResourceListEditor.resx index 774f37f0..3d32f7f3 100644 --- a/Source/Core/Controls/ResourceListEditor.resx +++ b/Source/Core/Controls/ResourceListEditor.resx @@ -117,30 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - True - - - False - - - True - - - True - - - True - - - False - - - True - - - True - 195, 17 @@ -152,23 +128,23 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAi - FgAAAk1TRnQBSQFMAgEBBgEAAZQBAAGUAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABIAMAAQEBAAEgBgABIDcAApYB/wEAApYB/wEAAkEB/wEAAkEB/wEAAkEB/wEAAkEB/y0AApYB/wEA - ApYB/wEAAkEB/wEAAkEB/wEAAkEB/wEAAkEB/5QAA4UB/wOFAf8DhQH/A4UB/wEAArkB/wEAApYB/wEA - ApYB/wEAAoEB/wEAAoEB/wEAAkEB/xAAA4AB/wOBAf8DgAH/A4AB/wOBAf8DgQH/A4AB/wEAArkB/wEA - ApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAkEB/5AAA4UB/wOFAf8DxgH/A8kB/wPGAf8BAAK5Af8DoAH/ - A2sB/wNrAf8BAAKBAf8BAAJBAf8MAAOAAf8DVQH/A4AB/wOVAf8DyQH/A9oB/wPaAf8DvAH/AQACuQH/ - A6gB/wOBAf8DgQH/AQACgQH/AQACQQH/jAADhQH/A8EB/wOFAf8D5QH/A+EB/wPlAf8BAAK5Af8BAAP/ - AQAD/wEAA/8BAAKBAf8BAAJBAf8IAAOAAf8DgQH/A4EB/wOAAf8DgQH/A4AB/wOBAf8DgAH/A4EB/wEA - ArkB/wEAA/8BAAP/AQAD/wEAAoEB/wEAAkEB/4gAA4UB/wPBAf8D0QH/A4UB/wPhAf8D4QH/A+UB/wEA - ArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmQB/xAAA48B/wOAAf8DgQH/A4AB/wOBAf8DgAH/ - A4EB/wEAArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmQB/4gAA4UB/wOFAf8DhQH/A8EB/wPe - Af8D3gH/A+EB/wEAArkB/wEAAkEB/wOxAf8DCwH/AQACgQH/AQACQQH/DAADjwH/A+MB/wOPAf8D1QH/ - A9oB/wPeAf8D4wH/A4AB/wEAArkB/wEAAkEB/wOxAf8DgQH/AQACgQH/AQACQQH/iAADhQH/A+EB/wPR - Af8D1QH/A9kB/wPeAf8D4QH/AQACuQH/AQACQQH/AwAB/wMLAf8BAAKWAf8BAAJBAf8MAAOPAf8DjwH/ - A48B/wPRAf8D2gH/A94B/wPeAf8DgAH/AQACuQH/AQACQQH/AwAB/wEQAQgBCQH/AQAClgH/AQACQQH/ - iAADhQH/A94B/wPNAf8D0QH/A9UB/wPZAf8D2QH/A94B/wEAArkB/wEAArkB/wEAApYB/wEAAkEB/xAA - A48B/wPeAf8D0QH/A9EB/wPVAf8D2gH/A9oB/wOAAf8FAAK5Af8BAAK5Af8BAAKWAf8BAAJBAf+MAAOF + FgAAAk1TRnQBSQFMAgEBBgEAAZwBAAGcAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABIDcAApYB/wEAApYB/wEAAkAB/wEAAkAB/wEAAkAB/wEAAkAB/y0AApYB/wEA + ApYB/wEAAkAB/wEAAkAB/wEAAkAB/wEAAkAB/5QAA4UB/wOFAf8DhQH/A4UB/wEAArkB/wEAApYB/wEA + ApYB/wEAAoEB/wEAAoEB/wEAAkAB/xAAA4AB/wOBAf8DgAH/A4AB/wOBAf8DgQH/A4AB/wEAArkB/wEA + ApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAkAB/5AAA4UB/wOFAf8DxgH/A8kB/wPGAf8BAAK5Af8DoAH/ + A2oB/wNqAf8BAAKBAf8BAAJAAf8MAAOAAf8DVAH/A4AB/wOVAf8DyQH/A9oB/wPaAf8DvAH/AQACuQH/ + A6gB/wOBAf8DgQH/AQACgQH/AQACQAH/jAADhQH/A8EB/wOFAf8D5QH/A+EB/wPlAf8BAAK5Af8BAAP/ + AQAD/wEAA/8BAAKBAf8BAAJAAf8IAAOAAf8DgQH/A4EB/wOAAf8DgQH/A4AB/wOBAf8DgAH/A4EB/wEA + ArkB/wEAA/8BAAP/AQAD/wEAAoEB/wEAAkAB/4gAA4UB/wPBAf8D0QH/A4UB/wPhAf8D4QH/A+UB/wEA + ArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmMB/xAAA48B/wOAAf8DgQH/A4AB/wOBAf8DgAH/ + A4EB/wEAArkB/wEAApYB/wEAApYB/wEAAoEB/wEAAoEB/wEAAmMB/4gAA4UB/wOFAf8DhQH/A8EB/wPe + Af8D3gH/A+EB/wEAArkB/wEAAkAB/wOxAf8DCgH/AQACgQH/AQACQAH/DAADjwH/A+MB/wOPAf8D1QH/ + A9oB/wPeAf8D4wH/A4AB/wEAArkB/wEAAkAB/wOxAf8DgQH/AQACgQH/AQACQAH/iAADhQH/A+EB/wPR + Af8D1QH/A9kB/wPeAf8D4QH/AQACuQH/AQACQAH/AwAB/wMKAf8BAAKWAf8BAAJAAf8MAAOPAf8DjwH/ + A48B/wPRAf8D2gH/A94B/wPeAf8DgAH/AQACuQH/AQACQAH/AwAB/wEPAQcBCAH/AQAClgH/AQACQAH/ + iAADhQH/A94B/wPNAf8D0QH/A9UB/wPZAf8D2QH/A94B/wEAArkB/wEAArkB/wEAApYB/wEAAkAB/xAA + A48B/wPeAf8D0QH/A9EB/wPVAf8D2gH/A9oB/wOAAf8FAAK5Af8BAAK5Af8BAAKWAf8BAAJAAf+MAAOF Af8D3gH/A80B/wPNAf8D0QH/A9UB/wPZAf8D2QH/A94B/wPZAf8DhQH/FAADjwH/A94B/wPNAf8DzQH/ A9EB/wPVAf8D2gH/A4AB/wQAA48B/wOPAf8DgQH/kAADhQH/A94B/wPJAf8DyQH/A80B/wPRAf8D1QH/ A9UB/wPZAf8D1QH/A4UB/xQAA48B/wPeAf8DyQH/A8kB/wPNAf8D0QH/A9UB/wOAAf8EAAOBAf8D0QH/ @@ -178,68 +154,68 @@ A4AB/wPRAf8DpAH/kAADhQH/A9kB/wPBAf8DxgH/A8YB/wPJAf8DzQH/A80B/wPRAf8D0QH/A4UB/xQA A48B/wOPAf8DjwH/A48B/wOPAf8DjwH/A48B/wOPAf8EAAOAAf8DoAH/A4EB/5AAA4UB/wP1Af8D4QH/ A94B/wPeAf8D2QH/A9kB/wPZAf8D1QH/A9UB/wOFAf8QAAOAAf8DgAH/A4EB/wOAAf8DgQH/A4EB/wOB - Af8DgQH/A4EB/wOAAf8DmgH/A58B/wNSAf8DgAH/jAADhQH/A4UB/wOFAf8DhQH/A4UB/wOFAf8DhQH/ - A4UB/wOFAf8DhQH/A4UB/xQAA4EB/wNbAf8DlQH/A8kB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A7wB/wOA + Af8DgQH/A4EB/wOAAf8DmgH/A58B/wNRAf8DgAH/jAADhQH/A4UB/wOFAf8DhQH/A4UB/wOFAf8DhQH/ + A4UB/wOFAf8DhQH/A4UB/xQAA4EB/wNaAf8DlQH/A8kB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A7wB/wOA Af8DgAH/A4AB/9AAA4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf8DgAH/A4AB/wOAAf//ADQA - Af8DAAH/AwAB/wMAAf8tAAKWAf8BAAKWAf8BAAJBAf8BAAJBAf8BAAJBAf8BAAJBAf9YAAMQAf8DEAH/ - AxAB/wMQAf8DEAH/AxAB/wMQAf8DEAH/GAABAwIAAf8BAwIAAf8BAwIAAf8BAwIAAf8BAwIAAf8BAwIA - Af8BAwIAAf8BHgEUARAB/wFlAWEBVwH/AVIBTQEgAf8BDwEKAQAB/wEDAgAB/ykAArkB/wEAApYB/wEA - ApYB/wEAAoEB/wEAAoEB/wEAAkEB/wQAAYEBiAGQAf8BYgGBAZAB/wFiAoEB/wFSAoEB/wFSAWIBgQH/ - AUIBWgFiAf8BQgFKAVIB/wEyAToBQgH/ASICMgH/AiIBMgH/ARIBGgEiAf8DEgH/AhIBIgH/HAADEAH/ - AwIB/wOwAf8DsQH/A7AB/wOtAf8DqwH/A6AB/wMQAf8UAAEOAgAB/wEyASABAQH/AVYBSAEiAf8BnwGC - ASkB/wHbAccBkAH/AeYB1wG0Af8B5gHXAbQB/wG0Aa4BjwH/AWgBXgE7Af8BbAFeAToB/wFLAT8BGAH/ - ARIBBgEAAf8BAwIAAf8EAAOXAf8DkQH/A4kB/wOEAf8DgQH/A2IB/wNbAf8DTgH/A0EB/wEAArkB/wOg - Af8DawH/A2sB/wEAAoEB/wEAAkEB/wQAAYEBiAGQAf8BkAGoAbAB/wGQAagBsAH/AQIBkAHQAf8BAgGQ - AdAB/wECAZAB0AH/AQIBkAHAAf8BEgGIAcAB/wESAYEBsAH/ARIBgQGwAf8BIgGBAaAB/wEiAYEBkAH/ - ASIBSgFiAf8DkgH/FAADEAH/A6oB/wMCAf8D1wH/A9kB/wPcAf8D3wH/A+EB/wPPAf8DEAH/EwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQ8BCAEEAf8BXwFWAUIB/wFlAVQBJwH/AR0BDgEA - Af8BAwIAAf8EAAOXAf8DsQH/A7EB/wOEAf8DhAH/A4QB/wOBAf8DhAH/A4EB/wEAArkB/wEAA/8BAAP/ - AQAD/wEAAoEB/wEAAkEB/wQAAYEBiAGQAf8BYgHYAv8BkAGoAbAB/wGBAeAC/wFiAdAC/wFSAcgC/wFS - AcgC/wFCAcAB8AH/ATIBsAHwAf8BMgGoAfAB/wEiAaAB4AH/ARIBkAHQAf8BIgFqAYEB/wFbAWMBaQH/ - EAADEAH/A6oB/wPBAf8DAgH/A9UB/wPZAf8D3QH/A+EB/wPlAf8D0gH/AxAB/xgAA1UB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wQAASkBIQEbAf8BYQFbAVEB/wEMAQIBBQH/CAADngH/A74B/wOxAf8DywH/ - A74B/wO4Af8DuAH/A6sB/wOkAf8BAAK5Af8BAAKWAf8BAAKWAf8BAAKBAf8BAAKBAf8BAAJkAf8EAAGB - AZABoAH/AWIB2AL/AZABqAGwAf8BkAHAAdAB/wGBAdgC/wFiAdAC/wFiAdAC/wFSAcgC/wFSAcAC/wFC - AbgB8AH/ATIBsAHwAf8BMgGoAfAB/wESAYgB0AH/ASIBSgFiAf8DkgH/DAADEAH/AwIB/wMCAf8DqgH/ - A84B/wPTAf8D2AH/A9wB/wPgAf8D0QH/AxAB/xQAA1UB/wPYAf8DVQH/A8AB/wPOAf8D0wH/A9gB/wMA - Af8EAAEjARkBGAH/A8AB/wOBAf8IAAOkAf8DvgH/A7EB/wO+Af8DxAH/A74B/wO+Af8DuAH/A7gB/wEA - ArkB/wEAAkEB/wOxAf8DCwH/AQACgQH/AQACQQH/BAABgQGQAaAB/wGBAdgB8AH/AWIB2AL/AZABqAGw - Af8BgQHgAv8BgQHQAv8BYgHYAv8BYgHQAv8BYgHQAv8BUgHIAv8BQgHAAfAB/wFCAbgB8AH/ATIBsAHw - Af8BIgFqAYEB/wOBAf8MAAMQAf8D1QH/A8EB/wPEAf8DyQH/A88B/wPTAf8D1wH/A9sB/wPNAf8DEAH/ - FAADVQH/A1UB/wNVAf8DwAH/A8kB/wPPAf8D0wH/AwAB/wQAA1UB/wNVAf8BDwEGAQgB/wgAA6QB/wPE - Af8DvgH/A7EB/wPLAf8DxAH/A74B/wO+Af8DvgH/AQACuQH/AQACQQH/AwAB/wMLAf8BAAKWAf8BAAJB - Af8EAAGBAZgBoAH/AZAB4AHwAf8BYgHYAv8BkAGoAbAB/wGQAbgBwAH/AYEB2AL/AWIB2AL/AWIB2AL/ - AWIB2AL/AWIB0AL/AVIB0AL/AVIByAL/AUIBuAHwAf8BMgGgAeAB/wFLAWkBgQH/A5IB/wgAAxAB/wPT - Af8DvAH/A8AB/wPFAf8DyQH/A80B/wPRAf8D1QH/A8wB/wMQAf8UAANVAf8D0wH/A7wB/wPAAf8DxQH/ - A8kB/wPNAf8DAAH/BAABHQETARQB/wPAAf8DgQH/CAADpAH/A8sB/wO+Af8DsQH/A7gB/wPEAf8DvgH/ - A74B/wO+Af8DvgH/AQACuQH/AQACuQH/AQAClgH/AQACQQH/AToBWAFoAf8DpAH/AYEBmAGgAf8BkAHg - AfAB/wGgAegC/wFiAdgC/wGQAagBsAH/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/ - AYEB4AL/AYEB2AL/AYEB2AL/AVIBqAHQAf8DgQH/CAADEAH/A9EB/wO3Af8DuwH/A8AB/wPEAf8DyAH/ - A8wB/wPRAf8DyQH/AxAB/xQAA1UB/wPRAf8DtwH/A7sB/wPAAf8DxAH/A8gB/wMAAf8EAANVAf8DVQH/ - AQgBAQECAf8IAAOkAf8DywH/A9gB/wO+Af8DsQH/A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A8sB/wPE + Af8DAAH/AwAB/wMAAf8tAAKWAf8BAAKWAf8BAAJAAf8BAAJAAf8BAAJAAf8BAAJAAf9YAAMPAf8DDwH/ + Aw8B/wMPAf8DDwH/Aw8B/wMPAf8DDwH/GAABAgIAAf8BAgIAAf8BAgIAAf8BAgIAAf8BAgIAAf8BAgIA + Af8BAgIAAf8BHQETAQ8B/wFkAWABVgH/AVEBTAEfAf8BDgEJAQAB/wECAgAB/ykAArkB/wEAApYB/wEA + ApYB/wEAAoEB/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BYQGBAZAB/wFhAoEB/wFRAoEB/wFRAWEBgQH/ + AUEBWQFhAf8BQQFJAVEB/wExATkBQQH/ASECMQH/AiEBMQH/AREBGQEhAf8DEQH/AhEBIQH/HAADDwH/ + AwEB/wOwAf8DsQH/A7AB/wOtAf8DqwH/A6AB/wMPAf8UAAENAgAB/wExAR8BAAH/AVUBRwEhAf8BnwGC + ASgB/wHbAccBkAH/AeYB1wG0Af8B5gHXAbQB/wG0Aa4BjwH/AWcBXQE6Af8BawFdATkB/wFKAT4BFwH/ + AREBBQEAAf8BAgIAAf8EAAOXAf8DkQH/A4kB/wOEAf8DgQH/A2EB/wNaAf8DTQH/A0AB/wEAArkB/wOg + Af8DagH/A2oB/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BkAGoAbAB/wGQAagBsAH/AQEBkAHQAf8BAQGQ + AdAB/wEBAZAB0AH/AQEBkAHAAf8BEQGIAcAB/wERAYEBsAH/AREBgQGwAf8BIQGBAaAB/wEhAYEBkAH/ + ASEBSQFhAf8DkgH/FAADDwH/A6oB/wMBAf8D1wH/A9kB/wPcAf8D3wH/A+EB/wPPAf8DDwH/EwAB/wMA + Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AQ4BBwEDAf8BXgFVAUEB/wFkAVMBJgH/ARwBDQEA + Af8BAgIAAf8EAAOXAf8DsQH/A7EB/wOEAf8DhAH/A4QB/wOBAf8DhAH/A4EB/wEAArkB/wEAA/8BAAP/ + AQAD/wEAAoEB/wEAAkAB/wQAAYEBiAGQAf8BYQHYAv8BkAGoAbAB/wGBAeAC/wFhAdAC/wFRAcgC/wFR + AcgC/wFBAcAB8AH/ATEBsAHwAf8BMQGoAfAB/wEhAaAB4AH/AREBkAHQAf8BIQFpAYEB/wFaAWIBaAH/ + EAADDwH/A6oB/wPBAf8DAQH/A9UB/wPZAf8D3QH/A+EB/wPlAf8D0gH/Aw8B/xgAA1QB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wQAASgBIAEaAf8BYAFaAVAB/wELAQEBBAH/CAADngH/A74B/wOxAf8DywH/ + A74B/wO4Af8DuAH/A6sB/wOkAf8BAAK5Af8BAAKWAf8BAAKWAf8BAAKBAf8BAAKBAf8BAAJjAf8EAAGB + AZABoAH/AWEB2AL/AZABqAGwAf8BkAHAAdAB/wGBAdgC/wFhAdAC/wFhAdAC/wFRAcgC/wFRAcAC/wFB + AbgB8AH/ATEBsAHwAf8BMQGoAfAB/wERAYgB0AH/ASEBSQFhAf8DkgH/DAADDwH/AwEB/wMBAf8DqgH/ + A84B/wPTAf8D2AH/A9wB/wPgAf8D0QH/Aw8B/xQAA1QB/wPYAf8DVAH/A8AB/wPOAf8D0wH/A9gB/wMA + Af8EAAEiARgBFwH/A8AB/wOBAf8IAAOkAf8DvgH/A7EB/wO+Af8DxAH/A74B/wO+Af8DuAH/A7gB/wEA + ArkB/wEAAkAB/wOxAf8DCgH/AQACgQH/AQACQAH/BAABgQGQAaAB/wGBAdgB8AH/AWEB2AL/AZABqAGw + Af8BgQHgAv8BgQHQAv8BYQHYAv8BYQHQAv8BYQHQAv8BUQHIAv8BQQHAAfAB/wFBAbgB8AH/ATEBsAHw + Af8BIQFpAYEB/wOBAf8MAAMPAf8D1QH/A8EB/wPEAf8DyQH/A88B/wPTAf8D1wH/A9sB/wPNAf8DDwH/ + FAADVAH/A1QB/wNUAf8DwAH/A8kB/wPPAf8D0wH/AwAB/wQAA1QB/wNUAf8BDgEFAQcB/wgAA6QB/wPE + Af8DvgH/A7EB/wPLAf8DxAH/A74B/wO+Af8DvgH/AQACuQH/AQACQAH/AwAB/wMKAf8BAAKWAf8BAAJA + Af8EAAGBAZgBoAH/AZAB4AHwAf8BYQHYAv8BkAGoAbAB/wGQAbgBwAH/AYEB2AL/AWEB2AL/AWEB2AL/ + AWEB2AL/AWEB0AL/AVEB0AL/AVEByAL/AUEBuAHwAf8BMQGgAeAB/wFKAWgBgQH/A5IB/wgAAw8B/wPT + Af8DvAH/A8AB/wPFAf8DyQH/A80B/wPRAf8D1QH/A8wB/wMPAf8UAANUAf8D0wH/A7wB/wPAAf8DxQH/ + A8kB/wPNAf8DAAH/BAABHAESARMB/wPAAf8DgQH/CAADpAH/A8sB/wO+Af8DsQH/A7gB/wPEAf8DvgH/ + A74B/wO+Af8DvgH/AQACuQH/AQACuQH/AQAClgH/AQACQAH/ATkBVwFnAf8DpAH/AYEBmAGgAf8BkAHg + AfAB/wGgAegC/wFhAdgC/wGQAagBsAH/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/AYEB4AL/ + AYEB4AL/AYEB2AL/AYEB2AL/AVEBqAHQAf8DgQH/CAADDwH/A9EB/wO3Af8DuwH/A8AB/wPEAf8DyAH/ + A8wB/wPRAf8DyQH/Aw8B/xQAA1QB/wPRAf8DtwH/A7sB/wPAAf8DxAH/A8gB/wMAAf8EAANUAf8DVAH/ + AQcBAAEBAf8IAAOkAf8DywH/A9gB/wO+Af8DsQH/A8sB/wPLAf8DywH/A8sB/wPLAf8DywH/A8sB/wPE Af8DxAH/A6QB/wOJAf8BkAKgAf8BoAHoAfAB/wGgAegC/wGgAegC/wGQAagBsAH/AZABqAGwAf8BkAGo AbAB/wGQAagBsAH/AYEBoAGwAf8BgQGgAbAB/wGBAZgBoAH/AYEBmAGgAf8BgQGQAaAB/wGBAZABoAH/ - AYEBiAGQAf8BgQGIAZAB/wgAAxAB/wPRAf8DswH/A7UB/wO5Af8DvwH/A8MB/wPHAf8DywH/A8YB/wMQ - Af8UAANVAf8D0QH/A7MB/wO1Af8DuQH/A78B/wPDAf8DAAH/BAABHQETARQB/wPAAf8DgQH/CAADqwH/ + AYEBiAGQAf8BgQGIAZAB/wgAAw8B/wPRAf8DswH/A7UB/wO5Af8DvwH/A8MB/wPHAf8DywH/A8YB/wMP + Af8UAANUAf8D0QH/A7MB/wO1Af8DuQH/A78B/wPDAf8DAAH/BAABHAESARMB/wPAAf8DgQH/CAADqwH/ A9IB/wPYAf8D2AH/A7EB/wOxAf8DsQH/A7EB/wOrAf8DqwH/A6QB/wOkAf8DpAH/A6QB/wOeAf8DlwH/ - AZABoAGwAf8BoAHoAfAB/wGgAfAC/wGgAegC/wGgAegC/wGBAdgC/wFiAdgC/wFiAdgC/wFiAdgC/wFi - AdgC/wFiAdgC/wFiAdgC/wGBAYgBkAH/FAADEAH/A9EB/wOtAf8DsQH/A7QB/wO5Af8DvAH/A8EB/wPF - Af8DxAH/AxAB/xQAA1UB/wPRAf8DrQH/A7EB/wO0Af8DuQH/A7wB/wMAAf8EAANVAf8DVQH/AQgBAQEC + AZABoAGwAf8BoAHoAfAB/wGgAfAC/wGgAegC/wGgAegC/wGBAdgC/wFhAdgC/wFhAdgC/wFhAdgC/wFh + AdgC/wFhAdgC/wFhAdgC/wGBAYgBkAH/FAADDwH/A9EB/wOtAf8DsQH/A7QB/wO5Af8DvAH/A8EB/wPF + Af8DxAH/Aw8B/xQAA1QB/wPRAf8DrQH/A7EB/wO0Af8DuQH/A7wB/wMAAf8EAANUAf8DVAH/AQcBAAEB Af8IAAOxAf8D0gH/A9gB/wPYAf8D2AH/A8sB/wO+Af8DvgH/A74B/wO+Af8DvgH/A74B/wOXAf8MAAGQ AaABsAH/AaAC8AH/AbAC8AH/AaAB8AL/AaAB6AL/AaAB6AL/AYEB2AL/AZACoAH/AYEBmAGgAf8BgQGY - AaAB/wGBAZABoAH/AYECkAH/AYEBiAGQAf8UAAMQAf8DygH/A6gB/wOsAf8DsAH/A7QB/wO4Af8DvAH/ - A8AB/wPBAf8DEAH/FAADVQH/A8oB/wOoAf8DrAH/A7AB/wO0Af8DuAH/AwAB/wQAAR0BEwEUAf8DwAH/ + AaAB/wGBAZABoAH/AYECkAH/AYEBiAGQAf8UAAMPAf8DygH/A6gB/wOsAf8DsAH/A7QB/wO4Af8DvAH/ + A8AB/wPBAf8DDwH/FAADVAH/A8oB/wOoAf8DrAH/A7AB/wO0Af8DuAH/AwAB/wQAARwBEgETAf8DwAH/ A4EB/wgAA7EB/wPSAf8D2AH/A9gB/wPYAf8D2AH/A8QB/wOrAf8DpAH/A6QB/wOkAf8DngH/A5cB/wwA - AZABqAGwAf8BoAHQAeAB/wGwAvAB/wGwAvAB/wGgAfAC/wGgAegC/wGQAaABsAH/A5IB/ygAAxAB/wPL - Af8DqQH/A6wB/wOwAf8DtAH/A7cB/wO7Af8DvQH/A8AB/wMQAf8UAANVAf8DVQH/A1UB/wNVAf8DVQH/ - A1UB/wNVAf8DVQH/BAABEgEKAQsB/wGFAYMBYwH/ARQBCwEKAf8IAAOxAf8DywH/A9gB/wPYAf8D2AH/ + AZABqAGwAf8BoAHQAeAB/wGwAvAB/wGwAvAB/wGgAfAC/wGgAegC/wGQAaABsAH/A5IB/ygAAw8B/wPL + Af8DqQH/A6wB/wOwAf8DtAH/A7cB/wO7Af8DvQH/A8AB/wMPAf8UAANUAf8DVAH/A1QB/wNUAf8DVAH/ + A1QB/wNUAf8DVAH/BAABEQEJAQoB/wGFAYMBYgH/ARMBCgEJAf8IAAOxAf8DywH/A9gB/wPYAf8D2AH/ A9gB/wOxAf8DpAH/JAABkAGoAbAB/wGQAagBsAH/AZABqAGwAf8BkAGoAbAB/wGQAagBsAH/A5IB/ywA - AxAB/wPyAf8D1QH/A9IB/wPRAf8DzgH/A8sB/wPKAf8DxwH/A8YB/wMQAf8TAAH/AQMCAAH/AQMCAAH/ - AQMCAAH/AQMCAAH/AQMCAAH/AQMCAAH/AQMCAAH/AQMCAAH/AQMCAAH/AYEBaQFaAf8BnQGRAUkB/wEu - AR4BAAH/AwAB/wgAA7EB/wOxAf8DsQH/A7EB/wOxAf8DpAH/bAADEAH/AxAB/wMQAf8DEAH/AxAB/wMQ - Af8DEAH/AxAB/wMQAf8DEAH/AxAB/xQAAQYCAAH/AUYBKgEAAf8BnwGCASkB/wHbAccBkAH/AeYB1wG0 - Af8B5gHXAbQB/wHmAdcBtAH/AeYB1wG0Af8B4AHVAbEB/wG0Aa4BjwH/AVMBRwEkAf8BFgEJAQAB/wED - AgAB/9MAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BAwIAAf9IAAFCAU0BPgcA + Aw8B/wPyAf8D1QH/A9IB/wPRAf8DzgH/A8sB/wPKAf8DxwH/A8YB/wMPAf8TAAH/AQICAAH/AQICAAH/ + AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AQICAAH/AYEBaAFZAf8BnQGRAUgB/wEt + AR0BAAH/AwAB/wgAA7EB/wOxAf8DsQH/A7EB/wOxAf8DpAH/bAADDwH/Aw8B/wMPAf8DDwH/Aw8B/wMP + Af8DDwH/Aw8B/wMPAf8DDwH/Aw8B/xQAAQUCAAH/AUUBKQEAAf8BnwGCASgB/wHbAccBkAH/AeYB1wG0 + Af8B5gHXAbQB/wHmAdcBtAH/AeYB1wG0Af8B4AHVAbEB/wG0Aa4BjwH/AVIBRgEjAf8BFQEIAQAB/wEC + AgAB/9MAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BAgIAAf9IAAFCAU0BPgcA AT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/AQAB/wGBAf8BwAQAAfgBAQHgBQAB8AEBAcAFAAHg AQEBgAUAAcABAQHgBQABwAEBAcAFAAHAAQEBwAUAAcABAwHAASEEAAHAAQcBwAEjBAABwAEHAcABIwQA AcABBwHAASMEAAHAAQcBwAEjBAABwAEHAcABIwQAAcABBwGAAQEEAAHAAQcBwAEBBAAC/wHgAQMEAAX/ diff --git a/Source/Core/Controls/ScriptEditorPanel.Designer.cs b/Source/Core/Controls/ScriptEditorPanel.Designer.cs index bbefcbeb..25d9223d 100644 --- a/Source/Core/Controls/ScriptEditorPanel.Designer.cs +++ b/Source/Core/Controls/ScriptEditorPanel.Designer.cs @@ -127,7 +127,6 @@ namespace CodeImp.DoomBuilder.Controls // this.buttonnew.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonnew.Image = global::CodeImp.DoomBuilder.Properties.Resources.NewScript; - this.buttonnew.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.buttonnew.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttonnew.Margin = new System.Windows.Forms.Padding(6, 1, 0, 2); this.buttonnew.Name = "buttonnew"; @@ -138,7 +137,6 @@ namespace CodeImp.DoomBuilder.Controls // this.buttonopen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonopen.Image = global::CodeImp.DoomBuilder.Properties.Resources.OpenScript; - this.buttonopen.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.buttonopen.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttonopen.Margin = new System.Windows.Forms.Padding(3, 1, 0, 2); this.buttonopen.Name = "buttonopen"; @@ -278,7 +276,6 @@ namespace CodeImp.DoomBuilder.Controls this.buttonclose.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; this.buttonclose.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonclose.Image = global::CodeImp.DoomBuilder.Properties.Resources.Close; - this.buttonclose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.buttonclose.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttonclose.Name = "buttonclose"; this.buttonclose.Size = new System.Drawing.Size(23, 22); diff --git a/Source/Core/Controls/ThingBrowserControl.Designer.cs b/Source/Core/Controls/ThingBrowserControl.Designer.cs index b23f5ddf..8357c4c5 100644 --- a/Source/Core/Controls/ThingBrowserControl.Designer.cs +++ b/Source/Core/Controls/ThingBrowserControl.Designer.cs @@ -40,15 +40,15 @@ namespace CodeImp.DoomBuilder.Controls this.thingimages = new System.Windows.Forms.ImageList(this.components); this.infopanel = new System.Windows.Forms.Panel(); this.spritepanel = new System.Windows.Forms.Panel(); + this.spritetex = new CodeImp.DoomBuilder.Controls.ConfigurablePictureBox(); this.classname = new System.Windows.Forms.LinkLabel(); this.labelclassname = new System.Windows.Forms.Label(); + this.typeid = new CodeImp.DoomBuilder.Controls.NumericTextbox(); this.label1 = new System.Windows.Forms.Label(); this.tbFilter = new System.Windows.Forms.TextBox(); this.bClear = new System.Windows.Forms.Button(); this.updatetimer = new System.Windows.Forms.Timer(this.components); this.typelist = new CodeImp.DoomBuilder.GZBuilder.Controls.MultiSelectTreeview(); - this.spritetex = new CodeImp.DoomBuilder.Controls.ConfigurablePictureBox(); - this.typeid = new CodeImp.DoomBuilder.Controls.NumericTextbox(); this.infopanel.SuspendLayout(); this.spritepanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.spritetex)).BeginInit(); @@ -191,6 +191,22 @@ namespace CodeImp.DoomBuilder.Controls this.spritepanel.Size = new System.Drawing.Size(68, 68); this.spritepanel.TabIndex = 23; // + // spritetex + // + this.spritetex.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Default; + this.spritetex.Dock = System.Windows.Forms.DockStyle.Fill; + this.spritetex.Highlighted = false; + this.spritetex.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + this.spritetex.Location = new System.Drawing.Point(0, 0); + this.spritetex.Name = "spritetex"; + this.spritetex.PageUnit = System.Drawing.GraphicsUnit.Pixel; + this.spritetex.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; + this.spritetex.Size = new System.Drawing.Size(64, 64); + this.spritetex.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.spritetex.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; + this.spritetex.TabIndex = 0; + this.spritetex.TabStop = false; + // // classname // this.classname.ActiveLinkColor = System.Drawing.SystemColors.Highlight; @@ -214,6 +230,19 @@ namespace CodeImp.DoomBuilder.Controls this.labelclassname.Text = "Class:"; this.labelclassname.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // typeid + // + this.typeid.AllowDecimal = false; + this.typeid.AllowNegative = false; + this.typeid.AllowRelative = false; + this.typeid.ForeColor = System.Drawing.SystemColors.WindowText; + this.typeid.ImeMode = System.Windows.Forms.ImeMode.Off; + this.typeid.Location = new System.Drawing.Point(60, 2); + this.typeid.Name = "typeid"; + this.typeid.Size = new System.Drawing.Size(68, 20); + this.typeid.TabIndex = 1; + this.typeid.TextChanged += new System.EventHandler(this.typeid_TextChanged); + // // label1 // this.label1.AutoSize = true; @@ -225,8 +254,6 @@ namespace CodeImp.DoomBuilder.Controls // // tbFilter // - this.tbFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.tbFilter.Location = new System.Drawing.Point(42, 3); this.tbFilter.Name = "tbFilter"; this.tbFilter.Size = new System.Drawing.Size(232, 20); @@ -236,7 +263,6 @@ namespace CodeImp.DoomBuilder.Controls // // bClear // - this.bClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.bClear.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; this.bClear.Location = new System.Drawing.Point(277, 1); this.bClear.Name = "bClear"; @@ -266,35 +292,6 @@ namespace CodeImp.DoomBuilder.Controls this.typelist.MouseEnter += new System.EventHandler(this.typelist_MouseEnter); this.typelist.SelectionsChanged += new System.EventHandler(this.typelist_SelectionsChanged); // - // spritetex - // - this.spritetex.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Default; - this.spritetex.Dock = System.Windows.Forms.DockStyle.Fill; - this.spritetex.Highlighted = false; - this.spritetex.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - this.spritetex.Location = new System.Drawing.Point(0, 0); - this.spritetex.Name = "spritetex"; - this.spritetex.PageUnit = System.Drawing.GraphicsUnit.Pixel; - this.spritetex.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None; - this.spritetex.Size = new System.Drawing.Size(64, 64); - this.spritetex.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.spritetex.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; - this.spritetex.TabIndex = 0; - this.spritetex.TabStop = false; - // - // typeid - // - this.typeid.AllowDecimal = false; - this.typeid.AllowNegative = false; - this.typeid.AllowRelative = false; - this.typeid.ForeColor = System.Drawing.SystemColors.WindowText; - this.typeid.ImeMode = System.Windows.Forms.ImeMode.Off; - this.typeid.Location = new System.Drawing.Point(60, 2); - this.typeid.Name = "typeid"; - this.typeid.Size = new System.Drawing.Size(68, 20); - this.typeid.TabIndex = 1; - this.typeid.TextChanged += new System.EventHandler(this.typeid_TextChanged); - // // ThingBrowserControl // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); diff --git a/Source/Core/Controls/ThingBrowserControl.cs b/Source/Core/Controls/ThingBrowserControl.cs index 39d58e07..7d164ea7 100644 --- a/Source/Core/Controls/ThingBrowserControl.cs +++ b/Source/Core/Controls/ThingBrowserControl.cs @@ -429,6 +429,8 @@ namespace CodeImp.DoomBuilder.Controls spritepanel.Left = infopanel.Width - spritepanel.Width; typelist.Height = infopanel.Top - typelist.Top; typelist.Width = this.Width; + bClear.Left = this.Width - bClear.Width - bClear.Margin.Right; + tbFilter.Width = bClear.Left - tbFilter.Left - bClear.Margin.Left; } //mxd. If it's clickable, all data is valid. diff --git a/Source/Core/Editing/CopyPasteManager.cs b/Source/Core/Editing/CopyPasteManager.cs index 75d71eeb..96cb46e3 100644 --- a/Source/Core/Editing/CopyPasteManager.cs +++ b/Source/Core/Editing/CopyPasteManager.cs @@ -163,7 +163,6 @@ namespace CodeImp.DoomBuilder.Editing // Decompress stream MemoryStream memstream; //mxd - filedata.Seek(0, SeekOrigin.Begin); try { diff --git a/Source/Core/Editing/UndoSnapshot.cs b/Source/Core/Editing/UndoSnapshot.cs index 0f6e6a43..3ed421ed 100644 --- a/Source/Core/Editing/UndoSnapshot.cs +++ b/Source/Core/Editing/UndoSnapshot.cs @@ -138,7 +138,6 @@ namespace CodeImp.DoomBuilder.Editing MemoryStream instream = new MemoryStream(File.ReadAllBytes(filename)); // Decompress data - instream.Seek(0, SeekOrigin.Begin); MemoryStream outstream = SharpCompressHelper.DecompressStream(instream); //mxd recstream = new MemoryStream(outstream.ToArray()); diff --git a/Source/Core/GZBuilder/Controls/TagSelector.Designer.cs b/Source/Core/GZBuilder/Controls/TagSelector.Designer.cs index 7297d472..ec024c59 100644 --- a/Source/Core/GZBuilder/Controls/TagSelector.Designer.cs +++ b/Source/Core/GZBuilder/Controls/TagSelector.Designer.cs @@ -53,8 +53,6 @@ // // cbTagPicker // - this.cbTagPicker.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.cbTagPicker.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.cbTagPicker.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.cbTagPicker.FormattingEnabled = true; @@ -65,7 +63,6 @@ // // newTag // - this.newTag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.newTag.Location = new System.Drawing.Point(213, 5); this.newTag.Name = "newTag"; this.newTag.Size = new System.Drawing.Size(54, 24); @@ -78,7 +75,6 @@ // // unusedTag // - this.unusedTag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.unusedTag.Location = new System.Drawing.Point(270, 5); this.unusedTag.Name = "unusedTag"; this.unusedTag.Size = new System.Drawing.Size(54, 24); @@ -97,7 +93,6 @@ // // clear // - this.clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.clear.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset; this.clear.Location = new System.Drawing.Point(327, 5); this.clear.Name = "clear"; @@ -118,6 +113,7 @@ this.Controls.Add(this.label1); this.Name = "TagSelector"; this.Size = new System.Drawing.Size(356, 35); + this.Resize += new System.EventHandler(this.TagSelector_Resize); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Source/Core/GZBuilder/Controls/TagSelector.cs b/Source/Core/GZBuilder/Controls/TagSelector.cs index 7c558f73..8cbbbfc2 100644 --- a/Source/Core/GZBuilder/Controls/TagSelector.cs +++ b/Source/Core/GZBuilder/Controls/TagSelector.cs @@ -251,6 +251,15 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls valid = true; } + //mxd. Because anchor-based alignment fails when using high-Dpi settings... + private void TagSelector_Resize(object sender, EventArgs e) + { + clear.Left = this.Width - clear.Width - clear.Margin.Right; + unusedTag.Left = clear.Left - clear.Margin.Left - unusedTag.Margin.Right - unusedTag.Width; + newTag.Left = unusedTag.Left - unusedTag.Margin.Left - newTag.Margin.Right - newTag.Width; + cbTagPicker.Width = newTag.Left - newTag.Margin.Left - cbTagPicker.Margin.Right - cbTagPicker.Left; + } + #endregion } } diff --git a/Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs b/Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs index 6166cc49..4286506c 100644 --- a/Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs +++ b/Source/Core/GZBuilder/Controls/TagsSelector.Designer.cs @@ -34,9 +34,9 @@ this.removetag = new System.Windows.Forms.Button(); this.addtag = new System.Windows.Forms.Button(); this.clear = new System.Windows.Forms.Button(); + this.clearalltags = new System.Windows.Forms.Button(); this.tagslist = new System.Windows.Forms.LinkLabel(); this.label1 = new System.Windows.Forms.Label(); - this.clearalltags = new System.Windows.Forms.Button(); this.SuspendLayout(); // // curtaglabel @@ -55,8 +55,6 @@ // // tagpicker // - this.tagpicker.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.tagpicker.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; this.tagpicker.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.tagpicker.FormattingEnabled = true; @@ -68,7 +66,6 @@ // // newtag // - this.newtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.newtag.Location = new System.Drawing.Point(299, 5); this.newtag.Name = "newtag"; this.newtag.Size = new System.Drawing.Size(54, 24); @@ -81,7 +78,6 @@ // // unusedtag // - this.unusedtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.unusedtag.Location = new System.Drawing.Point(356, 5); this.unusedtag.Name = "unusedtag"; this.unusedtag.Size = new System.Drawing.Size(54, 24); @@ -93,7 +89,6 @@ // // removetag // - this.removetag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.removetag.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear; this.removetag.Location = new System.Drawing.Point(413, 33); this.removetag.Name = "removetag"; @@ -105,7 +100,6 @@ // // addtag // - this.addtag.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.addtag.Image = global::CodeImp.DoomBuilder.Properties.Resources.Add; this.addtag.Location = new System.Drawing.Point(384, 33); this.addtag.Name = "addtag"; @@ -117,7 +111,6 @@ // // clear // - this.clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.clear.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset; this.clear.Location = new System.Drawing.Point(413, 5); this.clear.Name = "clear"; @@ -127,6 +120,17 @@ this.clear.UseVisualStyleBackColor = true; this.clear.Click += new System.EventHandler(this.clear_Click); // + // clearalltags + // + this.clearalltags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Clear; + this.clearalltags.Location = new System.Drawing.Point(0, 33); + this.clearalltags.Name = "clearalltags"; + this.clearalltags.Size = new System.Drawing.Size(24, 24); + this.clearalltags.TabIndex = 10; + this.tooltip.SetToolTip(this.clearalltags, "Remove all tags"); + this.clearalltags.UseVisualStyleBackColor = true; + this.clearalltags.Click += new System.EventHandler(this.clearalltags_Click); + // // tagslist // this.tagslist.AutoSize = true; @@ -147,17 +151,6 @@ this.label1.TabIndex = 6; this.label1.Text = "Tags:"; // - // clearalltags - // - this.clearalltags.Image = global::CodeImp.DoomBuilder.Properties.Resources.Clear; - this.clearalltags.Location = new System.Drawing.Point(0, 33); - this.clearalltags.Name = "clearalltags"; - this.clearalltags.Size = new System.Drawing.Size(24, 24); - this.clearalltags.TabIndex = 10; - this.tooltip.SetToolTip(this.clearalltags, "Remove all tags"); - this.clearalltags.UseVisualStyleBackColor = true; - this.clearalltags.Click += new System.EventHandler(this.clearalltags_Click); - // // TagsSelector // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -174,6 +167,7 @@ this.Controls.Add(this.curtaglabel); this.Name = "TagsSelector"; this.Size = new System.Drawing.Size(442, 60); + this.Resize += new System.EventHandler(this.TagsSelector_Resize); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Source/Core/GZBuilder/Controls/TagsSelector.cs b/Source/Core/GZBuilder/Controls/TagsSelector.cs index a846051e..d3d137b0 100644 --- a/Source/Core/GZBuilder/Controls/TagsSelector.cs +++ b/Source/Core/GZBuilder/Controls/TagsSelector.cs @@ -409,6 +409,17 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls } } + //mxd. Because anchor-based alignment fails when using high-Dpi settings... + private void TagsSelector_Resize(object sender, EventArgs e) + { + clear.Left = this.Width - clear.Width - clear.Margin.Right; + unusedtag.Left = clear.Left - clear.Margin.Left - unusedtag.Margin.Right - unusedtag.Width; + newtag.Left = unusedtag.Left - unusedtag.Margin.Left - newtag.Margin.Right - newtag.Width; + tagpicker.Width = newtag.Left - newtag.Margin.Left - tagpicker.Margin.Right - tagpicker.Left; + removetag.Left = clear.Left; + addtag.Left = removetag.Left - removetag.Margin.Left - addtag.Margin.Right - addtag.Width; + } + #endregion } } \ No newline at end of file diff --git a/Source/Core/GZBuilder/Controls/TagsSelector.resx b/Source/Core/GZBuilder/Controls/TagsSelector.resx index cc4d82ad..f991e2b7 100644 --- a/Source/Core/GZBuilder/Controls/TagsSelector.resx +++ b/Source/Core/GZBuilder/Controls/TagsSelector.resx @@ -120,10 +120,4 @@ 17, 17 - - 17, 17 - - - 17, 17 - \ No newline at end of file diff --git a/Source/Core/GZBuilder/Data/SharpCompressHelper.cs b/Source/Core/GZBuilder/Data/SharpCompressHelper.cs index 86556f2f..c3c68e45 100644 --- a/Source/Core/GZBuilder/Data/SharpCompressHelper.cs +++ b/Source/Core/GZBuilder/Data/SharpCompressHelper.cs @@ -22,6 +22,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data internal static MemoryStream DecompressStream(Stream stream) { + stream.Seek(0, SeekOrigin.Begin); BZip2Stream bzip = new BZip2Stream(stream, CompressionMode.Decompress, false, false); byte[] buffer = new byte[16 * 1024]; diff --git a/Source/Core/GZBuilder/Windows/ExceptionDialog.cs b/Source/Core/GZBuilder/Windows/ExceptionDialog.cs index 4dd1f256..e1d97ed6 100644 --- a/Source/Core/GZBuilder/Windows/ExceptionDialog.cs +++ b/Source/Core/GZBuilder/Windows/ExceptionDialog.cs @@ -203,6 +203,13 @@ namespace CodeImp.DoomBuilder.GZBuilder.Windows this.Close(); } + private void bQuit_Click(object sender, EventArgs e) + { + if(General.Map != null) General.Map.SaveMapBackup(); + this.DialogResult = DialogResult.Cancel; + this.Close(); + } + private void bToClipboard_Click(object sender, EventArgs e) { errorMessage.SelectAll(); diff --git a/Source/Core/GZBuilder/Windows/ExceptionDialog.designer.cs b/Source/Core/GZBuilder/Windows/ExceptionDialog.designer.cs index 79cb1817..02b6e61d 100644 --- a/Source/Core/GZBuilder/Windows/ExceptionDialog.designer.cs +++ b/Source/Core/GZBuilder/Windows/ExceptionDialog.designer.cs @@ -51,6 +51,7 @@ this.bQuit.Text = "Quit"; this.bQuit.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.bQuit.UseVisualStyleBackColor = true; + this.bQuit.Click += new System.EventHandler(this.bQuit_Click); // // bContinue // diff --git a/Source/Core/General/General.cs b/Source/Core/General/General.cs index 13e1854f..0702f786 100644 --- a/Source/Core/General/General.cs +++ b/Source/Core/General/General.cs @@ -127,6 +127,7 @@ namespace CodeImp.DoomBuilder private const string SCRIPTS_DIR = "Scripting"; private const string SCREENSHOTS_DIR = "Screenshots"; //mxd private const string SNIPPETS_DIR = "Snippets"; //mxd + private const string MAP_RESTORE_DIR = "Restore"; //mxd private const string SETUP_DIR = "Setup"; private const string SPRITES_DIR = "Sprites"; private const string HELP_FILE = "Refmanual.chm"; @@ -151,6 +152,7 @@ namespace CodeImp.DoomBuilder private static string apppath; private static string setuppath; private static string settingspath; + private static string restorepath; //mxd private static string logfile; private static string temppath; private static string configspath; @@ -174,7 +176,7 @@ namespace CodeImp.DoomBuilder private static TypesManager types; private static Clock clock; private static ErrorLogger errorlogger; - private static Mutex appmutex; + //private static Mutex appmutex; // Configurations private static List configs; @@ -209,6 +211,7 @@ namespace CodeImp.DoomBuilder public static string TempPath { get { return temppath; } } public static string ConfigsPath { get { return configspath; } } internal static string SettingsPath { get { return settingspath; } } //mxd + internal static string MapRestorePath { get { return restorepath; } } //mxd internal static string LogFile { get { return logfile; } } //mxd public static string CompilersPath { get { return compilerspath; } } public static string PluginsPath { get { return pluginspath; } } @@ -567,7 +570,7 @@ namespace CodeImp.DoomBuilder Thread.CurrentThread.Name = "Main Application"; // Application is running - appmutex = new Mutex(false, "gzdoombuilder"); //"doombuilder2" + //appmutex = new Mutex(false, "gzdoombuilder"); //"doombuilder2" // Get a reference to this assembly thisasm = Assembly.GetExecutingAssembly(); @@ -584,6 +587,7 @@ namespace CodeImp.DoomBuilder temppath = Path.GetTempPath(); setuppath = Path.Combine(apppath, SETUP_DIR); settingspath = (portablemode ? apppath : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), SETTINGS_DIR)); //mxd + restorepath = Path.Combine(settingspath, MAP_RESTORE_DIR); configspath = Path.Combine(apppath, GAME_CONFIGS_DIR); compilerspath = Path.Combine(apppath, COMPILERS_DIR); pluginspath = Path.Combine(apppath, PLUGINS_DIR); @@ -728,6 +732,20 @@ namespace CodeImp.DoomBuilder mainwindow.ShowConfiguration(); } + //mxd. Check backup files + if(Directory.Exists(restorepath)) + { + foreach(string backup in Directory.GetFiles(restorepath, "*.restore")) + { + // Remove if created more than a month ago + if((DateTime.Now - File.GetLastWriteTime(backup)).TotalDays > 30) + { + File.Delete(backup); + WriteLogLine("Removed '" + backup + "' map backup."); + } + } + } + //mxd. Check for updates? if(General.Settings.CheckForUpdates) UpdateChecker.PerformCheck(false); diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs index 4f5e6045..9554ab80 100644 --- a/Source/Core/General/MapManager.cs +++ b/Source/Core/General/MapManager.cs @@ -101,7 +101,7 @@ namespace CodeImp.DoomBuilder public MapOptions Options { get { return options; } } public MapSet Map { get { return map; } } public DataManager Data { get { return data; } } - public bool IsChanged { get { return changed | CheckScriptChanged(); } set { changed |= value; } } + public bool IsChanged { get { return changed | CheckScriptChanged(); } set { changed |= value; General.MainWindow.UpdateMapChangedStatus(); } } public bool IsDisposed { get { return isdisposed; } } internal D3DDevice Graphics { get { return graphics; } } public IRenderer2D Renderer2D { get { return renderer2d; } } @@ -326,6 +326,7 @@ namespace CodeImp.DoomBuilder // Success this.changed = false; General.WriteLogLine("Map creation done"); + General.MainWindow.UpdateMapChangedStatus(); //mxd return true; } @@ -400,22 +401,9 @@ namespace CodeImp.DoomBuilder // Close the map file mapwad.Dispose(); - // Read the map from temp file - map.BeginAddRemove(); - General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "..."); - io = MapSetIO.Create(config.FormatInterface, tempwad, this); - General.WriteLogLine("Reading map data structures from file..."); -#if DEBUG - map = io.Read(map, TEMP_MAP_HEADER); -#else - try { map = io.Read(map, TEMP_MAP_HEADER); } catch(Exception e) - { - General.ErrorLogger.Add(ErrorType.Error, "Unable to read the map data structures with the specified configuration. " + e.GetType().Name + ": " + e.Message); - General.ShowErrorMessage("Unable to read the map data structures with the specified configuration.", MessageBoxButtons.OK); - return false; - } -#endif - map.EndAddRemove(); + //mxd. Create MapSet + bool maprestored; + if(!CreateMapSet(map, filepathname, options, out maprestored)) return false; // Load data manager General.WriteLogLine("Loading data resources..."); @@ -459,8 +447,9 @@ namespace CodeImp.DoomBuilder //if (General.Editing.Mode is ClassicMode) (General.Editing.Mode as ClassicMode).CenterInScreen(); // Success - this.changed = false; + this.changed = maprestored; //mxd General.WriteLogLine("Map loading done"); + General.MainWindow.UpdateMapChangedStatus(); //mxd return true; } @@ -513,23 +502,11 @@ namespace CodeImp.DoomBuilder // Close the map file mapwad.Dispose(); - // Read the map from temp file - newmap.BeginAddRemove(); - General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "..."); - io = MapSetIO.Create(config.FormatInterface, tempwad, this); - General.WriteLogLine("Reading map data structures from file..."); -#if DEBUG - newmap = io.Read(newmap, TEMP_MAP_HEADER); -#else - try { newmap = io.Read(newmap, TEMP_MAP_HEADER); } catch(Exception e) - { - General.ErrorLogger.Add(ErrorType.Error, "Unable to read the map data structures with the specified configuration. " + e.GetType().Name + ": " + e.Message); - General.ShowErrorMessage("Unable to read the map data structures with the specified configuration.", MessageBoxButtons.OK); - return false; - } -#endif - newmap.EndAddRemove(); + //mxd. Create MapSet + bool maprestored; + if(!CreateMapSet(newmap, filepathname, options, out maprestored)) return false; + //mxd. And switch to it ChangeMapSet(newmap); //mxd. Translate texture names @@ -546,7 +523,7 @@ namespace CodeImp.DoomBuilder options.ReadSelectionGroups(); //mxd. Center map in screen or on stored coordinates - if (General.Editing.Mode is ClassicMode) + if(General.Editing.Mode is ClassicMode) { ClassicMode mode = General.Editing.Mode as ClassicMode; mode.OnRedoEnd(); @@ -558,8 +535,76 @@ namespace CodeImp.DoomBuilder } // Success - this.changed = false; + this.changed = maprestored; General.WriteLogLine("Map switching done"); + General.MainWindow.UpdateMapChangedStatus(); //mxd + return true; + } + + //mxd + private bool CreateMapSet(MapSet newmap, string filepathname, MapOptions options, out bool maprestored) + { + maprestored = false; + string wadname = Path.GetFileNameWithoutExtension(filepathname); + if(!string.IsNullOrEmpty(wadname)) + { + string hash = MurmurHash2.Hash(wadname + options.LevelName + File.GetLastWriteTime(filepathname)).ToString(); + string backuppath = Path.Combine(General.MapRestorePath, wadname + "." + hash + ".restore"); + + // Backup exists and it's newer than the map itself? + if(File.Exists(backuppath) && File.GetLastWriteTime(backuppath) > File.GetLastWriteTime(filepathname)) + { + if(General.ShowWarningMessage("Looks like your previous editing session has gone terribly wrong." + Environment.NewLine + + "Would you like to restore the map from the backup?", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "..."); + io = MapSetIO.Create(config.FormatInterface, tempwad, this); + General.WriteLogLine("Restoring map from '" + backuppath + "'..."); + +#if DEBUG + // Restore map + newmap.Deserialize(SharpCompressHelper.DecompressStream(new MemoryStream(File.ReadAllBytes(backuppath)))); +#else + try + { + // Restore map + newmap.Deserialize(SharpCompressHelper.DecompressStream(new MemoryStream(File.ReadAllBytes(backuppath)))); + + // Delete the backup + File.Delete(backuppath); + } + catch(Exception e) + { + General.ErrorLogger.Add(ErrorType.Error, "Unable to restore the map data structures from the backup. " + e.GetType().Name + ": " + e.Message); + General.ShowErrorMessage("Unable to restore the map data structures from the backup.", MessageBoxButtons.OK); + return false; + } +#endif + maprestored = true; + } + } + } + + // Read the map from temp file + if(!maprestored) + { + newmap.BeginAddRemove(); + General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "..."); + io = MapSetIO.Create(config.FormatInterface, tempwad, this); + General.WriteLogLine("Reading map data structures from file..."); +#if DEBUG + newmap = io.Read(map, TEMP_MAP_HEADER); +#else + try { newmap = io.Read(map, TEMP_MAP_HEADER); } catch(Exception e) + { + General.ErrorLogger.Add(ErrorType.Error, "Unable to read the map data structures with the specified configuration. " + e.GetType().Name + ": " + e.Message); + General.ShowErrorMessage("Unable to read the map data structures with the specified configuration.", MessageBoxButtons.OK); + return false; + } +#endif + newmap.EndAddRemove(); + } + return true; } @@ -918,6 +963,7 @@ namespace CodeImp.DoomBuilder // Success! General.WriteLogLine("Map saving done"); + General.MainWindow.UpdateMapChangedStatus(); //mxd return true; } @@ -946,6 +992,50 @@ namespace CodeImp.DoomBuilder return true; } + //mxd + internal void SaveMapBackup() + { + if(isdisposed || map == null || map.IsDisposed || string.IsNullOrEmpty(filepathname) || options == null) + { + General.WriteLogLine("Map backup saving failed: required structures already disposed..."); + return; + } + +#if !DEBUG + try + { +#endif + string wadname = Path.GetFileNameWithoutExtension(filepathname); + if(!string.IsNullOrEmpty(wadname)) + { + // Make backup file path + if(!Directory.Exists(General.MapRestorePath)) Directory.CreateDirectory(General.MapRestorePath); + string hash = MurmurHash2.Hash(wadname + options.LevelName + File.GetLastWriteTime(filepathname)).ToString(); + string backuppath = Path.Combine(General.MapRestorePath, wadname + "." + hash + ".restore"); + + // Export map + MemoryStream ms = map.Serialize(); + ms.Seek(0, SeekOrigin.Begin); + File.WriteAllBytes(backuppath, SharpCompressHelper.CompressStream(ms).ToArray()); + + // Log it + General.WriteLogLine("Map backup saved to '" + backuppath + "'"); + } + else + { + // Log it + General.WriteLogLine("Map backup saving failed: invalid map WAD name"); + } +#if !DEBUG + } + catch(Exception e) + { + // Log it + General.WriteLogLine("Map backup saving failed: " + e.Source + ": " + e.Message); + } +#endif + } + #endregion #region ================== Nodebuild @@ -1858,7 +1948,7 @@ namespace CodeImp.DoomBuilder } // This sets a new mapset for editing - internal void ChangeMapSet(MapSet newmap) + private void ChangeMapSet(MapSet newmap) { // Let the plugin and editing mode know General.Plugins.OnMapSetChangeBegin(); diff --git a/Source/Core/Geometry/Triangulation.cs b/Source/Core/Geometry/Triangulation.cs index 9f47a460..a9a3614d 100644 --- a/Source/Core/Geometry/Triangulation.cs +++ b/Source/Core/Geometry/Triangulation.cs @@ -146,7 +146,7 @@ namespace CodeImp.DoomBuilder.Geometry #region ================== Serialization // Serialize / deserialize - /*internal void ReadWrite(IReadWriteStream s) + internal void ReadWrite(IReadWriteStream s) { if(s.IsWriting) { @@ -183,7 +183,7 @@ namespace CodeImp.DoomBuilder.Geometry sidedefindices = new int[c]; for(int i = 0; i < c; i++) s.rInt(out sidedefindices[i]); } - }*/ + } // After deserialization we need to find the actual sidedefs back internal void PostDeserialize(MapSet map) diff --git a/Source/Core/IO/WAD.cs b/Source/Core/IO/WAD.cs index 1e6b917d..998feff4 100644 --- a/Source/Core/IO/WAD.cs +++ b/Source/Core/IO/WAD.cs @@ -16,6 +16,7 @@ #region ================== Namespaces +using System; using System.Collections.Generic; using System.Text; using System.IO; @@ -89,11 +90,11 @@ namespace CodeImp.DoomBuilder.IO } // Destructor - ~WAD() + /*~WAD() { // Make sure everything is disposed this.Dispose(); - } + }*/ // Disposer public void Dispose() @@ -101,8 +102,13 @@ namespace CodeImp.DoomBuilder.IO // Not already disposed? if(!isdisposed) { - // Flush all changes - Flush(); + // Only possible when not read-only + if(!isreadonly) + { + // Flush writing changes + if(writer != null) writer.Flush(); + if(file != null) file.Flush(); + } // Clean up if(lumps != null) foreach(Lump l in lumps) l.Dispose(); @@ -112,6 +118,7 @@ namespace CodeImp.DoomBuilder.IO // Done isdisposed = true; + GC.SuppressFinalize(this); //mxd } } @@ -248,7 +255,7 @@ namespace CodeImp.DoomBuilder.IO } // This flushes writing changes - public void Flush() + /*public void Flush() { // Only possible when not read-only if(!isreadonly) @@ -257,7 +264,7 @@ namespace CodeImp.DoomBuilder.IO if(writer != null) writer.Flush(); if(file != null) file.Flush(); } - } + }*/ #endregion diff --git a/Source/Core/Map/MapSet.cs b/Source/Core/Map/MapSet.cs index 776f163e..2824ce7d 100644 --- a/Source/Core/Map/MapSet.cs +++ b/Source/Core/Map/MapSet.cs @@ -867,6 +867,7 @@ namespace CodeImp.DoomBuilder.Map s.SerializedIndex = index++; s.ReadWrite(stream); + s.Triangles.ReadWrite(stream); //mxd } } @@ -874,8 +875,8 @@ namespace CodeImp.DoomBuilder.Map #region ================== Deserialization - // This serializes the MapSet - private void Deserialize(MemoryStream stream) + // This deserializes the MapSet + internal void Deserialize(MemoryStream stream) { stream.Seek(0, SeekOrigin.Begin); DeserializerStream deserializer = new DeserializerStream(stream); @@ -999,6 +1000,7 @@ namespace CodeImp.DoomBuilder.Map { array[i] = CreateSector(); array[i].ReadWrite(stream); + array[i].Triangles.ReadWrite(stream); //mxd } return array; diff --git a/Source/Core/Map/Sector.cs b/Source/Core/Map/Sector.cs index 8406b0b6..389679ce 100644 --- a/Source/Core/Map/Sector.cs +++ b/Source/Core/Map/Sector.cs @@ -148,6 +148,7 @@ namespace CodeImp.DoomBuilder.Map this.tags = new List { 0 }; //mxd this.updateneeded = true; this.triangulationneeded = true; + this.triangles = new Triangulation(); //mxd this.surfaceentries = new SurfaceEntryCollection(); if(map == General.Map.Map) diff --git a/Source/Core/Rendering/IRenderer3D.cs b/Source/Core/Rendering/IRenderer3D.cs index d0c65517..e1d6ee09 100644 --- a/Source/Core/Rendering/IRenderer3D.cs +++ b/Source/Core/Rendering/IRenderer3D.cs @@ -29,7 +29,6 @@ namespace CodeImp.DoomBuilder.Rendering // Properties ProjectedFrustum2D Frustum2D { get; } bool DrawThingCages { get; set; } - bool FullBrightness { get; set; } bool ShowSelection { get; set; } bool ShowHighlight { get; set; } diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs index 68dbd5ad..05684e21 100644 --- a/Source/Core/Rendering/Renderer2D.cs +++ b/Source/Core/Rendering/Renderer2D.cs @@ -138,7 +138,6 @@ namespace CodeImp.DoomBuilder.Rendering public ViewMode ViewMode { get { return viewmode; } } public SurfaceManager Surfaces { get { return surfaces; } } public RectangleF Viewport { get { return viewport; } } //mxd - new public bool FullBrightness { get { return fullbrightness; } set { fullbrightness = value; } } //mxd #endregion diff --git a/Source/Core/Rendering/Renderer3D.cs b/Source/Core/Rendering/Renderer3D.cs index f597cb55..7a9b530a 100644 --- a/Source/Core/Rendering/Renderer3D.cs +++ b/Source/Core/Rendering/Renderer3D.cs @@ -112,7 +112,6 @@ namespace CodeImp.DoomBuilder.Rendering public ProjectedFrustum2D Frustum2D { get { return frustum; } } public bool DrawThingCages { get { return renderthingcages; } set { renderthingcages = value; } } - new public bool FullBrightness { get { return fullbrightness; } set { fullbrightness = value; } } public bool ShowSelection { get { return showselection; } set { showselection = value; } } public bool ShowHighlight { get { return showhighlight; } set { showhighlight = value; } } @@ -371,7 +370,7 @@ namespace CodeImp.DoomBuilder.Rendering } // Determine shader pass to use - if(fullbrightness) shaderpass = 1; else shaderpass = 0; + shaderpass = (fullbrightness ? 1 : 0); // Create crosshair vertices if(crosshairverts == null) diff --git a/Source/Core/Windows/ActionBrowserForm.Designer.cs b/Source/Core/Windows/ActionBrowserForm.Designer.cs index 70593c4a..70e30b2d 100644 --- a/Source/Core/Windows/ActionBrowserForm.Designer.cs +++ b/Source/Core/Windows/ActionBrowserForm.Designer.cs @@ -400,7 +400,6 @@ namespace CodeImp.DoomBuilder.Windows this.tabs.Controls.Add(this.tabactions); this.tabs.Controls.Add(this.tabgeneralized); this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.ItemSize = new System.Drawing.Size(150, 19); this.tabs.Location = new System.Drawing.Point(10, 10); this.tabs.Margin = new System.Windows.Forms.Padding(1); this.tabs.Name = "tabs"; diff --git a/Source/Core/Windows/ConfigForm.Designer.cs b/Source/Core/Windows/ConfigForm.Designer.cs index 3838cd24..3dac4201 100644 --- a/Source/Core/Windows/ConfigForm.Designer.cs +++ b/Source/Core/Windows/ConfigForm.Designer.cs @@ -264,7 +264,6 @@ namespace CodeImp.DoomBuilder.Windows this.tabs.Controls.Add(this.tabmodes); this.tabs.Enabled = false; this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.ItemSize = new System.Drawing.Size(108, 18); this.tabs.Location = new System.Drawing.Point(277, 12); this.tabs.Name = "tabs"; this.tabs.Padding = new System.Drawing.Point(24, 3); diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index 6edcbada..2f9b4039 100644 --- a/Source/Core/Windows/MainForm.Designer.cs +++ b/Source/Core/Windows/MainForm.Designer.cs @@ -1487,7 +1487,7 @@ namespace CodeImp.DoomBuilder.Windows this.thingfilters.ImageTransparentColor = System.Drawing.Color.Magenta; this.thingfilters.Margin = new System.Windows.Forms.Padding(1, 1, 0, 2); this.thingfilters.Name = "thingfilters"; - this.thingfilters.Size = new System.Drawing.Size(120, 22); + this.thingfilters.Size = new System.Drawing.Size((int)(120 * MainForm.DPIScaler.Width), (int)(22 * MainForm.DPIScaler.Height)); this.thingfilters.Text = "(show all)"; this.thingfilters.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.thingfilters.DropDownClosed += new System.EventHandler(this.LoseFocus); @@ -1517,7 +1517,7 @@ namespace CodeImp.DoomBuilder.Windows this.linedefcolorpresets.ImageTransparentColor = System.Drawing.Color.Magenta; this.linedefcolorpresets.Margin = new System.Windows.Forms.Padding(1, 1, 0, 2); this.linedefcolorpresets.Name = "linedefcolorpresets"; - this.linedefcolorpresets.Size = new System.Drawing.Size(120, 22); + this.linedefcolorpresets.Size = new System.Drawing.Size((int)(120 * MainForm.DPIScaler.Width), (int)(22 * MainForm.DPIScaler.Height)); this.linedefcolorpresets.Text = "No presets"; this.linedefcolorpresets.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; this.linedefcolorpresets.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.linedefcolorpresets_DropDownItemClicked); @@ -1852,7 +1852,6 @@ namespace CodeImp.DoomBuilder.Windows // this.buttontest.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttontest.Image = global::CodeImp.DoomBuilder.Properties.Resources.Test; - this.buttontest.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.buttontest.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttontest.Name = "buttontest"; this.buttontest.Size = new System.Drawing.Size(32, 20); @@ -1895,7 +1894,6 @@ namespace CodeImp.DoomBuilder.Windows // this.statuslabel.Image = global::CodeImp.DoomBuilder.Properties.Resources.Status2; this.statuslabel.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.statuslabel.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.statuslabel.Name = "statuslabel"; this.statuslabel.Size = new System.Drawing.Size(340, 18); this.statuslabel.Spring = true; @@ -1907,7 +1905,7 @@ namespace CodeImp.DoomBuilder.Windows this.configlabel.AutoSize = false; this.configlabel.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.configlabel.Name = "configlabel"; - this.configlabel.Size = new System.Drawing.Size(280, 18); + this.configlabel.Size = new System.Drawing.Size((int)(280 * MainForm.DPIScaler.Width), (int)(18 * MainForm.DPIScaler.Height)); this.configlabel.Text = "ZDoom (Doom in Hexen Format)"; this.configlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.configlabel.ToolTipText = "Current Game Configuration"; @@ -2168,7 +2166,6 @@ namespace CodeImp.DoomBuilder.Windows this.warnsLabel.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.warnsLabel.Image = global::CodeImp.DoomBuilder.Properties.Resources.WarningOff; this.warnsLabel.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.warnsLabel.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.warnsLabel.Name = "warnsLabel"; this.warnsLabel.Size = new System.Drawing.Size(44, 18); this.warnsLabel.Text = "0"; diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs index 0323444f..71e581f3 100644 --- a/Source/Core/Windows/MainForm.cs +++ b/Source/Core/Windows/MainForm.cs @@ -164,6 +164,7 @@ namespace CodeImp.DoomBuilder.Windows // Updating private int lockupdatecount; + private bool mapchanged; //mxd //mxd. Hints private Docker hintsDocker; @@ -398,21 +399,8 @@ namespace CodeImp.DoomBuilder.Windows // This updates all menus for the current status internal void UpdateInterface() { - // Map opened? - if(General.Map != null) - { - // Show map name and filename in caption - this.Text = General.Map.FileTitle + " (" + General.Map.Options.CurrentName + ") - " + Application.ProductName; - } - else - { - // Show normal caption -#if DEBUG - this.Text = Application.ProductName + " - DEVBUILD"; -#else - this.Text = Application.ProductName + " R" + General.ThisAssembly.GetName().Version.Revision; -#endif - } + //mxd. Update title + UpdateTitle(); // Update the status bar UpdateStatusbar(); @@ -428,6 +416,26 @@ namespace CodeImp.DoomBuilder.Windows UpdateSkills(); UpdateHelpMenu(); } + + //mxd + private void UpdateTitle() + { + // Map opened? + if(General.Map != null) + { + // Show map name and filename in caption + this.Text = General.Map.FileTitle + (mapchanged ? "* (" : " (") + General.Map.Options.CurrentName + ") - " + Application.ProductName; + } + else + { + // Show normal caption +#if DEBUG + this.Text = Application.ProductName + " - DEVBUILD"; +#else + this.Text = Application.ProductName + " R" + General.ThisAssembly.GetName().Version.Revision; +#endif + } + } // Generic event that invokes the tagged action public void InvokeTaggedAction(object sender, EventArgs e) @@ -469,6 +477,14 @@ namespace CodeImp.DoomBuilder.Windows if(lockupdatecount > 0) General.LockWindowUpdate(IntPtr.Zero); lockupdatecount = 0; }*/ + + //mxd + internal void UpdateMapChangedStatus() + { + if(General.Map == null || General.Map.IsChanged == mapchanged) return; + mapchanged = General.Map.IsChanged; + UpdateTitle(); + } // This sets the focus on the display for correct key input public bool FocusDisplay() @@ -1715,7 +1731,7 @@ namespace CodeImp.DoomBuilder.Windows if(!(f is NullThingsFilter) && !f.IsValid()) { item.Image = Resources.Warning; - item.ImageScaling = ToolStripItemImageScaling.None; + //item.ImageScaling = ToolStripItemImageScaling.None; } return item; @@ -1771,7 +1787,7 @@ namespace CodeImp.DoomBuilder.Windows { CheckOnClick = true, Tag = p, - ImageScaling = ToolStripItemImageScaling.None, + //ImageScaling = ToolStripItemImageScaling.None, Checked = p.Enabled, ToolTipText = "Hold Shift to toggle several items at once" }; diff --git a/Source/Core/Windows/PreferencesForm.Designer.cs b/Source/Core/Windows/PreferencesForm.Designer.cs index adfecb3a..58e4282e 100644 --- a/Source/Core/Windows/PreferencesForm.Designer.cs +++ b/Source/Core/Windows/PreferencesForm.Designer.cs @@ -799,7 +799,6 @@ namespace CodeImp.DoomBuilder.Windows this.tabs.Controls.Add(this.tabcolors); this.tabs.Controls.Add(this.tabpasting); this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.ItemSize = new System.Drawing.Size(110, 19); this.tabs.Location = new System.Drawing.Point(11, 13); this.tabs.Name = "tabs"; this.tabs.Padding = new System.Drawing.Point(24, 3); diff --git a/Source/Core/Windows/ResourceOptionsForm.Designer.cs b/Source/Core/Windows/ResourceOptionsForm.Designer.cs index 52832972..56449632 100644 --- a/Source/Core/Windows/ResourceOptionsForm.Designer.cs +++ b/Source/Core/Windows/ResourceOptionsForm.Designer.cs @@ -99,7 +99,6 @@ namespace CodeImp.DoomBuilder.Windows this.tabs.Controls.Add(this.directorytab); this.tabs.Controls.Add(this.pk3filetab); this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.tabs.ItemSize = new System.Drawing.Size(110, 19); this.tabs.Location = new System.Drawing.Point(9, 11); this.tabs.Name = "tabs"; this.tabs.Padding = new System.Drawing.Point(16, 3); diff --git a/Source/Core/Windows/ThingEditFormUDMF.Designer.cs b/Source/Core/Windows/ThingEditFormUDMF.Designer.cs index f6a92168..f009f1c9 100644 --- a/Source/Core/Windows/ThingEditFormUDMF.Designer.cs +++ b/Source/Core/Windows/ThingEditFormUDMF.Designer.cs @@ -84,7 +84,7 @@ this.actionhelp = new CodeImp.DoomBuilder.Controls.ActionSpecialHelpButton(); this.action = new CodeImp.DoomBuilder.Controls.ActionSelectorControl(); this.browseaction = new System.Windows.Forms.Button(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.grouptag = new System.Windows.Forms.GroupBox(); this.tagSelector = new CodeImp.DoomBuilder.GZBuilder.Controls.TagSelector(); this.tabcomment = new System.Windows.Forms.TabPage(); this.commenteditor = new CodeImp.DoomBuilder.Controls.CommentEditor(); @@ -109,7 +109,7 @@ this.groupbehaviour.SuspendLayout(); this.grouprendering.SuspendLayout(); this.actiongroup.SuspendLayout(); - this.groupBox3.SuspendLayout(); + this.grouptag.SuspendLayout(); this.tabcomment.SuspendLayout(); this.tabcustom.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.hint)).BeginInit(); @@ -310,7 +310,6 @@ this.tabs.Controls.Add(this.tabcomment); this.tabs.Controls.Add(this.tabcustom); this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tabs.ItemSize = new System.Drawing.Size(120, 19); this.tabs.Location = new System.Drawing.Point(10, 10); this.tabs.Margin = new System.Windows.Forms.Padding(1); this.tabs.Name = "tabs"; @@ -339,8 +338,6 @@ // // settingsgroup // - this.settingsgroup.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); this.settingsgroup.Controls.Add(this.missingflags); this.settingsgroup.Controls.Add(this.flags); this.settingsgroup.Location = new System.Drawing.Point(242, 6); @@ -538,7 +535,7 @@ this.tabeffects.Controls.Add(this.groupbehaviour); this.tabeffects.Controls.Add(this.grouprendering); this.tabeffects.Controls.Add(this.actiongroup); - this.tabeffects.Controls.Add(this.groupBox3); + this.tabeffects.Controls.Add(this.grouptag); this.tabeffects.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.tabeffects.Location = new System.Drawing.Point(4, 23); this.tabeffects.Name = "tabeffects"; @@ -815,21 +812,21 @@ this.browseaction.UseVisualStyleBackColor = true; this.browseaction.Click += new System.EventHandler(this.browseaction_Click); // - // groupBox3 + // grouptag // - this.groupBox3.Controls.Add(this.tagSelector); - this.groupBox3.Location = new System.Drawing.Point(3, 330); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(615, 66); - this.groupBox3.TabIndex = 0; - this.groupBox3.TabStop = false; - this.groupBox3.Text = " Identification "; + this.grouptag.Controls.Add(this.tagSelector); + this.grouptag.Location = new System.Drawing.Point(3, 330); + this.grouptag.Name = "grouptag"; + this.grouptag.Size = new System.Drawing.Size(615, 66); + this.grouptag.TabIndex = 0; + this.grouptag.TabStop = false; + this.grouptag.Text = " Identification "; // // tagSelector // this.tagSelector.Location = new System.Drawing.Point(6, 21); this.tagSelector.Name = "tagSelector"; - this.tagSelector.Size = new System.Drawing.Size(569, 35); + this.tagSelector.Size = new System.Drawing.Size(603, 35); this.tagSelector.TabIndex = 8; // // tabcomment @@ -845,9 +842,6 @@ // // commenteditor // - this.commenteditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.commenteditor.Location = new System.Drawing.Point(3, 3); this.commenteditor.Name = "commenteditor"; this.commenteditor.Size = new System.Drawing.Size(621, 396); @@ -976,7 +970,7 @@ this.grouprendering.ResumeLayout(false); this.actiongroup.ResumeLayout(false); this.actiongroup.PerformLayout(); - this.groupBox3.ResumeLayout(false); + this.grouptag.ResumeLayout(false); this.tabcomment.ResumeLayout(false); this.tabcustom.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.hint)).EndInit(); @@ -993,7 +987,7 @@ private System.Windows.Forms.Button cancel; private System.Windows.Forms.Button apply; private System.Windows.Forms.TabPage tabcustom; - private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.GroupBox grouptag; private System.Windows.Forms.GroupBox actiongroup; private CodeImp.DoomBuilder.Controls.ActionSelectorControl action; private System.Windows.Forms.Button browseaction; diff --git a/Source/Plugins/BuilderEffects/BuilderEffects.csproj b/Source/Plugins/BuilderEffects/BuilderEffects.csproj index 12ad1d6a..77cc0203 100644 --- a/Source/Plugins/BuilderEffects/BuilderEffects.csproj +++ b/Source/Plugins/BuilderEffects/BuilderEffects.csproj @@ -32,6 +32,7 @@ prompt 4 x86 + true true diff --git a/Source/Plugins/BuilderModes/BuilderModes.csproj b/Source/Plugins/BuilderModes/BuilderModes.csproj index fbd5436e..4c595e12 100644 --- a/Source/Plugins/BuilderModes/BuilderModes.csproj +++ b/Source/Plugins/BuilderModes/BuilderModes.csproj @@ -30,9 +30,10 @@ ..\..\..\Build\Plugins\ true true - none + pdbonly x86 prompt + true true diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs index 36f82684..a5bd6971 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragGeometryMode.cs @@ -73,6 +73,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // Text labels for all unstable lines protected LineLengthLabel[] labels; + + //mxd. Undo description + protected string undodescription = "Drag geometry"; // Keep track of view changes private float lastoffsetx; @@ -417,7 +420,7 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Map.UndoRedo.IgnorePropChanges = false; // Make undo for the dragging - General.Map.UndoRedo.CreateUndo("Drag geometry"); + General.Map.UndoRedo.CreateUndo(undodescription); // Move selected geometry to final position MoveGeometryRelative(mousemappos - dragstartmappos, snaptogrid, snaptogridincrement, snaptonearest, snaptocardinaldirection); diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs index bd7a148b..48da62c2 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragLinedefsMode.cs @@ -71,6 +71,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Initialize base.StartDrag(dragstartmappos); + undodescription = (selectedlines.Count == 1 ? "Drag linedef" : "Drag " + selectedlines.Count + " linedefs"); //mxd // We have no destructor GC.SuppressFinalize(this); diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs index dea169c2..1d5e6879 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragSectorsMode.cs @@ -71,6 +71,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Initialize base.StartDrag(dragstartmappos); + undodescription = (selectedsectors.Count == 1 ? "Drag sector" : "Drag " + selectedsectors.Count + " sectors"); //mxd // We have no destructor GC.SuppressFinalize(this); diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs index d12a5b4c..4f5b944c 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragThingsMode.cs @@ -371,7 +371,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Make undo for the dragging - General.Map.UndoRedo.CreateUndo("Drag things"); + General.Map.UndoRedo.CreateUndo((selectedthings.Count == 1 ? "Drag thing" : "Drag " + selectedthings.Count + " things")); // Move selected geometry to final position if(aligndata != null && aligndata.Active) //mxd. Apply aligning diff --git a/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs b/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs index 65b832dc..f20212ba 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/DragVerticesMode.cs @@ -61,6 +61,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Initialize base.StartDrag(dragstartmappos); + undodescription = (selectedverts.Count == 1 ? "Drag vertex" : "Drag " + selectedverts.Count + " vertices"); //mxd // We have no destructor GC.SuppressFinalize(this); diff --git a/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs b/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs index 07e84cd8..ac2ac4dc 100644 --- a/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs +++ b/Source/Plugins/BuilderModes/ClassicModes/MakeSectorMode.cs @@ -19,7 +19,6 @@ using System; using System.Collections.Generic; using System.Windows.Forms; -using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Map; using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Geometry; @@ -323,17 +322,8 @@ namespace CodeImp.DoomBuilder.BuilderModes base.OnDisengage(); // Check which mode we are switching to - if(General.Editing.NewMode is VerticesMode) + if(General.Editing.NewMode is VerticesMode || General.Editing.NewMode is LinedefsMode) { - // Convert selection to vertices - - // Clear selected sectors - General.Map.Map.ClearSelectedSectors(); - } - else if(General.Editing.NewMode is LinedefsMode) - { - // Convert selection to linedefs - // Clear selected sectors General.Map.Map.ClearSelectedSectors(); } diff --git a/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs index d06e6e22..f4336ce5 100644 --- a/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/MenusForm.Designer.cs @@ -36,7 +36,10 @@ namespace CodeImp.DoomBuilder.BuilderModes this.selectsinglesideditem = new System.Windows.Forms.ToolStripMenuItem(); this.selectdoublesideditem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.fliplinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); + this.flipsidedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.curvelinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); this.splitlinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.updatelightfogitem = new System.Windows.Forms.ToolStripMenuItem(); @@ -46,61 +49,58 @@ namespace CodeImp.DoomBuilder.BuilderModes this.alignCeilingToFrontItem = new System.Windows.Forms.ToolStripMenuItem(); this.alignCeilingToBackItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.selectSimilarLinesItem = new System.Windows.Forms.ToolStripMenuItem(); this.sectorsmenu = new System.Windows.Forms.ToolStripMenuItem(); + this.placethingss = new System.Windows.Forms.ToolStripMenuItem(); + this.selectInSectorsItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.joinsectorsitem = new System.Windows.Forms.ToolStripMenuItem(); + this.mergesectorsitem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.flipsectorlinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.makedooritem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.selectSimilarSectors = new System.Windows.Forms.ToolStripMenuItem(); this.thingsmenu = new System.Windows.Forms.ToolStripMenuItem(); + this.selectInSectorsItem = new System.Windows.Forms.ToolStripMenuItem(); + this.filterSelectionItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.alignToWallItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pointAtCursorItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.selectSimilarThingsItem = new System.Windows.Forms.ToolStripMenuItem(); this.vertsmenu = new System.Windows.Forms.ToolStripMenuItem(); + this.placethingsv = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.selectSimilarVertsItem = new System.Windows.Forms.ToolStripMenuItem(); this.globalstrip = new System.Windows.Forms.ToolStrip(); this.manualstrip = new System.Windows.Forms.ToolStrip(); - this.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator(); - this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator(); - this.separatorsectors2 = new System.Windows.Forms.ToolStripSeparator(); - this.gradientModeMenu = new System.Windows.Forms.ToolStripComboBox(); - this.gradientInterpolationMenu = new System.Windows.Forms.ToolStripComboBox(); - this.separatorsectors3 = new System.Windows.Forms.ToolStripSeparator(); - this.fileMenuStrip = new System.Windows.Forms.MenuStrip(); - this.exportStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem(); this.buttoncopyproperties = new System.Windows.Forms.ToolStripButton(); this.buttonpasteproperties = new System.Windows.Forms.ToolStripButton(); this.buttonpastepropertiesoptions = new System.Windows.Forms.ToolStripButton(); + this.seperatorcopypaste = new System.Windows.Forms.ToolStripSeparator(); this.buttonselectionnumbers = new System.Windows.Forms.ToolStripButton(); this.buttonselectioneffects = new System.Windows.Forms.ToolStripButton(); + this.separatorsectors1 = new System.Windows.Forms.ToolStripSeparator(); this.buttonMakeDoor = new System.Windows.Forms.ToolStripButton(); + this.separatorsectors2 = new System.Windows.Forms.ToolStripSeparator(); this.buttonbrightnessgradient = new System.Windows.Forms.ToolStripButton(); this.buttonfloorgradient = new System.Windows.Forms.ToolStripButton(); this.buttonceilinggradient = new System.Windows.Forms.ToolStripButton(); this.buttonflipselectionh = new System.Windows.Forms.ToolStripButton(); this.buttonflipselectionv = new System.Windows.Forms.ToolStripButton(); this.buttoncurvelinedefs = new System.Windows.Forms.ToolStripButton(); + this.gradientModeMenu = new System.Windows.Forms.ToolStripComboBox(); + this.gradientInterpolationMenu = new System.Windows.Forms.ToolStripComboBox(); + this.separatorsectors3 = new System.Windows.Forms.ToolStripSeparator(); this.buttonMarqueSelectTouching = new System.Windows.Forms.ToolStripButton(); this.buttonDragThingsInSelectedSectors = new System.Windows.Forms.ToolStripButton(); this.buttonAlignThingsToWall = new System.Windows.Forms.ToolStripButton(); this.buttonTextureOffsetLock = new System.Windows.Forms.ToolStripButton(); - this.fliplinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.flipsidedefsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.curvelinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectSimilarLinesItem = new System.Windows.Forms.ToolStripMenuItem(); - this.placethingss = new System.Windows.Forms.ToolStripMenuItem(); - this.selectInSectorsItem2 = new System.Windows.Forms.ToolStripMenuItem(); - this.joinsectorsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.mergesectorsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.flipsectorlinedefsitem = new System.Windows.Forms.ToolStripMenuItem(); - this.makedooritem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectSimilarSectors = new System.Windows.Forms.ToolStripMenuItem(); - this.selectInSectorsItem = new System.Windows.Forms.ToolStripMenuItem(); - this.filterSelectionItem = new System.Windows.Forms.ToolStripMenuItem(); - this.alignToWallItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pointAtCursorItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectSimilarThingsItem = new System.Windows.Forms.ToolStripMenuItem(); - this.placethingsv = new System.Windows.Forms.ToolStripMenuItem(); - this.selectSimilarVertsItem = new System.Windows.Forms.ToolStripMenuItem(); + this.fileMenuStrip = new System.Windows.Forms.MenuStrip(); + this.exportStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripMenuItem(); this.menustrip.SuspendLayout(); this.manualstrip.SuspendLayout(); this.fileMenuStrip.SuspendLayout(); @@ -187,11 +187,38 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripMenuItem4.Name = "toolStripMenuItem4"; this.toolStripMenuItem4.Size = new System.Drawing.Size(242, 6); // + // fliplinedefsitem + // + this.fliplinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; + this.fliplinedefsitem.Name = "fliplinedefsitem"; + this.fliplinedefsitem.Size = new System.Drawing.Size(245, 22); + this.fliplinedefsitem.Tag = "fliplinedefs"; + this.fliplinedefsitem.Text = "&Flip Linedefs"; + this.fliplinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // flipsidedefsitem + // + this.flipsidedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; + this.flipsidedefsitem.Name = "flipsidedefsitem"; + this.flipsidedefsitem.Size = new System.Drawing.Size(245, 22); + this.flipsidedefsitem.Tag = "flipsidedefs"; + this.flipsidedefsitem.Text = "F&lip Sidedefs"; + this.flipsidedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripMenuItem1 // this.toolStripMenuItem1.Name = "toolStripMenuItem1"; this.toolStripMenuItem1.Size = new System.Drawing.Size(242, 6); // + // curvelinedefsitem + // + this.curvelinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CurveLines; + this.curvelinedefsitem.Name = "curvelinedefsitem"; + this.curvelinedefsitem.Size = new System.Drawing.Size(245, 22); + this.curvelinedefsitem.Tag = "curvelinesmode"; + this.curvelinedefsitem.Text = "&Curve Linedefs..."; + this.curvelinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripMenuItem3 // this.toolStripMenuItem3.Name = "toolStripMenuItem3"; @@ -261,6 +288,15 @@ namespace CodeImp.DoomBuilder.BuilderModes this.toolStripSeparator5.Name = "toolStripSeparator5"; this.toolStripSeparator5.Size = new System.Drawing.Size(242, 6); // + // selectSimilarLinesItem + // + this.selectSimilarLinesItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; + this.selectSimilarLinesItem.Name = "selectSimilarLinesItem"; + this.selectSimilarLinesItem.Size = new System.Drawing.Size(245, 22); + this.selectSimilarLinesItem.Tag = "selectsimilar"; + this.selectSimilarLinesItem.Text = "Select Similar..."; + this.selectSimilarLinesItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // sectorsmenu // this.sectorsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -280,27 +316,89 @@ namespace CodeImp.DoomBuilder.BuilderModes this.sectorsmenu.Text = "&Sectors"; this.sectorsmenu.Visible = false; // + // placethingss + // + this.placethingss.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.placethingss.Name = "placethingss"; + this.placethingss.Size = new System.Drawing.Size(245, 22); + this.placethingss.Tag = "placethings"; + this.placethingss.Text = "&Place Things..."; + this.placethingss.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // selectInSectorsItem2 + // + this.selectInSectorsItem2.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors; + this.selectInSectorsItem2.Name = "selectInSectorsItem2"; + this.selectInSectorsItem2.Size = new System.Drawing.Size(245, 22); + this.selectInSectorsItem2.Tag = "thingsselectinsectors"; + this.selectInSectorsItem2.Text = "&Select Things in Selected Sectors"; + // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Size = new System.Drawing.Size(242, 6); // + // joinsectorsitem + // + this.joinsectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Join; + this.joinsectorsitem.Name = "joinsectorsitem"; + this.joinsectorsitem.Size = new System.Drawing.Size(245, 22); + this.joinsectorsitem.Tag = "joinsectors"; + this.joinsectorsitem.Text = "&Join Sectors"; + this.joinsectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // mergesectorsitem + // + this.mergesectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Merge; + this.mergesectorsitem.Name = "mergesectorsitem"; + this.mergesectorsitem.Size = new System.Drawing.Size(245, 22); + this.mergesectorsitem.Tag = "mergesectors"; + this.mergesectorsitem.Text = "&Merge Sectors"; + this.mergesectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripMenuItem2 // this.toolStripMenuItem2.Name = "toolStripMenuItem2"; this.toolStripMenuItem2.Size = new System.Drawing.Size(242, 6); // + // flipsectorlinedefsitem + // + this.flipsectorlinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; + this.flipsectorlinedefsitem.Name = "flipsectorlinedefsitem"; + this.flipsectorlinedefsitem.Size = new System.Drawing.Size(245, 22); + this.flipsectorlinedefsitem.Tag = "fliplinedefs"; + this.flipsectorlinedefsitem.Text = "&Flip Linedefs"; + this.flipsectorlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator8 // this.toolStripSeparator8.Name = "toolStripSeparator8"; this.toolStripSeparator8.Size = new System.Drawing.Size(242, 6); // + // makedooritem + // + this.makedooritem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door; + this.makedooritem.Name = "makedooritem"; + this.makedooritem.Size = new System.Drawing.Size(245, 22); + this.makedooritem.Tag = "makedoor"; + this.makedooritem.Text = "Make &Door"; + this.makedooritem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; this.toolStripSeparator4.Size = new System.Drawing.Size(242, 6); this.toolStripSeparator4.Visible = false; // + // selectSimilarSectors + // + this.selectSimilarSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; + this.selectSimilarSectors.Name = "selectSimilarSectors"; + this.selectSimilarSectors.Size = new System.Drawing.Size(245, 22); + this.selectSimilarSectors.Tag = "selectsimilar"; + this.selectSimilarSectors.Text = "Select Similar..."; + this.selectSimilarSectors.Click += new System.EventHandler(this.InvokeTaggedAction); + // // thingsmenu // this.thingsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -316,16 +414,61 @@ namespace CodeImp.DoomBuilder.BuilderModes this.thingsmenu.Text = "Things"; this.thingsmenu.Visible = false; // + // selectInSectorsItem + // + this.selectInSectorsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors; + this.selectInSectorsItem.Name = "selectInSectorsItem"; + this.selectInSectorsItem.Size = new System.Drawing.Size(245, 22); + this.selectInSectorsItem.Tag = "thingsselectinsectors"; + this.selectInSectorsItem.Text = "&Select Things in Selected Sectors"; + this.selectInSectorsItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // filterSelectionItem + // + this.filterSelectionItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FilterThings; + this.filterSelectionItem.Name = "filterSelectionItem"; + this.filterSelectionItem.Size = new System.Drawing.Size(245, 22); + this.filterSelectionItem.Tag = "filterselectedthings"; + this.filterSelectionItem.Text = "Filter Selection..."; + this.filterSelectionItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; this.toolStripSeparator3.Size = new System.Drawing.Size(242, 6); // + // alignToWallItem + // + this.alignToWallItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings; + this.alignToWallItem.Name = "alignToWallItem"; + this.alignToWallItem.Size = new System.Drawing.Size(245, 22); + this.alignToWallItem.Tag = "thingaligntowall"; + this.alignToWallItem.Text = "&Align To Closest Linedef"; + this.alignToWallItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // pointAtCursorItem + // + this.pointAtCursorItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ThingPointAtCursor; + this.pointAtCursorItem.Name = "pointAtCursorItem"; + this.pointAtCursorItem.Size = new System.Drawing.Size(245, 22); + this.pointAtCursorItem.Tag = "thinglookatcursor"; + this.pointAtCursorItem.Text = "&Point to Cursor"; + this.pointAtCursorItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator6 // this.toolStripSeparator6.Name = "toolStripSeparator6"; this.toolStripSeparator6.Size = new System.Drawing.Size(242, 6); // + // selectSimilarThingsItem + // + this.selectSimilarThingsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; + this.selectSimilarThingsItem.Name = "selectSimilarThingsItem"; + this.selectSimilarThingsItem.Size = new System.Drawing.Size(245, 22); + this.selectSimilarThingsItem.Tag = "selectsimilar"; + this.selectSimilarThingsItem.Text = "Select Similar..."; + this.selectSimilarThingsItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // vertsmenu // this.vertsmenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -337,11 +480,29 @@ namespace CodeImp.DoomBuilder.BuilderModes this.vertsmenu.Text = "Vertices"; this.vertsmenu.Visible = false; // + // placethingsv + // + this.placethingsv.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; + this.placethingsv.Name = "placethingsv"; + this.placethingsv.Size = new System.Drawing.Size(153, 22); + this.placethingsv.Tag = "placethings"; + this.placethingsv.Text = "&Place Things..."; + this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction); + // // toolStripSeparator7 // this.toolStripSeparator7.Name = "toolStripSeparator7"; this.toolStripSeparator7.Size = new System.Drawing.Size(150, 6); // + // selectSimilarVertsItem + // + this.selectSimilarVertsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; + this.selectSimilarVertsItem.Name = "selectSimilarVertsItem"; + this.selectSimilarVertsItem.Size = new System.Drawing.Size(153, 22); + this.selectSimilarVertsItem.Tag = "selectsimilar"; + this.selectSimilarVertsItem.Text = "Select Similar..."; + this.selectSimilarVertsItem.Click += new System.EventHandler(this.InvokeTaggedAction); + // // globalstrip // this.globalstrip.Location = new System.Drawing.Point(0, 48); @@ -381,72 +542,6 @@ namespace CodeImp.DoomBuilder.BuilderModes this.manualstrip.TabIndex = 2; this.manualstrip.Text = "toolStrip1"; // - // seperatorcopypaste - // - this.seperatorcopypaste.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.seperatorcopypaste.Name = "seperatorcopypaste"; - this.seperatorcopypaste.Size = new System.Drawing.Size(6, 25); - // - // separatorsectors1 - // - this.separatorsectors1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.separatorsectors1.Name = "separatorsectors1"; - this.separatorsectors1.Size = new System.Drawing.Size(6, 25); - // - // separatorsectors2 - // - this.separatorsectors2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.separatorsectors2.Name = "separatorsectors2"; - this.separatorsectors2.Size = new System.Drawing.Size(6, 25); - // - // gradientModeMenu - // - this.gradientModeMenu.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.gradientModeMenu.Name = "gradientModeMenu"; - this.gradientModeMenu.Size = new System.Drawing.Size(144, 25); - this.gradientModeMenu.ToolTipText = "Brightness Gradient Target"; - this.gradientModeMenu.DropDownClosed += new System.EventHandler(this.gradientMode_DropDownClosed); - // - // gradientInterpolationMenu - // - this.gradientInterpolationMenu.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.gradientInterpolationMenu.Name = "gradientInterpolationMenu"; - this.gradientInterpolationMenu.Size = new System.Drawing.Size(108, 25); - this.gradientInterpolationMenu.ToolTipText = "Brightness and Height Gradient Interpolation Mode"; - this.gradientInterpolationMenu.DropDownClosed += new System.EventHandler(this.gradientMode_DropDownClosed); - // - // separatorsectors3 - // - this.separatorsectors3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.separatorsectors3.Name = "separatorsectors3"; - this.separatorsectors3.Size = new System.Drawing.Size(6, 25); - // - // fileMenuStrip - // - this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exportStripMenuItem}); - this.fileMenuStrip.Location = new System.Drawing.Point(0, 0); - this.fileMenuStrip.Name = "fileMenuStrip"; - this.fileMenuStrip.Size = new System.Drawing.Size(794, 24); - this.fileMenuStrip.TabIndex = 3; - this.fileMenuStrip.Text = "menuStrip1"; - // - // exportStripMenuItem - // - this.exportStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripMenuItem5}); - this.exportStripMenuItem.Name = "exportStripMenuItem"; - this.exportStripMenuItem.Size = new System.Drawing.Size(52, 20); - this.exportStripMenuItem.Text = "Export"; - // - // toolStripMenuItem5 - // - this.toolStripMenuItem5.Name = "toolStripMenuItem5"; - this.toolStripMenuItem5.Size = new System.Drawing.Size(226, 22); - this.toolStripMenuItem5.Tag = "exporttoobj"; - this.toolStripMenuItem5.Text = "Selection to Wavefront .obj..."; - this.toolStripMenuItem5.Click += new System.EventHandler(this.InvokeTaggedAction); - // // buttoncopyproperties // this.buttoncopyproperties.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -480,6 +575,12 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonpastepropertiesoptions.Text = "Choose Properties to Paste"; this.buttonpastepropertiesoptions.Click += new System.EventHandler(this.InvokeTaggedAction); // + // seperatorcopypaste + // + this.seperatorcopypaste.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.seperatorcopypaste.Name = "seperatorcopypaste"; + this.seperatorcopypaste.Size = new System.Drawing.Size(6, 25); + // // buttonselectionnumbers // this.buttonselectionnumbers.CheckOnClick = true; @@ -502,6 +603,12 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonselectioneffects.Text = "View Tags and Effects"; this.buttonselectioneffects.Click += new System.EventHandler(this.buttonselectioneffects_Click); // + // separatorsectors1 + // + this.separatorsectors1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.separatorsectors1.Name = "separatorsectors1"; + this.separatorsectors1.Size = new System.Drawing.Size(6, 25); + // // buttonMakeDoor // this.buttonMakeDoor.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -513,11 +620,16 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttonMakeDoor.Text = "Make Door From Selection"; this.buttonMakeDoor.Click += new System.EventHandler(this.InvokeTaggedAction); // + // separatorsectors2 + // + this.separatorsectors2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.separatorsectors2.Name = "separatorsectors2"; + this.separatorsectors2.Size = new System.Drawing.Size(6, 25); + // // buttonbrightnessgradient // this.buttonbrightnessgradient.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.buttonbrightnessgradient.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.BrightnessGradient; - this.buttonbrightnessgradient.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; this.buttonbrightnessgradient.ImageTransparentColor = System.Drawing.Color.Magenta; this.buttonbrightnessgradient.Name = "buttonbrightnessgradient"; this.buttonbrightnessgradient.Size = new System.Drawing.Size(23, 22); @@ -580,6 +692,28 @@ namespace CodeImp.DoomBuilder.BuilderModes this.buttoncurvelinedefs.Text = "Curve Linedefs"; this.buttoncurvelinedefs.Click += new System.EventHandler(this.InvokeTaggedAction); // + // gradientModeMenu + // + this.gradientModeMenu.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.gradientModeMenu.Name = "gradientModeMenu"; + this.gradientModeMenu.Size = new System.Drawing.Size(144, 25); + this.gradientModeMenu.ToolTipText = "Brightness Gradient Target"; + this.gradientModeMenu.DropDownClosed += new System.EventHandler(this.gradientMode_DropDownClosed); + // + // gradientInterpolationMenu + // + this.gradientInterpolationMenu.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.gradientInterpolationMenu.Name = "gradientInterpolationMenu"; + this.gradientInterpolationMenu.Size = new System.Drawing.Size(108, 25); + this.gradientInterpolationMenu.ToolTipText = "Brightness and Height Gradient Interpolation Mode"; + this.gradientInterpolationMenu.DropDownClosed += new System.EventHandler(this.gradientMode_DropDownClosed); + // + // separatorsectors3 + // + this.separatorsectors3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.separatorsectors3.Name = "separatorsectors3"; + this.separatorsectors3.Size = new System.Drawing.Size(6, 25); + // // buttonMarqueSelectTouching // this.buttonMarqueSelectTouching.CheckOnClick = true; @@ -629,166 +763,31 @@ namespace CodeImp.DoomBuilder.BuilderModes "tant while sector is dragged"; this.buttonTextureOffsetLock.Click += new System.EventHandler(this.buttonTextureOffsetLock_Click); // - // fliplinedefsitem + // fileMenuStrip // - this.fliplinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; - this.fliplinedefsitem.Name = "fliplinedefsitem"; - this.fliplinedefsitem.Size = new System.Drawing.Size(245, 22); - this.fliplinedefsitem.Tag = "fliplinedefs"; - this.fliplinedefsitem.Text = "&Flip Linedefs"; - this.fliplinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.exportStripMenuItem}); + this.fileMenuStrip.Location = new System.Drawing.Point(0, 0); + this.fileMenuStrip.Name = "fileMenuStrip"; + this.fileMenuStrip.Size = new System.Drawing.Size(794, 24); + this.fileMenuStrip.TabIndex = 3; + this.fileMenuStrip.Text = "menuStrip1"; // - // flipsidedefsitem + // exportStripMenuItem // - this.flipsidedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; - this.flipsidedefsitem.Name = "flipsidedefsitem"; - this.flipsidedefsitem.Size = new System.Drawing.Size(245, 22); - this.flipsidedefsitem.Tag = "flipsidedefs"; - this.flipsidedefsitem.Text = "F&lip Sidedefs"; - this.flipsidedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); + this.exportStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem5}); + this.exportStripMenuItem.Name = "exportStripMenuItem"; + this.exportStripMenuItem.Size = new System.Drawing.Size(52, 20); + this.exportStripMenuItem.Text = "Export"; // - // curvelinedefsitem + // toolStripMenuItem5 // - this.curvelinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.CurveLines; - this.curvelinedefsitem.Name = "curvelinedefsitem"; - this.curvelinedefsitem.Size = new System.Drawing.Size(245, 22); - this.curvelinedefsitem.Tag = "curvelinesmode"; - this.curvelinedefsitem.Text = "&Curve Linedefs..."; - this.curvelinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectSimilarLinesItem - // - this.selectSimilarLinesItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; - this.selectSimilarLinesItem.Name = "selectSimilarLinesItem"; - this.selectSimilarLinesItem.Size = new System.Drawing.Size(245, 22); - this.selectSimilarLinesItem.Tag = "selectsimilar"; - this.selectSimilarLinesItem.Text = "Select Similar..."; - this.selectSimilarLinesItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // placethingss - // - this.placethingss.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; - this.placethingss.Name = "placethingss"; - this.placethingss.Size = new System.Drawing.Size(245, 22); - this.placethingss.Tag = "placethings"; - this.placethingss.Text = "&Place Things..."; - this.placethingss.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectInSectorsItem2 - // - this.selectInSectorsItem2.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors; - this.selectInSectorsItem2.Name = "selectInSectorsItem2"; - this.selectInSectorsItem2.Size = new System.Drawing.Size(245, 22); - this.selectInSectorsItem2.Tag = "thingsselectinsectors"; - this.selectInSectorsItem2.Text = "&Select Things in Selected Sectors"; - // - // joinsectorsitem - // - this.joinsectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Join; - this.joinsectorsitem.Name = "joinsectorsitem"; - this.joinsectorsitem.Size = new System.Drawing.Size(245, 22); - this.joinsectorsitem.Tag = "joinsectors"; - this.joinsectorsitem.Text = "&Join Sectors"; - this.joinsectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // mergesectorsitem - // - this.mergesectorsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Merge; - this.mergesectorsitem.Name = "mergesectorsitem"; - this.mergesectorsitem.Size = new System.Drawing.Size(245, 22); - this.mergesectorsitem.Tag = "mergesectors"; - this.mergesectorsitem.Text = "&Merge Sectors"; - this.mergesectorsitem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // flipsectorlinedefsitem - // - this.flipsectorlinedefsitem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Flip; - this.flipsectorlinedefsitem.Name = "flipsectorlinedefsitem"; - this.flipsectorlinedefsitem.Size = new System.Drawing.Size(245, 22); - this.flipsectorlinedefsitem.Tag = "fliplinedefs"; - this.flipsectorlinedefsitem.Text = "&Flip Linedefs"; - this.flipsectorlinedefsitem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // makedooritem - // - this.makedooritem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Door; - this.makedooritem.Name = "makedooritem"; - this.makedooritem.Size = new System.Drawing.Size(245, 22); - this.makedooritem.Tag = "makedoor"; - this.makedooritem.Text = "Make &Door"; - this.makedooritem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectSimilarSectors - // - this.selectSimilarSectors.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; - this.selectSimilarSectors.Name = "selectSimilarSectors"; - this.selectSimilarSectors.Size = new System.Drawing.Size(245, 22); - this.selectSimilarSectors.Tag = "selectsimilar"; - this.selectSimilarSectors.Text = "Select Similar..."; - this.selectSimilarSectors.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectInSectorsItem - // - this.selectInSectorsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.SelectThingsInSectors; - this.selectInSectorsItem.Name = "selectInSectorsItem"; - this.selectInSectorsItem.Size = new System.Drawing.Size(245, 22); - this.selectInSectorsItem.Tag = "thingsselectinsectors"; - this.selectInSectorsItem.Text = "&Select Things in Selected Sectors"; - this.selectInSectorsItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // filterSelectionItem - // - this.filterSelectionItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.FilterThings; - this.filterSelectionItem.Name = "filterSelectionItem"; - this.filterSelectionItem.Size = new System.Drawing.Size(245, 22); - this.filterSelectionItem.Tag = "filterselectedthings"; - this.filterSelectionItem.Text = "Filter Selection..."; - this.filterSelectionItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // alignToWallItem - // - this.alignToWallItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.AlignThings; - this.alignToWallItem.Name = "alignToWallItem"; - this.alignToWallItem.Size = new System.Drawing.Size(245, 22); - this.alignToWallItem.Tag = "thingaligntowall"; - this.alignToWallItem.Text = "&Align To Closest Linedef"; - this.alignToWallItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // pointAtCursorItem - // - this.pointAtCursorItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.ThingPointAtCursor; - this.pointAtCursorItem.Name = "pointAtCursorItem"; - this.pointAtCursorItem.Size = new System.Drawing.Size(245, 22); - this.pointAtCursorItem.Tag = "thinglookatcursor"; - this.pointAtCursorItem.Text = "&Point to Cursor"; - this.pointAtCursorItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectSimilarThingsItem - // - this.selectSimilarThingsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; - this.selectSimilarThingsItem.Name = "selectSimilarThingsItem"; - this.selectSimilarThingsItem.Size = new System.Drawing.Size(245, 22); - this.selectSimilarThingsItem.Tag = "selectsimilar"; - this.selectSimilarThingsItem.Text = "Select Similar..."; - this.selectSimilarThingsItem.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // placethingsv - // - this.placethingsv.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.PlaceThings; - this.placethingsv.Name = "placethingsv"; - this.placethingsv.Size = new System.Drawing.Size(153, 22); - this.placethingsv.Tag = "placethings"; - this.placethingsv.Text = "&Place Things..."; - this.placethingsv.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // selectSimilarVertsItem - // - this.selectSimilarVertsItem.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Similar; - this.selectSimilarVertsItem.Name = "selectSimilarVertsItem"; - this.selectSimilarVertsItem.Size = new System.Drawing.Size(153, 22); - this.selectSimilarVertsItem.Tag = "selectsimilar"; - this.selectSimilarVertsItem.Text = "Select Similar..."; - this.selectSimilarVertsItem.Click += new System.EventHandler(this.InvokeTaggedAction); + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(226, 22); + this.toolStripMenuItem5.Tag = "exporttoobj"; + this.toolStripMenuItem5.Text = "Selection to Wavefront .obj..."; + this.toolStripMenuItem5.Click += new System.EventHandler(this.InvokeTaggedAction); // // MenusForm //