修改UI
This commit is contained in:
parent
a5a6ae1cbe
commit
361ae09545
22
busi/sociaty.go
Normal file
22
busi/sociaty.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package busi
|
||||||
|
|
||||||
|
import "legu.airobot/lib"
|
||||||
|
|
||||||
|
var _ lib.IScene = (*SociatyScene)(nil)
|
||||||
|
|
||||||
|
type SociatyScene struct {
|
||||||
|
lib.Action
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SociatyScene) Info() lib.SceneInfo {
|
||||||
|
return lib.SceneInfo{
|
||||||
|
Name: "公会申请",
|
||||||
|
Desc: "bbb",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SociatyScene) Run(robot lib.IRobot) error {
|
||||||
|
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
@ -6,6 +6,7 @@ type IAction interface {
|
|||||||
|
|
||||||
type Action struct {
|
type Action struct {
|
||||||
// scene *scene
|
// scene *scene
|
||||||
|
Id string
|
||||||
Name string
|
Name string
|
||||||
Desc string
|
Desc string
|
||||||
}
|
}
|
||||||
|
1
main.go
1
main.go
@ -29,6 +29,7 @@ func init() {
|
|||||||
|
|
||||||
registerScenes(
|
registerScenes(
|
||||||
&busi.FriendScene{},
|
&busi.FriendScene{},
|
||||||
|
&busi.SociatyScene{},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
{"level":"debug","msg":"配置","time":"2022-12-12 11:40:00","场景":[{"id":"799348400","name":"场景1","desc":"111","callers":[{"id":"799348400_1670808209409441100","name":"好友推荐","key":"friend.randlist","num":1}]},{"id":"261021700","name":"登录","callers":[{"id":"261021700_1670808329010907700","name":"好友申请","key":"friend.apply"}],"status":1}]}
|
|
@ -36,7 +36,7 @@ func newMainMenu() *mainMenu {
|
|||||||
mm.configMenu = fyne.NewMenuItem("配置", globalWindow.configContainer)
|
mm.configMenu = fyne.NewMenuItem("配置", globalWindow.configContainer)
|
||||||
mm.configMenu.Icon = theme.FileTextIcon()
|
mm.configMenu.Icon = theme.FileTextIcon()
|
||||||
//场景
|
//场景
|
||||||
mm.sceneMenu = fyne.NewMenuItem("旧场景", globalWindow.sceneContainer)
|
mm.sceneMenu = fyne.NewMenuItem("场景", globalWindow.newSceneContainer)
|
||||||
mm.sceneMenu.Icon = theme.FileTextIcon()
|
mm.sceneMenu.Icon = theme.FileTextIcon()
|
||||||
|
|
||||||
// AI
|
// AI
|
||||||
|
167
ui/mainwindow.go
167
ui/mainwindow.go
@ -90,31 +90,31 @@ func (mw *MainWindow) startContainer() {
|
|||||||
}
|
}
|
||||||
// 检查场景配置
|
// 检查场景配置
|
||||||
if config.Scenes == nil {
|
if config.Scenes == nil {
|
||||||
dialog.ShowCustomConfirm("提示", "创建", "取消", widget.NewLabel("还没有创建任何场景"), func(b bool) {
|
dialog.ShowCustomConfirm("提示", "创建", "取消", widget.NewLabel("还没有选择任何场景"), func(b bool) {
|
||||||
if !b {
|
if !b {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
mw.sceneContainer()
|
mw.newSceneContainer()
|
||||||
}, mw.w)
|
}, mw.w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 检查场景是否启用
|
// 检查场景是否启用
|
||||||
isEnable := false
|
// isEnable := false
|
||||||
for _, v := range config.Scenes {
|
// for _, v := range config.Scenes {
|
||||||
if v.Status == lib.STATUS_ENABLE {
|
// if v.Status == lib.STATUS_ENABLE {
|
||||||
isEnable = true
|
// isEnable = true
|
||||||
break
|
// break
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if !isEnable {
|
// if !isEnable {
|
||||||
dialog.ShowCustomConfirm("提示", "启用", "取消", widget.NewLabel("还没有启用任意场景"), func(b bool) {
|
// dialog.ShowCustomConfirm("提示", "启用", "取消", widget.NewLabel("还没有启用任意场景"), func(b bool) {
|
||||||
if !b {
|
// if !b {
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
mw.sceneContainer()
|
// mw.sceneContainer()
|
||||||
}, mw.w)
|
// }, mw.w)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
startBtn.Enable()
|
startBtn.Enable()
|
||||||
startBtn.OnTapped = func() {
|
startBtn.OnTapped = func() {
|
||||||
ai, err := lib.NewAI(lib.AIParam{RobotCount: uint32(config.Global.UserCount)})
|
ai, err := lib.NewAI(lib.AIParam{RobotCount: uint32(config.Global.UserCount)})
|
||||||
@ -567,24 +567,25 @@ func (mw *MainWindow) sceneContainer() {
|
|||||||
func (mw *MainWindow) newSceneContainer() {
|
func (mw *MainWindow) newSceneContainer() {
|
||||||
//注册的场景列表
|
//注册的场景列表
|
||||||
registerSceneList := *lib.NewItemList()
|
registerSceneList := *lib.NewItemList()
|
||||||
registerSceneList.OnSelFunc = func(id widget.ListItemID) {
|
// registerSceneList.OnSelFunc = func(id widget.ListItemID) {
|
||||||
data := registerSceneList.CachedList.Items[id].Data
|
// data := registerSceneList.CachedList.Items[id].Data
|
||||||
info, ok := data.(lib.SceneInfo)
|
// info, ok := data.(lib.SceneInfo)
|
||||||
if !ok {
|
// if !ok {
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
logrus.Debug(info)
|
// logrus.Debug(info)
|
||||||
// callerNameEntry.Text = info.Desc
|
// // callerNameEntry.Text = info.Desc
|
||||||
// callerKeyEntry.Text = info.Name
|
// // callerKeyEntry.Text = info.Name
|
||||||
// callerForm.Refresh()
|
// // callerForm.Refresh()
|
||||||
}
|
// }
|
||||||
registerSceneList.ListWidget = registerSceneList.CreateList()
|
registerSceneList.ListWidget = registerSceneList.CreateList()
|
||||||
registerSceneReload := func() {
|
registerSceneReload := func() {
|
||||||
|
registerSceneList.Reset()
|
||||||
for _, v := range mw.UIImpl.scenes {
|
for _, v := range mw.UIImpl.scenes {
|
||||||
info := v.Info()
|
info := v.Info()
|
||||||
item := lib.Item{
|
item := lib.Item{
|
||||||
Id: info.Name,
|
Id: info.Name,
|
||||||
Text: fmt.Sprintf("%s (%s)", info.Desc, info.Name),
|
Text: fmt.Sprintf("【%s】 %s", info.Name, info.Desc),
|
||||||
Data: info,
|
Data: info,
|
||||||
}
|
}
|
||||||
registerSceneList.AddItem(item)
|
registerSceneList.AddItem(item)
|
||||||
@ -597,7 +598,14 @@ func (mw *MainWindow) newSceneContainer() {
|
|||||||
selectedSceneList := *lib.NewItemList()
|
selectedSceneList := *lib.NewItemList()
|
||||||
selectedSceneList.ListWidget = selectedSceneList.CreateList()
|
selectedSceneList.ListWidget = selectedSceneList.CreateList()
|
||||||
selectedSceneLoad := func() {
|
selectedSceneLoad := func() {
|
||||||
|
selectedSceneList.Reset()
|
||||||
|
for _, v := range mw.config.Scenes {
|
||||||
|
item := lib.Item{
|
||||||
|
Id: v.Name,
|
||||||
|
Text: fmt.Sprintf("【%s】 %s", v.Name, v.Desc),
|
||||||
|
}
|
||||||
|
selectedSceneList.AddItem(item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
selectedSceneLoad()
|
selectedSceneLoad()
|
||||||
|
|
||||||
@ -606,26 +614,105 @@ func (mw *MainWindow) newSceneContainer() {
|
|||||||
deleSceneBtn := widget.NewButtonWithIcon("删除场景", theme.DeleteIcon(), nil)
|
deleSceneBtn := widget.NewButtonWithIcon("删除场景", theme.DeleteIcon(), nil)
|
||||||
|
|
||||||
// 刷新场景
|
// 刷新场景
|
||||||
refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), nil)
|
// refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), nil)
|
||||||
|
|
||||||
|
//search
|
||||||
|
searchEntry := widget.NewEntry()
|
||||||
|
searchEntry.PlaceHolder = "输入要搜索的用例"
|
||||||
|
searchEntry.OnChanged = func(s string) {
|
||||||
|
if s == "" {
|
||||||
|
registerSceneReload()
|
||||||
|
} else {
|
||||||
|
newList := []lib.Item{}
|
||||||
|
for _, v := range registerSceneList.SearchItem {
|
||||||
|
if strings.Contains(v.Text, s) {
|
||||||
|
newList = append(newList, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
registerSceneList.CachedList.Items = newList
|
||||||
|
registerSceneList.ListWidget.Refresh()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 工具条
|
// 工具条
|
||||||
toolbar := container.NewHBox(addSceneBtn, deleSceneBtn, layout.NewSpacer(), refreshBtn)
|
// toolbar := container.NewHBox(addSceneBtn, deleSceneBtn, layout.NewSpacer(), refreshBtn)
|
||||||
//布局
|
//布局
|
||||||
var dynamic fyne.CanvasObject
|
var dynamic fyne.CanvasObject
|
||||||
contentRender := func() {
|
contentRender := func() {
|
||||||
// sceneLoad()
|
selectedSceneLoad()
|
||||||
if len(selectedSceneList.CachedList.Items) == 0 {
|
if len(selectedSceneList.CachedList.Items) == 0 {
|
||||||
dynamic = container.NewCenter(widget.NewLabel("还没有创建任何场景"))
|
dynamic = container.NewCenter(widget.NewLabel("还没有选择任何场景"))
|
||||||
} else {
|
} else {
|
||||||
split := container.NewHSplit(selectedSceneList.ListWidget, selectedSceneList.ListWidget)
|
dynamic = container.NewBorder(container.NewHBox(deleSceneBtn, layout.NewSpacer()), nil, nil, nil, selectedSceneList.ListWidget)
|
||||||
split.Offset = 0.3
|
|
||||||
dynamic = split
|
|
||||||
}
|
}
|
||||||
content := container.NewBorder(toolbar, nil, nil, nil, dynamic)
|
split := container.NewHSplit(
|
||||||
mw.changeContent(content)
|
container.NewBorder(
|
||||||
|
container.NewBorder(nil, nil, container.NewHBox(addSceneBtn), nil, searchEntry), nil, nil, nil,
|
||||||
|
registerSceneList.ListWidget), dynamic)
|
||||||
|
split.Offset = 0.3
|
||||||
|
// content := container.NewBorder(toolbar, nil, nil, nil, split)
|
||||||
|
mw.changeContent(split)
|
||||||
}
|
}
|
||||||
contentRender()
|
contentRender()
|
||||||
|
|
||||||
|
// 添加场景事件
|
||||||
|
addSceneBtn.OnTapped = func() {
|
||||||
|
selId := registerSceneList.SelectedId()
|
||||||
|
if selId == "" {
|
||||||
|
ShowTip("请选择一个场景")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, v := range mw.UIImpl.scenes {
|
||||||
|
si := v.Info()
|
||||||
|
if si.Name == "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if si.Name == selId {
|
||||||
|
item := lib.Item{
|
||||||
|
Id: si.Name,
|
||||||
|
Text: si.Name,
|
||||||
|
}
|
||||||
|
selectedSceneList.AddItem(item)
|
||||||
|
|
||||||
|
scenes_conf := mw.config.Scenes
|
||||||
|
scenes_conf = append(scenes_conf, &storage.Scene{
|
||||||
|
ID: cast.ToString(time.Now().Nanosecond()),
|
||||||
|
Name: si.Name,
|
||||||
|
Desc: si.Desc,
|
||||||
|
})
|
||||||
|
mw.config.Scenes = scenes_conf
|
||||||
|
if err := mw.storage.StoreConfig(mw.config); err != nil {
|
||||||
|
ShowTip(fmt.Sprintf("错误:%v", err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
contentRender()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除场景事件
|
||||||
|
deleSceneBtn.OnTapped = func() {
|
||||||
|
selId := selectedSceneList.SelectedId()
|
||||||
|
if selId == "" {
|
||||||
|
ShowTip("请选择一个场景")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
scenes := mw.config.Scenes
|
||||||
|
|
||||||
|
for i, item := range scenes {
|
||||||
|
if item.Name == selId {
|
||||||
|
scenes = append(scenes[:i], scenes[i+1:]...)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mw.config.Scenes = scenes
|
||||||
|
selectedSceneLoad()
|
||||||
|
if err := mw.storage.StoreConfig(mw.config); err != nil {
|
||||||
|
ShowTip(fmt.Sprintf("错误:%v", err.Error()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出配置
|
// 导出配置
|
||||||
|
Loading…
Reference in New Issue
Block a user