// 7 february 2014 package ui // Dialog is an interface adopted by all dialogs. type Dialog struct { Response() Response // response code from the dialog Selection() interface{} // currently nil } // Response denotes a response from the user to a Dialog. type Response uint const ( NotDone Response = iota OK ) // basic return type dialogret struct { res Response sel interface{} } func (d *dialogret) Response() Response { return d.res } func (d *dialogret) Selection() interface{} { return d.sel } // sentinel (not nil so programmer errors don't go undetected) // this window is invalid and cannot be used directly // notice the support it uses var dialogWindow = &Window{ sysData: &sysData{ winhandler: dh, } } type dhandler chan *dialogret func (d dhandler) Event(e Event, dat interface{}) { d <- dat.(*dialogret) } var dh = make(dhandler) // MsgBox displays an informational message box to the user with just an OK button. // primaryText should be a short string describing the message, and will be displayed with additional emphasis on platforms that support it. // Optionally, secondaryText can be used to show additional information. // If you pass an empty string for secondaryText, neither additional information nor space for additional information will be shown. // On platforms that allow for the message box window to have a title, os.Args[0] is used. // // See "On Dialogs" in the package overview for behavioral information. func MsgBox(primaryText string, secondaryText string) Response { dialogWindow.msgBox(primaryText, secondaryText) return (<-dh).res } // MsgBox is the Window method version of the package-scope function MsgBox. // See that function's documentation and "On Dialogs" in the package overview for more information. func (w *Window) MsgBox(primaryText string, secondaryText string) Dialog { if !w.created { panic("parent window passed to Window.MsgBox() before it was created") } return w.msgBox(primaryText, secondaryText) } // MsgBoxError displays a message box to the user with just an OK button and an icon indicating an error. // Otherwise, it behaves like MsgBox. // // See "On Dialogs" in the package overview for more information. func MsgBoxError(primaryText string, secondaryText string) Dialog { dialogWindow.msgBoxError(primaryText, secondaryText) return (<-dh).res } // MsgBoxError is the Window method version of the package-scope function MsgBoxError. // See that function's documentation and "On Dialogs" in the package overview for more information. func (w *Window) MsgBoxError(primaryText string, secondaryText string) Dialog { return w.msgBoxError(primaryText, secondaryText) }