Example #1
0
        /// <summary>
        /// Flushes current Data. If the file is closed, it means write data to disk; otherwise corresponding file buffer is modified.
        /// </summary>
        public void Flush()
        {
            if (!dataChangedInBatchMode && IsInBatchMode)
            {
                return;
            }
            string path = InternalProjectItem.GetFullPath();

            if (RDTManager.IsFileOpen(path))
            {
                VLDocumentViewsManager.SaveDataToBuffer(data, path); // modify in-memory buffer of this file
            }
            else
            {
                // write data to disk
                ResXResourceWriter writer = null;
                try {
                    writer          = new ResXResourceWriter(path);
                    writer.BasePath = Path.GetDirectoryName(path);

                    foreach (var pair in data)
                    {
                        writer.AddResource(pair.Value);
                    }
                    writer.Generate();
                } finally {
                    if (writer != null)
                    {
                        writer.Close();
                    }
                }
            }

            // regenerate designer item
            if (DesignerItem != null)
            {
                RDTManager.SilentlyModifyFile(DesignerItem.GetFullPath(), (string p) => {
                    RunCustomTool();
                });
            }
        }
Example #2
0
        /// <summary>
        /// Loads file's content into memory
        /// </summary>
        public void Load()
        {
            if (IsLoaded)
            {
                return;
            }

            string path = InternalProjectItem.GetFullPath();

            if (RDTManager.IsFileOpen(path))   // file is open - read from VS buffer
            {
                VLDocumentViewsManager.LoadDataFromBuffer(ref data, path);
            }
            else     // file is closed - read from disk
            {
                ResXResourceReader reader = null;
                try {
                    data                    = new Dictionary <string, ResXDataNode>();
                    reader                  = new ResXResourceReader(path);
                    reader.BasePath         = Path.GetDirectoryName(path);
                    reader.UseResXDataNodes = true;

                    foreach (DictionaryEntry entry in reader)
                    {
                        data.Add(entry.Key.ToString().ToLower(), entry.Value as ResXDataNode);
                    }
                } finally {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }
            }

            IsLoaded = true;
        }