/// <summary> /// Automatically loads the data from the RC file /// </summary> /// <param name="aRcFile"></param> /// <param name="aShowGhostFile"></param> public StringResourceContext(RcFile aRcFile, bool aShowGhostFile) { RcFile = aRcFile; mShowGhostFile = aShowGhostFile; var rcFilePath = RcFile.FilePath; mCodePage = CodePageExtractor.GetCodePage(rcFilePath); mHeaderContentBuilder = new HeaderContentBuilder(rcFilePath, mCodePage); mHeaderContentBuilder.Build(); mHeaderContent = mHeaderContentBuilder.GetResult(); HeaderContent = mHeaderContent; mRCFileContentBuilder = new RCFileContentBuilder(rcFilePath, mCodePage, mHeaderContent); mRCFileContentBuilder.Build(); mRCFileContent = mRCFileContentBuilder.GetResult(); mWriteRCPath = Path.GetTempFileName(); mRCFileWriter = new RCFileWriter(mRCFileContent, rcFilePath, mShowGhostFile); var headerNames = HeaderNamesExtractor.ExtractHeaderNames(RcFile.FilePath, mCodePage); if (!headerNames.Any()) { return; } var rcFileDirectory = Path.GetDirectoryName(RcFile.FilePath); var headerPath = Path.Combine(rcFileDirectory, headerNames.FirstOrDefault(headerName => headerName.ToLower().Equals("resource.h") && File.Exists(Path.Combine(rcFileDirectory, headerName))) ?? headerNames.FirstOrDefault( headerName => headerName.ToLower().Contains("resource") && File.Exists(Path.Combine(rcFileDirectory, headerName)) ) ?? headerNames.FirstOrDefault( headerName => File.Exists(Path.Combine(rcFileDirectory, headerName)) ) ?? headerNames.First()); if (!File.Exists(headerPath)) { File.Create(headerPath); } DefaultHeaderFile = headerPath; mIDGenerator = new IDGenerator(); mIDGenerator.RemoveExistingFromHeader(mHeaderContent, headerPath); mWriteHeaderPath = Path.GetTempFileName(); mHeaderWriter = new HeaderWriter(headerPath); }
public static void EditValue(string aCurrentName, string aNewValue, RCFileContent aRCFileContent, HeaderContent aHeaderContent) { if (!aHeaderContent.NameToID.ContainsKey(aCurrentName)) { return; } var stringTableContent = aRCFileContent.StringTableContent; var stringTableDeterminedIndex = StringTableIndexCalculator.CalculateIndex(aHeaderContent.NameToID[aCurrentName]); foreach (var rcItem in stringTableContent[stringTableDeterminedIndex]) { if (rcItem.Name == aCurrentName) { rcItem.Value = aNewValue; return; } } }