private void GenerateAnagrams(object sender, EventArgs e) { LettersTextBox.Enabled = false; Bag LettersTextBox_bag = new Bag(LettersTextBox.Text); ListView.Items.Clear(); TypeToolStripMenuItem.Enabled = false; RunToolStripMenuItem.Enabled = false; ViewToolStripMenuItem.Enabled = false; m_start_time = DateTime.Now; ElapsedTimeLabel.Text = "00:00:00"; Timer.Enabled = true; ProgressBar.Minimum = 0; ProgressBar.Value = 0; Anagrams.anagrams(LettersTextBox_bag, m_dictionary, 0, // bottom of main loop delegate() { ProgressBar.PerformStep(); Application.DoEvents(); }, // done pruning delegate(uint recursion_level, List <bag_and_anagrams> pruned_dict) { if (recursion_level == 0) { ProgressBar.Maximum = pruned_dict.Count; Application.DoEvents(); } }, // found a top-level anagram delegate(strings words) { string display_me = ""; foreach (string s in words) { if (display_me.Length > 0) { display_me += " "; } display_me += s; } ListView.Items.Add(display_me); ListView.EnsureVisible(ListView.Items.Count - 1); ResultLabel.Text = ListView.Items.Count.ToString() + " sentences"; if (ListView.Items.Count % 1000 == 0) { Application.DoEvents(); } }); Timer.Enabled = false; ResultLabel.Text = String.Format("{0} sentences.", ListView.Items.Count); if (ListView.Items.Count > 0) { ListView.EnsureVisible(0); } LettersTextBox.Enabled = true; LettersTextBox.Focus(); ListView.Columns[0].Text = "Click here to sort"; TypeToolStripMenuItem.Enabled = true; RunToolStripMenuItem.Enabled = true; ViewToolStripMenuItem.Enabled = true; SaveResults(); }
private void GenerateAnagrams() { this.Cursor = Cursors.WaitCursor; try { LettersTextBox.Enabled = false; ListView.Items.Clear(); ListView.Enabled = false; InitialsToolStripMenuItem.Enabled = false; RunToolStripMenuItem.Enabled = false; SaveToolStripMenuItem.Enabled = false; m_start_time = DateTime.Now; ElapsedTimeLabel.Text = "00:00:00"; Timer.Enabled = true; ProgressBar.Minimum = 0; ProgressBar.Value = 0; string filename = "Data" + "/" + "dictionary.txt"; if (File.Exists(filename)) { sentences = Anagrams.GenerateAnagrams(filename, LettersTextBox.Text); if (sentences != null) { ProgressBar.Minimum = 0; ProgressBar.Maximum = sentences.Count; for (int i = 0; i < sentences.Count; i++) { ListView.Items.Add(sentences[i]); ListView.EnsureVisible(ListView.Items.Count - 1); ResultLabel.Text = ListView.Items.Count.ToString() + " / " + sentences.Count; if (ListView.Items.Count % 1000 == 0) { Application.DoEvents(); } ProgressBar.Value = i + 1; } } ResultLabel.Text = String.Format("{0} sentences.", sentences.Count); if (ListView.Items.Count > 0) { ListView.EnsureVisible(0); } LettersTextBox.Enabled = true; LettersTextBox.Focus(); ListView.Enabled = true; if (ListView.Columns.Count > 0) { ListView.Columns[0].Text = "Click to sort"; } InitialsToolStripMenuItem.Enabled = true; RunToolStripMenuItem.Enabled = true; SaveToolStripMenuItem.Enabled = true; SaveResults(); Timer.Enabled = false; } } finally { this.Cursor = Cursors.Default; } }