From 05bce6785682ef3aa07fb09858747c15357d05ed Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Sat, 26 Mar 2022 02:56:06 +0000 Subject: [PATCH] Command improvements. --- cmd/zenity/main.go | 15 ++++----------- cmd/zenity/notify.go | 19 +++++++++++-------- msg_windows.go | 11 +++++++++++ zenity.go | 3 ++- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/cmd/zenity/main.go b/cmd/zenity/main.go index 293dbef..2c3537c 100644 --- a/cmd/zenity/main.go +++ b/cmd/zenity/main.go @@ -316,22 +316,18 @@ func loadFlags() []zenity.Option { switch { case errorDlg: setDefault(&title, "Error") - setDefault(&icon, "dialog-error") setDefault(&text, "An error has occurred.") setDefault(&okLabel, "OK") case infoDlg: setDefault(&title, "Information") - setDefault(&icon, "dialog-information") setDefault(&text, "All updates are complete.") setDefault(&okLabel, "OK") case warningDlg: setDefault(&title, "Warning") - setDefault(&icon, "dialog-warning") setDefault(&text, "Are you sure you want to proceed?") setDefault(&okLabel, "OK") case questionDlg: setDefault(&title, "Question") - setDefault(&icon, "dialog-question") setDefault(&text, "Are you sure you want to proceed?") setDefault(&okLabel, "Yes") setDefault(&cancelLabel, "No") @@ -347,7 +343,6 @@ func loadFlags() []zenity.Option { setDefault(&cancelLabel, "Cancel") case passwordDlg: setDefault(&title, "Type your password") - setDefault(&icon, "dialog-password") setDefault(&okLabel, "OK") setDefault(&cancelLabel, "Cancel") case progressDlg: @@ -355,10 +350,6 @@ func loadFlags() []zenity.Option { setDefault(&text, "Running...") setDefault(&okLabel, "OK") setDefault(&cancelLabel, "Cancel") - case notification: - setDefault(&icon, "dialog-information") - default: - setDefault(&text, "") } // General options @@ -390,10 +381,12 @@ func loadFlags() []zenity.Option { ico = zenity.WarningIcon case "dialog-password": ico = zenity.PasswordIcon - case "": + default: ico = zenity.NoIcon } - opts = append(opts, ico) + if icon != unspecified { + opts = append(opts, ico) + } // Message options diff --git a/cmd/zenity/notify.go b/cmd/zenity/notify.go index 9d57368..f32b74e 100644 --- a/cmd/zenity/notify.go +++ b/cmd/zenity/notify.go @@ -14,11 +14,14 @@ import ( func notify(opts ...zenity.Option) error { if !listen { + if text == unspecified { + return nil + } return zenity.Notify(text, opts...) } zenutil.Command = false - icon := zenity.InfoIcon + ico := zenity.NoIcon for scanner := bufio.NewScanner(os.Stdin); scanner.Scan(); { line := scanner.Text() var cmd, msg string @@ -32,20 +35,20 @@ func notify(opts ...zenity.Option) error { case "icon": switch msg { case "error", "dialog-error": - icon = zenity.ErrorIcon + ico = zenity.ErrorIcon case "info", "dialog-information": - icon = zenity.InfoIcon + ico = zenity.InfoIcon case "question", "dialog-question": - icon = zenity.QuestionIcon + ico = zenity.QuestionIcon case "important", "warning", "dialog-warning": - icon = zenity.WarningIcon + ico = zenity.WarningIcon case "dialog-password": - icon = zenity.PasswordIcon + ico = zenity.PasswordIcon default: - icon = zenity.NoIcon + ico = zenity.NoIcon } case "message", "tooltip": - opts := []zenity.Option{icon} + opts := []zenity.Option{ico} if n := strings.IndexByte(msg, '\n'); n >= 0 { opts = append(opts, zenity.Title(msg[:n])) msg = msg[n+1:] diff --git a/msg_windows.go b/msg_windows.go index 13bce39..345af4b 100644 --- a/msg_windows.go +++ b/msg_windows.go @@ -32,6 +32,17 @@ func message(kind messageKind, text string, opts options) error { flags |= 0x30 // MB_ICONWARNING case InfoIcon: flags |= 0x40 // MB_ICONINFORMATION + case unspecifiedIcon: + switch kind { + case errorKind: + flags |= 0x10 // MB_ICONERROR + case questionKind: + flags |= 0x20 // MB_ICONQUESTION + case warningKind: + flags |= 0x30 // MB_ICONWARNING + case infoKind: + flags |= 0x40 // MB_ICONINFORMATION + } } if kind == questionKind && opts.defaultCancel { diff --git a/zenity.go b/zenity.go index 84b9529..b3314f0 100644 --- a/zenity.go +++ b/zenity.go @@ -132,7 +132,8 @@ func (i DialogIcon) apply(o *options) { o.icon = i } // The stock dialog icons. const ( - ErrorIcon DialogIcon = iota + 1 + unspecifiedIcon DialogIcon = iota + ErrorIcon WarningIcon InfoIcon QuestionIcon