today I'm going to present you the (megalomaniac :lol:) project I'm working on:
ChameleonCoder (alpha 2)
It is intended to be a developer IDE - not just for AutoHotkey, but for any coding language.
The history:
First, I started this project as AHK.ScriptsMan, an AutoHotkey IDE coded in AutoHotkey (v2). It was pretty advanced, when RaptorOne convinced me to learn C# some weeks ago.
I started to do so by translating AHK.ScriptsMan to C# - then I got this crazy idea:
What about making it language-independant? I thought about it a while, and then I started realizing it.
The principle:
ChameleonCoder itself is a flexible core, providing methods to parse resource file (*.xml), providing the user interface and providing methods to manage these resources in different ways.
Anything specific to coding languages is handled through "language modules", which are i.e. plugins for ChameleonCoder. Each of them can provide language-specific methods for one or several languages.
They can provide syntax highlighting (AvalonEdit control), they can provide compilers and interpreters, they can provide code generators such as MsgBoxCreator, and even more.
So I separated AutoHotkey-specific code from ChameleonCoder and started to code the AutoHotkey language module for ChameleonCoder.
Resources:
ChameleonCoder provides 7 types of resources, each with specific properties:[*:378mj8el]links[*:378mj8el]files[*:378mj8el]code files[*:378mj8el]libraries[*:378mj8el]projects[*:378mj8el]tasks[*:378mj8el]groupsThese resources are represented by XML-files. But a XML file can also contain several resources by means of hierarchy: A resource can be bound to another "parent" resource.
For more information on creating resource files see the github wiki page.
RichContent:
RichContent is a feature to describe what a resource contains. It is especially useful for source code resources, and even more for redistributable libraries.
For example, the RichContent can describe that a library includes a class. It can describe the class methods, the parameters, and even more.
From this, CC will be able to generate standardized documentation, maybe exporting it to HTML, or even allow localizing, and a lot of more things.
Extensibility:
CC can be extended in 4 ways:[*:378mj8el]LanguageModules:
modules providing language support for a coding language
[*:378mj8el]Services:
language-inspecific actions that can be called by a user
[*:378mj8el]custom resource types:
adding or improving functionality to the included resource types. Can be language-specific (e.g. "CPPHeaderFile") or not (e.g. "SettingsFile").
[*:378mj8el]custom RichContent members:
adding or improving support for RichContent. Can be as well language-specific (e.g. "AHKClass") or not ("prototype")________________________________________________________________________________________________________________________________
So as I stated before, I'm also coding on an AutoHotkey Language module:
AHKModule
This module will provide specific syntax highlighting for AutoHotkey, AutoHotkey_L, IronAHK and AutoHotkey v2,
it will also contain the MsgBox creator and maybe even a GuiCreator, as well as a compiler GUI: "Compile_AHK.NET".
So this are the plans I have. Currently, ChameleonCoder is not functional, this why it is called alpha ;-). IT IS NOT READY TO USE!
And this is why I need your help:
As a C# developer, consider contributing either code or even unready concepts. To do so, either use github or contact me by PM.
As one of these design freaks here ;-) : what about a nicer logo? The current (a chameleon) is ugly, I know :oops:.
Anyone else: state what you would like to have integrated, tell me your ideas, your needs, your opinion, ...
For developers and interested users: visit github repositories for
[*:378mj8el]ChameleonCoder[*:378mj8el]AHKModulesome screenshots:(using random testing resources
[*:378mj8el]list of all resource
[*:378mj8el]resource list settings
[*:378mj8el]resource viewplanned features:(that may be included)
[*:378mj8el]I thought of somehow integrating git(-hub) by means of a user interface to upload entire projects... (edit: could also done as a service extension)[*:378mj8el]Another idea would be the AutoHotkey.Net tool that Scite4AHK includes... (if I'm allowed to use it)________________________________________________________
And here is the
full source and bin download
and the
installer download (alpha 2)
Required: Windows XP or higher + .NET v4
________________________________________________________
Hoping for some comments and a bit of interest
maul.esel




