Browse Source

Add list with documentation about the doozers.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@590 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
bf9be4201b
  1. 68
      doc/technotes/ConditionList.html
  2. 802
      doc/technotes/DoozerList.html
  3. 50
      doc/technotes/listing.css
  4. 9
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
  5. 2
      src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
  6. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs
  7. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  8. 2
      src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs
  9. 2
      src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
  10. 2
      src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
  11. 13
      src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
  12. 8
      src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
  13. 2
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  14. 2
      src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs
  15. 15
      src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs
  16. 19
      src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs
  17. 2
      src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs
  18. 29
      src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
  19. 25
      src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs
  20. 9
      src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs
  21. 22
      src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs
  22. 19
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
  23. 4
      src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs
  24. 16
      src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs
  25. 14
      src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
  26. 18
      src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs
  27. 16
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs
  28. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs
  29. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs
  30. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs
  31. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs
  32. 4
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
  33. 1
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs
  34. 34
      src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj
  35. 6
      src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln
  36. 186
      src/Tools/BuildAddinDocumentation/MainClass.cs

68
doc/technotes/ConditionList.html

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
<html><head>
<title>Condition List</title>
<link rel="stylesheet" type="text/css" href="listing.css">
<meta name="generator" value="BuildAddinDocumentation">
</head><body>
<h1>Condition List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 2.0.0.589.</p>
<ul>
<li><a href="#BrowserLocation">BrowserLocation</a>
<li><a href="#Compare">Compare</a>
<li><a href="#OpenWindowState">OpenWindowState</a>
<li><a href="#OwnerState">OwnerState</a>
</ul>
<div>
<h2><a name="BrowserLocation">BrowserLocation</a></h2>
<p>
Conditions that tries to match the URL of a <see cref="T:ICSharpCode.SharpDevelop.BrowserDisplayBinding.HtmlViewPane" /> with a regex.
</p>
<table>
<tr>
<th>Condition name:</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.BrowserLocationConditionEvaluator</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
</table>
</div>
<div>
<h2><a name="Compare">Compare</a></h2>
<p>
Condition evaluator that compares two strings.
</p>
<table>
<tr>
<th>Condition name:</td>
<td>ICSharpCode.Core.CompareConditionEvaluator</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
</table>
</div>
<div>
<h2><a name="OpenWindowState">OpenWindowState</a></h2>
<p>
Description of WindowStateCondition.
</p>
<table>
<tr>
<th>Condition name:</td>
<td>ICSharpCode.Core.OpenWindowStateConditionEvaluator</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
</table>
</div>
<div>
<h2><a name="OwnerState">OwnerState</a></h2>
<p>
Condition evaluator that compares the state of the caller/owner with a specified value.
The caller/owner has to implement <see cref="T:ICSharpCode.Core.IOwnerState" />.
</p>
<table>
<tr>
<th>Condition name:</td>
<td>ICSharpCode.Core.OwnerStateConditionEvaluator</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
</table>
</div>
</body></html>

802
doc/technotes/DoozerList.html

@ -0,0 +1,802 @@ @@ -0,0 +1,802 @@
<html><head>
<title>Doozer List</title>
<link rel="stylesheet" type="text/css" href="listing.css">
<meta name="generator" value="BuildAddinDocumentation">
</head><body>
<h1>Doozer List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 2.0.0.589.</p>
<ul>
<li><a href="#Class">Class</a>
<li><a href="#CodeCompletionBinding">CodeCompletionBinding</a>
<li><a href="#Debugger">Debugger</a>
<li><a href="#DialogPanel">DialogPanel</a>
<li><a href="#Directory">Directory</a>
<li><a href="#DisplayBinding">DisplayBinding</a>
<li><a href="#EditAction">EditAction</a>
<li><a href="#FileFilter">FileFilter</a>
<li><a href="#Icon">Icon</a>
<li><a href="#Include">Include</a>
<li><a href="#LanguageBinding">LanguageBinding</a>
<li><a href="#MenuItem">MenuItem</a>
<li><a href="#Pad">Pad</a>
<li><a href="#Parser">Parser</a>
<li><a href="#SchemeExtension">SchemeExtension</a>
<li><a href="#SyntaxMode">SyntaxMode</a>
<li><a href="#ToolbarItem">ToolbarItem</a>
</ul>
<div>
<h2><a name="Class">Class</a></h2>
<p>
Creates object instances by invocing a type's parameterless constructor
via System.Reflection.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.ClassDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td>
The fully qualified type name of the attribute to create.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Everywhere where objects are expected.</td>
</tr>
<tr>
<th>Returns:</td>
<td>
Any kind of object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="CodeCompletionBinding">CodeCompletionBinding</a></h2>
<p>
Creates code completion bindings that manage code completion for one language.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CodeCompletionBindingDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>extensions:</td>
<td>
Optional, list of semicolon-separated entries of the file extensions handled by the binding.
If no extensions attribute is specified, the binding is activated in all files.
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /AddIns/DefaultTextEditor/CodeCompletion</td>
</tr>
<tr>
<th>Returns:</td>
<td>
The ICodeCompletionBinding class specified with the 'class' attribute, or a
wrapper that lazy-loads the actual class when it is used in a file with the specified
extension.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Debugger">Debugger</a></h2>
<p>
Creates debuggers.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.DebuggerDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>supportsStart:</td>
<td>
Specifies if the debugger supports the 'Start' command. Default: true
</td>
</tr>
<tr>
<th>supportsStartWithoutDebugger:</td>
<td>
Specifies if the debugger supports the 'StartWithoutDebugger' command. Default: true
</td>
</tr>
<tr>
<th>supportsStop:</td>
<td>
Specifies if the debugger supports the 'Stop' (kill running process) command. Default: true
</td>
</tr>
<tr>
<th>supportsStepping:</td>
<td>
Specifies if the debugger supports stepping. Default: false
</td>
</tr>
<tr>
<th>supportsExecutionControl:</td>
<td>
Specifies if the debugger supports execution control (break, resume). Default: false
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the IDebugger class.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/Services/DebuggerService/Debugger</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An DebuggerDescriptor object that exposes the attributes and the IDebugger object (lazy-loading).
</td>
</tr>
</table>
</div>
<div>
<h2><a name="DialogPanel">DialogPanel</a></h2>
<p>
Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.DialogPanelDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td>
Name of the IDialogPanel class. Optional if the page has subpages.
</td>
</tr>
<tr>
<th>label:</td>
<td>
Caption of the dialog panel.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Children:</td>
<td>
In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree.
</td>
</tr>
<tr>
<th>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr>
<tr>
<th>Returns:</td>
<td>
A DefaultDialogPanelDescriptor object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Directory">Directory</a></h2>
<p>
Creates path names using a relative to the folder containing the addin file.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.DirectoryDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>path:</td>
<td>
Path relative to the directory which contains the .addin file defining the codon.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Where directory paths to a folder inside the addin directory are expected, e.g.
/SharpDevelop/BackendBindings/Templates</td>
</tr>
<tr>
<th>Returns:</td>
<td>
A string containing the full path name.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="DisplayBinding">DisplayBinding</a></h2>
<p>
Creates DisplayBindingDescriptor objects.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.DisplayBindingDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td>
Name of the IDisplayBinding or ISecondaryDisplayBinding class.
</td>
</tr>
<tr>
<th>type:</td>
<td>
Type of the display binding (either "Primary" or "Secondary"). Default: "Primary".
</td>
</tr>
<tr>
<th>fileNamePattern:</td>
<td>
Optional. Regular expression that specifies the file names for which the display binding
will be used. Example: "\.res(x|ources)$"
</td>
</tr>
<tr>
<th>languagePattern:</td>
<td>
Optional. Regular expression that specifies the language for which the display binding
will be used. Example: "\Resource Files$"
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/Workbench/DisplayBindings</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An DisplayBindingDescriptor object that wraps either a IDisplayBinding
or a ISecondaryDisplayBinding object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="EditAction">EditAction</a></h2>
<p>
Creates IEditAction objects for the text editor.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.EditActionDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>keys:</td>
<td>
Comma-separated list of keyboard shortcuts that activate the edit action.
E.g. "Control|C,Control|Insert"
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the IEditAction class.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /AddIns/DefaultTextEditor/EditActions</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An IEditAction object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="FileFilter">FileFilter</a></h2>
<p>
Creates file filter entries for OpenFileDialogs or SaveFileDialogs.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.FileFilterDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>name:</td>
<td>
The name of the file filter entry.
</td>
</tr>
<tr>
<th>extensions:</td>
<td>
The extensions associated with this file filter entry.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/Workbench/FileFilter</td>
</tr>
<tr>
<th>Returns:</td>
<td>
String in the format "name|extensions".
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Icon">Icon</a></h2>
<p>
Creates associations between file types or node types in the project browser and
icons in the resource service.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.IconDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>resource:</td>
<td>
This attribute must be specified. It is the name of a bitmap resource
in the resource service.
</td>
</tr>
<tr>
<th>language:</td>
<td>
This attribute is specified when a project icon association should be created.
It specifies the language of the project types that use the icon.
</td>
</tr>
<tr>
<th>extensions:</td>
<td>
This attribute is specified when a file icon association should be created.
It specifies the semicolon-separated list of file types that use the icon.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /Workspace/Icons</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An IconDescriptor object that exposes the attributes.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Include">Include</a></h2>
<p>
Builds one or multiple items from another location in the addin tree.
This doozer can use the "item" OR the "path" attribute.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.IncludeDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>item:</td>
<td>
When this attribute is used, the include doozer builds the item that is at the
addin tree location specified by this attribute.
</td>
</tr>
<tr>
<th>path:</td>
<td>
When this attribute is used, the include doozer builds all items inside the
path addin tree location specified by this attribute and returns an
<see cref="T:ICSharpCode.Core.IBuildItemsModifier" /> which includes all items in the output list.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Everywhere</td>
</tr>
<tr>
<th>Returns:</td>
<td>
Any object, depending on the included codon(s).
</td>
</tr>
</table>
</div>
<div>
<h2><a name="LanguageBinding">LanguageBinding</a></h2>
<p>
Creates LanguageBindingDescriptor objects for the project service.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.LanguageBindingDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>guid:</td>
<td>
Project type GUID of the project used by MsBuild.
</td>
</tr>
<tr>
<th>supportedextensions:</td>
<td>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</td>
</tr>
<tr>
<th>projectfileextension:</td>
<td>
File extension of project files. (e.g. ".booproj")
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the ILanguageBinding class.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/Workbench/LanguageBindings</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An LanguageBindingDescriptor object that wraps the ILanguageBinding object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="MenuItem">MenuItem</a></h2>
<p>
Creates menu items from a location in the addin tree.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.MenuItemDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>type:</td>
<td>
This attribute must be specified and one of these values:
Separator, CheckBox, Item=Command, Menu (=with subitems),
Builder (=class implementing ISubmenuBuilder)
</td>
</tr>
<tr>
<th>loadclasslazy:</td>
<td>
Only for the type "Item"/"Command".
When set to false, the command class is loaded
immediately instead of the usual lazy-loading.
</td>
</tr>
<tr>
<th>icon:</td>
<td>
Icon of the menu item.
</td>
</tr>
<tr>
<th>label:</td>
<td>
Label of the menu item.
</td>
</tr>
<tr>
<th>class:</td>
<td>
Command class that is run when item is clicked.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Children:</td>
<td>
If "type" is "Menu", the item can have sub-menuitems.
</td>
</tr>
<tr>
<th>Usage:</td>
<td>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</td>
</tr>
<tr>
<th>Returns:</td>
<td>
A ToolStrip* object, depending on the type attribute.
</td>
</tr>
<tr>
<th>Conditions:</td>
<td>MenuMode</td>
</tr>
</table>
</div>
<div>
<h2><a name="Pad">Pad</a></h2>
<p>
Creates PadDescriptor objects for SharpDevelop pads.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.PadDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>title:</td>
<td>
Title of the pad that is shown in the user interface.
Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}"
</td>
</tr>
<tr>
<th>icon:</td>
<td>
Optional, specifies the name of the icon resource used for the pad.
Pad icon resources must be registered with the ResourceService before the
workbench is loaded!
</td>
</tr>
<tr>
<th>category:</td>
<td>
Category of the pad. It is possible to create menu items that automatically
contain show commands for all pads in a certain category.
Pads in the category "Main" will show up in the "View" menu, the category
"Tools" in the "View -&gt; Tools" menu, the category "Debugger" in the
"View -&gt; Debugger" menu.
</td>
</tr>
<tr>
<th>shortcut:</td>
<td>
Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
</td>
</tr>
<tr>
<th>class:</td>
<td>
IPadContent class that is loaded when the pad content is shown for the first time.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /Workspace/Parser</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An PadDescriptor object that wraps the IPadContent object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Parser">Parser</a></h2>
<p>
Creates ParserDescriptor objects for the parsing service.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.ParserDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>supportedextensions:</td>
<td>
Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo")
</td>
</tr>
<tr>
<th>projectfileextension:</td>
<td>
File extension of project files. (e.g. ".booproj")
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the IParser class.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /Workspace/Parser</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An ParserDescriptor object that wraps the IParser object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="SchemeExtension">SchemeExtension</a></h2>
<p>
Creates browser scheme extensions that can intercept calls on one protocol.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>scheme:</td>
<td>
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
</td>
</tr>
<tr>
<th>class:</td>
<td>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/Views/Browser/SchemeExtensions</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
</td>
</tr>
</table>
</div>
<div>
<h2><a name="SyntaxMode">SyntaxMode</a></h2>
<p>
Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
addin assembly.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.SyntaxModeDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>name:</td>
<td>
Name of the language for which the syntax mode is used.
</td>
</tr>
<tr>
<th>extensions:</td>
<td>
Semicolon-separated list of file extensions for which the syntax mode is used.
</td>
</tr>
<tr>
<th>resource:</td>
<td>
Fully qualified name of the resource file.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</td>
</tr>
<tr>
<th>Returns:</td>
<td>
An AddInTreeSyntaxMode object that loads the resource from the addin assembly when
its CreateTextReader method is called.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="ToolbarItem">ToolbarItem</a></h2>
<p>
Creates tool bar items from a location in the addin tree.
</p>
<table>
<tr>
<th>Doozer name:</td>
<td>ICSharpCode.Core.ToolbarItemDoozer</td>
</tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>type:</td>
<td>
This attribute must be specified and one of these values:
Separator, CheckBox, Item, ComboBox, DropDownButton
</td>
</tr>
<tr>
<th>loadclasslazy:</td>
<td>
Only for the type "Item". When set to false, the command class is loaded
immediately instead of the usual lazy-loading.
</td>
</tr>
<tr>
<th>icon:</td>
<td>
Icon of the tool bar item.
</td>
</tr>
<tr>
<th>tooltip:</td>
<td>
Tooltip of the tool bar item.
</td>
</tr>
<tr>
<th>class:</td>
<td>
Command class that is run when item is clicked; or class that manages
the ComboBox/DropDownButton.
</td>
</tr>
<tr><td colspan=2><hr></td></tr>
<tr>
<th>Usage:</td>
<td>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</td>
</tr>
<tr>
<th>Returns:</td>
<td>
A ToolStrip* object, depending on the type attribute.
</td>
</tr>
<tr>
<th>Conditions:</td>
<td>MenuMode</td>
</tr>
</table>
</div>
</body></html>

50
doc/technotes/listing.css

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
body, td, th {
font-family: Verdana, Arial, Helvetica;
font-size: 10pt;
color: #000000;
background-color: #ffffff;
}
.notice {
font-size: 75%;
color: #606060;
}
th {
vertical-align: top;
text-align: left;
}
h1 {
font-size: 200%;
}
h2 {
font-size: 150%;
text-decoration: bold;
margin-top: 0px;
margin-bottom: 0px;
}
h3 {
font-size: 110%;
margin-top: 0px;
}
div {
border: 1px solid #ccccff;
background: #fafaff;
padding-left: 4px;
padding-right: 10px;
padding-top: 4px;
margin-top: 4px;
margin-bottom: 4px;
}
td, th {
background: #fdfdfd;
}
table {
border: 1px solid #ccccff;
width: 100%;
margin-bottom: 4px;
}
hr {
border: 0px;
color: #ccccff;
background-color: #ccccff;
height: 1px;
}

9
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin

@ -56,10 +56,11 @@ @@ -56,10 +56,11 @@
</Path>
<Path name = "/SharpDevelop/Workbench/DisplayBindings">
<DisplayBinding id = "BooFormDesigner"
type = "Secondary"
supportedformats = "Forms/UserControls"
class = "Grunwald.BooBinding.Designer.FormDesignerDisplayBinding" />
<DisplayBinding id = "BooFormDesigner"
type = "Secondary"
fileNamePattern = "\.boo$"
languagePattern = "^Boo$"
class = "Grunwald.BooBinding.Designer.FormDesignerDisplayBinding" />
</Path>
<Path path = "/SharpDevelop/BackendBindings/ProjectOptions/Boo">

2
src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
<PostBuildEvent>$(MSBuildProjectDirectory)\PostBuildEvent.bat "$(MSBuildProjectDirectory)"</PostBuildEvent>
<ProductVersion>8.0.50215</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
<RunPostBuildEvent>OnSuccessfulBuild</RunPostBuildEvent>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs

@ -208,9 +208,9 @@ namespace ICSharpCode.TextEditor.Actions @@ -208,9 +208,9 @@ namespace ICSharpCode.TextEditor.Actions
for (int i = y2; i >= y1; --i) {
LineSegment line = document.GetLineSegment(i);
if(line.Length > 0) {
/// note: some users may prefer a more radical ConvertLeadingSpacesToTabs that
/// means there can be no spaces before the first character even if the spaces
/// didn't add up to a whole number of tabs
// note: some users may prefer a more radical ConvertLeadingSpacesToTabs that
// means there can be no spaces before the first character even if the spaces
// didn't add up to a whole number of tabs
string newLine = TextUtilities.LeadingWhiteSpaceToTabs(document.GetText(line.Offset,line.Length), document.TextEditorProperties.TabIndent);
document.Replace(line.Offset,line.Length,newLine);
++redocounter;

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -435,7 +435,7 @@ namespace ICSharpCode.TextEditor @@ -435,7 +435,7 @@ namespace ICSharpCode.TextEditor
/// <summary>
/// This method is called on each Keypress
/// </rsummary>
/// </summary>
/// <returns>
/// True, if the key is handled by this method and should NOT be
/// inserted in the textarea.

2
src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs

@ -53,7 +53,7 @@ namespace ICSharpCode.NRefactory.Parser.AST @@ -53,7 +53,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
DivideInteger,
/// <summary>VB-only: ^</summary>
Power,
/// <summary>VB-only: &</summary>
/// <summary>VB-only: &amp;</summary>
Concat,
/// <summary>C#: &lt;&lt;</summary>

2
src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs

@ -11,8 +11,8 @@ using ICSharpCode.Core; @@ -11,8 +11,8 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Dom
{
[Serializable]
/// <summary>The type of the 'null'/'nothing' literal.</summary>
[Serializable]
public sealed class NullReturnType : AbstractReturnType
{
public static readonly NullReturnType Instance = new NullReturnType();

2
src/Main/Base/Project/Src/Gui/AbstractViewContent.cs

@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
/// <summary>
/// Sets the file name to <param name="fileName"/> and the title to the file name without path. Sets dirty == false too.
/// Sets the file name to <paramref name="fileName"/> and the title to the file name without path. Sets dirty == false too.
/// </summary>
/// <param name="fileName">The name of the file currently inside the content.</param>
protected void SetTitleAndFileName(string fileName)

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

@ -70,6 +70,19 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding @@ -70,6 +70,19 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
}
}
/// <summary>
/// Creates browser scheme extensions that can intercept calls on one protocol.
/// </summary>
/// <attribute name="scheme">
/// Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
/// </attribute>
/// <attribute name="class">
/// Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
/// </attribute>
/// <usage>Only in /SharpDevelop/Views/Browser/SchemeExtensions</usage>
/// <returns>
/// An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
/// </returns>
public class SchemeExtensionDoozer : IDoozer
{
/// <summary>

8
src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs

@ -322,7 +322,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -322,7 +322,7 @@ namespace ICSharpCode.SharpDevelop.Gui
#region Drag and Drop
/// <summary>
/// Generates a Drag & Drop data object. If this property returns null
/// Generates a Drag &amp; Drop data object. If this property returns null
/// the node indicates that it can't be dragged.
/// </summary>
public virtual DataObject DragDropDataObject {
@ -332,14 +332,14 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -332,14 +332,14 @@ namespace ICSharpCode.SharpDevelop.Gui
}
/// <summary>
/// Gets the drag & drop effect, when a DataObject is dragged over this node.
/// Gets the drag &amp; drop effect, when a DataObject is dragged over this node.
/// </summary>
/// <param name="proposedEffect">
/// The default effect DragDropEffects.Copy and DragDropEffects.Move, depending on the
/// key the user presses while performing d&d.
/// key the user presses while performing d&amp;d.
/// </param>
/// <returns>
/// DragDropEffects.None when no drag&drop can occur.
/// DragDropEffects.None when no drag&amp;drop can occur.
/// </returns>
public virtual DragDropEffects GetDragDropEffect(IDataObject dataObject, DragDropEffects proposedEffect)
{

2
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
/// <summary>
/// This class is for creating a new "empty" file
/// </summar
/// </summary>
public class NewFileDialog : BaseSharpDevelopForm, INewFileCreator
{
ArrayList alltemplates = new ArrayList();

2
src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs

@ -87,7 +87,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -87,7 +87,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return nextID;
}
/// <value> returns true, if all dialog panels could be finished</value?>
/// <value> returns true, if all dialog panels could be finished</value>
bool CanFinish {
get {
int currentNr = 0;

15
src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs

@ -42,8 +42,18 @@ namespace ICSharpCode.Core @@ -42,8 +42,18 @@ namespace ICSharpCode.Core
}
}
AddIn addin;
string dialogPanelPath;
public IDialogPanel DialogPanel {
get {
if (dialogPanelPath != null) {
if (dialogPanel == null) {
dialogPanel = (IDialogPanel)addin.CreateObject(dialogPanelPath);
}
dialogPanelPath = null;
addin = null;
}
return dialogPanel;
}
set {
@ -62,9 +72,10 @@ namespace ICSharpCode.Core @@ -62,9 +72,10 @@ namespace ICSharpCode.Core
this.dialogPanelDescriptors = dialogPanelDescriptors;
}
public DefaultDialogPanelDescriptor(string id, string label, IDialogPanel dialogPanel) : this(id, label)
public DefaultDialogPanelDescriptor(string id, string label, AddIn addin, string dialogPanelPath) : this(id, label)
{
this.dialogPanel = dialogPanel;
this.addin = addin;
this.dialogPanelPath = dialogPanelPath;
}
}
}

19
src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs

@ -11,6 +11,23 @@ using System.Reflection; @@ -11,6 +11,23 @@ using System.Reflection;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
/// </summary>
/// <attribute name="class">
/// Name of the IDialogPanel class. Optional if the page has subpages.
/// </attribute>
/// <attribute name="label">
/// Caption of the dialog panel.
/// </attribute>
/// <children>
/// In the SharpDevelop options, option pages can have subpages by specifying them
/// as children in the AddInTree.
/// </children>
/// <usage>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</usage>
/// <returns>
/// A DefaultDialogPanelDescriptor object.
/// </returns>
public class DialogPanelDoozer : IDoozer
{
/// <summary>
@ -33,7 +50,7 @@ namespace ICSharpCode.Core @@ -33,7 +50,7 @@ namespace ICSharpCode.Core
if (subItems == null || subItems.Count == 0) {
if (codon.Properties.Contains("class")) {
return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), (IDialogPanel)codon.AddIn.CreateObject(codon.Properties["class"]));
return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), codon.AddIn, codon.Properties["class"]);
} else {
return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label));
}

2
src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs

@ -17,6 +17,8 @@ namespace ICSharpCode.Core @@ -17,6 +17,8 @@ namespace ICSharpCode.Core
/// <attribute name="path">
/// Path relative to the directory which contains the .addin file defining the codon.
/// </attribute>
/// <usage>Where directory paths to a folder inside the addin directory are expected, e.g.
/// /SharpDevelop/BackendBindings/Templates</usage>
/// <returns>
/// A string containing the full path name.
/// </returns>

29
src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs

@ -12,6 +12,35 @@ using ICSharpCode.SharpDevelop.Gui; @@ -12,6 +12,35 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates PadDescriptor objects for SharpDevelop pads.
/// </summary>
/// <attribute name="title">
/// Title of the pad that is shown in the user interface.
/// Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}"
/// </attribute>
/// <attribute name="icon">
/// Optional, specifies the name of the icon resource used for the pad.
/// Pad icon resources must be registered with the ResourceService before the
/// workbench is loaded!
/// </attribute>
/// <attribute name="category">
/// Category of the pad. It is possible to create menu items that automatically
/// contain show commands for all pads in a certain category.
/// Pads in the category "Main" will show up in the "View" menu, the category
/// "Tools" in the "View -&gt; Tools" menu, the category "Debugger" in the
/// "View -&gt; Debugger" menu.
/// </attribute>
/// <attribute name="shortcut">
/// Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
/// </attribute>
/// <attribute name="class">
/// IPadContent class that is loaded when the pad content is shown for the first time.
/// </attribute>
/// <usage>Only in /Workspace/Parser</usage>
/// <returns>
/// An PadDescriptor object that wraps the IPadContent object.
/// </returns>
public class PadDoozer : IDoozer
{
/// <summary>

25
src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs

@ -10,6 +10,31 @@ using System.Collections; @@ -10,6 +10,31 @@ using System.Collections;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates debuggers.
/// </summary>
/// <attribute name="supportsStart">
/// Specifies if the debugger supports the 'Start' command. Default: true
/// </attribute>
/// <attribute name="supportsStartWithoutDebugger">
/// Specifies if the debugger supports the 'StartWithoutDebugger' command. Default: true
/// </attribute>
/// <attribute name="supportsStop">
/// Specifies if the debugger supports the 'Stop' (kill running process) command. Default: true
/// </attribute>
/// <attribute name="supportsStepping">
/// Specifies if the debugger supports stepping. Default: false
/// </attribute>
/// <attribute name="supportsExecutionControl">
/// Specifies if the debugger supports execution control (break, resume). Default: false
/// </attribute>
/// <attribute name="class">
/// Name of the IDebugger class.
/// </attribute>
/// <usage>Only in /SharpDevelop/Services/DebuggerService/Debugger</usage>
/// <returns>
/// An DebuggerDescriptor object that exposes the attributes and the IDebugger object (lazy-loading).
/// </returns>
public class DebuggerDoozer : IDoozer
{
/// <summary>

9
src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs

@ -40,9 +40,11 @@ namespace ICSharpCode.Core @@ -40,9 +40,11 @@ namespace ICSharpCode.Core
}
}
bool isSecondary;
public bool IsSecondary {
get {
return codon.Properties["type"] == "Secondary";
return isSecondary;
}
}
@ -51,9 +53,12 @@ namespace ICSharpCode.Core @@ -51,9 +53,12 @@ namespace ICSharpCode.Core
return codon;
}
}
public DisplayBindingDescriptor(Codon codon)
{
isSecondary = codon.Properties["type"] == "Secondary";
if (!isSecondary && codon.Properties["type"] != "" && codon.Properties["type"] != "Primary")
MessageService.ShowWarning("Unknown display binding type: " + codon.Properties["type"]);
this.codon = codon;
}

22
src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs

@ -13,6 +13,28 @@ using ICSharpCode.Core; @@ -13,6 +13,28 @@ using ICSharpCode.Core;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates DisplayBindingDescriptor objects.
/// </summary>
/// <attribute name="class">
/// Name of the IDisplayBinding or ISecondaryDisplayBinding class.
/// </attribute>
/// <attribute name="type">
/// Type of the display binding (either "Primary" or "Secondary"). Default: "Primary".
/// </attribute>
/// <attribute name="fileNamePattern">
/// Optional. Regular expression that specifies the file names for which the display binding
/// will be used. Example: "\.res(x|ources)$"
/// </attribute>
/// <attribute name="languagePattern">
/// Optional. Regular expression that specifies the language for which the display binding
/// will be used. Example: "\Resource Files$"
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/DisplayBindings</usage>
/// <returns>
/// An DisplayBindingDescriptor object that wraps either a IDisplayBinding
/// or a ISecondaryDisplayBinding object.
/// </returns>
public class DisplayBindingDoozer : IDoozer
{
/// <summary>

19
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs

@ -14,6 +14,25 @@ using ICSharpCode.SharpDevelop.Project; @@ -14,6 +14,25 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates LanguageBindingDescriptor objects for the project service.
/// </summary>
/// <attribute name="guid">
/// Project type GUID of the project used by MsBuild.
/// </attribute>
/// <attribute name="supportedextensions">
/// Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
/// </attribute>
/// <attribute name="projectfileextension">
/// File extension of project files. (e.g. ".booproj")
/// </attribute>
/// <attribute name="class">
/// Name of the ILanguageBinding class.
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/LanguageBindings</usage>
/// <returns>
/// An LanguageBindingDescriptor object that wraps the ILanguageBinding object.
/// </returns>
public class LanguageBindingDoozer : IDoozer
{
/// <summary>

4
src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs

@ -52,7 +52,7 @@ namespace ICSharpCode.Core @@ -52,7 +52,7 @@ namespace ICSharpCode.Core
public string[] Supportedextensions {
get {
if (supportedExtensions == null) {
supportedExtensions = codon.Properties["supportedextensions"].ToUpper().Split(';');
supportedExtensions = codon.Properties["supportedextensions"].ToUpperInvariant().Split(';');
}
return supportedExtensions;
}
@ -60,7 +60,7 @@ namespace ICSharpCode.Core @@ -60,7 +60,7 @@ namespace ICSharpCode.Core
public bool CanParse(string fileName)
{
string fileExtension = Path.GetExtension(fileName).ToUpper();
string fileExtension = Path.GetExtension(fileName).ToUpperInvariant();
foreach (string ext in Supportedextensions) {
if (fileExtension == ext) {
return true;

16
src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs

@ -14,6 +14,22 @@ using ICSharpCode.SharpDevelop.Project; @@ -14,6 +14,22 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.Core
{
/// <summary>
/// Creates ParserDescriptor objects for the parsing service.
/// </summary>
/// <attribute name="supportedextensions">
/// Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo")
/// </attribute>
/// <attribute name="projectfileextension">
/// File extension of project files. (e.g. ".booproj")
/// </attribute>
/// <attribute name="class">
/// Name of the IParser class.
/// </attribute>
/// <usage>Only in /Workspace/Parser</usage>
/// <returns>
/// An ParserDescriptor object that wraps the IParser object.
/// </returns>
public class ParserDoozer : IDoozer
{
/// <summary>

14
src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs

@ -17,6 +17,20 @@ using ICSharpCode.TextEditor.Actions; @@ -17,6 +17,20 @@ using ICSharpCode.TextEditor.Actions;
namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
{
/// <summary>
/// Creates IEditAction objects for the text editor.
/// </summary>
/// <attribute name="keys">
/// Comma-separated list of keyboard shortcuts that activate the edit action.
/// E.g. "Control|C,Control|Insert"
/// </attribute>
/// <attribute name="class">
/// Name of the IEditAction class.
/// </attribute>
/// <usage>Only in /AddIns/DefaultTextEditor/EditActions</usage>
/// <returns>
/// An IEditAction object.
/// </returns>
public class EditActionDoozer : IDoozer
{
/// <summary>

18
src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs

@ -42,6 +42,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons @@ -42,6 +42,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
}
}
/// <summary>
/// Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
/// addin assembly.
/// </summary>
/// <attribute name="name">
/// Name of the language for which the syntax mode is used.
/// </attribute>
/// <attribute name="extensions">
/// Semicolon-separated list of file extensions for which the syntax mode is used.
/// </attribute>
/// <attribute name="resource">
/// Fully qualified name of the resource file.
/// </attribute>
/// <usage>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</usage>
/// <returns>
/// An AddInTreeSyntaxMode object that loads the resource from the addin assembly when
/// its CreateTextReader method is called.
/// </returns>
public class SyntaxModeDoozer : IDoozer
{
/// <summary>

16
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs

@ -22,6 +22,22 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -22,6 +22,22 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
bool HandleKeyPress(SharpDevelopTextAreaControl editor, char ch);
}
/// <summary>
/// Creates code completion bindings that manage code completion for one language.
/// </summary>
/// <attribute name="extensions">
/// Optional, list of semicolon-separated entries of the file extensions handled by the binding.
/// If no extensions attribute is specified, the binding is activated in all files.
/// </attribute>
/// <attribute name="class">
/// Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
/// </attribute>
/// <usage>Only in /AddIns/DefaultTextEditor/CodeCompletion</usage>
/// <returns>
/// The ICodeCompletionBinding class specified with the 'class' attribute, or a
/// wrapper that lazy-loads the actual class when it is used in a file with the specified
/// extension.
/// </returns>
public class CodeCompletionBindingDoozer : IDoozer
{
public bool HandleConditions {

1
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs

@ -17,6 +17,7 @@ namespace ICSharpCode.Core @@ -17,6 +17,7 @@ namespace ICSharpCode.Core
/// <attribute name="class">
/// The fully qualified type name of the attribute to create.
/// </attribute>
/// <usage>Everywhere where objects are expected.</usage>
/// <returns>
/// Any kind of object.
/// </returns>

1
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs

@ -19,6 +19,7 @@ namespace ICSharpCode.Core @@ -19,6 +19,7 @@ namespace ICSharpCode.Core
/// <attribute name="extensions">
/// The extensions associated with this file filter entry.
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/FileFilter</usage>
/// <returns>
/// String in the format "name|extensions".
/// </returns>

1
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs

@ -28,6 +28,7 @@ namespace ICSharpCode.Core @@ -28,6 +28,7 @@ namespace ICSharpCode.Core
/// This attribute is specified when a file icon association should be created.
/// It specifies the semicolon-separated list of file types that use the icon.
/// </attribute>
/// <usage>Only in /Workspace/Icons</usage>
/// <returns>
/// An IconDescriptor object that exposes the attributes.
/// </returns>

1
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs

@ -23,6 +23,7 @@ namespace ICSharpCode.Core @@ -23,6 +23,7 @@ namespace ICSharpCode.Core
/// path addin tree location specified by this attribute and returns an
/// <see cref="IBuildItemsModifier"/> which includes all items in the output list.
/// </attribute>
/// <usage>Everywhere</usage>
/// <returns>
/// Any object, depending on the included codon(s).
/// </returns>

4
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs

@ -33,6 +33,10 @@ namespace ICSharpCode.Core @@ -33,6 +33,10 @@ namespace ICSharpCode.Core
/// <attribute name="class">
/// Command class that is run when item is clicked.
/// </attribute>
/// <children>
/// If "type" is "Menu", the item can have sub-menuitems.
/// </children>
/// <usage>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</usage>
/// <returns>
/// A ToolStrip* object, depending on the type attribute.
/// </returns>

1
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs

@ -32,6 +32,7 @@ namespace ICSharpCode.Core @@ -32,6 +32,7 @@ namespace ICSharpCode.Core
/// Command class that is run when item is clicked; or class that manages
/// the ComboBox/DropDownButton.
/// </attribute>
/// <usage>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</usage>
/// <returns>
/// A ToolStrip* object, depending on the type attribute.
/// </returns>

34
src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>BuildAddinDocumentation</RootNamespace>
<AssemblyName>BuildAddinDocumentation</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>True</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>True</Optimize>
<DefineConstants>TRACE</DefineConstants>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainClass.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

6
src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.589
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAddinDocumentation", "BuildAddinDocumentation.csproj", "{211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}"
EndProject
Global
EndGlobal

186
src/Tools/BuildAddinDocumentation/MainClass.cs

@ -0,0 +1,186 @@ @@ -0,0 +1,186 @@
/*
* Created by SharpDevelop.
* User: Daniel Grunwald
* Date: 17.10.2005
* Time: 14:50
*/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Xml;
namespace BuildAddinDocumentation
{
public class MainClass
{
static FileVersionInfo sdVersion;
public static void Main()
{
string srcDir = @"..\..\..\..\";
Debug.WriteLine(Path.GetFullPath(srcDir));
List<XmlElement> doozers = new List<XmlElement>();
List<XmlElement> conditions = new List<XmlElement>();
if (!ReadXmlDocu(srcDir + "Main\\Core\\Project", doozers, conditions))
return;
if (!ReadXmlDocu(srcDir + "Main\\Base\\Project", doozers, conditions))
return;
// build normal SharpDevelop:
ProcessStartInfo info = new ProcessStartInfo("cmd", "/c debugbuild.bat");
info.WorkingDirectory = srcDir;
Process p = Process.Start(info);
if (!p.WaitForExit(60000)) {
Debug.WriteLine("msbuild did not exit");
return;
}
if (p.ExitCode != 0) {
Debug.WriteLine("msbuild exit code: " + p.ExitCode);
return;
}
sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\SharpDevelop.exe")));
Comparison<XmlElement> comparison = delegate(XmlElement a, XmlElement b) {
string shortNameA = a.GetAttribute("name").Substring(a.GetAttribute("name").LastIndexOf('.') + 1);
string shortNameB = b.GetAttribute("name").Substring(b.GetAttribute("name").LastIndexOf('.') + 1);
return shortNameA.CompareTo(shortNameB);
};
doozers.Sort(comparison);
conditions.Sort(comparison);
using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\DoozerList.html"))) {
WriteHeader(html, "Doozer List");
WriteList(html, doozers, true);
WriteFooter(html);
}
using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\ConditionList.html"))) {
WriteHeader(html, "Condition List");
WriteList(html, conditions, false);
WriteFooter(html);
}
}
static void WriteList(StreamWriter html, List<XmlElement> elementList, bool isDoozer)
{
html.WriteLine("<ul>");
foreach (XmlElement e in elementList) {
string fullname = e.GetAttribute("name").Substring(2);
string shortName = fullname.Substring(fullname.LastIndexOf('.') + 1);
if (shortName == "LazyLoadDoozer" || shortName == "LazyConditionEvaluator") continue;
if (isDoozer)
shortName = shortName.Substring(0, shortName.Length - "doozer".Length);
else
shortName = shortName.Substring(0, shortName.Length - "conditionEvaluator".Length);
if (shortName == "I") continue; // skip the interface
html.WriteLine(" <li><a href=\"#" + shortName + "\">" + shortName + "</a>");
}
html.WriteLine("</ul>");
foreach (XmlElement e in elementList) {
string fullname = e.GetAttribute("name").Substring(2);
string shortName = fullname.Substring(fullname.LastIndexOf('.') + 1);
if (shortName == "LazyLoadDoozer" || shortName == "LazyConditionEvaluator") continue;
if (isDoozer)
shortName = shortName.Substring(0, shortName.Length - "doozer".Length);
else
shortName = shortName.Substring(0, shortName.Length - "conditionEvaluator".Length);
if (shortName == "I") continue; // skip the interface
html.WriteLine("<div>");
html.WriteLine(" <h2><a name=\"" + shortName + "\">" + shortName + "</a></h2>");
html.WriteLine(" <p>" + e["summary"].InnerXml + "</p>");
html.WriteLine(" <table>");
html.WriteLine(" <tr>");
if (isDoozer)
html.WriteLine(" <th>Doozer name:</td>");
else
html.WriteLine(" <th>Condition name:</td>");
html.WriteLine(" <td>" + fullname + "</td>");
html.WriteLine(" </tr>");
html.WriteLine(" <tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>");
bool firstNonAttribute = true;
foreach (XmlElement sub in e) {
switch (sub.Name) {
case "summary":
break;
case "attribute":
html.WriteLine(" <tr>");
html.WriteLine(" <th>" + sub.GetAttribute("name") + ":</td>");
html.WriteLine(" <td>" + sub.InnerXml + "</td>");
html.WriteLine(" </tr>");
break;
default:
if (firstNonAttribute) {
firstNonAttribute = false;
html.WriteLine(" <tr><td colspan=2><hr></td></tr>");
}
html.WriteLine(" <tr>");
html.WriteLine(" <th>" + char.ToUpper(sub.Name[0]) + sub.Name.Substring(1) + ":</td>");
html.WriteLine(" <td>" + sub.InnerXml + "</td>");
html.WriteLine(" </tr>");
break;
}
}
html.WriteLine(" </table>");
html.WriteLine("</div>");
}
}
static void WriteHeader(StreamWriter html, string title)
{
html.WriteLine("<html><head>");
html.WriteLine(" <title>" + title + "</title>");
html.WriteLine(" <link rel=\"stylesheet\" type=\"text/css\" href=\"listing.css\">");
html.WriteLine(" <meta name=\"generator\" value=\"BuildAddinDocumentation\">");
html.WriteLine("</head><body>");
html.WriteLine("<h1>" + title + "</h1>");
html.WriteLine("<p class=\"notice\">This file was generated by the tool 'BuildAddinDocumentation'.");
html.WriteLine("It is based on SharpDevelop " + sdVersion.FileMajorPart + "." + sdVersion.FileMinorPart +
"." + sdVersion.FileBuildPart + "." + sdVersion.FilePrivatePart + ".</p>");
}
static void WriteFooter(StreamWriter html)
{
html.WriteLine("</body></html>");
}
static bool ReadXmlDocu(string projectFolder, List<XmlElement> doozers, List<XmlElement> conditions)
{
XmlDocument doc = GetXmlDocu(projectFolder);
if (doc == null) return false;
foreach (XmlElement member in doc.DocumentElement["members"]) {
if (member.GetAttribute("name").EndsWith("Doozer"))
doozers.Add(member);
if (member.GetAttribute("name").EndsWith("ConditionEvaluator"))
conditions.Add(member);
}
return true;
}
static XmlDocument GetXmlDocu(string projectFolder)
{
string docFile = Path.GetFullPath("doc.xml");
if (File.Exists(docFile))
File.Delete(docFile);
string args = "\"/p:DocumentationFile=" + docFile + "\" \"/p:NoWarn=1591 1573 1574 1572 419\"";
string msbuild = Path.Combine(Path.GetDirectoryName(typeof(object).Assembly.Location), "msbuild.exe");
ProcessStartInfo info = new ProcessStartInfo(msbuild, args);
info.WorkingDirectory = projectFolder;
Process p = Process.Start(info);
if (!p.WaitForExit(60000)) {
Debug.WriteLine("msbuild did not exit");
return null;
}
if (p.ExitCode != 0) {
Debug.WriteLine("msbuild exit code: " + p.ExitCode);
return null;
}
XmlDocument doc = new XmlDocument();
doc.Load(docFile);
return doc;
}
}
}
Loading…
Cancel
Save