Jump to content


Photo

ChameleonCoder & AHKModule - (AHK) coding IDE (C#)


  • Please log in to reply
25 replies to this topic

#1 maul.esel

maul.esel
  • Members
  • 790 posts

Posted 08 June 2011 - 05:17 PM

Hi all together,

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]Welcome page
[*: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

#2 IsNull

IsNull
  • Fellows
  • 990 posts

Posted 08 June 2011 - 06:07 PM

You may be interested in my IDE Project, it's currently not offical annouced: <!-- m -->https://github.com/IsNull/SmartDevelop<!-- m --> :wink:

The main Goal beyond this project is much better Intellisense Support for AHK Scripts to make the live easier.

It might be a good idea if we both work on the same thing :)


XAML GUI and a ribbon were suggested by RaptorOne

Do you have concrete ideas? This is not even easy to implement/use with IA, as this will require at least .NET 3.5 and also e very new programming Model to work with WPF/xaml Guis. AHKs GUi Commands don't have any hierarchical structures, and xaml is just hierarchical.

#3 maul.esel

maul.esel
  • Members
  • 790 posts

Posted 08 June 2011 - 06:41 PM

No, I was talking of an XAML Gui for the IDE ;-)
A ribbon would look great - but here are the disadvantages:[*:51ekaaov]windows only (XAML) - well, ScintillaNet is windows only, too, so no more disadvantage
[*:51ekaaov]XAML code (I'm not familiar with) - well I can get :)
[*:51ekaaov]no support for systems older than XP (not sure if they would be supported even without Ribbon)
[*:51ekaaov]requires Framework v3.5 SP1 (as you said) - as far as I know the framework is free and included in newer windows versionsSo no big disadvantages, but might take some time.

Yeah, maybe working together is a good idea - although my development behaviour might appear strange to you :lol:
And I really like the modular idea - I'm not sure if I can give it up :(
Your code looks professional - different from mine :)

Regards
maul.esel

#4 guest3456

guest3456
  • Members
  • 1324 posts

Posted 08 June 2011 - 06:49 PM

The main Goal beyond this project is much better Intellisense Support for AHK Scripts to make the live easier.


majkinetor's ISense script has always given me trouble. i've got a plugin for Notepad++ that i'm using, but autocomplete slows the editor down a lot. finc's Scite4AHK's intellisense works the best and fastest, but i need a bit more out of an editor, so i stick with np++

#5 Frankie

Frankie
  • Members
  • 2930 posts

Posted 08 June 2011 - 07:12 PM

Is this cross platform? I noticed you are leaning in the direction of "well this only works on windows, so lets make it windows only."

If it will be or is currently cross platform can you add a makefile to the git?

#6 IsNull

IsNull
  • Fellows
  • 990 posts

Posted 09 June 2011 - 09:59 AM

No, I was talking of an XAML Gui for the IDE

My IDE is WPF (xaml) only (it bases on the great SharpDevelop Edit Control), and is targeting similar functionality in intellisense parts as the big vs studio has - as WPF is the only way I see it possible to get an really good intellisense and user feedback.
There are just projectstudies done from me, a current snapshot looks like this: <!-- m -->http://dl.securityvi... ... rstudy.png<!-- m -->

Using WPF will make it Windows only, however, the Code has a very layered Architecture which will also allow partial reuses for an port. AFAIK Mono will support xaml - no WPF specific stuff but at least xaml.

And I really like the modular idea - I'm not sure if I can give it up

What do you exactly mean whit this? :)


About good Intellisense

To get a real good intellisense you need to build something similar like the Code DOM to compile the language. Actually, I'm writing a own Parser, Tokenizer and CodeDOM Generator, as I can't use the one from IA because I need Multi threading, Cancellation support etc, otherwise it wouldn't have enough performance.

I've done some basic tests to get an idea whats necessary and well it seems possible but a load of work to do anyway.

If I find some time and work on this, I will make a own topic where as you can try the first few things :)

#7 maul.esel

maul.esel
  • Members
  • 790 posts

Posted 09 June 2011 - 02:20 PM

CC is windows only for now because ScintillaNet is windows only.
Although I like the cross-platform idea, it will be difficult. I would need a new edit control with similar facilities, and I couldn't use the ribbon I was thinking of.

@IsNull: By "modular idea" I mean that CC is not AHK only, that AHK-specific will be done using the "language module".
Your screenshot looks impressive :shock: :shock: :shock:
Maybe your ideas are a bit too difficult for me - especially an own Parser etc. :shock:

Regards
maul.esel

#8 IsNull

IsNull
  • Fellows
  • 990 posts

Posted 09 June 2011 - 03:23 PM

Writing an IDE from scratch is not an Job for a single person. It needs much time, knowledge and experience in programming.

But I have some great helps around, 1. the Code-Edit Control from SmartDevelop is very good and also very expandable, 2. AvalonDock is a very great Window-Managing System for WPF, and finally my own collection of Patterns and common Classes for .NET & WPF called Archimedes which makes it possible that I can concentrate just of the IDE Code Design and the Tokenizing/Intellisense Part.

@IsNull: By "modular idea" I mean that CC is not AHK only, that AHK-specific will be done using the "language module".

I'll use a common Plugin-Architecture which will hold all language specific Code, but dealing with Plugins in this stage makes things just more complicated. So this is something which I have to keep in mind when designing the code, but don't actually implement (outsource to) until the project has reached an alpha stage.


Best
IsNull

#9 jaco0646

jaco0646
  • Fellows
  • 3163 posts

Posted 11 June 2011 - 01:19 AM

Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time. :(

#10 maul.esel

maul.esel
  • Members
  • 790 posts

Posted 14 June 2011 - 02:26 PM

BIG UPDATE:[*:1ezl1ry7]almost complete rewrite:

[*:1ezl1ry7]CC now uses WPF, a new design and data binding

[*:1ezl1ry7]The interface uses a Ribbon now (although it is not yet finished)

[*:1ezl1ry7]links are now resources (no more extra type).
This enables resources attached to links, destination-independant naming, ...
They get an own GUID, the destination is set using the destination attribute.

[*:1ezl1ry7]XML syntax changed: <attach> elements are now <resource> elements, data-type="1" now represents a link

[*:1ezl1ry7]internal changes: renamed resource classes, introduced new namespaces, get/set resource properties directly via XmlDocument

[*:1ezl1ry7]and a lot more...


Regards
maul.esel

#11 IsNull

IsNull
  • Fellows
  • 990 posts

Posted 16 June 2011 - 05:38 AM

Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time.

The code from drifter is just avaiable when the dev has hand signed some (OOP?) Licence. This actually hold me - and possible others - back.

When the code is not really OpenSource for everyone, it isn't the kind of spirit I belive in.

#12 jaco0646

jaco0646
  • Fellows
  • 3163 posts

Posted 16 June 2011 - 05:44 AM

The source code to the last module is now released. The entire project is now open source and may be modified and distributed without restriction.

:?:

#13 guest3456

guest3456
  • Members
  • 1324 posts

Posted 16 June 2011 - 11:29 PM

Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time.

The code from drifter is just avaiable when the dev has hand signed some (OOP?) Licence. This actually hold me - and possible others - back.


it looked like he removed all the licenses

When the code is not really OpenSource for everyone, it isn't the kind of spirit I belive in.


do you believe in the GPL?

#14 maul.esel

maul.esel
  • Members
  • 790 posts

Posted 19 June 2011 - 05:49 PM

Developers / Designers needed
I really need someone with more experience in designing,[*:9o0djuxj]for the graphics (especially the logo)[*:9o0djuxj]if possible, for the UI design Everything I try looks ugly :?
Anyone interested? You'll be mentioned in the credits ;-)

#15 SoLong&Thx4AllTheFish

SoLong&Thx4AllTheFish
  • Members
  • 4999 posts

Posted 19 June 2011 - 06:28 PM

If you are looking for pretty icons, have a look at the silk icon set
<!-- m -->http://www.famfamfam...lab/icons/silk/<!-- m -->
(I think it is used by notepad++ as well)

here is a nice chameleon you can use (just colorize the image if you don't like green)
<!-- m -->http://www.iconfinde... ... eleon_icon<!-- m -->