feat: initial project commit
commit to push first working snapshot to codeberg
This commit is contained in:
commit
09b1054588
25 changed files with 1405 additions and 0 deletions
92
internal/gui/dependency_screen.go
Normal file
92
internal/gui/dependency_screen.go
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
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",
|
||||
"Bitte installieren Sie alle erforderlichen Abhängigkeiten, bevor Sie fortfahren.", 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)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue