// ******************************************************************************************************************************** /// <summary> /// Builds the formatted description string for the specified resource. /// </summary> public static string FormatResourceDescription(IResourceFileContent content, string key) { StringBuilder sb = new StringBuilder(); IMultiResourceFileContent mrfc; if (key != null && (mrfc = (content as IMultiResourceFileContent)) != null) { string file = mrfc.GetFileNameForKey(key); if (file == null) { file = content.FileName; } sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), file); } else { sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), content.FileName); } sb.AppendLine(); sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.KeyLabel}")); sb.Append(' '); if (key != null) { sb.AppendLine(key); sb.AppendLine(); sb.AppendLine(StringParser.Parse("${res:Hornung.ResourceToolkit.ValueLabel}")); object value; if (content.TryGetValue(key, out value)) { if (value is string) { sb.Append(value); } else { sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.TypeMessage}"), value.GetType().ToString()); sb.Append(' '); sb.Append(value.ToString()); } } else { sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.KeyNotFound}")); } } else { sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.UnknownKey}")); } return(sb.ToString()); }
// ******************************************************************************************************************************** /// <summary> /// Builds the formatted description string for the specified resource. /// </summary> public static string FormatResourceDescription(IResourceFileContent content, string key) { StringBuilder sb = new StringBuilder(); IMultiResourceFileContent mrfc; if (key != null && (mrfc = (content as IMultiResourceFileContent)) != null) { string file = mrfc.GetFileNameForKey(key); if (file == null) { file = content.FileName; } sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), file); } else { sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.PlaceMessage}"), content.FileName); } sb.AppendLine(); sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.KeyLabel}")); sb.Append(' '); if (key != null) { sb.AppendLine(key); sb.AppendLine(); sb.AppendLine(StringParser.Parse("${res:Hornung.ResourceToolkit.ValueLabel}")); object value; if (content.TryGetValue(key, out value)) { if (value is string) { sb.Append(value); } else { sb.AppendFormat(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.TypeMessage}"), value.GetType().ToString()); sb.Append(' '); sb.Append(value.ToString()); } } else { sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.KeyNotFound}")); } } else { sb.Append(StringParser.Parse("${res:Hornung.ResourceToolkit.ToolTips.UnknownKey}")); } return sb.ToString(); }
/// <summary> /// Fills the list view with all unused resource keys that match the current filter. /// </summary> void FillListViewInternal() { Application.DoEvents(); Cursor oldCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; try { this.ListView.Items.Clear(); this.ListView.Groups.Clear(); // Suspend sorting to improve performance System.Collections.IComparer comparer = this.ListView.ListViewItemSorter; this.ListView.ListViewItemSorter = null; this.ListView.BeginUpdate(); Dictionary <string, ListViewGroup> fileGroups = new Dictionary <string, ListViewGroup>(); // Create the ListViewItems. foreach (ResourceItem entry in this.UnusedKeys) { // Skip if any filter rejects this item. if (!this.ItemMatchesCurrentFilter(entry)) { continue; } IResourceFileContent c = ResourceFileContentRegistry.GetResourceFileContent(entry.FileName); object o; // only add the file name to save space // and show the full path as tooltip ListViewItem item = new ListViewItem(Path.GetFileName(entry.FileName)); item.ToolTipText = entry.FileName; item.SubItems.Add(entry.Key); if (c.TryGetValue(entry.Key, out o)) { item.SubItems.Add((o ?? (object)"<<null>>").ToString()); } else { throw new InvalidOperationException("The key '" + entry.Key + "' in file '" + entry.FileName + "' does not exist although it was reported as unused."); } // Use ListViewGroups to group by file names ListViewGroup grp; if (!fileGroups.TryGetValue(entry.FileName, out grp)) { grp = new ListViewGroup(entry.FileName); fileGroups.Add(entry.FileName, grp); this.ListView.Groups.Add(grp); } grp.Items.Add(item); this.ListView.Items.Add(item); } this.ListView.ListViewItemSorter = comparer; this.ListView.EndUpdate(); } finally { this.fillListViewQueued = false; Cursor.Current = oldCursor; } }