Add tooltips for special characters in the Find and Replace menu; code shamelessly taken from UDB.

This commit is contained in:
sphere 2021-02-25 00:31:10 +01:00
parent 2b435ede7f
commit 4958338bbb
13 changed files with 185 additions and 15 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -28,8 +28,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
/// </summary>
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;
}
}

View file

@ -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<FindReplaceType>(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