Пример #1
0
        /// <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);
        }
Пример #2
0
        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;
                }
            }
        }