P4.2: Add Browse button for Command field in job dialog
Add chooseFile helper (dialog.NewFileOpen) in settings_view.go and wrap the Command entry in job_dialog.go with a Browse button so users can pick an executable from a file picker instead of typing the path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -102,7 +102,7 @@ These land together because both edit `domain/job.go` and `storage/store.go`.
|
||||
|
||||
### Phase 4 — Notifications + Command browse
|
||||
- [x] P4.1 — Failure notifications
|
||||
- [ ] P4.2 — Command Browse button
|
||||
- [x] P4.2 — Command Browse button
|
||||
|
||||
### Phase 5 — Icons
|
||||
- [ ] P5.1 — Embed small icon + `IconSmall()`
|
||||
|
||||
@@ -7,7 +7,9 @@ import (
|
||||
"gitea.mixdep.ru/mix/gosentry/src/domain"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/container"
|
||||
"fyne.io/fyne/v2/dialog"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
@@ -27,6 +29,10 @@ func showJobDialog(w fyne.Window, title string, current job, onSave func(job)) {
|
||||
commandEntry := widget.NewEntry()
|
||||
commandEntry.SetPlaceHolder(`C:\Program Files\App\App.exe`)
|
||||
commandEntry.SetText(current.Command)
|
||||
commandBrowse := widget.NewButtonWithIcon("Browse", theme.FolderOpenIcon(), func() {
|
||||
chooseFile(w, commandEntry)
|
||||
})
|
||||
commandRow := container.NewBorder(nil, nil, nil, commandBrowse, commandEntry)
|
||||
argumentsEntry := widget.NewMultiLineEntry()
|
||||
argumentsEntry.SetPlaceHolder(`D:\Local\Jobs\Auto.ffs_batch`)
|
||||
argumentsEntry.SetText(current.Arguments)
|
||||
@@ -43,7 +49,7 @@ func showJobDialog(w fyne.Window, title string, current job, onSave func(job)) {
|
||||
widget.NewFormItem("Name", name),
|
||||
widget.NewFormItem("Folder", folderEntry),
|
||||
widget.NewFormItem("Schedule", scheduleEntry),
|
||||
widget.NewFormItem("Command", commandEntry),
|
||||
widget.NewFormItem("Command", commandRow),
|
||||
widget.NewFormItem("Arguments", argumentsEntry),
|
||||
widget.NewFormItem("", startOnly),
|
||||
widget.NewFormItem("", enabled),
|
||||
|
||||
@@ -172,6 +172,17 @@ func mustParseURL(raw string) *url.URL {
|
||||
return parsed
|
||||
}
|
||||
|
||||
func chooseFile(w fyne.Window, target *widget.Entry) {
|
||||
fileDialog := dialog.NewFileOpen(func(uri fyne.URIReadCloser, err error) {
|
||||
if err != nil || uri == nil {
|
||||
return
|
||||
}
|
||||
target.SetText(uri.URI().Path())
|
||||
}, w)
|
||||
fileDialog.Resize(fyne.NewSize(900, 640))
|
||||
fileDialog.Show()
|
||||
}
|
||||
|
||||
func chooseFolder(w fyne.Window, target *widget.Entry) {
|
||||
folderDialog := dialog.NewFolderOpen(func(uri fyne.ListableURI, err error) {
|
||||
if err != nil || uri == nil {
|
||||
|
||||
Reference in New Issue
Block a user