Worms4Editor/W4Gui/Components/IntList.cs

103 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace W4Gui.Components
{
public partial class IntList : UserControl
{
private int lastIndex = -1;
private string label = "%n";
private List<int> valuesList = new List<int>();
public string Label
{
get
{
return label;
}
set
{
label = value;
createNumbersList();
}
}
public int[] Values
{
get
{
this.save();
return this.valuesList.ToArray();
}
}
private string formatStr(int idx)
{
return label.Replace("%n", (idx + 1).ToString());
}
public void DelInt(int idx)
{
this.valuesList.RemoveAt(idx);
this.numberList.Items.RemoveAt(idx);
createNumbersList();
}
public void AddInt(int value)
{
int idx = this.valuesList.Count;
this.valuesList.Add(value);
this.numberList.Items.Add(formatStr(idx));
}
private void createNumbersList()
{
this.save();
this.numberList.Items.Clear();
for (int i = 0; i < valuesList.Count; i++)
this.numberList.Items.Add(formatStr(i));
lastIndex = -1;
}
public IntList()
{
InitializeComponent();
}
private void save()
{
if (lastIndex >= 0)
valuesList[lastIndex] = valueBox.Value;
}
private void load()
{
if (numberList.SelectedIndex >= 0)
valueBox.Value = valuesList[numberList.SelectedIndex];
}
private void numberList_SelectedIndexChanged(object sender, EventArgs e)
{
this.save();
this.load();
lastIndex = numberList.SelectedIndex;
}
private void btnAddNumber_Click(object sender, EventArgs e)
{
AddInt(0);
numberList.SelectedIndex = valuesList.Count - 1;
}
private void btnDelNumber_Click(object sender, EventArgs e)
{
DelInt(numberList.SelectedIndex);
}
}
}