63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
/*
|
|
* ============================================================================
|
|
* Projekt.....: rs2322tcp
|
|
* Datei.......: cmd/rs2322tcp-client/main.go
|
|
* Copyright (C) 2026 Dieter Lang
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*
|
|
* Beschreibung:
|
|
* Einstiegspunkt für den grafischen rs2322tcp-Client.
|
|
*
|
|
* Der Client wird als eigenständige Desktop-Anwendung ausgeführt. Die
|
|
* grafische Oberfläche basiert auf Fyne und bildet sowohl die
|
|
* Statusanzeige als auch später die Konfiguration der lokalen virtuellen
|
|
* seriellen Ports ab.
|
|
*
|
|
* Die eigentliche Client- und Runtime-Logik bleibt in den internen
|
|
* Packages gekapselt. Diese Datei ist bewusst auf den Programmstart
|
|
* und die Übergabe an die GUI beschränkt.
|
|
* ============================================================================
|
|
*/
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"fyne.io/fyne/v2/app"
|
|
|
|
"git.lang-dieter.de/rs2322tcp/internal/gui"
|
|
"git.lang-dieter.de/rs2322tcp/internal/version"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Printf("rs2322tcp-client %s\n", version.Version)
|
|
|
|
application := app.NewWithID("git.lang-dieter.de.rs2322tcp.client")
|
|
|
|
guiApplication, err := gui.NewApp(
|
|
application,
|
|
"./configs/client.json",
|
|
)
|
|
if err != nil {
|
|
fmt.Printf("GUI konnte nicht gestartet werden: %v\n", err)
|
|
return
|
|
}
|
|
|
|
// Das technische Client-System wird nach dem Erzeugen des Fensters
|
|
// asynchron gestartet. Dadurch bleibt die GUI auch während des
|
|
// Verbindungsaufbaus sofort sichtbar und bedienbar.
|
|
guiApplication.Start()
|
|
|
|
// SetOnClosed gehört zum Fyne-Fenster, nicht zur Fyne-Anwendung.
|
|
//
|
|
// Beim Schließen des Hauptfensters wird die technische Client-
|
|
// Anwendung beendet. Dadurch werden Runtime, Bridges, virtuelle
|
|
// Ports und die Serververbindung sauber geschlossen.
|
|
guiApplication.Window().SetOnClosed(func() {
|
|
guiApplication.Close()
|
|
})
|
|
|
|
// ShowAndRun zeigt das Fenster und startet den Fyne-Eventloop.
|
|
guiApplication.ShowAndRun()
|
|
}
|