package zenity import ( "os" "github.com/ncruces/zenity/internal/zenutil" ) func message(kind messageKind, text string, opts options) error { var data zenutil.Dialog data.Text = text data.Options.Timeout = zenutil.Timeout // dialog is more flexible, alert prettier var dialog bool if opts.icon != 0 || opts.customIcon != "" { // use if we want to show a specific icon dialog = true } else if kind == questionKind && opts.cancelLabel == nil { // use for questions with default buttons dialog = true } if dialog { data.Operation = "displayDialog" data.Options.Title = opts.title if opts.customIcon != "" { _, err := os.Stat(opts.customIcon) if err != nil { return err } data.IconPath = opts.customIcon } else { data.Options.Icon = opts.icon.String() } } else { data.Operation = "displayAlert" data.Options.As = kind.String() if opts.title != nil { data.Text = *opts.title data.Options.Message = text } } data.SetButtons(getButtons(dialog, kind == questionKind, opts)) out, err := zenutil.Run(opts.ctx, "dialog", data) _, err = strResult(opts, out, err) return err }