コード例 #1
0
        /// <summary>
        /// Generate header.
        /// </summary>
        public string Render(CommitData commitData, bool showRevisionsAsLinks)
        {
            if (commitData is null)
            {
                throw new ArgumentNullException(nameof(commitData));
            }

            bool   isArtificial      = commitData.ObjectId.IsArtificial;
            bool   authorIsCommitter = string.Equals(commitData.Author, commitData.Committer, StringComparison.CurrentCulture);
            bool   datesEqual        = commitData.AuthorDate.EqualsExact(commitData.CommitDate);
            var    padding           = _headerRendererStyleProvider.GetMaxWidth();
            string authorEmail       = GetEmail(commitData.Author);

            Validates.NotNull(_linkFactory);

            var header = new StringBuilder();

            header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.Author, padding) + _linkFactory.CreateLink(commitData.Author, "mailto:" + authorEmail));

            if (!isArtificial)
            {
                header.AppendLine(_labelFormatter.FormatLabel(datesEqual ? TranslatedStrings.Date : TranslatedStrings.AuthorDate, padding) + WebUtility.HtmlEncode(_dateFormatter.FormatDateAsRelativeLocal(commitData.AuthorDate)));
            }

            if (!authorIsCommitter)
            {
                string committerEmail = GetEmail(commitData.Committer);
                header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.Committer, padding) + _linkFactory.CreateLink(commitData.Committer, "mailto:" + committerEmail));
            }

            if (!isArtificial)
            {
                if (!datesEqual)
                {
                    header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.CommitDate, padding) + WebUtility.HtmlEncode(_dateFormatter.FormatDateAsRelativeLocal(commitData.CommitDate)));
                }

                header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.CommitHash, padding) + WebUtility.HtmlEncode(commitData.ObjectId.ToString()));
            }

            if (commitData.ChildIds is not null && commitData.ChildIds.Count != 0)
            {
                header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.GetChildren(commitData.ChildIds.Count), padding) + RenderObjectIds(commitData.ChildIds, showRevisionsAsLinks));
            }

            var parentIds = commitData.ParentIds;

            if (parentIds.Count != 0)
            {
                header.AppendLine(_labelFormatter.FormatLabel(TranslatedStrings.GetParents(parentIds.Count), padding) + RenderObjectIds(parentIds, showRevisionsAsLinks));
            }

            // remove the trailing newline character
            header.Length = header.Length - Environment.NewLine.Length;

            return(header.ToString());
        }
コード例 #2
0
            public LanguageData(string strLanguage)
            {
                string strFilePath = Path.Combine(Application.StartupPath, "lang", strLanguage + ".xml");

                if (File.Exists(strFilePath))
                {
                    XmlDocument objLanguageDocument = new XmlDocument();
                    objLanguageDocument.Load(strFilePath);
                    if (objLanguageDocument != null)
                    {
                        foreach (XmlNode objNode in objLanguageDocument.SelectNodes("/chummer/strings/string"))
                        {
                            // Look for the English version of the found string. If it has been found, replace the English contents with the contents from this file.
                            // If the string was not found, then someone has inserted a Key that should not exist and is ignored.
                            string strKey  = objNode["key"]?.InnerText;
                            string strText = objNode["text"]?.InnerText;
                            if (!string.IsNullOrEmpty(strKey) && !string.IsNullOrEmpty(strText))
                            {
                                if (TranslatedStrings.ContainsKey(strKey))
                                {
                                    TranslatedStrings[strKey] = strText.Replace("\\n", "\n");
                                }
                                else
                                {
                                    TranslatedStrings.Add(strKey, strText.Replace("\\n", "\n"));
                                }
                            }
                        }
                    }
                    else
                    {
                        IsLoaded = false;
                    }
                }
                else
                {
                    IsLoaded = false;
                }

                // Check to see if the data translation file for the selected language exists.
                string strDataPath = Path.Combine(Application.StartupPath, "lang", strLanguage + "_data.xml");

                if (File.Exists(strDataPath))
                {
                    DataDocument.Load(strDataPath);
                }
                else
                {
                    IsLoaded = false;
                }
            }
コード例 #3
0
        public MonospacedHeaderRenderStyleProvider()
        {
            var strings = new[]
            {
                TranslatedStrings.Author,
                TranslatedStrings.AuthorDate,
                TranslatedStrings.Committer,
                TranslatedStrings.CommitDate,
                TranslatedStrings.CommitHash,
                TranslatedStrings.GetChildren(10), // assume text for plural case is longer
                TranslatedStrings.GetParents(10)
            };

            _maxLength = strings.Select(s => s.Length).Max() + 2;
        }
コード例 #4
0
        public TabbedHeaderRenderStyleProvider()
        {
            var strings = new[]
            {
                TranslatedStrings.Author,
                TranslatedStrings.AuthorDate,
                TranslatedStrings.Committer,
                TranslatedStrings.CommitDate,
                TranslatedStrings.CommitHash,
                TranslatedStrings.GetChildren(10), // assume text for plural case is longer
                TranslatedStrings.GetParents(10)
            };

            var tabStop = strings
                          .Select(s => TextRenderer.MeasureText(s + "  ", AppSettings.Font).Width)
                          .Max();

            // simulate a two column layout even when there's more then one tab used
            _tabStops = new[] { tabStop, tabStop + 1, tabStop + 2, tabStop + 3 };
        }
コード例 #5
0
        public void Setup()
        {
            _labelFormatter = Substitute.For <IHeaderLabelFormatter>();
            _labelFormatter.FormatLabel(TranslatedStrings.Author, Arg.Any <int>()).Returns(x => "Author:        ");
            _labelFormatter.FormatLabel(TranslatedStrings.Committer, Arg.Any <int>()).Returns(x => "Committer:     ");
            _labelFormatter.FormatLabel(TranslatedStrings.Date, Arg.Any <int>()).Returns(x => "Date:          ");
            _labelFormatter.FormatLabel(TranslatedStrings.AuthorDate, Arg.Any <int>()).Returns(x => "Author date:   ");
            _labelFormatter.FormatLabel(TranslatedStrings.CommitDate, Arg.Any <int>()).Returns(x => "Commit date:   ");
            _labelFormatter.FormatLabel(TranslatedStrings.CommitHash, Arg.Any <int>()).Returns(x => "Commit hash:   ");
            _labelFormatter.FormatLabel(TranslatedStrings.GetParents(1), Arg.Any <int>()).Returns(x => "Parent:        ");
            _labelFormatter.FormatLabel(TranslatedStrings.GetParents(Arg.Any <int>()), Arg.Any <int>()).Returns(x => "Parents:       ");
            _labelFormatter.FormatLabel(TranslatedStrings.GetChildren(1), Arg.Any <int>()).Returns(x => "Child:         ");
            _labelFormatter.FormatLabel(TranslatedStrings.GetChildren(Arg.Any <int>()), Arg.Any <int>()).Returns(x => "Children:      ");

            _headerRendererStyleProvider = Substitute.For <IHeaderRenderStyleProvider>();
            _linkFactory   = Substitute.For <ILinkFactory>();
            _dateFormatter = Substitute.For <IDateFormatter>();

            _renderer = new CommitDataHeaderRenderer(_labelFormatter, _dateFormatter, _headerRendererStyleProvider, _linkFactory);
        }
コード例 #6
0
        public override Condition GlobalizeCondition(
            AutomationElement element,
            ref Dictionary <AutomationProperty, TranslatedStrings> propertyValueTranslations)
        {
            Condition condition = this._condition;

            if (UICondition.IsGlobalizableProperty(property: this._property))
            {
                TranslatedStrings translatedStrings;
                if (!propertyValueTranslations.TryGetValue(key: this._property, value: out translatedStrings))
                {
                    translatedStrings = new TranslatedStrings();
                    propertyValueTranslations[key : this._property] = translatedStrings;
                }

                var localizedStrings = !(this._value is ILocalizationProvider2) ? new LocalizedStringsAdapter(taggedText: this._value.ToString()) : (ILocalizedStrings) new LocalizedStrings2(contextElement: element, provider: (ILocalizationProvider2)this._value);
                var translations     = localizedStrings.GetTranslations();
                if (1 == translations.Length)
                {
                    translatedStrings.Add(translatedString: translations[0].Raw(), localizedStrings: localizedStrings, index: 0L);
                    condition = new PropertyCondition(property: this._property, value: translations[0].DefaultString());
                }
                else
                {
                    var conditionArray = new Condition[translations.Length];
                    for (var index = 0; index < translations.Length; ++index)
                    {
                        translatedStrings.Add(translatedString: translations[index].Raw(), localizedStrings: localizedStrings, index: index);
                        conditionArray[index] = new PropertyCondition(property: this._property, value: translations[index].DefaultString());
                    }

                    condition = new OrCondition(conditions: conditionArray);
                }
            }

            return(condition);
        }