zenity/util_darwin.go

86 lines
1.7 KiB
Go
Raw Permalink Normal View History

2021-04-06 07:35:22 -04:00
package zenity
2024-07-10 00:06:01 -04:00
import "git.bigun.dev/evan/zenity/internal/zenutil"
2021-04-06 07:35:22 -04:00
2021-04-25 19:36:15 -04:00
func getButtons(dialog, okcancel bool, opts options) (btns zenutil.DialogButtons) {
2021-04-06 07:35:22 -04:00
if !okcancel {
opts.cancelLabel = nil
opts.defaultCancel = false
}
2021-04-25 19:36:15 -04:00
if opts.okLabel != nil || opts.cancelLabel != nil || opts.extraButton != nil || dialog != okcancel {
2021-04-06 07:35:22 -04:00
if opts.okLabel == nil {
2022-12-14 19:26:34 -05:00
opts.okLabel = ptr("OK")
2021-04-06 07:35:22 -04:00
}
if okcancel {
if opts.cancelLabel == nil {
2022-12-14 19:26:34 -05:00
opts.cancelLabel = ptr("Cancel")
2021-04-06 07:35:22 -04:00
}
if opts.extraButton == nil {
btns.Buttons = []string{*opts.cancelLabel, *opts.okLabel}
btns.Default = 2
btns.Cancel = 1
} else {
btns.Buttons = []string{*opts.extraButton, *opts.cancelLabel, *opts.okLabel}
btns.Default = 3
btns.Cancel = 2
btns.Extra = 1
}
} else {
if opts.extraButton == nil {
btns.Buttons = []string{*opts.okLabel}
btns.Default = 1
} else {
btns.Buttons = []string{*opts.extraButton, *opts.okLabel}
btns.Default = 2
btns.Extra = 1
}
}
}
if opts.defaultCancel {
if btns.Cancel != 0 {
btns.Default = btns.Cancel
} else {
btns.Default = 1
}
}
return
}
2022-03-28 15:22:39 -04:00
func getAlertButtons(opts options) (ok, cancel string, extra *string) {
if opts.okLabel == nil {
2022-12-14 19:26:34 -05:00
opts.okLabel = ptr("OK")
2022-03-28 15:22:39 -04:00
}
if opts.cancelLabel == nil {
2022-12-14 19:26:34 -05:00
opts.cancelLabel = ptr("Cancel")
2022-03-28 15:22:39 -04:00
}
return *opts.okLabel, *opts.cancelLabel, opts.extraButton
}
2021-04-06 07:35:22 -04:00
func (i DialogIcon) String() string {
switch i {
case ErrorIcon:
return "stop"
case WarningIcon:
return "caution"
case InfoIcon, QuestionIcon:
return "note"
default:
return ""
}
}
func (k messageKind) String() string {
switch k {
case infoKind:
return "informational"
case warningKind:
return "warning"
case errorKind:
return "critical"
default:
return ""
}
}