factor/basis/ui/backend/cocoa/tools/tools.factor

99 lines
2.4 KiB
Factor
Raw Normal View History

2009-01-07 16:21:51 -05:00
! Copyright (C) 2006, 2009 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: alien.syntax cocoa cocoa.nibs cocoa.application
cocoa.classes cocoa.dialogs cocoa.pasteboard cocoa.subclassing
core-foundation core-foundation.strings help.topics kernel
memory namespaces parser system ui ui.tools.browser
ui.tools.listener ui.backend.cocoa eval locals tools.vocabs ;
IN: ui.backend.cocoa.tools
2007-09-20 18:09:08 -04:00
: finder-run-files ( alien -- )
CF>string-array listener-run-files
NSApp NSApplicationDelegateReplySuccess
-> replyToOpenOrPrint: ;
: menu-run-files ( -- )
open-panel [ listener-run-files ] when* ;
: menu-save-image ( -- )
image save-panel [ save-image ] when* ;
! Handle Open events from the Finder
CLASS: {
{ +superclass+ "FactorApplicationDelegate" }
{ +name+ "FactorWorkspaceApplicationDelegate" }
2007-09-20 18:09:08 -04:00
}
{ "application:openFiles:" "void" { "id" "SEL" "id" "id" }
[ [ 3drop ] dip finder-run-files ]
2007-09-20 18:09:08 -04:00
}
2009-01-08 20:30:35 -05:00
{ "factorListener:" "id" { "id" "SEL" "id" }
[ 3drop show-listener f ]
}
{ "factorBrowser:" "id" { "id" "SEL" "id" }
[ 3drop show-browser f ]
}
{ "newFactorListener:" "id" { "id" "SEL" "id" }
2009-01-07 16:21:51 -05:00
[ 3drop listener-window f ]
2007-09-20 18:09:08 -04:00
}
2009-01-08 20:30:35 -05:00
{ "newFactorBrowser:" "id" { "id" "SEL" "id" }
[ 3drop browser-window f ]
}
2007-09-20 18:09:08 -04:00
{ "runFactorFile:" "id" { "id" "SEL" "id" }
[ 3drop menu-run-files f ]
}
{ "saveFactorImage:" "id" { "id" "SEL" "id" }
[ 3drop save f ]
}
{ "saveFactorImageAs:" "id" { "id" "SEL" "id" }
[ 3drop menu-save-image f ]
}
2009-01-08 20:30:35 -05:00
{ "refreshAll:" "id" { "id" "SEL" "id" }
[ 3drop [ refresh-all ] call-listener f ]
2007-09-20 18:09:08 -04:00
} ;
: install-app-delegate ( -- )
NSApp FactorWorkspaceApplicationDelegate install-delegate ;
2007-09-20 18:09:08 -04:00
! Service support; evaluate Factor code from other apps
2008-08-23 00:00:35 -04:00
:: do-service ( pboard error quot -- )
pboard error ?pasteboard-string
dup [ quot call ] when
[ pboard set-pasteboard-string ] when* ;
2007-09-20 18:09:08 -04:00
CLASS: {
{ +superclass+ "NSObject" }
{ +name+ "FactorServiceProvider" }
} {
"evalInListener:userData:error:"
"void"
2009-01-25 01:11:06 -05:00
{ "id" "SEL" "id" "id" "id" }
2007-09-20 18:09:08 -04:00
[ nip [ eval-listener f ] do-service 2drop ]
} {
"evalToString:userData:error:"
"void"
2009-01-25 01:11:06 -05:00
{ "id" "SEL" "id" "id" "id" }
2007-09-20 18:09:08 -04:00
[ nip [ eval>string ] do-service 2drop ]
} ;
: register-services ( -- )
NSApp
FactorServiceProvider -> alloc -> init
-> setServicesProvider: ;
FUNCTION: void NSUpdateDynamicServices ;
[
install-app-delegate
"Factor.nib" load-nib
register-services
] cocoa-init-hook set-global