diff --git a/cmd/v2/lib/common/lang.go b/cmd/v2/lib/common/lang.go index ab69b2374..d06ee0f1d 100644 --- a/cmd/v2/lib/common/lang.go +++ b/cmd/v2/lib/common/lang.go @@ -88,6 +88,7 @@ const ( // toolbar TOOLBAR_MONITOR = "监控" TOOLBAR_TESTER = "接口测试" + TOOLBAR_GEN = "生成代码" //monitor APP_MONITOR_TITLE_ID = "编号" diff --git a/cmd/v2/main.go b/cmd/v2/main.go index 88213f7cd..59a0cb173 100644 --- a/cmd/v2/main.go +++ b/cmd/v2/main.go @@ -10,7 +10,10 @@ import ( "io" "os" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) @@ -18,6 +21,7 @@ var ( connService service.ConnService pttService service.PttService configService service.ConfigService + dbService service.DbService obs = observer.NewObserver() logger *logrus.Logger ) @@ -31,6 +35,11 @@ func init() { os.Exit(1) } + if err = setupDb(); err != nil { + fmt.Println(err) + os.Exit(1) + } + // initialize logger if err = setupLogger(); err != nil { fmt.Println(err) @@ -53,9 +62,24 @@ func main() { app := app.NewWithID("protocol-test-tool") app.SetIcon(theme.ResourceIconPng) appUI := ui.NewUI(app, configService, connService, pttService, obs) - mainWindow := ui.NewMainWindow(appUI) - mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + //创建enter + w := fyne.CurrentApp().NewWindow("") + w.SetContent(container.NewGridWithColumns(2, + widget.NewButton("工具", func() { + toolWindow := ui.NewToolWindow(appUI) + toolWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + w.Hide() + }), + widget.NewButton("登服", func() { + mainWindow := ui.NewMainWindow(appUI) + mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true) + w.Hide() + }))) + w.SetFixedSize(true) + w.Resize(fyne.NewSize(300, 100)) + w.Show() + w.CenterOnScreen() logrus.WithField("version", app.Metadata().Version).Info("app starting") appUI.Run() } @@ -70,6 +94,11 @@ func setupWsConn() (err error) { return } +func setupDb() (err error) { + dbService = service.NewDbService() + return +} + func setupConfig() (err error) { configService, err = service.NewConfigService() if err != nil { diff --git a/cmd/v2/ui/app_container.go b/cmd/v2/ui/app_container.go index 98af71c95..a8db6b5cf 100644 --- a/cmd/v2/ui/app_container.go +++ b/cmd/v2/ui/app_container.go @@ -10,10 +10,11 @@ type appContainer struct { appStatusMap map[string]appStatus container.DocTabs obs observer.Observer + ai []appInterface } -func newAppContainer(obs observer.Observer) *appContainer { - at := &appContainer{obs: obs} +func newAppContainer(ai []appInterface, obs observer.Observer) *appContainer { + at := &appContainer{ai: ai, obs: obs} at.appStatusMap = make(map[string]appStatus) at.CloseIntercept = at.closeHandle @@ -30,7 +31,7 @@ type appStatus struct { } func (at *appContainer) closeHandle(tab *container.TabItem) { - for _, app := range appRegister { + for _, app := range at.ai { if app.GetAppName() == tab.Text { if app.OnClose() { at.Remove(tab) @@ -60,7 +61,7 @@ func (at *appContainer) openApp(app appInterface) error { // open default app func (at *appContainer) openDefaultApp() (string, error) { var firstTab *container.TabItem - for _, app := range appRegister { + for _, app := range at.ai { if app.OpenDefault() { if err := at.initApp(app); err != nil { return app.GetAppName(), err diff --git a/cmd/v2/ui/app_interface.go b/cmd/v2/ui/app_interface.go index ed15e862d..a3ed7d9b8 100644 --- a/cmd/v2/ui/app_interface.go +++ b/cmd/v2/ui/app_interface.go @@ -19,6 +19,10 @@ var ( &appMonitor{}, &appTester{}, } + + toolRegister = []appInterface{ + &appGen{}, + } ) type appAdapter struct { diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go index 83d835ec8..3b5016afe 100644 --- a/cmd/v2/ui/mainwindow.go +++ b/cmd/v2/ui/mainwindow.go @@ -16,6 +16,7 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/BabySid/gobase" "github.com/Pallinder/go-randomdata" @@ -25,6 +26,7 @@ import ( var ( globalWin *MainWindowImpl + toolWin *ToolWindowImpl ) type MainWindow interface { @@ -49,19 +51,6 @@ func NewMainWindow(ui *UIImpl) MainWindow { UIImpl: *ui, } - // main menu - // mw.mm = newMainMenu() - // mw.w.SetMainMenu(mw.mm.MainMenu) - - // status bar - mw.sb = newStatusBar() - - // tool bar - mw.tb = newToolBar() - - // main app tabs - mw.at = newAppContainer(ui.obs) - globalWin = mw ui.obs.AddListener(observer.EVENT_PING, observer.Listener{ @@ -95,13 +84,25 @@ func (ui *MainWindowImpl) createWindowContainer() { ui.sb = newStatusBar() // tool bar - ui.tb = newToolBar() + toolbar := widget.NewToolbar( + widget.NewToolbarAction(theme.ComputerIcon(), func() { + openApp2(common.TOOLBAR_MONITOR) + }), + widget.NewToolbarAction(theme.AccountIcon(), func() { + openApp2(common.TOOLBAR_TESTER) + }), + widget.NewToolbarSpacer(), + widget.NewToolbarAction(theme.HelpIcon(), func() { + showAbout() + }), + ) + ui.tb = newToolBar(toolbar) // Fun Toys ui.toys = newToys(ui.obs) // main app tabs - ui.at = newAppContainer(ui.obs) + ui.at = newAppContainer(appRegister, ui.obs) content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at) ui.w.SetContent(content) ui.w.SetCloseIntercept(ui.quiteHandle) @@ -238,14 +239,11 @@ func (ui *MainWindowImpl) createChooseServerWindow( // createLoginWin func (ui *MainWindowImpl) createLoginWin(sid, sname string) { - //form account := widget.NewEntry() - account.Text = "user8080" //default account - // account.Validator = validation.NewRegexp(`^(\s*)$`, "account required") - // password := widget.NewPasswordEntry() + // account.Text = "user8080" //default account + items := []*widget.FormItem{ widget.NewFormItem(common.LABEL_ACCOUNT, account), - // widget.NewFormItem("password", password), } dialog.ShowForm(common.FORM_TITLE_LOGIN, common.BUTTON_LOGIN, common.BUTTON_CANCEL, items, func(b bool) { diff --git a/cmd/v2/ui/tool_bar.go b/cmd/v2/ui/tool_bar.go index acb160b54..ff3041dfc 100644 --- a/cmd/v2/ui/tool_bar.go +++ b/cmd/v2/ui/tool_bar.go @@ -2,9 +2,7 @@ package ui import ( "fmt" - "go_dreamfactory/cmd/v2/lib/common" - "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" ) @@ -13,26 +11,16 @@ type toolBar struct { toolbar *widget.Toolbar } -func newToolBar() *toolBar { +func newToolBar(items *widget.Toolbar) *toolBar { var tb toolBar // mainwindow toolbar - tb.toolbar = widget.NewToolbar( - widget.NewToolbarAction(theme.ComputerIcon(), func() { - openApp(common.TOOLBAR_MONITOR) - }), - widget.NewToolbarAction(theme.AccountIcon(), func() { - openApp(common.TOOLBAR_TESTER) - }), - widget.NewToolbarSpacer(), - widget.NewToolbarAction(theme.HelpIcon(), func() { - showAbout() - }), - ) + tb.toolbar = items return &tb } -func openApp(name string) { +// open app2 +func openApp2(name string) { for _, app := range appRegister { if app.GetAppName() == name { err := globalWin.at.openApp(app) @@ -42,3 +30,14 @@ func openApp(name string) { } } } + +func openApp1(name string) { + for _, app := range toolRegister { + if app.GetAppName() == name { + err := toolWin.at.openApp(app) + if err != nil { + logrus.Error(fmt.Errorf("%s %v", app.GetAppName(), err)) + } + } + } +} diff --git a/go.mod b/go.mod index 6e1c857b1..64cd570ae 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/atotto/clipboard v0.1.4 github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 + github.com/boltdb/bolt v1.3.1 github.com/dengsgo/math-engine v0.0.0-20220213125415-0351c3c75eca github.com/gin-gonic/gin v1.8.1 github.com/go-playground/validator/v10 v10.10.1 @@ -169,7 +170,6 @@ require ( golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/tools v0.1.12 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect diff --git a/go.sum b/go.sum index 51c8b765f..7d9c231ec 100644 --- a/go.sum +++ b/go.sum @@ -92,6 +92,8 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= @@ -766,7 +768,6 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1 h1:/vn0k+RBvwlxEmP5E7SZMqNxPhfMVFEJiykr15/0XKM= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -867,7 +868,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -925,7 +925,6 @@ golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3 h1:EN5+DfgmRMvRUrMGERW2gQl3Vc+Z7ZMnI/xdEpPSf0c= golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -955,8 +954,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1035,8 +1034,6 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e h1:NHvCuwuS43lGnYhten69ZWqi2QOj/CiDNcKbVqwVoew= -golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1123,7 +1120,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.8-0.20211022200916-316ba0b74098/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=