private void parameterizeFeatureToolStripMenuItem_Click(object sender, EventArgs e) { Feature feature = parameterizeFeatureToolStripMenuItem.Tag as Feature; DynamicForm f = new DynamicForm("Parameterize \"" + feature.Description + "\"...", DynamicForm.CloseButtons.OkCancel); foreach (Enum parameter in feature.Parameters.OrderBy(p => p)) { if (parameter.Equals(FeatureBasedDCM.GeometryAttributeParameter.AttributeColumn)) { f.AddDropDown(parameter + ":", DB.Connection.GetColumnNames(new Shapefile(int.Parse(feature.TrainingResourceId)).GeometryTable).ToArray(), feature.Parameters.GetStringValue(parameter), parameter.ToString(), true, toolTipText: feature.Parameters.GetTip(parameter)); } else if (parameter.Equals(FeatureBasedDCM.GeometryAttributeParameter.AttributeType)) { f.AddDropDown(parameter + ":", new string[] { "Numeric", "Nominal" }, feature.Parameters.GetStringValue(parameter), parameter.ToString(), true, toolTipText: feature.Parameters.GetTip(parameter)); } else { f.AddTextBox(parameter + ":", feature.Parameters.GetStringValue(parameter), 20, parameter.ToString(), toolTipText: feature.Parameters.GetTip(parameter)); } } if (f.ShowDialog() == DialogResult.OK) { foreach (Enum parameter in feature.Parameters.OrderBy(p => p)) { feature.Parameters.Set(parameter, f.GetValue <string>(parameter.ToString())); } } }
private void ClassifierList_MouseUp(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right && SelectedItem != null) { Classifier classifier = SelectedItem as Classifier; if (classifier == null) { throw new NullReferenceException("Failed to cast classifier item from list"); } string updateWindowTitle = "Updating " + classifier.GetType().Name + "..."; if (classifier is LibLinear) { LibLinear liblinear = classifier as LibLinear; DynamicForm f = new DynamicForm("Set LibLinear parameters", DynamicForm.CloseButtons.OkCancel); f.AddCheckBox("Run feature selection:", ContentAlignment.MiddleRight, liblinear.RunFeatureSelection, "run_feature_selection"); f.AddDropDown("Positive weighting:", Enum.GetValues(typeof(LibLinear.PositiveClassWeighting)), liblinear.Weighting, "positive_weighting", true); if (f.ShowDialog() == DialogResult.OK) { liblinear.RunFeatureSelection = f.GetValue <bool>("run_feature_selection"); liblinear.Weighting = f.GetValue <LibLinear.PositiveClassWeighting>("positive_weighting"); } } else if (classifier is SvmRank) { SvmRank svmRank = classifier as SvmRank; DynamicForm f = new DynamicForm("Set SvmRank parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("c:", (decimal)svmRank.C, 3, decimal.MinValue, decimal.MaxValue, (decimal)0.01, "c"); if (f.ShowDialog() == DialogResult.OK) { try { svmRank.C = Convert.ToSingle(f.GetValue <decimal>("c")); } catch (Exception ex) { MessageBox.Show("Invalid value for C: " + ex.Message); } } } else if (classifier is RandomForest) { RandomForest randomForest = classifier as RandomForest; DynamicForm f = new DynamicForm("Set RandomForest parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("Number of trees:", randomForest.NumTrees, 0, 1, decimal.MaxValue, 1, "ntree"); if (f.ShowDialog() == DialogResult.OK) { randomForest.NumTrees = Convert.ToInt32(f.GetValue <decimal>("ntree")); } } else if (classifier is AdaBoost) { AdaBoost adaBoost = classifier as AdaBoost; DynamicForm f = new DynamicForm("Set AdaBoost parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("Number of iterations:", adaBoost.Iterations, 0, 1, decimal.MaxValue, 1, "iterations"); if (f.ShowDialog() == DialogResult.OK) { adaBoost.Iterations = Convert.ToInt32(f.GetValue <decimal>("iterations")); } } } }
private void ClassifierList_MouseUp(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right && SelectedItem != null) { Classifier classifier = SelectedItem as Classifier; if (classifier == null) throw new NullReferenceException("Failed to cast classifier item from list"); string updateWindowTitle = "Updating " + classifier.GetType().Name + "..."; if (classifier is LibLinear) { LibLinear liblinear = classifier as LibLinear; DynamicForm f = new DynamicForm("Set LibLinear parameters", DynamicForm.CloseButtons.OkCancel); f.AddCheckBox("Run feature selection:", ContentAlignment.MiddleRight, liblinear.RunFeatureSelection, "run_feature_selection"); f.AddDropDown("Positive weighting:", Enum.GetValues(typeof(LibLinear.PositiveClassWeighting)), liblinear.Weighting, "positive_weighting", true); if (f.ShowDialog() == DialogResult.OK) { liblinear.RunFeatureSelection = f.GetValue<bool>("run_feature_selection"); liblinear.Weighting = f.GetValue<LibLinear.PositiveClassWeighting>("positive_weighting"); } } else if (classifier is SvmRank) { SvmRank svmRank = classifier as SvmRank; DynamicForm f = new DynamicForm("Set SvmRank parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("c:", (decimal)svmRank.C, 3, decimal.MinValue, decimal.MaxValue, (decimal)0.01, "c"); if (f.ShowDialog() == DialogResult.OK) { try { svmRank.C = Convert.ToSingle(f.GetValue<decimal>("c")); } catch (Exception ex) { MessageBox.Show("Invalid value for C: " + ex.Message); } } } else if (classifier is RandomForest) { RandomForest randomForest = classifier as RandomForest; DynamicForm f = new DynamicForm("Set RandomForest parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("Number of trees:", randomForest.NumTrees, 0, 1, decimal.MaxValue, 1, "ntree"); if (f.ShowDialog() == DialogResult.OK) { randomForest.NumTrees = Convert.ToInt32(f.GetValue<decimal>("ntree")); } } else if (classifier is AdaBoost) { AdaBoost adaBoost = classifier as AdaBoost; DynamicForm f = new DynamicForm("Set AdaBoost parameters", DynamicForm.CloseButtons.OkCancel); f.AddNumericUpdown("Number of iterations:", adaBoost.Iterations, 0, 1, decimal.MaxValue, 1, "iterations"); if (f.ShowDialog() == DialogResult.OK) { adaBoost.Iterations = Convert.ToInt32(f.GetValue<decimal>("iterations")); } } } }
private void remapSelectedFeaturesDuringPredictionToolStripMenuItem_Click(object sender, EventArgs e) { if (Features.Count == 0) { MessageBox.Show("Must select one or more features before remapping."); } else { Area[] predictionAreas = Area.GetAll().ToArray(); if (predictionAreas.Length == 0) { MessageBox.Show("No prediction areas available for remapping."); } else { DynamicForm df = new DynamicForm("Remapping features...", DynamicForm.CloseButtons.OkCancel); df.AddDropDown("Prediction area:", predictionAreas, null, "prediction_area", true); if (df.ShowDialog() == DialogResult.OK) { List <Feature> selectedFeatures = Features; FeatureRemappingForm f = new FeatureRemappingForm(selectedFeatures, _getFeatures(df.GetValue <Area>("prediction_area"))); f.ShowDialog(); _featureRemapKeyTargetPredictionResource.Clear(); foreach (Feature feature in selectedFeatures) { if (feature.PredictionResourceId != feature.TrainingResourceId) { _featureRemapKeyTargetPredictionResource.Add(feature.RemapKey, feature.PredictionResourceId); } } RefreshFeatures(); foreach (Feature feature in selectedFeatures) { features.SetSelected(features.Items.IndexOf(feature), true); } } } } }
public void addModelToolStripMenuItem_Click(object sender, EventArgs e) { Type[] modelTypes = Assembly.GetAssembly(typeof(DiscreteChoiceModel)).GetTypes().Where(t => !t.IsAbstract && t.IsSubclassOf(typeof(DiscreteChoiceModel))).ToArray(); if (modelTypes.Length == 0) MessageBox.Show("No model type are available."); else if (Area.GetAll().Count == 0) MessageBox.Show("No areas available to model. Import one first."); else { DynamicForm modelForm = new DynamicForm("Select model type...", DynamicForm.CloseButtons.OkCancel); modelForm.AddDropDown("Model type:", modelTypes, null, "model_type", false); if (modelForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Type modelType = modelForm.GetValue<Type>("model_type"); DiscreteChoiceModel model = null; if (modelType == typeof(KernelDensityDCM)) { KernelDensityDcmForm f = new KernelDensityDcmForm(); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) model = f.ResultingModel; } else if (modelType == typeof(FeatureBasedDCM)) { FeatureBasedDcmForm f = new FeatureBasedDcmForm(); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) model = f.ResultingModel; } else if (modelType == typeof(TimeSliceDCM)) { TimeSliceDcmForm f = new TimeSliceDcmForm(); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) model = f.ResultingModel; } if (model != null) RefreshModels(model.Id); } } }
public Dictionary<string, string> MapIncidentColumnsToShapefileColumns(string shapefileGeometryTable, bool reusePrevious) { if (!reusePrevious) _incidentColumnShapefileColumn = null; if (_incidentColumnShapefileColumn == null) { _incidentColumnShapefileColumn = new Dictionary<string, string>(); string[] shapefileColumns = DB.Connection.GetColumnNames(shapefileGeometryTable).ToArray(); DynamicForm f = new DynamicForm("Supply column mapping from incident table to shapefile table...", DynamicForm.CloseButtons.OK); string[] incidentColumns = new string[] { Incident.Columns.Location, Incident.Columns.NativeId, Incident.Columns.Time, Incident.Columns.Type }; foreach (string incidentColumn in incidentColumns) f.AddDropDown(incidentColumn + ":", shapefileColumns, null, incidentColumn, true); f.ShowDialog(); _incidentColumnShapefileColumn = new Dictionary<string, string>(); foreach (string incidentTableColumn in incidentColumns) _incidentColumnShapefileColumn.Add(incidentTableColumn, f.GetValue<string>(incidentTableColumn)); } return _incidentColumnShapefileColumn; }
private Area PromptForArea(string prompt) { Area[] areas = Area.GetAll().ToArray(); if (areas.Length == 0) { MessageBox.Show("No areas available."); return null; } DynamicForm f = new DynamicForm(prompt, DynamicForm.CloseButtons.OkCancel); f.AddDropDown("Areas:", areas, null, "area", true); Area importArea = null; if (f.ShowDialog() == DialogResult.OK) importArea = f.GetValue<Area>("area"); return importArea; }
private void manageStoredImportersToolStripMenuItem_Click(object sender, EventArgs e) { Importer[] storedImporters = Importer.GetAll().ToArray(); Thread t = new Thread(new ThreadStart(() => { DialogResult manageDialogResult = System.Windows.Forms.DialogResult.OK; bool refreshStoredImporters = false; while (manageDialogResult == System.Windows.Forms.DialogResult.OK) { if (refreshStoredImporters) { storedImporters = Importer.GetAll().ToArray(); refreshStoredImporters = false; } DynamicForm f = new DynamicForm("Stored importers...", DynamicForm.CloseButtons.OkClose); f.AddListBox("Importers:", storedImporters, null, SelectionMode.MultiExtended, "importers", true); f.AddDropDown("Action:", Enum.GetValues(typeof(ManageImporterAction)), null, "action", false); if ((manageDialogResult = f.ShowDialog()) == System.Windows.Forms.DialogResult.OK) { ManageImporterAction action = f.GetValue<ManageImporterAction>("action"); if (action == ManageImporterAction.Load) { DynamicForm df = new DynamicForm("Select importer source...", DynamicForm.CloseButtons.OkCancel); df.AddTextBox("Path:", ATT.Configuration.ImportersLoadDirectory, 75, "path", addFileBrowsingButtons: true, fileFilter: "ATT importers|*.attimp", initialBrowsingDirectory: ATT.Configuration.ImportersLoadDirectory); if (df.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string path = df.GetValue<string>("path"); string[] importerPaths = null; if (Directory.Exists(path)) importerPaths = Directory.GetFiles(path, "*.attimp", SearchOption.TopDirectoryOnly); else if (File.Exists(path)) importerPaths = new string[] { path }; if (importerPaths != null) { BinaryFormatter bf = new BinaryFormatter(); foreach (string importerPath in importerPaths) using (FileStream fs = new FileStream(importerPath, FileMode.Open, FileAccess.Read)) { try { Importer importer = bf.Deserialize(fs) as Importer; string absolutePath = importer.Path; int relativizationIdEnd = importer.RelativePath.IndexOf('}'); string relativizationId = importer.RelativePath.Substring(0, relativizationIdEnd + 1).Trim('{', '}'); if (!string.IsNullOrWhiteSpace(relativizationId)) { PathRelativizationId pathRelativizationId = (PathRelativizationId)Enum.Parse(typeof(PathRelativizationId), relativizationId); string relativeTrailingPath = importer.RelativePath.Substring(relativizationIdEnd + 1).Trim(Path.DirectorySeparatorChar); if (pathRelativizationId == PathRelativizationId.EventDirectory) absolutePath = Path.Combine(ATT.Configuration.EventsImportDirectory, relativeTrailingPath); else if (pathRelativizationId == PathRelativizationId.IncidentDirectory) absolutePath = Path.Combine(ATT.Configuration.IncidentsImportDirectory, relativeTrailingPath); else if (pathRelativizationId == PathRelativizationId.ShapefileDirectory) absolutePath = Path.Combine(ATT.Configuration.PostGisShapefileDirectory, relativeTrailingPath); else throw new NotImplementedException("Unrecognized path relativization id: " + pathRelativizationId); } importer.Path = absolutePath; importer.Save(false); fs.Close(); refreshStoredImporters = true; } catch (Exception ex) { Console.Out.WriteLine("Importer import failed: " + ex.Message); } } } } } else { string exportDirectory = null; foreach (Importer importer in f.GetValue<System.Windows.Forms.ListBox.SelectedObjectCollection>("importers")) if (action == ManageImporterAction.Delete) { importer.Delete(); refreshStoredImporters = true; } else if (action == ManageImporterAction.Edit) { Dictionary<string, object> updateKeyValue = new Dictionary<string, object>(); DynamicForm updateForm = new DynamicForm("Update importer \"" + importer + "\"...", DynamicForm.CloseButtons.OkCancel); importer.GetUpdateRequests(new Importer.UpdateRequestDelegate((itemName, currentValue, possibleValues, id) => { itemName += ":"; if (possibleValues != null) updateForm.AddDropDown(itemName, possibleValues.ToArray(), currentValue, id, false); else if (currentValue is string) updateForm.AddTextBox(itemName, currentValue as string, -1, id); else if (currentValue is int) updateForm.AddNumericUpdown(itemName, (int)currentValue, 0, int.MinValue, int.MaxValue, 1, id); else if (currentValue != null) throw new NotImplementedException("Cannot dynamically generate form for update request"); updateKeyValue.Add(id, currentValue); })); if (updateForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { foreach (string updateKey in updateKeyValue.Keys.ToArray()) updateKeyValue[updateKey] = updateForm.GetValue<object>(updateKey); importer.Update(updateKeyValue); importer.Save(true); refreshStoredImporters = true; } } else if (action == ManageImporterAction.Store) { if (exportDirectory == null) exportDirectory = LAIR.IO.Directory.PromptForDirectory("Select export directory...", ATT.Configuration.ImportersLoadDirectory); if (Directory.Exists(exportDirectory)) { try { BinaryFormatter bf = new BinaryFormatter(); using (FileStream fs = new FileStream(Path.Combine(exportDirectory, ReplaceInvalidFilenameCharacters(importer.ToString() + ".attimp")), FileMode.Create, FileAccess.ReadWrite)) { bf.Serialize(fs, importer); fs.Close(); Console.Out.WriteLine("Exported \"" + importer + "\"."); } } catch (Exception ex) { Console.Out.WriteLine("Importer export failed: " + ex.Message); } } } else if (action == ManageImporterAction.Run) { Console.Out.WriteLine("Running importer \"" + importer + "\"..."); try { importer.Import(); } catch (Exception ex) { Console.Out.WriteLine("Import failed: " + ex.Message); } } else MessageBox.Show("Unrecognized action: " + action); } } } // might have imported/created an area RefreshPredictionAreas(); })); t.SetApartmentState(ApartmentState.STA); t.Start(); }
private void Import(string downloadDirectory, CompleteImporterFormDelegate completeImporterForm, CreateImporterDelegate createImporter, string initialBrowsingDirectory, string fileBrowserFilter, string[] importFileSearchPatterns, ImportCompletionDelegate completionCallback) { Thread t = new Thread(new ThreadStart(delegate() { try { DynamicForm importerForm = new DynamicForm("Enter import information...", DynamicForm.CloseButtons.OkCancel); importerForm.AddTextBox("Import name (descriptive):", null, 70, "name"); importerForm.AddTextBox("Path:", null, 200, "path", addFileBrowsingButtons: true, initialBrowsingDirectory: initialBrowsingDirectory, fileFilter: fileBrowserFilter, textChanged: (o, e) => { TextBox pathTextBox = o as TextBox; ComboBox fileTypeCombo = importerForm.GetControl<ComboBox>("file_type"); string path = pathTextBox.Text.Trim().ToLower(); string extension = Path.GetExtension(path); bool pathIsDirectory = Directory.Exists(path); if (!pathIsDirectory) if (extension == ".zip") fileTypeCombo.SelectedItem = ImportFileType.Zip; else fileTypeCombo.SelectedItem = ImportFileType.Plain; }); importerForm.AddTextBox("Download XML URI:", null, 200, "uri"); importerForm.AddDropDown("File type:", Enum.GetValues(typeof(ImportFileType)), ImportFileType.Plain, "file_type", true); importerForm.AddCheckBox("Delete imported file after import:", ContentAlignment.MiddleRight, false, "delete"); importerForm.AddCheckBox("Save importer(s):", ContentAlignment.MiddleRight, false, "save_importer"); if (completeImporterForm != null) importerForm = completeImporterForm(importerForm); if (importerForm == null) return; if (importerForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string p = importerForm.GetValue<string>("path").Trim(); ImportFileType fileType = (ImportFileType)importerForm.GetValue<object>("file_type"); bool pathIsDirectory = Directory.Exists(p); if (pathIsDirectory) downloadDirectory = p; #region download file if a URI is given -- some callbacks need the file in order to set up the importer string sourceURI = importerForm.GetValue<string>("uri"); if (!string.IsNullOrWhiteSpace(sourceURI)) { if (string.IsNullOrWhiteSpace(p) || pathIsDirectory) { p = Path.Combine(downloadDirectory, ReplaceInvalidFilenameCharacters("uri_download_" + DateTime.Now.ToShortDateString() + "_" + DateTime.Now.ToLongTimeString() + (fileType == ImportFileType.Zip ? ".zip" : ""))); pathIsDirectory = false; } try { LAIR.IO.Network.Download(sourceURI, p); } catch (Exception ex) { try { File.Delete(p); } catch (Exception ex2) { Console.Out.WriteLine("Failed to delete partially downloaded file \"" + p + "\": " + ex2.Message); } Console.Out.WriteLine("Error downloading file from URI: " + ex.Message); return; } } #endregion #region decompress zip files if the user is providing them if (fileType == ImportFileType.Zip) { string[] pathsToUnzip = new string[] { p }; if (pathIsDirectory) pathsToUnzip = Directory.GetFiles(p, "*.zip", SearchOption.AllDirectories); foreach (string pathToUnzip in pathsToUnzip) { string destinationDirectory = Importer.GetImportUnzipDirectory(pathToUnzip); Console.Out.WriteLine("Unzipping \"" + pathToUnzip + "\" to \"" + destinationDirectory + "\"..."); try { ZipFile.ExtractToDirectory(pathToUnzip, destinationDirectory); } catch (Exception) { } if (!pathIsDirectory) p = destinationDirectory; } pathIsDirectory = true; } #endregion string[] paths = new string[] { p }; if (pathIsDirectory) paths = importFileSearchPatterns == null ? Directory.GetFiles(p, "*", SearchOption.AllDirectories) : importFileSearchPatterns.SelectMany(pattern => Directory.GetFiles(p, pattern, SearchOption.AllDirectories)).ToArray(); foreach (string path in paths) if (File.Exists(path)) { string importName = importerForm.GetValue<string>("name"); if (paths.Length > 1) importName = ""; bool deleteImportedFileAfterImport = importerForm.GetValue<bool>("delete"); bool saveImporter = Convert.ToBoolean(importerForm.GetValue<bool>("save_importer")); try { Importer importer = createImporter(importName, path, sourceURI, importerForm); importer.Import(); if (deleteImportedFileAfterImport) File.Delete(path); if (saveImporter) importer.Save(false); } catch (Exception ex) { Console.Out.WriteLine("Error while importing from \"" + path + "\": " + ex.Message); } } } } catch (Exception ex) { Console.Out.WriteLine(ex.Message); } if (completionCallback != null) completionCallback(); })); t.SetApartmentState(ApartmentState.STA); t.Start(); }
private XmlImporter CreateXmlImporter(string name, string path, string relativePathBase, PathRelativizationId relativizationId, string sourceURI, Type[] rowInserterTypes, string[] databaseColumns, CreateXmlRowInserterDelegate createXmlRowInserter) { DynamicForm rowInserterForm = new DynamicForm("Define row inserter...", DynamicForm.CloseButtons.OkCancel); rowInserterForm.AddDropDown("Row inserter:", rowInserterTypes, null, "row_inserter", true); string[] inputColumns = XmlImporter.GetColumnNames(path, "row", "row"); Array.Sort(inputColumns); foreach (string databaseColumn in databaseColumns) rowInserterForm.AddDropDown(databaseColumn + ":", inputColumns, null, databaseColumn, true); XmlImporter importer = null; if (rowInserterForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Type rowInserterType = rowInserterForm.GetValue<Type>("row_inserter"); Dictionary<string, string> databaseColumnInputColumn = new Dictionary<string, string>(); foreach (string databaseColumn in databaseColumns) databaseColumnInputColumn.Add(databaseColumn, rowInserterForm.GetValue<string>(databaseColumn)); importer = new XmlImporter(name, path, RelativizePath(path, relativePathBase, relativizationId), sourceURI, createXmlRowInserter(databaseColumnInputColumn), "row", "row"); } return importer; }
private void collapseIncidentTypesToolStripMenuItem_Click(object sender, EventArgs e) { DynamicForm f = new DynamicForm("Collapse incident types...", DynamicForm.CloseButtons.OkCancel); f.AddDropDown("Area:", Area.GetAll().ToArray(), null, "area", true, new Action<object, EventArgs>((o, args) => { ListBox typesList = f.GetControl<ListBox>("types"); if (typesList != null) { typesList.Items.Clear(); Area selectedArea = (o as ComboBox).SelectedItem as Area; if (selectedArea != null) foreach (string type in Incident.GetUniqueTypes(DateTime.MinValue, DateTime.MaxValue, selectedArea)) typesList.Items.Add(type); } })); Area area = f.GetValue<Area>("area") as Area; if (area == null) MessageBox.Show("No areas available to collapse incidents for."); else { f.AddListBox("Types:", Incident.GetUniqueTypes(DateTime.MinValue, DateTime.MaxValue, area).ToArray(), null, SelectionMode.MultiExtended, "types", true); f.AddTextBox("Collapsed type:", null, 50, "collapsed"); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { area = f.GetValue<Area>("area"); List<string> types = new List<string>(); foreach (string type in f.GetValue<System.Windows.Forms.ListBox.SelectedObjectCollection>("types")) types.Add(type); string collapsedType = f.GetValue<string>("collapsed").Trim(); if (area == null) MessageBox.Show("Must select an area."); else if (types.Count <= 1) MessageBox.Show("Must select two or more types to collapse."); else if (string.IsNullOrWhiteSpace(collapsedType)) MessageBox.Show("Must enter a collapsed type name."); else if (MessageBox.Show("Are you sure you want to collapse these incident types?", "Collapse?", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) Incident.Collapse(area, types, collapsedType); } } }
private void remapSelectedFeaturesDuringPredictionToolStripMenuItem_Click(object sender, EventArgs e) { if (Features.Count == 0) MessageBox.Show("Must select one or more features before remapping."); else { Area[] predictionAreas = Area.GetAll().ToArray(); if (predictionAreas.Length == 0) MessageBox.Show("No prediction areas available for remapping."); else { DynamicForm df = new DynamicForm("Remapping features...", DynamicForm.CloseButtons.OkCancel); df.AddDropDown("Prediction area:", predictionAreas, null, "prediction_area", true); if (df.ShowDialog() == DialogResult.OK) { List<Feature> selectedFeatures = Features; FeatureRemappingForm f = new FeatureRemappingForm(selectedFeatures, _getFeatures(df.GetValue<Area>("prediction_area"))); f.ShowDialog(); _featureRemapKeyTargetPredictionResource.Clear(); foreach (Feature feature in selectedFeatures) if (feature.PredictionResourceId != feature.TrainingResourceId) _featureRemapKeyTargetPredictionResource.Add(feature.RemapKey, feature.PredictionResourceId); RefreshFeatures(); foreach (Feature feature in selectedFeatures) features.SetSelected(features.Items.IndexOf(feature), true); } } } }
private void parameterizeFeatureToolStripMenuItem_Click(object sender, EventArgs e) { Feature feature = parameterizeFeatureToolStripMenuItem.Tag as Feature; DynamicForm f = new DynamicForm("Parameterize \"" + feature.Description + "\"...", DynamicForm.CloseButtons.OkCancel); foreach (Enum parameter in feature.Parameters.OrderBy(p => p)) if (parameter.Equals(FeatureBasedDCM.GeometryAttributeParameter.AttributeColumn)) f.AddDropDown(parameter + ":", DB.Connection.GetColumnNames(new Shapefile(int.Parse(feature.TrainingResourceId)).GeometryTable).ToArray(), feature.Parameters.GetStringValue(parameter), parameter.ToString(), true, toolTipText: feature.Parameters.GetTip(parameter)); else if (parameter.Equals(FeatureBasedDCM.GeometryAttributeParameter.AttributeType)) f.AddDropDown(parameter + ":", new string[] { "Numeric", "Nominal" }, feature.Parameters.GetStringValue(parameter), parameter.ToString(), true, toolTipText: feature.Parameters.GetTip(parameter)); else f.AddTextBox(parameter + ":", feature.Parameters.GetStringValue(parameter), 20, parameter.ToString(), toolTipText: feature.Parameters.GetTip(parameter)); if (f.ShowDialog() == DialogResult.OK) foreach (Enum parameter in feature.Parameters.OrderBy(p => p)) feature.Parameters.Set(parameter, f.GetValue<string>(parameter.ToString())); }