From 6ceb47dcf1c700d5e958fade1792e8dcfb8b33e2 Mon Sep 17 00:00:00 2001 From: Florian Thienel Date: Sun, 15 Dec 2024 11:17:33 +0100 Subject: [PATCH] show the entry and callinfo widgets in fyne Signed-off-by: Florian Thienel --- fyneui/app.go | 4 +- fyneui/entry.go | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 fyneui/entry.go diff --git a/fyneui/app.go b/fyneui/app.go index 1ea1a2e..3a78d28 100644 --- a/fyneui/app.go +++ b/fyneui/app.go @@ -36,6 +36,7 @@ type application struct { mainWindow *mainWindow mainMenu *mainMenu qsoList *qsoList + entry *entry workmodeControl *workmodeControl keyerControl *keyerControl statusBar *statusBar @@ -58,6 +59,7 @@ func (a *application) activate() { a.shortcuts = setupShortcuts(a.controller, a.controller.Keyer) a.mainMenu = setupMainMenu(a.controller, a.shortcuts) a.qsoList = setupQSOList() + a.entry = setupEntry() a.workmodeControl = setupWorkmodeControl() a.keyerControl = setupKeyerControl() a.statusBar = setupStatusBar() @@ -73,7 +75,7 @@ func (a *application) activate() { a.controller.Keyer.SetView(a.keyerControl) a.controller.ServiceStatus.Notify(a.statusBar) - a.mainWindow.setContent(a.qsoList.container, a.workmodeControl.container, a.keyerControl.container, a.statusBar.container) + a.mainWindow.setContent(a.qsoList.container, a.entry.container, a.workmodeControl.container, a.keyerControl.container, a.statusBar.container) a.mainWindow.window.SetMainMenu(a.mainMenu.root) a.shortcuts.AddTo(a.mainWindow.window.Canvas()) diff --git a/fyneui/entry.go b/fyneui/entry.go new file mode 100644 index 0000000..0e29784 --- /dev/null +++ b/fyneui/entry.go @@ -0,0 +1,117 @@ +package fyneui + +import ( + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/layout" + "fyne.io/fyne/v2/widget" +) + +type entry struct { + container *fyne.Container + + // my data + utcLabel *widget.Label + myCallLabel *widget.Label + myExchangesParent *fyne.Container + myExchanges []*widget.Entry + + // VFO + vfoNameLabel *widget.Label + frequencyLabel *widget.Label + bandSelect *widget.Select + modeSelect *widget.Select + + // their data + theirLabel *widget.Label + theirCall *widget.Entry + theirExchangesParent *fyne.Container + theirExchanges []*widget.Entry + + // prediction + predictedCallLabel *widget.Label + predictedExchangesParent *fyne.Container + predictedExchanges []*widget.Label + predictedValueLabel *widget.Label + + // information + messageLabel *widget.Label + dxccLabel *widget.Label + userInfoLabel *widget.Label + supercheckLabel *widget.RichText + + // buttons + logButton *widget.Button + clearButton *widget.Button +} + +func setupEntry() *entry { + result := &entry{} + + // my data row + result.utcLabel = widget.NewLabel("00:00") + result.myCallLabel = widget.NewLabel("DB0ABC") + result.myExchangesParent = container.NewHBox() + + // vfo row + result.vfoNameLabel = widget.NewLabel("VFO:") + result.frequencyLabel = widget.NewLabel("3.500 kHz") + result.frequencyLabel.Alignment = fyne.TextAlignTrailing + result.bandSelect = widget.NewSelect([]string{}, result.onBandSelect) + result.modeSelect = widget.NewSelect([]string{}, result.onModeSelect) + + // entry row: predcition + result.predictedCallLabel = widget.NewLabel("DL1ABC") + result.predictedExchangesParent = container.NewHBox() + result.predictedValueLabel = widget.NewLabel("0P 0M = 0") + + // entry row: input + result.theirLabel = widget.NewLabel("Their:") + result.theirCall = widget.NewEntry() + result.theirExchangesParent = container.NewHBox() + result.logButton = widget.NewButton("Log", result.onLog) + result.clearButton = widget.NewButton("Clear", result.onClear) + + // entry grid + myDataRow := container.NewHBox(result.utcLabel, result.myCallLabel, result.myExchangesParent, layout.NewSpacer()) + vfoRow := container.NewHBox(result.vfoNameLabel, result.frequencyLabel, result.bandSelect, result.modeSelect, layout.NewSpacer()) + labelColumn := container.NewVBox(layout.NewSpacer(), result.theirLabel) + callColumn := container.NewVBox(result.predictedCallLabel, result.theirCall) + exchangeColumn := container.NewVBox(result.predictedExchangesParent, result.theirExchangesParent) + valueButtonColumn := container.NewVBox(result.predictedValueLabel, container.NewHBox(result.logButton, result.clearButton)) + entryRow := container.NewHBox(labelColumn, callColumn, exchangeColumn, valueButtonColumn) + + // info + result.messageLabel = widget.NewLabel("Message") + result.dxccLabel = widget.NewLabel("Fed. Rep. of Germany (DL), EU, ITU 28, CQ 14") + result.userInfoLabel = widget.NewLabel("Hans, Salzgitter") + infoLine := container.NewHBox(result.dxccLabel, layout.NewSpacer(), result.userInfoLabel) + result.supercheckLabel = widget.NewRichTextWithText("DL1ABC") + + result.container = container.NewVBox( + myDataRow, + vfoRow, + entryRow, + result.messageLabel, + infoLine, + result.supercheckLabel, + ) + + return result +} + +func (e *entry) onLog() { + // TODO implement +} + +func (e *entry) onClear() { + // TODO implement +} + +func (e *entry) onBandSelect(bandLabel string) { + // TODO implement +} + +func (e *entry) onModeSelect(modeLabel string) { + // TODO implement +}