Browse Source

some changes/fixes, LoggingService used

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@479 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mathias Simmack 21 years ago
parent
commit
b67164978b
  1. 249
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/DynamicHelpPad.cs
  2. 66
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs
  3. 76
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs
  4. 3
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchResultsPad.cs
  5. 83
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs
  6. 34
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/Help2RegistryWalker.cs
  7. 13
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Options.cs
  8. 79
      src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Service.cs

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

@ -44,21 +44,17 @@ namespace HtmlHelp2
private int internalIndex = 0; private int internalIndex = 0;
private StringCollection dynamicHelpTerms = new StringCollection(); private StringCollection dynamicHelpTerms = new StringCollection();
private string debugPreElement = String.Empty; private string debugPreElement = String.Empty;
private bool enableDebugInfo = true; private bool enableDebugInfo = false;
public override Control Control public override Control Control
{ {
get { return dynamicHelpBrowser; } get { return dynamicHelpBrowser; }
} }
public override void Dispose() // public override void Dispose()
{ // {
try // dynamicHelpBrowser.Dispose();
{ // }
dynamicHelpBrowser.Dispose();
}
catch {}
}
public override void RedrawContent() public override void RedrawContent()
{ {
@ -78,64 +74,47 @@ namespace HtmlHelp2
private void BuildDynamicHelpList(string expectedLanguage) private void BuildDynamicHelpList(string expectedLanguage)
{ {
if(this.dynamicHelpTerms.Count == 0) return; if(this.dynamicHelpTerms.Count == 0) return;
this.RemoveAllChildren();
this.debugPreElement = String.Empty;
try Cursor.Current = Cursors.WaitCursor;
foreach(string currentHelpTerm in dynamicHelpTerms)
{ {
this.RemoveAllChildren(); this.CallDynamicHelp(currentHelpTerm, expectedLanguage, false);
this.debugPreElement = String.Empty;
bool result = false;
Cursor.Current = Cursors.WaitCursor;
foreach(string currentHelpTerm in dynamicHelpTerms)
{
if(currentHelpTerm.StartsWith("!") && !result)
{
result = this.CallDynamicHelp(currentHelpTerm.Substring(1), expectedLanguage, false);
}
else if(!currentHelpTerm.StartsWith("!"))
{
this.CallDynamicHelp(currentHelpTerm, expectedLanguage, false);
}
}
Cursor.Current = Cursors.Default;
if(this.enableDebugInfo) this.CreateDebugPre();
} }
catch {} Cursor.Current = Cursors.Default;
if(this.enableDebugInfo) this.CreateDebugPre();
} }
private bool CallDynamicHelp(string searchTerm, string expectedLanguage, bool keywordSearch) private bool CallDynamicHelp(string searchTerm, string expectedLanguage, bool keywordSearch)
{ {
if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy) return false; if(!HtmlHelp2Environment.IsReady || HtmlHelp2Environment.DynamicHelpIsBusy) return false;
bool result = false; bool result = false;
IHxTopicList topics = null;
try try
{ {
IHxTopicList topics = null;
if(keywordSearch) topics = HtmlHelp2Environment.GetMatchingTopicsForKeywordSearch(searchTerm); if(keywordSearch) topics = HtmlHelp2Environment.GetMatchingTopicsForKeywordSearch(searchTerm);
else topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm); else topics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchTerm);
result = (topics != null && topics.Count > 0);
this.debugPreElement += String.Format("{0} ({1}): {2} {3}<br>", this.debugPreElement += String.Format("{0} ({1}): {2} {3}<br>",
searchTerm, (keywordSearch)?"Kwd":"DH", searchTerm, (keywordSearch)?"Kwd":"DH",
topics.Count.ToString(), (topics.Count == 1)?"topic":"topics"); topics.Count.ToString(), (topics.Count == 1)?"topic":"topics");
}
catch {}
if(topics.Count > 0) if(result)
{
List<IHxTopic> newTopics = this.SortTopics(topics);
foreach(IHxTopic topic in newTopics)
{ {
result = true; this.BuildNewChild(topic.Location,
topic.get_Title(HxTopicGetTitleType.HxTopicGetTOCTitle,
List<IHxTopic> newTopics = this.SortTopics(topics); HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
// IHxTopic[] newTopics = this.SortTopics(topics); topic.URL);
foreach(IHxTopic topic in newTopics)
{
this.BuildNewChild(topic.Location,
topic.get_Title(HxTopicGetTitleType.HxTopicGetTOCTitle,
HxTopicGetTitleDefVal.HxTopicGetTitleFileName),
topic.URL);
}
} }
} }
catch {}
return result; return result;
} }
@ -158,24 +137,20 @@ namespace HtmlHelp2
{ {
if(elem.GetAttribute("className") == "section") if(elem.GetAttribute("className") == "section")
{ {
try HtmlElement sectionBlock = elem.FirstChild.NextSibling;
{ HtmlElement contentSpan = sectionBlock.NextSibling.NextSibling;
HtmlElement sectionBlock = elem.FirstChild.NextSibling;
HtmlElement contentSpan = sectionBlock.NextSibling.NextSibling;
if(sectionBlock.TagName == "B" && sectionBlock.InnerText == sectionName && if(sectionBlock.TagName == "B" && sectionBlock.InnerText == sectionName &&
contentSpan.TagName == "SPAN" && contentSpan.GetAttribute("className") == "content") contentSpan.TagName == "SPAN" && contentSpan.GetAttribute("className") == "content")
{
if(!this.DoesLinkExist(contentSpan, topicName, topicUrl))
{ {
if(!this.DoesLinkExist(contentSpan, topicName, topicUrl)) contentSpan.AppendChild(this.CreateNewLink(topicUrl, topicName));
{ contentSpan.AppendChild(this.CreateABreak());
contentSpan.AppendChild(this.CreateNewLink(topicUrl, topicName));
contentSpan.AppendChild(this.CreateABreak());
}
return;
} }
return;
} }
catch {}
} }
} }
@ -191,7 +166,10 @@ namespace HtmlHelp2
this.internalIndex++; this.internalIndex++;
} }
catch {} catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot build node for dynamic help; " + ex.ToString());
}
} }
private HtmlElement CreateNewSection(string sectionName, out HtmlElement linkNode) private HtmlElement CreateNewSection(string sectionName, out HtmlElement linkNode)
@ -310,7 +288,10 @@ namespace HtmlHelp2
objArray[0] = (object)sectionId; objArray[0] = (object)sectionId;
dynamicHelpBrowser.Document.InvokeScript("ExpandCollapse", objArray); dynamicHelpBrowser.Document.InvokeScript("ExpandCollapse", objArray);
} }
catch {} catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot run script; " + ex.ToString());
}
} }
private void OnLinkClick(object sender, HtmlElementEventArgs e) private void OnLinkClick(object sender, HtmlElementEventArgs e)
@ -326,43 +307,39 @@ namespace HtmlHelp2
#region Taken from DefinitionView.cs #region Taken from DefinitionView.cs
private void UpdateTick(object sender, ParserUpdateStepEventArgs e) private void UpdateTick(object sender, ParserUpdateStepEventArgs e)
{ {
try this.dynamicHelpTerms.Clear();
{
this.dynamicHelpTerms.Clear();
ResolveResult res = ResolveAtCaret(e); ResolveResult res = ResolveAtCaret(e);
if(res == null) return; if(res == null) return;
if(res != null && res.ResolvedType != null) if(res != null && res.ResolvedType != null)
{ {
this.AddToStringCollection(res.ResolvedType.FullyQualifiedName); this.AddToStringCollection(res.ResolvedType.FullyQualifiedName);
} }
MemberResolveResult member = res as MemberResolveResult; MemberResolveResult member = res as MemberResolveResult;
NamespaceResolveResult nspace = res as NamespaceResolveResult; NamespaceResolveResult nspace = res as NamespaceResolveResult;
MethodResolveResult method = res as MethodResolveResult; MethodResolveResult method = res as MethodResolveResult;
TypeResolveResult types = res as TypeResolveResult; TypeResolveResult types = res as TypeResolveResult;
if(member != null && member.ResolvedMember != null) if(member != null && member.ResolvedMember != null)
{ {
this.AddToStringCollection(0, member.ResolvedMember.FullyQualifiedName); this.AddToStringCollection(0, member.ResolvedMember.FullyQualifiedName);
}
if(nspace != null)
{
this.AddToStringCollection(0, nspace.Name);
}
if(method != null && method.ContainingType != null)
{
this.AddToStringCollection(0, method.ContainingType.FullyQualifiedName);
}
if(types != null && types.ResolvedClass != null)
{
this.AddToStringCollection(0, types.ResolvedClass.FullyQualifiedName);
}
WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList", "");
} }
catch {} if(nspace != null)
{
this.AddToStringCollection(0, nspace.Name);
}
if(method != null && method.ContainingType != null)
{
this.AddToStringCollection(0, method.ContainingType.FullyQualifiedName);
}
if(types != null && types.ResolvedClass != null)
{
this.AddToStringCollection(0, types.ResolvedClass.FullyQualifiedName);
}
WorkbenchSingleton.SafeThreadAsyncCall(this, "BuildDynamicHelpList", "");
} }
private ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e) private ResolveResult ResolveAtCaret(ParserUpdateStepEventArgs e)
@ -403,28 +380,19 @@ namespace HtmlHelp2
private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem) private void CallDynamicHelpForFormsDesigner(object selectedObject, GridItem selectedItem)
{ {
if(selectedObject == null) return; if(selectedObject == null) return;
this.dynamicHelpTerms.Clear();
try Type myObject = selectedObject.GetType();
if(selectedItem != null)
{ {
this.dynamicHelpTerms.Clear(); foreach(Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label))
Type myObject = selectedObject.GetType();
if(selectedItem != null)
{ {
foreach(Type type in TypeHandling.FindDeclaringType(myObject, selectedItem.Label)) this.AddToStringCollection(String.Format("{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
@ -435,8 +403,10 @@ namespace HtmlHelp2
try try
{ {
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak()); dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd,
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, this.CreateABreak()); this.CreateABreak());
dynamicHelpBrowser.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd,
this.CreateABreak());
HtmlElement pre = dynamicHelpBrowser.CreateHtmlElement("pre"); HtmlElement pre = dynamicHelpBrowser.CreateHtmlElement("pre");
pre.InnerHtml = "--- Dynamic Help Debug ---<br>" + this.debugPreElement; pre.InnerHtml = "--- Dynamic Help Debug ---<br>" + this.debugPreElement;
@ -484,7 +454,10 @@ namespace HtmlHelp2
result.Sort(topicComparer); result.Sort(topicComparer);
} }
} }
catch {} catch(Exception ex)
{
LoggingService.Error("Help 2.0: error while rebuild topics; " + ex.ToString());
}
return result; return result;
} }
@ -530,33 +503,18 @@ namespace HtmlHelp2
public void RemoveAllChildren() public void RemoveAllChildren()
{ {
try axWebBrowser.Document.Body.InnerHtml = "";
{
axWebBrowser.Document.Body.InnerHtml = "";
}
catch {}
} }
public HtmlElement CreateHtmlElement(string elementName) public HtmlElement CreateHtmlElement(string elementName)
{ {
try HtmlElement newElement = axWebBrowser.Document.CreateElement(elementName);
{ return newElement;
HtmlElement newElement = axWebBrowser.Document.CreateElement(elementName);
return newElement;
}
catch
{
return null;
}
} }
public void InsertHtmlElement(HtmlElementInsertionOrientation insertWhere, HtmlElement insertWhat) public void InsertHtmlElement(HtmlElementInsertionOrientation insertWhere, HtmlElement insertWhat)
{ {
try axWebBrowser.Document.Body.InsertAdjacentElement(insertWhere, insertWhat);
{
axWebBrowser.Document.Body.InsertAdjacentElement(insertWhere, insertWhat);
}
catch {}
} }
@ -580,14 +538,15 @@ namespace HtmlHelp2
Size = new Size(500, 500); Size = new Size(500, 500);
Controls.Add(axWebBrowser); Controls.Add(axWebBrowser);
axWebBrowser.Dock = DockStyle.Fill; axWebBrowser.Dock = DockStyle.Fill;
axWebBrowser.WebBrowserShortcutsEnabled = false; axWebBrowser.WebBrowserShortcutsEnabled = false;
axWebBrowser.IsWebBrowserContextMenuEnabled = false; axWebBrowser.IsWebBrowserContextMenuEnabled = false;
axWebBrowser.AllowWebBrowserDrop = false; axWebBrowser.AllowWebBrowserDrop = false;
Controls.Add(dynamicHelpToolbar); Controls.Add(dynamicHelpToolbar);
dynamicHelpToolbar.Dock = DockStyle.Top; dynamicHelpToolbar.Dock = DockStyle.Top;
dynamicHelpToolbar.AllowItemReorder = false; dynamicHelpToolbar.AllowItemReorder = false;
dynamicHelpToolbar.Enabled = HtmlHelp2Environment.IsReady;
for(int i = 0; i < toolbarButtons.Length; i++) for(int i = 0; i < toolbarButtons.Length; i++)
{ {
ToolStripButton button = new ToolStripButton(); ToolStripButton button = new ToolStripButton();
@ -612,15 +571,13 @@ namespace HtmlHelp2
private void LoadDynamicHelpPage() private void LoadDynamicHelpPage()
{ {
try if(!HtmlHelp2Environment.IsReady) return;
{
string url = String.Format("{0}\\context.html",
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
if(!File.Exists(url)) url = "about:blank"; string url = String.Format("{0}\\context.html",
axWebBrowser.Navigate(url); Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
}
catch {} if(!File.Exists(url)) url = "about:blank";
axWebBrowser.Navigate(url);
} }
private void ToolStripButtonClicked(object sender, EventArgs e) private void ToolStripButtonClicked(object sender, EventArgs e)

66
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/IndexPad.cs

@ -67,11 +67,7 @@ namespace HtmlHelp2
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if(disposing && indexControl != null) { indexControl.Dispose(); }
if(disposing && indexControl != null)
{
indexControl.Dispose();
}
} }
public void RedrawContent() public void RedrawContent()
@ -102,8 +98,9 @@ namespace HtmlHelp2
HtmlHelp2Environment.FilterQueryChanged += new EventHandler(FilterQueryChanged); HtmlHelp2Environment.FilterQueryChanged += new EventHandler(FilterQueryChanged);
HtmlHelp2Environment.NamespaceReloaded += new EventHandler(NamespaceReloaded); HtmlHelp2Environment.NamespaceReloaded += new EventHandler(NamespaceReloaded);
} }
catch catch(Exception ex)
{ {
LoggingService.Error("Help 2.0: Index control failed; " + ex.ToString());
this.FakeHelpControl(); this.FakeHelpControl();
} }
} }
@ -163,39 +160,30 @@ namespace HtmlHelp2
public void LoadIndex() public void LoadIndex()
{ {
try searchTerm.Text = "";
{ searchTerm.Items.Clear();
searchTerm.Text = ""; indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.CurrentFilterQuery);
searchTerm.Items.Clear(); filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.CurrentFilterQuery); filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
}
catch {}
} }
private void FilterChanged(object sender, EventArgs e) private void FilterChanged(object sender, EventArgs e)
{ {
string selectedString = filterCombobox.SelectedItem.ToString(); string selectedString = filterCombobox.SelectedItem.ToString();
if(selectedString != "") if(selectedString != "")
{ {
try Cursor.Current = Cursors.WaitCursor;
{ indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.FindFilterQuery(selectedString));
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.Default;
indexControl.IndexData = HtmlHelp2Environment.GetIndex(HtmlHelp2Environment.FindFilterQuery(selectedString));
Cursor.Current = Cursors.Default;
}
catch {}
} }
} }
#region Help 2.0 Environment Events #region Help 2.0 Environment Events
private void FilterQueryChanged(object sender, EventArgs e) private void FilterQueryChanged(object sender, EventArgs e)
{ {
indexControl.Refresh(); Application.DoEvents();
string currentFilterName = filterCombobox.SelectedItem.ToString(); string currentFilterName = filterCombobox.SelectedItem.ToString();
if(String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0) if(String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
@ -255,7 +243,8 @@ namespace HtmlHelp2
if(indexResults == null) if(indexResults == null)
return; return;
try { try
{
IHxTopicList matchingTopics = indexControl.IndexData.GetTopicsFromSlot(indexSlot); IHxTopicList matchingTopics = indexControl.IndexData.GetTopicsFromSlot(indexSlot);
try try
@ -263,18 +252,14 @@ namespace HtmlHelp2
((HtmlHelp2IndexResultsPad)indexResults.PadContent).CleanUp(); ((HtmlHelp2IndexResultsPad)indexResults.PadContent).CleanUp();
((HtmlHelp2IndexResultsPad)indexResults.PadContent).IndexResultsListView.BeginUpdate(); ((HtmlHelp2IndexResultsPad)indexResults.PadContent).IndexResultsListView.BeginUpdate();
for(int i = 1; i <= matchingTopics.Count; i++) foreach(IHxTopic topic in matchingTopics)
{ {
IHxTopic topic = matchingTopics.ItemAt(i); ListViewItem lvi = new ListViewItem();
lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,
if(topic != null) { HxTopicGetTitleDefVal.HxTopicGetTitleFileName);
ListViewItem lvi = new ListViewItem(); lvi.Tag = topic;
lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,HxTopicGetTitleDefVal.HxTopicGetTitleFileName); lvi.SubItems.Add(topic.Location);
lvi.SubItems.Add(topic.Location); ((HtmlHelp2IndexResultsPad)indexResults.PadContent).IndexResultsListView.Items.Add(lvi);
lvi.Tag = topic;
((HtmlHelp2IndexResultsPad)indexResults.PadContent).IndexResultsListView.Items.Add(lvi);
}
} }
} }
finally finally
@ -297,7 +282,10 @@ namespace HtmlHelp2
break; break;
} }
} }
catch {} catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot get matching index entries; " + ex.ToString());
}
} }
} }
} }

76
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs

@ -170,11 +170,7 @@ namespace HtmlHelp2
object selectedItem = filterCombobox.SelectedItem; object selectedItem = filterCombobox.SelectedItem;
if(selectedItem != null) if(selectedItem != null)
{ {
try selectedQuery = HtmlHelp2Environment.FindFilterQuery(selectedItem.ToString());
{
selectedQuery = HtmlHelp2Environment.FindFilterQuery(selectedItem.ToString());
}
catch {}
} }
} }
@ -195,16 +191,11 @@ namespace HtmlHelp2
private void NamespaceReloaded(object sender, EventArgs e) private void NamespaceReloaded(object sender, EventArgs e)
{ {
try searchTerm.Text = "";
{ searchTerm.Items.Clear();
searchTerm.Text = ""; filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
searchTerm.Items.Clear(); HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
filterCombobox.SelectedIndexChanged -= new EventHandler(FilterChanged);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(FilterChanged);
}
catch {}
} }
#endregion #endregion
@ -272,20 +263,13 @@ namespace HtmlHelp2
{{"0", searchWord}}); {{"0", searchWord}});
searchDialog.Show(); searchDialog.Show();
Application.DoEvents(); Application.DoEvents();
Cursor.Current = Cursors.WaitCursor;
Cursor.Current = Cursors.WaitCursor;
if(useDynamicHelp) if(useDynamicHelp)
{
matchingTopics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchWord); matchingTopics = HtmlHelp2Environment.GetMatchingTopicsForDynamicHelp(searchWord);
}
else else
{
matchingTopics = HtmlHelp2Environment.FTS.Query(searchWord, searchFlags); matchingTopics = HtmlHelp2Environment.FTS.Query(searchWord, searchFlags);
}
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
searchDialog.Dispose(); searchDialog.Dispose();
try try
@ -293,23 +277,34 @@ namespace HtmlHelp2
searchResults.CleanUp(); searchResults.CleanUp();
searchResults.SearchResultsListView.BeginUpdate(); searchResults.SearchResultsListView.BeginUpdate();
for(int i = 1; i <= matchingTopics.Count; i++) foreach(IHxTopic topic in matchingTopics)
{ {
IHxTopic topic = matchingTopics.ItemAt(i); ListViewItem lvi = new ListViewItem();
lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle,
if(topic != null) HxTopicGetTitleDefVal.HxTopicGetTitleFileName);
{ lvi.Tag = topic;
ListViewItem lvi = new ListViewItem(); lvi.SubItems.Add(topic.Location);
lvi.Text = topic.get_Title(HxTopicGetTitleType.HxTopicGetRLTitle, lvi.SubItems.Add(topic.Rank.ToString());
HxTopicGetTitleDefVal.HxTopicGetTitleFileName); searchResults.SearchResultsListView.Items.Add(lvi);
lvi.SubItems.Add(topic.Location);
lvi.SubItems.Add(topic.Rank.ToString());
lvi.Tag = topic;
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; reuseMatches.Enabled = true;
} }
finally finally
@ -320,7 +315,10 @@ namespace HtmlHelp2
searchIsBusy = false; searchIsBusy = false;
} }
} }
catch {} catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot get matching search word; " + ex.ToString());
}
} }
public bool PerformF1FTS(string keyword) public bool PerformF1FTS(string keyword)

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

@ -30,8 +30,7 @@ namespace HtmlHelp2
{ {
get get
{ {
if (instance == null) if (instance == null) instance = new HtmlHelp2SearchResultsView();
instance = new HtmlHelp2SearchResultsView();
return instance; return instance;
} }
} }

83
src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/TocPad.cs

@ -44,11 +44,7 @@ namespace HtmlHelp2
public override void Dispose() public override void Dispose()
{ {
try help2TocControl.Dispose();
{
help2TocControl.Dispose();
}
catch {}
} }
public override void RedrawContent() public override void RedrawContent()
@ -64,29 +60,17 @@ namespace HtmlHelp2
public void SyncToc(string topicUrl) public void SyncToc(string topicUrl)
{ {
try help2TocControl.SynToc(topicUrl);
{
help2TocControl.SynToc(topicUrl);
}
catch {}
} }
public void GetPrevFromNode() public void GetPrevFromNode()
{ {
try help2TocControl.GetPrevFromNode();
{
help2TocControl.GetPrevFromNode();
}
catch {}
} }
public void GetNextFromNode() public void GetNextFromNode()
{ {
try help2TocControl.GetNextFromNode();
{
help2TocControl.GetNextFromNode();
}
catch {}
} }
public bool IsNotFirstNode public bool IsNotFirstNode
@ -112,11 +96,7 @@ namespace HtmlHelp2
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)
{ {
base.Dispose(disposing); base.Dispose(disposing);
if(disposing && tocControl != null) { tocControl.Dispose(); }
if(disposing && tocControl != null)
{
tocControl.Dispose();
}
} }
public void RedrawContent() public void RedrawContent()
@ -155,8 +135,9 @@ namespace HtmlHelp2
printPopup.Items.Add(printChildTopics); printPopup.Items.Add(printChildTopics);
printChildTopics.Click += new EventHandler(this.PrintTopicAndSubtopics); printChildTopics.Click += new EventHandler(this.PrintTopicAndSubtopics);
} }
catch catch(Exception ex)
{ {
LoggingService.Error("Help 2.0: TOC control failed; " + ex.ToString());
this.FakeHelpControl(); this.FakeHelpControl();
} }
} }
@ -203,14 +184,10 @@ namespace HtmlHelp2
public void LoadToc() public void LoadToc()
{ {
try tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.CurrentFilterQuery);
{ filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged);
tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.CurrentFilterQuery); HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged -= new EventHandler(this.FilterChanged); filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
HtmlHelp2Environment.BuildFilterList(filterCombobox);
filterCombobox.SelectedIndexChanged += new EventHandler(this.FilterChanged);
}
catch {}
} }
private void FilterChanged(object sender, EventArgs e) private void FilterChanged(object sender, EventArgs e)
@ -219,20 +196,16 @@ namespace HtmlHelp2
if(selectedString != null && selectedString != "") if(selectedString != null && selectedString != "")
{ {
try Cursor.Current = Cursors.WaitCursor;
{ tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.FindFilterQuery(selectedString));
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.Default;
tocControl.Hierarchy = HtmlHelp2Environment.GetTocHierarchy(HtmlHelp2Environment.FindFilterQuery(selectedString));
Cursor.Current = Cursors.Default;
}
catch {}
} }
} }
#region Help 2.0 Environment Events #region Help 2.0 Environment Events
private void FilterQueryChanged(object sender, EventArgs e) private void FilterQueryChanged(object sender, EventArgs e)
{ {
tocControl.Refresh(); Application.DoEvents();
string currentFilterName = filterCombobox.SelectedItem.ToString(); string currentFilterName = filterCombobox.SelectedItem.ToString();
if(String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0) if(String.Compare(currentFilterName, HtmlHelp2Environment.CurrentFilterName) != 0)
@ -306,33 +279,21 @@ namespace HtmlHelp2
#region published Help2 TOC Commands #region published Help2 TOC Commands
public void SynToc(string topicUrl) public void SynToc(string topicUrl)
{ {
try tocControl.Synchronize(topicUrl);
{
tocControl.Synchronize(topicUrl);
}
catch {}
} }
public void GetNextFromNode() public void GetNextFromNode()
{ {
try int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection);
{ string TopicUrl = tocControl.Hierarchy.GetURL(currentNode);
int currentNode = tocControl.Hierarchy.GetNextFromNode(tocControl.Selection); this.CallHelp(TopicUrl,true);
string TopicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(TopicUrl,true);
}
catch {}
} }
public void GetPrevFromNode() public void GetPrevFromNode()
{ {
try int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection);
{ string TopicUrl = tocControl.Hierarchy.GetURL(currentNode);
int currentNode = tocControl.Hierarchy.GetPrevFromNode(tocControl.Selection); this.CallHelp(TopicUrl,true);
string TopicUrl = tocControl.Hierarchy.GetURL(currentNode);
this.CallHelp(TopicUrl,true);
}
catch {}
} }
public bool IsNotFirstNode public bool IsNotFirstNode

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

@ -10,39 +10,43 @@ namespace HtmlHelp2.RegistryWalker
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
using ICSharpCode.Core;
using MSHelpServices; using MSHelpServices;
public sealed class Help2RegistryWalker public sealed class Help2RegistryWalker
{ {
public static void BuildNamespacesList(ComboBox help2Collections, string selectedHelp2Collection) public static void BuildNamespacesList(ComboBox help2Collections, string selectedHelp2Collection)
{ {
if(help2Collections == null) if(help2Collections == null) return;
return;
help2Collections.Items.Clear(); help2Collections.Items.Clear();
help2Collections.BeginUpdate(); help2Collections.BeginUpdate();
try try
{ {
string currentDescription = ""; string currentDescription = "";
HxRegistryWalker regWalker = new HxRegistryWalker();
HxRegistryWalker regWalker = new HxRegistryWalker();
IHxRegNamespaceList namespaces = regWalker.get_RegisteredNamespaceList(""); IHxRegNamespaceList namespaces = regWalker.get_RegisteredNamespaceList("");
foreach(IHxRegNamespace currentNamespace in namespaces) foreach(IHxRegNamespace currentNamespace in namespaces)
{ {
help2Collections.Items.Add((string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription)); help2Collections.Items.Add((string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription));
if(selectedHelp2Collection != "" && String.Compare(selectedHelp2Collection, currentNamespace.Name) == 0) if(selectedHelp2Collection != "" &&
String.Compare(selectedHelp2Collection, currentNamespace.Name) == 0)
{ {
currentDescription = (string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription); currentDescription = (string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription);
} }
} }
if(currentDescription != "") help2Collections.SelectedIndex = help2Collections.Items.IndexOf(currentDescription); if(currentDescription != "")
else help2Collections.SelectedIndex = 0; help2Collections.SelectedIndex = help2Collections.Items.IndexOf(currentDescription);
else
help2Collections.SelectedIndex = 0;
}
catch
{
LoggingService.Error("Help 2.0: cannot build namespaces list for Options dialog");
} }
catch {}
help2Collections.EndUpdate(); help2Collections.EndUpdate();
} }
@ -51,23 +55,23 @@ namespace HtmlHelp2.RegistryWalker
{ {
try try
{ {
HxRegistryWalker regWalker = new HxRegistryWalker(); HxRegistryWalker regWalker = new HxRegistryWalker();
IHxRegNamespaceList namespaces = regWalker.get_RegisteredNamespaceList(""); IHxRegNamespaceList namespaces = regWalker.get_RegisteredNamespaceList("");
foreach(IHxRegNamespace currentNamespace in namespaces) foreach(IHxRegNamespace currentNamespace in namespaces)
{ {
if(String.Compare(namespaceDescription, (string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription)) == 0) string currentNamespaceName = (string)currentNamespace.GetProperty(HxRegNamespacePropId.HxRegNamespaceDescription);
if(String.Compare(namespaceDescription, currentNamespaceName) == 0)
{ {
return currentNamespace.Name; return currentNamespace.Name;
} }
} }
return "";
} }
catch catch
{ {
return ""; LoggingService.Error("Help 2.0: cannot find selected namespace name");
} }
return "";
} }
public static string GetFirstNamespace(string namespaceName) public static string GetFirstNamespace(string namespaceName)

13
src/AddIns/Misc/HtmlHelp2/Project/src/Service/HtmlHelp2Options.cs

@ -63,11 +63,7 @@ namespace HtmlHelp2.OptionsPanel
{ {
if(help2Collections.SelectedItem != null) if(help2Collections.SelectedItem != null)
{ {
try selectedHelp2Collection = Help2RegistryWalker.GetNamespaceName(help2Collections.SelectedItem.ToString());
{
selectedHelp2Collection = Help2RegistryWalker.GetNamespaceName(help2Collections.SelectedItem.ToString());
}
catch {}
} }
} }
@ -84,8 +80,13 @@ namespace HtmlHelp2.OptionsPanel
xmldoc.DocumentElement.AppendChild(node); xmldoc.DocumentElement.AppendChild(node);
xmldoc.Save(PropertyService.ConfigDirectory + help2EnvironmentFile); xmldoc.Save(PropertyService.ConfigDirectory + help2EnvironmentFile);
LoggingService.Info("Help 2.0: new configuration saved");
}
catch
{
LoggingService.Error("Help 2.0: error while trying to save configuration");
} }
catch {}
} }
#region ReRegister #region ReRegister

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

@ -92,8 +92,14 @@ namespace HtmlHelp2.Environment
XmlNode node = xmldoc.SelectSingleNode("/help2environment/collection"); XmlNode node = xmldoc.SelectSingleNode("/help2environment/collection");
if(node != null) DefaultNamespaceName = node.InnerText; if(node != null) DefaultNamespaceName = node.InnerText;
LoggingService.Info(String.Format("Help 2.0: using \"{0}\" as default namespace",
DefaultNamespaceName));
}
catch
{
LoggingService.Info("Help 2.0: using default configuration");
} }
catch {}
} }
public static void ReloadNamespace() public static void ReloadNamespace()
@ -131,35 +137,24 @@ namespace HtmlHelp2.Environment
ReloadDynamicHelpSystem(); ReloadDynamicHelpSystem();
initDialog.Dispose(); initDialog.Dispose();
LoggingService.Info("Help 2.0: service sucessfully loaded");
} }
catch catch(Exception ex)
{ {
LoggingService.Error("Help 2.0: not initialize service; " + ex.ToString());
session = null; session = null;
} }
} }
private static void ReloadFTSSystem() private static void ReloadFTSSystem()
{ {
try fulltextSearch = (IHxQuery)session.GetNavigationInterface("!DefaultFullTextSearch", currentSelectedFilterQuery, ref QueryGuid);
{
fulltextSearch = (IHxQuery)session.GetNavigationInterface("!DefaultFullTextSearch", currentSelectedFilterQuery, ref QueryGuid);
}
catch
{
fulltextSearch = null;
}
} }
private static void ReloadDynamicHelpSystem() private static void ReloadDynamicHelpSystem()
{ {
try dynamicHelp = (IHxIndex)session.GetNavigationInterface("!DefaultContextWindowIndex", currentSelectedFilterQuery, ref IndexGuid);
{
dynamicHelp = (IHxIndex)session.GetNavigationInterface("!DefaultContextWindowIndex", currentSelectedFilterQuery, ref IndexGuid);
}
catch
{
dynamicHelp = null;
}
} }
private static void ReloadDefaultPages() private static void ReloadDefaultPages()
@ -174,7 +169,9 @@ namespace HtmlHelp2.Environment
try try
{ {
IHxIndex namedUrlIndex = (IHxIndex)session.GetNavigationInterface("!DefaultNamedUrlIndex", "", ref IndexGuid); IHxIndex namedUrlIndex = (IHxIndex)session.GetNavigationInterface("!DefaultNamedUrlIndex",
"",
ref IndexGuid);
IHxTopicList topics = null; IHxTopicList topics = null;
topics = namedUrlIndex.GetTopicsFromString(pageName, 0); topics = namedUrlIndex.GetTopicsFromString(pageName, 0);
@ -207,6 +204,7 @@ namespace HtmlHelp2.Environment
} }
catch catch
{ {
LoggingService.Error("Help 2.0: cannot connect to IHxHierarchy interface (TOC)");
return null; return null;
} }
} }
@ -220,6 +218,7 @@ namespace HtmlHelp2.Environment
} }
catch catch
{ {
LoggingService.Error("Help 2.0: cannot connect to IHxIndex interface (Index)");
return null; return null;
} }
} }
@ -231,25 +230,23 @@ namespace HtmlHelp2.Environment
try try
{ {
for(int i = 1; i <= namespaceFilters.Count; i++) foreach(IHxRegFilter filter in namespaceFilters)
{ {
IHxRegFilter filter = namespaceFilters.ItemAt(i); string filterName = (string)filter.GetProperty(HxRegFilterPropId.HxRegFilterName);
string filterName = (string)filter.GetProperty(HxRegFilterPropId.HxRegFilterName);
filterCombobox.Items.Add(filterName); filterCombobox.Items.Add(filterName);
if(currentSelectedFilterName == "") currentSelectedFilterName = filterName;
if(currentSelectedFilterName == "" && i == 1)
{
currentSelectedFilterName = filterName;
}
} }
if(namespaceFilters.Count == 0) if(namespaceFilters.Count == 0)
filterCombobox.Items.Add(StringParser.Parse("${res:AddIns.HtmlHelp2.DefaultEmptyFilter}")); filterCombobox.Items.Add(StringParser.Parse("${res:AddIns.HtmlHelp2.DefaultEmptyFilter}"));
if(currentSelectedFilterName == "") filterCombobox.SelectedIndex = 0; if(currentSelectedFilterName == "") filterCombobox.SelectedIndex = 0;
else filterCombobox.SelectedIndex = filterCombobox.Items.IndexOf(currentSelectedFilterName); else filterCombobox.SelectedIndex = filterCombobox.Items.IndexOf(currentSelectedFilterName);
}
catch(Exception ex)
{
LoggingService.Error("Help 2.0: cannot build filters; " + ex.ToString());
} }
catch {}
filterCombobox.EndUpdate(); filterCombobox.EndUpdate();
} }
@ -281,33 +278,37 @@ namespace HtmlHelp2.Environment
public static IHxTopicList GetMatchingTopicsForDynamicHelp(string searchTerm) public static IHxTopicList GetMatchingTopicsForDynamicHelp(string searchTerm)
{ {
if(dynamicHelpIsBusy) return null; if(dynamicHelpIsBusy) return null;
IHxTopicList topics = null;
dynamicHelpIsBusy = true;
try try
{ {
dynamicHelpIsBusy = true; topics = ((IHxIndex)dynamicHelp).GetTopicsFromString(searchTerm, 0);
IHxTopicList topics = ((IHxIndex)dynamicHelp).GetTopicsFromString(searchTerm, 0);
return topics;
} }
finally catch
{ {
dynamicHelpIsBusy = false; LoggingService.Error("Help 2.0: Dynamic Help search failed");
} }
dynamicHelpIsBusy = false;
return topics;
} }
public static IHxTopicList GetMatchingTopicsForKeywordSearch(string searchTerm) public static IHxTopicList GetMatchingTopicsForKeywordSearch(string searchTerm)
{ {
if(dynamicHelpIsBusy) return null; if(dynamicHelpIsBusy) return null;
IHxTopicList topics = null;
dynamicHelpIsBusy = true;
try try
{ {
dynamicHelpIsBusy = true; topics = GetIndex(currentSelectedFilterQuery).GetTopicsFromString(searchTerm, 0);
IHxTopicList topics = GetIndex(currentSelectedFilterQuery).GetTopicsFromString(searchTerm, 0);
return topics;
} }
finally catch
{ {
dynamicHelpIsBusy = false; LoggingService.Error("Help 2.0: Keyword search failed");
} }
dynamicHelpIsBusy = false;
return topics;
} }
#endregion #endregion

Loading…
Cancel
Save