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) }