This is still a very early attempt at editor macros. Lots of things don’t work… There seems to be something odd about the way the keyboard hook I am using handles the ShiftKey so a lot of things like Ctrl+Shift+LeftArrow don’t work but basic functionality is there!

Installation: Same as usual, “Tools –> Addin Manager”

Usage: Everything happens in the Editor Macros Pad. Use the Start/Stop buttons in the Record Macro group to record keystrokes. The keystrokes recorded will be displayed in the list control. Use the Start button in the Playback group to play them back!

The Pad is not visible by default, you open it from the View/Tools menu:

Open the Pad from View/Tools/Editor MacrosThere you have it!


Download: download EditorMacros.sdaddin
Version: 0.1
Updated: June 3, 2011
Size: 1.37 MB
Downloads: 834

Currently I am in the process of packaging all the addins into a “toolkit”. Giving them a common look, localization, etc, etc. It might take a few more weeks until I can release it though so in the meantime this little beauty should keep you going!

Using the free Krypton toolkit from the Component Factory that I have mentioned previously I found that it has the ability to set a theme for pretty much all the controls in the IDE.

My implementation doesn’t currently support a “custom” theme but it should be possible some time in the future.

Installation is currently the same as usual (Tools—> Addin Manager), download link is at the bottom or the page!


The last week or so I have been working on a better way to deliver and manage multiple addins. I am also thinking about how to provide access to the source code. Originally things were all in pieces as I was learning how the various parts work and so there was no really clear picture available (to me!) of what the best way would be. I think I have found a good solution and over the next few weeks I hope to make something available.

Any comments or suggestions on the direction I am taking would be much appreciated. If you are interested in contributing any code that would also be awesome, let me know!

The IDE will recursively scan the directory tree for *.addin files.

This means that I don’t have to put addins into individual folders under “\Clarion7\accessory\addins”. For my development I am now putting all the addins into “\Clarion7\accessory\addins\ClarionEdge”.

This means that I can now provide, for example, direct access to a version control repository containing all the addins and you can simple “checkout” the whole lot at once and stay up to date with the latest changes really easily. I still intend to supply individual “sdaddin” packages, more on that later, but now this brings me to the next point…

Source code, packages and version control!

Having your source in version control is a bit of a no brainer these days and I normally do that via a local server but in this case I want to allow access to others. ReadOnly initially but if there is interest it would be nice to allow those that are keen an element of interaction too!

Currently I am trialling the free SVN service provided at which is working nicely although at some point I may move to SourceForge or GoogleCode. Migration shouldn’t be a problem so that decision can wait a bit.

The cool thing about this, as I mentioned before, is that you will be able to “checkout” the addins directly into your Clarion7 IDE. Did I mention that is cool? Smile 


As for the source code, I have now created a Visual Studio (2010) solution containing all the addin projects which builds everything into a relative path (it was all using hard coded paths specific to my dev environment before… yuck) and when I get a chance I am going to add extra build automation that will automatically create the relevant sdaddin packages.

What next?

  • Finalise the source cleanup and stabilise the repo.
  • Hook the downloads on this site directly to the version control URLs (the great wordpress drainhole plugin allows for this which should be awesome).
  • Write up some more instructions on how to checkout, update, download and/or install the addins using the various methods now available
  • Continue working on new addins!

Here are some addin ideas that are either in progress or on the drawing board

  • IDE theming – sneak peek here, themes courtesy of the awesome free krypton toolkit.
  • A replacement StartPage – implemented in WinForms instead of a browser component which I think gives way more control over the content.
  • Translations manager – still just an idea but it should be possible to provide a much easier interface to entering and updating the resource strings.
  • LibIgnoreList Enhanced – Global, and more persistant interface to the entries in LibIgnoreList.xml
  • CodeAnnotations – I am interested to see if this project can be adapted for clarion.
  • Common image and string resources for all ClarionEdge addins.
  • Macros, Refactoring, Commandline, etc, etc… are there enough hours in the day!
  • When I get a chance I will listen back to the recent Webinar from ClarionLive as there were a few other addin ideas thrown around which would be good to do as well.

Oh, and who knows what the pending C7.3 and upcoming C8 will bring. That should keep things interesting!


Some Addin Links

by brahnon in Addins 1 Comment

Based on materials presented in Clarion Live webinar #80. Thanks Arnold and John for the opportunity, I look forward to hearing about what people come up with!

What is an addin?! –

Add-in – (aka. plugin, component) The add-in is the basic building block of the SharpDevelop component model. An addin is defined by an .addin XML definition file, and typically one (or more) Assemblies.

Since the Clarion 7 IDE is based on SharpDevelop you can get a lot out of the existing documentation and source that is available. One trick to remember though, when compiling your assemblies for use in the Clarion IDE make sure your references are pointing the those core assemblies not the SharpDevelop 2.2 ones!

First, for the impatient, jump right in with some examples!

These are just the ones available at the moment. Subscribe to the RSS feed or bookmark a link to the addins category for future updates!

Helpful SharpDevelop links


Downloading the (SharpDevelop) source


SoftVelocity material

While there isn’t much around there certainly is some. See the help for these topics.

  • Customizing the Command Line Interface (ClarionCL.EXE)
  • User’s Guide to ClarionCL.exe

Also of interest might be a search in the help with the term “reflector”.


Helpful tools

  • Reflector –
  • A .Net IDE (I have not yet tried writing an addin using Clarion# though I suppose it should be possible!)
  • A text editor with a good multiple file search capability.


Choose your IDE

  • Visual Studio – Not necessary but certainly a nice IDE to work on .net code!
  • SharpDevelop – Either v2.2 for authenticity or the latest beta seems to work fine too.


SharpDevelop source

Not necessary but very useful for learning. You could probably learn most of what you need from the docs and Reflector but having the actual source (well… a close match in most cases) can be good. (See above for links to the source downloads)

SharpDevelop also comes with an addin project to get you started but it is really little more than a directory structure.


Compiling SharpDevelop

This is optional but if you are building and testing a generic addin, something that doesn’t use any of the clarion assemblies then it is one option. The main advantage you get is that you can run the IDE in debug mode with output to a console renderer.


Enable debug output for the Clarion IDE

  • Edit the file "\Clarion7\bin\clarion.exe.config"
  • Underneath this line:
    <appender-ref ref="ColoredConsoleAppender" />”
    add this 
    <appender-ref ref="FileAppender" />
  • If you want, you can also add this:
    <appender-ref ref="OutputDebugStringAppender" />

A file called "SharpDevelopLog.txt" will be generated in your clarion.exe directory and/or you can capture the output using something like DebugView from Sysinternals.

The IDE uses Log4Net to produce this, it looks like a nice tool. I like how they use methods for the different log levels rather than a parameter or something. Simple but makes the code very readable: Logging.Info(‘message’), Logging.Debug(‘message’), etc…