Browse Source

Help 2.0: more suggestions made by FxCop

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1571 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mathias Simmack 19 years ago
parent
commit
a34ddc9e98
  1. 3
      src/AddIns/Misc/HtmlHelp2/Project/Configuration/AssemblyInfo.cs
  2. 2
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin
  3. 88
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
  4. 3
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs
  5. 12
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchResultsPad.cs
  6. 16
      src/AddIns/Misc/HtmlHelp2/Project/src/BrowserControl/HelpBrowserCommands.cs
  7. 12
      src/AddIns/Misc/HtmlHelp2/Project/src/BrowserControl/ShowHelpBrowser.cs
  8. 26
      src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs
  9. 30
      src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs
  10. 48
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/Help2RegistryWalker.cs
  11. 38
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

3
src/AddIns/Misc/HtmlHelp2/Project/Configuration/AssemblyInfo.cs

@ -7,6 +7,7 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Security.Permissions;
// Information about this assembly is defined by the following // Information about this assembly is defined by the following
// attributes. // attributes.
@ -21,3 +22,5 @@ using System.Runtime.CompilerServices;
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: System.Runtime.InteropServices.ComVisible(false)] [assembly: System.Runtime.InteropServices.ComVisible(false)]
[assembly: System.CLSCompliant(false)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]

2
src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin

@ -16,7 +16,7 @@
</Path> </Path>
<Path name = "/SharpDevelop/Services/HelpProvider"> <Path name = "/SharpDevelop/Services/HelpProvider">
<Class id = "HtmlHelp2" class = "HtmlHelp2.MsHelpProvider"/> <Class id = "HtmlHelp2" class = "HtmlHelp2.MSHelpProvider"/>
</Path> </Path>
<Path name = "/SharpDevelop/Workbench/Pads"> <Path name = "/SharpDevelop/Workbench/Pads">

88
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs

@ -11,6 +11,8 @@ namespace HtmlHelp2
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Drawing; using System.Drawing;
using System.Globalization;
using System.Security.Permissions;
using System.Windows.Forms; using System.Windows.Forms;
using System.Reflection; using System.Reflection;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -35,7 +37,7 @@ namespace HtmlHelp2
public class HtmlHelp2DynamicHelpPad : AbstractPadContent public class HtmlHelp2DynamicHelpPad : AbstractPadContent
{ {
protected HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser; HtmlHelp2DynamicHelpBrowserControl dynamicHelpBrowser;
private StringCollection dynamicHelpTerms = new StringCollection(); private StringCollection dynamicHelpTerms = new StringCollection();
private Point lastPoint = Point.Empty; private Point lastPoint = Point.Empty;
private string debugPreElement = String.Empty; private string debugPreElement = String.Empty;
@ -51,6 +53,7 @@ namespace HtmlHelp2
dynamicHelpBrowser.RedrawContent(); dynamicHelpBrowser.RedrawContent();
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public HtmlHelp2DynamicHelpPad() public HtmlHelp2DynamicHelpPad()
{ {
dynamicHelpBrowser = new HtmlHelp2DynamicHelpBrowserControl(); dynamicHelpBrowser = new HtmlHelp2DynamicHelpBrowserControl();
@ -95,11 +98,11 @@ namespace HtmlHelp2
if (this.enableDebugInfo) if (this.enableDebugInfo)
{ {
this.debugPreElement += this.debugPreElement +=
string.Format("<br>Current project language: {0}", SharpDevLanguage.GetPatchedLanguage()); string.Format(CultureInfo.InvariantCulture, "<br>Current project language: {0}", SharpDevLanguage.GetPatchedLanguage());
dynamicHelpBrowser.CreateDebugPre(this.debugPreElement); dynamicHelpBrowser.CreateDebugPre(this.debugPreElement);
} }
} }
catch (Exception ex) catch (System.Runtime.InteropServices.COMException ex)
{ {
LoggingService.Error("Help 2.0: Dynamic Help Call Exception; " + ex.ToString()); LoggingService.Error("Help 2.0: Dynamic Help Call Exception; " + ex.ToString());
} }
@ -122,12 +125,13 @@ namespace HtmlHelp2
// debug info // debug info
this.debugPreElement += this.debugPreElement +=
string.Format("{0} ({1}): {2} {3}<br>", searchTerm, (keywordSearch)?"Kwd":"DH", string.Format(CultureInfo.InvariantCulture,
"{0} ({1}): {2} {3}<br>", searchTerm, (keywordSearch)?"Kwd":"DH",
topics.Count, (topics.Count==1)?"topic":"topics"); topics.Count, (topics.Count==1)?"topic":"topics");
if (result) if (result)
{ {
List<IHxTopic> newTopics = this.SortTopics(topics); List<IHxTopic> newTopics = SortTopics(topics);
foreach (IHxTopic topic in newTopics) foreach (IHxTopic topic in newTopics)
{ {
if ((keywordSearch)?SharpDevLanguage.CheckUniqueTopicLanguage(topic):SharpDevLanguage.CheckTopicLanguage(topic)) if ((keywordSearch)?SharpDevLanguage.CheckUniqueTopicLanguage(topic):SharpDevLanguage.CheckTopicLanguage(topic))
@ -207,7 +211,7 @@ namespace HtmlHelp2
// save the current position // save the current position
if(this.lastPoint != null && this.lastPoint == caret.Position) return null; if(this.lastPoint != null && this.lastPoint == caret.Position) return null;
this.lastPoint = caret.Position; this.lastPoint = caret.Position;
this.AddToStringCollection(String.Format("!{0}", expr.Expression)); this.AddToStringCollection(string.Format(CultureInfo.InvariantCulture, "!{0}", expr.Expression));
return ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content); return ParserService.Resolve(expr, caret.Line + 1, caret.Column + 1, fileName, content);
} }
@ -228,24 +232,21 @@ namespace HtmlHelp2
private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem) private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem)
{ {
try if (selectedObject == null) return;
{ this.dynamicHelpTerms.Clear();
if (selectedObject == null) return;
this.dynamicHelpTerms.Clear();
Type myObject = selectedObject.GetType(); Type myObject = selectedObject.GetType();
if (selectedItem != null) if (selectedItem != null)
{
foreach (Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label))
{ {
foreach (Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label)) this.AddToStringCollection(string.Format(CultureInfo.InvariantCulture,
{ "{0}.{1}", type.FullName, selectedItem.Label));
this.AddToStringCollection(String.Format("{0}.{1}", type.FullName, selectedItem.Label));
}
} }
this.AddToStringCollection(myObject.FullName);
WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList");
} }
catch {} this.AddToStringCollection(myObject.FullName);
WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList");
} }
#endregion #endregion
@ -271,7 +272,7 @@ namespace HtmlHelp2
} }
} }
private List<IHxTopic> SortTopics(IHxTopicList topics) private static List<IHxTopic> SortTopics(IHxTopicList topics)
{ {
if (topics == null || topics.Count == 0) if (topics == null || topics.Count == 0)
{ {
@ -301,7 +302,7 @@ namespace HtmlHelp2
return result; return result;
} }
private int CompareType(string topicType, IHxTopic x, IHxTopic y) private static int CompareType(string topicType, IHxTopic x, IHxTopic y)
{ {
if(x.HasAttribute("TopicType", topicType) && !y.HasAttribute("TopicType", topicType)) if(x.HasAttribute("TopicType", topicType) && !y.HasAttribute("TopicType", topicType))
return -1; return -1;
@ -323,7 +324,7 @@ namespace HtmlHelp2
{ {
WebBrowser axWebBrowser = new WebBrowser(); WebBrowser axWebBrowser = new WebBrowser();
ToolStrip dynamicHelpToolbar = new ToolStrip(); ToolStrip dynamicHelpToolbar = new ToolStrip();
int internalIndex = 0; int internalIndex;
string[] toolbarButtons = new string[] { string[] toolbarButtons = new string[] {
"${res:AddIns.HtmlHelp2.Contents}", "${res:AddIns.HtmlHelp2.Contents}",
"${res:AddIns.HtmlHelp2.Index}", "${res:AddIns.HtmlHelp2.Index}",
@ -338,11 +339,13 @@ namespace HtmlHelp2
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public HtmlHelp2DynamicHelpBrowserControl() public HtmlHelp2DynamicHelpBrowserControl()
{ {
this.InitializeComponents(); this.InitializeComponents();
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
private void InitializeComponents() private void InitializeComponents()
{ {
Dock = DockStyle.Fill; Dock = DockStyle.Fill;
@ -385,9 +388,10 @@ namespace HtmlHelp2
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public void LoadDynamicHelpPage() public void LoadDynamicHelpPage()
{ {
string url = String.Format("res://{0}/context", Assembly.GetExecutingAssembly().Location); string url = string.Format(CultureInfo.InvariantCulture, "res://{0}/context", Assembly.GetExecutingAssembly().Location);
axWebBrowser.Navigate(url); axWebBrowser.Navigate(url);
} }
@ -425,7 +429,8 @@ namespace HtmlHelp2
#endregion #endregion
#region WebBrowser Scripting #region WebBrowser Scripting
public void BuildNewChild(string sectionName, string topicName, string topicUrl) [PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public void BuildNewChild(string sectionName, string topicName, string topicLink)
{ {
HtmlElementCollection children = HtmlElementCollection children =
axWebBrowser.Document.Body.GetElementsByTagName("span"); axWebBrowser.Document.Body.GetElementsByTagName("span");
@ -441,9 +446,9 @@ namespace HtmlHelp2
contentSpan.TagName == "SPAN" && contentSpan.TagName == "SPAN" &&
contentSpan.GetAttribute("className") == "content") contentSpan.GetAttribute("className") == "content")
{ {
if (!this.DoesLinkExist(contentSpan, topicName, topicUrl)) if (!DoesLinkExist(contentSpan, topicName, topicLink))
{ {
HtmlElement newLink = this.CreateNewLink(topicUrl, topicName); HtmlElement newLink = this.CreateNewLink(topicLink, topicName);
if (newLink != null) if (newLink != null)
{ {
contentSpan.AppendChild(newLink); contentSpan.AppendChild(newLink);
@ -469,7 +474,7 @@ namespace HtmlHelp2
axWebBrowser.Document.Body.InsertAdjacentElement axWebBrowser.Document.Body.InsertAdjacentElement
(HtmlElementInsertionOrientation.BeforeEnd, htmlSection); (HtmlElementInsertionOrientation.BeforeEnd, htmlSection);
HtmlElement newLink = this.CreateNewLink(topicUrl, topicName); HtmlElement newLink = this.CreateNewLink(topicLink, topicName);
if (newLink != null) if (newLink != null)
{ {
linkContent.AppendChild(newLink); linkContent.AppendChild(newLink);
@ -480,23 +485,26 @@ namespace HtmlHelp2
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
private HtmlElement CreateNewSection(string sectionName, out HtmlElement linkNode) private HtmlElement CreateNewSection(string sectionName, out HtmlElement linkNode)
{ {
HtmlElement span = axWebBrowser.Document.CreateElement("span"); HtmlElement span = axWebBrowser.Document.CreateElement("span");
span.SetAttribute("className", "section"); span.SetAttribute("className", "section");
span.InnerHtml = String.Format span.InnerHtml = string.Format
("<img style=\"width:16px;height:16px;margin-right:5px\" id=\"image_{0}\" src=\"open\">" + (CultureInfo.InvariantCulture,
"<img style=\"width:16px;height:16px;margin-right:5px\" id=\"image_{0}\" src=\"open\">" +
"<b style=\"cursor:auto;\" id=\"{0}\" onclick=\"ExpandCollapse({0})\">{1}</b><br>", "<b style=\"cursor:auto;\" id=\"{0}\" onclick=\"ExpandCollapse({0})\">{1}</b><br>",
this.internalIndex, sectionName); this.internalIndex, sectionName);
linkNode = axWebBrowser.Document.CreateElement("span"); linkNode = axWebBrowser.Document.CreateElement("span");
linkNode.SetAttribute("className", "content"); linkNode.SetAttribute("className", "content");
linkNode.Id = String.Format("content_{0}", this.internalIndex); linkNode.Id = string.Format(CultureInfo.InvariantCulture, "content_{0}", this.internalIndex);
span.AppendChild(linkNode); span.AppendChild(linkNode);
return span; return span;
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
private HtmlElement CreateNewLink(string topicUrl, string topicName) private HtmlElement CreateNewLink(string topicUrl, string topicName)
{ {
HtmlElement span = axWebBrowser.Document.CreateElement("a"); HtmlElement span = axWebBrowser.Document.CreateElement("a");
@ -511,13 +519,15 @@ namespace HtmlHelp2
return span; return span;
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
private HtmlElement CreateABreak() private HtmlElement CreateABreak()
{ {
HtmlElement br = axWebBrowser.Document.CreateElement("br"); HtmlElement br = axWebBrowser.Document.CreateElement("br");
return br; return br;
} }
private bool DoesLinkExist(HtmlElement parentNode, string topicName, string topicUrl) [PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
private static bool DoesLinkExist(HtmlElement parentNode, string topicName, string topicUrl)
{ {
HtmlElementCollection links = parentNode.GetElementsByTagName("a"); HtmlElementCollection links = parentNode.GetElementsByTagName("a");
foreach (HtmlElement link in links) foreach (HtmlElement link in links)
@ -533,9 +543,10 @@ namespace HtmlHelp2
private void OnMouseOver(object sender, HtmlElementEventArgs e) private void OnMouseOver(object sender, HtmlElementEventArgs e)
{ {
if (sender is HtmlElement) HtmlElement link = sender as HtmlElement;
if (link != null)
{ {
StatusBarService.SetMessage(((HtmlElement)sender).GetAttribute("src")); StatusBarService.SetMessage(link.GetAttribute("src"));
} }
} }
@ -546,13 +557,15 @@ namespace HtmlHelp2
private void OnLinkClick(object sender, HtmlElementEventArgs e) private void OnLinkClick(object sender, HtmlElementEventArgs e)
{ {
if (sender is HtmlElement) HtmlElement link = sender as HtmlElement;
if (link != null)
{ {
string url = ((HtmlElement)sender).GetAttribute("src"); string url = link.GetAttribute("src");
if (!string.IsNullOrEmpty(url)) ShowHelpBrowser.OpenHelpView(url); if (!string.IsNullOrEmpty(url)) ShowHelpBrowser.OpenHelpView(url);
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public void RemoveAllChildren() public void RemoveAllChildren()
{ {
try try
@ -560,7 +573,7 @@ namespace HtmlHelp2
this.internalIndex = 0; this.internalIndex = 0;
axWebBrowser.Document.Body.InnerHtml = string.Empty; axWebBrowser.Document.Body.InnerHtml = string.Empty;
} }
catch (Exception ex) catch (System.NotSupportedException ex)
{ {
LoggingService.Error("Help 2.0: Clean-up Call Exception; " + ex.ToString()); LoggingService.Error("Help 2.0: Clean-up Call Exception; " + ex.ToString());
} }
@ -568,6 +581,7 @@ namespace HtmlHelp2
#endregion #endregion
#region DebugInfo #region DebugInfo
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public void CreateDebugPre(string debugInformation) public void CreateDebugPre(string debugInformation)
{ {
if (!string.IsNullOrEmpty(debugInformation)) if (!string.IsNullOrEmpty(debugInformation))

3
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexResultsPad.cs

@ -9,6 +9,7 @@ namespace HtmlHelp2
{ {
using System; using System;
using System.Collections; using System.Collections;
using System.Globalization;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
@ -118,7 +119,7 @@ namespace HtmlHelp2
string text = StringParser.Parse("${res:AddIns.HtmlHelp2.ResultsOfIndexResults}", string text = StringParser.Parse("${res:AddIns.HtmlHelp2.ResultsOfIndexResults}",
new string[,] new string[,]
{{"0", indexTerm}, {{"0", indexTerm},
{"1", listView.Items.Count.ToString()}, {"1", listView.Items.Count.ToString(CultureInfo.InvariantCulture)},
{"2", (listView.Items.Count == 1)?"${res:AddIns.HtmlHelp2.SingleTopic}":"${res:AddIns.HtmlHelp2.MultiTopic}"}} {"2", (listView.Items.Count == 1)?"${res:AddIns.HtmlHelp2.SingleTopic}":"${res:AddIns.HtmlHelp2.MultiTopic}"}}
); );

12
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchResultsPad.cs

@ -9,6 +9,7 @@ namespace HtmlHelp2
{ {
using System; using System;
using System.Collections; using System.Collections;
using System.Globalization;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
@ -123,7 +124,7 @@ namespace HtmlHelp2
string text = StringParser.Parse("${res:AddIns.HtmlHelp2.ResultsOfSearchResults}", string text = StringParser.Parse("${res:AddIns.HtmlHelp2.ResultsOfSearchResults}",
new string[,] new string[,]
{{"0", indexTerm}, {{"0", indexTerm},
{"1", listView.Items.Count.ToString()}, {"1", listView.Items.Count.ToString(CultureInfo.InvariantCulture)},
{"2", (listView.Items.Count == 1)?"${res:AddIns.HtmlHelp2.SingleTopic}":"${res:AddIns.HtmlHelp2.MultiTopic}"}} {"2", (listView.Items.Count == 1)?"${res:AddIns.HtmlHelp2.SingleTopic}":"${res:AddIns.HtmlHelp2.MultiTopic}"}}
); );
@ -142,16 +143,19 @@ namespace HtmlHelp2
public int Compare(object x, object y) public int Compare(object x, object y)
{ {
ListViewItem itemA = x as ListViewItem;
ListViewItem itemB = y as ListViewItem;
switch (col) switch (col)
{ {
case 2: case 2:
int a = Int32.Parse(((ListViewItem)x).SubItems[col].Text); int a = Int32.Parse(itemA.SubItems[col].Text, CultureInfo.InvariantCulture);
int b = Int32.Parse(((ListViewItem)y).SubItems[col].Text); int b = Int32.Parse(itemB.SubItems[col].Text, CultureInfo.InvariantCulture);
if(a > b) return 1; if(a > b) return 1;
else if(a < b) return -1; else if(a < b) return -1;
else return 0; else return 0;
default: default:
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text); return string.Compare(itemA.SubItems[col].Text, itemB.SubItems[col].Text);
} }
} }
} }

16
src/AddIns/Misc/HtmlHelp2/Project/src/BrowserControl/HelpBrowserCommands.cs

@ -7,8 +7,8 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Security.Permissions;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -19,7 +19,7 @@ namespace HtmlHelp2
{ {
public abstract class HelpToolbarCommand : AbstractCommand public abstract class HelpToolbarCommand : AbstractCommand
{ {
public HtmlHelp2TocPad TocPad public static HtmlHelp2TocPad TocPad
{ {
get get
{ {
@ -35,12 +35,14 @@ namespace HtmlHelp2
} }
} }
public void BringTocPadToFront() public static void BringTocPadToFront()
{ {
WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2TocPad)).BringPadToFront(); WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2TocPad)).BringPadToFront();
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
[PermissionSet(SecurityAction.InheritanceDemand, Name="Execution")]
public class SyncTocCommand : HelpToolbarCommand public class SyncTocCommand : HelpToolbarCommand
{ {
public override void Run() public override void Run()
@ -50,6 +52,8 @@ namespace HtmlHelp2
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
[PermissionSet(SecurityAction.InheritanceDemand, Name="Execution")]
public class PreviousTopicCommand : HelpToolbarCommand public class PreviousTopicCommand : HelpToolbarCommand
{ {
public override void Run() public override void Run()
@ -58,7 +62,7 @@ namespace HtmlHelp2
{ {
TocPad.GetPrevFromNode(); TocPad.GetPrevFromNode();
} }
catch catch (System.ArgumentException)
{ {
TocPad.GetPrevFromUrl(Browser.Url.ToString()); TocPad.GetPrevFromUrl(Browser.Url.ToString());
} }
@ -66,6 +70,8 @@ namespace HtmlHelp2
} }
} }
[PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
[PermissionSet(SecurityAction.InheritanceDemand, Name="Execution")]
public class NextTopicCommand : HelpToolbarCommand public class NextTopicCommand : HelpToolbarCommand
{ {
public override void Run() public override void Run()
@ -74,7 +80,7 @@ namespace HtmlHelp2
{ {
TocPad.GetNextFromNode(); TocPad.GetNextFromNode();
} }
catch catch (System.ArgumentException)
{ {
TocPad.GetNextFromUrl(Browser.Url.ToString()); TocPad.GetNextFromUrl(Browser.Url.ToString());
} }

12
src/AddIns/Misc/HtmlHelp2/Project/src/BrowserControl/ShowHelpBrowser.cs

@ -38,17 +38,17 @@ namespace HtmlHelp2
OpenHelpView(topic.URL, topic, hiliteMatchingWords); OpenHelpView(topic.URL, topic, hiliteMatchingWords);
} }
public static void OpenHelpView(string topicUrl) public static void OpenHelpView(string topicLink)
{ {
OpenHelpView(topicUrl, null, false); OpenHelpView(topicLink, null, false);
} }
public static void OpenHelpView(string topicUrl, bool hiliteMatchingWords) public static void OpenHelpView(string topicLink, bool hiliteMatchingWords)
{ {
OpenHelpView(topicUrl, null, hiliteMatchingWords); OpenHelpView(topicLink, null, hiliteMatchingWords);
} }
public static void OpenHelpView(string topicUrl, IHxTopic topic, bool hiliteMatchingWords) public static void OpenHelpView(string topicLink, IHxTopic topic, bool hiliteMatchingWords)
{ {
hiliteMatches = hiliteMatchingWords; hiliteMatches = hiliteMatchingWords;
lastTopic = topic; lastTopic = topic;
@ -56,7 +56,7 @@ namespace HtmlHelp2
if (help2Browser != null) if (help2Browser != null)
{ {
help2Browser.Load(topicUrl); help2Browser.Load(topicLink);
help2Browser.WorkbenchWindow.SelectWindow(); help2Browser.WorkbenchWindow.SelectWindow();
} }
} }

26
src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs

@ -7,6 +7,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Security.Permissions;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core; using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
@ -22,16 +24,29 @@ namespace HtmlHelp2
public override void GoHome(HtmlViewPane pane) public override void GoHome(HtmlViewPane pane)
{ {
pane.Navigate(HtmlHelp2Environment.DefaultPage); if (pane == null)
{
throw new ArgumentNullException("pane");
}
pane.Navigate(new Uri(HtmlHelp2Environment.DefaultPage));
} }
public override void GoSearch(HtmlViewPane pane) public override void GoSearch(HtmlViewPane pane)
{ {
pane.Navigate(HtmlHelp2Environment.SearchPage); if (pane == null)
{
throw new ArgumentNullException("pane");
}
pane.Navigate(new Uri(HtmlHelp2Environment.SearchPage));
} }
// [PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public override void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e) public override void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e)
{ {
if (pane == null)
{
throw new ArgumentNullException("pane");
}
if (scriptObject == null) { if (scriptObject == null) {
scriptObject = new JScriptExternal(); scriptObject = new JScriptExternal();
LoadHelpState(); LoadHelpState();
@ -64,9 +79,14 @@ namespace HtmlHelp2
} }
PropertyService.Set("HtmlHelpPersistedJScriptGlobals", lines.ToArray()); PropertyService.Set("HtmlHelpPersistedJScriptGlobals", lines.ToArray());
} }
// [PermissionSet(SecurityAction.LinkDemand, Name="Execution")]
public override void DocumentCompleted(HtmlViewPane pane, WebBrowserDocumentCompletedEventArgs e) public override void DocumentCompleted(HtmlViewPane pane, WebBrowserDocumentCompletedEventArgs e)
{ {
if (pane == null)
{
throw new ArgumentNullException("pane");
}
ShowHelpBrowser.HighlightDocument(pane); ShowHelpBrowser.HighlightDocument(pane);
} }
} }

30
src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs

@ -13,36 +13,36 @@ namespace HtmlHelp2
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
public class MsHelpProvider : HelpProvider public class MSHelpProvider : HelpProvider
{ {
public override bool TryShowHelp(string fullTypeName) public override bool TryShowHelp(string fullTypeName)
{ {
LoggingService.Info("Help 2.0: MsHelpProvider.TryShowHelp"); LoggingService.Info("Help 2.0: MsHelpProvider.TryShowHelp");
try // try
{ // {
PadDescriptor search = WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2SearchPad)); PadDescriptor search = WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2SearchPad));
return ((HtmlHelp2SearchPad)search.PadContent).PerformF1Fts(fullTypeName, true); return ((HtmlHelp2SearchPad)search.PadContent).PerformF1Fts(fullTypeName, true);
} // }
catch // catch
{ // {
return false; // return false;
} // }
} }
public override bool TryShowHelpByKeyword(string keyword) public override bool TryShowHelpByKeyword(string keyword)
{ {
LoggingService.Info("Help 2.0: MsHelpProvider.TryShowHelpByKeyword"); LoggingService.Info("Help 2.0: MsHelpProvider.TryShowHelpByKeyword");
try // try
{ // {
PadDescriptor search = WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2SearchPad)); PadDescriptor search = WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2SearchPad));
return ((HtmlHelp2SearchPad)search.PadContent).PerformF1Fts(keyword); return ((HtmlHelp2SearchPad)search.PadContent).PerformF1Fts(keyword);
} // }
catch // catch
{ // {
return false; // return false;
} // }
} }
} }
} }

48
src/AddIns/Misc/HtmlHelp2/Project/src/Service/Help2RegistryWalker.cs

@ -73,48 +73,6 @@ namespace HtmlHelp2.Environment
help2Collections.EndUpdate(); help2Collections.EndUpdate();
} }
return true; return true;
// if (help2Collections == null)
// {
// return false;
// }
// help2Collections.Items.Clear();
// help2Collections.BeginUpdate();
// bool result = true;
//
// try
// {
// string currentDescription = string.Empty;
// HxRegistryWalkerClass registryWalker = new HxRegistryWalkerClass();
// IHxRegNamespaceList namespaces = registryWalker.get_RegisteredNamespaceList("");
//
// foreach (IHxRegNamespace currentNamespace in namespaces)
// {
// help2Collections.Items.Add
// ((string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription));
//
// if (!string.IsNullOrEmpty(selectedHelp2Collection) &&
// string.Compare(selectedHelp2Collection, currentNamespace.Name) == 0)
// {
// currentDescription =
// (string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription);
// }
// }
//
// if (!string.IsNullOrEmpty(currentDescription))
// help2Collections.SelectedIndex = help2Collections.Items.IndexOf(currentDescription);
// else
// help2Collections.SelectedIndex = 0;
// }
// catch
// {
// result = false;
// }
// finally
// {
// help2Collections.EndUpdate();
// }
//
// return result;
} }
public static string GetNamespaceName(string description) public static string GetNamespaceName(string description)
@ -192,9 +150,7 @@ namespace HtmlHelp2.Environment
registryWalker = null; registryWalker = null;
} }
if (registryWalker == null || if (registryWalker == null || help2Namespaces == null || help2Namespaces.Count == 0 || string.IsNullOrEmpty(matchingName))
help2Namespaces == null || help2Namespaces.Count == 0 ||
string.IsNullOrEmpty(matchingName))
{ {
return string.Empty; return string.Empty;
} }
@ -205,7 +161,7 @@ namespace HtmlHelp2.Environment
return currentNamespace.Name; return currentNamespace.Name;
} }
} }
return string.Empty; return help2Namespaces.ItemAt(1).Name;
} }
} }

38
src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

@ -8,6 +8,7 @@
namespace HtmlHelp2.Environment namespace HtmlHelp2.Environment
{ {
using System; using System;
using System.Globalization;
using System.IO; using System.IO;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml; using System.Xml;
@ -24,15 +25,13 @@ namespace HtmlHelp2.Environment
static IHxRegFilterList namespaceFilters; static IHxRegFilterList namespaceFilters;
static IHxQuery fulltextSearch; static IHxQuery fulltextSearch;
static IHxIndex dynamicHelp; static IHxIndex dynamicHelp;
static string defaultNamespaceName = static string defaultNamespaceName;
Help2RegistryWalker.GetFirstMatchingNamespaceName("MS.NETFramework.v20*"); static string currentSelectedFilterQuery;
static string currentSelectedFilterQuery = ""; static string currentSelectedFilterName;
static string currentSelectedFilterName = "";
static string defaultPage = "about:blank"; static string defaultPage = "about:blank";
static string searchPage = "http://msdn.microsoft.com"; static string searchPage = "http://msdn.microsoft.com";
static bool dynamicHelpIsBusy; static bool dynamicHelpIsBusy;
static HtmlHelp2Options config = new HtmlHelp2Options(); static HtmlHelp2Options config = new HtmlHelp2Options();
HtmlHelp2Environment() HtmlHelp2Environment()
{ {
@ -40,8 +39,7 @@ namespace HtmlHelp2.Environment
static HtmlHelp2Environment() static HtmlHelp2Environment()
{ {
LoadHelp2Config(); InitializeNamespace();
InitializeNamespace(defaultNamespaceName);
} }
#region Properties #region Properties
@ -94,24 +92,36 @@ namespace HtmlHelp2.Environment
#region Namespace Functions #region Namespace Functions
private static void LoadHelp2Config() private static void LoadHelp2Config()
{ {
if (string.IsNullOrEmpty(defaultNamespaceName))
{
defaultNamespaceName =
Help2RegistryWalker.GetFirstMatchingNamespaceName("MS.NETFramework.v20*");
}
else
{
defaultNamespaceName = Help2RegistryWalker.GetFirstNamespace(defaultNamespaceName);
}
LoadConfiguration(); LoadConfiguration();
if (!string.IsNullOrEmpty(config.SelectedCollection)) if (!string.IsNullOrEmpty(config.SelectedCollection))
{ {
defaultNamespaceName = config.SelectedCollection; defaultNamespaceName =
Help2RegistryWalker.GetFirstNamespace(config.SelectedCollection);
} }
} }
public static void ReloadNamespace() public static void ReloadNamespace()
{ {
LoadHelp2Config(); InitializeNamespace();
defaultNamespaceName = Help2RegistryWalker.GetFirstNamespace(defaultNamespaceName);
InitializeNamespace(defaultNamespaceName);
OnNamespaceReloaded(EventArgs.Empty); OnNamespaceReloaded(EventArgs.Empty);
} }
private static void InitializeNamespace(string namespaceName) private static void InitializeNamespace()
{ {
if (string.IsNullOrEmpty(namespaceName)) LoadHelp2Config();
if (string.IsNullOrEmpty(defaultNamespaceName))
{ {
return; return;
} }
@ -130,7 +140,7 @@ namespace HtmlHelp2.Environment
currentSelectedFilterName = string.Empty; currentSelectedFilterName = string.Empty;
session = new HxSession(); session = new HxSession();
session.Initialize(String.Format(null, "ms-help://{0}", namespaceName), 0); session.Initialize(String.Format(CultureInfo.InvariantCulture, "ms-help://{0}", defaultNamespaceName), 0);
namespaceFilters = session.GetFilterList(); namespaceFilters = session.GetFilterList();
ReloadDefaultPages(); ReloadDefaultPages();

Loading…
Cancel
Save