This commit is contained in:
wh_zcy 2022-12-12 14:09:21 +08:00
parent a5a6ae1cbe
commit 361ae09545
6 changed files with 152 additions and 42 deletions

22
busi/sociaty.go Normal file
View 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
}

View File

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

View File

@ -29,6 +29,7 @@ func init() {
registerScenes( registerScenes(
&busi.FriendScene{}, &busi.FriendScene{},
&busi.SociatyScene{},
) )
} }

View File

@ -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}]}

View File

@ -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

View File

@ -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
}
}
} }
// 导出配置 // 导出配置