From 52d911343145d37032d909dc83f308def9b45f07 Mon Sep 17 00:00:00 2001 From: Mathias Simmack Date: Sun, 18 Sep 2005 09:09:14 +0000 Subject: [PATCH] dynamic help: fixed a little problem with the 'helpResults' bool git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@496 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../src/BaseControls/DynamicHelpPad.cs | 76 ++++++++----------- .../Project/src/BaseControls/SearchPad.cs | 21 +---- .../src/Service/SharpDevLanguageClass.cs | 71 +++++++++++++++++ 3 files changed, 105 insertions(+), 63 deletions(-) create mode 100644 src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs index 3ba8928b1c..a935ffe58b 100644 --- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs +++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs @@ -26,6 +26,7 @@ namespace HtmlHelp2 using ICSharpCode.TextEditor; using HtmlHelp2.Environment; using HtmlHelp2.ResourcesHelperClass; + using HtmlHelp2.SharpDevLanguageClass; using MSHelpServices; @@ -49,18 +50,12 @@ namespace HtmlHelp2 private StringCollection dynamicHelpTerms = new StringCollection(); private string debugPreElement = String.Empty; private bool enableDebugInfo = true; - private Dictionarylanguages = new Dictionary(); public override Control Control { get { return dynamicHelpBrowser; } } -// public override void Dispose() -// { -// dynamicHelpBrowser.Dispose(); -// } - public override void RedrawContent() { dynamicHelpBrowser.RedrawContent(); @@ -73,47 +68,38 @@ namespace HtmlHelp2 PropertyPad.SelectedObjectChanged += new EventHandler(this.FormsDesignerSelectedObjectChanged); PropertyPad.SelectedGridItemChanged += new SelectedGridItemChangedEventHandler(this.FormsDesignerSelectedGridItemChanged); ProjectService.SolutionClosed += new EventHandler(this.SolutionClosed); - - // I needed to patch SharpDevelop's current project language because - // the .NET Framework SDK documents use other names - languages.Add("C#", "CSharp"); - languages.Add("VBNet", "VB"); } #region WebBrowser Scripting - private void BuildDynamicHelpList(string expectedLanguage) + private void BuildDynamicHelpList() { if(this.dynamicHelpTerms.Count == 0) return; this.RemoveAllChildren(); - this.debugPreElement = String.Empty; + this.debugPreElement = String.Empty; + bool helpResults = false; - bool helpResults = false; - string tempLanguage = String.Empty; - if(!languages.ContainsKey(expectedLanguage) || - !languages.TryGetValue(expectedLanguage, out tempLanguage)) + Cursor.Current = Cursors.WaitCursor; + foreach(string currentHelpTerm in this.dynamicHelpTerms) { - tempLanguage = expectedLanguage; + helpResults = (this.CallDynamicHelp(currentHelpTerm, false) || helpResults); } - Cursor.Current = Cursors.WaitCursor; - foreach(string currentHelpTerm in dynamicHelpTerms) + if(!helpResults) { - if(!currentHelpTerm.StartsWith("!")) + foreach(string currentHelpTerm in this.dynamicHelpTerms) { - helpResults = (helpResults || this.CallDynamicHelp(currentHelpTerm, tempLanguage, false)); + this.CallDynamicHelp(currentHelpTerm, true); } } - - // TODO: implement keyword search, if "helpResults" is FALSE - dynamicHelpBrowser.BuildDefaultHelpEntries(); - Cursor.Current = Cursors.Default; + Cursor.Current = Cursors.Default; - this.debugPreElement += String.Format("
Current project language: {0}", tempLanguage); + this.debugPreElement += String.Format("
Current project language: {0}", + SharpDevLanguage.GetPatchedLanguage()); if(this.enableDebugInfo) dynamicHelpBrowser.CreateDebugPre(this.debugPreElement); } - private bool CallDynamicHelp(string searchTerm, string expectedLanguage, bool keywordSearch) + private bool CallDynamicHelp(string searchTerm, bool keywordSearch) { if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy) return false; bool result = false; @@ -136,7 +122,7 @@ namespace HtmlHelp2 List newTopics = this.SortTopics(topics); foreach(IHxTopic topic in newTopics) { - if(expectedLanguage == String.Empty || topic.HasAttribute("DevLang", expectedLanguage)) + if(SharpDevLanguage.CheckTopicLanguage(topic)) { this.BuildNewChild(topic.Location, topic.get_Title(HxTopicGetTitleType.HxTopicGetTOCTitle, @@ -194,9 +180,7 @@ namespace HtmlHelp2 this.AddToStringCollection(0, types.ResolvedClass.FullyQualifiedName); } - WorkbenchSingleton.SafeThreadAsyncCall(this, - "BuildDynamicHelpList", - ProjectService.CurrentProject.Language); + WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList"); } private ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e) @@ -236,22 +220,24 @@ namespace HtmlHelp2 private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem) { - if(selectedObject == null) return; - this.dynamicHelpTerms.Clear(); - - Type myObject = selectedObject.GetType(); - if(selectedItem != null) + try { - foreach(Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label)) + if(selectedObject == null) return; + this.dynamicHelpTerms.Clear(); + + Type myObject = selectedObject.GetType(); + if(selectedItem != null) { - this.AddToStringCollection(String.Format("{0}.{1}", type.FullName, selectedItem.Label)); + foreach(Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label)) + { + this.AddToStringCollection(String.Format("{0}.{1}", type.FullName, selectedItem.Label)); + } } - } - this.AddToStringCollection(myObject.FullName); + this.AddToStringCollection(myObject.FullName); - WorkbenchSingleton.SafeThreadAsyncCall(this, - "BuildDynamicHelpList", - ProjectService.CurrentProject.Language); + WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList"); + } + catch {} } #endregion @@ -635,7 +621,7 @@ namespace HtmlHelp2 string sectionName = sectionNode.Attributes.GetNamedItem("name").InnerText; string url = urlNode.InnerText; string id = urlNode.Attributes.GetNamedItem("name").InnerText; - this.BuildNewChild(sectionName, id, url); + this.BuildNewChild(StringParser.Parse(sectionName), id, url); } } } diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs index 2939b50939..71770a4821 100644 --- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs +++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs @@ -13,6 +13,7 @@ namespace HtmlHelp2 using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; + using ICSharpCode.SharpDevelop.Project; using HtmlHelp2.Environment; using HtmlHelp2.HelperDialog; using MSHelpServices; @@ -268,7 +269,7 @@ namespace HtmlHelp2 matchingTopics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchWord); else matchingTopics = HtmlHelp2Environment.FTS.Query(searchWord, searchFlags); - + Cursor.Current = Cursors.Default; searchDialog.Dispose(); @@ -285,26 +286,10 @@ namespace HtmlHelp2 lvi.Tag = topic; lvi.SubItems.Add(topic.Location); lvi.SubItems.Add(topic.Rank.ToString()); + searchResults.SearchResultsListView.Items.Add(lvi); } -// for(int i = 1; i <= matchingTopics.Count; i++) -// { -// IHxTopic topic = matchingTopics.ItemAt(i); -// -// if(topic != null) -// { -// ListViewItem lvi = new ListViewItem(); -// lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle, -// HxTopicGetTitleDefVal.HxTopicGetTitleFileName); -// lvi.SubItems.Add(topic.Location); -// lvi.SubItems.Add(topic.Rank.ToString()); -// lvi.Tag = topic; -// -// searchResults.SearchResultsListView.Items.Add(lvi); -// } -// } - reuseMatches.Enabled = true; } finally diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs new file mode 100644 index 0000000000..de92f95d71 --- /dev/null +++ b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs @@ -0,0 +1,71 @@ +/* *********************************************************** + * + * Help 2.0 Environment for SharpDevelop + * ProjectLanguage Class + * Copyright (c) 2005, Mathias Simmack. All rights reserved. + * + * ********************************************************* */ +namespace HtmlHelp2.SharpDevLanguageClass +{ + using System; + using System.Collections.Generic; + using ICSharpCode.SharpDevelop.Project; + using MSHelpServices; + + public sealed class SharpDevLanguage + { + private static Dictionarylanguages = new Dictionary(); + + static SharpDevLanguage() + { + languages.Add("C#", "CSharp"); + languages.Add("VBNet", "VB"); + } + + SharpDevLanguage() + { + } + + public static bool CheckTopicLanguage(IHxTopic topic) + { + return CheckTopicLanguage(topic, ProjectService.CurrentProject.Language); + } + + public static bool CheckTopicLanguage(IHxTopic topic, string expectedLanguage) + { + if(expectedLanguage == String.Empty) { return true; } + if(topic == null) { return false; } + + string tempLanguage = String.Empty; + if(!languages.ContainsKey(expectedLanguage) || + !languages.TryGetValue(expectedLanguage, out tempLanguage)) + { + tempLanguage = expectedLanguage; + } + + return (tempLanguage == String.Empty || topic.HasAttribute("DevLang", tempLanguage)); + } + + public static string GetPatchedLanguage() + { + return GetPatchedLanguage(ProjectService.CurrentProject.Language); + } + + public static string GetPatchedLanguage(string expectedLanguage) + { + string tempLanguage = expectedLanguage; + + if(tempLanguage != String.Empty) + { + if(!languages.ContainsKey(expectedLanguage) || + !languages.TryGetValue(expectedLanguage, out tempLanguage)) + { + tempLanguage = expectedLanguage; + } + } + + return tempLanguage; + } + } +} +