Skip to content

Releases: spamviech/zugkontrolle

v5.0.0

28 Apr 09:59
f70500b
Compare
Choose a tag to compare
  • Aufteilen in mehrere crates. Dazu waren ein paar Anpassungen notwendig:
    • Neuer KnopfThema-trait um Canvas-basierte Darstellungen über das Thema zu parametrisieren.
    • Invertiere parameter + implementierender Typ für den KnopfNachricht-Trait.
  • Weitere breaking API Änderungen:
    • Entferne verbleibende 2-suffixe.
    • Behebe clippy-lints, die eine public API-Anpassung benötigen (z.B. needless_pass_by_value).
    • Entferne WinkelGradmaß. Ein Konstruktor für Winkel ist ausreichend.
    • Entferne Trigonometrie-Trait. Verwende statt dessen Methoden auf dem Winkel-Typ.
    • Entferne Modal-Zustand. Verwende stattdessen Nachrichten & Konstruktor-Parameter.
    • Füge padding beim bewegen-Widget hinzu.
    • Zugkontrolle-Parameter S muss zusätzlich Display implementieren.
    • Anpassen der Nachricht-Typen.
    • Umbenennen SteuerungAktualisierenFehler::Deserialisieren -> Reservieren.
    • Umbenennen Ergebnis::FehlerMitErsatzwert -> WertMitWarnungen.
  • Dunkles Thema. Dazu wurden u.a. die zeichnen Methode des Cache angepasst.
  • Verwende PickList für Modus-Auswahl.
  • Verwende rfd zur Datei-Auswahl beim Speichern und Laden.
  • Zeige Schließen-Knopf wieder am Ende im Lizenzen-Widget an.
  • Anpassen der Widget-Anordnung der Kopf-Leiste.
  • Erlaube (nachträgliches) Anpassen des Interrupt-Pins eines Pcf8574.
  • Verwende Slider auch für KonstanteSpannung-Geschwindigkeiten.
  • Lizenzen werden direkte über include_str eingebunden.
  • Verbesserungen im Gleise-canvas:
    • Touch-Bewegungen aktualisieren nicht mehr die gespeicherte Maus-Position.
    • Zeige Gleise direkt nach dem hinzufügen an.
    • Korrigiere Offset bei gedrehtem Canvas.
    • Anpassen des Mauszeigers, wenn er über einem Gleis ist.
    • Anpassen des Mauszeigers, wenn er über einem Knopf ist und dadurch ein Gleis hinzugefügt wurde.
    • Bevorzuge genau angeklickte Gleise, bevor der Toleranz-Bereich berücksichtigt wird.
  • Ersetzte Debug-Ausgaben (die durch clippy erkannt werden) für Fehler durch Display-Ausgabe über thiserror::Error
  • Aktualisiere auf iced v0.12

v4.0.3

11 Feb 14:36
91fb12b
Compare
Choose a tag to compare
  • Knöpfe zeigen wieder an, wenn sich der Mauszeiger über ihnen befindet.
  • Bewegen- und Drehen-Widgets reagieren auf Touch-Events.
  • Zeichne diagonale Richtungen für das Bewegen-Widget.

v4.0.2

04 Feb 13:32
23d2469
Compare
Choose a tag to compare
  • Drehen-Widget passt den Mauszeiger an, wenn der Mauszeiger auf den Knopf zeigt, oder er gezogen wird.
  • Bewegen-Widget passt den Mauszeiger an, wenn der Mauszeiger auf aktive Elemente zeigt.
  • Verwende async_io für die async-Funktion Nachricht::nach_sleep.
  • Korrigiere Zeichen-Reihenfolge der Gleise::draw-Methode.
    Es werden z.B. wieder beide Seiten von überlappenden Verbindungen angezeigt.
  • Färbe den Hintergrund von überlappenden Verbindungen mit Gehalten-Beteiligung erneut ein.

Zusätzlich Code-Anpassungen um lints von cargo clippy zu berücksichtigen.

v4.0.1

03 Jan 16:07
4f8edac
Compare
Choose a tag to compare
  • Gleise-Canvas hört auf Touch-Eingaben. Es können mehrere Gleise gleichzeitig bewegt werden.
  • Modal-Widget unterstützt passthrough_events, die immer vom Underlay verarbeitet werden,
    selbst wenn das Overlay aktuell angezeigt wird.

v4.0.0

02 Jan 12:50
2a0fb64
Compare
Choose a tag to compare
  • neues Feature "raspi", ersetzt bisherige target-spezifische Logik
  • Kontakte werden auf dem Canvas als Kreise angezeigt
  • Kontakte können für Geraden und Kurven per Doppelklick eingestellt werden
  • Zusätzliche "trailing" Bytes werden beim Laden nicht mehr ignoriert. Stattdessen kommt es zu einem Fehler.
  • Neues ID-basiertes Speicherformat.
    • Weiterhin sehr stark an wirklich verwendete Datenstrukturen angelehnt.
    • Gleis-Definitionen kommen nur noch ein mal vor.
  • verbessere build-scripts:
    • neue targets: 64-bit raspi, x86_64 linux
    • erkenne automatisch host target-triple
    • binaries enthalten immer target-triple + version
    • lese name+version aus Cargo.toml
    • ausführen unabhängig vom aktuellen Arbeitsverzeichnis möglich
    • stelle sicher ziel-Ordner existiert, bevor scp ausgeführt wird
    • config.ini um Einstellungen lokal zu überschreiben
    • deploy.py "bearbeitet" nur aktivierte targets
    • neues "raspi"-feature wird automatisch anhand des targets gesetzt
  • refactoring:
    • verschiebe MitRichtung nach steuerung::weiche
    • verwende &str statt &String für Zeichne::name_und_beschreibung und MitName::name
    • extrahiere application::Nachricht (+ Hilfsgrößen) und AuswahlZustand in eigene Module
    • verwende From-implementierungen zur Konvertierung der Auswahl-Nachrichten.
    • entferne die meisten pub use re-exports
    • entferne lifetime vom MitSteuerung
    • verschiebe *Serialisiert-Definitionen für Sammel-Strukturen nach gleis::gleise::de_serialisieren::v4
    • Neue Implementierung für Ids (jetzt zahlen-basiert).
    • AuswahlZustand verwendet Id als ersten Parameter (analog zu allen anderen Datenstrukturen)
  • aktualisiere iced auf Version 0.10.0 (+ aktualisiere weitere dependencies)
  • pcf8574::Port::als_(input|output) geben immer den Port zurück,
    selbst wenn es beim Initialisieren einen Fehler gab (z.B. pcf8574 nicht angeschlossen).
  • (Input|Output)Anschluss::reserviere gibt FehlerMitErsatzwert zurück,
    wenn initialisieren nicht erfolgreich war (z.B. pcf8574 nicht angeschlossen).
  • entferne RwLock aus Gleise-Struktur, um auftretende Deadlocks zu beheben
  • ersetzte Mutex in Steuerung-Struktur, um Deadlocks bei gleichzeitigem neuzeichnen zu beheben
  • erstelle FlatMap, um mehrere Nachrichten zurückgeben zu können
  • ermögliche Auswahl des I2C-Busses bei Anschlüssen
  • alle I2C-Busse sind standard-mäßig deaktiviert
  • neue Gleise erscheinen direkt an der richtigen Position
  • Anschluss-Auswahl für Weichen/Kreuzungen wird immer richtig geschlossen
  • Schriftgröße von Beschreibungen skaliert nun ebenfalls
  • gebe Empfänger Id-Parameter, falls mehrere benötigt werden
  • Reserviere hat jetzt zusätzlich RefArg und MutRefArg als (veränderliche) Referenz-Argumente für reserviere
  • Anpassen der Fehler-Enums
  • Erlaube einfaches bearbeiten vorhandener Streckenabschnitte und Geschwindigkeiten

v3.0.0

10 Jul 20:58
Compare
Choose a tag to compare
  • Fehlermeldung bei Anschlüsse anpassen schließt nicht mehr das Dialog-Fenster
  • Zeige Fließend-Status von Streckenabschnitten über Transparenz an
  • Verwende einen Slider anstelle von Buttons zum Skalieren
  • Nach erfolgreichem Speichern wird der Knopf temporär Grün gefärbt
  • Aktuelle Richtung einer Weiche wird über Transparenz der Füllung angezeigt
  • Neue Kommandozeilen-Argumente zoom, x, y, winkel
  • Verbesserte Widgets zum einstellen von Position und Rotation
  • Erlaube entfernen von Weichen-Steuerung
  • Bisherige Anschlüsse werden beim Anpassen von z.B. Weichen berücksichtigt
  • Bei fehlgeschlagenem Laden wird immer ein leerer Zustand erzeugt
  • Fehlermeldungen enthalten falls möglich den betroffenen Anschluss
  • Länger dauernde Aktionen (z.B. Weiche schalten) werden in einem eigenen Thread ausgeführt
  • Bei Drag&Drop wird ein einrasten vor loslassen des Gleises angezeigt
  • Klicks müssen nicht mehr aufs Pixel genau das Gleis treffen
  • Verwende selbst-geschriebene Bibliothek für Kommandozeilen-Argumente,
    inklusiver Anpassung der erlaubten Argumente
  • Anpassen des Speicher-Formats.
    Ein Laden von mit Version 2.0.X erzeugten Dateien ist weiterhin möglich.
  • Bibliothek: erlaube assoziieren von Streckenabschnitten mit einer Geschwindigkeit
  • Bibliothek: erlaube Verwendung anderer I2c-Kanäle für Pcf8574-Anschlüsse
  • Bibliothek: Zugtyp kein Typ-Parameter mehr, sonder ein echter Typ gespeichert im Gleise-Zustand
    • Dadurch Spurweite als zusätzlicher Parameter vieler Funktionen
    • Leiter als Parameter, sofern notwendig (z.B. Geschwindigkeit)
    • Teil des Speicherformats
    • Ermöglicht im Prinzip nachträgliches hinzufügen neuer Gleise zu einem Zugtyp
  • Bibliothek:
    Ehemalige Konstanten bei Funktionen in steuerung::geschwindigkeit und steuerung::weiche
    sind jetzt Argumente.
    Sie werden für das GUI im Zugtyp gespeichert.
  • Bibliothek: Viele fehlenden docstrings ergänzt.
  • Bibliothek: GUI an neue iced-version mit state-less widgets angepasst
  • Bugfix: Bei fehlgeschlagenem Einstellen der Geschwindigkeit wird das UI nicht verändert
  • Refactoring: Aufsplitten von großen Modulen (application.rs, gleise.rs)
  • Refactoring: Verwende AnyId statt GleisId<Z>.
    Ids unterschiedlicher Gleise sind jetzt wirklich unabhängig
  • Refactoring: Alle Module sind public
  • Refactoring: Module umbenannt
    • serde.rs -> de_serialisieren.rs
    • anchor.rs -> verbindung.rs
    • polarity.rs -> polarität.rs
    • maps.rs -> daten.rs
    • args.rs -> argumente.rs
    • button.rs -> knopf.rs
  • Refactoring: Module neu sortiert
    • zugkontrolle::application::gleis -> zugkontrolle::gleis
    • zugkontrolle::application::typen -> zugkontrolle::typen
    • zugkontrolle::farbe -> zugkontrolle::typen::farbe
    • Untermodule entsprechend mit-verschoben
    • gleise::de_serialisieren ist jetzt ein Untermodul von gleise::daten
  • Refactoring: diverse Methoden-namen übersetzt
  • Refactoring: diverse Fehler-Typen umbenannt Error->Fehler
  • Refactoring: diverse Typen umbenannt Status->Zustand (state ist Zustand, nicht Status)
  • Refactoring: diverse Nachrichten-Typen umbenannt Message->Nachricht
  • Refactoring: diverse Verbindungs-Typen umbenannt
    • AnchorName->VerbindungName
    • AnchorPoints->Verbindungen
  • Refactoring: Typ umbenannt GleiseMaps -> GleiseDaten
    Dazu Änderung der internen Repräsentation auf einen RTree
  • Refactoring: Typen umbenannt:
    • Grabbed -> Gehalten
    • Args -> Argumente
    • args::Zugtyp -> ZugtypArgument
    • Button -> Knopf
  • Refactoring: GleisId neu gedacht
  • Refactoring: Anpassung diverser Traits an neue Anforderungen
  • Refactoring: GleiseMap-Trait (jetzt DatenAuswahl) ist nicht mehr public.
    Stattdessen werden explizite Methoden für jeden Typ bereitgestellt.
  • Crate umbenannt: zugkontrolle-derive -> zugkontrolle-macros
  • dependencies aktualisiert

v2.0.1

28 Jun 14:31
Compare
Choose a tag to compare
  • Checkbox zum automatischen Festlegen von Streckenabschnitten startet deaktiviert
  • Geschwindigkeit wird nach umdrehen auch als 0 angezeigt
  • Neues Kommandozeilen-Argument: --verbose

v2.0.0

19 Jun 09:55
Compare
Choose a tag to compare
  • Neuschreiben in rust
  • Anzeige & Steuerung über Gleisplan, kein Cmd-UI mehr
  • Doppelklick für festlegen der Richtungs-Anschlüsse einer Weiche/Kreuzung
  • Streckenabschnitt erstellen über eigenes Untermenü
  • Zuweisen zu Gleisen über Erstellen/Klick nach Auswahl
  • Geschwindigkeiten erstellen über eigenes Untermenü
  • Lego-Weichen werden auf Raspi-Seite genauso bedient wie Märklin-Weichen
  • Streckenabschnitte schalten über Klick auf assoziierte Gerade/Kurve
  • Schalten von Weichen/Kreuzungen über Klick auf das jeweilige Gleis
  • Speichern über ein binary Format
  • Kontakte können aktuell nicht erstellt werden
  • Aktuell ist nur deutsche Sprache unterstützt
  • Wegstrecken/Pläne sind aktuell nicht unterstützt

v1.2.0.1

22 Jun 00:11
Compare
Choose a tag to compare

Wartezeit zwischen i2c-Befehlen hinzugefügt.
PCF8574 sollten nicht mehr z.B. bei "einstellen" einer Wegstrecke den falschen Wert erhalten.

v1.2.0.0

19 Jun 10:00
Compare
Choose a tag to compare
v1.2.0.0 Release