Starts Cocoa widgetset.

git-svn-id: trunk@15183 -
This commit is contained in:
sekelsenmat 2008-05-19 18:39:34 +00:00
parent 5cfa24eb18
commit b86b98e34d
11 changed files with 3416 additions and 110 deletions

6
.gitattributes vendored
View File

@ -3081,7 +3081,13 @@ lcl/interfaces/carbon/interfaces.pas svneol=native#text/pascal
lcl/interfaces/carbon/issues.xml svneol=native#text/xml
lcl/interfaces/carbon/mackeycodes.inc svneol=native#text/pascal
lcl/interfaces/carbon/opengl.pas svneol=native#text/plain
lcl/interfaces/cocoa/Makefile svneol=native#text/plain
lcl/interfaces/cocoa/Makefile.fpc svneol=native#text/plain
lcl/interfaces/cocoa/cocoaint.pas svneol=native#text/plain
lcl/interfaces/cocoa/cocoaobject.inc svneol=native#text/plain
lcl/interfaces/cocoa/cocoaprivate.pp svneol=native#text/plain
lcl/interfaces/cocoa/cocoawsforms.pp svneol=native#text/plain
lcl/interfaces/cocoa/interfaces.pas svneol=native#text/plain
lcl/interfaces/fpgui/Makefile.fpc svneol=native#text/plain
lcl/interfaces/fpgui/README.txt svneol=native#text/plain
lcl/interfaces/fpgui/fpguiint.pp svneol=native#text/pascal

View File

@ -1,12 +1,11 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/12/01]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/11/14]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-embedded
BSDs = freebsd netbsd openbsd darwin
UNIXs = linux $(BSDs) solaris qnx
LIMIT83fs = go32v2 os2 emx watcom
OSNeedsComspecToRunBatch = go32v2 watcom
FORCE:
.PHONY: FORCE
override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
@ -57,11 +56,6 @@ else
SRCBATCHEXT=.bat
endif
endif
ifdef COMSPEC
ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
RUNBATCH=$(COMSPEC) /C
endif
endif
ifdef inUnix
PATHSEP=/
else
@ -107,11 +101,7 @@ ifndef FPC
FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
ifneq ($(FPCPROG),)
FPCPROG:=$(firstword $(FPCPROG))
ifneq ($(CPU_TARGET),)
FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
else
FPC:=$(shell $(FPCPROG) -PB)
endif
ifneq ($(findstring Error,$(FPC)),)
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
endif
@ -255,163 +245,157 @@ endif
export LCL_PLATFORM
override DEFAULT_DIR=$(LCL_PLATFORM)
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-qnx)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),m68k-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),sparc-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-gba)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-nds)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),arm-symbian)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui
override TARGET_DIRS+=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
endif
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
@ -1407,12 +1391,6 @@ REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_GTK=1
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
REQUIRE_PACKAGES_X11=1
REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_GTK=1
endif
ifeq ($(FULL_TARGET),x86_64-win64)
REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
@ -1465,12 +1443,6 @@ REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_GTK=1
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
REQUIRE_PACKAGES_X11=1
REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_GTK=1
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
REQUIRE_PACKAGES_OPENGL=1
REQUIRE_PACKAGES_RTL=1
@ -1594,7 +1566,7 @@ override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
endif
ifndef CROSSBOOTSTRAP
ifneq ($(BINUTILSPREFIX),)
override FPCOPT+=-XP$(BINUTILSPREFIX)
override FPCOPT+=-XP$(BINUTILSPREFIX)
endif
ifneq ($(BINUTILSPREFIX),)
override FPCOPT+=-Xr$(RLINKPATH)
@ -1732,13 +1704,9 @@ ifeq (,$(findstring -s ,$(COMPILER)))
EXECPPAS=
else
ifeq ($(FULL_SOURCE),$(FULL_TARGET))
ifdef RUNBATCH
EXECPPAS:=@$(RUNBATCH) $(PPAS)
else
EXECPPAS:=@$(PPAS)
endif
endif
endif
ifdef TARGET_RSTS
override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
override CLEANRSTFILES+=$(RSTFILES)
@ -1995,6 +1963,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-go32v2)
TARGET_DIRS_GTK=1
@ -2005,6 +1974,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-win32)
TARGET_DIRS_GTK=1
@ -2015,6 +1985,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-os2)
TARGET_DIRS_GTK=1
@ -2025,6 +1996,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-freebsd)
TARGET_DIRS_GTK=1
@ -2035,6 +2007,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-beos)
TARGET_DIRS_GTK=1
@ -2045,6 +2018,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-netbsd)
TARGET_DIRS_GTK=1
@ -2055,6 +2029,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-solaris)
TARGET_DIRS_GTK=1
@ -2065,6 +2040,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-qnx)
TARGET_DIRS_GTK=1
@ -2075,6 +2051,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-netware)
TARGET_DIRS_GTK=1
@ -2085,6 +2062,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-openbsd)
TARGET_DIRS_GTK=1
@ -2095,6 +2073,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-wdosx)
TARGET_DIRS_GTK=1
@ -2105,6 +2084,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-darwin)
TARGET_DIRS_GTK=1
@ -2115,6 +2095,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-emx)
TARGET_DIRS_GTK=1
@ -2125,6 +2106,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-watcom)
TARGET_DIRS_GTK=1
@ -2135,6 +2117,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
TARGET_DIRS_GTK=1
@ -2145,6 +2128,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-wince)
TARGET_DIRS_GTK=1
@ -2155,6 +2139,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-embedded)
TARGET_DIRS_GTK=1
@ -2165,6 +2150,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),i386-symbian)
TARGET_DIRS_GTK=1
@ -2175,6 +2161,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-linux)
TARGET_DIRS_GTK=1
@ -2185,6 +2172,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
TARGET_DIRS_GTK=1
@ -2195,6 +2183,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
TARGET_DIRS_GTK=1
@ -2205,6 +2194,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-amiga)
TARGET_DIRS_GTK=1
@ -2215,6 +2205,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-atari)
TARGET_DIRS_GTK=1
@ -2225,6 +2216,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
TARGET_DIRS_GTK=1
@ -2235,6 +2227,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-palmos)
TARGET_DIRS_GTK=1
@ -2245,6 +2238,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),m68k-embedded)
TARGET_DIRS_GTK=1
@ -2255,6 +2249,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-linux)
TARGET_DIRS_GTK=1
@ -2265,6 +2260,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
TARGET_DIRS_GTK=1
@ -2275,6 +2271,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
TARGET_DIRS_GTK=1
@ -2285,6 +2282,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-macos)
TARGET_DIRS_GTK=1
@ -2295,6 +2293,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
TARGET_DIRS_GTK=1
@ -2305,6 +2304,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
TARGET_DIRS_GTK=1
@ -2315,6 +2315,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
TARGET_DIRS_GTK=1
@ -2325,6 +2326,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),sparc-linux)
TARGET_DIRS_GTK=1
@ -2335,6 +2337,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
TARGET_DIRS_GTK=1
@ -2345,6 +2348,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),sparc-solaris)
TARGET_DIRS_GTK=1
@ -2355,6 +2359,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),sparc-embedded)
TARGET_DIRS_GTK=1
@ -2365,6 +2370,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),x86_64-linux)
TARGET_DIRS_GTK=1
@ -2375,6 +2381,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
TARGET_DIRS_GTK=1
@ -2385,16 +2392,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
TARGET_DIRS_GTK=1
TARGET_DIRS_GTK2=1
TARGET_DIRS_WIN32=1
TARGET_DIRS_WINCE=1
TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),x86_64-win64)
TARGET_DIRS_GTK=1
@ -2405,6 +2403,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
TARGET_DIRS_GTK=1
@ -2415,6 +2414,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-linux)
TARGET_DIRS_GTK=1
@ -2425,6 +2425,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-palmos)
TARGET_DIRS_GTK=1
@ -2435,6 +2436,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-wince)
TARGET_DIRS_GTK=1
@ -2445,6 +2447,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-gba)
TARGET_DIRS_GTK=1
@ -2455,6 +2458,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-nds)
TARGET_DIRS_GTK=1
@ -2465,6 +2469,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-embedded)
TARGET_DIRS_GTK=1
@ -2475,6 +2480,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),arm-symbian)
TARGET_DIRS_GTK=1
@ -2485,6 +2491,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
TARGET_DIRS_GTK=1
@ -2495,16 +2502,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
TARGET_DIRS_GTK=1
TARGET_DIRS_GTK2=1
TARGET_DIRS_WIN32=1
TARGET_DIRS_WINCE=1
TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
TARGET_DIRS_GTK=1
@ -2515,6 +2513,7 @@ TARGET_DIRS_QT=1
TARGET_DIRS_CARBON=1
TARGET_DIRS_FPGUI=1
TARGET_DIRS_NOGUI=1
TARGET_DIRS_COCOA=1
endif
ifdef TARGET_DIRS_GTK
gtk_all:
@ -2876,6 +2875,51 @@ nogui:
$(MAKE) -C nogui all
.PHONY: nogui_all nogui_debug nogui_smart nogui_release nogui_units nogui_examples nogui_shared nogui_install nogui_sourceinstall nogui_exampleinstall nogui_distinstall nogui_zipinstall nogui_zipsourceinstall nogui_zipexampleinstall nogui_zipdistinstall nogui_clean nogui_distclean nogui_cleanall nogui_info nogui_makefiles nogui
endif
ifdef TARGET_DIRS_COCOA
cocoa_all:
$(MAKE) -C cocoa all
cocoa_debug:
$(MAKE) -C cocoa debug
cocoa_smart:
$(MAKE) -C cocoa smart
cocoa_release:
$(MAKE) -C cocoa release
cocoa_units:
$(MAKE) -C cocoa units
cocoa_examples:
$(MAKE) -C cocoa examples
cocoa_shared:
$(MAKE) -C cocoa shared
cocoa_install:
$(MAKE) -C cocoa install
cocoa_sourceinstall:
$(MAKE) -C cocoa sourceinstall
cocoa_exampleinstall:
$(MAKE) -C cocoa exampleinstall
cocoa_distinstall:
$(MAKE) -C cocoa distinstall
cocoa_zipinstall:
$(MAKE) -C cocoa zipinstall
cocoa_zipsourceinstall:
$(MAKE) -C cocoa zipsourceinstall
cocoa_zipexampleinstall:
$(MAKE) -C cocoa zipexampleinstall
cocoa_zipdistinstall:
$(MAKE) -C cocoa zipdistinstall
cocoa_clean:
$(MAKE) -C cocoa clean
cocoa_distclean:
$(MAKE) -C cocoa distclean
cocoa_cleanall:
$(MAKE) -C cocoa cleanall
cocoa_info:
$(MAKE) -C cocoa info
cocoa_makefiles:
$(MAKE) -C cocoa makefiles
cocoa:
$(MAKE) -C cocoa all
.PHONY: cocoa_all cocoa_debug cocoa_smart cocoa_release cocoa_units cocoa_examples cocoa_shared cocoa_install cocoa_sourceinstall cocoa_exampleinstall cocoa_distinstall cocoa_zipinstall cocoa_zipsourceinstall cocoa_zipexampleinstall cocoa_zipdistinstall cocoa_clean cocoa_distclean cocoa_cleanall cocoa_info cocoa_makefiles cocoa
endif
all: $(addsuffix _all,$(DEFAULT_DIR))
debug: $(addsuffix _debug,$(DEFAULT_DIR))
smart: $(addsuffix _smart,$(DEFAULT_DIR))

View File

@ -8,7 +8,7 @@
main=lcl
[target]
dirs=gtk gtk2 win32 wince qt carbon fpgui nogui
dirs=gtk gtk2 win32 wince qt carbon fpgui nogui cocoa
[default]
dir=$(LCL_PLATFORM)

View File

@ -561,7 +561,7 @@ begin
// if using Cocoa, release autorelease the pool
{$ifdef CarbonUseCocoa}
if pool <> nil then pool := NSAutoreleasePool.Create;
if pool <> nil then pool.Free;
{$endif}
end;

File diff suppressed because it is too large Load Diff

View File

@ -14,8 +14,8 @@ units=interfaces
implicitunits=cocoaint
[compiler]
options=-gl -dcocoa
unitdir=../../units/$(CPU_TARGET)-$(OS_TARGET) . pascocoa/foundation pascocoa/appkit
options=-gl -dcocoa1
unitdir=../../units/$(CPU_TARGET)-$(OS_TARGET) .
unittargetdir=../../units/$(CPU_TARGET)-$(OS_TARGET)/cocoa
[clean]

View File

@ -0,0 +1,174 @@
{
/***************************************************************************
CocoaInt.pas - CocoaInterface Object
----------------------------------------
Initial Revision : Mon August 6th CST 2004
***************************************************************************/
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit CocoaInt;
{$mode objfpc}{$H+}
interface
uses
// rtl+ftl
Types, Classes, SysUtils, Math,
// carbon bindings
FPCMacOSAll,
// Cocoa bindings
ctypes, objc, foundation, appkit,
// interfacebase
InterfaceBase,
// widgetset
// CarbonGDIObjects,
// LCL
LCLStrConsts, LMessages, LCLMessageGlue, LCLProc, LCLIntf, LCLType;
// GraphType, GraphMath, Graphics, Controls, Forms, Dialogs, Menus, Maps, Themes;
type
{ TCocoaWidgetSet }
TCocoaWidgetSet = class(TWidgetSet)
private
// Set when the QuitEventHandler terminates
FTerminating: Boolean;
{ FMainEventQueue: EventQueueRef;
FTimerMap: TMap; // the map contains all installed timers
FCurrentCursor: HCURSOR;
FMainMenu: TMainMenu; // Main menu attached to menu bar
FCaptureWidget: HWND; // Captured widget (TCarbonWidget descendant)
FOpenEventHandlerUPP: AEEventHandlerUPP;
FQuitEventHandlerUPP: AEEventHandlerUPP;}
pool: NSAutoreleasePool;
{ function RawImage_DescriptionFromCarbonBitmap(out ADesc: TRawImageDescription; ABitmap: TCarbonBitmap): Boolean;
function RawImage_FromCarbonBitmap(out ARawImage: TRawImage; ABitmap, AMask: TCarbonBitmap; const ARect: TRect): Boolean;
function GetImagePixelData(AImage: CGImageRef; var bitmapByteCount: PtrUInt): Pointer;}
protected
{ function CreateThemeServices: TThemeServices; override;
procedure PassCmdLineOptions; override;
procedure SendCheckSynchronizeMessage;
procedure OnWakeMainThread(Sender: TObject);
procedure RegisterEvents;}
public
constructor Create; override;
destructor Destroy; override;
function LCLPlatform: TLCLPlatform; override;
procedure AppInit(var ScreenInfo: TScreenInfo); override;
procedure AppRun(const ALoop: TApplicationMainLoop); override;
procedure AppWaitMessage; override;
procedure AppProcessMessages; override;
procedure AppTerminate; override;
procedure AppMinimize; override;
procedure AppRestore; override;
procedure AppBringToFront; override;
procedure AppSetTitle(const ATitle: string); override;
// procedure AttachMenuToWindow(AMenuObject: TComponent); override;
// function DCGetPixel(CanvasHandle: HDC; X, Y: integer): TGraphicsColor; override;
// procedure DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor); override;
// procedure DCRedraw(CanvasHandle: HDC); override;
// procedure SetDesigning(AComponent: TComponent); override;
// function IsHelpKey(Key: Word; Shift: TShiftState): Boolean; override;
// create and destroy
// function CreateTimer(Interval: integer; TimerFunc: TFNTimerProc) : THandle; override;
// function DestroyTimer(TimerHandle: THandle) : boolean; override;
// function PrepareUserEvent(Handle: HWND; Msg: Cardinal; wParam: WParam;
// lParam: LParam; out Target: EventTargetRef): EventRef;
// the winapi compatibility methods
// {$I carbonwinapih.inc}
// the extra LCL interface methods
// {$I carbonlclintfh.inc}
end;
var
CocoaWidgetSet: TCocoaWidgetSet;
implementation
uses
////////////////////////////////////////////////////
// I M P O R T A N T
////////////////////////////////////////////////////
// To get as little as possible circles,
// uncomment only those units with implementation
////////////////////////////////////////////////////
// CocoaWSActnList,
// CocoaWSArrow,
// CocoaWSButtons,
// CocoaWSCalendar,
// CocoaWSCheckLst,
// CocoaWSComCtrls,
// CocoaWSControls,
// CocoaWSDbCtrls,
// CocoaWSDBGrids,
// CocoaWSDialogs,
// CocoaWSDirSel,
// CocoaWSEditBtn,
// CocoaWSExtCtrls,
// CocoaWSExtDlgs,
// CocoaWSFileCtrl,
CocoaWSForms;
// CocoaWSGrids,
// CocoaWSImgList,
// CocoaWSMaskEdit,
// CocoaWSMenus,
// CocoaWSPairSplitter,
// CocoaWSSpin,
// CocoaWSStdCtrls,
// CocoaWSToolwin,
////////////////////////////////////////////////////
// the implementation of the utility methods
{$I cocoaobject.inc}
// the implementation of the winapi compatibility methods
//{$I Cocoawinapi.inc}
// the implementation of the extra LCL interface methods
//{$I Cocoalclintf.inc}
procedure InternalInit;
begin
end;
procedure InternalFinal;
begin
end;
initialization
// {$I Cocoaimages.lrs}
InternalInit;
finalization
InternalFinal;
end.

View File

@ -0,0 +1,193 @@
{%MainUnit cocoaint.pas}
{ $Id: carbonobject.inc 15152 2008-05-15 10:15:06Z sekelsenmat $ }
{******************************************************************************
All utility method implementations of the TCocoaWidgetSet class are here.
******************************************************************************
Implementation
******************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
{ TCocoaWidgetSet }
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppInit
Params: ScreenInfo
Initialize Carbon Widget Set
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppInit(var ScreenInfo: TScreenInfo);
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppInit');
{$ENDIF}
{ Creates the application NSApp object }
NSApp := NSApplication.sharedApplication;
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppRun
Params: ALoop
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppRun(const ALoop: TApplicationMainLoop);
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppRun');
{$ENDIF}
{ Enters main message loop }
// NSApp.setDelegate(myController);
NSApp.run;
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppProcessMessages
Handle all pending messages
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppProcessMessages;
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppProcessMessages');
{$ENDIF}
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppProcessMessages END');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppWaitMessage
Passes execution control to Carbon
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppWaitMessage;
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppWaitMessage');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.Create
Constructor for the class
------------------------------------------------------------------------------}
constructor TCocoaWidgetSet.Create;
begin
CocoaWidgetSet := Self;
inherited Create;
FTerminating := False;
{ Creates the AutoreleasePool }
pool := NSAutoreleasePool.Create;
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.Destroy
Destructor for the class
------------------------------------------------------------------------------}
destructor TCocoaWidgetSet.Destroy;
begin
inherited Destroy;
CocoaWidgetSet := nil;
{ Releases the AutoreleasePool }
pool.Free;
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppTerminate
Tells Carbon to halt the application
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppTerminate;
begin
if FTerminating then Exit;
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppTerminate');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppMinimize
Minimizes the whole application to the taskbar
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppMinimize;
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppMinimize');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppRestore
Restores the whole minimized application from the taskbar
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppRestore;
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppRestore');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppBringToFront
Brings the entire application on top of all other non-topmost programs
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppBringToFront;
begin
{$IFDEF VerboseObject}
DebugLn('TCocoaWidgetSet.AppBringToFront');
{$ENDIF}
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.AppSetTitle
Params: ATitle - New application title
Changes the application title
------------------------------------------------------------------------------}
procedure TCocoaWidgetSet.AppSetTitle(const ATitle: string);
begin
// TODO
end;
{------------------------------------------------------------------------------
Method: TCocoaWidgetSet.LCLPlatform
Returns: lpCarbon - enum value for Carbon widgetset
------------------------------------------------------------------------------}
function TCocoaWidgetSet.LCLPlatform: TLCLPlatform;
begin
Result:= lpCocoa;
end;

View File

@ -0,0 +1,79 @@
{ $Id: $}
{ --------------------------------------------
cocoaprivate.pp - Cocoa internal classes
--------------------------------------------
This unit contains the private classhierarchy for the Carbon implemetations
This hierarchy reflects (more or less) the Carbon widget hierarchy
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit CocoaPrivate;
{$mode objfpc}{$H+}
interface
uses
// rtl+ftl
Types, Classes, SysUtils,
// Libs
FPCMacOSAll, objc, foundation, appkit,
// LCL
LMessages, LCLMessageGlue, LCLProc, LCLType, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Menus;
type
{ TCocoaForm }
TCocoaForm = class(TObject)
public
{ classes }
MainWindow: NSWindow;
MainWindowView: NSView;
{ strings and sizes }
CFTitle: CFStringRef;
MainWindowRect: NSRect;
public
constructor Create(const AWinControl: TWinControl; const AParams: TCreateParams);
end;
implementation
{ TCocoaForm }
constructor TCocoaForm.Create(const AWinControl: TWinControl; const AParams: TCreateParams);
begin
inherited Create;
MainWindowRect.origin.x := AWinControl.Left;
MainWindowRect.origin.y := AWinControl.Top;
MainWindowRect.size.width := AWinControl.Width;
MainWindowRect.size.height := AWinControl.Height;
MainWindow := NSWindow.initWithContentRect_styleMask_backing_defer(MainWindowRect,
NSTitledWindowMask or NSClosableWindowMask or NSMiniaturizableWindowMask or NSResizableWindowMask,
NSBackingStoreBuffered, LongBool(NO));
MainWindowView := NSView.CreateWithHandle(MainWindow.contentView);
CFTitle := CFStringCreateWithPascalString(nil, AWinControl.Caption, kCFStringEncodingUTF8);
MainWindow.setTitle(CFTitle);
end;
end.

View File

@ -0,0 +1,177 @@
{ $Id: cocoawsforms.pp 12783 2007-11-08 11:45:39Z tombo $}
{
*****************************************************************************
* CocoaWSForms.pp *
* ------------ *
* *
* *
*****************************************************************************
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit CocoaWSForms;
{$mode objfpc}{$H+}
interface
uses
// Libs
FPCMacOSAll, foundation, appkit,
// LCL
Controls, Forms, Graphics, LCLType, LMessages, LCLProc, Classes,
// Widgetset
WSForms, WSLCLClasses, WSProc,
// LCL Cocoa
CocoaPrivate;
type
{ TCocoaWSScrollingWinControl }
TCocoaWSScrollingWinControl = class(TWSScrollingWinControl)
private
protected
public
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
// class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override;
end;
{ TCocoaWSScrollBox }
TCocoaWSScrollBox = class(TWSScrollBox)
private
protected
public
end;
{ TCocoaWSCustomFrame }
TCocoaWSCustomFrame = class(TWSCustomFrame)
private
protected
public
end;
{ TCocoaWSFrame }
TCocoaWSFrame = class(TWSFrame)
private
protected
public
end;
{ TCocoaWSCustomForm }
TCocoaWSCustomFormClass = class of TCocoaWSCustomForm;
TCocoaWSCustomForm = class(TWSCustomForm)
private
protected
public
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
class procedure ShowHide(const AWinControl: TWinControl); override; //TODO: rename to SetVisible(control, visible)
// class procedure CloseModal(const ACustomForm: TCustomForm); override;
// class procedure ShowModal(const ACustomForm: TCustomForm); override;
// class procedure SetBorderIcons(const AForm: TCustomForm; const ABorderIcons: TBorderIcons); override;
// class procedure SetFormBorderStyle(const AForm: TCustomForm; const AFormBorderStyle: TFormBorderStyle); override;
end;
{ TCocoaWSForm }
TCocoaWSForm = class(TWSForm)
private
protected
public
end;
{ TCocoaWSHintWindow }
TCocoaWSHintWindow = class(TWSHintWindow)
private
protected
public
// class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
end;
{ TCocoaWSScreen }
TCocoaWSScreen = class(TWSScreen)
private
protected
public
end;
{ TCocoaWSApplicationProperties }
TCocoaWSApplicationProperties = class(TWSApplicationProperties)
private
protected
public
end;
implementation
{ TCocoaWSCustomForm }
{------------------------------------------------------------------------------
Method: TCocoaWSCustomForm.CreateHandle
Params: AWinControl - LCL control
AParams - Creation parameters
Returns: Handle to the window in Cocoa interface
Creates new window in Cocoa interface with the specified parameters
------------------------------------------------------------------------------}
class function TCocoaWSCustomForm.CreateHandle(const AWinControl: TWinControl;
const AParams: TCreateParams): TLCLIntfHandle;
var
CocoaForm: TCocoaForm;
begin
CocoaForm := TCocoaForm.Create(AWinControl, AParams);
Result := TLCLIntfHandle(CocoaForm);
end;
class procedure TCocoaWSCustomForm.ShowHide(const AWinControl: TWinControl);
var
ACustomForm: TCustomForm absolute AWinControl;
CocoaForm: TCocoaForm;
begin
CocoaForm := TCocoaForm(ACustomForm.Handle);
CocoaForm.MainWindow.orderFrontRegardless;
end;
initialization
////////////////////////////////////////////////////
// I M P O R T A N T
////////////////////////////////////////////////////
// To improve speed, register only classes
// which actually implement something
////////////////////////////////////////////////////
// RegisterWSComponent(TScrollingWinControl, TCocoaWSScrollingWinControl);
// RegisterWSComponent(TScrollBox, TCocoaWSScrollBox);
// RegisterWSComponent(TCustomFrame, TCocoaWSCustomFrame);
// RegisterWSComponent(TFrame, TCocoaWSFrame);
RegisterWSComponent(TCustomForm, TCocoaWSCustomForm);
// RegisterWSComponent(TForm, TCocoaWSForm);
// RegisterWSComponent(THintWindow, TCocoaWSHintWindow);
// RegisterWSComponent(TScreen, TCocoaWSScreen);
// RegisterWSComponent(TApplicationProperties, TCocoaWSApplicationProperties);
////////////////////////////////////////////////////
end.

View File

@ -0,0 +1,48 @@
{
/***************************************************************************
Interfaces.pp - determines what interface to use
--------------------------------------------------
Initial Revision : Mon August 6st CST 2004
***************************************************************************/
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit Interfaces;
{$mode objfpc}{$H+}
{$IFNDEF COCOA1}
{$ERROR wrong interfaces source}
{$ENDIF}
interface
uses
InterfaceBase;
implementation
uses
CocoaInt, Forms;
initialization
CreateWidgetset(TCocoaWidgetSet);
finalization
FreeWidgetSet;
end.