void checkForAndValidateFilesNeeded() { //get initialization settings from the Settings.txt file initializationSettings = new SettingsManager(); //initializationSettings.SaveToFolder is the location of the mission plan folder //this is typically set to C://_Waldo_FCS FlightPlanFolder = initializationSettings.SaveToFolder; //set up the logging procedures for the application logFile = new LogFile( ref MissionDateString, initializationSettings); logFile.WriteLine("Mission DateString established: " + MissionDateString); //this will be a temporary location for saving the log file //this will be revised later after we select the mssion //FlightLogFolder = initializationSettings.SaveToFolder + "logs//"; String[] ProjectFolders = null; ProjectFileNames = new List<String>(); ProjectCoverageTypes = new List<COVERAGE_TYPE>(); //flight folder location "_Waldo_FS" at top of C drive if (!Directory.Exists(FlightPlanFolder)) { DialogResult res = MessageBox.Show("There is no mission plan folder (_Waldo_FCS) at the top of the C drive\n ... Use the default example? ", "NO Mission Folder", MessageBoxButtons.YesNo); if (res == DialogResult.No) { Environment.Exit(0); } else { FlightPlanFolder = Directory.GetCurrentDirectory() + "\\SampleMission\\"; if (Directory.Exists(FlightPlanFolder)) { MessageBox.Show("There is no sample mission folder ...", "Terminating ..."); Environment.Exit(0); } } } //////////////////////////////////////////////////////////////////////////////////// //if we get here, we have located the flight plan folder and created a log folder //////////////////////////////////////////////////////////////////////////////////// //get the list of projects in the FlightPlanFolder ProjectFolders = Directory.GetFiles(FlightPlanFolder, "*.kml"); //all files ending in .kml if (ProjectFolders.Count() == 0) { MessageBox.Show("There are no Projects in the FlightPlanFolder folder", "Terminating ... "); Environment.Exit(0); } logFile.WriteLine(""); logFile.WriteLine("Opening Project plans"); foreach (String pth in ProjectFolders) { //open each of the .kml files to see if they are valid missions plans //and detect either Polygon plans or LinearFeature Plans String kmlFilename = FlightPlanFolder + Path.GetFileNameWithoutExtension(pth) + ".kml"; logFile.WriteLine("Project plan: " + kmlFilename); COVERAGE_TYPE coverageType = COVERAGE_TYPE.notSet; XmlTextReader tr = new XmlTextReader(kmlFilename); //associate the textReader with input file ProjectKmlReadUtility ps = new ProjectKmlReadUtility(tr, ref coverageType); //we will display only input kml files that are detected to be polygon of linearFeature types if (coverageType != COVERAGE_TYPE.notSet) { //test for a matching Background folder String BackgroundMapFolderName = FlightPlanFolder + Path.GetFileNameWithoutExtension(pth) + "_Background\\"; if (!Directory.Exists(BackgroundMapFolderName)) { MessageBox.Show("Valid plan: " + pth + ", found but no matching Background maps folder\n skip this plan"); } else { int validMaps = 0; String[] mapFiles = Directory.GetFiles(BackgroundMapFolderName, "*.png"); //all files ending in .kml foreach (String st in mapFiles) { String ss = Path.GetFileNameWithoutExtension(st); if (ss == "ProjectMap" || ss == "Background_00") { validMaps++; } } if (validMaps < 2) { MessageBox.Show(pth + ": maps not correct in Background Folder\n skip this plan"); break; } //have found a valid mission plan with matching Background maps. ProjectFileNames.Add(Path.GetFileNameWithoutExtension(pth)); ProjectCoverageTypes.Add(coverageType); } } else { MessageBox.Show(pth + ": Invalid mission plan\n id you use latest KML_Reader?\n skip this plan"); } } //test for no valid mission plans if (ProjectFileNames.Count == 0) { MessageBox.Show("There are no valid Polygon or LinearFeature projects \nDid you use a valid mission planner?"); Environment.Exit(0); } logFile.WriteLine("Completed opening project plans"); logFile.WriteLine(""); }
private void projectButton_Click(object sender, EventArgs e) { ////////////////////////////////////////////////////////////////////////////////////////// //this action is done upon clicking a project name from the project buttons //we will then prepare the the Mission Selection Form // NOTE: projects can be large and may include multiple missions (indivdual flights) ////////////////////////////////////////////////////////////////////////////////////////// Button b = (Button)sender; //get the details of the button that was clicked from ProjectSelectionForm ProjectName = b.Text; //this is the project name for the selected Project // Read in the kml ProjectSummary for the complete Project COVERAGE_TYPE coverageTypeFromKML = COVERAGE_TYPE.notSet; //the kml file name with complete path is formed as below ... String kmlFilename = FlightPlanFolder + ProjectName + ".kml"; //access the kml via the xml reader XmlTextReader tr = new XmlTextReader(kmlFilename); //associate the textReader with input file //initialize the kml input read process .. opens the xml reader and gets the coverage type. ProjectKmlReadUtility ps = new ProjectKmlReadUtility(tr, ref coverageTypeFromKML); //finish the reading of the input kml and generate the Mission selection form Form missionSelectionForm = null; if (coverageTypeFromKML == COVERAGE_TYPE.polygon) { ProjectSummary projSum = ps.readPolygonCoverageData(tr, ProjectName); missionSelectionForm = new MissionSelection(projSum, FlightPlanFolder, logFile, navIF_, canonCamera, hardwareAttached, initializationSettings, MissionDateString); } else if (coverageTypeFromKML == COVERAGE_TYPE.linearFeature) { linearFeatureCoverageSummary LFSum = ps.readLinearFeatureCoverageData(tr, ProjectName); LFSum.ProjectName = ProjectName; missionSelectionForm = new MissionSelection(LFSum, FlightPlanFolder, logFile, navIF_, canonCamera, hardwareAttached, initializationSettings, MissionDateString); } // TODO: complete the preflown mission analysis //PriorFlownMissions pfm = new PriorFlownMissions(FlightPlanFolder, projSum); //ProjectUpdateFlightLines updateFlightLines = pfm.getProjectUpdateFlightLines(); //project selection is complete -- show the mission selection form //this displays a new form where we will select the individual mission from within a project //the mbed and camera objects have been opened here but are passed as arguments ... missionSelectionForm.Show(); }