From 4958338bbb02a0dc138f416f55ffb056ab10e536 Mon Sep 17 00:00:00 2001 From: sphere Date: Thu, 25 Feb 2021 00:31:10 +0100 Subject: [PATCH] Add tooltips for special characters in the Find and Replace menu; code shamelessly taken from UDB. --- .../FindReplace/FindAnyTextureFlat.cs | 11 ++++++- .../FindReplace/FindLinedefTags.cs | 14 +++++++++ .../FindReplace/FindReplaceType.cs | 1 + .../FindReplace/FindSectorBrightness.cs | 18 ++++++++++++ .../FindReplace/FindSectorCeilingHeight.cs | 18 ++++++++++++ .../FindReplace/FindSectorFlat.cs | 11 ++++++- .../FindReplace/FindSectorFloorHeight.cs | 18 ++++++++++++ .../FindReplace/FindSectorTags.cs | 14 +++++++++ .../FindReplace/FindSidedefTexture.cs | 9 ++++++ .../FindReplace/FindThingAngle.cs | 16 +++++++++- .../BuilderModes/FindReplace/FindThingType.cs | 16 +++++++++- .../Interface/FindReplaceForm.Designer.cs | 29 ++++++++++++------- .../BuilderModes/Interface/FindReplaceForm.cs | 25 +++++++++++++++- 13 files changed, 185 insertions(+), 15 deletions(-) diff --git a/Source/Plugins/BuilderModes/FindReplace/FindAnyTextureFlat.cs b/Source/Plugins/BuilderModes/FindReplace/FindAnyTextureFlat.cs index 49c5201..effddef 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindAnyTextureFlat.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindAnyTextureFlat.cs @@ -42,7 +42,16 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Properties public override Image BrowseImage { get { return Properties.Resources.List_Images; } } - + public override string UsageHint + { + get + { + return "Supported wildcards:" + System.Environment.NewLine + + "* for zero or more characters" + System.Environment.NewLine + + "? for exactly one character"; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/FindReplace/FindLinedefTags.cs b/Source/Plugins/BuilderModes/FindReplace/FindLinedefTags.cs index 69d13f9..f1f28c6 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindLinedefTags.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindLinedefTags.cs @@ -39,6 +39,20 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Properties + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/FindReplace/FindReplaceType.cs b/Source/Plugins/BuilderModes/FindReplace/FindReplaceType.cs index b1922e4..26885b2 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindReplaceType.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindReplaceType.cs @@ -44,6 +44,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public FindReplaceAttribute Attributes { get { return attribs; } } public virtual Image BrowseImage { get { return null; } } public bool AllowDelete { get { return false; } } + public virtual string UsageHint { get { return string.Empty; } } //mxd public virtual Presentation RenderPresentation { get { return Presentation.Standard; } } #endregion diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorBrightness.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorBrightness.cs index 50f177c..fc995d1 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSectorBrightness.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorBrightness.cs @@ -11,6 +11,24 @@ namespace CodeImp.DoomBuilder.BuilderModes [FindReplace("Sector Brightness", BrowseButton = false)] internal class FindSectorBrightness : BaseFindSector { + #region ================== Properties + + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + + #endregion + #region ================== Methods // This is called to perform a search (and replace) diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorCeilingHeight.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorCeilingHeight.cs index aa04221..f045ae2 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSectorCeilingHeight.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorCeilingHeight.cs @@ -11,6 +11,24 @@ namespace CodeImp.DoomBuilder.BuilderModes.FindReplace [FindReplace("Sector Ceiling Height", BrowseButton = false)] internal class FindSectorCeilingHeight : BaseFindSector { + #region ================== Properties + + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + + #endregion + #region ================== Methods // This is called to perform a search (and replace) diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorFlat.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorFlat.cs index 275ac77..c02947d 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSectorFlat.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorFlat.cs @@ -41,7 +41,16 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Properties public override Image BrowseImage { get { return Properties.Resources.List_Images; } } - + public override string UsageHint + { + get + { + return "Supported wildcards:" + System.Environment.NewLine + + "* for zero or more characters" + System.Environment.NewLine + + "? for exactly one character"; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorFloorHeight.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorFloorHeight.cs index a516d21..768546a 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSectorFloorHeight.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorFloorHeight.cs @@ -11,6 +11,24 @@ namespace CodeImp.DoomBuilder.BuilderModes.FindReplace [FindReplace("Sector Floor Height", BrowseButton = false)] internal class FindSectorFloorHeight : BaseFindSector { + #region ================== Properties + + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + + #endregion + #region ================== Methods // This is called to perform a search (and replace) diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSectorTags.cs b/Source/Plugins/BuilderModes/FindReplace/FindSectorTags.cs index ceed982..6df542d 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSectorTags.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSectorTags.cs @@ -39,6 +39,20 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Properties + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/FindReplace/FindSidedefTexture.cs b/Source/Plugins/BuilderModes/FindReplace/FindSidedefTexture.cs index d37603d..447db55 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindSidedefTexture.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindSidedefTexture.cs @@ -41,6 +41,15 @@ namespace CodeImp.DoomBuilder.BuilderModes #region ================== Properties public override Image BrowseImage { get { return Properties.Resources.List; } } + public override string UsageHint + { + get + { + return "Supported wildcards:" + System.Environment.NewLine + + "* for zero or more characters" + System.Environment.NewLine + + "? for exactly one character"; + } + } #endregion diff --git a/Source/Plugins/BuilderModes/FindReplace/FindThingAngle.cs b/Source/Plugins/BuilderModes/FindReplace/FindThingAngle.cs index 5f560e2..0e30c68 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindThingAngle.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindThingAngle.cs @@ -44,7 +44,21 @@ namespace CodeImp.DoomBuilder.BuilderModes public override Presentation RenderPresentation { get { return Presentation.Things; } } public override Image BrowseImage { get { return Properties.Resources.Angle; } } - + + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/FindReplace/FindThingType.cs b/Source/Plugins/BuilderModes/FindReplace/FindThingType.cs index f4d4e6a..2bc047b 100644 --- a/Source/Plugins/BuilderModes/FindReplace/FindThingType.cs +++ b/Source/Plugins/BuilderModes/FindReplace/FindThingType.cs @@ -43,7 +43,21 @@ namespace CodeImp.DoomBuilder.BuilderModes public override Presentation RenderPresentation { get { return Presentation.Things; } } public override Image BrowseImage { get { return Properties.Resources.List; } } - + + //mxd. Prefixes usage + public override string UsageHint + { + get + { + return "Supported prefixes:" + System.Environment.NewLine + + "\"<=\" for values less or equal to given value;" + System.Environment.NewLine + + "\">=\" for values greater or equal to given value;" + System.Environment.NewLine + + "\"<\" for values less than given value;" + System.Environment.NewLine + + "\">\" for values greater than given value." + System.Environment.NewLine + + "\"!\" or \"!=\" for values not equal to given value."; + } + } + #endregion #region ================== Constructor / Destructor diff --git a/Source/Plugins/BuilderModes/Interface/FindReplaceForm.Designer.cs b/Source/Plugins/BuilderModes/Interface/FindReplaceForm.Designer.cs index 087f40b..a58c0da 100644 --- a/Source/Plugins/BuilderModes/Interface/FindReplaceForm.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/FindReplaceForm.Designer.cs @@ -28,8 +28,9 @@ namespace CodeImp.DoomBuilder.BuilderModes /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.Windows.Forms.Label label1; - System.Windows.Forms.Label label2; + this.labelfind = new System.Windows.Forms.Label(); this.searchtypes = new System.Windows.Forms.ComboBox(); this.findinput = new CodeImp.DoomBuilder.Controls.AutoSelectTextbox(); this.browsefind = new System.Windows.Forms.Button(); @@ -44,8 +45,8 @@ namespace CodeImp.DoomBuilder.BuilderModes this.deletebutton = new System.Windows.Forms.Button(); this.editbutton = new System.Windows.Forms.Button(); this.doreplace = new System.Windows.Forms.CheckBox(); + this.tooltip = new System.Windows.Forms.ToolTip(this.components); label1 = new System.Windows.Forms.Label(); - label2 = new System.Windows.Forms.Label(); this.resultspanel.SuspendLayout(); this.SuspendLayout(); // @@ -58,14 +59,14 @@ namespace CodeImp.DoomBuilder.BuilderModes label1.TabIndex = 0; label1.Text = "Search type:"; // - // label2 + // labelfind // - label2.AutoSize = true; - label2.Location = new System.Drawing.Point(47, 51); - label2.Name = "label2"; - label2.Size = new System.Drawing.Size(56, 13); - label2.TabIndex = 2; - label2.Text = "Find what:"; + this.labelfind.AutoSize = true; + this.labelfind.Location = new System.Drawing.Point(47, 51); + this.labelfind.Name = "labelfind"; + this.labelfind.Size = new System.Drawing.Size(56, 13); + this.labelfind.TabIndex = 2; + this.labelfind.Text = "Find what:"; // // searchtypes // @@ -218,6 +219,12 @@ namespace CodeImp.DoomBuilder.BuilderModes this.doreplace.UseVisualStyleBackColor = true; this.doreplace.CheckedChanged += new System.EventHandler(this.doreplace_CheckedChanged); // + // tooltip + // + this.tooltip.AutoPopDelay = 10000; + this.tooltip.InitialDelay = 100; + this.tooltip.ReshowDelay = 100; + // // FindReplaceForm // this.AcceptButton = this.findbutton; @@ -233,7 +240,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.Controls.Add(this.withinselection); this.Controls.Add(this.browsefind); this.Controls.Add(this.findinput); - this.Controls.Add(label2); + this.Controls.Add(labelfind); this.Controls.Add(this.searchtypes); this.Controls.Add(label1); this.Controls.Add(this.resultspanel); @@ -273,5 +280,7 @@ namespace CodeImp.DoomBuilder.BuilderModes private System.Windows.Forms.CheckBox doreplace; private System.Windows.Forms.Button editbutton; private System.Windows.Forms.Button deletebutton; + private System.Windows.Forms.ToolTip tooltip; + private System.Windows.Forms.Label labelfind; } } \ No newline at end of file diff --git a/Source/Plugins/BuilderModes/Interface/FindReplaceForm.cs b/Source/Plugins/BuilderModes/Interface/FindReplaceForm.cs index 04752a7..83c7d84 100644 --- a/Source/Plugins/BuilderModes/Interface/FindReplaceForm.cs +++ b/Source/Plugins/BuilderModes/Interface/FindReplaceForm.cs @@ -42,7 +42,8 @@ namespace CodeImp.DoomBuilder.BuilderModes bool controlpressed; bool shiftpressed; bool suppressevents; - + private Font hintfont; //mxd + #endregion #region ================== Properties @@ -59,6 +60,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // Initialize InitializeComponent(); + //mxd. Create hint font + hintfont = new Font(this.Font, FontStyle.Underline); + // Find all find/replace types Type[] findtypes = BuilderPlug.Me.FindClasses(typeof(FindReplaceType)); findtypeslist = new List(findtypes.Length); @@ -120,6 +124,22 @@ namespace CodeImp.DoomBuilder.BuilderModes if(!newfinder.CanReplace()) doreplace.Checked = false; doreplace_CheckedChanged(this, EventArgs.Empty); //mxd. Update the rest of replace controls doreplace.Enabled = newfinder.CanReplace(); + + //mxd. Update hint text + if (!string.IsNullOrEmpty(newfinder.UsageHint)) + { + tooltip.SetToolTip(labelfind, newfinder.UsageHint); + labelfind.Font = hintfont; + labelfind.ForeColor = SystemColors.HotTrack; + labelfind.Cursor = Cursors.Hand; + } + else if (labelfind.ForeColor == SystemColors.HotTrack) + { + tooltip.SetToolTip(labelfind, string.Empty); + labelfind.Font = this.Font; + labelfind.ForeColor = SystemColors.ControlText; + labelfind.Cursor = Cursors.Default; + } } // Browse find button clicked @@ -264,6 +284,9 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.Focus(); General.Editing.CancelMode(); } + + //mxd + hintfont.Dispose(); } // Close button clicked