Some minor new features for Cocoa binding
parent
b45ee5b8be
commit
b4d918caa5
|
@ -30,7 +30,7 @@ IN: cocoa.application
|
||||||
FUNCTION: void NSBeep ( ) ;
|
FUNCTION: void NSBeep ( ) ;
|
||||||
|
|
||||||
: with-cocoa ( quot -- )
|
: with-cocoa ( quot -- )
|
||||||
[ NSApp drop call ] with-autorelease-pool ;
|
[ NSApp drop call ] with-autorelease-pool ; inline
|
||||||
|
|
||||||
: next-event ( app -- event )
|
: next-event ( app -- event )
|
||||||
0 f CFRunLoopDefaultMode 1
|
0 f CFRunLoopDefaultMode 1
|
||||||
|
|
|
@ -16,9 +16,16 @@ HELP: SUPER->
|
||||||
|
|
||||||
{ send super-send POSTPONE: -> POSTPONE: SUPER-> } related-words
|
{ send super-send POSTPONE: -> POSTPONE: SUPER-> } related-words
|
||||||
|
|
||||||
|
HELP: IMPORT:
|
||||||
|
{ $syntax "IMPORT: name" }
|
||||||
|
{ $description "Makes an Objective C class available for use." }
|
||||||
|
{ $examples
|
||||||
|
{ $code "IMPORT: QTMovie" "QTMovie \"My Movie.mov\" <NSString> f -> movieWithFile:error:" }
|
||||||
|
} ;
|
||||||
|
|
||||||
ARTICLE: "objc-calling" "Calling Objective C code"
|
ARTICLE: "objc-calling" "Calling Objective C code"
|
||||||
"Before an Objective C class can be used, it must be imported; by default, a small set of common classes are imported automatically, but additional classes can be imported as needed."
|
"Before an Objective C class can be used, it must be imported; by default, a small set of common classes are imported automatically, but additional classes can be imported as needed."
|
||||||
{ $subsection import-objc-class }
|
{ $subsection POSTPONE: IMPORT: }
|
||||||
"Every imported Objective C class has as corresponding class word in the " { $vocab-link "cocoa.classes" } " vocabulary. Class words push the class object in the stack, allowing class methods to be invoked."
|
"Every imported Objective C class has as corresponding class word in the " { $vocab-link "cocoa.classes" } " vocabulary. Class words push the class object in the stack, allowing class methods to be invoked."
|
||||||
$nl
|
$nl
|
||||||
"Messages can be sent to classes and instances using a pair of parsing words:"
|
"Messages can be sent to classes and instances using a pair of parsing words:"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
USING: compiler io kernel cocoa.runtime cocoa.subclassing
|
USING: compiler io kernel cocoa.runtime cocoa.subclassing
|
||||||
cocoa.messages cocoa.types sequences words vocabs parser
|
cocoa.messages cocoa.types sequences words vocabs parser
|
||||||
core-foundation namespaces assocs hashtables compiler.units
|
core-foundation namespaces assocs hashtables compiler.units
|
||||||
lexer ;
|
lexer init ;
|
||||||
IN: cocoa
|
IN: cocoa
|
||||||
|
|
||||||
: (remember-send) ( selector variable -- )
|
: (remember-send) ( selector variable -- )
|
||||||
|
@ -27,6 +27,16 @@ SYMBOL: super-sent-messages
|
||||||
scan dup remember-super-send parsed \ super-send parsed ;
|
scan dup remember-super-send parsed \ super-send parsed ;
|
||||||
parsing
|
parsing
|
||||||
|
|
||||||
|
SYMBOL: frameworks
|
||||||
|
|
||||||
|
frameworks global [ V{ } clone or ] change-at
|
||||||
|
|
||||||
|
[ frameworks get [ load-framework ] each ] "cocoa.messages" add-init-hook
|
||||||
|
|
||||||
|
: FRAMEWORK: scan [ load-framework ] [ frameworks get push ] bi ; parsing
|
||||||
|
|
||||||
|
: IMPORT: scan [ ] import-objc-class ; parsing
|
||||||
|
|
||||||
"Compiling Objective C bridge..." print
|
"Compiling Objective C bridge..." print
|
||||||
|
|
||||||
"cocoa.classes" create-vocab drop
|
"cocoa.classes" create-vocab drop
|
||||||
|
|
|
@ -32,11 +32,7 @@ HELP: alien>objc-types
|
||||||
|
|
||||||
HELP: import-objc-class
|
HELP: import-objc-class
|
||||||
{ $values { "name" string } { "quot" "a quotation with stack effect " { $snippet "( -- )" } } }
|
{ $values { "name" string } { "quot" "a quotation with stack effect " { $snippet "( -- )" } } }
|
||||||
{ $description "If a class named " { $snippet "name" } " is already known to the Objective C interface, does nothing. Otherwise, first calls the quotation. The quotation should make the class available to the Objective C runtime if necessary, either by loading a framework or defining it directly. After the quotation returns, this word makes the class available to Factor programs by importing methods and creating a class word the class object in the " { $vocab-link "cocoa.classes" } " vocabulary." }
|
{ $description "If a class named " { $snippet "name" } " is already known to the Objective C interface, does nothing. Otherwise, first calls the quotation. The quotation should make the class available to the Objective C runtime if necessary, either by loading a framework or defining it directly. After the quotation returns, this word makes the class available to Factor programs by importing methods and creating a class word the class object in the " { $vocab-link "cocoa.classes" } " vocabulary." } ;
|
||||||
{ $notes "In most cases, the quotation should be " { $link f } "." }
|
|
||||||
{ $examples
|
|
||||||
{ $code "\"QTMovie\" f import-objc-class" "QTMovie \"My Movie.mov\" <NSString> f -> movieWithFile:error:" }
|
|
||||||
} ;
|
|
||||||
|
|
||||||
HELP: root-class
|
HELP: root-class
|
||||||
{ $values { "class" alien } { "root" alien } }
|
{ $values { "class" alien } { "root" alien } }
|
||||||
|
|
|
@ -4,7 +4,8 @@ USING: accessors alien alien.c-types alien.strings arrays assocs
|
||||||
combinators compiler kernel math namespaces make parser
|
combinators compiler kernel math namespaces make parser
|
||||||
prettyprint prettyprint.sections quotations sequences strings
|
prettyprint prettyprint.sections quotations sequences strings
|
||||||
words cocoa.runtime io macros memoize debugger
|
words cocoa.runtime io macros memoize debugger
|
||||||
io.encodings.ascii effects compiler.generator libc libc.private ;
|
io.encodings.ascii effects compiler.generator libc libc.private
|
||||||
|
parser lexer init core-foundation ;
|
||||||
IN: cocoa.messages
|
IN: cocoa.messages
|
||||||
|
|
||||||
: make-sender ( method function -- quot )
|
: make-sender ( method function -- quot )
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
! Copyright (C) 2008 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: kernel cocoa.nibs cocoa.application cocoa ;
|
||||||
|
IN: cocoa.standalone
|
||||||
|
|
||||||
|
: cocoa-app ( quot -- )
|
||||||
|
[
|
||||||
|
"MiniFactor.nib" load-nib
|
||||||
|
call
|
||||||
|
finish-launching
|
||||||
|
NSApp -> run
|
||||||
|
] with-cocoa ; inline
|
Loading…
Reference in New Issue