Browse Source

BuildAddinDocumentation now updates the AddIn schema.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@596 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
58ad8b5436
  1. 1057
      data/schemas/AddIn.xsd
  2. 1
      data/schemas/readme.txt
  3. 72
      doc/technotes/ConditionList.html
  4. 361
      doc/technotes/DoozerList.html
  5. 4
      doc/technotes/listing.css
  6. 4
      src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
  7. 4
      src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs
  8. 2
      src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs
  9. 16
      src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
  10. 16
      src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs
  11. 33
      src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs
  12. 8
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
  13. 2
      src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs
  14. 3
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
  15. 4
      src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
  16. 6
      src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs
  17. 10
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs
  18. 4
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs
  19. 4
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs
  20. 5
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs
  21. 32
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
  22. 19
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs
  23. 156
      src/Tools/BuildAddinDocumentation/MainClass.cs

1057
data/schemas/AddIn.xsd

File diff suppressed because it is too large Load Diff

1
data/schemas/readme.txt

@ -3,6 +3,7 @@ AddIn.xsd
SharpDevelop schema for .addin files. SharpDevelop schema for .addin files.
Created by Ivo Kovacka. Created by Ivo Kovacka.
Doozers automatically updated by "BuildAddinDocumentation".
GNU General Public License. GNU General Public License.

72
doc/technotes/ConditionList.html

@ -5,7 +5,7 @@
</head><body> </head><body>
<h1>Condition List</h1> <h1>Condition List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'. <p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 2.0.0.590.</p> It is based on SharpDevelop 2.0.0.595.</p>
<ul> <ul>
<li><a href="#ActiveContentExtension">ActiveContentExtension</a> <li><a href="#ActiveContentExtension">ActiveContentExtension</a>
<li><a href="#ActiveViewContentUntitled">ActiveViewContentUntitled</a> <li><a href="#ActiveViewContentUntitled">ActiveViewContentUntitled</a>
@ -29,12 +29,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.ActiveContentExtensionConditionEvaluator</td> <td>ICSharpCode.Core.ActiveContentExtensionConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>activeextension:</td> <th colspan=2>activeextension:</td>
<td> <td>
The file extension the file should have. The file extension the file should have.
</td> </td>
@ -51,11 +51,11 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.ActiveViewContentUntitledConditionEvaluator</td> <td>ICSharpCode.Core.ActiveViewContentUntitledConditionEvaluator</td>
</tr> </tr>
<tr> <tr>
<th>Attributes:</td> <th colspan=2>Attributes:</td>
<td>Boolean value to test against.</td> <td>Boolean value to test against.</td>
</tr> </tr>
</table> </table>
@ -75,7 +75,7 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.ActiveWindowStateConditionEvaluator</td> <td>ICSharpCode.Core.ActiveWindowStateConditionEvaluator</td>
</tr> </tr>
</table> </table>
@ -87,18 +87,18 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.BrowserLocationConditionEvaluator</td> <td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.BrowserLocationConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>urlRegex:</td> <th colspan=2>urlRegex:</td>
<td> <td>
The regular expression that must match the URL. The regular expression that must match the URL.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>options:</td> <th colspan=2>options:</td>
<td> <td>
Optional; options that are passed as RegexOptions. Optional; options that are passed as RegexOptions.
</td> </td>
@ -119,18 +119,18 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.CompareConditionEvaluator</td> <td>ICSharpCode.Core.CompareConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>string:</td> <th colspan=2>string:</td>
<td> <td>
The first string. The first string.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>equals:</td> <th colspan=2>equals:</td>
<td> <td>
The second string. The second string.
</td> </td>
@ -147,12 +147,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.DebuggerSupportsConditionEvaluator</td> <td>ICSharpCode.Core.DebuggerSupportsConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>debuggersupports:</td> <th colspan=2>debuggersupports:</td>
<td> <td>
The name of the feature the debugger must support. The name of the feature the debugger must support.
Possible feature names: "Start", "StartWithoutDebugging", "Stop", Possible feature names: "Start", "StartWithoutDebugging", "Stop",
@ -175,17 +175,17 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.IsProcessRunningConditionEvaluator</td> <td>ICSharpCode.Core.IsProcessRunningConditionEvaluator</td>
</tr> </tr>
<tr> <tr>
<th>Attributes:</td> <th colspan=2>Attributes:</td>
<td> <td>
Optional; boolean value IsDebugging should have. Optional; boolean value IsDebugging should have.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Attributes:</td> <th colspan=2>Attributes:</td>
<td> <td>
Optional; boolean value IsProcessRunning should have. Optional; boolean value IsProcessRunning should have.
</td> </td>
@ -211,7 +211,7 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.OpenWindowStateConditionEvaluator</td> <td>ICSharpCode.Core.OpenWindowStateConditionEvaluator</td>
</tr> </tr>
</table> </table>
@ -224,7 +224,7 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.OwnerStateConditionEvaluator</td> <td>ICSharpCode.Core.OwnerStateConditionEvaluator</td>
</tr> </tr>
</table> </table>
@ -236,12 +236,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.ProjectActiveConditionEvaluator</td> <td>ICSharpCode.Core.ProjectActiveConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>activeproject:</td> <th colspan=2>activeproject:</td>
<td> <td>
The language name the project should have. The language name the project should have.
"*" to test if any project is active. "*" to test if any project is active.
@ -262,7 +262,7 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.SolutionOpenConditionEvaluator</td> <td>ICSharpCode.Core.SolutionOpenConditionEvaluator</td>
</tr> </tr>
</table> </table>
@ -277,12 +277,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Conditions.TextContentConditionEvaluator</td> <td>ICSharpCode.SharpDevelop.DefaultEditor.Conditions.TextContentConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>textcontent:</td> <th colspan=2>textcontent:</td>
<td> <td>
The name of the highlighting strategy that should be active. The name of the highlighting strategy that should be active.
</td> </td>
@ -299,12 +299,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.WindowActiveConditionEvaluator</td> <td>ICSharpCode.Core.WindowActiveConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>activewindow:</td> <th colspan=2>activewindow:</td>
<td> <td>
The fully qualified name of the type the active window should be or the The fully qualified name of the type the active window should be or the
interface name it should implement. interface name it should implement.
@ -327,12 +327,12 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Condition name:</td> <th colspan=2>Condition name:</td>
<td>ICSharpCode.Core.WindowOpenConditionEvaluator</td> <td>ICSharpCode.Core.WindowOpenConditionEvaluator</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>openwindow:</td> <th colspan=2>openwindow:</td>
<td> <td>
The fully qualified name of the type the window should be or the The fully qualified name of the type the window should be or the
interface name it should implement. interface name it should implement.

361
doc/technotes/DoozerList.html

@ -5,7 +5,7 @@
</head><body> </head><body>
<h1>Doozer List</h1> <h1>Doozer List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'. <p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 2.0.0.590.</p> It is based on SharpDevelop 2.0.0.595.</p>
<ul> <ul>
<li><a href="#Class">Class</a> <li><a href="#Class">Class</a>
<li><a href="#CodeCompletionBinding">CodeCompletionBinding</a> <li><a href="#CodeCompletionBinding">CodeCompletionBinding</a>
@ -33,23 +33,24 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.ClassDoozer</td> <td>ICSharpCode.Core.ClassDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>class:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
The fully qualified type name of the attribute to create. The fully qualified type name of the class to create an instace of.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Everywhere where objects are expected.</td> <td>Everywhere where objects are expected.</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
Any kind of object. Any kind of object.
</td> </td>
@ -63,30 +64,32 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CodeCompletionBindingDoozer</td> <td>ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CodeCompletionBindingDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>extensions:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
Optional, list of semicolon-separated entries of the file extensions handled by the binding. Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
If no extensions attribute is specified, the binding is activated in all files.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th>extensions:</td>
<td class="userequired">optional</td>
<td> <td>
Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding). 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> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /AddIns/DefaultTextEditor/CodeCompletion</td> <td>Only in /AddIns/DefaultTextEditor/CodeCompletion</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
The ICodeCompletionBinding class specified with the 'class' attribute, or a 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 wrapper that lazy-loads the actual class when it is used in a file with the specified
@ -102,53 +105,59 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.DebuggerDoozer</td> <td>ICSharpCode.Core.DebuggerDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
Name of the IDebugger class.
</td>
</tr>
<tr> <tr>
<th>supportsStart:</td> <th>supportsStart:</td>
<td class="userequired">optional</td>
<td> <td>
Specifies if the debugger supports the 'Start' command. Default: true Specifies if the debugger supports the 'Start' command. Default: true
</td> </td>
</tr> </tr>
<tr> <tr>
<th>supportsStartWithoutDebugger:</td> <th>supportsStartWithoutDebugger:</td>
<td class="userequired">optional</td>
<td> <td>
Specifies if the debugger supports the 'StartWithoutDebugger' command. Default: true Specifies if the debugger supports the 'StartWithoutDebugger' command. Default: true
</td> </td>
</tr> </tr>
<tr> <tr>
<th>supportsStop:</td> <th>supportsStop:</td>
<td class="userequired">optional</td>
<td> <td>
Specifies if the debugger supports the 'Stop' (kill running process) command. Default: true Specifies if the debugger supports the 'Stop' (kill running process) command. Default: true
</td> </td>
</tr> </tr>
<tr> <tr>
<th>supportsStepping:</td> <th>supportsStepping:</td>
<td class="userequired">optional</td>
<td> <td>
Specifies if the debugger supports stepping. Default: false Specifies if the debugger supports stepping. Default: false
</td> </td>
</tr> </tr>
<tr> <tr>
<th>supportsExecutionControl:</td> <th>supportsExecutionControl:</td>
<td class="userequired">optional</td>
<td> <td>
Specifies if the debugger supports execution control (break, resume). Default: false Specifies if the debugger supports execution control (break, resume). Default: false
</td> </td>
</tr> </tr>
<tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>class:</td> <th colspan=2>Usage:</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> <td>Only in /SharpDevelop/Services/DebuggerService/Debugger</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An DebuggerDescriptor object that exposes the attributes and the IDebugger object (lazy-loading). An DebuggerDescriptor object that exposes the attributes and the IDebugger object (lazy-loading).
</td> </td>
@ -162,36 +171,37 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.DialogPanelDoozer</td> <td>ICSharpCode.Core.DialogPanelDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>class:</td> <th colspan=2>class:</td>
<td> <td>
Name of the IDialogPanel class. Optional if the page has subpages. Name of the IDialogPanel class. Optional if the page has subpages.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>label:</td> <th>label:</td>
<td class="userequired">required</td>
<td> <td>
Caption of the dialog panel. Caption of the dialog panel.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Children:</td> <th colspan=2>Children:</td>
<td> <td>
In the SharpDevelop options, option pages can have subpages by specifying them In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree. as children in the AddInTree.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td> <td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
A DefaultDialogPanelDescriptor object. A DefaultDialogPanelDescriptor object.
</td> </td>
@ -205,24 +215,25 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.DirectoryDoozer</td> <td>ICSharpCode.Core.DirectoryDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>path:</td> <th>path:</td>
<td class="userequired">required</td>
<td> <td>
Path relative to the directory which contains the .addin file defining the codon. Path relative to the directory which contains the .addin file defining the codon.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Where directory paths to a folder inside the addin directory are expected, e.g. <td>Where directory paths to a folder inside the addin directory are expected, e.g.
/SharpDevelop/BackendBindings/Templates</td> /SharpDevelop/BackendBindings/Templates</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
A string containing the full path name. A string containing the full path name.
</td> </td>
@ -233,52 +244,77 @@ It is based on SharpDevelop 2.0.0.590.</p>
<h2><a name="DisplayBinding">DisplayBinding</a></h2> <h2><a name="DisplayBinding">DisplayBinding</a></h2>
<p> <p>
Creates DisplayBindingDescriptor objects. Creates DisplayBindingDescriptor objects.
Primary display bindings can provide editors for additional file types
(like the ResourceEditor), secondary display bindings can add tabs to
existing display bindings (like the form designer).
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.DisplayBindingDoozer</td> <td>ICSharpCode.Core.DisplayBindingDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>class:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
Name of the IDisplayBinding or ISecondaryDisplayBinding class. Name of the IDisplayBinding or ISecondaryDisplayBinding class.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>type:</td> <th>type:</td>
<td class="userequired">optional</td>
<td> <td>
Type of the display binding (either "Primary" or "Secondary"). Default: "Primary". Type of the display binding (either "Primary" or "Secondary"). Default: "Primary".
</td> </td>
</tr> </tr>
<tr> <tr>
<th>fileNamePattern:</td> <th>fileNamePattern:</td>
<td class="userequired">optional</td>
<td> <td>
Optional. Regular expression that specifies the file names for which the display binding Regular expression that specifies the file names for which the display binding
will be used. Example: "\.res(x|ources)$" will be used. Example: "\.res(x|ources)$"
</td> </td>
</tr> </tr>
<tr> <tr>
<th>languagePattern:</td> <th>languagePattern:</td>
<td class="userequired">optional</td>
<td> <td>
Optional. Regular expression that specifies the language for which the display binding Regular expression that specifies the language for which the display binding
will be used. Example: "\Resource Files$" will be used. Example: "\Resource Files$"
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Workbench/DisplayBindings</td> <td>Only in /SharpDevelop/Workbench/DisplayBindings</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An DisplayBindingDescriptor object that wraps either a IDisplayBinding An DisplayBindingDescriptor object that wraps either a IDisplayBinding
or a ISecondaryDisplayBinding object. or a ISecondaryDisplayBinding object.
</td> </td>
</tr> </tr>
</table> </table>
<p><span class="exampleTitle">Example: Primary display binding: Resource editor</span>
<br><pre>
&lt;Path name = "/SharpDevelop/Workbench/DisplayBindings"&gt;
&lt;DisplayBinding id = "ResourceEditor"
class = "ResourceEditor.ResourceEditorDisplayBinding"
insertbefore = "Text"
fileNamePattern = "\.res(x|ources)$"
languagePattern = "^ResourceFiles$"/&gt;
&lt;/Path&gt;</pre></p>
<p><span class="exampleTitle">Example: Secondary display binding: Form designer</span>
<br><pre>
&lt;Path name = "/SharpDevelop/Workbench/DisplayBindings"&gt;
&lt;DisplayBinding id = "FormDesigner"
type = "Secondary"
class = "ICSharpCode.FormDesigner.FormDesignerSecondaryDisplayBinding"
fileNamePattern = "\.(cs|vb)$"
languagePattern = "^(C#|VBNet)$" /&gt;
&lt;/Path&gt;</pre></p>
</div> </div>
<div> <div>
<h2><a name="EditAction">EditAction</a></h2> <h2><a name="EditAction">EditAction</a></h2>
@ -287,12 +323,13 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.EditActionDoozer</td> <td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.EditActionDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>keys:</td> <th>keys:</td>
<td class="userequired">required</td>
<td> <td>
Comma-separated list of keyboard shortcuts that activate the edit action. Comma-separated list of keyboard shortcuts that activate the edit action.
E.g. "Control|C,Control|Insert" E.g. "Control|C,Control|Insert"
@ -300,17 +337,18 @@ It is based on SharpDevelop 2.0.0.590.</p>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
Name of the IEditAction class. Name of the IEditAction class.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /AddIns/DefaultTextEditor/EditActions</td> <td>Only in /AddIns/DefaultTextEditor/EditActions</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An IEditAction object. An IEditAction object.
</td> </td>
@ -324,29 +362,31 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.FileFilterDoozer</td> <td>ICSharpCode.Core.FileFilterDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>name:</td> <th>name:</td>
<td class="userequired">required</td>
<td> <td>
The name of the file filter entry. The name of the file filter entry.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>extensions:</td> <th>extensions:</td>
<td class="userequired">required</td>
<td> <td>
The extensions associated with this file filter entry. The extensions associated with this file filter entry.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Workbench/FileFilter</td> <td>Only in /SharpDevelop/Workbench/FileFilter</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
String in the format "name|extensions". String in the format "name|extensions".
</td> </td>
@ -361,38 +401,38 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.IconDoozer</td> <td>ICSharpCode.Core.IconDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>resource:</td> <th>resource:</td>
<td class="userequired">required</td>
<td> <td>
This attribute must be specified. It is the name of a bitmap resource The name of a bitmap resource in the resource service.
in the resource service.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>language:</td> <th colspan=2>language:</td>
<td> <td>
This attribute is specified when a project icon association should be created. This attribute is specified when a project icon association should be created.
It specifies the language of the project types that use the icon. It specifies the language of the project types that use the icon.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>extensions:</td> <th colspan=2>extensions:</td>
<td> <td>
This attribute is specified when a file icon association should be created. 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. It specifies the semicolon-separated list of file types that use the icon.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /Workspace/Icons</td> <td>Only in /Workspace/Icons</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An IconDescriptor object that exposes the attributes. An IconDescriptor object that exposes the attributes.
</td> </td>
@ -407,32 +447,32 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.IncludeDoozer</td> <td>ICSharpCode.Core.IncludeDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>item:</td> <th colspan=2>item:</td>
<td> <td>
When this attribute is used, the include doozer builds the item that is at the When this attribute is used, the include doozer builds the item that is at the
addin tree location specified by this attribute. addin tree location specified by this attribute.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>path:</td> <th colspan=2>path:</td>
<td> <td>
When this attribute is used, the include doozer builds all items inside the When this attribute is used, the include doozer builds all items inside the
path addin tree location specified by this attribute and returns an path addin tree location specified by this attribute and returns an
IBuildItemsModifier which includes all items in the output list. IBuildItemsModifier which includes all items in the output list.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Everywhere</td> <td>Everywhere</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
Any object, depending on the included codon(s). Any object, depending on the included codon(s).
</td> </td>
@ -446,41 +486,45 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.LanguageBindingDoozer</td> <td>ICSharpCode.Core.LanguageBindingDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>guid:</td> <th>guid:</td>
<td class="userequired">required</td>
<td> <td>
Project type GUID of the project used by MsBuild. Project type GUID of the project used by MsBuild.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>supportedextensions:</td> <th>supportedextensions:</td>
<td class="userequired">required</td>
<td> <td>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo") Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</td> </td>
</tr> </tr>
<tr> <tr>
<th>projectfileextension:</td> <th>projectfileextension:</td>
<td class="userequired">required</td>
<td> <td>
File extension of project files. (e.g. ".booproj") File extension of project files. (e.g. ".booproj")
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
Name of the ILanguageBinding class. Name of the ILanguageBinding class.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Workbench/LanguageBindings</td> <td>Only in /SharpDevelop/Workbench/LanguageBindings</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An LanguageBindingDescriptor object that wraps the ILanguageBinding object. An LanguageBindingDescriptor object that wraps the ILanguageBinding object.
</td> </td>
@ -494,20 +538,30 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.MenuItemDoozer</td> <td>ICSharpCode.Core.MenuItemDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>label:</td>
<td class="userequired">required</td>
<td>
Label of the menu item.
</td>
</tr>
<tr> <tr>
<th>type:</td> <th>type:</td>
<td class="userequired">optional</td>
<td> <td>
This attribute must be specified and one of these values: This attribute must be one of these values:
Separator, CheckBox, Item=Command, Menu (=with subitems), Separator, CheckBox, Item=Command, Menu (=with subitems),
Builder (=class implementing ISubmenuBuilder) Builder (=class implementing ISubmenuBuilder).
Default: Command.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>loadclasslazy:</td> <th>loadclasslazy:</td>
<td class="userequired">optional</td>
<td> <td>
Only for the type "Item"/"Command". Only for the type "Item"/"Command".
When set to false, the command class is loaded When set to false, the command class is loaded
@ -516,42 +570,53 @@ It is based on SharpDevelop 2.0.0.590.</p>
</tr> </tr>
<tr> <tr>
<th>icon:</td> <th>icon:</td>
<td class="userequired">optional</td>
<td> <td>
Icon of the menu item. Icon of the menu item.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>label:</td> <th>class:</td>
<td class="userequired">optional</td>
<td> <td>
Label of the menu item. Command class that is run when item is clicked.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th>link:</td>
<td class="userequired">optional</td>
<td> <td>
Command class that is run when item is clicked. Only for the type "Item"/"Command". Opens a webpage instead of running a command when
clicking the item.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr>
<tr> <tr>
<th>Children:</td> <th>shortcut:</td>
<td class="userequired">optional</td>
<td>
Shortcut that activates the command (e.g. "Control|S").
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Children:</td>
<td> <td>
If "type" is "Menu", the item can have sub-menuitems. If "type" is "Menu", the item can have sub-menuitems.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</td> <td>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
A ToolStrip* object, depending on the type attribute. Any ToolStrip* object, depending on the type attribute.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Conditions:</td> <th colspan=2>Conditions:</td>
<td>MenuMode</td> <td>Conditions are handled by the item, "Exclude" maps to "Visible = false", "Disable" to "Enabled = false"</td>
</tr> </tr>
</table> </table>
</div> </div>
@ -562,12 +627,20 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.PadDoozer</td> <td>ICSharpCode.Core.PadDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
IPadContent class that is loaded when the pad content is shown for the first time.
</td>
</tr>
<tr> <tr>
<th>title:</td> <th>title:</td>
<td class="userequired">required</td>
<td> <td>
Title of the pad that is shown in the user interface. Title of the pad that is shown in the user interface.
Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}" Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}"
@ -575,14 +648,16 @@ It is based on SharpDevelop 2.0.0.590.</p>
</tr> </tr>
<tr> <tr>
<th>icon:</td> <th>icon:</td>
<td class="userequired">optional</td>
<td> <td>
Optional, specifies the name of the icon resource used for the pad. Specifies the name of the icon resource used for the pad.
Pad icon resources must be registered with the ResourceService before the Pad icon resources must be registered with the ResourceService before the
workbench is loaded! workbench is loaded!
</td> </td>
</tr> </tr>
<tr> <tr>
<th>category:</td> <th>category:</td>
<td class="userequired">optional</td>
<td> <td>
Category of the pad. It is possible to create menu items that automatically Category of the pad. It is possible to create menu items that automatically
contain show commands for all pads in a certain category. contain show commands for all pads in a certain category.
@ -593,23 +668,18 @@ It is based on SharpDevelop 2.0.0.590.</p>
</tr> </tr>
<tr> <tr>
<th>shortcut:</td> <th>shortcut:</td>
<td class="userequired">optional</td>
<td> <td>
Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T"). Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
</td> </td>
</tr> </tr>
<tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>class:</td> <th colspan=2>Usage:</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> <td>Only in /Workspace/Parser</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An PadDescriptor object that wraps the IPadContent object. An PadDescriptor object that wraps the IPadContent object.
</td> </td>
@ -623,35 +693,35 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.ParserDoozer</td> <td>ICSharpCode.Core.ParserDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>supportedextensions:</td> <th colspan=2>supportedextensions:</td>
<td> <td>
Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo") Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo")
</td> </td>
</tr> </tr>
<tr> <tr>
<th>projectfileextension:</td> <th colspan=2>projectfileextension:</td>
<td> <td>
File extension of project files. (e.g. ".booproj") File extension of project files. (e.g. ".booproj")
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th colspan=2>class:</td>
<td> <td>
Name of the IParser class. Name of the IParser class.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /Workspace/Parser</td> <td>Only in /Workspace/Parser</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An ParserDescriptor object that wraps the IParser object. An ParserDescriptor object that wraps the IParser object.
</td> </td>
@ -665,29 +735,31 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer</td> <td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>scheme:</td> <th>scheme:</td>
<td class="userequired">required</td>
<td> <td>
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage') Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th>class:</td>
<td class="userequired">required</td>
<td> <td>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension). Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Views/Browser/SchemeExtensions</td> <td>Only in /SharpDevelop/Views/Browser/SchemeExtensions</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading). An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
</td> </td>
@ -702,35 +774,38 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.SyntaxModeDoozer</td> <td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.SyntaxModeDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr> <tr>
<th>name:</td> <th>name:</td>
<td class="userequired">required</td>
<td> <td>
Name of the language for which the syntax mode is used. Name of the language for which the syntax mode is used.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>extensions:</td> <th>extensions:</td>
<td class="userequired">required</td>
<td> <td>
Semicolon-separated list of file extensions for which the syntax mode is used. Semicolon-separated list of file extensions for which the syntax mode is used.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>resource:</td> <th>resource:</td>
<td class="userequired">required</td>
<td> <td>
Fully qualified name of the resource file. Fully qualified name of the resource file.
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</td> <td>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Returns:</td>
<td> <td>
An AddInTreeSyntaxMode object that loads the resource from the addin assembly when An AddInTreeSyntaxMode object that loads the resource from the addin assembly when
its CreateTextReader method is called. its CreateTextReader method is called.
@ -745,57 +820,65 @@ It is based on SharpDevelop 2.0.0.590.</p>
</p> </p>
<table> <table>
<tr> <tr>
<th>Doozer name:</td> <th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.ToolbarItemDoozer</td> <td>ICSharpCode.Core.ToolbarItemDoozer</td>
</tr> </tr>
<tr><td colspan=2><hr><h3>Attributes:</h3></td></tr> <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>icon:</td>
<td class="userequired">optional</td>
<td>
Icon of the tool bar item.
</td>
</tr>
<tr> <tr>
<th>type:</td> <th>type:</td>
<td class="userequired">optional</td>
<td> <td>
This attribute must be specified and one of these values: This attribute must be one of these values:
Separator, CheckBox, Item, ComboBox, DropDownButton Separator, CheckBox, Item, ComboBox, DropDownButton
</td> </td>
</tr> </tr>
<tr> <tr>
<th>loadclasslazy:</td> <th>loadclasslazy:</td>
<td class="userequired">optional</td>
<td> <td>
Only for the type "Item". When set to false, the command class is loaded Only for the type "Item". When set to false, the command class is loaded
immediately instead of the usual lazy-loading. immediately instead of the usual lazy-loading.
</td> </td>
</tr> </tr>
<tr>
<th>icon:</td>
<td>
Icon of the tool bar item.
</td>
</tr>
<tr> <tr>
<th>tooltip:</td> <th>tooltip:</td>
<td class="userequired">optional</td>
<td> <td>
Tooltip of the tool bar item. Tooltip of the tool bar item.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>class:</td> <th colspan=2>class:</td>
<td> <td>
Command class that is run when item is clicked; or class that manages Command class that is run when item is clicked; or class that manages
the ComboBox/DropDownButton. the ComboBox/DropDownButton. Required for everything except "Separator".
</td> </td>
</tr> </tr>
<tr><td colspan=2><hr></td></tr> <tr><td colspan=3><hr></td></tr>
<tr> <tr>
<th>Usage:</td> <th colspan=2>Usage:</td>
<td>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</td> <td>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</td>
</tr> </tr>
<tr> <tr>
<th>Returns:</td> <th colspan=2>Children:</td>
<td>A drop down button has menu items as sub elements.</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td> <td>
A ToolStrip* object, depending on the type attribute. A ToolStrip* object, depending on the type attribute.
</td> </td>
</tr> </tr>
<tr> <tr>
<th>Conditions:</td> <th colspan=2>Conditions:</td>
<td>MenuMode</td> <td>Conditions are handled by the item, "Exclude" maps to "Visible = false", "Disable" to "Enabled = false"</td>
</tr> </tr>
</table> </table>
</div> </div>

4
doc/technotes/listing.css

@ -53,6 +53,10 @@ hr {
.exampleTitle { .exampleTitle {
font-weight: bold; font-weight: bold;
} }
.userequired {
font-style: italic;
width: 9ex;
}
pre { pre {
margin-top: -10px !important; margin-top: -10px !important;
margin-top: 4px; margin-top: 4px;

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

@ -73,10 +73,10 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
/// <summary> /// <summary>
/// Creates browser scheme extensions that can intercept calls on one protocol. /// Creates browser scheme extensions that can intercept calls on one protocol.
/// </summary> /// </summary>
/// <attribute name="scheme"> /// <attribute name="scheme" use="required">
/// Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage') /// Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
/// </attribute> /// </attribute>
/// <attribute name="class"> /// <attribute name="class" use="required">
/// Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension). /// Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
/// </attribute> /// </attribute>
/// <usage>Only in /SharpDevelop/Views/Browser/SchemeExtensions</usage> /// <usage>Only in /SharpDevelop/Views/Browser/SchemeExtensions</usage>

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

@ -17,10 +17,10 @@ namespace ICSharpCode.Core
/// <attribute name="class"> /// <attribute name="class">
/// Name of the IDialogPanel class. Optional if the page has subpages. /// Name of the IDialogPanel class. Optional if the page has subpages.
/// </attribute> /// </attribute>
/// <attribute name="label"> /// <attribute name="label" use="required">
/// Caption of the dialog panel. /// Caption of the dialog panel.
/// </attribute> /// </attribute>
/// <children> /// <children childTypes="DialogPanel">
/// In the SharpDevelop options, option pages can have subpages by specifying them /// In the SharpDevelop options, option pages can have subpages by specifying them
/// as children in the AddInTree. /// as children in the AddInTree.
/// </children> /// </children>

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

@ -14,7 +14,7 @@ namespace ICSharpCode.Core
/// <summary> /// <summary>
/// Creates path names using a relative to the folder containing the addin file. /// Creates path names using a relative to the folder containing the addin file.
/// </summary> /// </summary>
/// <attribute name="path"> /// <attribute name="path" use="required">
/// Path relative to the directory which contains the .addin file defining the codon. /// Path relative to the directory which contains the .addin file defining the codon.
/// </attribute> /// </attribute>
/// <usage>Where directory paths to a folder inside the addin directory are expected, e.g. /// <usage>Where directory paths to a folder inside the addin directory are expected, e.g.

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

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

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

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

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

@ -15,19 +15,22 @@ namespace ICSharpCode.Core
{ {
/// <summary> /// <summary>
/// Creates DisplayBindingDescriptor objects. /// Creates DisplayBindingDescriptor objects.
/// Primary display bindings can provide editors for additional file types
/// (like the ResourceEditor), secondary display bindings can add tabs to
/// existing display bindings (like the form designer).
/// </summary> /// </summary>
/// <attribute name="class"> /// <attribute name="class" use="required">
/// Name of the IDisplayBinding or ISecondaryDisplayBinding class. /// Name of the IDisplayBinding or ISecondaryDisplayBinding class.
/// </attribute> /// </attribute>
/// <attribute name="type"> /// <attribute name="type" use="optional" enum="Primary;Secondary">
/// Type of the display binding (either "Primary" or "Secondary"). Default: "Primary". /// Type of the display binding (either "Primary" or "Secondary"). Default: "Primary".
/// </attribute> /// </attribute>
/// <attribute name="fileNamePattern"> /// <attribute name="fileNamePattern" use="optional">
/// Optional. Regular expression that specifies the file names for which the display binding /// Regular expression that specifies the file names for which the display binding
/// will be used. Example: "\.res(x|ources)$" /// will be used. Example: "\.res(x|ources)$"
/// </attribute> /// </attribute>
/// <attribute name="languagePattern"> /// <attribute name="languagePattern" use="optional">
/// Optional. Regular expression that specifies the language for which the display binding /// Regular expression that specifies the language for which the display binding
/// will be used. Example: "\Resource Files$" /// will be used. Example: "\Resource Files$"
/// </attribute> /// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/DisplayBindings</usage> /// <usage>Only in /SharpDevelop/Workbench/DisplayBindings</usage>
@ -35,6 +38,24 @@ namespace ICSharpCode.Core
/// An DisplayBindingDescriptor object that wraps either a IDisplayBinding /// An DisplayBindingDescriptor object that wraps either a IDisplayBinding
/// or a ISecondaryDisplayBinding object. /// or a ISecondaryDisplayBinding object.
/// </returns> /// </returns>
/// <example title="Primary display binding: Resource editor">
/// &lt;Path name = "/SharpDevelop/Workbench/DisplayBindings"&gt;
/// &lt;DisplayBinding id = "ResourceEditor"
/// class = "ResourceEditor.ResourceEditorDisplayBinding"
/// insertbefore = "Text"
/// fileNamePattern = "\.res(x|ources)$"
/// languagePattern = "^ResourceFiles$"/&gt;
/// &lt;/Path&gt;
/// </example>
/// <example title="Secondary display binding: Form designer">
/// &lt;Path name = "/SharpDevelop/Workbench/DisplayBindings"&gt;
/// &lt;DisplayBinding id = "FormDesigner"
/// type = "Secondary"
/// class = "ICSharpCode.FormDesigner.FormDesignerSecondaryDisplayBinding"
/// fileNamePattern = "\.(cs|vb)$"
/// languagePattern = "^(C#|VBNet)$" /&gt;
/// &lt;/Path&gt;
/// </example>
public class DisplayBindingDoozer : IDoozer public class DisplayBindingDoozer : IDoozer
{ {
/// <summary> /// <summary>

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

@ -17,16 +17,16 @@ namespace ICSharpCode.Core
/// <summary> /// <summary>
/// Creates LanguageBindingDescriptor objects for the project service. /// Creates LanguageBindingDescriptor objects for the project service.
/// </summary> /// </summary>
/// <attribute name="guid"> /// <attribute name="guid" use="required">
/// Project type GUID of the project used by MsBuild. /// Project type GUID of the project used by MsBuild.
/// </attribute> /// </attribute>
/// <attribute name="supportedextensions"> /// <attribute name="supportedextensions" use="required">
/// Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo") /// Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
/// </attribute> /// </attribute>
/// <attribute name="projectfileextension"> /// <attribute name="projectfileextension" use="required">
/// File extension of project files. (e.g. ".booproj") /// File extension of project files. (e.g. ".booproj")
/// </attribute> /// </attribute>
/// <attribute name="class"> /// <attribute name="class" use="required">
/// Name of the ILanguageBinding class. /// Name of the ILanguageBinding class.
/// </attribute> /// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/LanguageBindings</usage> /// <usage>Only in /SharpDevelop/Workbench/LanguageBindings</usage>

2
src/Main/Base/Project/Src/Services/ParserService/DefaultProjectContent.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.Core
{ {
public class DefaultProjectContent : IProjectContent public class DefaultProjectContent : IProjectContent
{ {
List<IProjectContent> referencedContents = new List<IProjectContent>(); protected readonly List<IProjectContent> referencedContents = new List<IProjectContent>();
// we use a list of Dictionaries because we need multiple dictionaries: // we use a list of Dictionaries because we need multiple dictionaries:
// each uses another StringComparer // each uses another StringComparer

3
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -68,7 +68,8 @@ namespace ICSharpCode.Core
void UpdateReferenceInterDependencies() void UpdateReferenceInterDependencies()
{ {
foreach (IProjectContent referencedContent in this.ReferencedContents) { // Use ToArray because the collection could be modified inside the loop
foreach (IProjectContent referencedContent in this.referencedContents.ToArray()) {
if (referencedContent is ReflectionProjectContent) { if (referencedContent is ReflectionProjectContent) {
((ReflectionProjectContent)referencedContent).InitializeReferences(); ((ReflectionProjectContent)referencedContent).InitializeReferences();
} }

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

@ -20,11 +20,11 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
/// <summary> /// <summary>
/// Creates IEditAction objects for the text editor. /// Creates IEditAction objects for the text editor.
/// </summary> /// </summary>
/// <attribute name="keys"> /// <attribute name="keys" use="required">
/// Comma-separated list of keyboard shortcuts that activate the edit action. /// Comma-separated list of keyboard shortcuts that activate the edit action.
/// E.g. "Control|C,Control|Insert" /// E.g. "Control|C,Control|Insert"
/// </attribute> /// </attribute>
/// <attribute name="class"> /// <attribute name="class" use="required">
/// Name of the IEditAction class. /// Name of the IEditAction class.
/// </attribute> /// </attribute>
/// <usage>Only in /AddIns/DefaultTextEditor/EditActions</usage> /// <usage>Only in /AddIns/DefaultTextEditor/EditActions</usage>

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

@ -46,13 +46,13 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
/// Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the /// Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
/// addin assembly. /// addin assembly.
/// </summary> /// </summary>
/// <attribute name="name"> /// <attribute name="name" use="required">
/// Name of the language for which the syntax mode is used. /// Name of the language for which the syntax mode is used.
/// </attribute> /// </attribute>
/// <attribute name="extensions"> /// <attribute name="extensions" use="required">
/// Semicolon-separated list of file extensions for which the syntax mode is used. /// Semicolon-separated list of file extensions for which the syntax mode is used.
/// </attribute> /// </attribute>
/// <attribute name="resource"> /// <attribute name="resource" use="required">
/// Fully qualified name of the resource file. /// Fully qualified name of the resource file.
/// </attribute> /// </attribute>
/// <usage>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</usage> /// <usage>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</usage>

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

@ -25,13 +25,13 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
/// <summary> /// <summary>
/// Creates code completion bindings that manage code completion for one language. /// Creates code completion bindings that manage code completion for one language.
/// </summary> /// </summary>
/// <attribute name="extensions"> /// <attribute name="class" use="required">
/// 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). /// Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
/// </attribute> /// </attribute>
/// <attribute name="extensions" use="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>
/// <usage>Only in /AddIns/DefaultTextEditor/CodeCompletion</usage> /// <usage>Only in /AddIns/DefaultTextEditor/CodeCompletion</usage>
/// <returns> /// <returns>
/// The ICodeCompletionBinding class specified with the 'class' attribute, or a /// The ICodeCompletionBinding class specified with the 'class' attribute, or a

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

@ -14,8 +14,8 @@ namespace ICSharpCode.Core
/// Creates object instances by invocing a type's parameterless constructor /// Creates object instances by invocing a type's parameterless constructor
/// via System.Reflection. /// via System.Reflection.
/// </summary> /// </summary>
/// <attribute name="class"> /// <attribute name="class" use="required">
/// The fully qualified type name of the attribute to create. /// The fully qualified type name of the class to create an instace of.
/// </attribute> /// </attribute>
/// <usage>Everywhere where objects are expected.</usage> /// <usage>Everywhere where objects are expected.</usage>
/// <returns> /// <returns>

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

@ -13,10 +13,10 @@ namespace ICSharpCode.Core
/// <summary> /// <summary>
/// Creates file filter entries for OpenFileDialogs or SaveFileDialogs. /// Creates file filter entries for OpenFileDialogs or SaveFileDialogs.
/// </summary> /// </summary>
/// <attribute name="name"> /// <attribute name="name" use="required">
/// The name of the file filter entry. /// The name of the file filter entry.
/// </attribute> /// </attribute>
/// <attribute name="extensions"> /// <attribute name="extensions" use="required">
/// The extensions associated with this file filter entry. /// The extensions associated with this file filter entry.
/// </attribute> /// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/FileFilter</usage> /// <usage>Only in /SharpDevelop/Workbench/FileFilter</usage>

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

@ -16,9 +16,8 @@ namespace ICSharpCode.Core
/// Creates associations between file types or node types in the project browser and /// Creates associations between file types or node types in the project browser and
/// icons in the resource service. /// icons in the resource service.
/// </summary> /// </summary>
/// <attribute name="resource"> /// <attribute name="resource" use="required">
/// This attribute must be specified. It is the name of a bitmap resource /// The name of a bitmap resource in the resource service.
/// in the resource service.
/// </attribute> /// </attribute>
/// <attribute name="language"> /// <attribute name="language">
/// This attribute is specified when a project icon association should be created. /// This attribute is specified when a project icon association should be created.

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

@ -14,33 +14,41 @@ namespace ICSharpCode.Core
/// <summary> /// <summary>
/// Creates menu items from a location in the addin tree. /// Creates menu items from a location in the addin tree.
/// </summary> /// </summary>
/// <attribute name="type"> /// <attribute name="label" use="required">
/// This attribute must be specified and one of these values: /// Label of the menu item.
/// </attribute>
/// <attribute name="type" use="optional" enum="Separator;CheckBox;Item;Command;Menu;Builder">
/// This attribute must be one of these values:
/// Separator, CheckBox, Item=Command, Menu (=with subitems), /// Separator, CheckBox, Item=Command, Menu (=with subitems),
/// Builder (=class implementing ISubmenuBuilder) /// Builder (=class implementing ISubmenuBuilder).
/// Default: Command.
/// </attribute> /// </attribute>
/// <attribute name="loadclasslazy"> /// <attribute name="loadclasslazy" use="optional">
/// Only for the type "Item"/"Command". /// Only for the type "Item"/"Command".
/// When set to false, the command class is loaded /// When set to false, the command class is loaded
/// immediately instead of the usual lazy-loading. /// immediately instead of the usual lazy-loading.
/// </attribute> /// </attribute>
/// <attribute name="icon"> /// <attribute name="icon" use="optional">
/// Icon of the menu item. /// Icon of the menu item.
/// </attribute> /// </attribute>
/// <attribute name="label"> /// <attribute name="class" use="optional">
/// Label of the menu item.
/// </attribute>
/// <attribute name="class">
/// Command class that is run when item is clicked. /// Command class that is run when item is clicked.
/// </attribute> /// </attribute>
/// <children> /// <attribute name="link" use="optional">
/// Only for the type "Item"/"Command". Opens a webpage instead of running a command when
/// clicking the item.
/// </attribute>
/// <attribute name="shortcut" use="optional">
/// Shortcut that activates the command (e.g. "Control|S").
/// </attribute>
/// <children childTypes="MenuItem">
/// If "type" is "Menu", the item can have sub-menuitems. /// If "type" is "Menu", the item can have sub-menuitems.
/// </children> /// </children>
/// <usage>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</usage> /// <usage>Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu</usage>
/// <returns> /// <returns>
/// A ToolStrip* object, depending on the type attribute. /// Any ToolStrip* object, depending on the type attribute.
/// </returns> /// </returns>
/// <conditions>MenuMode</conditions> /// <conditions>Conditions are handled by the item, "Exclude" maps to "Visible = false", "Disable" to "Enabled = false"</conditions>
public class MenuItemDoozer : IDoozer public class MenuItemDoozer : IDoozer
{ {
/// <summary> /// <summary>

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

@ -14,29 +14,30 @@ namespace ICSharpCode.Core
/// <summary> /// <summary>
/// Creates tool bar items from a location in the addin tree. /// Creates tool bar items from a location in the addin tree.
/// </summary> /// </summary>
/// <attribute name="type"> /// <attribute name="icon" use="optional">
/// This attribute must be specified and one of these values: /// Icon of the tool bar item.
/// </attribute>
/// <attribute name="type" use="optional" enum="Separator;CheckBox;Item;ComboBox;DropDownButton">
/// This attribute must be one of these values:
/// Separator, CheckBox, Item, ComboBox, DropDownButton /// Separator, CheckBox, Item, ComboBox, DropDownButton
/// </attribute> /// </attribute>
/// <attribute name="loadclasslazy"> /// <attribute name="loadclasslazy" use="optional">
/// Only for the type "Item". When set to false, the command class is loaded /// Only for the type "Item". When set to false, the command class is loaded
/// immediately instead of the usual lazy-loading. /// immediately instead of the usual lazy-loading.
/// </attribute> /// </attribute>
/// <attribute name="icon"> /// <attribute name="tooltip" use="optional">
/// Icon of the tool bar item.
/// </attribute>
/// <attribute name="tooltip">
/// Tooltip of the tool bar item. /// Tooltip of the tool bar item.
/// </attribute> /// </attribute>
/// <attribute name="class"> /// <attribute name="class">
/// Command class that is run when item is clicked; or class that manages /// Command class that is run when item is clicked; or class that manages
/// the ComboBox/DropDownButton. /// the ComboBox/DropDownButton. Required for everything except "Separator".
/// </attribute> /// </attribute>
/// <usage>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</usage> /// <usage>Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar</usage>
/// <children childTypes="MenuItem">A drop down button has menu items as sub elements.</children>
/// <returns> /// <returns>
/// A ToolStrip* object, depending on the type attribute. /// A ToolStrip* object, depending on the type attribute.
/// </returns> /// </returns>
/// <conditions>MenuMode</conditions> /// <conditions>Conditions are handled by the item, "Exclude" maps to "Visible = false", "Disable" to "Enabled = false"</conditions>
public class ToolbarItemDoozer : IDoozer public class ToolbarItemDoozer : IDoozer
{ {
/// <summary> /// <summary>

156
src/Tools/BuildAddinDocumentation/MainClass.cs

@ -44,6 +44,7 @@ namespace BuildAddinDocumentation
sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\SharpDevelop.exe"))); sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\SharpDevelop.exe")));
//sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\ICSharpCode.Core.dll")));
Comparison<XmlElement> comparison = delegate(XmlElement a, XmlElement b) { Comparison<XmlElement> comparison = delegate(XmlElement a, XmlElement b) {
string shortNameA = a.GetAttribute("name").Substring(a.GetAttribute("name").LastIndexOf('.') + 1); string shortNameA = a.GetAttribute("name").Substring(a.GetAttribute("name").LastIndexOf('.') + 1);
string shortNameB = b.GetAttribute("name").Substring(b.GetAttribute("name").LastIndexOf('.') + 1); string shortNameB = b.GetAttribute("name").Substring(b.GetAttribute("name").LastIndexOf('.') + 1);
@ -52,43 +53,152 @@ namespace BuildAddinDocumentation
doozers.Sort(comparison); doozers.Sort(comparison);
conditions.Sort(comparison); conditions.Sort(comparison);
Debug.WriteLine("Writing doozer list");
using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\DoozerList.html"))) { using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\DoozerList.html"))) {
WriteHeader(html, "Doozer List"); WriteHeader(html, "Doozer List");
WriteList(html, doozers, true); WriteList(html, doozers, true);
WriteFooter(html); WriteFooter(html);
} }
Debug.WriteLine("Writing condition list");
using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\ConditionList.html"))) { using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\ConditionList.html"))) {
WriteHeader(html, "Condition List"); WriteHeader(html, "Condition List");
WriteList(html, conditions, false); WriteList(html, conditions, false);
WriteFooter(html); WriteFooter(html);
} }
Debug.WriteLine("Building Addin schema");
XmlDocument doc = new XmlDocument();
doc.Load(Path.Combine(srcDir, "..\\data\\schemas\\Addin.xsd"));
UpdateSchema(doc, doozers);
doc.Save(Path.Combine(srcDir, "..\\data\\schemas\\Addin.xsd"));
}
static void RecursiveInsertDoozerList(XmlElement e, List<XmlElement> doozers)
{
List<XmlNode> oldChilds = new List<XmlNode>();
bool foundMark = false;
foreach (XmlNode node in e) {
if (foundMark) {
oldChilds.Add(node);
} else {
if (node.Value != null && node.Value.Trim() == "!!! INSERT DOOZER LIST !!!") {
foundMark = true;
}
}
}
if (foundMark) {
foreach (XmlNode node in oldChilds) {
e.RemoveChild(node);
}
foreach (XmlElement doozer in doozers) {
CreateChild(e, "element").SetAttribute("ref", doozer.GetAttribute("shortname"));
}
} else {
foreach (XmlNode node in e) {
if (node is XmlElement)
RecursiveInsertDoozerList((XmlElement)node, doozers);
}
}
}
static void UpdateSchema(XmlDocument doc, List<XmlElement> doozers)
{
List<XmlNode> oldChilds = new List<XmlNode>();
bool foundMark = false;
foreach (XmlNode node in doc.DocumentElement) {
if (foundMark) {
oldChilds.Add(node);
} else {
if (node.Value != null && node.Value.Trim() == "!!! DOOZER START !!!") {
foundMark = true;
}
}
}
foreach (XmlNode node in oldChilds) {
doc.DocumentElement.RemoveChild(node);
}
RecursiveInsertDoozerList(doc.DocumentElement, doozers);
foreach (XmlElement doozer in doozers) {
XmlElement e = CreateChild(doc.DocumentElement, "complexType");
e.SetAttribute("name", doozer.GetAttribute("shortname"));
XmlElement e2 = CreateChild(e, "complexContent");
XmlElement e3 = CreateChild(e2, "extension");
e3.SetAttribute("base", "AbstractCodon");
if (doozer["children"] != null) {
XmlElement choice = CreateChild(e3, "choice");
choice.SetAttribute("minOccurs", "0");
choice.SetAttribute("maxOccurs", "unbounded");
CreateChild(choice, "element").SetAttribute("ref", "ComplexCondition");
CreateChild(choice, "element").SetAttribute("ref", "Condition");
foreach (string child in doozer["children"].GetAttribute("childTypes").Split(';')) {
CreateChild(choice, "element").SetAttribute("ref", child);
}
}
foreach (XmlElement doozerChild in doozer) {
if (doozerChild.Name != "attribute")
continue;
XmlElement e4 = CreateChild(e3, "attribute");
e4.SetAttribute("name", doozerChild.GetAttribute("name"));
if (doozerChild.GetAttribute("use") == "required")
e4.SetAttribute("use", "required");
else
e4.SetAttribute("use", "optional");
XmlElement e5, e6;
if (!doozerChild.HasAttribute("enum")) {
e4.SetAttribute("type", "xs:string");
} else {
e5 = CreateChild(e4, "simpleType");
e6 = CreateChild(e5, "restriction");
e6.SetAttribute("base", "xs:string");
foreach (string val in doozerChild.GetAttribute("enum").Split(';')) {
CreateChild(e6, "enumeration").SetAttribute("value", val);
}
}
e5 = CreateChild(e4, "annotation");
e6 = CreateChild(e5, "documentation");
e6.InnerXml = XmlToHtml(doozerChild.InnerXml);
}
e = CreateChild(doc.DocumentElement, "element");
e.SetAttribute("name", doozer.GetAttribute("shortname"));
e.SetAttribute("type", doozer.GetAttribute("shortname"));
e2 = CreateChild(e, "annotation");
e3 = CreateChild(e2, "documentation");
e3.InnerXml = XmlToHtml(doozer["summary"].InnerXml);
}
}
static XmlElement CreateChild(XmlElement parent, string name)
{
XmlElement e = parent.OwnerDocument.CreateElement("xs:" + name, "http://www.w3.org/2001/XMLSchema");
parent.AppendChild(e);
return e;
} }
static void WriteList(StreamWriter html, List<XmlElement> elementList, bool isDoozer) static void WriteList(StreamWriter html, List<XmlElement> elementList, bool isDoozer)
{ {
html.WriteLine("<ul>"); html.WriteLine("<ul>");
foreach (XmlElement e in elementList) { for (int i = 0; i < elementList.Count; i++) {
XmlElement e = elementList[i];
string fullname = e.GetAttribute("name").Substring(2); string fullname = e.GetAttribute("name").Substring(2);
string shortName = fullname.Substring(fullname.LastIndexOf('.') + 1); string shortName = fullname.Substring(fullname.LastIndexOf('.') + 1);
if (shortName == "LazyLoadDoozer" || shortName == "LazyConditionEvaluator") continue; if (shortName == "LazyLoadDoozer" || shortName == "LazyConditionEvaluator") {
elementList.RemoveAt(i--);
continue;
}
if (isDoozer) if (isDoozer)
shortName = shortName.Substring(0, shortName.Length - "doozer".Length); shortName = shortName.Substring(0, shortName.Length - "doozer".Length);
else else
shortName = shortName.Substring(0, shortName.Length - "conditionEvaluator".Length); shortName = shortName.Substring(0, shortName.Length - "conditionEvaluator".Length);
if (shortName == "I") continue; // skip the interface if (shortName == "I") { // skip the interface
elementList.RemoveAt(i--);
continue;
}
e.SetAttribute("shortname", shortName);
html.WriteLine(" <li><a href=\"#" + shortName + "\">" + shortName + "</a>"); html.WriteLine(" <li><a href=\"#" + shortName + "\">" + shortName + "</a>");
} }
html.WriteLine("</ul>"); html.WriteLine("</ul>");
foreach (XmlElement e in elementList) { foreach (XmlElement e in elementList) {
string fullname = e.GetAttribute("name").Substring(2); string fullname = e.GetAttribute("name").Substring(2);
string shortName = fullname.Substring(fullname.LastIndexOf('.') + 1); string shortName = e.GetAttribute("shortname");
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("<div>");
html.WriteLine(" <h2><a name=\"" + shortName + "\">" + shortName + "</a></h2>"); html.WriteLine(" <h2><a name=\"" + shortName + "\">" + shortName + "</a></h2>");
@ -96,9 +206,9 @@ namespace BuildAddinDocumentation
html.WriteLine(" <table>"); html.WriteLine(" <table>");
html.WriteLine(" <tr>"); html.WriteLine(" <tr>");
if (isDoozer) if (isDoozer)
html.WriteLine(" <th>Doozer name:</td>"); html.WriteLine(" <th colspan=2>Doozer name:</td>");
else else
html.WriteLine(" <th>Condition name:</td>"); html.WriteLine(" <th colspan=2>Condition name:</td>");
html.WriteLine(" <td>" + fullname + "</td>"); html.WriteLine(" <td>" + fullname + "</td>");
html.WriteLine(" </tr>"); html.WriteLine(" </tr>");
bool lastWasAttribute = false; bool lastWasAttribute = false;
@ -110,20 +220,25 @@ namespace BuildAddinDocumentation
case "attribute": case "attribute":
if (!lastWasAttribute) { if (!lastWasAttribute) {
lastWasAttribute = true; lastWasAttribute = true;
html.WriteLine(" <tr><td colspan=2><hr><h3>Attributes:</h3></td></tr>"); html.WriteLine(" <tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>");
} }
html.WriteLine(" <tr>"); html.WriteLine(" <tr>");
html.WriteLine(" <th>" + sub.GetAttribute("name") + ":</td>"); if (sub.HasAttribute("use")) {
html.WriteLine(" <th>" + sub.GetAttribute("name") + ":</td>");
html.WriteLine(" <td class=\"userequired\">" + sub.GetAttribute("use") + "</td>");
} else {
html.WriteLine(" <th colspan=2>" + sub.GetAttribute("name") + ":</td>");
}
html.WriteLine(" <td>" + XmlToHtml(sub.InnerXml) + "</td>"); html.WriteLine(" <td>" + XmlToHtml(sub.InnerXml) + "</td>");
html.WriteLine(" </tr>"); html.WriteLine(" </tr>");
break; break;
default: default:
if (lastWasAttribute) { if (lastWasAttribute) {
lastWasAttribute = false; lastWasAttribute = false;
html.WriteLine(" <tr><td colspan=2><hr></td></tr>"); html.WriteLine(" <tr><td colspan=3><hr></td></tr>");
} }
html.WriteLine(" <tr>"); html.WriteLine(" <tr>");
html.WriteLine(" <th>" + char.ToUpper(sub.Name[0]) + sub.Name.Substring(1) + ":</td>"); html.WriteLine(" <th colspan=2>" + char.ToUpper(sub.Name[0]) + sub.Name.Substring(1) + ":</td>");
html.WriteLine(" <td>" + XmlToHtml(sub.InnerXml) + "</td>"); html.WriteLine(" <td>" + XmlToHtml(sub.InnerXml) + "</td>");
html.WriteLine(" </tr>"); html.WriteLine(" </tr>");
break; break;
@ -167,7 +282,12 @@ namespace BuildAddinDocumentation
{ {
XmlDocument doc = GetXmlDocu(projectFolder); XmlDocument doc = GetXmlDocu(projectFolder);
if (doc == null) return false; if (doc == null) return false;
foreach (XmlElement member in doc.DocumentElement["members"]) { foreach (XmlNode node in doc.DocumentElement["members"]) {
XmlElement member = node as XmlElement;
if (member == null) {
Debug.WriteLine(node.Value);
continue;
}
if (member.GetAttribute("name").EndsWith("Doozer")) if (member.GetAttribute("name").EndsWith("Doozer"))
doozers.Add(member); doozers.Add(member);
if (member.GetAttribute("name").EndsWith("ConditionEvaluator")) if (member.GetAttribute("name").EndsWith("ConditionEvaluator"))

Loading…
Cancel
Save