public void LoadSettings() { isLoading = true; this.flowMain.SuspendLayout(); for (int i = flowMain.Controls.Count - 1; i > 0; i--) { flowMain.Controls.RemoveAt(i); } for (int i = 0; i < Splits.Count; i++) { SplitName split = Splits[i]; MemberInfo info = typeof(SplitName).GetMember(split.ToString())[0]; DescriptionAttribute description = (DescriptionAttribute)info.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]; SteamWorldSplitSettings setting = new SteamWorldSplitSettings(); setting.cboName.DataSource = GetAvailableSplits(); setting.cboName.Text = description.Description; SetSplitDescription(setting, i); AddHandlers(setting); flowMain.Controls.Add(setting); } isLoading = false; this.flowMain.ResumeLayout(true); }
private void flowMain_DragOver(object sender, DragEventArgs e) { SteamWorldSplitSettings setting = (SteamWorldSplitSettings)e.Data.GetData(typeof(SteamWorldSplitSettings)); FlowLayoutPanel destination = (FlowLayoutPanel)sender; Point p = destination.PointToClient(new Point(e.X, e.Y)); var item = destination.GetChildAtPoint(p); int index = destination.Controls.GetChildIndex(item, false); if (index == 0) { e.Effect = DragDropEffects.None; } else { e.Effect = DragDropEffects.Move; int oldIndex = destination.Controls.GetChildIndex(setting); if (oldIndex != index) { destination.Controls.SetChildIndex(setting, index); SetSplitDescription(setting, index - 1); SetSplitDescription((SteamWorldSplitSettings)item, oldIndex - 1); destination.Invalidate(); } } }
private void SetSplitDescription(SteamWorldSplitSettings setting, int index) { if (model != null && index + 1 < model.CurrentState.Run.Count) { setting.lblSplit.Text = (index + 1).ToString() + ": " + model.CurrentState.Run[index].Name; } else { setting.lblSplit.Text = ""; } }
public void SetSettings(XmlNode settings) { Splits.Clear(); XmlNodeList splitNodes = settings.SelectNodes(".//Splits/Split"); foreach (XmlNode splitNode in splitNodes) { string splitDescription = splitNode.InnerText; SplitName split = SteamWorldSplitSettings.GetSplitName(splitDescription); Splits.Add(split); } }
private void radio_CheckedChanged(object sender, EventArgs e) { foreach (Control c in flowMain.Controls) { if (c is SteamWorldSplitSettings) { SteamWorldSplitSettings setting = (SteamWorldSplitSettings)c; string text = setting.cboName.Text; setting.cboName.DataSource = GetAvailableSplits(); setting.cboName.Text = text; } } }
private void btnAddSplit_Click(object sender, EventArgs e) { SteamWorldSplitSettings setting = new SteamWorldSplitSettings(); List <string> splitNames = GetAvailableSplits(); setting.cboName.DataSource = splitNames; setting.cboName.Text = splitNames[0]; SetSplitDescription(setting, Splits.Count); AddHandlers(setting); flowMain.Controls.Add(setting); UpdateSplits(); }
public void btnRemove_Click(object sender, EventArgs e) { for (int i = flowMain.Controls.Count - 1; i > 0; i--) { if (flowMain.Controls[i].Contains((Control)sender)) { SteamWorldSplitSettings setting = (SteamWorldSplitSettings)((Button)sender).Parent; RemoveHandlers(setting); flowMain.Controls.RemoveAt(i); break; } } UpdateSplits(); }
public void UpdateSplits() { if (isLoading) { return; } Splits.Clear(); for (int i = flowMain.Controls.Count - 1; i >= 0; i--) { Control c = flowMain.Controls[i]; if (c is SteamWorldSplitSettings) { SteamWorldSplitSettings setting = (SteamWorldSplitSettings)c; if (!string.IsNullOrEmpty(setting.cboName.Text)) { SplitName split = SteamWorldSplitSettings.GetSplitName(setting.cboName.Text); Splits.Insert(0, split); } SetSplitDescription(setting, i - 1); } } }
private void RemoveHandlers(SteamWorldSplitSettings setting) { setting.cboName.SelectedIndexChanged -= ControlChanged; setting.btnRemove.Click -= btnRemove_Click; }
private void AddHandlers(SteamWorldSplitSettings setting) { setting.cboName.SelectedIndexChanged += new EventHandler(ControlChanged); setting.btnRemove.Click += new EventHandler(btnRemove_Click); }