[Release] AAL Editing Tools

12/18/2015 18:09 warfley#1
Hey ho Leute,

hiermit möchte ich nun die Alpha meiner AAL IDE vorstellen.

[Only registered and activated users can see links. Click Here To Register...]

Bei der IDE handelt es sich um ein Opensource Projekt zum Entwickeln und Managen von AAL Projekten.

Das Projekt ist komplett Open Source und auf Github verfügbar:
[Only registered and activated users can see links. Click Here To Register...]

Eine Kompilierte Version der IDE findet ihr im Release Verzeichnis des Git Repo. Außerdem lade ich als Anhang einen Installer hoch, welcher die neuste Version runterläd und Installiert.

Weitere Informationen zu der IDE und deren Funktionen findet sich als Dokumentation über Extras->Über->Hilfe
12/18/2015 20:25 Shadow992#2

Sehr geile Sache! :)
Um etwas besser den Ablauf und den Aufbau von AAL zu verstehen kannst du dir die "./Getting Started/aal-developer-manual.pdf" anschauen, da stehen ein paar allgemeine Sachen drin, u.a. auch was Sichtbarkeitsbreich angeht (Wobei Sichtbarkeitsbereiche im Normalfall abgeschlossen sind, das heißt in While definierte Variablen sind auch nur dort sichtbar).

Aber du hast Recht es fehlt noch enorm viel Dokumentation.
Ich bin aber auf dem besten Weg das auszumerzen.
Der Editor ist aber echt schon einmal eine richtig geile Hilfe. :)

Hoffentlich können wir den Editor einigermaßen aktuell halten. :)

Edit:
Kommentare gibt es bisher nur einzeillige und werden mit ";" eingeführt.
Z.B.
12/21/2015 20:44 warfley#3
So, ich habe mal ein etwas größeres Update (bzw. wer das Repository up to date hält hatte mehrere kleine).
Der Editor unterstützt nun grob alle Funktionen die ich mir vorgenommen habe vorerst zu implementieren (Liste steht im ersten Post).

Von nun an werde ich mich mit neuen Komponenten wie einem Compilerinterface auseinandersetzen, und natürlich noch Bugs fixen, aber vorerst werden keine großen neuen Features zum Editor hinzukommen

Update: die erste Grundversion der IDE mit Projektsystem und Formeditor ist fertig, natürlich fehlt noch eine menge wie das Compilerinterface oder Events im Formeditor, aber grundlegend lassen sich damit jetzt AAL GUI Anwendungen schreiben (Man muss sie nur manuell kompilieren)
01/08/2016 02:24 Shadow992#4
Quote:
Originally Posted by warfley View Post
Update: die erste Grundversion der IDE mit Projektsystem und Formeditor ist fertig, natürlich fehlt noch eine menge wie das Compilerinterface oder Events im Formeditor, aber grundlegend lassen sich damit jetzt AAL GUI Anwendungen schreiben (Man muss sie nur manuell kompilieren)
Die IDE sieht mal echt geil aus vor allem der Formeditor.
Ich hab das Gefühl das wird echt noch was richtig Großes, keep it up! :D

Als kleines Extra könntest du die Styles noch auswählbar machen (das sind die ganz normalen Style der WinApi, die da reinmüssen). Später werde ich dafür sicher noch Konstanten anlegen, nur als Anregung. :D

Edit:
Falls du gerade nicht verstehst was ich meine:
[Only registered and activated users can see links. Click Here To Register...]
01/08/2016 14:22 warfley#5
Quote:
Originally Posted by Shadow992 View Post
Die IDE sieht mal echt geil aus vor allem der Formeditor.
Ich hab das Gefühl das wird echt noch was richtig Großes, keep it up! :D

Als kleines Extra könntest du die Styles noch auswählbar machen (das sind die ganz normalen Style der WinApi, die da reinmüssen). Später werde ich dafür sicher noch Konstanten anlegen, nur als Anregung. :D

Edit:
Falls du gerade nicht verstehst was ich meine:
[Only registered and activated users can see links. Click Here To Register...]
Ich werde nächste Woche sowieso nochmal einen Großteil des GUI Editors überarbeiten, er ist mir bisher noch viel zu statisch und schwer erweiterbar.

Ich hätte da nur noch 2 fragen zu aal:
Welche Funktionen gibt es bisher um die controls zu bearbeiten? Im Beispiel ist zwar das lesen des Textes, aber wie z.B. Setzt man den Wert einer checkbox?

Und zum anderen welche Events außer onClick gibt es, wäre cool wenn du eine Liste hättest
01/08/2016 14:53 Shadow992#6
Quote:
Originally Posted by warfley View Post
Ich hätte da nur noch 2 fragen zu aal:
Welche Funktionen gibt es bisher um die controls zu bearbeiten? Im Beispiel ist zwar das lesen des Textes, aber wie z.B. Setzt man den Wert einer checkbox?
Um Controls zu bearbeiten gibt es bisher kaum etwas und mehr Funktionen werden auch noch ein gutes Stück auf sich warten lassen. Und mir fällt tatsächlich auf, dass ich diese Funktionen in der Dokumentation vergessen habe (oder bin ich blind?)...

Momentan gibt es genau 3 Funktionen:
PHP Code:
ReadText($control) ; returns read text of control (should work for all kind of controls no matter if buttoncheckbox or inputbox)

SetText($control$text) ; sets text of control (should work for all kind of controls no matter if buttoncheckbox or inputbox)

IsChecked($checkbox) ; returns true if given checkbox is checked 
Um auf dem aktuellsten Stand zu bleiben (vor allem wenn ich Held wieder die Hälfte vergesse) kannst du auch in den AAL-Interpreter reinschauen. Ich habe das Hinzufügen neuer Funktionen extra so universell, einfach und extra gehalten, dass man praktisch kaum etwas vom Interpreter-Code verstehen muss und man trotzdem neue Funktionen hinzufügen kann oder zumindest sehen kann welches es so gibt (wenn man auch noch die parameter rausfinden will, muss man dann doch ein bisschen Einblick haben) aber nur um zu sehen was es gibt und um ganz grob abschätzen zu können was es macht, kann man einen Blick in "StandardFunctions.cpp" wagen.

Quote:
Originally Posted by warfley View Post
Und zum anderen welche Events außer onClick gibt es, wäre cool wenn du eine Liste hättest
Da wird noch einiges dazu kommen, vor allem plane ich das ganze ähnlich wie Javascript aufzubauen, sodass man also auf allerlei Events reagieren kann wie "onClick", "onMouseOver" usw.

Folgende Events plane ich früher oder später einzufügen:
Quote:
onchange An HTML element has been changed
onclick The user clicks an HTML element
onmouseover The user moves the mouse over an HTML element
onmouseout The user moves the mouse away from an HTML element
onkeydown The user pushes a keyboard key

Quelle: [Only registered and activated users can see links. Click Here To Register...]
Aber momentan gibt es nur onClick und das wird wohl auch noch ein ganzes Stück so bleiben. Jetzt möchte ich erst einmal den Sprachumfang (was Klassen, Syntax und Semantik angeht) fertig haben und danach kommen noch allerlei Funktionen und Events dazu.
01/25/2016 19:41 warfley#7
So version 0.0.2 ist da, kaum neue Features, dafür eine Menge Bugs gefixt, und mehr Konfigurationsmöglichkeiten für das Erscheinungsbild der IDE

Außerdem ein Beispielprojekt (ein GUI Taschenrechner) dazu gepackt
01/28/2016 22:58 warfley#8
Zwar ist 0.0.2 erst 3 Tage alt, aber diese 3 Tage war ich doch schon sehr Produktiv, und bin nun mit Version 0.0.3 fertig.

Neue Features: Formeditor unterstützt Multiselektion
Es lässt sich nun ein Raster für den Formeditor einstellen, Aber achtung, das Zeichnen dieses Rasters benötigt sehr viel CPU last, bei Zu großen Fenstern beginnt es zu laggen (dann einfach über die Optionen ausschalten)
Hilfslinien im Formeditor zum Positionieren von Objekten
Sowie ein paar kleinere neue Funktionen, Bugfixes und Performance Fixes

Außerdem gibt es jetzt eine Update Funktion über den Menüreiter Extras, und ich habe das Zip Archiv durch einen Installer ausgetauscht, welcher immer die Aktuelle Version Runterläd und Installiert

Nun habe ich allerdings eine Frage:

Was wünscht ihr euch für Features, weil mit den gesamten Grundfeatures bin ich eigentlich schon durch, und mir fällt nichts großes Neues zur Zeit mehr ein.

PS: Falls in den nächsten 1-2 Monaten kaum Updates kommen nicht wundern, bald beginnt bei mir die Klausurphase, und da habe ich nun mal nicht so viel Zeit
01/28/2016 23:18 False#9
Es gibt doch noch soviel... schau dir doch einfach mal andere IDE´s an..
z.b. Git Unterstützung (man sieht am Rand welche Sachen noch nicht committed bzw gepusht wurden...
Wie wäre es mit Plugin Unterstützung ?etc.. es gibt viel^^
01/29/2016 11:13 Shadow992#10
Quote:
Originally Posted by warfley View Post
Zwar ist 0.0.2 erst 3 Tage alt, aber diese 3 Tage war ich doch schon sehr Produktiv, und bin nun mit Version 0.0.3 fertig.

Neue Features: Formeditor unterstützt Multiselektion
Es lässt sich nun ein Raster für den Formeditor einstellen, Aber achtung, das Zeichnen dieses Rasters benötigt sehr viel CPU last, bei Zu großen Fenstern beginnt es zu laggen (dann einfach über die Optionen ausschalten)
Hilfslinien im Formeditor zum Positionieren von Objekten
Sowie ein paar kleinere neue Funktionen, Bugfixes und Performance Fixes

Außerdem gibt es jetzt eine Update Funktion über den Menüreiter Extras, und ich habe das Zip Archiv durch einen Installer ausgetauscht, welcher immer die Aktuelle Version Runterläd und Installiert

Nun habe ich allerdings eine Frage:

Was wünscht ihr euch für Features, weil mit den gesamten Grundfeatures bin ich eigentlich schon durch, und mir fällt nichts großes Neues zur Zeit mehr ein.

PS: Falls in den nächsten 1-2 Monaten kaum Updates kommen nicht wundern, bald beginnt bei mir die Klausurphase, und da habe ich nun mal nicht so viel Zeit
Ziemlich cool fände ich noch einen Shortcut, welcher einen erlaubt an der aktuellen Stelle (besonders vor Funktionen) einen automatisch generierten Kommentar einzufügen, der sich die Informationen der nächsten Zeile holt und sie "Dokumentier-Bereit" darstellt, also z.B. sowas:

Code:
func Fib($num,$maxdepth=0)
; ...
return $fib
endfunc
Dann Strg + d (oder jedes beliebige andere Kürzel):

Code:
; ------------------------------------------
; Function: Fib ($num,$maxdepth=0)
; Summary:
; 
; $num - 
; $maxdepth (optional; default=0) - 
; 
; Returns: $fib - 
; ------------------------------------------

func Fib($num,$maxdepth=0)
; ...
return $fib
endfunc
Ist natürlich nur eine Idee, das Aussehen lässt sich sicher noch optimieren/anpassen.

Edit:
Auch interessant wäre eine statische Code-Analyse ala "Variable never used" oder "Unreachable Return"... Das Ganze wird zwar auch in den Compiler kommen, aber nur in der Form: "Unreachable Code? --> Schmeiss es raus"

Auch interessant wären Refactoring Sachen, sowas wie Vorschläge an der Seite, dass Funktionen immer klein/groß/mit _ anfangen sollten.

Eine Art TestUnit Unterstützung (oder zumindest eine automatische Generierung derselbigen) hätte auch was, ähnlich wie in C#. Wenn man z.B. die Funktion Fib testen möchte mit Parameter 10 und einmal mit 5:

Code:
; [TestUnitName1: Fib(10); ExpectedOutput=55]
; [TestUnitName2: Fib(5); ExpectedOutput=5]
func Fib($num)
; ...
return $fib
endfunc
Edit2:
In der nächsten Version wird es wohl auch Klassen geben, die dann wie folgt erstellt/deklariert werden:

Code:
class Dog($CanBark_in)
   $CanBark=$CanBark_in
   $isRealDog=true

   if $CanBark = false
      $isRealDog=false
   EndIf

   Func bark()
      if $CanBark = true
         ; do something
      endif
   EndFunc

EndClass
Erstellen geht dann über:
Code:
$A_Dog= new Dog(true)
01/29/2016 15:45 warfley#11
Quote:
Originally Posted by .ƒaℓsє.
Es gibt doch noch soviel... schau dir doch einfach mal andere IDE´s an..
z.b. Git Unterstützung (man sieht am Rand welche Sachen noch nicht committed bzw gepusht wurden...
Wie wäre es mit Plugin Unterstützung ?etc.. es gibt viel^^
Quote:
Originally Posted by Shadow992 View Post
Ziemlich cool fände ich noch einen Shortcut, welcher einen erlaubt an der aktuellen Stelle (besonders vor Funktionen) einen automatisch generierten Kommentar einzufügen, der sich die Informationen der nächsten Zeile holt und sie "Dokumentier-Bereit" darstellt, also z.B. sowas:

Code:
func Fib($num,$maxdepth=0)
; ...
return $fib
endfunc
Dann Strg + d (oder jedes beliebige andere Kürzel):

Code:
; ------------------------------------------
; Function: Fib ($num,$maxdepth=0)
; Summary:
; 
; $num - 
; $maxdepth (optional; default=0) - 
; 
; Returns: $fib - 
; ------------------------------------------

func Fib($num,$maxdepth=0)
; ...
return $fib
endfunc
Ist natürlich nur eine Idee, das Aussehen lässt sich sicher noch optimieren/anpassen.

Edit:
Auch interessant wäre eine statische Code-Analyse ala "Variable never used" oder "Unreachable Return"... Das Ganze wird zwar auch in den Compiler kommen, aber nur in der Form: "Unreachable Code? --> Schmeiss es raus"

Auch interessant wären Refactoring Sachen, sowas wie Vorschläge an der Seite, dass Funktionen immer klein/groß/mit _ anfangen sollten.

Eine Art TestUnit Unterstützung (oder zumindest eine automatische Generierung derselbigen) hätte auch was, ähnlich wie in C#. Wenn man z.B. die Funktion Fib testen möchte mit Parameter 10 und einmal mit 5:

Code:
; [TestUnitName1: Fib(10); ExpectedOutput=55]
; [TestUnitName2: Fib(5); ExpectedOutput=5]
func Fib($num)
; ...
return $fib
endfunc
Edit2:
In der nächsten Version wird es wohl auch Klassen geben, die dann wie folgt erstellt/deklariert werden:

Code:
class Dog($CanBark_in)
   $CanBark=$CanBark_in
   $isRealDog=true

   if $CanBark = false
      $isRealDog=false
   EndIf

   Func bark()
      if $CanBark = true
         ; do something
      endif
   EndFunc

EndClass
Erstellen geht dann über:
Code:
$A_Dog= new Dog(true)
Danke, die Ideen sind an alle gut. Ich werde mal sehen was ich wie implementieren werde. Vor allem die Klassen bereiten mir in wenig sorge, da ich dafür Variablentypen überprüfen muss und ich dafür noch keine vernünftige Lösung gefunden habe
01/29/2016 16:23 Shadow992#12
Quote:
Originally Posted by warfley View Post
Danke, die Ideen sind an alle gut. Ich werde mal sehen was ich wie implementieren werde. Vor allem die Klassen bereiten mir in wenig sorge, da ich dafür Variablentypen überprüfen muss und ich dafür noch keine vernünftige Lösung gefunden habe
Wieso willst du da Variablentypen überprüfen?
Das ist etwas, das passiert nicht mal zur Compilezeit, weil es einfach nicht möglichist.
Stell dir nur mal vor es gibt zwei Klassen, die jeweils unterschiedliche Funktionen besitzen.

PHP Code:
$var=0
If random() = 
  $var 
= new Class1()
Elseif 
random() =2
  $var 
= new Class2()
Endif

$var.doSomething() 
Es gibt praktisch keine Möglichkeit das zur Compilezeit herauszufinden.
Daher wird es auch in AAL selbst nur zur Laufzeit geprüft und auch nur wenn es in der jeweiligen Zeile ankommt.
Man hat also keine Chance heruaszufinden, ob 0 oder ein Objekt in $var steckt.
01/29/2016 17:21 warfley#13
Quote:
Originally Posted by Shadow992 View Post
Wieso willst du da Variablentypen überprüfen?
Das ist etwas, das passiert nicht mal zur Compilezeit, weil es einfach nicht möglichist.
Stell dir nur mal vor es gibt zwei Klassen, die jeweils unterschiedliche Funktionen besitzen.

PHP Code:
$var=0
If random() = 
  $var 
= new Class1()
Elseif 
random() =2
  $var 
= new Class2()
Endif

$var.doSomething() 
Es gibt praktisch keine Möglichkeit das zur Compilezeit herauszufinden.
Daher wird es auch in AAL selbst nur zur Laufzeit geprüft und auch nur wenn es in der jeweiligen Zeile ankommt.
Man hat also keine Chance heruaszufinden, ob 0 oder ein Objekt in $var steckt.
Und das ist ja genau mein Problem, aber für z.B. die Autovervollständigung würde ich ungern alle Methoden und Felder aller Objekte angeben, daher hatte ich überlegt eine Liste mitzuführen, welche Objekte es überhaupt sein könnte. Da habe ich dann nur das Problem wenn man die Objekte von Funktionen zurückbekommt, und das würde meinen Parser deutlich verkomplizieren.

Vielleicht stelle ich das auch erst mal zurück
01/29/2016 17:47 Shadow992#14
Quote:
Originally Posted by warfley View Post
Und das ist ja genau mein Problem, aber für z.B. die Autovervollständigung würde ich ungern alle Methoden und Felder aller Objekte angeben, daher hatte ich überlegt eine Liste mitzuführen, welche Objekte es überhaupt sein könnte. Da habe ich dann nur das Problem wenn man die Objekte von Funktionen zurückbekommt, und das würde meinen Parser deutlich verkomplizieren.

Vielleicht stelle ich das auch erst mal zurück
Um später meinen Code leichter optimieren zu können, will ich sowieso demnächst ein internes Flussdiagramm erzeugen. Vielleicht kann man das später ausbauen und in ne Dll schmeissen, sodass du eine Zeile + den Code in die Dll schmeist und dir das Flussdiagramm alle möglichen Klassen + Datentypen zurückgibt, die die Variable haben kann.

Aber mal sehen das wird noch bissel dauern bis ich soweit bin. Von daher sollte man das vielleicht wirklich zurückstellen für die IDE.
01/29/2016 22:25 .SkyneT.#15
Die IDE sieht sehr gut aus, ich würde aber empfehlen jetzt erstmal etwas abzuwarten was sich bei den folgenden Versionen von AAL noch ändert. Es würde nicht wirklich Sinn machen, wenn die IDE der Sprache "voraus" ist :)