mirror of
https://github.com/Macro-Deck-App/Macro-Deck.git
synced 2026-06-06 05:00:02 +08:00
137 lines
4.2 KiB
C#
137 lines
4.2 KiB
C#
using System.Windows.Forms;
|
|
using SuchByte.MacroDeck.GUI.CustomControls;
|
|
using SuchByte.MacroDeck.Language;
|
|
using SuchByte.MacroDeck.Variables;
|
|
using MessageBox = SuchByte.MacroDeck.GUI.CustomControls.MessageBox;
|
|
|
|
namespace SuchByte.MacroDeck.GUI.Dialogs;
|
|
|
|
public partial class VariableDialog : DialogForm
|
|
{
|
|
public Variable Variable;
|
|
|
|
private readonly bool _protected;
|
|
private readonly bool _edit;
|
|
|
|
public VariableDialog(Variable variable = null)
|
|
{
|
|
InitializeComponent();
|
|
lblType.Text = LanguageManager.Strings.Type;
|
|
lblName.Text = LanguageManager.Strings.Name;
|
|
lblValue.Text = LanguageManager.Strings.Value;
|
|
btnDelete.Text = LanguageManager.Strings.DeleteVariable;
|
|
btnOk.Text = LanguageManager.Strings.Ok;
|
|
if (variable == null)
|
|
{
|
|
Variable = new Variable();
|
|
variableName.Enabled = true;
|
|
_edit = false;
|
|
} else
|
|
{
|
|
Variable = variable;
|
|
variableName.Enabled = false;
|
|
_edit = true;
|
|
}
|
|
|
|
_protected = (Variable.Creator != "User");
|
|
variableType.Enabled = !_protected;
|
|
variableValue.Enabled = !_protected;
|
|
}
|
|
|
|
|
|
private void VariableName_TextChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void BtnOk_Click(object sender, EventArgs e)
|
|
{
|
|
if (_protected)
|
|
{
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
return;
|
|
}
|
|
|
|
if (!_edit)
|
|
{
|
|
if (variableName.Text.Length == 0)
|
|
{
|
|
variableName.Text = "new_variable";
|
|
}
|
|
|
|
var variableCount = VariableManager.ListVariables.Count(v => v.Name == variableName.Text);
|
|
if (variableCount > 0)
|
|
{
|
|
variableName.Text = string.Format(variableName.Text + " _{0}", variableCount);
|
|
}
|
|
Variable.Name = VariableManager.ConvertNameString(variableName.Text);
|
|
}
|
|
|
|
Variable.Type = variableType.Text;
|
|
switch (Variable.Type)
|
|
{
|
|
case "Bool":
|
|
Variable.Value = (variableValue.Text.ToLower().Equals("true") ? true : false).ToString();
|
|
break;
|
|
case "Integer":
|
|
int.TryParse(variableValue.Text, out var intVal);
|
|
Variable.Value = intVal.ToString();
|
|
break;
|
|
case "Float":
|
|
float.TryParse(variableValue.Text, out var floatVal);
|
|
Variable.Value = floatVal.ToString();
|
|
break;
|
|
case "String":
|
|
Variable.Value = variableValue.Text;
|
|
break;
|
|
}
|
|
|
|
VariableManager.SetValue(Variable.Name, Variable.Value, Variable.VariableType, Variable.Creator);
|
|
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
|
|
private void VariableDialog_Load(object sender, EventArgs e)
|
|
{
|
|
foreach (var name in Enum.GetNames(typeof(VariableType)))
|
|
{
|
|
variableType.Items.Add(name);
|
|
}
|
|
variableType.Text = Variable.Type;
|
|
variableName.Text = Variable.Name;
|
|
variableValue.Text = Variable.Value;
|
|
CenterToScreen();
|
|
}
|
|
|
|
private void BtnDelete_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
using var msgBox = new MessageBox();
|
|
if(msgBox.ShowDialog(LanguageManager.Strings.AreYouSure, string.Format(LanguageManager.Strings.VariableXGetsDeleted, Variable.Name), MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
VariableManager.DeleteVariable(Variable.Name);
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
}
|
|
}
|
|
|
|
private void variableType_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
switch (variableType.Text)
|
|
{
|
|
case "Bool":
|
|
variableValue.Text = "false";
|
|
break;
|
|
case "Integer":
|
|
variableValue.Text = "0";
|
|
break;
|
|
case "Float":
|
|
variableValue.Text = "0.0";
|
|
break;
|
|
case "String":
|
|
variableValue.Text = "";
|
|
break;
|
|
}
|
|
}
|
|
} |