public Node([NotNull] ResourceLanguage owner, [NotNull] XElement element)
            {
                Contract.Requires(owner != null);
                Contract.Requires(element != null);
                Contract.Requires(owner._commentNodeName != null);

                _element = element;
                _owner   = owner;
            }
        private ICollection <string> GetValueAnnotations([NotNull] ResourceLanguage language)
        {
            Contract.Requires(language != null);
            Contract.Ensures(Contract.Result <ICollection <string> >() != null);

            return(GetStringFormatParameterMismatchAnnotations(language)
                   .Concat(GetSnapshotDifferences(language, Values.GetValue(language.CultureKey), d => d.Text))
                   .ToArray());
        }
        /// <summary>
        /// Adds the language represented by the specified file.
        /// </summary>
        /// <param name="file">The file.</param>
        public void AddLanguage([NotNull] ProjectFile file)
        {
            var cultureKey       = file.GetCultureKey(Container.Configuration);
            var resourceLanguage = new ResourceLanguage(this, cultureKey, file);

            _languages.Add(cultureKey, resourceLanguage);
            _resourceTableEntries.ForEach(entry => entry.Refresh());

            Container.LanguageAdded(resourceLanguage.CultureKey);
        }
Esempio n. 4
0
        private static IEnumerable <string> GetTableLanguageColumnHeaders(this ResourceLanguage language)
        {
            Contract.Requires(language != null);

            var cultureName = language.CultureKey.ToString();

            yield return(CommentHeaderPrefix + cultureName);

            yield return(cultureName);
        }
        /// <summary>
        /// Adds the language represented by the specified file.
        /// </summary>
        /// <param name="file">The file.</param>
        public void AddLanguage(ProjectFile file)
        {
            Contract.Requires(file != null);

            var cultureKey       = file.GetCultureKey();
            var resourceLanguage = new ResourceLanguage(this, cultureKey, file);

            _languages.Add(cultureKey, resourceLanguage);
            _resourceTableEntries.ForEach(entry => entry.Refresh());

            Container.LanguageAdded(resourceLanguage.CultureKey);
        }
        private IEnumerable <string> GetSnapshotDifferences(ResourceLanguage language, string current, Func <ResourceData, string> selector)
        {
            var snapshot = _snapshot;

            if (snapshot == null)
            {
                yield break;
            }

            var snapshotValue = snapshot.GetValueOrDefault(language.CultureKey).Maybe().Return(selector) ?? string.Empty;

            if (snapshotValue.Equals(current ?? string.Empty))
            {
                yield break;
            }

            yield return(string.Format(CultureInfo.CurrentCulture, Resources.SnapshotAnnotation, snapshotValue));
        }
        public void OnItemOrderChanged([NotNull] ResourceLanguage resourceLanguage)
        {
            Contract.Requires(resourceLanguage != null);

            if (resourceLanguage.CultureKey != CultureKey.Neutral)
            {
                return;
            }

            var index = 0;

            var entries = _resourceTableEntries.ToDictionary(entry => entry.Key);

            foreach (var key in resourceLanguage.ResourceKeys)
            {
                entries.GetValueOrDefault(key)?.UpdateIndex(index++);
            }
        }
        public void OnItemOrderChanged([NotNull] ResourceLanguage resourceLanguage)
        {
            if (resourceLanguage.CultureKey != CultureKey.Neutral)
            {
                return;
            }

            var index = 0;

            var entries = _resourceTableEntries.ToDictionary(entry => entry.Key);

            foreach (var key in resourceLanguage.ResourceKeys)
            {
                if (entries.TryGetValue(key, out var value))
                {
                    value.UpdateIndex(index++);
                }
            }
        }
        internal void Update(int index, IDictionary <CultureKey, ResourceLanguage> languages)
        {
            Contract.Requires(languages != null);
            Contract.Requires(languages.Any());

            var oldComment = Comment;

            _index           = index;
            _languages       = languages;
            _neutralLanguage = languages.First().Value;
            Contract.Assume(_neutralLanguage != null);

            ResetTableValues();

            // Preserve comments in WinForms designer resources, the designer always removes them.
            if (!string.IsNullOrEmpty(oldComment) && _container.IsWinFormsDesignerResource && string.IsNullOrEmpty(Comment))
            {
                Comment = oldComment;
            }

            Refresh();
        }
        private IEnumerable <string> GetSnapshotDifferences([NotNull] ResourceLanguage language, string current, [NotNull] Func <ResourceData, string> selector)
        {
            Contract.Requires(language != null);
            Contract.Requires(selector != null);
            Contract.Ensures(Contract.Result <IEnumerable <string> >() != null);

            var snapshot = _snapshot;

            if (snapshot == null)
            {
                yield break;
            }

            var snapshotValue = snapshot.GetValueOrDefault(language.CultureKey).Maybe().Return(selector) ?? string.Empty;

            if (snapshotValue.Equals(current ?? string.Empty))
            {
                yield break;
            }

            yield return(string.Format(CultureInfo.CurrentCulture, Resources.SnapshotAnnotation, snapshotValue));
        }
        internal bool IsContentEqual([NotNull] ResourceLanguage other)
        {
            Contract.Requires(other != null);

            return(_document.ToString(SaveOptions.DisableFormatting) == other._document.ToString(SaveOptions.DisableFormatting));
        }
Esempio n. 12
0
        internal void OnLanguageChanged([NotNull] ResourceLanguage language)
        {
            Contract.Requires(language != null);

            LanguageChanged?.Invoke(this, new LanguageEventArgs(language));
        }
 public ProjectFileEventArgs([NotNull] ResourceLanguage language, [NotNull] ProjectFile projectFile)
 {
     Language    = language;
     ProjectFile = projectFile;
 }
 public LanguageEventArgs([NotNull] ResourceLanguage language)
 {
     Language = language;
 }
        public LanguageEventArgs([NotNull] ResourceLanguage language)
        {
            Contract.Requires(language != null);

            _language = language;
        }
 internal void OnProjectFileSaved([NotNull] ResourceLanguage language, [NotNull] ProjectFile projectFile)
 {
     ProjectFileSaved?.Invoke(this, new ProjectFileEventArgs(language, projectFile));
 }
 internal void OnLanguageChanged([NotNull] ResourceLanguage language)
 {
     LanguageChanged?.Invoke(this, new LanguageEventArgs(language));
 }
Esempio n. 18
0
        internal void OnProjectFileSaved([NotNull] ResourceLanguage language, [NotNull] ProjectFile projectFile)
        {
            Contract.Requires(projectFile != null);

            ProjectFileSaved?.Invoke(this, new ProjectFileEventArgs(language, projectFile));
        }
 public Node([NotNull] ResourceLanguage owner, [NotNull] XElement element)
 {
     Element = element;
     _owner  = owner;
 }