Browse Source

Update default layouts. Fixed help document highlighting.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@325 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
34dfa86a93
  1. 7
      AddIns/ICSharpCode.SharpDevelop.addin
  2. BIN
      data/resources/layouts/Debug.xml
  3. BIN
      data/resources/layouts/Default.xml
  4. BIN
      data/resources/layouts/Plain.xml
  5. 9
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin
  6. 1
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj
  7. 14
      src/AddIns/Misc/HtmlHelp2/Project/src/BaseControls/SearchPad.cs
  8. 9
      src/AddIns/Misc/HtmlHelp2/Project/src/BrowserControl/ShowHelpBrowser.cs
  9. 33
      src/AddIns/Misc/HtmlHelp2/Project/src/BrowserScheme.cs
  10. 11
      src/AddIns/Misc/StartPage/Project/Src/StartPage.cs
  11. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  12. 17
      src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/HtmlViewPane.cs
  13. 18
      src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
  14. 333
      src/Main/Base/Project/Src/Gui/Pads/HelpBrowser/HelpBrowser.cs

7
AddIns/ICSharpCode.SharpDevelop.addin

@ -83,13 +83,6 @@ @@ -83,13 +83,6 @@
shortcut = "Control|Alt|F"
class = "ICSharpCode.SharpDevelop.Gui.FileScout"/>
<Pad id = "HelpBrowser"
category = "Tools"
title = "${res:MainWindow.Windows.HelpScoutLabel}"
icon = "Icons.16x16.HelpIcon"
shortcut = "Control|Alt|H"
class = "ICSharpCode.SharpDevelop.Gui.HelpBrowser"/>
<Pad id = "SearchResults"
category = "Tools"
title = "${res:MainWindow.Windows.SearchResultsLabel}"

BIN
data/resources/layouts/Debug.xml

Binary file not shown.

BIN
data/resources/layouts/Default.xml

Binary file not shown.

BIN
data/resources/layouts/Plain.xml

Binary file not shown.

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

@ -9,6 +9,11 @@ @@ -9,6 +9,11 @@
<Import assembly="HtmlHelp2.dll"/>
</Runtime>
<Path name = "/SharpDevelop/Views/Browser/SchemeExtensions">
<BrowserSchemeExtension id = "ms-help"
class = "HtmlHelp2.BrowserScheme"/>
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id = "TocPad"
category = "Help2"
@ -25,11 +30,11 @@ @@ -25,11 +30,11 @@
title = "${res:AddIns.HtmlHelp2.Search}"
icon = "HtmlHelp2.16x16.Search"
class = "HtmlHelp2.HtmlHelp2SearchPad"/>
<Pad id = "FavoritesPad"
<!--<Pad id = "FavoritesPad"
category = "Help2"
title = "${res:AddIns.HtmlHelp2.Favorites}"
icon = "HtmlHelp2.16x16.Favorites"
class = "HtmlHelp2.HtmlHelp2FavoritesPad"/>
class = "HtmlHelp2.HtmlHelp2FavoritesPad"/>-->
<Pad id = "IndexResultsPad"
category = "Help2"
title = "${res:AddIns.HtmlHelp2.IndexResults}"

1
src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj

@ -62,6 +62,7 @@ @@ -62,6 +62,7 @@
<EmbeddedResource Include="Resources\HtmlHelp2.16x16.TextZoom.png" />
<EmbeddedResource Include="Resources\HtmlHelp2.16x16.AddToFavorites.png" />
<Compile Include="src\BrowserControl\HelpBrowserCommands.cs" />
<Compile Include="src\BrowserScheme.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">

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

@ -23,7 +23,10 @@ namespace HtmlHelp2 @@ -23,7 +23,10 @@ namespace HtmlHelp2
public override void Run()
{
PadDescriptor search = WorkbenchSingleton.Workbench.GetPad(typeof(HtmlHelp2SearchPad));
if(search != null) search.BringPadToFront();
if (search != null) {
search.BringPadToFront();
((HtmlHelp2SearchPad)search.PadContent).FocusSearchTextBox();
}
}
}
@ -50,6 +53,11 @@ namespace HtmlHelp2 @@ -50,6 +53,11 @@ namespace HtmlHelp2
}
}
public void FocusSearchTextBox()
{
searchTerm.Focus();
}
public override void RedrawContent()
{
searchButton.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.Search}");
@ -112,7 +120,8 @@ namespace HtmlHelp2 @@ -112,7 +120,8 @@ namespace HtmlHelp2
hiliteTopics.Top = reuseMatches.Top + reuseMatches.Height - 4;
hiliteTopics.Text = StringParser.Parse("${res:AddIns.HtmlHelp2.HighlightMatches}");
hiliteTopics.TextAlign = ContentAlignment.MiddleLeft;
hiliteTopics.Enabled = true;
hiliteTopics.Enabled = HtmlHelp2Environment.IsReady;
hiliteTopics.Checked = true;
panel3.Dock = DockStyle.Fill;
@ -216,6 +225,7 @@ namespace HtmlHelp2 @@ -216,6 +225,7 @@ namespace HtmlHelp2
private void KeyPressed(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == (char)13 && searchTerm.Text != null) {
e.Handled = true;
this.AddTermToList(searchTerm.Text);
this.PerformFTS(searchTerm.Text);
}

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

@ -70,15 +70,10 @@ namespace HtmlHelp2 @@ -70,15 +70,10 @@ namespace HtmlHelp2
return tempPane;
}
public static void HighlightDocument()
public static void HighlightDocument(HtmlViewPane htmlViewPane)
{
// FIXME: HighlightDocument is called nowhere
if (hiliteMatches && lastTopic != null) {
IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
if(window != null && window.ActiveViewContent is BrowserPane) {
BrowserPane help2Browser = (BrowserPane)window.ActiveViewContent;
lastTopic.HighlightDocument(help2Browser.HtmlViewPane.WebBrowser.Document.DomDocument);
}
lastTopic.HighlightDocument(htmlViewPane.WebBrowser.Document.DomDocument);
}
}
}

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

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 06.08.2005
* Time: 16:13
*/
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.BrowserDisplayBinding;
namespace HtmlHelp2
{
public class BrowserScheme : DefaultSchemeExtension
{
public override void GoHome(HtmlViewPane pane)
{
pane.Navigate(HtmlHelp2Service.HtmlHelp2Environment.DefaultPage);
}
public override void GoSearch(HtmlViewPane pane)
{
new ShowSearchMenuCommand().Run();
}
public override void DocumentCompleted(HtmlViewPane pane, WebBrowserDocumentCompletedEventArgs e)
{
ShowHelpBrowser.HighlightDocument(pane);
}
}
}

11
src/AddIns/Misc/StartPage/Project/Src/StartPage.cs

@ -13,11 +13,11 @@ using ICSharpCode.SharpDevelop.Project; @@ -13,11 +13,11 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.StartPage
{
public class StartPageScheme : ISchemeExtension
public class StartPageScheme : DefaultSchemeExtension
{
ICSharpCodePage page;
public void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e)
public override void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e)
{
e.Cancel = true;
if (page == null) {
@ -37,14 +37,9 @@ namespace ICSharpCode.StartPage @@ -37,14 +37,9 @@ namespace ICSharpCode.StartPage
}
}
public void GoHome(HtmlViewPane pane)
public override void GoHome(HtmlViewPane pane)
{
pane.Navigate("startpage://start/");
}
public void GoSearch(HtmlViewPane pane)
{
pane.Navigate(HtmlViewPane.DefaultSearchUrl);
}
}
}

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -273,7 +273,6 @@ @@ -273,7 +273,6 @@
<Compile Include="Src\Gui\Pads\PropertyPad\PropertyPad.cs" />
<Compile Include="Src\Gui\Pads\SideBarView.cs" />
<Compile Include="Src\Gui\Pads\TreeViewMemento.cs" />
<Compile Include="Src\Gui\Pads\HelpBrowser\HelpBrowser.cs" />
<Compile Include="Src\Gui\Workbench\DefaultWorkbench.cs">
<SubType>Form</SubType>
</Compile>

17
src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/HtmlViewPane.cs

@ -149,6 +149,7 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding @@ -149,6 +149,7 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
webBrowser.NewWindowExtended += NewWindow;
webBrowser.Navigated += WebBrowserNavigated;
webBrowser.StatusTextChanged += WebBrowserStatusTextChanged;
webBrowser.DocumentCompleted += WebBrowserDocumentCompleted;
Controls.Add(webBrowser);
if (showNavigation) {
@ -208,9 +209,21 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding @@ -208,9 +209,21 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
}
}
public void Navigate(string name)
void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser.Navigate(new Uri(name));
try {
ISchemeExtension extension = GetScheme(e.Url.Scheme);
if (extension != null) {
extension.DocumentCompleted(this, e);
}
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}
public void Navigate(string url)
{
webBrowser.Navigate(new Uri(url));
}
public void Navigate(Uri url)

18
src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs

@ -16,10 +16,28 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding @@ -16,10 +16,28 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
public interface ISchemeExtension
{
void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e);
void DocumentCompleted(HtmlViewPane pane, WebBrowserDocumentCompletedEventArgs e);
void GoHome(HtmlViewPane pane);
void GoSearch(HtmlViewPane pane);
}
public class DefaultSchemeExtension : ISchemeExtension
{
public virtual void InterceptNavigate(HtmlViewPane pane, WebBrowserNavigatingEventArgs e) {}
public virtual void DocumentCompleted(HtmlViewPane pane, WebBrowserDocumentCompletedEventArgs e) {}
public virtual void GoHome(HtmlViewPane pane)
{
pane.Navigate(HtmlViewPane.DefaultHomepage);
}
public virtual void GoSearch(HtmlViewPane pane)
{
pane.Navigate(HtmlViewPane.DefaultSearchUrl);
}
}
public class SchemeExtensionDescriptor
{
string schemeName;

333
src/Main/Base/Project/Src/Gui/Pads/HelpBrowser/HelpBrowser.cs

@ -1,333 +0,0 @@ @@ -1,333 +0,0 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision$</version>
// </file>
using Microsoft.Win32;
using System;
using System.Windows.Forms;
using System.Drawing;
using System.CodeDom.Compiler;
using System.IO;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.Xml;
using System.Reflection;
using ICSharpCode.Core;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpDevelop.BrowserDisplayBinding;
namespace ICSharpCode.SharpDevelop.Gui
{
public class HelpBrowserWindow : BrowserPane
{
public HelpBrowserWindow() : base(true)
{
TitleName = "Help";
}
}
class HelpLinkInformation
{
string link;
bool isMSDN = false;
public string Link {
get {
return link;
}
set {
link = value;
}
}
public bool IsMSDN {
get {
return isMSDN;
}
set {
isMSDN = value;
}
}
public HelpLinkInformation(string link, bool isMSDN)
{
this.link = link;
this.isMSDN = isMSDN;
}
}
public class HelpBrowser : AbstractPadContent
{
static readonly string helpPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) +
Path.DirectorySeparatorChar + ".." +
Path.DirectorySeparatorChar + "doc" +
Path.DirectorySeparatorChar + "help" +
Path.DirectorySeparatorChar;
static readonly string helpFileName = helpPath + "SharpDevelopHelp.zip";
static readonly string mainTOCFile = "HelpConv.xml";
string HelpPrefix = "ms-help://MS.NETFrameworkSDK";
Panel browserPanel = new Panel();
TreeView treeView = new TreeView();
HelpBrowserWindow helpBrowserWindow = null;
public override Control Control {
get {
return browserPanel;
}
}
public HelpBrowser()
{
treeView.Dock = DockStyle.Fill;
treeView.ImageList = new ImageList();
treeView.ImageList.ColorDepth = ColorDepth.Depth32Bit;
treeView.ImageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.HelpClosedFolder"));
treeView.ImageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.HelpOpenFolder"));
treeView.ImageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.HelpTopic"));
treeView.BeforeExpand += new TreeViewCancelEventHandler(BeforeExpand);
treeView.BeforeCollapse += new TreeViewCancelEventHandler(BeforeCollapse);
treeView.AfterSelect += new TreeViewEventHandler(SelectNode);
browserPanel.Controls.Add(treeView);
if (File.Exists(helpFileName))
{
LoadHelpfile();
ScanForLocalizedHelpPrefix();
}
}
void ScanForLocalizedHelpPrefix()
{
string localHelp = String.Concat("0x", Thread.CurrentThread.CurrentCulture.LCID.ToString("X4"));
RegistryKey helpKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\MSDN\7.0\Help");
if (helpKey == null) {
return;
}
RegistryKey k = helpKey.OpenSubKey(localHelp);
bool found = false;
if (k != null) {
string v = ScanSubKeys(k);
if (v != null) {
HelpPrefix = v;
found = true;
}
}
if (!found) {
// use default english subkey
k = helpKey.OpenSubKey("0x0409");
string v = k != null ? ScanSubKeys(k) : null;
if (v != null) {
HelpPrefix = v;
} else {
string[] subKeys = helpKey.GetSubKeyNames();
foreach (string subKey in subKeys) {
if (subKey.StartsWith("0x")) {
HelpPrefix = ScanSubKeys(helpKey.OpenSubKey(subKey));
break;
}
}
}
}
}
string ScanSubKeys(RegistryKey key)
{
if (key != null) {
string[] subKeys = key.GetSubKeyNames();
if (subKeys != null) {
foreach (string subKey in subKeys) {
RegistryKey sub = key.OpenSubKey(subKey);
if (sub == null) {
continue;
}
object o = sub.GetValue(null);
if (o == null) {
continue;
}
if (o.ToString().StartsWith("Microsoft .NET Framework SDK")) {
return sub.GetValue("Filename").ToString();
}
}
}
}
return null;
}
protected string GetHelpString(string word)
{
int i = 0;
while ((i = word.IndexOf('.')) != -1) {
word = word.Remove(i,1);
}
return word;
}
public void ShowHelpFromType(string type)
{
string url = String.Format("{0}/cpref/html/frlrf{1}ClassTopic.htm",
HelpPrefix,
GetHelpString(type));
ShowHelpBrowser(url);
}
public void ShowHelpFromType(string type, string member)
{
string url = String.Format("{0}/cpref/html/frlrf{1}Class{2}Topic.htm",
HelpPrefix,
GetHelpString(type),
member);
ShowHelpBrowser(url);
}
/// <remarks>
/// Parses the xml tree and generates a TreeNode tree out of it.
/// </remarks>
void ParseTree(TreeNodeCollection nodeCollection, XmlNode parentNode)
{
foreach (XmlNode node in parentNode.ChildNodes) {
switch (node.Name) {
case "HelpFolder":
TreeNode newFolderNode = new TreeNode(node.Attributes["name"].InnerText);
newFolderNode.ImageIndex = newFolderNode.SelectedImageIndex = 0;
ParseTree(newFolderNode.Nodes, node);
bool isMSDNLink = node.Attributes["ismsdn"] != null && node.Attributes["ismsdn"].Value.ToLower() == "true";
newFolderNode.Tag = node.Attributes["link"] != null ? new HelpLinkInformation(node.Attributes["link"].InnerText , isMSDNLink) : null;
nodeCollection.Add(newFolderNode);
break;
case "HelpTopic":
TreeNode newNode = new TreeNode(node.Attributes["name"].InnerText);
newNode.ImageIndex = newNode.SelectedImageIndex = 2;
isMSDNLink = node.Attributes["ismsdn"] != null && node.Attributes["ismsdn"].Value.ToLower() == "true";
newNode.Tag = new HelpLinkInformation(node.Attributes["link"].InnerText, isMSDNLink);
nodeCollection.Add(newNode);
break;
case "HelpReference":
TreeNode newReferenceNode = new TreeNode("Reference");
newReferenceNode.Tag = node.Attributes["reference"].InnerText;
nodeCollection.Add(newReferenceNode);
break;
}
}
}
XmlDocument LoadCompressedXmlDocument(string requestedFile)
{
ZipInputStream s = new ZipInputStream(File.OpenRead(helpFileName));
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null) {
if (theEntry.Name == requestedFile) {
StringBuilder sb = new StringBuilder();
int size = 2048;
byte[] data = new byte[2048];
while (true) {
size = s.Read(data, 0, data.Length);
if (size > 0) {
sb.Append(Encoding.UTF8.GetString(data, 0, size));
} else {
break;
}
}
s.Close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(sb.ToString());
return doc;
}
}
s.Close();
System.Diagnostics.Debug.Assert(false);
return null;
}
void LoadHelpfile()
{
XmlDocument doc = LoadCompressedXmlDocument(mainTOCFile);new XmlDocument();
ParseTree(treeView.Nodes, doc.DocumentElement);
}
void HelpBrowserClose(object sender, EventArgs e)
{
helpBrowserWindow = null;
}
public void ShowHelpBrowser(string url)
{
if (helpBrowserWindow == null) {
helpBrowserWindow = new HelpBrowserWindow();
WorkbenchSingleton.Workbench.ShowView(helpBrowserWindow);
helpBrowserWindow.WorkbenchWindow.CloseEvent += new EventHandler(HelpBrowserClose);
}
helpBrowserWindow.Load(url);
helpBrowserWindow.WorkbenchWindow.SelectWindow();
}
void ShowHelp(TreeNode node)
{
if (node == null || node.Tag == null) {
return;
}
string navigationName;
if(((HelpLinkInformation)node.Tag).IsMSDN == true) {
navigationName = ((HelpLinkInformation)node.Tag).Link;
} else {
navigationName = "mk:@MSITStore:" + helpPath + ((HelpLinkInformation)node.Tag).Link;
}
ShowHelpBrowser(navigationName);
}
void SelectNode(object sender, TreeViewEventArgs e)
{
ShowHelp(e.Node);
}
void BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
if (e.Node.ImageIndex < 2) {
e.Node.ImageIndex = e.Node.SelectedImageIndex = 1;
}
TreeNode[] nodes = new TreeNode[e.Node.Nodes.Count];
e.Node.Nodes.CopyTo(nodes, 0);
e.Node.Nodes.Clear();
foreach (TreeNode node in nodes) {
if (node.Tag is string) {
XmlDocument doc = LoadCompressedXmlDocument(node.Tag.ToString());
ParseTree(e.Node.Nodes, doc.DocumentElement);
} else {
e.Node.Nodes.Add(node);
}
}
ShowHelp(e.Node);
}
void BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
if (e.Node.ImageIndex < 2) {
e.Node.ImageIndex = e.Node.SelectedImageIndex = 0;
}
}
}
}
Loading…
Cancel
Save