[German] Flow Editor für Windows in AutoHotkey
Moderator: Martin
[German] Flow Editor für Windows in AutoHotkey
Ich habe mit der Entwicklung eines Flow Editors für Windows begonnen und möchte hier meine Fortschritte festhalten.
Stand: 06.05.2014
AutoHotkey benutze ich schon seit Jahren, um etwas zu automatisieren oder kleine Programme zu schreiben.
Mit Grafiken habe ich nocht nie gearbeitet und ich suchte nach einer Lösung für AutoHotkey. Sie heißt: GDI+.
Nach einiger Einarbeitung habe ich (eher durch Trial and Error) versucht, einige Tutorial-Beispiele umzuschreiben und etwas in einem Fenster darzustellen.
Ergebnis: Man kann die Beiden Elemente auf dem Fenster herumschieben.
Download Sourcecodes
Stand: 06.05.2014
AutoHotkey benutze ich schon seit Jahren, um etwas zu automatisieren oder kleine Programme zu schreiben.
Mit Grafiken habe ich nocht nie gearbeitet und ich suchte nach einer Lösung für AutoHotkey. Sie heißt: GDI+.
Nach einiger Einarbeitung habe ich (eher durch Trial and Error) versucht, einige Tutorial-Beispiele umzuschreiben und etwas in einem Fenster darzustellen.
Ergebnis: Man kann die Beiden Elemente auf dem Fenster herumschieben.
Download Sourcecodes
Re: [German] Flow Editor für Windows in AutoHotkey
Stand: 07.05.2014
Die Entwicklung geht voran.
Ich habe es geschafft, die beiden Elemente miteinander zu verbinden. Die Verbindung geht mit, während man die Elemente verschiebt. Bei einem Klick auf ein Element oder Verbindung wird dieses markiert. Ich kann auch neue Actions und Conditions hinzufügen (Verbindungen noch nicht).
Ich versuche eine Struktur zu schaffen, um flexibel neue Actions, Conditions und Verbindungen hinzufügen und entfernen zu können.
Zusätzlich achte ich darauf, möglichst viel Code in Funktionen auszulagern, um Übersicht zu bewahren.
Download Sourcecodes
Die Entwicklung geht voran.
Ich habe es geschafft, die beiden Elemente miteinander zu verbinden. Die Verbindung geht mit, während man die Elemente verschiebt. Bei einem Klick auf ein Element oder Verbindung wird dieses markiert. Ich kann auch neue Actions und Conditions hinzufügen (Verbindungen noch nicht).
Ich versuche eine Struktur zu schaffen, um flexibel neue Actions, Conditions und Verbindungen hinzufügen und entfernen zu können.
Zusätzlich achte ich darauf, möglichst viel Code in Funktionen auszulagern, um Übersicht zu bewahren.
Download Sourcecodes
-
- Posts: 186
- Joined: 12 Feb 2014 01:45
Re: [German] Flow Editor für Windows in AutoHotkey
Nach ca. 4 weiteren Stunden Programmierung, ist die grafische Darstellung ein gutes Stück vorangekommen.
Änderungen:
Download Soucecodes
Änderungen:
- Ich kann nun Elemente beliebig hinzufügen, verbinden und entfernen (durch Drücken der "Entf"-Taste).
Dafür mussten unter anderem folgende interne Voraussetzugen geschaffen werden:- Bei der Erstellung eines neuen Objekts wird eine eindeutige ID (z.B. Action1) erstellt, und in eine Liste gespeichert
- Die Variablen jeweils mit dem Namen der ID und einem Zusatz (z.B. Action1Typ) beinhalten Informationen zu dem Element.
- Bei jeder Änderung wird die Liste durchlaufen und jedes Element wird neugezeichnet
- Beim Löschen eines Elements werden die Bilder entfernt und anschließend der Eintrag aus der Liste gelöscht
- Es musste bei den Verbindungen sichergestellt werden, dass
- keine Verbindung zum Trigger möglich ist
- keine Verbindung doppelt erstellt werden kann
- keine Verbindung von einem zu demselben Objekt geht
- Die Logik beim Verlauf der Verbindungslinien wurde verbessert und ist jetzt in etwa so, wie in der AutoMagic App.
Download Soucecodes
Re: [German] Flow Editor für Windows in AutoHotkey
Ein weiterer Meilenstein wurde erreicht.
Um die Flows zu laden, musste ein Mittel gefunden werden, XML-Dateien zu parsen. Mit zwei vorhandenen Lösungen im AutoHotkey Forum kam ich nicht klar, also habe ich kurzerhand einen eigenen gebastelt.
Ich kann jetzt vorhandene Flows laden und dabei zumindest die Position und Namen aller Elemente, sowie alle Verbindungen auslesen. Weitere Eigenschaften fehlen noch. Ein Problem ist auch, dass manche Elemente außerhalb des sichtbaren Bereichs verschwinden (AM verwendet auch negative Koordinaten) und es noch keine Möglichkeit gibt, sie hervorzuholen. Auch sind die Abstände zwischen den Elementen viel zu groß, da ich (noch) ganz andere Maße verwende.
Meine Idee für den Lösungsansatz: Die Bilddarstellung weitgehend überarbeiten, und statt pro Element ein Bild, ein einziges großes Bild verwenden und die Erkennung, wann auf ein Element geklickt wurde, selbst implementieren (Position und Größe aller Elemente in eine extra Datenbank speichern und bei jedem Klick die Mausposition ermitteln und untersuchen, ob ein Element darunter liegt). Dann könnte man auch zwei weitere Probleme lösen: Erstens, die fehlende Möglichkeit zu zoomen und zu scrollen; Zweitens, unpraktisches Verhalten, wenn man Elemente anklickt (z.B. um eine Linie auszuwählen muss man sie genau treffen, was wegen ihrer kleinen Breite recht schwierig ist).
Download Sourcecodes
Um die Flows zu laden, musste ein Mittel gefunden werden, XML-Dateien zu parsen. Mit zwei vorhandenen Lösungen im AutoHotkey Forum kam ich nicht klar, also habe ich kurzerhand einen eigenen gebastelt.
Ich kann jetzt vorhandene Flows laden und dabei zumindest die Position und Namen aller Elemente, sowie alle Verbindungen auslesen. Weitere Eigenschaften fehlen noch. Ein Problem ist auch, dass manche Elemente außerhalb des sichtbaren Bereichs verschwinden (AM verwendet auch negative Koordinaten) und es noch keine Möglichkeit gibt, sie hervorzuholen. Auch sind die Abstände zwischen den Elementen viel zu groß, da ich (noch) ganz andere Maße verwende.
Meine Idee für den Lösungsansatz: Die Bilddarstellung weitgehend überarbeiten, und statt pro Element ein Bild, ein einziges großes Bild verwenden und die Erkennung, wann auf ein Element geklickt wurde, selbst implementieren (Position und Größe aller Elemente in eine extra Datenbank speichern und bei jedem Klick die Mausposition ermitteln und untersuchen, ob ein Element darunter liegt). Dann könnte man auch zwei weitere Probleme lösen: Erstens, die fehlende Möglichkeit zu zoomen und zu scrollen; Zweitens, unpraktisches Verhalten, wenn man Elemente anklickt (z.B. um eine Linie auszuwählen muss man sie genau treffen, was wegen ihrer kleinen Breite recht schwierig ist).
Download Sourcecodes
Re: [German] Flow Editor für Windows in AutoHotkey
Die Bilddarstellung habe ich nun überarbeitet (alle Elemente werden jetzt in ein einziges Bild gezeichnet, statt ein Bild für jedes Element). Dabei habe ich einige Grafiken verschönert, ein Raster hinzugefügt und den Zoom implementiert (Den kann man aber bis jetzt nur im Code festlegen). Der Abstand der Elemente wurde korrigiert.
Die Erkennung, wann auf ein Element geklickt wurde, habe ich noch nicht implementiert, somit kann man nichts anklicken oder verschieben. Scrollen kann man auch nicht.
Download Sourcecodes
Die Erkennung, wann auf ein Element geklickt wurde, habe ich noch nicht implementiert, somit kann man nichts anklicken oder verschieben. Scrollen kann man auch nicht.
Download Sourcecodes
Re: [German] Flow Editor für Windows in AutoHotkey
Die Darstellung ist nun komplett funktionsfähig!
Man kann nun scrollen, zoomen, Elemente (auch mehrere auf einmal) markieren, hinzufügen, entfernen und verbinden.
Nun werde ich die Implementierung der Einstellungsfenster umsetzen, was aber nicht weniger aufwendig sein wird.
Ich schätze, die Hälfte ist nun geschafft.
http://dl.dropbox.com/s/rm4tgbekgbrh3r1 ... or%206.zip
Man kann nun scrollen, zoomen, Elemente (auch mehrere auf einmal) markieren, hinzufügen, entfernen und verbinden.
Nun werde ich die Implementierung der Einstellungsfenster umsetzen, was aber nicht weniger aufwendig sein wird.
Ich schätze, die Hälfte ist nun geschafft.
http://dl.dropbox.com/s/rm4tgbekgbrh3r1 ... or%206.zip
Re: [German] Flow Editor für Windows in AutoHotkey
Hallo bichlepa,
beeindruckende Arbeit!
Frage, ist dein Scriptprojekt mit der aktuellen AutoHotkey Version gecoded?
Spräche etwas dagegen die jeweilig verwendete AHK Version im Script(Header) zu nennen?
Im Falle von Inkompatibilitäten kann sowas eine wertvolle Info sein. Danke.
So, ich sehe und staune mal weiter
BoBo
beeindruckende Arbeit!
Frage, ist dein Scriptprojekt mit der aktuellen AutoHotkey Version gecoded?
Spräche etwas dagegen die jeweilig verwendete AHK Version im Script(Header) zu nennen?
Im Falle von Inkompatibilitäten kann sowas eine wertvolle Info sein. Danke.
So, ich sehe und staune mal weiter
BoBo
-
- Posts: 53
- Joined: 17 Mar 2013 16:08
Re: [German] Flow Editor für Windows in AutoHotkey
Möglicherweise entlockt Martin die sehr optimistische Einschätzung 'ich schätze die Hälfte ist geschafft' ein leichtes Schmunzeln...
Re: [German] Flow Editor für Windows in AutoHotkey
Da hast du Recht. Die Einschätzung war sehr optimistisch.LightTempler wrote:Möglicherweise entlockt Martin die sehr optimistische Einschätzung 'ich schätze die Hälfte ist geschafft' ein leichtes Schmunzeln...
Das habe ich beim Versuch, den nächsten Schritt zu programmieren, gemerkt. Die verschiedenen Elemente haben sehr unterschiedliche Parameter, die zum Teil wiederholt vorkommen. Das einlesen dieser Parameter scheint jetzt einigermaßen zu funktionieren, aber das Bearbeiten steht noch bevor.
Weitere ungelöste Aufgaben:
- Eine Datei kann mehrere Flows enthalten.
- Bei mir können Verbindungen nur von unten am Ausgangselement beginnen und oben am Zielelement enden. AM unterstützt aber das Verschieben der Start- und Endpositionen der Verbindungen.
Ich mache jetzt etwas langsamer mit dem Projekt, sonst vernachlässige ich noch mein Studium. Ich kann nicht einschätzen, wann ich fertig sein werde.