/// <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()); }
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; } }
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; }
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 }; }
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); }
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); }