feat: add settings path actions
This commit is contained in:
+54
-4
@@ -48,6 +48,14 @@ type Shell struct {
|
||||
backClick widget.Clickable
|
||||
chromeKind widget.Clickable
|
||||
edgeKind widget.Clickable
|
||||
chromePick widget.Clickable
|
||||
chromeSearch widget.Clickable
|
||||
edgePick widget.Clickable
|
||||
edgeSearch widget.Clickable
|
||||
dataPick widget.Clickable
|
||||
dataSearch widget.Clickable
|
||||
logPick widget.Clickable
|
||||
logSearch widget.Clickable
|
||||
saveClick widget.Clickable
|
||||
cancelClick widget.Clickable
|
||||
|
||||
@@ -60,6 +68,7 @@ type Shell struct {
|
||||
instanceDir widget.Editor
|
||||
instanceURL widget.Editor
|
||||
newBrowser string
|
||||
pathFeedback string
|
||||
|
||||
list widget.List
|
||||
rows []InstanceRow
|
||||
@@ -187,6 +196,30 @@ func statusLabel(theme *material.Theme, status string) layout.Widget {
|
||||
}
|
||||
|
||||
func (s *Shell) settings(gtx layout.Context) layout.Dimensions {
|
||||
for s.chromePick.Clicked(gtx) {
|
||||
s.pathFeedback = "请选择 Chrome 可执行文件"
|
||||
}
|
||||
for s.chromeSearch.Clicked(gtx) {
|
||||
s.pathFeedback = "正在搜索 Chrome 可执行文件…"
|
||||
}
|
||||
for s.edgePick.Clicked(gtx) {
|
||||
s.pathFeedback = "请选择 Edge 可执行文件"
|
||||
}
|
||||
for s.edgeSearch.Clicked(gtx) {
|
||||
s.pathFeedback = "正在搜索 Edge 可执行文件…"
|
||||
}
|
||||
for s.dataPick.Clicked(gtx) {
|
||||
s.pathFeedback = "请选择默认 User Data Dir"
|
||||
}
|
||||
for s.dataSearch.Clicked(gtx) {
|
||||
s.pathFeedback = "正在搜索默认 User Data Dir…"
|
||||
}
|
||||
for s.logPick.Clicked(gtx) {
|
||||
s.pathFeedback = "请选择日志目录"
|
||||
}
|
||||
for s.logSearch.Clicked(gtx) {
|
||||
s.pathFeedback = "正在搜索日志目录…"
|
||||
}
|
||||
for s.saveClick.Clicked(gtx) {
|
||||
if s.onSave != nil {
|
||||
s.onSave(SettingsState{ChromePath: s.chromePath.Text(), EdgePath: s.edgePath.Text(), DefaultDir: s.dataDir.Text(), LogDir: s.logDir.Text(), CloseOnExit: s.closeOnExit.Value})
|
||||
@@ -199,13 +232,15 @@ func (s *Shell) settings(gtx layout.Context) layout.Dimensions {
|
||||
layout.Rigid(material.H4(s.theme, "设置").Layout),
|
||||
layout.Rigid(material.Body1(s.theme, "配置浏览器可执行文件、默认目录和本地运行行为").Layout),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(18)}.Layout),
|
||||
layout.Rigid(material.Editor(s.theme, &s.chromePath, "Chrome 可执行文件").Layout),
|
||||
layout.Rigid(s.pathField("Chrome 可执行文件", &s.chromePath, &s.chromePick, &s.chromeSearch)),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(10)}.Layout),
|
||||
layout.Rigid(material.Editor(s.theme, &s.edgePath, "Edge 可执行文件").Layout),
|
||||
layout.Rigid(s.pathField("Edge 可执行文件", &s.edgePath, &s.edgePick, &s.edgeSearch)),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(10)}.Layout),
|
||||
layout.Rigid(material.Editor(s.theme, &s.dataDir, "默认 User Data Dir").Layout),
|
||||
layout.Rigid(s.pathField("默认 User Data Dir", &s.dataDir, &s.dataPick, &s.dataSearch)),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(10)}.Layout),
|
||||
layout.Rigid(material.Editor(s.theme, &s.logDir, "日志目录").Layout),
|
||||
layout.Rigid(s.pathField("日志目录", &s.logDir, &s.logPick, &s.logSearch)),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(6)}.Layout),
|
||||
layout.Rigid(material.Caption(s.theme, s.pathFeedback).Layout),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(10)}.Layout),
|
||||
layout.Rigid(material.CheckBox(s.theme, &s.closeOnExit, "退出时关闭托管浏览器").Layout),
|
||||
layout.Rigid(layout.Spacer{Height: unit.Dp(16)}.Layout),
|
||||
@@ -219,6 +254,21 @@ func (s *Shell) settings(gtx layout.Context) layout.Dimensions {
|
||||
)
|
||||
}
|
||||
|
||||
func (s *Shell) pathField(label string, editor *widget.Editor, pick, search *widget.Clickable) layout.Widget {
|
||||
return func(gtx layout.Context) layout.Dimensions {
|
||||
return layout.Flex{Alignment: layout.Middle}.Layout(gtx,
|
||||
layout.Rigid(func(gtx layout.Context) layout.Dimensions {
|
||||
return layout.Inset{Right: unit.Dp(12)}.Layout(gtx, material.Body2(s.theme, label).Layout)
|
||||
}),
|
||||
layout.Flexed(1, material.Editor(s.theme, editor, "请输入或粘贴路径").Layout),
|
||||
layout.Rigid(layout.Spacer{Width: unit.Dp(8)}.Layout),
|
||||
layout.Rigid(material.Button(s.theme, pick, "选择").Layout),
|
||||
layout.Rigid(layout.Spacer{Width: unit.Dp(6)}.Layout),
|
||||
layout.Rigid(material.Button(s.theme, search, "搜索").Layout),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Shell) createInstance(gtx layout.Context) layout.Dimensions {
|
||||
for s.chromeKind.Clicked(gtx) {
|
||||
s.newBrowser = "Chrome"
|
||||
|
||||
Reference in New Issue
Block a user