/// <summary> /// If a rule is selected from the parent GUI Fretlight, then this constructor is called instead to fill in the fields of the rule /// </summary> public RuleBuilderGUI(Rule selectedRule) : this() { Rule = selectedRule; // Fill boxes NameBox.Text = selectedRule.RuleName; StartFrameField.Text = selectedRule.StartFrame.ToString(); EndFrameField.Text = selectedRule.EndFrame.ToString(); StartPointField.Text = selectedRule.StartPoint[0] + ", " + selectedRule.StartPoint[1]; EndPointField.Text = selectedRule.EndPoint[0] + ", " + selectedRule.EndPoint[1]; RuleTypeBox.Text = selectedRule.RuleType; // Arrange LED this.StartPoint[0] = selectedRule.StartPoint[0]; this.StartPoint[1] = selectedRule.StartPoint[1]; this.EndPoint[0] = selectedRule.EndPoint[0]; this.EndPoint[1] = selectedRule.EndPoint[1]; this.FretBoard.Invalidate(); }
/// <summary> /// Builds the Rule according to the fields set, has default values if the fields are empty or invalid /// </summary> private void ConfirmButton_Click(object sender, EventArgs e) { int result; if (RuleType.Equals("Basic")) Rule = new BasicRule(); else if (RuleType.Equals("Conway")) Rule = new Conway(); if(! int.TryParse(StartFrameField.Text, out result)){ result = 0; } Rule.StartFrame = result; if (!int.TryParse(EndFrameField.Text, out result)) { result = 0; } Rule.EndFrame = result; Rule.StartPoint[0] = this.StartPoint[0]; Rule.StartPoint[1] = this.StartPoint[1]; Rule.EndPoint[0] = this.EndPoint[0]; Rule.EndPoint[1] = this.EndPoint[1]; Rule.RuleName = NameBox.Text; this.Close(); }
/// <summary> /// Saves rules to a file /// </summary> private void SaveButton_Click(object sender, EventArgs e) { try { XmlSerializer serializer = new XmlSerializer(typeof(Rule[])); // Convert listbox content to array for serialization Rule[] ruleArray = new Rule[RulesListbox.Items.Count]; int counter = 0; foreach (Rule n in RulesListbox.Items) { ruleArray[counter] = n; counter++; } // this process will open a save file dialog and give the option to choose // file location, name, and ext. then when you press save it will save it FileDialog oDialog = new SaveFileDialog(); oDialog.InitialDirectory = Environment.CurrentDirectory; oDialog.DefaultExt = "xml"; oDialog.FileName = "Rules"; oDialog.RestoreDirectory = true; if (oDialog.ShowDialog() == DialogResult.OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@oDialog.FileName)) { serializer.Serialize(file, ruleArray); } } } catch (Exception exp) { MessageBox.Show("" + exp); } }