Releases: spamviech/zugkontrolle
Releases · spamviech/zugkontrolle
v5.0.0
- Aufteilen in mehrere crates. Dazu waren ein paar Anpassungen notwendig:
- Neuer
KnopfThema
-trait um Canvas-basierte Darstellungen über dasThema
zu parametrisieren. - Invertiere parameter + implementierender Typ für den
KnopfNachricht
-Trait.
- Neuer
- 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ürWinkel
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ätzlichDisplay
implementieren. - Anpassen der
Nachricht
-Typen. - Umbenennen
SteuerungAktualisierenFehler::Deserialisieren
->Reservieren
. - Umbenennen
Ergebnis::FehlerMitErsatzwert
->WertMitWarnungen
.
- Dunkles Thema. Dazu wurden u.a. die
zeichnen
Methode desCache
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
v4.0.2
- 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
v4.0.0
- 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
- 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 insteuerung::geschwindigkeit
undsteuerung::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
istZustand
, nichtStatus
) - 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
v2.0.0
- 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