Browse Source

Added F1 help to text editor and forms designer.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@359 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
63bb9fe821
  1. 2
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 19
      data/templates/file/SharpDevelop/AddInOptions.xft
  3. 2
      data/templates/file/VBNet/VBNet.Module.xft
  4. 2
      data/templates/file/VBNet/VBNet.MyExtensionClass.xft
  5. 13
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs
  6. 18
      src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs
  7. 7
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin
  8. 1
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.csproj
  9. 30
      src/AddIns/Misc/HtmlHelp2/Project/src/MsHelpProvider.cs
  10. 4
      src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.addin
  11. 3
      src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj
  12. 2
      src/AddIns/Misc/MbUnitPad/Project/Src/MbUnitPad.cs
  13. 2
      src/AddIns/Misc/MbUnitPad/Project/Src/TestTreeView.cs
  14. 3
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  15. 23
      src/Main/Base/Project/Src/Commands/HelpCommands.cs
  16. 77
      src/Main/Base/Project/Src/Dom/HelpProvider.cs
  17. 2
      src/Main/Base/Project/Src/Gui/ContentInterfaces/IContextHelpProvider.cs
  18. 17
      src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs
  19. 16
      src/Main/Base/Project/Src/Services/File/FileService.cs
  20. 27
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

2
AddIns/ICSharpCode.SharpDevelop.addin

@ -1370,7 +1370,7 @@ @@ -1370,7 +1370,7 @@
<MenuItem id = "Help"
label = "${res:XML.MainMenu.HelpMenu.Topics}"
shortcut = "Alt|F1"
link = "browser://ms-help://corsavy/"/>
link = "http://wiki.sharpdevelop.net/"/>
<MenuItem id = "TipOfTheDay"
label = "${res:XML.MainMenu.HelpMenu.Tips}"
icon = "Icons.16x16.TipOfTheDay"

19
data/templates/file/SharpDevelop/AddInOptions.xft

@ -32,31 +32,26 @@ namespace ${StandardNamespace} @@ -32,31 +32,26 @@ namespace ${StandardNamespace}
{
public static readonly string OptionsProperty = "${StandardNamespace}.Options";
static IProperties properties;
static Properties properties;
static AddInOptions()
{
PropertyService propertyService = (PropertyService)ServiceManager.Services.GetService(typeof(PropertyService));
properties = (IProperties)propertyService.GetProperty(OptionsProperty, new DefaultProperties());
properties = PropertyService.GetProperty(OptionsProperty, new Properties());
}
static IProperties Properties {
get {
Debug.Assert(properties != null);
return properties;
}
public static event PropertyChangedEventHandler PropertyChanged {
add { Properties.PropertyChanged += value; }
remove { Properties.PropertyChanged -= value; }
}
#region Properties
// public static string MyStringProperty {
// get {
// return Properties.GetProperty("MyStringProperty", "DefaultValue");
// return properties.GetProperty("MyStringProperty", "DefaultValue");
// }
// set {
// Properties.SetProperty("MyStringProperty", value);
// properties.SetProperty("MyStringProperty", value);
// }
// }
#endregion
}
}
]]>

2
data/templates/file/VBNet/VBNet.Module.xft

@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
defaultname = "Module${Number}.vb"
language = "VBNET"/>
<Description>${res:Templates.File.SingletonClass.Description}</Description>
<Description>${res:Templates.File.Module.Description}</Description>
<!--
Special new file templates:

2
data/templates/file/VBNet/VBNet.MyExtensionClass.xft

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
language = "VBNET"
/>
<Description>${res:Templates.File.EmptyClass.Description}</Description>
<Description>${res:Templates.File.MyExtensionClass.Description}</Description>
<!--
Special new file templates:

13
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/FormDesignerViewContent.cs

@ -45,7 +45,7 @@ using Microsoft.VisualBasic; @@ -45,7 +45,7 @@ using Microsoft.VisualBasic;
namespace ICSharpCode.FormDesigner
{
public class FormDesignerViewContent : AbstractSecondaryViewContent, IClipboardHandler, IUndoHandler, IHasPropertyContainer
public class FormDesignerViewContent : AbstractSecondaryViewContent, IClipboardHandler, IUndoHandler, IHasPropertyContainer, IContextHelpProvider
{
protected bool failedDesignerInitialize;
@ -162,6 +162,17 @@ namespace ICSharpCode.FormDesigner @@ -162,6 +162,17 @@ namespace ICSharpCode.FormDesigner
}
}
public void ShowHelp()
{
ISelectionService selectionService = (ISelectionService)Host.GetService(typeof(ISelectionService));
if (selectionService != null) {
Control ctl = selectionService.PrimarySelection as Control;
if (ctl != null) {
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelp(ctl.GetType().FullName);
}
}
}
public void Reload()
{
Initialize();

18
src/AddIns/DisplayBindings/FormDesigner/Project/Src/FormDesigner/Services/HelpService.cs

@ -72,21 +72,7 @@ namespace ICSharpCode.FormDesigner.Services @@ -72,21 +72,7 @@ namespace ICSharpCode.FormDesigner.Services
public void ShowHelpFromKeyword(string helpKeyword)
{
if (helpKeyword == null) {
helpKeyword = f1Keyword;
}
string classStr = helpKeyword;
string memberStr = String.Empty;
// show member help
if (helpKeyword == f1Keyword) {
int idx = helpKeyword.LastIndexOf('.');
classStr = helpKeyword.Substring(0, idx);
memberStr = helpKeyword.Substring(idx + 1);
}
throw new NotImplementedException();
//HelpBrowser helpBrowser = (HelpBrowser)WorkbenchSingleton.Workbench.GetPad(typeof(HelpBrowser)).PadContent;
//helpBrowser.ShowHelpFromType(classStr, memberStr);
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelpByKeyword(helpKeyword);
}
public void ShowGeneralHelp()
{
@ -94,7 +80,7 @@ namespace ICSharpCode.FormDesigner.Services @@ -94,7 +80,7 @@ namespace ICSharpCode.FormDesigner.Services
}
public void ShowHelp()
{
ShowHelpFromKeyword(f1Keyword);
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelp(f1Keyword);
}
public void ShowHelpFromUrl(string helpURL)

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

@ -10,8 +10,11 @@ @@ -10,8 +10,11 @@
</Runtime>
<Path name = "/SharpDevelop/Views/Browser/SchemeExtensions">
<BrowserSchemeExtension id = "ms-help"
class = "HtmlHelp2.BrowserScheme"/>
<BrowserSchemeExtension id = "ms-help" class = "HtmlHelp2.BrowserScheme"/>
</Path>
<Path name = "/SharpDevelop/Services/HelpProvider">
<Class id = "HtmlHelp2" class = "HtmlHelp2.MsHelpProvider"/>
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">

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

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

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

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 13.08.2005
* Time: 15:36
*/
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
namespace HtmlHelp2
{
public class MsHelpProvider : HelpProvider
{
// TODO: Implement MsHelpProvider
public override bool TryShowHelp(string fullTypeName)
{
LoggingService.Info("MsHelpProvider.TryShowHelp");
return false;
}
public override bool TryShowHelpByKeyword(string keyword)
{
LoggingService.Info("MsHelpProvider.TryShowHelpByKeyword");
return false;
}
}
}

4
src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.addin

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
class = "ICSharpCode.MbUnitPad.MbUnitPadContent"/>
</Path>
<Path name = "/MbUnitPad/Toolbar">
<Path name = "/SharpDevelop/Pads/MbUnitPad/Toolbar">
<Condition name = "CombineOpen" iscombineopen="True" action="Disable">
<ToolbarItem id = "Reload"
icon = "Icons.16x16.BrowserRefresh"
@ -47,6 +47,6 @@ @@ -47,6 +47,6 @@
</Condition>
</Path>
<Path name = "/MbUnitPad/ContextMenu">
<Path name = "/SharpDevelop/Pads/MbUnitPad/ContextMenu">
</Path>
</AddIn>

3
src/AddIns/Misc/MbUnitPad/Project/MbUnitPad.csproj

@ -8,9 +8,6 @@ @@ -8,9 +8,6 @@
<ProjectGuid>{B1CE28A0-04E8-490D-8256-E0C4D52C93C8}</ProjectGuid>
<ProductVersion>8.0.50215</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<StartupObject />
<ApplicationIcon />
<Win32Resource />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>..\..\..\..\..\AddIns\AddIns\Misc\MbUnitPad\</OutputPath>

2
src/AddIns/Misc/MbUnitPad/Project/Src/MbUnitPad.cs

@ -49,7 +49,7 @@ namespace ICSharpCode.MbUnitPad @@ -49,7 +49,7 @@ namespace ICSharpCode.MbUnitPad
treeView.Dock = DockStyle.Fill;
ctl.Controls.Add(treeView);
ToolStrip toolStrip = ToolbarService.CreateToolStrip(this, "/MbUnitPad/Toolbar");
ToolStrip toolStrip = ToolbarService.CreateToolStrip(this, "/SharpDevelop/Pads/MbUnitPad/Toolbar");
toolStrip.GripStyle = ToolStripGripStyle.Hidden;
ctl.Controls.Add(toolStrip);

2
src/AddIns/Misc/MbUnitPad/Project/Src/TestTreeView.cs

@ -26,7 +26,7 @@ namespace ICSharpCode.MbUnitPad @@ -26,7 +26,7 @@ namespace ICSharpCode.MbUnitPad
public TestTreeView()
{
TypeTree.ContextMenu = null;
TypeTree.ContextMenuStrip = MenuService.CreateContextMenu(this, "/MbUnitPad/ContextMenu");
TypeTree.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/MbUnitPad/ContextMenu");
this.StartTests += OnTestsStarted;
this.FinishTests += delegate { BeginInvoke(new MethodInvoker(ExpandAllFailures)); };
this.Facade.Updated += OnFacadeUpdated;

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

@ -316,7 +316,7 @@ @@ -316,7 +316,7 @@
<Compile Include="Src\Internal\ConditionEvaluators\ActiveViewContentUntitledEvaluator.cs" />
<Compile Include="Src\Services\Debugger\DebuggerService.cs" />
<Compile Include="Src\Gui\Pads\CompilerMessageView\CompilerMessageView.cs" />
<Compile Include="Src\Gui\ContentInterfaces\IHelpProvider.cs" />
<Compile Include="Src\Gui\ContentInterfaces\IContextHelpProvider.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\LocalizedTypeDescriptor.cs" />
<Compile Include="Src\Internal\Templates\File\ScriptRunner.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\CustomTypeConverter\BooleanTypeConverter.cs" />
@ -690,6 +690,7 @@ @@ -690,6 +690,7 @@
<Compile Include="Src\Gui\BrowserDisplayBinding\BrowserCommands.cs" />
<Compile Include="Src\Gui\BrowserDisplayBinding\BrowserLocationConditionEvaluator.cs" />
<Compile Include="Src\Services\Debugger\DebuggerDoozer.cs" />
<Compile Include="Src\Dom\HelpProvider.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

23
src/Main/Base/Project/Src/Commands/HelpCommands.cs

@ -21,10 +21,10 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -21,10 +21,10 @@ namespace ICSharpCode.SharpDevelop.Commands
public override void Run()
{
IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow;
IHelpProvider helpProvider = window != null ? window.ActiveViewContent as IHelpProvider : null;
IContextHelpProvider helpProvider = window != null ? window.ActiveViewContent as IContextHelpProvider : null;
foreach (PadDescriptor descriptor in WorkbenchSingleton.Workbench.PadContentCollection) {
if (descriptor.HasFocus && descriptor.PadContent is IHelpProvider) {
((IHelpProvider)descriptor.PadContent).ShowHelp();
if (descriptor.HasFocus && descriptor.PadContent is IContextHelpProvider) {
((IContextHelpProvider)descriptor.PadContent).ShowHelp();
return;
}
}
@ -35,22 +35,6 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -35,22 +35,6 @@ namespace ICSharpCode.SharpDevelop.Commands
}
}
public class ShowHelp : AbstractMenuCommand
{
public override void Run()
{
string fileName = FileUtility.SharpDevelopRootPath +
Path.DirectorySeparatorChar + "doc" +
Path.DirectorySeparatorChar + "help" +
Path.DirectorySeparatorChar + "sharpdevelop.chm";
if (FileUtility.TestFileExists(fileName)) {
Help.ShowHelp((Form)WorkbenchSingleton.Workbench, fileName);
((Form)WorkbenchSingleton.Workbench).Select();
}
}
}
public class ViewGPL : AbstractMenuCommand
{
public override void Run()
@ -78,7 +62,6 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -78,7 +62,6 @@ namespace ICSharpCode.SharpDevelop.Commands
try {
Process.Start(file);
} catch (Exception) {
MessageService.ShowError("Can't execute/view " + file + "\n Please check that the file exists and that you can open this file.");
}
} else {

77
src/Main/Base/Project/Src/Dom/HelpProvider.cs

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 13.08.2005
* Time: 15:14
*/
using System;
using System.Collections;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Dom
{
public class HelpProvider
{
public static ArrayList GetProviders()
{
return AddInTree.BuildItems("/SharpDevelop/Services/HelpProvider", null, false);
}
public static void ShowHelp(IClass c)
{
foreach (HelpProvider p in GetProviders()) {
if (p.TryShowHelp(c))
return;
}
new HelpProvider().TryShowHelp(c);
}
public virtual bool TryShowHelp(IClass c)
{
return TryShowHelp(c.FullyQualifiedName);
}
public static void ShowHelp(IMember m)
{
foreach (HelpProvider p in GetProviders()) {
if (p.TryShowHelp(m))
return;
}
new HelpProvider().TryShowHelp(m);
}
public virtual bool TryShowHelp(IMember m)
{
return TryShowHelp(m.FullyQualifiedName);
}
public static void ShowHelp(string fullTypeName)
{
foreach (HelpProvider p in GetProviders()) {
if (p.TryShowHelp(fullTypeName))
return;
}
new HelpProvider().TryShowHelp(fullTypeName);
}
public virtual bool TryShowHelp(string fullTypeName)
{
FileService.OpenFile("http://msdn2.microsoft.com/library/" + Uri.EscapeDataString(fullTypeName));
return true;
}
public static void ShowHelpByKeyword(string keyword)
{
foreach (HelpProvider p in GetProviders()) {
if (p.TryShowHelpByKeyword(keyword))
return;
}
}
public virtual bool TryShowHelpByKeyword(string keyword)
{
return false;
}
}
}

2
src/Main/Base/Project/Src/Gui/ContentInterfaces/IHelpProvider.cs → src/Main/Base/Project/Src/Gui/ContentInterfaces/IContextHelpProvider.cs

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
namespace ICSharpCode.SharpDevelop.Gui
{
public interface IHelpProvider
public interface IContextHelpProvider
{
void ShowHelp();
}

17
src/Main/Base/Project/Src/Gui/Pads/PropertyPad/PropertyPad.cs

@ -21,7 +21,7 @@ using ICSharpCode.Core; @@ -21,7 +21,7 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Gui
{
public class PropertyPad : AbstractPadContent, IHelpProvider
public class PropertyPad : AbstractPadContent, IContextHelpProvider
{
static PropertyPad instance;
@ -330,9 +330,18 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -330,9 +330,18 @@ namespace ICSharpCode.SharpDevelop.Gui
#region ICSharpCode.SharpDevelop.Gui.IHelpProvider interface implementation
public void ShowHelp()
{
if (host != null) {
IHelpService helpService = (IHelpService)host.GetService(typeof(IHelpService));
helpService.ShowHelpFromKeyword(null);
LoggingService.Info("Show help on property pad");
GridItem gridItem = grid.SelectedGridItem;
if (gridItem != null) {
Type component = gridItem.PropertyDescriptor.ComponentType;
if (component != null) {
ICSharpCode.SharpDevelop.Dom.IClass c = ProjectContentRegistry.WinForms.GetClass(component.FullName);
if (c != null) {
foreach (ICSharpCode.SharpDevelop.Dom.IProperty p in c.DefaultReturnType.GetProperties()) {
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelp(p);
}
}
}
}
}
#endregion

16
src/Main/Base/Project/Src/Services/File/FileService.cs

@ -103,13 +103,9 @@ namespace ICSharpCode.Core @@ -103,13 +103,9 @@ namespace ICSharpCode.Core
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
if (content.FileName != null) {
try {
if (isURL ? content.FileName == fileName : FileUtility.IsEqualFileName(content.FileName, fileName)) {
content.WorkbenchWindow.SelectWindow();
return content.WorkbenchWindow;
}
} catch (Exception) {
// TODO: what kind of exception is ignored here?
if (isURL ? content.FileName == fileName : FileUtility.IsEqualFileName(content.FileName, fileName)) {
content.WorkbenchWindow.SelectWindow();
return content.WorkbenchWindow;
}
}
}
@ -151,8 +147,10 @@ namespace ICSharpCode.Core @@ -151,8 +147,10 @@ namespace ICSharpCode.Core
if (fileName != null && fileName.Length > 0) {
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
string contentName = content.IsUntitled ? content.UntitledName : content.FileName;
if (FileUtility.IsEqualFileName(fileName, contentName))
return content.WorkbenchWindow;
if (contentName != null) {
if (FileUtility.IsEqualFileName(fileName, contentName))
return content.WorkbenchWindow;
}
}
}
return null;

27
src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorDisplayBinding.cs

@ -78,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -78,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
}
public class TextEditorDisplayBindingWrapper : AbstractViewContent, IMementoCapable, IPrintable, IEditable, IUndoHandler, IPositionable, ITextEditorControlProvider, IParseInformationListener, IClipboardHandler, IHelpProvider
public class TextEditorDisplayBindingWrapper : AbstractViewContent, IMementoCapable, IPrintable, IEditable, IUndoHandler, IPositionable, ITextEditorControlProvider, IParseInformationListener, IClipboardHandler, IContextHelpProvider
{
public SharpDevelopTextAreaControl textAreaControl = null;
@ -198,13 +198,30 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -198,13 +198,30 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
// KSL Start, new event handlers
#region ICSharpCode.SharpDevelop.Gui.IHelpProvider interface implementation
public void ShowHelp()
{
throw new NotImplementedException();
// Resolve expression at cursor and show help
TextArea textArea = textAreaControl.ActiveTextAreaControl.TextArea;
IDocument doc = textArea.Document;
IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(textArea.MotherTextEditorControl.FileName);
if (expressionFinder == null)
return;
LineSegment seg = doc.GetLineSegment(textArea.Caret.Line);
string textContent = doc.TextContent;
ExpressionResult expressionResult = expressionFinder.FindFullExpression(textContent, seg.Offset + textArea.Caret.Column);
string expression = expressionResult.Expression;
if (expression != null && expression.Length > 0) {
ResolveResult result = ParserService.Resolve(expressionResult, textArea.Caret.Line + 1, textArea.Caret.Column + 1, textAreaControl.FileName, textContent);
TypeResolveResult trr = result as TypeResolveResult;
if (trr != null) {
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelp(trr.ResolvedClass);
}
MemberResolveResult mrr = result as MemberResolveResult;
if (mrr != null) {
ICSharpCode.SharpDevelop.Dom.HelpProvider.ShowHelp(mrr.ResolvedMember);
}
}
}
#endregion
void SetWatcher()
{

Loading…
Cancel
Save