Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

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


  • Please log in to reply
25 replies to this topic
maul.esel
  • Members
  • 790 posts
  • Last active: Jan 05 2013 09:26 PM
  • Joined: 28 Feb 2011
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
Join the discussion on The future of AutoHotkey
Posted Image Visit me on github Posted Image
Win7 HP SP1 64bit | AHK_L U 64bit

IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007
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.

maul.esel
  • Members
  • 790 posts
  • Last active: Jan 05 2013 09:26 PM
  • Joined: 28 Feb 2011
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
Join the discussion on The future of AutoHotkey
Posted Image Visit me on github Posted Image
Win7 HP SP1 64bit | AHK_L U 64bit

guest3456
  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011

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++

Frankie
  • Members
  • 2930 posts
  • Last active: Feb 05 2015 02:49 PM
  • Joined: 02 Nov 2008
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?
aboutscriptappsscripts
Request Video Tutorials Here or View Current Tutorials on YouTube
Any code ⇈ above ⇈ requires AutoHotkey_L to run

IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007

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 :)

maul.esel
  • Members
  • 790 posts
  • Last active: Jan 05 2013 09:26 PM
  • Joined: 28 Feb 2011
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
Join the discussion on The future of AutoHotkey
Posted Image Visit me on github Posted Image
Win7 HP SP1 64bit | AHK_L U 64bit

IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007
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

jaco0646
  • Moderators
  • 3165 posts
  • Last active: Apr 01 2014 01:46 AM
  • Joined: 07 Oct 2006
Is there any hope of continuing the work begun in AHKIDE Project (Aborted)? It seemed like such a promising tool at the time. :(

maul.esel
  • Members
  • 790 posts
  • Last active: Jan 05 2013 09:26 PM
  • Joined: 28 Feb 2011
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
Join the discussion on The future of AutoHotkey
Posted Image Visit me on github Posted Image
Win7 HP SP1 64bit | AHK_L U 64bit

IsNull
  • Moderators
  • 990 posts
  • Last active: May 15 2014 11:56 AM
  • Joined: 10 May 2007

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.

jaco0646
  • Moderators
  • 3165 posts
  • Last active: Apr 01 2014 01:46 AM
  • Joined: 07 Oct 2006

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.

:?:

guest3456
  • Members
  • 1704 posts
  • Last active: Nov 19 2015 11:58 AM
  • Joined: 10 Mar 2011

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?

maul.esel
  • Members
  • 790 posts
  • Last active: Jan 05 2013 09:26 PM
  • Joined: 28 Feb 2011
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 ;-)
Join the discussion on The future of AutoHotkey
Posted Image Visit me on github Posted Image
Win7 HP SP1 64bit | AHK_L U 64bit

SoLong&Thx4AllTheFish
  • Members
  • 4999 posts
  • Last active:
  • Joined: 27 May 2007
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 -->