private void ButtonOK_Click(object sender, RoutedEventArgs e) { bool previousShowSynapses = false; if (MainWindow.theNeuronArray != null) { previousShowSynapses = MainWindow.theNeuronArray.ShowSynapses; } MainWindow.CloseAllModuleDialogs(); MainWindow.CloseHistoryWindow(); MainWindow.CloseNotesWindow(); MainWindow.arrayView.ClearShowingSynapses(); if (MainWindow.theNeuronArray != null) { lock (MainWindow.theNeuronArray.Modules) { MainWindow.theNeuronArray.Modules.Clear(); } } MainWindow.arrayView.ClearSelection(); MainWindow.theNeuronArray = new NeuronArray(); if (!int.TryParse(textBoxColumns.Text, out cols)) { return; } if (!int.TryParse(textBoxRows.Text, out rows)) { return; } if (cols <= 0) { return; } if (rows <= 0) { return; } //if (checkBoxSynapses.IsChecked == true) doSynapses = true; if (!int.TryParse(Refractory.Text, out refractory)) { return; } arraySize = rows * cols; //progressBar.Maximum = arraySize; //int.TryParse(textBoxSynapses.Text, out synapsesPerNeuron); MainWindow.arrayView.Dp.NeuronDisplaySize = 62; MainWindow.arrayView.Dp.DisplayOffset = new Point(0, 0); if (MainWindow.useServers && NeuronClient.serverList.Count > 0) { //TODO: Replace this with a multicolumn UI MainWindow.theNeuronArray.Initialize(arraySize, rows); string[] lines = ServerList.Text.Split('\n'); NeuronClient.serverList.Clear(); foreach (string line in lines) { if (line == "") { continue; } string[] command = line.Split(' '); NeuronClient.Server s = new NeuronClient.Server(); s.ipAddress = IPAddress.Parse(command[0]); s.name = command[1]; int.TryParse(command[2], out s.firstNeuron); int.TryParse(command[3], out s.lastNeuron); NeuronClient.serverList.Add(s); } int totalNeuronsInServers = 0; for (int i = 0; i < NeuronClient.serverList.Count; i++) { totalNeuronsInServers += NeuronClient.serverList[i].lastNeuron - NeuronClient.serverList[i].firstNeuron; } if (totalNeuronsInServers != arraySize) { MessageBox.Show("Server neuron allocation does not equal total neurons!"); buttonOK.IsEnabled = true; returnValue = false; return; } NeuronClient.InitServers(0, arraySize); NeuronClient.WaitForDoneOnAllServers(); returnValue = true; Close(); returnValue = true; } else { GC.Collect(3, GCCollectionMode.Forced, true); MainWindow.theNeuronArray.Initialize(arraySize, rows); MainWindow.theNeuronArray.RefractoryDelay = refractory; MainWindow.theNeuronArray.ShowSynapses = previousShowSynapses; MainWindow.thisWindow.SetShowSynapsesCheckBox(previousShowSynapses); Close(); returnValue = true; } MainWindow.theNeuronArray.LoadComplete = true; }
private void ButtonOK_Click(object sender, RoutedEventArgs e) { buttonOK.IsEnabled = false; MainWindow.CloseAllModuleDialogs(); MainWindow.CloseHistoryWindow(); MainWindow.CloseNotesWindow(); if (MainWindow.theNeuronArray != null) { MainWindow.theNeuronArray.Modules.Clear(); } MainWindow.arrayView.ClearSelection(); MainWindow.theNeuronArray = new NeuronArray(); if (!int.TryParse(textBoxColumns.Text, out cols)) { return; } if (!int.TryParse(textBoxRows.Text, out rows)) { return; } if (checkBoxSynapses.IsChecked == true) { doSynapses = true; } arraySize = rows * cols; progressBar.Maximum = arraySize; int.TryParse(textBoxSynapses.Text, out synapsesPerNeuron); MainWindow.arrayView.Dp.NeuronDisplaySize = 62; MainWindow.arrayView.Dp.DisplayOffset = new Point(0, 0); if (MainWindow.useServers) { //TODO: Replace this with a multicolumn UI MainWindow.theNeuronArray.Initialize(arraySize, rows); string[] lines = ServerList.Text.Split('\n'); NeuronClient.serverList.Clear(); foreach (string line in lines) { if (line == "") { continue; } string[] command = line.Split(' '); NeuronClient.Server s = new NeuronClient.Server(); s.ipAddress = IPAddress.Parse(command[0]); s.name = command[1]; int.TryParse(command[2], out s.firstNeuron); int.TryParse(command[3], out s.lastNeuron); NeuronClient.serverList.Add(s); } int totalNeuronsInServers = 0; for (int i = 0; i < NeuronClient.serverList.Count; i++) { totalNeuronsInServers += NeuronClient.serverList[i].lastNeuron - NeuronClient.serverList[i].firstNeuron; } if (totalNeuronsInServers != arraySize) { MessageBox.Show("Server neuron allocation does not equal total neurons!"); buttonOK.IsEnabled = true; returnValue = false; return; } if (!doSynapses) { synapsesPerNeuron = 0; } NeuronClient.InitServers(synapsesPerNeuron, arraySize); NeuronClient.WaitForDoneOnAllServers(); returnValue = true; Close(); } else { bgw.DoWork += AsyncCreateNeurons; bgw.RunWorkerAsync(); barUpdateTimer.Tick += Dt_Tick; barUpdateTimer.Start(); } }