private void ReadConfigFile() { // Read in the config file IEnumerable <string> lines = File.ReadLines(_configPath); string installDataLine = null; foreach (string line in lines) { if (line.Contains(Settings.Default.MorrowindInstallPath)) { installDataLine = line; } else if (line.StartsWith(DataLine.DataLinePrefix)) { DataLines.Add(new DataLine(line)); } else if (line.StartsWith("content")) { _contentLines.Add(line); } else { _nonDataLines.Add(line); } } _nonDataLines.Add(installDataLine); }
private void CreateDataLinesForMods() { string modsDir = Path.Combine(Settings.Default.OpenMwUserFilesPath, ModsDirectoryName); string[] modDirs = Directory.GetDirectories(modsDir); // remove lines that don't correspond to mod dirs foreach (DataLine line in DataLines) { if (!modDirs.Contains(line.DirPath)) { DataLines.Remove(line); } } // add lines for new mod directories foreach (string dir in modDirs) { if (DataLines.Any(line => line.DirPath.Equals(dir))) { continue; } DataLine modLine = DataLine.FromModPath(dir); DataLines.Add(modLine); } WriteDataLinesToConfig(); }
private void CreateDataLinesForMods() { if (!HasValidPaths()) { MessageBox.Show("You cannot sync your mods unless you specify valid install/user file paths!", "Invalid Paths", MessageBoxButton.OK, MessageBoxImage.Warning); return; } string[] modDirs = Directory.GetDirectories(ModsDirectoryPath); // remove lines that don't correspond to mod dirs for (int i = DataLines.Count - 1; i >= 0; i--) { DataLine line = DataLines[i]; if (!modDirs.Contains(line.DirPath)) { DataLines.RemoveAt(i); } } // add lines for new mod directories foreach (string dir in modDirs) { if (DataLines.Any(line => line.DirPath.Equals(dir))) { continue; } DataLine modLine = DataLine.FromModPath(dir); DataLines.Add(modLine); } WriteDataLinesToConfig(); MessageBox.Show("Mods synced!", "Operation Complete", MessageBoxButton.OK, MessageBoxImage.Information); }
private void WriteDataLinesToConfig() { List <string> dataLines = DataLines.Select(line => line.Line).ToList(); IEnumerable <string> concat = _nonDataLines.Concat(dataLines).Concat(_contentLines); File.WriteAllLines(_configPath, concat); }
public MainWindow() { InitializeComponent(); DataContext = new MainVM(); StartTimerTick(); DataLines.InitializeLines(); }
private void MoveDown(DataLine line) { if (line == null) { return; } int oldIndex = DataLines.IndexOf(line); int newIndex = (oldIndex + 1) <= (DataLines.Count - 1) ? oldIndex + 1 : DataLines.Count - 1; DataLines.Move(oldIndex, newIndex); }
private void MoveUp(DataLine line) { if (line == null) { return; } int oldIndex = DataLines.IndexOf(line); int newIndex = (oldIndex - 1 >= 0) ? oldIndex - 1 : 0; DataLines.Move(oldIndex, newIndex); }
public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken)) { CreateMetadataHeader(writer); String subFolder = this.project.Folder + "\\" + this.SubFolder; writer.WriteLineInfo("Data location: " + subFolder); writer.WriteLineInfo(" "); if (Directory.Exists(subFolder) == false) { writer.WriteLineInfo("!!! Folder does not exist! Data stream is missing!"); writer.WriteLineWarning(this.Name + ":Folder does not exist! Data stream is missing!"); return; } string rootFolder = project.Folder + "\\" + this.SubFolder + "\\"; string[] allFiles = Directory.GetFiles(rootFolder, "*.*", SearchOption.AllDirectories); string[] files = allFiles.Where(s => s.EndsWith(".JPG")).ToArray(); foreach (String file in files) { cancelletionToken.ThrowIfCancellationRequested(); DateTime fileTime = File.GetLastWriteTimeUtc(file); String subFile = file.Replace(rootFolder, ""); this.DataLines.Add(new ImageDataLine(subFile, fileTime, TimeType.FILE)); } writer.WriteLineInfo("\t Total number of images : " + DataLines.Count()); writer.WriteLineInfo("\t First file created : " + this.StartTime); writer.WriteLineInfo("\t Last file created : " + this.EndTime); writer.WriteLineInfo("\t Frame per second : " + (DataLines.Count() / this.Length).ToString("0.000") + " [fps]"); writer.WriteLineInfo("\t Frequency : " + (this.Length / files.Count()).ToString("0.000") + " [Hz]"); this.OrderDataLines(); if (files.Count() == 0) { writer.WriteLineInfo("Empty folder!"); writer.WriteLineWarning(this.Name + ":Empty folder!"); } int dn = Math.Abs(allFiles.Count() - files.Count()); if (dn != 0) { writer.WriteLineInfo("\t No. of unidentified files : " + dn); writer.WriteLineWarning(this.Name + ":Number of unidentified files in the folder: " + dn); } }
public WCFComm(ref DataLines lineData) { lineArray = lineData; NetTcpBinding binding = new NetTcpBinding(); binding.Security.Mode = SecurityMode.None; EndpointAddress address = new EndpointAddress("net.tcp://localhost:47999/DiPlotComm/"); _isDataSourceConnected = false; _sourceCallback = new InstanceContext(this); _hostEndPoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(IDiPlot)), binding, address); }
public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken)) { CreateMetadataHeader(writer); String subFolder = this.project.Folder + "\\" + this.SubFolder; writer?.WriteLineInfo("Data location: " + subFolder); writer?.WriteLineInfo(" "); if (Directory.Exists(subFolder) == false) { writer?.WriteLineInfo("!!! Folder does not exist! Data stream is missing!"); writer?.WriteLineWarning(this.Name + ":Folder does not exist! Data stream is missing!"); return; } string[] allFiles = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.*"); string[] files = allFiles.Where(s => s.ToUpper().EndsWith(".MOV") || s.ToUpper().EndsWith(".MP4")).ToArray(); writer?.WriteLineInfo(" Files: "); double sumLength = 0; DataLines.Clear(); foreach (String file in files) { cancelletionToken.ThrowIfCancellationRequested(); try { if (Path.GetExtension(file).ToUpper() == ".MOV") { writer?.WriteWarning("Enviroment cannot handle MOV files!"); continue; } writer?.WriteLineInfo("\t" + file); VideoFileReader reader = new VideoFileReader(); reader.Open(file); DateTime ft = File.GetLastWriteTime(file); writer?.WriteLineInfo("\t File modified : " + ft); DateTime utcf = File.GetLastWriteTimeUtc(file); writer?.WriteLineInfo("\t File modified : " + utcf + " UTC"); writer?.WriteLineInfo("\t Frame width : " + reader.Width); writer?.WriteLineInfo("\t Frame height : " + reader.Height); writer?.WriteLineInfo("\t Fps : " + reader.FrameRate.ToDouble()); writer?.WriteLineInfo("\t Codec : " + reader.CodecName); double length = reader.FrameCount / reader.FrameRate.ToDouble(); sumLength += length; TimeSpan t = TimeSpan.FromSeconds(length); writer?.WriteLineInfo("\t Length : " + t.ToString(@"hh\:mm\:ss")); writer?.WriteLineInfo(" "); string rootFolder = project.Folder + "\\" + this.SubFolder + "\\"; String subFile = file.Replace(rootFolder, ""); VideoDataLine dataLine = new VideoDataLine(subFile, new DateTime(utcf.Ticks - TimeSpan.FromSeconds(length).Ticks), TimeType.FILE); dataLine.FrameCount = reader.FrameCount; dataLine.FrameRate = reader.FrameRate.ToDouble(); if (this.ShortName.Contains("GPR")) { dataLine.TimeType = TimeType.UNKNOWN; } dataLine.Length = TimeSpan.FromSeconds(length); this.DataLines.Add(dataLine); reader.Close(); } catch (Exception ex) { writer.WriteLineError(ex.Message); } } if (DataLines.Count() == 0) { writer.WriteLineInfo("Empty folder!"); writer.WriteLineWarning(this.Name + ": Empty folder!"); } this.OrderDataLines(); int dn = Math.Abs(allFiles.Count() - DataLines.Count()); if (dn != 0) { writer.WriteLineInfo("\tNumber of unidentified files in the folder: " + dn); writer.WriteLineWarning(this.Name + ": Number of unidentified files in the folder: " + dn); } }
public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken)) { CreateMetadataHeader(writer); String subFolder = this.project.Folder + "\\" + this.SubFolder; writer.WriteLineInfo("Data location: " + subFolder); writer.WriteLineInfo(" "); if (Directory.Exists(subFolder) == false) { writer.WriteLineInfo("!!! Folder does not exist! Data stream is missing!"); writer.WriteLineWarning(this.Name + ":Folder does not exist! Data stream is missing!"); return; } // IMU CSV logs string[] allFiles = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.csv"); string[] files = allFiles; if (files.Count() > 0) { DateTime startTime = DateTime.MaxValue; DateTime endTime = DateTime.MinValue; foreach (string fpath in files) { DateTime startTimef = DateTime.MaxValue; DateTime endTimef = DateTime.MinValue; using (StreamReader reader = File.OpenText(fpath)) { // skip header for (int i = 0; i < 17; i++) { reader.ReadLine(); } string line = ""; while ((line = reader.ReadLine()) != null) { cancelletionToken.ThrowIfCancellationRequested(); string[] linesp = line.Split(','); if (linesp.Count() > 3) { if (linesp[0] == "") { continue; } int week = Convert.ToInt32(linesp[1]); double tow = Convert.ToDouble(linesp[2]); DateTime dt = Utils.ConvertFromTOW(week, tow); if (dt < startTime) { startTime = dt; } if (dt > endTime) { endTime = dt; } if (dt < startTimef) { startTimef = dt; } if (dt > endTimef) { endTimef = dt; } } } } IMUDataLine dataLine = new IMUDataLine(fpath, startTimef, TimeType.GPS); dataLine.Length = new TimeSpan(endTimef.Ticks - startTimef.Ticks); DataLines.Add(dataLine); } if (this.Length == 0) { writer.WriteLineInfo("\tIMU observation is too short!"); writer.WriteLineWarning(this.Name + ":IMU observation is too short!"); } writer.WriteLineInfo("\t First observation : " + this.StartTime); writer.WriteLineInfo("\t Last observation : " + this.EndTime); writer.WriteLineInfo("\t Length of observ. : " + (new TimeSpan(endTime.Ticks - startTime.Ticks)).ToString(@"hh\:mm\:ss")); this.OrderDataLines(); } else { writer.WriteLineInfo("\tNo observation file!"); writer.WriteLineWarning(this.Name + ":No observation file!"); } }
public virtual void OrderDataLines() { DataLines.Sort((x, y) => DateTime.Compare(x.TimeStamp, y.TimeStamp)); }
public override void WriteMetadata(ILogger writer, CancellationToken cancelletionToken = default(CancellationToken)) { CreateMetadataHeader(writer); String subFolder = this.project.Folder + "\\" + this.SubFolder; writer.WriteLineInfo("Data location: " + subFolder); writer.WriteLineInfo(" "); if (Directory.Exists(subFolder) == false) { writer.WriteLineInfo("!!! Folder does not exist! Data stream is missing!"); writer.WriteLineWarning(this.Name + ":Folder does not exist! Data stream is missing!"); return; } string[] files = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.pcap"); writer.WriteLineInfo(" Files: "); foreach (String file in files) { cancelletionToken.ThrowIfCancellationRequested(); writer.WriteLineInfo("\t" + file); String nmea = null; try { //nmea = this.ReadFirstNMEA(file); } catch (Exception ex) { writer.WriteLineWarning("Cannot open PCAP file: " + file); writer.WriteLineWarning("Exception: " + ex.ToString()); writer.WriteLineWarning("Is the WINPCAP installed? Download from https://www.winpcap.org/install/!"); continue; } //break; FileInfo fileInfo = new System.IO.FileInfo(file); DateTime ft = File.GetLastWriteTime(file); writer.WriteLineInfo("\t File modified : " + ft); DateTime uft = File.GetLastWriteTimeUtc(file); writer.WriteLineInfo("\t File modified : " + uft + " UTC"); writer.WriteLineInfo("\t Size : " + fileInfo.Length / 1e6 + " MB"); writer.WriteLineInfo("\t first NMEA : " + nmea); if (nmea != null) { String[] tsnmeas = nmea.Split(','); String dateStr = uft.ToString("yyyy-MM-dd ") + tsnmeas[1].Substring(0, 2) + ":" + tsnmeas[1].Substring(2, 2) + ":" + tsnmeas[1].Substring(4, 2); DateTime time_nmea = DateTime.ParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); writer.WriteLineInfo("\t Date time : " + time_nmea); writer.WriteLineInfo(" "); VelodyneDataLine dataLine = new VelodyneDataLine(Path.GetFileName(file), time_nmea, TimeType.GPS); dataLine.Length = (new TimeSpan(uft.Ticks - time_nmea.Ticks)); this.DataLines.Add(dataLine); } else { writer.WriteLineWarning("No NMEA could not be extracted from " + file); VelodyneDataLine dataLine = new VelodyneDataLine(Path.GetFileName(file), uft, TimeType.CPU); dataLine.Length = (new TimeSpan(0)); this.DataLines.Add(dataLine); } } this.OrderDataLines(); if (DataLines.Count() == 0) { writer.WriteLineInfo("Empty folder!"); writer.WriteLineWarning(this.Name + ":Empty folder!"); } string[] allFiles = Directory.GetFiles(project.Folder + "\\" + this.SubFolder, "*.*"); int dn = Math.Abs(allFiles.Count() - DataLines.Count()); if (dn != 0) { writer.WriteLineInfo("\tNumber of unidentified files in the folder: " + dn); writer.WriteLineWarning(this.Name + ":Number of unidentified files in the folder: " + dn); } }