uyOCD/main.go

92 lines
2.5 KiB
Go

package main
import (
"fmt"
"os"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/storage"
"fyne.io/fyne/v2/widget"
)
var mainWin fyne.Window
type Containers struct {
device *fyne.Container
main *fyne.Container
erase *fyne.Container
program *fyne.Container
rtt *fyne.Container
}
var containers Containers
func main() {
mainApp := app.New()
mainWin = mainApp.NewWindow("File Open Dialog")
mainWin.Resize(fyne.NewSize(800, 600))
// button := widget.NewButton("Open File Dialog", func() {
// fileName := dialog.NewFileOpen(func(fyne.URIReadCloser, error) {}, mainWin)
// println("Selected file:", fileName)
// fileName.Show()
// })
initMain()
mainWin.SetContent(containers.main)
mainWin.ShowAndRun()
}
func initMain() {
labPack := widget.NewLabel("")
labPack.Resize(fyne.NewSize(560, 24))
btnPack := widget.NewButton("选择 pack 文件", onBtnPack)
labChip := widget.NewLabel("选择芯片型号")
labChip.Resize(fyne.NewSize(144, 24))
selChip := widget.NewSelect(nil, func(selected string) {})
btnErase := widget.NewButton("擦除", onBtnErase)
btnProgram := widget.NewButton("烧写", func() {})
btnRTT := widget.NewButton("RTT", func() {})
packSelect := container.New(layout.NewGridLayoutWithColumns(2), labPack, btnPack)
chipSelect := container.New(layout.NewGridLayoutWithColumns(2), labChip, selChip)
containers.device = container.New(layout.NewGridLayoutWithRows(2), packSelect, chipSelect)
containers.main = container.New(layout.NewGridLayoutWithRows(4), containers.device, btnErase, btnProgram, btnRTT)
radEType := widget.NewRadioGroup([]string{"芯片", "自动"}, func(selected string) {})
btnEter := widget.NewButton("擦除", func() {})
btnCancel := widget.NewButton("取消", func() {
mainWin.SetContent(containers.main)
})
containers.erase = container.New(layout.NewGridLayoutWithRows(4), containers.device, radEType, btnEter, btnCancel)
}
func onBtnPack() {
diaFile := dialog.NewFileOpen(func(ufile fyne.URIReadCloser, err error) {
if err == nil && ufile != nil {
fmt.Println(ufile.URI())
defer ufile.Close()
}
}, mainWin)
diaFile.SetFilter(storage.NewExtensionFileFilter([]string{".pack"}))
pwd, err := os.Getwd()
if err == nil {
mfileLister, _ := storage.ListerForURI(storage.NewFileURI(pwd))
diaFile.SetLocation(mfileLister)
}
println("Selected file:", diaFile)
diaFile.Show()
}
func onBtnErase() {
mainWin.SetContent(containers.erase)
}