Browse Source

补充图标参数

master
VIVIMAN 4 years ago
parent
commit
e20a15f0f7
  1. 10
      golang_learn/data_func/go_to_int/main.go
  2. BIN
      golang_learn/data_func/go_to_windows/image/bangzhu.png
  3. BIN
      golang_learn/data_func/go_to_windows/image/beifen.png
  4. BIN
      golang_learn/data_func/go_to_windows/image/guanyu.png
  5. BIN
      golang_learn/data_func/go_to_windows/image/huanyuan.png
  6. BIN
      golang_learn/data_func/go_to_windows/image/media.png
  7. BIN
      golang_learn/data_func/go_to_windows/image/qinghuancun.png
  8. BIN
      golang_learn/data_func/go_to_windows/image/shezhi.png
  9. BIN
      golang_learn/data_func/go_to_windows/image/shujuku.png
  10. BIN
      golang_learn/data_func/go_to_windows/image/tuichu.png
  11. BIN
      golang_learn/data_func/go_to_windows/image/yaoqiu.png
  12. BIN
      golang_learn/data_func/go_to_windows/image/yingyong.png
  13. 508
      golang_learn/data_func/go_to_windows/main.go

10
golang_learn/data_func/go_to_int/main.go

@ -0,0 +1,10 @@
package main
import (
"fmt"
"log"
)
func main() {
log.Print(fmt.Sprintf("%d", 55))
}

BIN
golang_learn/data_func/go_to_windows/image/bangzhu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
golang_learn/data_func/go_to_windows/image/beifen.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
golang_learn/data_func/go_to_windows/image/guanyu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

BIN
golang_learn/data_func/go_to_windows/image/huanyuan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
golang_learn/data_func/go_to_windows/image/media.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

BIN
golang_learn/data_func/go_to_windows/image/qinghuancun.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
golang_learn/data_func/go_to_windows/image/shezhi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

BIN
golang_learn/data_func/go_to_windows/image/shujuku.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

BIN
golang_learn/data_func/go_to_windows/image/tuichu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
golang_learn/data_func/go_to_windows/image/yaoqiu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
golang_learn/data_func/go_to_windows/image/yingyong.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

508
golang_learn/data_func/go_to_windows/main.go

@ -5,6 +5,7 @@ package main
import ( import (
"archive/zip" "archive/zip"
"bufio"
"fmt" "fmt"
"github.com/lxn/walk" "github.com/lxn/walk"
. "github.com/lxn/walk/declarative" . "github.com/lxn/walk/declarative"
@ -12,6 +13,7 @@ import (
"golang.org/x/sys/windows" "golang.org/x/sys/windows"
"golang.org/x/sys/windows/registry" "golang.org/x/sys/windows/registry"
"io" "io"
"log"
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
@ -56,11 +58,11 @@ var path string
func init() { func init() {
app.title = "公务员管理系统-运行监控" app.title = "公务员管理系统-运行监控"
service1 = myService{ service1 = myService{
text: "数据存储库", text: "数据存储库",
serviceName: "GWY20_Mysql", serviceName: "GWY20_Mysql",
} }
service3 = myService{ service3 = myService{
text: "公务员系统", text: "公务员系统",
serviceName: "GWY20_Tomcat", serviceName: "GWY20_Tomcat",
} }
path, _ = os.Getwd() path, _ = os.Getwd()
@ -103,112 +105,6 @@ func main() {
app.mw.Run() app.mw.Run()
} }
// setServiceState 设置 服务状态描述和按钮状态
func setServiceState(service myService, msg string, btnStartStatus, btnStopStatus, btnRegisterStatus bool) {
_ = service.labelState.SetText(msg)
service.btnStart.SetEnabled(btnStartStatus)
service.btnStop.SetEnabled(btnStopStatus)
service.btnRegister.SetEnabled(btnRegisterStatus)
}
// flushServiceStat 刷新服务状态的协程程序
func flushServiceStat(service myService) {
for {
winService, err := NewWinService(service.serviceName)
if winService == nil || err != nil {
if err == windows.ERROR_SERVICE_DOES_NOT_EXIST {
setServiceState(service, "未安装", false, false, false)
} else {
setServiceState(service, "服务打开失败", false, false, true)
}
} else {
if winService.IsStop() {
setServiceState(service, "已经停止", true, false, true)
} else if winService.IsRunning() {
setServiceState(service, "正在运行", false, true, false)
}
}
time.Sleep(time.Second)
}
}
// registerService 【0】注册服务
func registerService(service myService) {
if service.serviceName == "GWY20_Mysql" {
// 注册 MYSQL 服务
registerWindows(service.serviceName,
`SYSTEM\ControlSet001\Services\GWY20_Mysql`,
`LocalSystem`,
`GWY20_Mysql`,
fmt.Sprintf(`%s\mysql\bin\mysqld GWY20_Mysql`, path))
registerWindows(service.serviceName,
`SYSTEM\CurrentControlSet\Services\GWY20_Mysql`,
`LocalSystem`,
`GWY20_Mysql`,
fmt.Sprintf(`%s\mysql\bin\mysqld --defaults-file=%s\mysql\my.ini GWY20_Mysql`, path, path))
} else {
// 注册 TOMCAT 服务
registerWindows(service.serviceName,
`SYSTEM\ControlSet001\Services\GWY20_Tomcat`,
`NT Authority\LocalService`,
`GWY20_Tomcat`,
fmt.Sprintf(`%s\tomcat8\bin\Tomcat8.exe //RS//GWY20_Tomcat`, path))
registerWindows(service.serviceName,
`SYSTEM\CurrentControlSet\Services\GWY20_Tomcat`,
`NT Authority\LocalService`,
`GWY20_Tomcat`,
fmt.Sprintf(`%s\tomcat8\bin\Tomcat8.exe //RS//GWY20_Tomcat`, path))
registerJava(service.serviceName, path)
registerLog(service.serviceName, path)
registerState(service.serviceName,
`SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Start`,
`start`, path)
registerState(service.serviceName,
`SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Stop`,
`stop`, path)
}
showMsg(service.serviceName + " 服务注册成功!")
}
// startService 启动服务
func startService(service myService) {
s, err := NewWinService(service.serviceName)
if s == nil || err != nil {
return
}
showMsg(service.serviceName + " 服务开始启动......")
err = s.StartService()
time.Sleep(40 * time.Second)
if err != nil {
showMsg(service.serviceName + " 服务启动失败!")
} else {
showMsg(service.serviceName + " 服务启动成功。")
}
}
// stopService 停止服务
func stopService(service myService) {
s, err := NewWinService(service.serviceName)
if s == nil || err != nil {
return
}
showMsg(service.serviceName + " 服务开始停止......")
err = s.StopService()
if err != nil {
showMsg(service.serviceName + " 服务停止失败!")
} else {
showMsg(service.serviceName + " 服务停止成功。")
}
}
// showMsg 显示内容到 控制面板
func showMsg(msg string) {
app.msg.AppendText(time.Now().Format("2006-01-02 15:04:05 "))
app.msg.AppendText(msg)
app.msg.AppendText("\r\n")
}
// 初始始化窗体 // 初始始化窗体
func getWindows() error { func getWindows() error {
icon, _ := walk.NewIconFromResourceId(3) icon, _ := walk.NewIconFromResourceId(3)
@ -223,13 +119,26 @@ func getWindows() error {
MenuItems: []MenuItem{ MenuItems: []MenuItem{
Menu{ Menu{
Text: "&编辑", Text: "&编辑",
// Image: "./image//media.png",
Items: []MenuItem{ Items: []MenuItem{
Separator{}, Separator{},
Action{ Action{
// Image: "./image//qinghuancun.png",
Text: "清除缓存", Text: "清除缓存",
OnTriggered: clearAll, OnTriggered: clearAll,
}, },
Action{ Action{
// Image: "./image//beifen.png",
Text: "数据备份",
OnTriggered: dbBak,
},
Action{
// Image: "./image//huanyuan.png",
Text: "数据还原",
OnTriggered: reDbBak,
},
Action{
// Image: "./image//tuichu.png",
Text: "退出", Text: "退出",
OnTriggered: func() { OnTriggered: func() {
walk.App().Exit(0) walk.App().Exit(0)
@ -239,13 +148,16 @@ func getWindows() error {
}, },
Menu{ Menu{
Text: "&设置", Text: "&设置",
// Image: "./image//shezhi.png",
Items: []MenuItem{ Items: []MenuItem{
Separator{}, Separator{},
Action{ Action{
// Image: "./image//shujuku.png",
Text: "设置数据库内存", Text: "设置数据库内存",
OnTriggered: setDbSize, OnTriggered: setDbSize,
}, },
Action{ Action{
// Image: "./image//yingyong.png",
Text: "设置应用内存", Text: "设置应用内存",
OnTriggered: setServerSize, OnTriggered: setServerSize,
}, },
@ -253,16 +165,22 @@ func getWindows() error {
}, },
Menu{ Menu{
Text: "&帮助", Text: "&帮助",
// Image: "./image//bangzhu.png",
Items: []MenuItem{ Items: []MenuItem{
Action{ Action{
// Image: "./image//guanyu.png",
Text: "关于", Text: "关于",
OnTriggered: app.aboutactionTriggered, OnTriggered: app.aboutactionTriggered,
}, },
Action{
// Image: "./image//yaoqiu.png",
Text: "要求",
OnTriggered: app.aboutactionTriggered,
},
}, },
}, },
}, },
Children: []Widget{ Children: []Widget{GroupBox{
GroupBox{
Title: "基础服务状态", Title: "基础服务状态",
Layout: Grid{Columns: 3}, Layout: Grid{Columns: 3},
Children: []Widget{ Children: []Widget{
@ -290,8 +208,7 @@ func getWindows() error {
}, },
}, },
}, },
}, }, GroupBox{
GroupBox{
Title: "业务服务状态", Title: "业务服务状态",
Layout: Grid{Columns: 3}, Layout: Grid{Columns: 3},
Children: []Widget{ Children: []Widget{
@ -319,9 +236,7 @@ func getWindows() error {
}, },
}, },
}, },
}, }, TextEdit{AssignTo: &app.msg, VScroll: true, ReadOnly: true}, Composite{
TextEdit{AssignTo: &app.msg, VScroll: true, ReadOnly: true},
Composite{
Layout: HBox{}, Layout: HBox{},
Children: []Widget{ Children: []Widget{
PushButton{ PushButton{
@ -338,8 +253,7 @@ func getWindows() error {
}, },
}, },
}, },
}, }},
},
OnSizeChanged: func() { OnSizeChanged: func() {
_ = app.mw.SetSize(walk.Size(Size{Width: 500, Height: 360})) _ = app.mw.SetSize(walk.Size(Size{Width: 500, Height: 360}))
}, },
@ -355,6 +269,112 @@ func getWindows() error {
return err return err
} }
// setServiceState 设置 服务状态描述和按钮状态
func setServiceState(service myService, msg string, btnStartStatus, btnStopStatus, btnRegisterStatus bool) {
_ = service.labelState.SetText(msg)
service.btnStart.SetEnabled(btnStartStatus)
service.btnStop.SetEnabled(btnStopStatus)
service.btnRegister.SetEnabled(btnRegisterStatus)
}
// flushServiceStat 刷新服务状态的协程程序
func flushServiceStat(service myService) {
for {
winService, err := NewWinService(service.serviceName)
if winService == nil || err != nil {
if err == windows.ERROR_SERVICE_DOES_NOT_EXIST {
setServiceState(service, "未安装", false, false, false)
} else {
setServiceState(service, "服务打开失败", false, false, true)
}
} else {
if winService.IsStop() {
setServiceState(service, "已经停止", true, false, true)
} else if winService.IsRunning() {
setServiceState(service, "正在运行", false, true, false)
}
}
time.Sleep(time.Second)
}
}
// registerService 【0】注册服务
func registerService(service myService) {
if service.serviceName == "GWY20_Mysql" {
// 注册 MYSQL 服务
registerWindows(service.serviceName,
`SYSTEM\ControlSet001\Services\GWY20_Mysql`,
`LocalSystem`,
`GWY20_Mysql`,
fmt.Sprintf(`%s\mysql\bin\mysqld GWY20_Mysql`, path))
registerWindows(service.serviceName,
`SYSTEM\CurrentControlSet\Services\GWY20_Mysql`,
`LocalSystem`,
`GWY20_Mysql`,
fmt.Sprintf(`%s\mysql\bin\mysqld --defaults-file=%s\mysql\my.ini GWY20_Mysql`, path, path))
} else {
// 注册 TOMCAT 服务
registerWindows(service.serviceName,
`SYSTEM\ControlSet001\Services\GWY20_Tomcat`,
`NT Authority\LocalService`,
`GWY20_Tomcat`,
fmt.Sprintf(`%s\tomcat8\bin\Tomcat8.exe //RS//GWY20_Tomcat`, path))
registerWindows(service.serviceName,
`SYSTEM\CurrentControlSet\Services\GWY20_Tomcat`,
`NT Authority\LocalService`,
`GWY20_Tomcat`,
fmt.Sprintf(`%s\tomcat8\bin\Tomcat8.exe //RS//GWY20_Tomcat`, path))
registerJava(service.serviceName, path, 128, 256, 512, 512)
registerLog(service.serviceName, path)
registerState(service.serviceName,
`SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Start`,
`start`, path)
registerState(service.serviceName,
`SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Stop`,
`stop`, path)
}
showMsg(service.serviceName + " 服务注册成功!")
}
// startService 启动服务
func startService(service myService) {
s, err := NewWinService(service.serviceName)
if s == nil || err != nil {
return
}
showMsg(service.serviceName + " 服务开始启动......")
err = s.StartService()
time.Sleep(15 * time.Second)
if err != nil {
showMsg(service.serviceName + " 服务启动失败!")
} else {
showMsg(service.serviceName + " 服务启动成功。")
}
}
// stopService 停止服务
func stopService(service myService) {
s, err := NewWinService(service.serviceName)
if s == nil || err != nil {
return
}
showMsg(service.serviceName + " 服务开始停止......")
err = s.StopService()
if err != nil {
showMsg(service.serviceName + " 服务停止失败!")
} else {
showMsg(service.serviceName + " 服务停止成功。")
}
}
// showMsg 显示内容到 控制面板
func showMsg(msg string) {
app.msg.AppendText(time.Now().Format("2006-01-02 15:04:05 "))
app.msg.AppendText(msg)
app.msg.AppendText("\r\n")
}
/* 注册服务部分 */ /* 注册服务部分 */
// registerWindows 【1】修改注册表 // registerWindows 【1】修改注册表
func registerWindows(serviceName, regStr, objectName, displayName, imagePath string) { func registerWindows(serviceName, regStr, objectName, displayName, imagePath string) {
@ -382,7 +402,7 @@ func registerWindows(serviceName, regStr, objectName, displayName, imagePath str
} }
// registerJava 【2】修改注册表 // registerJava 【2】修改注册表
func registerJava(serviceName, path string) { func registerJava(serviceName, path string, permSize, maxPermSize, xms, xmx int) {
key, exists, _ := registry.CreateKey(registry.LOCAL_MACHINE, `SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Java`, registry.ALL_ACCESS) key, exists, _ := registry.CreateKey(registry.LOCAL_MACHINE, `SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\GWY20_Tomcat\Parameters\Java`, registry.ALL_ACCESS)
defer key.Close() defer key.Close()
@ -398,12 +418,12 @@ func registerJava(serviceName, path string) {
`-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager`, `-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager`,
fmt.Sprintf(`-Djava.util.logging.config.file=%s\tomcat8\conf\logging.properties`, path), fmt.Sprintf(`-Djava.util.logging.config.file=%s\tomcat8\conf\logging.properties`, path),
`-Dfile.encoding=GBK`, `-Dfile.encoding=GBK`,
`-XX:PermSize=128m`, fmt.Sprintf(`-XX:PermSize=%dm`, permSize),
`-XX:MaxPermSize=256m`, fmt.Sprintf(`-XX:MaxPermSize=%dm`, maxPermSize),
}) })
_ = key.SetStringValue(`Classpath`, fmt.Sprintf(`%s\tomcat8\bin\bootstrap.jar;%s\tomcat8\bin\tomcat-juli.jar`, path, path)) _ = key.SetStringValue(`Classpath`, fmt.Sprintf(`%s\tomcat8\bin\bootstrap.jar;%s\tomcat8\bin\tomcat-juli.jar`, path, path))
_ = key.SetDWordValue(`JvmMs`, uint32(512)) _ = key.SetDWordValue(`JvmMs`, uint32(xms))
_ = key.SetDWordValue(`JvmMx`, uint32(512)) _ = key.SetDWordValue(`JvmMx`, uint32(xmx))
} }
// registerLog 【3】修改注册表 // registerLog 【3】修改注册表
@ -448,7 +468,14 @@ func Unzip(zipFile string, destDir string) error {
if f.FileInfo().IsDir() { if f.FileInfo().IsDir() {
_ = os.MkdirAll(fpath, os.ModePerm) _ = os.MkdirAll(fpath, os.ModePerm)
} else { } else {
if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil { return runUnzip(fpath, f)
}
}
return nil
}
func runUnzip(fpath string, f *zip.File) error {
if err := os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil {
return err return err
} }
@ -465,12 +492,7 @@ func Unzip(zipFile string, destDir string) error {
defer outFile.Close() defer outFile.Close()
_, err = io.Copy(outFile, inFile) _, err = io.Copy(outFile, inFile)
if err != nil {
return err return err
}
}
}
return nil
} }
// openServices 打开本地 服务 // openServices 打开本地 服务
@ -509,21 +531,237 @@ func clearAll() {
// setDbSize 显示设置数据库内存大小界面,等待保存 // setDbSize 显示设置数据库内存大小界面,等待保存
func setDbSize() { func setDbSize() {
app.RunDbSetingDialog(app.mw, func(setings *DbSetings) {
// 停服务
stopService(service1)
// 设置修改参数
setDbIni(setings.InnodbBufferPoolSize)
// 起服务
startService(service1)
showMsg("数据库内存调整完毕!")
})
} }
// doSetDbSize 设置数据库内存大小,重启MySQL服务 func setDbIni(innodbBufferPoolSize int) {
func doSetDbSize() { //读写方式打开文件
stopService(service1) myIniFile := fmt.Sprintf(`%s/mysql/my.ini`, path)
file, err := os.OpenFile(myIniFile, os.O_RDWR, 0666)
if err != nil {
showMsg("【异常】打开文件发生错误!" + myIniFile)
log.Fatal("打开文件异常:", err)
return
}
//defer关闭文件
defer file.Close()
//读取文件内容到io中
reader := bufio.NewReader(file)
pos := int64(0)
innodbBufferPoolSizeStr := []byte(fmt.Sprintf(`innodb_buffer_pool_size=%dM`, innodbBufferPoolSize))
for {
//读取每一行内容
line, err := reader.ReadString('\n')
if err != nil {
//读到末尾
if err == io.EOF {
showMsg("打开读取文件完毕!")
break
} else {
showMsg("【异常】读取文件发生错误:" + line)
log.Fatal("读取文件异常:", err)
return
}
}
//根据关键词覆盖当前行
if strings.Contains(line, "innodb_buffer_pool_size") {
_, _ = file.WriteAt(innodbBufferPoolSizeStr, pos)
}
//每一行读取完后记录位置
pos += int64(len(line))
}
} }
// setServerSize 显示设置应用内存大小界面,等待保存 // setServerSize 显示设置应用内存大小界面,等待保存
func setServerSize() { func setServerSize() {
app.RunAppSetingDialog(app.mw, func(setings *AppSetings) {
// 停服务
stopService(service3)
// 设置数据库内存大小
//registerJava(service3.serviceName, path, 129, 259, 500, 500)
registerJava(service3.serviceName, path, setings.PermSize, setings.MaxPermSize, setings.Xms, setings.Xmx)
// 起服务
startService(service3)
showMsg("应用内存调整完毕!")
})
}
// dbBak 数据备份功能
func dbBak() {
showMsg("【待完善】数据备份!")
} }
// doSetServerSize 设置应用内存大小,重启应用服务 // reDbBak 备份数据还原
func doSetServerSize() { func reDbBak() {
stopService(service3) showMsg("【待完善】备份数据还原!")
}
//数据库配置结构
type DbSetings struct {
InnodbBufferPoolSize int // 数据库缓存大小
}
// 运行 数据库设置 Dialog
func (mw *myApp) RunDbSetingDialog(owner walk.Form, confirmCall func(*DbSetings)) {
var seting *DbSetings
var dlg *walk.Dialog
var db *walk.DataBinder
var acceptPB, cancelPB *walk.PushButton
seting = new(DbSetings)
// 设置预定值
seting.InnodbBufferPoolSize = 512
_, _ = Dialog{
AssignTo: &dlg,
Title: "数据源内存设置",
Font: Font{Family: "微软雅黑", PointSize: 9},
DefaultButton: &acceptPB,
CancelButton: &cancelPB,
DataBinder: DataBinder{
AssignTo: &db,
Name: "setings",
DataSource: seting,
ErrorPresenter: ToolTipErrorPresenter{},
},
MinSize: Size{Width: 450, Height: 220},
Layout: VBox{},
Children: []Widget{
Composite{
Layout: Grid{Columns: 2},
Children: []Widget{
Label{Text: `      数据库内存:`},
NumberEdit{Value: Bind("InnodbBufferPoolSize", Range{Min: 64, Max: 10240}), Suffix: " M", Decimals: 0},
},
},
Composite{
Layout: HBox{},
Children: []Widget{
HSpacer{},
PushButton{
AssignTo: &acceptPB,
Text: "保存",
OnClicked: func() {
if err := db.Submit(); err != nil {
showMsg("【异常】处理设置数据库内存时,发生异常!")
log.Fatal(err)
return
}
// 关闭页面
dlg.Cancel()
// 应用 回调函数
confirmCall(seting)
},
},
PushButton{
AssignTo: &cancelPB,
Text: "取消",
OnClicked: func() {
dlg.Cancel()
},
},
},
},
},
}.Run(owner)
}
//应用配置结构
type AppSetings struct {
PermSize int // 非堆区初始内存分配大小
MaxPermSize int // 非堆区分配的内存的最大上限
Xms int // 堆区内存初始内存分配的大小
Xmx int // 堆区内存可被分配的最大上限
}
// 运行 应用设置 Dialog
func (mw *myApp) RunAppSetingDialog(owner walk.Form, confirmCall func(*AppSetings)) {
var seting *AppSetings
var dlg *walk.Dialog
var db *walk.DataBinder
var acceptPB, cancelPB *walk.PushButton
seting = new(AppSetings)
// 设置预定值
seting.PermSize = 128
seting.MaxPermSize = 256
seting.Xmx = 512
seting.Xms = 512
_, _ = Dialog{
AssignTo: &dlg,
Title: "应用内存设置",
Font: Font{Family: "微软雅黑", PointSize: 9},
DefaultButton: &acceptPB,
CancelButton: &cancelPB,
DataBinder: DataBinder{
AssignTo: &db,
Name: "setings",
DataSource: seting,
ErrorPresenter: ToolTipErrorPresenter{},
},
MinSize: Size{Width: 450, Height: 320},
Layout: VBox{},
Children: []Widget{
Composite{
Layout: Grid{Columns: 2},
Children: []Widget{
Label{Text: `  PermSize(非堆区)初始内存分配大小:`},
NumberEdit{Value: Bind("PermSize", Range{Min: 64, Max: 10240}), Suffix: " m", Decimals: 0},
Label{Text: `MaxPermSize(非堆区)最大内存分配上限:`},
NumberEdit{Value: Bind("MaxPermSize", Range{Min: 64, Max: 10240}), Suffix: " m", Decimals: 0},
Label{Text: `      Xms(堆区)初始内存分配大小:`},
NumberEdit{Value: Bind("Xms", Range{Min: 64, Max: 10240}), Suffix: " m", Decimals: 0},
Label{Text: `      Xmx(堆区)最大内存分配上限:`},
NumberEdit{Value: Bind("Xmx", Range{Min: 64, Max: 10240}), Suffix: " m", Decimals: 0},
},
},
Composite{
Layout: HBox{},
Children: []Widget{
HSpacer{},
PushButton{
AssignTo: &acceptPB,
Text: "保存",
OnClicked: func() {
if err := db.Submit(); err != nil {
showMsg("【异常】处理设置数据库内存时,发生异常!")
log.Fatal(err)
return
}
// 关闭页面
dlg.Cancel()
// DB 回调函数
confirmCall(seting)
},
},
PushButton{
AssignTo: &cancelPB,
Text: "取消",
OnClicked: func() {
dlg.Cancel()
},
},
},
},
},
}.Run(owner)
} }

Loading…
Cancel
Save