Nodegram - Entwicklung

Inhalt

(Zurück zur Nodegram-Hauptseite)

Die aktuellsten Entwicklungsfortschritte von Nodegram können hier mitverfolgt werden. Sämtliche Testversionen sind unter https://www.wittnet.at/software/nodegram/tests/ zu finden.

Log

18.05.2019 Deployment Updates.

23.03.2019 ID-Fehlerhandling verbessert.

Die Laderoutinen der Map geben nun entsprechende Fehlermeldungen an den User sobald Probleme erkannt wurden.
23.03.2019 Underschiedliche Pfade für Release- und Test-Versionen im Deployment.

Die produktive Schiene läuft nun unabhängig von den Test-Versionen.
22.03.2019 Raster verkleinert. Cleanups.

22.03.2019 Test-Mode erweitert. Optionales Logfile als Parameter.

Im Test-Mode werden nun einfache Shapes erstellt, danach beendet sich das Programm. Zusätzlich wurde nun ein Logfile-Parameter eingefügt welcher sämtliche Ausgaben in ein File umleitet.
22.03.2019 Test-Modus Basis implementiert.

Die eigentlichen Tests werden direkt vom Panel per Timer gestartet. Das Resultat der Tests wird als Exit-Code übergeben.
22.03.2019 Multi-Language-Support eingebaut.

Es wurde die Basis für die Mehrsprachigkeit von Nodegram entwickelt.
22.03.2019 Parameter-Handling eingefügt.

Die Basis für das Parsen von Parameter wurde nun hinzugefügt.
21.03.2019 Memcheck hinzugefügt.

21.03.2019 Id-Manager hinzugefügt.

Über diesen sollen in Zukunft sämtliche ID-Anforderungen laufen. Die globalen Zähler sollen verschwinden und auch die Laden-/Speichern-Funktionen sollen ID's zukünftig über diese Manager handeln.
21.03.2019 Versionshandling aktualisiert.

version.h wird von unterschiedlichen Stellen zur Abfrage der Version verwendet. nodegram_raw_version[] wurde deshalb eingefügt.
20.03.2019 Fehler bei Events-Zuweisung (mouseRightDown) behoben.

20.03.2019 Connection-Nodes bei Diamond korrigiert. Größen justiert.

Die Connection-Nodes eines Diamond-Shapes sind nun innerhalb des Shapes zu finden und kollidieren nicht mehr mit den Skalierungs-Knoten. Die Größen aller Shapes wurden korrigiert damit diese gut ins Raster passen und per Default keine "schiefen" Verbindungen entstehen.
20.03.2019 Maus-Events umstrukturiert.

Der MausButton soll innerhalb von MouseButton-Events nicht extra abgefragt werden wenn es eigene Events dafür gibt. Aus diesem Grund wurden mouseDown() und mouseUp() entfernt und durch Versionen ersetzt welche direkt auf den gedrückten Button referenzieren.
03.03.2019 Dokumentation umstrukturiert

01.03.2019 Externes Versionsfile. Projektfile Updates

Die Nodegram-Versionierung läuft nun automatisiert indem das File version.h durch build_version.sh generiert wird. In der Debug-Version wird auch die GIT-Commit-ID angezeigt.
01.03.2019 LastOpenPath und LastSavePath vollständig implementiert

Beide Verzeichnisse werden nun je nach Zugriffsart bei diversen Open-/Save-Dialogen verwendet um dem User das mühsame Wechseln zwischen den Verzeichnissen zu ersparen.
06.02.2019 Projektfiles modifiziert.

05.02.2019 data-Verzeichnis hinzugefügt.

05.02.2019 Projektfiles modifiziert.

03.02.2019 Ablaufdatum erhöht.

09.12.2018 Design-Dokument hinzugefügt.

25.11.2018 Skalierung für Dreiecke implementiert

Die Klasse Shape wurde entsprechend erweitert und ShapeTriangle verwendet nun auch schon die Skalierungs-Funktion. Mittels der Tasten "+" und "-" kann die Skalierung für Dreiecke verändert werden.
15.11.2018 Fehlerhafte Darstellung bei ConnectorShape behoben

Das Problem hatte eigentlich alle Shapes betroffen. Beim ConnectorShape ist es aber primär aufgefallen da die Darstellung von der Variable mConnectionCount abhängt. Der Fehler lag daran das mConnectionCount beim Verschieben von Connections in den betreffenden Shapes nicht korrigiert wurde.
14.11.2018 Triangle wurde hinzugefügt

Als Basis wurde das Rectangle verwendet. Alle 3 Eckpunkte können positioniert werden. Die nächsten Änderungen sollten allerdings die Möglicheit einer Skalierung umsetzen.
14.11.2018 Unterschiedliche Arten von Deployment eingerichtet

Es wird nun zwischen Releases und Test-Versionen unterschieden. Für Win32 wurde dies schon vollständig implementiert.
14.11.2018 Makefiles generalisiert.

14.11.2018 Update zur Deployment-Umstellung.

14.11.2018 Deployment in die Build-Verzeichnisse verschoben.

28.10.2018 Farbauswahl bei Selektionen (Font/Fill)

Die Farbe aller Shapes einer Selektion wird nun korrekt gesetzt. Sowohl Font- als auch Fillcolor.
28.10.2018 Bezeichner von Connector nach Connection korrigiert

Diese Änderung war notwendig damit die Begriffe klarer erscheinen und der Sourcecode auch lesbarer wird. In Kommentaren finden sich teilweise noch die alten Begriffe, diese werden im Laufe der nächsten Änderungen korrigiert bzw. gelöscht.
22.08.2018 Dump-Funktionen verbessert.

Es wurde eine allgemeine Funktion GetObjectTypeName() erstellt welche den Type des übergebenen Shapes als String zurückliefert. Andere Codestellen wurden entsprechend aktualisiert.
22.08.2018 Entfernen von Pixel-orientierten Funktionen in ShapeImage.

ShapeImage soll bei Bedarf auf Cairo-Funktionen zurückgreifen und nicht auf Pixel-Basis Grafiken erzeugen. Ausnahme ist lediglich die eigentliche Grafik welcher hinter ShapeImage steckt. Der Eckpunkt bei einem ShapeImage wird nun nicht mehr angezeigt und die Größe kann auch nicht verändert werden.
19.08.2018 Demo-Version Abfrage in Timer aktiviert.

Dies ist ein Sicherheitsfeature um sicherzustellen das abgelaufene Versionen auch während der Programmausführung nicht lauffähig sind bzw. hier abfragen passieren.
19.08.2018 Native Beschriftungen in ShapeImage nun möglich.

Neben den Pixel-orientierten Beschriftungen sollen in ShapeImage auch die regulären Beschriftungen möglich sein. Diese wurden nun hinzugefügt.
17.04.2018 Bugfix bei der Darstellung von Schriften in ShapeImage.

17.04.2018 Funktionen zum Beschriften von Images wurden hinzugefügt.

Neben der Funktion zum Zeichnen von Pixel können nun auch Texte in einem Image geschrieben werden.
13.04.2018 Konfigurations-Dialog hinzugefügt. Release 0.0.0.9

Es wurde nun die Basis geschaffen um Einstellungen speichern zu können. Ebenso wurden entsprechende Gui-Elemente hinzugefügt.
09.04.2018 Tastenkürzel wurden eingefügt. Verbesserung bei den Filedialogen.

Tastenkürzel zum Öffnen, Speichern und neu Erstellen der Map wurden eingeführt. Filedialoge nehmen nun das zuletzt verwendete Verzeichnis als Basis. Es werden nur mehr wichtige Ereignisse in der Statusleiste angezeigt. Keine Debugging-Ausgaben mehr.
07.04.2018 Optischen Bugfix beim Klicken eines Connectors.

Wird ein Connector angeklickt so soll optisch kein Dragging-Connector angezeigt werden da dies sonst beim einfachen Selektieren verwirrend sein kann.
06.04.2018 Das Raster kann nun verändert werden.

Wahlweise kann zwischen 20 Pixel und 1 Pixel mittels der Taste "y" umgeschaltet werden.
06.04.2018 Das Verschieben von Connectoren ist nun möglich. Release 0.0.0.8

Es gibt hier einige redundante Stellen welche noch aufgelöst werden müssen. Die Basis ist allerdings verfügbar und stabil.
03.04.2018 Bug in der Darstellung von Shapes behoben.

"Obenliegende" Shapes können nun selektiert werden. Verdeckte Shapes nicht. Dies war vorher genau umgekehrt.
03.04.2018 Windows Ressource-File hinzugefügt.

Nodegram-Icons werden nun unter Windows am Desktop und in der laufenden Applikation angezeigt.
02.04.2018 Map-Steuerung mittels Keyboard korrigiert. Radius beim Circle nun per Setting änderbar. 0.0.0.7

Die Steuerung ist nun ein wenig intuitiver wobei diese Einstellung später der User verändern können soll. Der Radius eines Circle kann nun im SettingsPanel geändert werden.
02.04.2018 ShapeCircle hinzugefügt.

01.04.2018 ShapeDiamond eingefügt.

Intern wird er wie ein Polygon behandelt wobei er in seinen Möglichkeiten beschränkt wurde damit der User die Grundform nicht verändern kann.
31.03.2018 ShapeConnector eingefügt. Release 0.0.0.6

Mit der ShapeConnector-Klasse wird es nun möglich Connectoren miteinander zu verbinden. Dieser Shape-Type versteckt sich sobald ein Connector mit ihm verbunden ist und wird erst sichtbar wenn der Cursor über ihm steht.
31.03.2018 Bugs in den Farbdarstellungen behoben. Farben bei Connectoren/Nodes verbessert.

In manchen Funktionen wurde als Farbwert 255 verwendet obwohl der Double-Wert nur sinnvoll mit Werten zwischen 0 und 1 umgehen kann. Optisch hat dies keine Veränderungen gebracht da die Werte von 255 auf 1 geändert wurden und das dem gleichen Wert entspricht. Nodes haben nun auch immer einen Rahmen.
31.03.2018 Problem beim Löschen von Connectoren behoben.

Ein Connector wurde erst dann gelöscht wenn der Cursor tatsächlich über dem Connector stand. Nun wird die Selektion gelöscht egal wo sich der Cursor letztendlich befindet.
31.03.2018 ConnectorNodes farblich verbessert.

Diese Nodes haben nun einen Body und einen Rahmen. Beide Teile werden in unterschiedlichen Farben angezeigt was ein wenig professioneller aussieht.
29.03.2018 SettingsPanel hinzugefügt. Fehlenden Linux-Wrapper hinzugefügt. Release 0.0.0.5

Im SettingsPanel können nun nähere Infos zum selektierten Shape/Connector abgefragt werden. Dieses wird in Zukunft noch erweitert weshalb nur ein paar Felder berücksichtigt werden. Das File linux/wrapper.c fehlte. Es wurde nun hinzugefügt da sonst der Linux-Build fehlschlägt. Das File enthält derzeit nur den memcpy-Wrapper und es dient in erster Linie dazu um gezielte API-Versionen einer Funktion aus glibc zu verwenden.
26.03.2018 Linux Deployment hinzugefügt. Farb-Dialoge. Release 0.0.0.4

Der Linux-Installer wurde nun testweise hinzugefügt. Unter Linux-Mint laufen die erzeugten Binaries schon. Die Farbe von Shapes und deren Text kann nun geändert werden.
23.03.2018 Map wird nun bei jedem Skalierungsfaktor korrekt verschoben.

22.03.2018 Connectoren können nun selektiert werden. Release 0.0.0.3

Durch die Selektion ist es nun auch möglich die Caption eines Connectors zu ändern.
22.03.2018 Kontext-Menu eingefügt. Map wird nun durch die mittlere Maustaste bewegt.

Die rechte Maustaste aktiviert nun ein Kontext-Menu bezogen auf das darunterliegende Shape.
22.03.2018 Menupunkte zum Erzeugen von Shapes hinzugefügt.

Die Shapes werden dabei immer im Mittelpunkt des Screens erstellt.
21.03.2018 Logging-Output vermindert. Key-Events besser kanalisiert. Release 0.0.0.2

Die Windows-Version zeigte Performance-Probleme aufgrund der zahlreichen Logging-Ausgaben. Diese wurden nun verringert bzw. wird debug() statt Logger() verwendet. Das Logging-Window leitet nun KeyEvents an das Panel weiter. Andere Events machen noch Probleme (zB. Mousewheel-Events unter Windows) Aus diesem Grund kann das Logging-TextCtrl nun mittels der Taste "l" aktiviert bzw. deaktiviert werden.
20.03.2018 XML Handling verbessert. Release 0.0.0.1

XML-Dateien können nun für die wichtigsten Basis-Typen gespeichert und auch wieder geladen werden. Entsprechende Menupunkte wurden eingefügt. Ebenso wurden Open- und Save-Dialoge aktiviert. Das Schlüsselwort "class" wurde nun durch "type" ersetzt. Im XML-File ist dies behoben, im Code wird stellenweise noch "class" verwendet. "class" ist scheinbar ein reserviertes Wort weshalb es Probleme mit mxml gab.
19.03.2018 Test-ShapeImage wird nun aus dem Code geladen. Cleanups.

18.03.2018 Schatten eingefügt. Darstellungs-Bug bei Connectoren behoben.

Der Schatten kann mit der 'b'-Taste aktiviert bzw. deaktiviert werden. Beim Vergrößern von Shapes wurden die Connectoren seitens der Position nicht angepasst. Dies wurde nun korrigiert.
18.03.2018 Splash-Screen hinzugefügt.

18.03.2018 Shape-Selektionen können nun gelöscht werden.

Mittels der Entfernen-Taste können nun mehrere selektierte Shapes gelöscht werden.
18.03.2018 Pfeil-Cache implementiert.

Die Positionen eines Pfeils (Egal ob Pfeil 1 oder Pfeil 2) werden nun im Objekt gespeichert und erst bei Bedarf berechnet. Somit entfällt die Berechnung bei jedem Draw was eine Performance-Steigerung bewirkt.
17.03.2018 Direktes Zeichnen von Pfeilen durch Callbacks ersetzt.

Die Pfeile werden nun nicht mehr direkt gezeichnet sondern durch ein Callback welches mittels Funktionszeiger auf eine andere Funktionalität umgelenkt werden kann um so das Aussehen der Pfeile zu verändern.
17.03.2018 Profiling hinzugefügt.

Mittels "make profiling=1" werden Profiling-Informationen in das Binary geschrieben welche mit "make profile" grafisch dargestellt werden (Call-Graph) Die Statistiken basieren dabei auf gprof.
16.03.2018 Selektierter Connector zeigt nur mehr die Linie bis zu den Pfeilen.

Zuvor wurde die Linie bis zum ConnectorNode gezeichnet.
14.03.2018 mSelectedNode und mSelectedShape entfernt. Code bereinigt.

mSelectedNode und mSelectedShape waren redundant vorhanden da die Information, ob ein Shape oder Knoten selektiert ist, auch in den namensähnlichen Vektoren zu finden sind. Der Code wurde generell ein wenig bereinigt. Unbenutzte Variablen wurden entfernt.
13.03.2018 Aufräumarbeiten und Code-Optimierungen.

Die Code-Optimierungen zielen vor allem auf eine bessere Übersicht ab und sollen aber nebenbei auch Performance bringen. Logging-Ausgaben werden nun gefiltert, d.h. identische Ausgaben werden nun nur mehr optional angezeigt um das Logfile nicht zu überfluten.
06.02.2018 Initial