Einige Gedanken zur Idee, Module automatisch miteinander zu verbinden...
Dennoch - die Idee, Komponenten, die offensichtlich "zusammenpassen", automatisch miteinander zu verbinden, klingt logisch...
Also erstellen wir automatische Verbindungen nur zwischen zwei auszuwählenden Modulen? Aber wie soll die Interqaktionsmetapher aussehen, die diesen Prozess startet? Drag'n'Drop ist aus meiner Sicht zu ungenau. Ich habe mir daher eine andere Möglichkeit einfallen lassen: Die Außenkanten der Module sind jetzt magnetisch - sie ecken sozusagen aneinander an.
Wenn ein Modul mit seinen Outputslots an die Inputslots eines anderen aneckt, ist dies das Signal, automatisch Verbindungen zwischen zueinander "passenden" Slots zu erstellen.
Setzt man dies als Kriterium an, stellt man aber schnell fest, dass dadurch fast jeder Outputslot mit jedem Inputslot verbunden wird - daher funktioniert das nicht.
Es ist auch keine Lösung, den automatischen Verbindungsaufbau dadurch einzuschränken, dass er nur dann erfolgt, wenn weder Aus- noch Eingang bisher mit einem anderen Modul verbunden sind. Das kann man sich am Beispiel eines Taktgeber-Moduls veranschaulichen: dort ist es ja So., dass wahrscheinlich gerade mehrere Module von seinem Taktausgang gesteuert werden sollen.
Man könnte dazu die Informationen im PropertyDescriptor nehmen, die im Attribut preferred steckt. Das würde aber nur auf Properties - mit anderen Worten Ausgänge - wirken und nicht auf Eingänge. Darüber hinaus kennzeichnet dieses Attribut laut Dokumentation die Properties, die an prominenter Position in der GUI platziert werden sollen - also wahrscheinlich nichts mit dem Erstellen von Verbindungen zu tun haben...
Man könnte den Ein- und Ausgängen selbst definierte Flags zuordnen, die einen Ein- oder Ausgang zweifelsfrei als solchen markieren, der die automatische Erzeugung von Verbindungen erlauben soll. In diesem Fall funktioniert diese Erstellung aber mit keinem Modul, das von Entwicklern geschaffen wurde, bevor das Feature "automatische Verbindungserstellung aktiviert wurde. Wenn ein Anwender nun verschiedene Module auf den Arbeitstisch zieht und versucht, diese per Automatik zu verbinden, dabei aber solcche erwischt, die dieses Flag nicht aufweisen, wird er nach dem dritten vergeblichen Versuch denken "Feature funktioniert nicht - mach ichs eben per Hand".
Ein möglicher Ausweg wäre die visuelle Markierung von Modulen, die die Automatik unterstützen - etwa durch Embleme...
Ein Seiteneffekt der Untersuchungen rund um das Thema war die Erweiterung der Interaktionsmöglichkeiten mit Verbindungen: ein Klick mit der linken Maustaste auf eine Verbindung schaltet sie zwischen den Stati aktiv und inaktiv um. Klickt man bei gehaltener Feststelltaste auf eine Verbindung, wird diese sofort entfernt.
Praktisch wurden von den hier vorgestellten Ideen zwei erprobt: die Erstellung von Verbindungen lediglich basierend auf der Kompatibilität ihrer Datentypen und die Markierung von "geeigneten" Slots per BeanInfo-Attributen. Die letztere wird hier in einem kurzen Video veranschaulicht: Das Modul Clock hat einen Ausgang, das Modul GaussianRandomBoxMuller je einen Aus- und Eingang und das Modul Sink einen Eingang, die als mögliche Kandidaten für die automartische Erstellung von Verbindungen gekennzeichnet wurden - zu erkennen jeweils an den Dekorationen rechts oben.
26.03.2017
Da ich - wie ich neulich in einer Kommunikation mit einem geschätzten Kollegen zum erstenmal explizit realisierte - dWb+ schon länger pflege als es die Herstellerfirma anderer Produkte überhaupt gibt, bin ich dennoch nicht zu stolz, neue Ideen einfließen zu lassen...
Fährnisse des Buildprozesses unter Windows
17.07.2019
Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Git(lab|hub) Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.
Weiterlesen...Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.
Weiterlesen...Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.
Weiterlesen...Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.