示例#1
0
        private void buttonAddNewRule_Click(object sender, EventArgs e)
        {
            if (comboBoxRuleTypes.SelectedIndex < 0)
            {
                //messageBox Arguments are (Text, Title, No Button Visible, Cancel Button Visible)
                MessageBoxForm.msgIcon = SystemIcons.Warning;                 //this is used if you want to add a system icon to the message form.
                var messageBox = new MessageBoxForm("Select a rule type first.",
                                                    "Warning", false, false);
                messageBox.ShowDialog();
                return;
            }

            INamingGenerator ng           = (INamingGenerator)comboBoxRuleTypes.SelectedItem;
            INamingGenerator newGenerator = (INamingGenerator)Activator.CreateInstance(ng.GetType());

            AddNewNamingGenerator(newGenerator);
            listViewGenerators.Items[listViewGenerators.Items.Count - 1].Selected = true;
            int index = listViewGenerators.SelectedIndices[0];

            if (textBoxNameFormat.Text.Contains("<" + (index + 1) + ">"))
            {
            }
            else
            {
                textBoxNameFormat.Text = textBoxNameFormat.Text + string.Format(" <{0}>", index + 1);
            }
            PopulateNames();
        }
示例#2
0
        private void DisplayNamingGenerator(INamingGenerator generator)
        {
            panelRuleConfig.Controls.Clear();

            NameGeneratorEditor newControl = null;

            if (generator is NumericCounter)
            {
                newControl = new NumericCounterEditor(generator as NumericCounter);
            }
            else if (generator is LetterCounter)
            {
                newControl = new LetterCounterEditor(generator as LetterCounter);
            }
            else if (generator is LetterIterator)
            {
                newControl = new LetterIteratorEditor(generator as LetterIterator);
            }
            else if (generator is WordIterator)
            {
                newControl = new WordIteratorEditor(generator as WordIterator);
            }

            if (newControl != null)
            {
                newControl.DataChanged += new EventHandler(NameGeneratorEditor_DataChanged);
                panelRuleConfig.Controls.Add(newControl);
            }

            buttonMoveRuleUp.Enabled   = (newControl != null);
            buttonMoveRuleDown.Enabled = (newControl != null);
            buttonDeleteRule.Enabled   = (newControl != null);
        }
示例#3
0
        // depth is 1-offset, as it will be the same as the one the user uses
        private IEnumerable <string> GenerateNames(int depth, string format, int currentNumber, int maxNumber)
        {
            List <string> result = new List <string>();

            if (Generators.Count < depth || currentNumber > maxNumber)
            {
                return(result);
            }

            INamingGenerator generator = Generators[depth - 1];

            // if the generator is endless, this will be an empty list.
            List <string> names = new List <string>(generator.GenerateNames());

            for (int i = 0; i < generator.IterationsInCycle || generator.EndlessCycle; i++)
            {
                string substitution;
                if (generator.EndlessCycle)
                {
                    substitution = generator.GenerateName(i);
                }
                else
                {
                    substitution = names[i];
                }

                string newFormat = format.Replace("<" + depth + ">", substitution);

                // if this is the last generator, use the single string; otherwise, recurse so the next
                // generator can have a crack at it as well.
                if (depth >= Generators.Count)
                {
                    result.Add(newFormat);
                }
                else
                {
                    // if the sub-generator didn't make anything, add the name directly and treat this one as the final.
                    IEnumerable <string> subResult = GenerateNames(depth + 1, newFormat, currentNumber + result.Count, maxNumber);
                    if (subResult.Any())
                    {
                        result.AddRange(subResult);
                    }
                    else
                    {
                        result.Add(newFormat);
                    }
                }

                if (currentNumber + result.Count >= maxNumber)
                {
                    break;
                }
            }

            return(result);
        }
示例#4
0
        private void buttonAddNewRule_Click(object sender, EventArgs e)
        {
            if (comboBoxRuleTypes.SelectedIndex < 0)
            {
                MessageBox.Show("Select a rule type first.");
                return;
            }

            INamingGenerator ng           = (INamingGenerator)comboBoxRuleTypes.SelectedItem;
            INamingGenerator newGenerator = (INamingGenerator)Activator.CreateInstance(ng.GetType());

            AddNewNamingGenerator(newGenerator);
            listViewGenerators.Items[listViewGenerators.Items.Count - 1].Selected = true;
            PopulateNames();
        }
示例#5
0
        private void buttonMoveRuleUp_Click(object sender, EventArgs e)
        {
            int index = listViewGenerators.SelectedIndices[0];

            if (listViewGenerators.SelectedIndices.Count <= 0)
            {
                return;
            }
            if (index <= 0)
            {
                return;
            }

            INamingGenerator ng = Generators[index - 1];

            Generators[index - 1] = Generators[index];
            Generators[index]     = ng;
            SyncGeneratorsToListView();
            PopulateNames();
            this.listViewGenerators.Items[index - 1].Selected = true;
        }
示例#6
0
        private void buttonMoveRuleDown_Click(object sender, EventArgs e)
        {
            if (listViewGenerators.SelectedIndices.Count <= 0)
            {
                return;
            }

            int index = listViewGenerators.SelectedIndices[0];

            if (index >= Generators.Count - 1)
            {
                return;
            }

            INamingGenerator ng = Generators[index + 1];

            Generators[index + 1] = Generators[index];
            Generators[index]     = ng;
            SyncGeneratorsToListView();
            PopulateNames();
        }
示例#7
0
 private void AddNewNamingGenerator(INamingGenerator generator)
 {
     Generators.Add(generator);
     SyncGeneratorsToListView();
 }
示例#8
0
		private void DisplayNamingGenerator(INamingGenerator generator)
		{
			panelRuleConfig.Controls.Clear();

			NameGeneratorEditor newControl = null;
			if (generator is NumericCounter) {
				newControl = new NumericCounterEditor(generator as NumericCounter);
			}
			else if (generator is LetterCounter) {
				newControl = new LetterCounterEditor(generator as LetterCounter);
			}
			else if (generator is LetterIterator) {
				newControl = new LetterIteratorEditor(generator as LetterIterator);
			}
			else if (generator is WordIterator) {
				newControl = new WordIteratorEditor(generator as WordIterator);
			}

			if (newControl != null) {
				newControl.DataChanged += new EventHandler(NameGeneratorEditor_DataChanged);
				panelRuleConfig.Controls.Add(newControl);
			}

			buttonMoveRuleUp.Enabled = (newControl != null);
			buttonMoveRuleDown.Enabled = (newControl != null);
			buttonDeleteRule.Enabled = (newControl != null);
		}
示例#9
0
		private void AddNewNamingGenerator(INamingGenerator generator)
		{
			Generators.Add(generator);
			SyncGeneratorsToListView();
		}