Mother2GbaTranslation/tools/ScriptToolGui/StringPreviewer.cs

91 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ScriptTool;
namespace ScriptToolGui
{
public partial class StringPreviewer : UserControl
{
public Compiler M12Compiler { get; set; }
public IDictionary<byte, string> CharLookup { get; set; }
public int MaxWidth { get; set; }
public StringPreviewer()
{
InitializeComponent();
}
private void RedrawFancy(string str)
{
stringPanel.Controls.Clear();
if (M12Compiler == null || CharLookup == null || str == null)
{
return;
}
try
{
IList<int> widths;
IList<string> parsed = M12Compiler.FormatPreviewM12(str, out widths, CharLookup);
for (int i = 0; i < parsed.Count; i++)
{
var label = new Label();
label.AutoSize = true;
label.Text = parsed[i] + " (" + widths[i] + ")";
if (widths[i] <= MaxWidth)
label.ForeColor = Color.Green;
else
label.ForeColor = Color.Red;
stringPanel.Controls.Add(label);
}
}
catch (Exception e)
{
stringPanel.Controls.Clear();
var errLabel = new Label();
errLabel.AutoSize = true;
errLabel.Font = new Font(errLabel.Font, FontStyle.Bold);
errLabel.Text = "Error: " + e.Message;
stringPanel.Controls.Add(errLabel);
}
}
private void RedrawPlain(string str)
{
stringPanel.Controls.Clear();
if (str == null)
return;
var label = new Label
{
AutoSize = true,
Text = str
};
stringPanel.Controls.Add(label);
}
public void DisplayString(string str, bool fancy)
{
if (fancy)
RedrawFancy(str);
else
RedrawPlain(str);
}
}
}