From 9632ecd0d281845e2ec424f12ef58894ea1017ad Mon Sep 17 00:00:00 2001 From: MaxED Date: Wed, 17 Feb 2016 22:23:18 +0000 Subject: [PATCH] Added, all drawing modes: added "Continuous drawing" option (available in the top mode menu / Draw Grid panel for the Draw Grid mode). When enabled, drawing mode will not be switched to previously active mode after finishing drawing a shape. Fixed, general interlace: in some cases "Show Editable Vertices in Visual Mode" top toolbar button showed up when using Doom/Hexen map formats. Fixed(?), Classic modes: probably fixed an rare issue when map element dragging was not starting when supposed to. --- Source/Core/Editing/ClassicMode.cs | 4 + Source/Core/Windows/MainForm.cs | 2 +- .../Plugins/BuilderModes/BuilderModes.csproj | 12 ++ .../ClassicModes/DrawCurveMode.cs | 133 +++++++++------ .../ClassicModes/DrawEllipseMode.cs | 51 +++--- .../ClassicModes/DrawGeometryMode.cs | 110 +++++++++--- .../BuilderModes/ClassicModes/DrawGridMode.cs | 145 +++++++++------- .../ClassicModes/DrawRectangleMode.cs | 159 +++++++++--------- .../DrawCurveOptionsPanel.Designer.cs | 32 +++- .../Interface/DrawCurveOptionsPanel.cs | 17 +- .../DrawEllipseOptionsPanel.Designer.cs | 28 ++- .../Interface/DrawEllipseOptionsPanel.cs | 35 ++-- .../DrawGridOptionsPanel.Designer.cs | 31 ++++ .../Interface/DrawGridOptionsPanel.cs | 7 + .../DrawLineOptionsPanel.Designer.cs | 75 +++++++++ .../Interface/DrawLineOptionsPanel.cs | 32 ++++ .../Interface/DrawLineOptionsPanel.resx | 123 ++++++++++++++ .../DrawRectangleOptionsPanel.Designer.cs | 28 ++- .../Interface/DrawRectangleOptionsPanel.cs | 22 ++- .../Properties/Resources.Designer.cs | 18 +- .../BuilderModes/Properties/Resources.resx | 26 +-- .../Plugins/BuilderModes/Resources/Gear.png | Bin 3409 -> 0 bytes .../Plugins/BuilderModes/Resources/Repeat.png | Bin 0 -> 587 bytes 23 files changed, 787 insertions(+), 303 deletions(-) create mode 100644 Source/Plugins/BuilderModes/Interface/DrawLineOptionsPanel.Designer.cs create mode 100644 Source/Plugins/BuilderModes/Interface/DrawLineOptionsPanel.cs create mode 100644 Source/Plugins/BuilderModes/Interface/DrawLineOptionsPanel.resx delete mode 100644 Source/Plugins/BuilderModes/Resources/Gear.png create mode 100644 Source/Plugins/BuilderModes/Resources/Repeat.png diff --git a/Source/Core/Editing/ClassicMode.cs b/Source/Core/Editing/ClassicMode.cs index 05241bfd..0c5cf881 100644 --- a/Source/Core/Editing/ClassicMode.cs +++ b/Source/Core/Editing/ClassicMode.cs @@ -565,6 +565,10 @@ namespace CodeImp.DoomBuilder.Editing // Save mouse down position mousedownpos = mousepos; mousedownmappos = mousemappos; + + //mxd. Looks like in some cases (very detailed maps / slow CPUs) OnMouseUp is not fired + // This is my attempt at fixing this... + if(e.Button == mousedragging) mousedragging = MouseButtons.None; // Let the base class know base.OnMouseDown(e); diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs index 85143e92..6cebbdce 100644 --- a/Source/Core/Windows/MainForm.cs +++ b/Source/Core/Windows/MainForm.cs @@ -2043,7 +2043,7 @@ namespace CodeImp.DoomBuilder.Windows buttontogglefog.Visible = General.Settings.GZToolbarGZDoom && maploaded; buttontogglesky.Visible = General.Settings.GZToolbarGZDoom && maploaded; buttontoggleeventlines.Visible = General.Settings.GZToolbarGZDoom && maploaded; - buttontogglevisualvertices.Visible = General.Settings.GZToolbarGZDoom && maploaded; + buttontogglevisualvertices.Visible = General.Settings.GZToolbarGZDoom && maploaded && General.Map.UDMF; separatorgzmodes.Visible = General.Settings.GZToolbarGZDoom && maploaded; //mxd. Show/hide additional panels diff --git a/Source/Plugins/BuilderModes/BuilderModes.csproj b/Source/Plugins/BuilderModes/BuilderModes.csproj index 47bb113b..5c0b0789 100644 --- a/Source/Plugins/BuilderModes/BuilderModes.csproj +++ b/Source/Plugins/BuilderModes/BuilderModes.csproj @@ -332,6 +332,12 @@ DrawGridOptionsPanel.cs + + UserControl + + + DrawLineOptionsPanel.cs + UserControl @@ -532,6 +538,9 @@ + + DrawLineOptionsPanel.cs + FilterSelectedThingsForm.cs @@ -594,6 +603,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs index 2a6a417a..aee62a10 100644 --- a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.Designer.cs @@ -29,10 +29,12 @@ private void InitializeComponent() { this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.radiuslabel = new System.Windows.Forms.ToolStripLabel(); this.radius = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown(); this.subdivslabel = new System.Windows.Forms.ToolStripLabel(); this.subdivs = new CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown(); + this.continuousdrawing = new System.Windows.Forms.ToolStripButton(); this.reset = new System.Windows.Forms.ToolStripButton(); this.toolStrip1.SuspendLayout(); this.SuspendLayout(); @@ -40,6 +42,8 @@ // toolStrip1 // this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.continuousdrawing, + this.toolStripSeparator1, this.radiuslabel, this.radius, this.subdivslabel, @@ -47,15 +51,19 @@ this.reset}); this.toolStrip1.Location = new System.Drawing.Point(0, 0); this.toolStrip1.Name = "toolStrip1"; - this.toolStrip1.Size = new System.Drawing.Size(380, 25); + this.toolStrip1.Size = new System.Drawing.Size(488, 25); this.toolStrip1.TabIndex = 7; this.toolStrip1.Text = "toolStrip1"; // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // // radiuslabel // - this.radiuslabel.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Gear; this.radiuslabel.Name = "radiuslabel"; - this.radiuslabel.Size = new System.Drawing.Size(92, 22); + this.radiuslabel.Size = new System.Drawing.Size(76, 22); this.radiuslabel.Text = "Bevel Radius:"; // // radius @@ -112,6 +120,16 @@ 0}); this.subdivs.ValueChanged += new System.EventHandler(this.ValueChanged); // + // continuousdrawing + // + this.continuousdrawing.CheckOnClick = true; + this.continuousdrawing.Image = global::CodeImp.DoomBuilder.BuilderModes.Properties.Resources.Repeat; + this.continuousdrawing.ImageTransparentColor = System.Drawing.Color.Magenta; + this.continuousdrawing.Name = "continuousdrawing"; + this.continuousdrawing.Size = new System.Drawing.Size(135, 22); + this.continuousdrawing.Text = "Continuous drawing"; + this.continuousdrawing.CheckedChanged += new System.EventHandler(this.continuousdrawing_CheckedChanged); + // // reset // this.reset.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -128,7 +146,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.Controls.Add(this.toolStrip1); this.Name = "DrawRectangleOptionsPanel"; - this.Size = new System.Drawing.Size(380, 60); + this.Size = new System.Drawing.Size(488, 60); this.toolStrip1.ResumeLayout(false); this.toolStrip1.PerformLayout(); this.ResumeLayout(false); @@ -144,5 +162,7 @@ private System.Windows.Forms.ToolStripLabel subdivslabel; private CodeImp.DoomBuilder.Controls.ToolStripNumericUpDown subdivs; private System.Windows.Forms.ToolStripButton reset; + private System.Windows.Forms.ToolStripButton continuousdrawing; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; } } diff --git a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs index 2c1d8f94..13db2bb0 100644 --- a/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs +++ b/Source/Plugins/BuilderModes/Interface/DrawRectangleOptionsPanel.cs @@ -6,17 +6,19 @@ namespace CodeImp.DoomBuilder.BuilderModes internal partial class DrawRectangleOptionsPanel : UserControl { public event EventHandler OnValueChanged; - private bool blockEvents; + public event EventHandler OnContinuousDrawingChanged; + private bool blockevents; private static int radiusValue; private static int subdivsValue; - public int BevelWidth { get { return (int)radius.Value; } set { blockEvents = true; radius.Value = value; blockEvents = false; } } + public int BevelWidth { get { return (int)radius.Value; } set { blockevents = true; radius.Value = value; blockevents = false; } } public int MaxBevelWidth { get { return (int)radius.Maximum; } set { radius.Maximum = value; } } public int MinBevelWidth { get { return (int)radius.Minimum; } set { radius.Minimum = value; } } - public int Subdivisions { get { return (int)subdivs.Value; } set { blockEvents = true; subdivs.Value = value; blockEvents = false; } } + public int Subdivisions { get { return (int)subdivs.Value; } set { blockevents = true; subdivs.Value = value; blockevents = false; } } public int MaxSubdivisions { get { return (int)subdivs.Maximum; } set { subdivs.Maximum = value; } } public int MinSubdivisions { get { return (int)subdivs.Minimum; } set { subdivs.Minimum = value; } } + public bool ContinuousDrawing { get { return continuousdrawing.Checked; } set { continuousdrawing.Checked = value; } } public DrawRectangleOptionsPanel() { @@ -30,6 +32,8 @@ namespace CodeImp.DoomBuilder.BuilderModes radius.ValueChanged += ValueChanged; subdivs.ValueChanged += ValueChanged; + General.Interface.AddButton(continuousdrawing); + General.Interface.AddButton(toolStripSeparator1); General.Interface.AddButton(radiuslabel); General.Interface.AddButton(radius); General.Interface.AddButton(subdivslabel); @@ -44,22 +48,28 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.RemoveButton(subdivslabel); General.Interface.RemoveButton(radius); General.Interface.RemoveButton(radiuslabel); + General.Interface.RemoveButton(toolStripSeparator1); + General.Interface.RemoveButton(continuousdrawing); } private void ValueChanged(object sender, EventArgs e) { radiusValue = (int)radius.Value; subdivsValue = (int)subdivs.Value; - if(!blockEvents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty); + if(!blockevents && OnValueChanged != null) OnValueChanged(this, EventArgs.Empty); } private void reset_Click(object sender, EventArgs e) { - blockEvents = true; + blockevents = true; radius.Value = 0; - blockEvents = false; + blockevents = false; subdivs.Value = 0; } + private void continuousdrawing_CheckedChanged(object sender, EventArgs e) + { + if(OnContinuousDrawingChanged != null) OnContinuousDrawingChanged(continuousdrawing.Checked, EventArgs.Empty); + } } } diff --git a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs index 16287187..a4739659 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs +++ b/Source/Plugins/BuilderModes/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5466 +// Runtime Version:2.0.50727.5485 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -38,7 +38,7 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { - if(object.ReferenceEquals(resourceMan, null)) { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CodeImp.DoomBuilder.BuilderModes.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } @@ -214,13 +214,6 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } } - internal static System.Drawing.Bitmap Gear { - get { - object obj = ResourceManager.GetObject("Gear", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - internal static System.Drawing.Bitmap Hide { get { object obj = ResourceManager.GetObject("Hide", resourceCulture); @@ -284,6 +277,13 @@ namespace CodeImp.DoomBuilder.BuilderModes.Properties { } } + internal static System.Drawing.Bitmap Repeat { + get { + object obj = ResourceManager.GetObject("Repeat", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap Reset { get { object obj = ResourceManager.GetObject("Reset", resourceCulture); diff --git a/Source/Plugins/BuilderModes/Properties/Resources.resx b/Source/Plugins/BuilderModes/Properties/Resources.resx index 8c955f4f..f6dd0729 100644 --- a/Source/Plugins/BuilderModes/Properties/Resources.resx +++ b/Source/Plugins/BuilderModes/Properties/Resources.resx @@ -118,9 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Join.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\FloorAlign.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -139,9 +136,6 @@ ..\Resources\ViewSelectionEffects.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Gear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\HideAll.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -196,12 +190,12 @@ ..\Resources\ThingPointAtCursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\PlaceThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\Text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Show.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\BrightnessGradient.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,8 +211,8 @@ ..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Show.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Join.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ViewSelectionIndex.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -229,6 +223,9 @@ ..\Resources\Show2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\ColorPick.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,8 +235,8 @@ ..\Resources\FlipSelectionH.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\PlaceThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Angle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -259,4 +256,7 @@ ..\Resources\Show3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Repeat.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Resources/Gear.png b/Source/Plugins/BuilderModes/Resources/Gear.png deleted file mode 100644 index 4d399e2d52213ed1fc8da3753a0e72c4b0bdece4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3409 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 diff --git a/Source/Plugins/BuilderModes/Resources/Repeat.png b/Source/Plugins/BuilderModes/Resources/Repeat.png new file mode 100644 index 0000000000000000000000000000000000000000..48350331c3025d345424a05147edaa22ea0ad025 GIT binary patch literal 587 zcmV-R0<`^!P)3+VA|^Q_D{ui@t+`ow=Q=jc1u+Q!#6 z_hV0hi`w*LX>ESyUMNR|9E8qvuJ(VnD<`L2T5fm(qxIt4R5?8Qb)i0d+1ndL@bdY? zYBd}WkAGj%Za2IJI?E=Q1Nr`Q>kyo)p)dTyYn0=xlY}Wm#06xT0cS1PJa58ZlNse4 z1Y@I7Y>K zRgmljdP55CIWM5&VsEvS36J=4J<3w$o~zRAwK|hV8kj==-}*ef{dIYfI7Y zSqhbjBYfNzx8DmXgjK)d5*PpJhM7wXdo3~FQ4}!+k z)=Jzb0E3Db7X*7})IaKghs=}s|3WMvc~3kk0SS673^D|N%uzVBWqQj}=}w#td!4TZ Z7yye%LV1dLeCPlG002ovPDHLkV1nRe2)O_N literal 0 HcmV?d00001