diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
index 540a7a3c23..f96379b432 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
@@ -30,11 +30,6 @@ namespace HtmlHelp2
using MSHelpServices;
- // TODO: if there are no DH results, implement Keyword search (index)
- // I'm a little stupid at this point, I guess, :o(
- // How to get the word UNDER the cursor for an ordinary simple keyword search?
-
-
public class ShowDynamicHelpMenuCommand : AbstractMenuCommand
{
public override void Run()
@@ -48,6 +43,7 @@ namespace HtmlHelp2
{
protected HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser;
private StringCollection dynamicHelpTerms = new StringCollection();
+ private Point lastPoint = Point.Empty;
private string debugPreElement = String.Empty;
private bool enableDebugInfo = false;
@@ -64,34 +60,45 @@ namespace HtmlHelp2
public HtmlHelp2DynamicHelpPad()
{
dynamicHelpBrowser = new HtmlHelp2DynamicHelpBrowserControl();
+ dynamicHelpBrowser.BuildANothing();
ParserService.ParserUpdateStepFinished += UpdateTick;
PropertyPad.SelectedObjectChanged += new EventHandler(this.FormsDesignerSelectedObjectChanged);
PropertyPad.SelectedGridItemChanged += new SelectedGridItemChangedEventHandler(this.FormsDesignerSelectedGridItemChanged);
ProjectService.SolutionClosed += new EventHandler(this.SolutionClosed);
}
- #region WebBrowser Scripting
+ #region Dynamic Help Calls
private void BuildDynamicHelpList()
{
if(this.dynamicHelpTerms.Count == 0) return;
- this.RemoveAllChildren();
+ dynamicHelpBrowser.RemoveAllChildren();
+
this.debugPreElement = String.Empty;
bool helpResults = false;
Cursor.Current = Cursors.WaitCursor;
foreach(string currentHelpTerm in this.dynamicHelpTerms)
{
- helpResults = (this.CallDynamicHelp(currentHelpTerm, false) || helpResults);
+ if(!currentHelpTerm.StartsWith("!"))
+ {
+ helpResults = (this.CallDynamicHelp(currentHelpTerm, false) || helpResults);
+ }
}
-
- if(!helpResults)
- {
+// if(!helpResults)
+// {
foreach(string currentHelpTerm in this.dynamicHelpTerms)
{
- this.CallDynamicHelp(currentHelpTerm, true);
+ if(currentHelpTerm.StartsWith("!"))
+ {
+ helpResults = (this.CallDynamicHelp(currentHelpTerm.Substring(1), true) || helpResults);
+ }
}
+// }
+ if(!helpResults)
+ {
+ dynamicHelpBrowser.BuildANothing();
}
- dynamicHelpBrowser.BuildDefaultHelpEntries();
+// dynamicHelpBrowser.BuildDefaultHelpEntries();
Cursor.Current = Cursors.Default;
this.debugPreElement += String.Format("
Current project language: {0}",
@@ -107,8 +114,7 @@ namespace HtmlHelp2
try
{
- if(keywordSearch) topics = HtmlHelp2Environment.GetMatchingTopicsForKeywordSearch(searchTerm);
- else topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm);
+ topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm);
result = (topics != null && topics.Count > 0);
this.debugPreElement += String.Format("{0} ({1}): {2} {3}
",
@@ -122,10 +128,10 @@ namespace HtmlHelp2
List newTopics = this.SortTopics(topics);
foreach(IHxTopic topic in newTopics)
{
- if(SharpDevLanguage.CheckTopicLanguage(topic))
+ if((keywordSearch)?SharpDevLanguage.CheckUniqueTopicLanguage(topic):SharpDevLanguage.CheckTopicLanguage(topic))
{
this.BuildNewChild(topic.Location,
- topic.get_Title(HxTopicGetTitleType.HxTopicGetTOCTitle,
+ topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,
HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
@@ -138,11 +144,6 @@ namespace HtmlHelp2
{
dynamicHelpBrowser.BuildNewChild(sectionName, topicName, topicUrl);
}
-
- private void RemoveAllChildren()
- {
- dynamicHelpBrowser.RemoveAllChildren();
- }
#endregion
#region Taken from DefinitionView.cs
@@ -201,6 +202,11 @@ namespace HtmlHelp2
ExpressionResult expr = expressionFinder.FindFullExpression(content, caret.Offset);
if (expr.Expression == null) return null;
+ // save the current position
+ if(this.lastPoint != null && this.lastPoint == caret.Position) return null;
+ this.lastPoint = caret.Position;
+ this.AddToStringCollection(String.Format("!{0}", expr.Expression));
+
return ParserService.Resolve(expr, caret.Line, caret.Column, fileName, content);
}
#endregion
@@ -243,7 +249,8 @@ namespace HtmlHelp2
private void SolutionClosed(object sender, EventArgs e)
{
- this.RemoveAllChildren();
+ dynamicHelpBrowser.RemoveAllChildren();
+ dynamicHelpBrowser.BuildANothing();
}
#region StringCollection & Sorting
@@ -292,6 +299,7 @@ namespace HtmlHelp2
{
int result = CompareType("kbSyntax", x, y);
if(result == 0) result = CompareType("kbHowTo", x, y);
+ if(result == 0) result = CompareType("kbOrient", x, y);
if(result == 0) result = CompareType("kbArticle", x, y);
return result;
@@ -312,8 +320,8 @@ namespace HtmlHelp2
public class HtmlHelp2DynamicHelpBrowserControl : UserControl
{
- WebBrowser axWebBrowser = new WebBrowser();
- ToolStrip dynamicHelpToolbar = new ToolStrip();
+ WebBrowser axWebBrowser = null;
+ ToolStrip dynamicHelpToolbar = null;
int internalIndex = 0;
string[] toolbarButtons = new string[] {
"${res:AddIns.HtmlHelp2.Contents}",
@@ -332,7 +340,6 @@ namespace HtmlHelp2
public HtmlHelp2DynamicHelpBrowserControl()
{
this.InitializeComponents();
- this.LoadDynamicHelpPage();
}
private void InitializeComponents()
@@ -340,20 +347,24 @@ namespace HtmlHelp2
Dock = DockStyle.Fill;
Size = new Size(500, 500);
+ axWebBrowser = new WebBrowser();
Controls.Add(axWebBrowser);
axWebBrowser.Dock = DockStyle.Fill;
axWebBrowser.WebBrowserShortcutsEnabled = false;
axWebBrowser.IsWebBrowserContextMenuEnabled = false;
axWebBrowser.AllowWebBrowserDrop = false;
+ this.LoadDynamicHelpPage();
+ dynamicHelpToolbar = new ToolStrip();
Controls.Add(dynamicHelpToolbar);
dynamicHelpToolbar.Dock = DockStyle.Top;
dynamicHelpToolbar.AllowItemReorder = false;
+ dynamicHelpToolbar.ShowItemToolTips = false;
dynamicHelpToolbar.Enabled = HtmlHelp2Environment.IsReady;
for(int i = 0; i < toolbarButtons.Length; i++)
{
ToolStripButton button = new ToolStripButton();
- button.ToolTipText = StringParser.Parse(toolbarButtons[i]);
+ button.Text = StringParser.Parse(toolbarButtons[i]);
button.ImageIndex = i;
button.Click += new EventHandler(this.ToolStripButtonClicked);
@@ -372,10 +383,6 @@ namespace HtmlHelp2
}
}
- private void DynamicHelpBrowserCreated(object sender, EventArgs e)
- {
- }
-
private void LoadDynamicHelpPage()
{
if(!HtmlHelp2Environment.IsReady) return;
@@ -484,7 +491,7 @@ namespace HtmlHelp2
HtmlElement b = axWebBrowser.Document.CreateElement("b");
b.InnerText = sectionName;
- b.Style = "cursor:pointer";
+ b.Style = "cursor:auto";
b.Id = this.internalIndex.ToString();
b.Click += new HtmlElementEventHandler(this.OnSectionClick);
span.AppendChild(b);
@@ -536,6 +543,20 @@ namespace HtmlHelp2
return br;
}
+ public void BuildANothing()
+ {
+ try
+ {
+ HtmlElement nothing = axWebBrowser.Document.CreateElement("b");
+ nothing.InnerText = "No data is available for the current selection.";
+ nothing.SetAttribute("title", nothing.InnerText);
+
+ axWebBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterBegin,
+ nothing);
+ }
+ catch {}
+ }
+
private bool DoesLinkExist(HtmlElement parentNode, string topicName, string topicUrl)
{
try
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Dialog.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Dialog.cs
index 262e0b6528..a625318011 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Dialog.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Dialog.cs
@@ -93,6 +93,7 @@ namespace HtmlHelp2.HelperDialog
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
+ this.ControlBox = false;
this.Name = "HtmlHelp2Dialog";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "HtmlHelp2Dialog";
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs
index 19c81ea30b..78894ff4e4 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs
@@ -93,8 +93,7 @@ namespace HtmlHelp2.Environment
XmlNode node = xmldoc.SelectSingleNode("/help2environment/collection");
if(node != null) DefaultNamespaceName = node.InnerText;
- LoggingService.Info(String.Format("Help 2.0: using \"{0}\" as default namespace",
- DefaultNamespaceName));
+ LoggingService.Info("Help 2.0: using saved configuration");
}
catch
{
@@ -283,8 +282,8 @@ namespace HtmlHelp2.Environment
try
{
- topics = ((IHxIndex)dynamicHelp).GetTopicsFromString(searchTerm, 0);
- LoggingService.Info("Help 2.0: Dynamic Help successfully called");
+ topics = dynamicHelp.GetTopicsFromString(searchTerm, 0);
+ LoggingService.Info("Help 2.0: Dynamic Help called");
}
catch
{
@@ -293,25 +292,6 @@ namespace HtmlHelp2.Environment
dynamicHelpIsBusy = false;
return topics;
}
-
- public static IHxTopicList GetMatchingTopicsForKeywordSearch(string searchTerm)
- {
- if(dynamicHelpIsBusy) return null;
- IHxTopicList topics = null;
- dynamicHelpIsBusy = true;
-
- try
- {
- topics = GetIndex(currentSelectedFilterQuery).GetTopicsFromString(searchTerm, 0);
- LoggingService.Info("Help 2.0: Keyword search successfully called");
- }
- catch
- {
- LoggingService.Error("Help 2.0: Keyword search failed");
- }
- dynamicHelpIsBusy = false;
- return topics;
- }
#endregion
#region Event Handling
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs
index a9f505a054..0c7c6dc439 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/Service/SharpDevLanguageClass.cs
@@ -9,6 +9,7 @@ namespace HtmlHelp2.SharpDevLanguageClass
{
using System;
using System.Collections.Generic;
+ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using MSHelpServices;
@@ -26,6 +27,27 @@ namespace HtmlHelp2.SharpDevLanguageClass
{
}
+ private static int DevLangCounter(IHxTopic topic)
+ {
+ try
+ {
+ int counter = 0;
+ IHxAttributeList topicAttributes = topic.Attributes;
+ foreach(IHxAttribute attr in topicAttributes)
+ {
+ if(String.Compare(attr.DisplayName, "DevLang") == 0)
+ {
+ counter++;
+ }
+ }
+ return counter;
+ }
+ catch
+ {
+ return 0;
+ }
+ }
+
public static bool CheckTopicLanguage(IHxTopic topic)
{
return CheckTopicLanguage(topic, ProjectService.CurrentProject.Language);
@@ -46,6 +68,16 @@ namespace HtmlHelp2.SharpDevLanguageClass
return (tempLanguage == String.Empty || topic.HasAttribute("DevLang", tempLanguage));
}
+ public static bool CheckUniqueTopicLanguage(IHxTopic topic)
+ {
+ return CheckUniqueTopicLanguage(topic, ProjectService.CurrentProject.Language);
+ }
+
+ public static bool CheckUniqueTopicLanguage(IHxTopic topic, string expectedLanguage)
+ {
+ return (CheckTopicLanguage(topic, expectedLanguage) && DevLangCounter(topic) == 1);
+ }
+
public static string GetPatchedLanguage()
{
return GetPatchedLanguage(ProjectService.CurrentProject.Language);