diff --git a/config.yml b/config.yml index d9616f7..b5b41bf 100644 --- a/config.yml +++ b/config.yml @@ -2,7 +2,7 @@ base: is_dev : false out_dir : ./model # 输出目录 url_tag : json # web url tag(json,db(https://github.com/google/go-querystring)) -language : 中 文 # 语言(English,中 文) +language : # 语言(English,中 文) db_tag : gorm # 数据库标签(gorm,db) singular_table : false # 单表模式:true:禁用表名复数,false:采用表明复数 参考:gorm.SingularTable simple : false # 简单输出(默认gorm标签不输出) diff --git a/data/config/MyIni.go b/data/config/MyIni.go index cddedcd..f95b17c 100644 --- a/data/config/MyIni.go +++ b/data/config/MyIni.go @@ -2,6 +2,8 @@ package config import ( "fmt" + + "github.com/xxjwxc/public/tools" ) // Config custom config struct @@ -76,6 +78,11 @@ func GetSimple() bool { return _map.Simple } +// SetSimple simple output.简单输出 +func SetSimple(b bool) { + _map.Simple = b +} + // GetIsJSONTag json tag.json标记 func GetIsJSONTag() bool { return _map.IsJSONTag @@ -91,6 +98,11 @@ func SetForeignKey(b bool) { _map.IsForeignKey = b } +// SetIsOutSQL if is output sql . +func SetIsOutSQL(b bool) { + _map.IsOutSQL = b +} + // GetIsOutSQL if is output sql . func GetIsOutSQL() bool { return _map.IsOutSQL @@ -133,7 +145,11 @@ func SetURLTag(s string) { // GetLG get language tag. func GetLG() string { if _map.Language != "English" && _map.Language != "中 文" { - _map.Language = "English" + if tools.GetLocalSystemLang(true) == "en" { + _map.Language = "English" + } else { + _map.Language = "中 文" + } } return _map.Language diff --git a/data/config/common.go b/data/config/common.go index 4b93253..3813dd1 100644 --- a/data/config/common.go +++ b/data/config/common.go @@ -6,7 +6,7 @@ import ( "github.com/xxjwxc/public/dev" "github.com/xxjwxc/public/tools" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" ) // CfgBase base config struct @@ -65,3 +65,16 @@ func GetIsDev() bool { func SetIsDev(b bool) { _map.IsDev = b } + +// SaveToFile save config info to file +func SaveToFile() error { + d, err := yaml.Marshal(_map) + if err != nil { + return err + } + tools.WriteFile(tools.GetModelPath()+"/config.yml", []string{ + string(d), + }, true) + + return nil +} diff --git a/data/dlg/common.go b/data/dlg/common.go index a38120d..7ebc1e7 100644 --- a/data/dlg/common.go +++ b/data/dlg/common.go @@ -52,3 +52,11 @@ func requireValidator(value string) bool { } return true } + +func getBool(bstr string) bool { + if bstr == "true" || bstr == " 是" { + return true + } + + return false +} diff --git a/data/dlg/cui.go b/data/dlg/cui.go index 3e5a1ab..db2bc3d 100644 --- a/data/dlg/cui.go +++ b/data/dlg/cui.go @@ -3,6 +3,7 @@ package dlg import ( "fmt" "log" + "strconv" "github.com/xxjwxc/public/tools" @@ -190,6 +191,7 @@ func enterSet(g *gocui.Gui, v *gocui.View) error { // add button form.AddButton("save", SLocalize("save"), buttonSave).AddHandler(gocui.MouseLeft, buttonSave) form.AddButton("cancel", SLocalize("cancel"), buttonCancel).AddHandler(gocui.MouseLeft, buttonCancel) + form.AddButton("about", SLocalize("about"), about).AddHandler(gocui.MouseLeft, about) form.Draw() @@ -199,12 +201,52 @@ func enterSet(g *gocui.Gui, v *gocui.View) error { func buttonCancel(g *gocui.Gui, v *gocui.View) error { menuFocusButton(g) if form != nil { - return form.Close(g, nil) + err := form.Close(g, nil) + form = nil + return err } return nil } func buttonSave(g *gocui.Gui, v *gocui.View) error { + + mp := form.GetFieldTexts() + config.SetOutDir(mp["out_dir"]) + + var dbInfo config.MysqlDbInfo + dbInfo.Host = mp["db_host"] + port, err := strconv.Atoi(mp["db_port"]) + if err != nil { + modal := mycui.NewModal(g, 0, 0, 30).SetText("port error") + modal.AddButton("ok", "OK", gocui.KeyEnter, func(g *gocui.Gui, v *gocui.View) error { + modal.Close() + form.SetCurrentItem(form.GetCurrentItem()) + return nil + }) + + modal.Draw() + return nil + } + + dbInfo.Port = port + dbInfo.Username = mp["db_usename"] + dbInfo.Password = mp["db_pwd"] + dbInfo.Database = mp["db_name"] + + config.SetMysqlDbInfo(&dbInfo) + mp = form.GetSelectedOpts() + config.SetIsDev(getBool(mp["is_dev"])) + config.SetSimple(getBool(mp["is_simple"])) + config.SetSingularTable(getBool(mp["is_singular"])) + config.SetIsOutSQL(getBool(mp["is_out_sql"])) + config.SetIsOutFunc(getBool(mp["is_out_func"])) + config.SetForeignKey(getBool(mp["is_foreign_key"])) + config.SetURLTag(mp["url_tag"]) + config.SetDBTag(mp["db_tag"]) + config.SetLG(mp["language"]) + + config.SaveToFile() + buttonCancel(g, v) return nil } diff --git a/data/dlg/i18n.go b/data/dlg/i18n.go index 89a58ca..e65e70e 100644 --- a/data/dlg/i18n.go +++ b/data/dlg/i18n.go @@ -2,6 +2,7 @@ package dlg import ( "github.com/nicksnyder/go-i18n/v2/i18n" + "github.com/xxjwxc/gormt/data/config" "github.com/xxjwxc/public/myi18n" "golang.org/x/text/language" ) @@ -13,7 +14,19 @@ import ( func init() { addChinese() addEnglish() - myi18n.SetLocalLG("zh") // default + myi18n.SetLocalLG(getLG()) // default +} + +func getLG() string { + tag := config.GetLG() + // if len(tag) == 0 { + // return tools.GetLocalSystemLang(true) + // } + if tag == "English" { + return "en" + } + + return "zh" } // SLocalize 获取值 @@ -94,6 +107,9 @@ func addChinese() error { }, &i18n.Message{ ID: "cancel", Other: " 取 消 ", + }, &i18n.Message{ + ID: "about", + Other: " 关 于 作 者", }, &i18n.Message{ ID: "log_run", Other: " Enter : 执 行 \n ↑ ↓: 本 视 图 选 择 \n Tab : 多 视 图 切 换 \n 支 持 鼠 标 操 作 方 式 \n \n \033[33;7m 输 入 Enter 直 接 执 行 \033[0m\n ", @@ -176,6 +192,9 @@ func addEnglish() error { }, &i18n.Message{ ID: "cancel", Other: "Cancel", + }, &i18n.Message{ + ID: "about", + Other: "About", }, &i18n.Message{ ID: "log_run", Other: " Enter : run \n ↑ ↓: Selection of this view \n Tab : Multi view switching \n Mouse operation supported \n \n \033[33;7m Enter to execute \033[0m", diff --git a/go.mod b/go.mod index 008bd6a..cbb2419 100644 --- a/go.mod +++ b/go.mod @@ -17,4 +17,5 @@ require ( gopkg.in/go-playground/assert.v1 v1.2.1 // indirect gopkg.in/go-playground/validator.v9 v9.30.2 gopkg.in/yaml.v2 v2.2.7 + gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 ) diff --git a/go.sum b/go.sum index bd5ea47..fc10f7c 100644 --- a/go.sum +++ b/go.sum @@ -213,6 +213,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2 h1:XZx7nhd5GMaZpmDaEHFVafUZC7ya0fuo7cSJ3UCKYmM= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/image/.DS_Store b/image/.DS_Store index b91b279..d0b340a 100644 Binary files a/image/.DS_Store and b/image/.DS_Store differ