Did most of the conversion of dialog_darwin.go/.m to the new API.
This commit is contained in:
parent
f4677247f1
commit
7e0a0db492
|
@ -3,6 +3,7 @@
|
|||
package ui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
|
@ -17,43 +18,32 @@ func dialog_send(pchan unsafe.Pointer, res C.intptr_t) {
|
|||
}()
|
||||
}
|
||||
|
||||
func _msgBox(parent *Window, primarytext string, secondarytext string, style uintptr) chan int {
|
||||
ret := make(chan int)
|
||||
uitask <- func() {
|
||||
var pwin C.id = nil
|
||||
func _msgBox(parent *Window, primarytext string, secondarytext string, style uintptr) Response {
|
||||
var pwin C.id = nil
|
||||
|
||||
if parent != dialogWindow {
|
||||
pwin = parent.sysData.id
|
||||
}
|
||||
primary := toNSString(primarytext)
|
||||
secondary := C.id(nil)
|
||||
if secondarytext != "" {
|
||||
secondary = toNSString(secondarytext)
|
||||
}
|
||||
switch style {
|
||||
case 0: // normal
|
||||
C.msgBox(pwin, primary, secondary, unsafe.Pointer(&ret))
|
||||
case 1: // error
|
||||
C.msgBoxError(pwin, primary, secondary, unsafe.Pointer(&ret))
|
||||
}
|
||||
if parent != dialogWindow {
|
||||
pwin = parent.sysData.id
|
||||
}
|
||||
return ret
|
||||
primary := toNSString(primarytext)
|
||||
secondary := C.id(nil)
|
||||
if secondarytext != "" {
|
||||
secondary = toNSString(secondarytext)
|
||||
}
|
||||
switch style {
|
||||
case 0: // normal
|
||||
C.msgBox(pwin, primary, secondary, nil)
|
||||
return OK
|
||||
case 1: // error
|
||||
C.msgBoxError(pwin, primary, secondary, nil)
|
||||
return OK
|
||||
}
|
||||
panic(fmt.Errorf("unknown message box style %d\n", style))
|
||||
}
|
||||
|
||||
func (w *Window) msgBox(primarytext string, secondarytext string) (done chan struct{}) {
|
||||
done = make(chan struct{})
|
||||
go func() {
|
||||
<-_msgBox(w, primarytext, secondarytext, 0)
|
||||
done <- struct{}{}
|
||||
}()
|
||||
return done
|
||||
func (w *Window) msgBox(primarytext string, secondarytext string) {
|
||||
_msgBox(w, primarytext, secondarytext, 0)
|
||||
}
|
||||
|
||||
func (w *Window) msgBoxError(primarytext string, secondarytext string) (done chan struct{}) {
|
||||
done = make(chan struct{})
|
||||
go func() {
|
||||
<-_msgBox(w, primarytext, secondarytext, 1)
|
||||
done <- struct{}{}
|
||||
}()
|
||||
return done
|
||||
func (w *Window) msgBoxError(primarytext string, secondarytext string) {
|
||||
_msgBox(w, primarytext, secondarytext, 1)
|
||||
}
|
||||
|
|
|
@ -21,12 +21,14 @@ static void alert(id parent, NSString *primary, NSString *secondary, NSAlertStyl
|
|||
// TODO is there a named constant? will also need to be changed when we add different dialog types
|
||||
[box addButtonWithTitle:@"OK"];
|
||||
if (parent == nil)
|
||||
dialog_send(chan, (intptr_t) [box runModal]);
|
||||
else
|
||||
return (intptr_t) [box runModal];
|
||||
else {
|
||||
[box beginSheetModalForWindow:toNSWindow(parent)
|
||||
modalDelegate:[NSApp delegate]
|
||||
didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
|
||||
contextInfo:chan];
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
void msgBox(id parent, id primary, id secondary, void *chan)
|
||||
|
|
Loading…
Reference in New Issue