完成基本的创建使用功能
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package views
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"regexp"
|
||||
"work_cation/global"
|
||||
"work_cation/models"
|
||||
"work_cation/models/repo"
|
||||
"work_cation/pkg/utils"
|
||||
)
|
||||
|
||||
func CreateErlangCard(w fyne.Window) fyne.CanvasObject {
|
||||
|
||||
// user := repo.UserRepo.GetUserInfo(global.DB)
|
||||
var erlangCard = models.ErlangCards{
|
||||
UUID: utils.CreateUUID(),
|
||||
UserIp: utils.Get192Ip(),
|
||||
}
|
||||
|
||||
var items = []*widget.FormItem{
|
||||
{Text: "名称", Widget: widget.NewEntry()},
|
||||
{Text: "描述", Widget: widget.NewEntry()},
|
||||
{Text: "封面", Widget: widget.NewEntry(), HintText: "暂未支持可不填"},
|
||||
{Text: "是否默认展示", Widget: widget.NewEntry()},
|
||||
{Text: "模版内容", Widget: widget.NewEntry()},
|
||||
}
|
||||
|
||||
var items2 []*widget.FormItem
|
||||
form2 := &widget.Form{
|
||||
Items: items2,
|
||||
SubmitText: "保存创建",
|
||||
OnSubmit: func() {
|
||||
for _, item := range items {
|
||||
switch item.Text {
|
||||
case "名称":
|
||||
erlangCard.Title = item.Widget.(*widget.Entry).Text
|
||||
case "描述":
|
||||
erlangCard.Text = item.Widget.(*widget.Entry).Text
|
||||
case "封面":
|
||||
erlangCard.Covers = []string{item.Widget.(*widget.Entry).Text}
|
||||
case "是否默认展示":
|
||||
erlangCard.IsShowOut = item.Widget.(*widget.Entry).Text == "1"
|
||||
case "模版内容":
|
||||
erlangCard.Template = item.Widget.(*widget.Entry).Text
|
||||
default:
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if countVarOccurrences(erlangCard.Template) != len(items2) {
|
||||
dialog.ShowError(errors.New("变量名数量异常"), w)
|
||||
return
|
||||
}
|
||||
|
||||
for _, item2 := range items2 {
|
||||
fmt.Println("key:", item2.Text, "value:", item2.Widget.(*widget.Entry).Text)
|
||||
erlangCard.VarName = append(erlangCard.VarName, item2.Widget.(*widget.Entry).Text)
|
||||
}
|
||||
err := repo.ErlangCardRepo.Create(global.DB, &erlangCard)
|
||||
if err != nil {
|
||||
dialog.ShowError(err, w)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
form := &widget.Form{
|
||||
Items: items,
|
||||
SubmitText: "生成变量表单",
|
||||
OnSubmit: func() {
|
||||
for _, item := range items {
|
||||
switch item.Text {
|
||||
case "模版内容":
|
||||
varSum := countVarOccurrences(item.Widget.(*widget.Entry).Text)
|
||||
for i := 0; i < varSum; i++ {
|
||||
newItem := &widget.FormItem{Text: fmt.Sprintf("变量%d", i+1), Widget: widget.NewEntry()}
|
||||
items2 = append(items2, newItem)
|
||||
form2.AppendItem(newItem)
|
||||
}
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
return container.NewBorder(widget.NewSeparator(), nil, nil, nil, container.NewScroll(
|
||||
container.NewVBox(
|
||||
form,
|
||||
form2,
|
||||
)))
|
||||
}
|
||||
|
||||
func countVarOccurrences(input string) int {
|
||||
re := regexp.MustCompile(`\$var`)
|
||||
matches := re.FindAllStringIndex(input, -1)
|
||||
return len(matches)
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package views
|
||||
|
||||
import (
|
||||
"fyne.io/fyne/v2"
|
||||
)
|
||||
|
||||
// Tutorial 定义教程的数据结构
|
||||
type Tutorial struct {
|
||||
Title, Intro string
|
||||
View func(w fyne.Window) fyne.CanvasObject
|
||||
SupportWeb bool
|
||||
}
|
||||
|
||||
var (
|
||||
// Tutorials 定义每个教程的元数据
|
||||
Tutorials = map[string]Tutorial{
|
||||
"welcome": {"主页", "", UserViews, true},
|
||||
"canvas": {"我的", "", myCardsViews, true},
|
||||
"create": {"新建", "", CreateErlangCard, true},
|
||||
}
|
||||
|
||||
// TutorialIndex 定义我们的教程应该如何在索引树中布局
|
||||
TutorialIndex = map[string][]string{
|
||||
"": {"welcome", "canvas", "create"},
|
||||
//"collections": {"list", "table", "tree"},
|
||||
//"containers": {"apptabs", "border", "box", "center", "doctabs", "grid", "scroll", "split"},
|
||||
//"widgets": {"accordion", "button", "card", "entry", "form", "input", "progress", "text", "toolbar"},
|
||||
}
|
||||
)
|
||||
+27
-5
@@ -5,13 +5,27 @@ import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/data/binding"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"github.com/atotto/clipboard"
|
||||
"strings"
|
||||
"work_cation/global"
|
||||
"work_cation/models"
|
||||
"work_cation/utils"
|
||||
"work_cation/models/repo"
|
||||
"work_cation/pkg/utils"
|
||||
)
|
||||
|
||||
func myCardsViews(w fyne.Window) fyne.CanvasObject {
|
||||
var items []fyne.CanvasObject
|
||||
for _, i := range repo.ErlangCardRepo.FindAll(global.DB) {
|
||||
var i2 = i
|
||||
items = append(items, ErlangCardView(w, &i2))
|
||||
}
|
||||
|
||||
return container.NewBorder(nil, nil, nil, nil, container.NewScroll(
|
||||
container.NewGridWrap(fyne.NewSize(200, 200), items...)))
|
||||
}
|
||||
|
||||
func ErlangCardView(_ fyne.Window, data *models.ErlangCards) fyne.CanvasObject {
|
||||
if data == nil {
|
||||
data = &models.ErlangCards{
|
||||
@@ -32,10 +46,15 @@ func ErlangCardView(_ fyne.Window, data *models.ErlangCards) fyne.CanvasObject {
|
||||
txtWid := widget.NewEntryWithData(txtBound)
|
||||
|
||||
txtWid.Wrapping = fyne.TextWrapOff
|
||||
card := widget.NewCard(data.Title, data.Text, widget.NewButton("OPEN", func() {
|
||||
cardButton := widget.NewButton("OPEN", func() {
|
||||
go UseErlangCard(data)
|
||||
}))
|
||||
//card.SetImage(assets.LogoDataSR)
|
||||
})
|
||||
|
||||
card := widget.NewCard(data.Title, data.Text, cardButton)
|
||||
|
||||
//image := canvas.NewImageFromResource(assets.LogoDataSR)
|
||||
//image.FillMode = canvas.ImageFillContain
|
||||
//card.SetImage(image)
|
||||
return card
|
||||
}
|
||||
|
||||
@@ -91,7 +110,10 @@ func UseErlangCard(data *models.ErlangCards) {
|
||||
data.VarContent = values
|
||||
//out.SetText(replaceVars(template, data.VarContent))
|
||||
err := clipboard.WriteAll(replaceVars(template, data.VarContent))
|
||||
fmt.Print("复制:", replaceVars(template, data.VarContent), err)
|
||||
if err != nil {
|
||||
dialog.ShowError(err, myWindow)
|
||||
}
|
||||
upOut()
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package views
|
||||
|
||||
import (
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/canvas"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"work_cation/assets"
|
||||
"work_cation/global"
|
||||
"work_cation/models/repo"
|
||||
)
|
||||
|
||||
func UserViews(w fyne.Window) fyne.CanvasObject {
|
||||
image := canvas.NewImageFromResource(assets.LogoDataSR)
|
||||
image.FillMode = canvas.ImageFillContain
|
||||
|
||||
user := repo.UserRepo.GetUserInfo(global.DB)
|
||||
|
||||
userCard := widget.NewCard(
|
||||
user.Name,
|
||||
user.Ip,
|
||||
nil)
|
||||
userCard.SetImage(image)
|
||||
|
||||
return container.NewBorder(nil,
|
||||
nil,
|
||||
nil,
|
||||
nil,
|
||||
userCard,
|
||||
)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user