91 lines
1.9 KiB
Go
91 lines
1.9 KiB
Go
package gui
|
|
|
|
import (
|
|
"jws/internal/project"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/canvas"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/theme"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
// ShowProjectScreen displays the project selection screen
|
|
func ShowProjectScreen() {
|
|
title := widget.NewLabel("Project-Selection")
|
|
title.TextStyle = fyne.TextStyle{Bold: true}
|
|
title.Alignment = fyne.TextAlignCenter
|
|
|
|
description := widget.NewLabel("Choose a Starter-Project to deploy:")
|
|
description.Wrapping = fyne.TextWrapWord
|
|
description.Alignment = fyne.TextAlignCenter
|
|
|
|
projectsList := container.NewVBox()
|
|
|
|
for i, proj := range projects {
|
|
projTitle := widget.NewLabel(proj.Name)
|
|
projTitle.TextStyle = fyne.TextStyle{Bold: true}
|
|
|
|
projDesc := widget.NewLabel(proj.Description)
|
|
projDesc.Wrapping = fyne.TextWrapWord
|
|
|
|
deployBtn := widget.NewButton("deploy", func(i int) func() {
|
|
return func() {
|
|
project.DeployProject(i, projects, projectsFS, mainWindow)
|
|
}
|
|
}(i))
|
|
deployBtn.Importance = widget.HighImportance
|
|
|
|
projectContent := container.NewBorder(
|
|
nil,
|
|
nil,
|
|
nil,
|
|
container.NewCenter(deployBtn),
|
|
container.NewVBox(projTitle, projDesc),
|
|
)
|
|
|
|
projectCard := container.NewBorder(
|
|
nil,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
container.NewPadded(projectContent),
|
|
)
|
|
|
|
bg := canvas.NewRectangle(theme.Color(theme.ColorNameBackground))
|
|
|
|
borderedContainer := container.NewStack(
|
|
bg,
|
|
projectCard,
|
|
)
|
|
|
|
spacedContainer := container.NewVBox(
|
|
borderedContainer,
|
|
widget.NewSeparator(),
|
|
)
|
|
|
|
projectsList.Add(spacedContainer)
|
|
}
|
|
|
|
backBtn := widget.NewButton("Check Dependecies", func() {
|
|
ShowDependencyScreen()
|
|
})
|
|
|
|
scrollContainer := container.NewVScroll(projectsList)
|
|
|
|
header := container.NewVBox(
|
|
title,
|
|
description,
|
|
widget.NewSeparator(),
|
|
)
|
|
|
|
content := container.NewBorder(
|
|
header,
|
|
backBtn, // footer,
|
|
nil,
|
|
nil,
|
|
scrollContainer,
|
|
)
|
|
|
|
mainWindow.SetContent(content)
|
|
}
|