Exploring the IDE in order to customise it

So having found this section of the website Latest ide/Customization topics - ClarionHub
I wondered how far I could take the customisation process.

So this is what I’ve discovered so far, bearing in mind, I have “currently” no interest in dotnet I’m just coming from a Windows api perspective.

So yesterday I saw something which suggested dot net is just bindings so it got me thinking what exactly do this mean and so I started to peruse this section of the website.

A variety of XML files exist, eg C:\Clarion[version]\bin\Addins\Clarion.addin
inside lots of stuff, looks esoteric, but it can be worked out.

Some basics.Dot Net dll’s, are called Assemblies, they differ internally to a traditional win32 dll.
So you’ll need a tool like ILSpy Releases · icsharpcode/ILSpy · GitHub
https://github.com/icsharpcode/ILSpy/releases/download/v7.2.1/ILSpy_binaries_7.2.1.6856.zip
https://ilspy.net/

ILSpy is the open-source .NET assembly browser and decompiler.

To see whats inside, its alot more detailed than the Clarion LibMaker, which is what I was looking for originally.
In C:\Clarion[version]\bin\Addins\Clarion.addin there is this line.
<Import assembly=":Clarion.Core"/>
Refers to the Clarion.Core.Dll file found in C:\Clarion11\bin

Further down the Clarion.addin file is this section

<Path name = "/Workspace/Autostart">
		<Class id    = "StartRedirection"
		       class = "Clarion.Core.Redirection.StartupCode"/>
	</Path>

Now using ILSpy, load up the Clarion.Core.dll file. For the first time, there will be nothing in the left hand pane, and to remove entries which appear here, just right mouse click and choose remove to clear this pane.
File, Open, C:\Clarion11\bin\Clarion.Core.Dll
Expand the node Clarion.Core (11.0.0.13244, .NETFramework, v4.0)

You should now see a few nodes with { }, expand the one called Clarion.Core.Redirection and then you should see a greyed node called StartupCode.
This refers to the class = "Clarion.Core.Redirection.StartupCode"/> seen above in the Clarion.addin xml file.

Another useful tool is the XML notepad. Install - XmlNotepad (microsoft.github.io)

This makes it easy to view alot of these XML files.

Anyway click back on the node called StartupCode and in the right hand pane, click on the ellipse button with the 3 dots.

Now I dont know if this infringing SV licence agreement at this stage, but if you were to click on OpenFileDialog.InitialiseRedirection(); ILspy will then jump you to the node where InitialiseRedirection is, which happens to be at Clarion.Core.Redirection.OpenFileDialog.InitialiseRedirection and then you can see more bits of code.

Anyway this will help you get a feel for whats going on under the hood and maybe help you work out how you can further customise your IDE.

Some other observations. In the same Clarion.addin file is this section.

<MenuItem id = "Insert" label = "${res:XML.MainMenu.EditMenu.Insert}" type="Menu">
					<MenuItem id = "InsertColor"
					          label = "${res:XML.MainMenu.ToolMenu.InsColor}"
					          class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ShowColorDialog"/>
					<MenuItem id = "InsertClarionColor"
					          label = "${res:XML.MainMenu.ToolMenu.InsClarionColor}"
					          class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ShowClarionColorDialog"/>
					<MenuItem id       = "InsertGuid"
					          shortcut = "Control|Shift|G"
					          label    = "${res:XML.MainMenu.ToolMenu.InsGUID}"
					          class    = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.InsertGuidCommand"/>
				</MenuItem>

Shortcut Keys
shortcut = “Control|Shift|G”
Labels seem to be obtained from "${res:
This appears to be a ResourceService.GetString found in C:\Clarion11\bin\ICSharpCode.Core.dll

Anyway there are lots of other XML files in other subfolders.

C:\Clarion11\bin\Addins\BackendBindings\ClarionBinding\Common\Controls\SoftVelocity.Clarion.Runtime.Procedures.xml

This file might be the one that displays the tooltips when using the embed editor

<member name="M:Clarion.RTLProcs.CLIP(System.String)">
    <summary>
    Removes trailing spaces.
    </summary>
    <param name="strVar">A string expression.</param>
    <returns>A substring with no trailing spaces.</returns>      
</member>

Displays in a yellow box
STRING CLIP(STRING str)

Removes trailing spaces.
str:A string Expression.
Returns.A substring with no trailing spaces

When references to icons are made they tend to be:

Icons.[Size].[What]

Icons.24x24.EnableCodeCompletion
Icons.16x16.CommentRegion

Anyway, that might give others a bit more of a clue in order to further customise their IDE.

So now, I’m going to see if I can do a C6 retro layout, with the best bits that I like from C6 and the best bits from C7+ :shushing_face:

A few other useful links

How to view assembly contents

Assembly dissembler

Calling the dissembler

Loading VS powershell

Load Visual Studio without code,
Tools, Command Line, Developer Command Prompt

Found some more links to SharpDevelop which might be useful for customising the Clarion IDE a bit more, or trying to figure out how it all bolts together.

Source Forge links and files.
SharpDevelop - Browse Files at SourceForge.net

Github links and files
GitHub - icsharpcode/SharpDevelop: #develop (short for SharpDevelop) is a free IDE for .NET programming languages.

Copy of the #Develop website
ic#code (archive.org)

Forums - SharpDevelop Community (archive.org)

This is a Forum link on how to extend #develop
Extending SharpDevelop - SharpDevelop Community (archive.org)

There is a couple of chapters of “Inside SharpDevelop” which might be useful.
SharpDevelop - Browse /Inside SharpDevelop - Chapters at SourceForge.net

This might be the Inside SharpDevelop Paperback – 19 July 2004
by Christoph Wille (Author), Berhard Spuida (Author)

or it might be from this book.
Dissecting a C# Application: Inside SharpDevelop Paperback – 28 Jan. 2003
by Christian Holm (Author), Bernhard Spuida (Author), Mike Kruger (Author)

This is a link to which describes the Addin architecture in the IDE written by the lead developer of #Develop Daniel Grunwald.
Building Applications with the SharpDevelop Core - CodeProject

Anyway in the absence of any docs to upgrade/customise the Clarion IDE, this might help give some background info into how some parts of the IDE work.