92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
package gui
|
|
|
|
import (
|
|
"jws/internal/dependency"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/dialog"
|
|
"fyne.io/fyne/v2/layout"
|
|
"fyne.io/fyne/v2/theme"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
// ShowDependencyScreen displays the dependency check screen
|
|
func ShowDependencyScreen() {
|
|
title := widget.NewLabel("check dependencies")
|
|
title.TextStyle = fyne.TextStyle{Bold: true}
|
|
title.Alignment = fyne.TextAlignCenter
|
|
|
|
description := widget.NewLabel("dependencies needed for dev-environment:")
|
|
description.Wrapping = fyne.TextWrapWord
|
|
|
|
dependencyContainer := container.NewVBox()
|
|
allInstalled := true
|
|
|
|
for i, dep := range dependencies {
|
|
statusIcon := theme.CancelIcon()
|
|
statusText := "not installed"
|
|
|
|
if dep.Installed {
|
|
statusIcon = theme.ConfirmIcon()
|
|
statusText = "installed"
|
|
} else {
|
|
allInstalled = false
|
|
}
|
|
|
|
depBox := container.NewHBox(
|
|
widget.NewIcon(dep.Icon),
|
|
widget.NewLabel(dep.Name),
|
|
layout.NewSpacer(),
|
|
widget.NewIcon(statusIcon),
|
|
widget.NewLabel(statusText),
|
|
)
|
|
|
|
dependencyContainer.Add(depBox)
|
|
|
|
if !dep.Installed {
|
|
installBtn := widget.NewButton("install", func(i int) func() {
|
|
return func() {
|
|
ShowPasswordDialog(i)
|
|
}
|
|
}(i))
|
|
|
|
depBox = container.NewStack(
|
|
layout.NewSpacer(),
|
|
installBtn,
|
|
)
|
|
dependencyContainer.Add(depBox)
|
|
}
|
|
}
|
|
|
|
nextBtn := widget.NewButton("go to projects", func() {
|
|
if allInstalled {
|
|
ShowProjectScreen()
|
|
} else {
|
|
dialog.ShowInformation("dependencies missing",
|
|
"Please install all required dependencies before proceeding.", mainWindow)
|
|
}
|
|
})
|
|
|
|
nextBtn.Importance = widget.HighImportance
|
|
|
|
recheckBtn := widget.NewButton("check again", func() {
|
|
dependency.CheckDependencies(dependencies)
|
|
ShowDependencyScreen()
|
|
})
|
|
|
|
buttonContainer := container.New(layout.NewGridLayout(2), recheckBtn, nextBtn)
|
|
|
|
paddedButtonContainer := container.NewPadded(buttonContainer)
|
|
|
|
description.Alignment = fyne.TextAlignCenter
|
|
header := container.NewVBox(title, description)
|
|
content := container.NewBorder(header,
|
|
paddedButtonContainer,
|
|
nil,
|
|
nil,
|
|
dependencyContainer,
|
|
)
|
|
|
|
mainWindow.SetContent(content)
|
|
}
|