Exemple #1
0
        private void UpdateStepDescription(XamlFileDescription xamlFileDescription)
        {
            var fileName = xamlFileDescription.Name;

            if (fileName.StartsWith(solutionFolder, StringComparison.OrdinalIgnoreCase))
            {
                fileName = fileName.Substring(solutionFolder.Length + 1);
            }
            StepDescription = String.Format("Processing file: {0}", fileName);
        }
Exemple #2
0
        private static string GetBamlName(XamlFileDescription xamlFileDescription)
        {
            var projectDir = Path.GetDirectoryName(xamlFileDescription.ProjectDescription.FullName);
            var xamlFile   = xamlFileDescription.Name;

            if (xamlFile.StartsWith(projectDir, StringComparison.InvariantCultureIgnoreCase))
            {
                xamlFile = xamlFile.Substring(projectDir.Length + 1).ToLowerInvariant();
                return(xamlFile.Substring(0, xamlFile.Length - 5).Replace('\\', '/'));
            }
            throw new NotSupportedException("Xaml file not inside project folder");
        }
Exemple #3
0
        private void ManageFileUids(XamlFileDescription xamlFileDescription)
        {
            using (var textReader = visualStudioAdapter.GetXamlFileContent(xamlFileDescription))
            {
                var uidCollector = new UidManager(xamlFileDescription.Name, textReader, localizabilityChecker).ParseFileSmart();

                if (uidCollector.Count > 0)
                {
                    switch (ManageUidOperation)
                    {
                    case ManageUidOperation.CheckUid:
                        var fvm = new XamlFileViewModel(solutionFolder, xamlFileDescription, uidCollector);
                        ThreadTools.InvokeInUIThread(Window, () => InvalidFiles.Add(fvm));
                        break;

                    case ManageUidOperation.UpdateUid:
                        if (!uidCollector.AllAreValid())
                        {
                            //TODO: resolve duplicates

                            UpdateFileUids(xamlFileDescription, uidCollector);

                            var fvm1 = new XamlFileViewModel(solutionFolder, xamlFileDescription, null);
                            ThreadTools.InvokeInUIThread(Window, () => InvalidFiles.Add(fvm1));
                        }
                        break;

                    case ManageUidOperation.RemoveUid:
                        if (!uidCollector.AllAreAbsent())
                        {
                            UpdateFileUids(xamlFileDescription, uidCollector);
                            var fvm2 = new XamlFileViewModel(solutionFolder, xamlFileDescription, null);
                            ThreadTools.InvokeInUIThread(Window, () => InvalidFiles.Add(fvm2));
                        }
                        break;

                    case ManageUidOperation.PrepareTranslation:
                        bamlResourceCollector.Add(xamlFileDescription, uidCollector);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
        }
Exemple #4
0
        private void UpdateFileUids(XamlFileDescription xamlFileDescription, UidCollector uidCollector)
        {
            CorrectUids(uidCollector);

            using (var textReader = visualStudioAdapter.GetXamlFileContent(xamlFileDescription))
            {
                var target    = new StringWriter();
                var uidWriter = new UidWriter(uidCollector, textReader, target);
                if (uidWriter.UpdateUidWrite(uidUpdateHandleStrategy))
                {
                    visualStudioAdapter.SetXamlFileContent(xamlFileDescription, target.ToString());
                }
                else
                {
                    //TODO: notify failure
                }
            }
        }
Exemple #5
0
        public void Add(XamlFileDescription xamlFileDescription, UidCollector uidCollector)
        {
            if (uidCollector == null)
            {
                return;
            }

            List <BamlResourceEntry> list;

            if (!resources.TryGetValue(xamlFileDescription.ProjectDescription.UniqueName, out list))
            {
                list = new List <BamlResourceEntry>();
                resources.Add(xamlFileDescription.ProjectDescription.UniqueName, list);
            }

            var bamlName = GetBamlName(xamlFileDescription);

            for (int i = 0; i < uidCollector.Count; i++)
            {
                var uid = uidCollector[i];

                if (uid.Status != UidStatus.Valid)
                {
                    continue;
                }

                if (uid.Entries != null)
                {
                    foreach (var entry in uid.Entries)
                    {
                        var key = new BamlLocalizableResourceKey(uid.Value, uid.ElementName,
                                                                 GetPropertyName(entry));
                        var resource = new BamlLocalizableResource
                        {
                            Content  = entry.LocalizableString,
                            Category = LocalizationCategory.Text
                        };

                        list.Add(new BamlResourceEntry(bamlName, key, resource));
                    }
                }
            }
        }
Exemple #6
0
        public XamlFileViewModel(string solutionFolder, XamlFileDescription xamlFileDescription,
                                 UidCollector uidCollector)
        {
            string fileName = xamlFileDescription.Name;

            Name = Path.GetFileName(fileName);

            if (fileName.StartsWith(solutionFolder, StringComparison.InvariantCultureIgnoreCase))
            {
                SolutionPath = fileName.Substring(solutionFolder.Length + 1);
            }
            else
            {
                SolutionPath = fileName;
            }

            ProjectName = xamlFileDescription.ProjectDescription.Name;

            string projFolder = Path.GetDirectoryName(xamlFileDescription.ProjectDescription.FullName);

            if (fileName.StartsWith(projFolder, StringComparison.InvariantCultureIgnoreCase))
            {
                ProjectPath = fileName.Substring(projFolder.Length + 1);
            }
            else
            {
                ProjectPath = fileName;
            }

            if (uidCollector != null)
            {
                UidEntries = new List <UidEntryViewModel>(uidCollector.Count);
                for (int i = 0; i < uidCollector.Count; i++)
                {
                    var uid = uidCollector[i];
                    UidEntries.Add(new UidEntryViewModel(uid));
                }

                AllAreValid = uidCollector.AllAreValid();
            }
        }