mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 12:39:27 +02:00
* Initial CHM support for textmode IDE.
git-svn-id: trunk@11885 -
This commit is contained in:
parent
d6c5cacd80
commit
a091b51e31
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -708,6 +708,7 @@ ide/unit.pt -text
|
||||
ide/vesa.pas svneol=native#text/plain
|
||||
ide/wansi.pas svneol=native#text/plain
|
||||
ide/wcedit.pas svneol=native#text/plain
|
||||
ide/wchmhwrap.pas svneol=native#text/plain
|
||||
ide/wconsole.pas svneol=native#text/plain
|
||||
ide/wconsts.pas svneol=native#text/plain
|
||||
ide/wconstse.inc svneol=native#text/plain
|
||||
|
316
ide/Makefile
316
ide/Makefile
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/08/19]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/10/12]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku 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-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
|
||||
@ -115,6 +115,10 @@ FPC:=$(shell $(FPCPROG) -PB)
|
||||
endif
|
||||
ifneq ($(findstring Error,$(FPC)),)
|
||||
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
|
||||
else
|
||||
ifeq ($(strip $(wildcard $(FPC))),)
|
||||
FPC:=$(firstword $(FPCPROG))
|
||||
endif
|
||||
endif
|
||||
else
|
||||
override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
|
||||
@ -1602,18 +1606,24 @@ else
|
||||
TAROPT=vz
|
||||
TAREXT=.tar.gz
|
||||
endif
|
||||
override REQUIRE_PACKAGES=rtl fv gdbint regexpr
|
||||
override REQUIRE_PACKAGES=rtl fv gdbint regexpr chm
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
REQUIRE_PACKAGES_GRAPH=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
@ -1621,336 +1631,508 @@ REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_WINUNITS-BASE=1
|
||||
REQUIRE_PACKAGES_WINUNITS-JEDI=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-haiku)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-darwin)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wince)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-symbian)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-amiga)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-darwin)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_WINUNITS-BASE=1
|
||||
REQUIRE_PACKAGES_WINUNITS-JEDI=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-palmos)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-darwin)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-wince)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-gba)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-nds)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-symbian)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-darwin)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),avr-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),armeb-linux)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),armeb-embedded)
|
||||
REQUIRE_PACKAGES_RTL=1
|
||||
REQUIRE_PACKAGES_FV=1
|
||||
REQUIRE_PACKAGES_GDBINT=1
|
||||
REQUIRE_PACKAGES_REGEXPR=1
|
||||
REQUIRE_PACKAGES_FCL-BASE=1
|
||||
REQUIRE_PACKAGES_FCL-XML=1
|
||||
REQUIRE_PACKAGES_CHM=1
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_RTL
|
||||
PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
@ -2056,6 +2238,84 @@ ifdef UNITDIR_REGEXPR
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_REGEXPR)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_FCL-BASE
|
||||
PACKAGEDIR_FCL-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_FCL-BASE),)
|
||||
ifneq ($(wildcard $(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)),)
|
||||
UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)/units/$(TARGETSUFFIX)
|
||||
else
|
||||
UNITDIR_FCL-BASE=$(PACKAGEDIR_FCL-BASE)
|
||||
endif
|
||||
ifdef CHECKDEPEND
|
||||
$(PACKAGEDIR_FCL-BASE)/$(FPCMADE):
|
||||
$(MAKE) -C $(PACKAGEDIR_FCL-BASE) $(FPCMADE)
|
||||
override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-BASE)/$(FPCMADE)
|
||||
endif
|
||||
else
|
||||
PACKAGEDIR_FCL-BASE=
|
||||
UNITDIR_FCL-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-base/Package.fpc,$(UNITSDIR)))))
|
||||
ifneq ($(UNITDIR_FCL-BASE),)
|
||||
UNITDIR_FCL-BASE:=$(firstword $(UNITDIR_FCL-BASE))
|
||||
else
|
||||
UNITDIR_FCL-BASE=
|
||||
endif
|
||||
endif
|
||||
ifdef UNITDIR_FCL-BASE
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_FCL-BASE)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_FCL-XML
|
||||
PACKAGEDIR_FCL-XML:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_FCL-XML),)
|
||||
ifneq ($(wildcard $(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)),)
|
||||
UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)/units/$(TARGETSUFFIX)
|
||||
else
|
||||
UNITDIR_FCL-XML=$(PACKAGEDIR_FCL-XML)
|
||||
endif
|
||||
ifdef CHECKDEPEND
|
||||
$(PACKAGEDIR_FCL-XML)/$(FPCMADE):
|
||||
$(MAKE) -C $(PACKAGEDIR_FCL-XML) $(FPCMADE)
|
||||
override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-XML)/$(FPCMADE)
|
||||
endif
|
||||
else
|
||||
PACKAGEDIR_FCL-XML=
|
||||
UNITDIR_FCL-XML:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-xml/Package.fpc,$(UNITSDIR)))))
|
||||
ifneq ($(UNITDIR_FCL-XML),)
|
||||
UNITDIR_FCL-XML:=$(firstword $(UNITDIR_FCL-XML))
|
||||
else
|
||||
UNITDIR_FCL-XML=
|
||||
endif
|
||||
endif
|
||||
ifdef UNITDIR_FCL-XML
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_FCL-XML)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_CHM
|
||||
PACKAGEDIR_CHM:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /chm/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_CHM),)
|
||||
ifneq ($(wildcard $(PACKAGEDIR_CHM)/units/$(TARGETSUFFIX)),)
|
||||
UNITDIR_CHM=$(PACKAGEDIR_CHM)/units/$(TARGETSUFFIX)
|
||||
else
|
||||
UNITDIR_CHM=$(PACKAGEDIR_CHM)
|
||||
endif
|
||||
ifdef CHECKDEPEND
|
||||
$(PACKAGEDIR_CHM)/$(FPCMADE):
|
||||
$(MAKE) -C $(PACKAGEDIR_CHM) $(FPCMADE)
|
||||
override ALLDEPENDENCIES+=$(PACKAGEDIR_CHM)/$(FPCMADE)
|
||||
endif
|
||||
else
|
||||
PACKAGEDIR_CHM=
|
||||
UNITDIR_CHM:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /chm/Package.fpc,$(UNITSDIR)))))
|
||||
ifneq ($(UNITDIR_CHM),)
|
||||
UNITDIR_CHM:=$(firstword $(UNITDIR_CHM))
|
||||
else
|
||||
UNITDIR_CHM=
|
||||
endif
|
||||
endif
|
||||
ifdef UNITDIR_CHM
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_CHM)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_GRAPH
|
||||
PACKAGEDIR_GRAPH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /graph/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_GRAPH),)
|
||||
@ -2082,6 +2342,58 @@ ifdef UNITDIR_GRAPH
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_GRAPH)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_WINUNITS-BASE
|
||||
PACKAGEDIR_WINUNITS-BASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /winunits-base/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_WINUNITS-BASE),)
|
||||
ifneq ($(wildcard $(PACKAGEDIR_WINUNITS-BASE)/units/$(TARGETSUFFIX)),)
|
||||
UNITDIR_WINUNITS-BASE=$(PACKAGEDIR_WINUNITS-BASE)/units/$(TARGETSUFFIX)
|
||||
else
|
||||
UNITDIR_WINUNITS-BASE=$(PACKAGEDIR_WINUNITS-BASE)
|
||||
endif
|
||||
ifdef CHECKDEPEND
|
||||
$(PACKAGEDIR_WINUNITS-BASE)/$(FPCMADE):
|
||||
$(MAKE) -C $(PACKAGEDIR_WINUNITS-BASE) $(FPCMADE)
|
||||
override ALLDEPENDENCIES+=$(PACKAGEDIR_WINUNITS-BASE)/$(FPCMADE)
|
||||
endif
|
||||
else
|
||||
PACKAGEDIR_WINUNITS-BASE=
|
||||
UNITDIR_WINUNITS-BASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /winunits-base/Package.fpc,$(UNITSDIR)))))
|
||||
ifneq ($(UNITDIR_WINUNITS-BASE),)
|
||||
UNITDIR_WINUNITS-BASE:=$(firstword $(UNITDIR_WINUNITS-BASE))
|
||||
else
|
||||
UNITDIR_WINUNITS-BASE=
|
||||
endif
|
||||
endif
|
||||
ifdef UNITDIR_WINUNITS-BASE
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_WINUNITS-BASE)
|
||||
endif
|
||||
endif
|
||||
ifdef REQUIRE_PACKAGES_WINUNITS-JEDI
|
||||
PACKAGEDIR_WINUNITS-JEDI:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /winunits-jedi/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifneq ($(PACKAGEDIR_WINUNITS-JEDI),)
|
||||
ifneq ($(wildcard $(PACKAGEDIR_WINUNITS-JEDI)/units/$(TARGETSUFFIX)),)
|
||||
UNITDIR_WINUNITS-JEDI=$(PACKAGEDIR_WINUNITS-JEDI)/units/$(TARGETSUFFIX)
|
||||
else
|
||||
UNITDIR_WINUNITS-JEDI=$(PACKAGEDIR_WINUNITS-JEDI)
|
||||
endif
|
||||
ifdef CHECKDEPEND
|
||||
$(PACKAGEDIR_WINUNITS-JEDI)/$(FPCMADE):
|
||||
$(MAKE) -C $(PACKAGEDIR_WINUNITS-JEDI) $(FPCMADE)
|
||||
override ALLDEPENDENCIES+=$(PACKAGEDIR_WINUNITS-JEDI)/$(FPCMADE)
|
||||
endif
|
||||
else
|
||||
PACKAGEDIR_WINUNITS-JEDI=
|
||||
UNITDIR_WINUNITS-JEDI:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /winunits-jedi/Package.fpc,$(UNITSDIR)))))
|
||||
ifneq ($(UNITDIR_WINUNITS-JEDI),)
|
||||
UNITDIR_WINUNITS-JEDI:=$(firstword $(UNITDIR_WINUNITS-JEDI))
|
||||
else
|
||||
UNITDIR_WINUNITS-JEDI=
|
||||
endif
|
||||
endif
|
||||
ifdef UNITDIR_WINUNITS-JEDI
|
||||
override COMPILER_UNITDIR+=$(UNITDIR_WINUNITS-JEDI)
|
||||
endif
|
||||
endif
|
||||
ifndef NOCPUDEF
|
||||
override FPCOPTDEF=$(ARCH)
|
||||
endif
|
||||
|
@ -21,7 +21,7 @@ fpcpackage=y
|
||||
options=-Sg
|
||||
|
||||
[require]
|
||||
packages=fv gdbint regexpr
|
||||
packages=fv gdbint regexpr chm
|
||||
packages_go32v2=graph
|
||||
libc=y
|
||||
|
||||
|
186
ide/wchmhwrap.pas
Normal file
186
ide/wchmhwrap.pas
Normal file
@ -0,0 +1,186 @@
|
||||
{
|
||||
This file is part of the Free Pascal Integrated Development Environment
|
||||
Copyright (c) 2008 by Marco van de Voort
|
||||
|
||||
Wrapper for CHM reading to avoid having to import Delphi units into whtmlhlp,
|
||||
which can cause all kinds of namespace conflicts.
|
||||
|
||||
See the file COPYING.FPC, 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 wchmhwrap;
|
||||
|
||||
interface
|
||||
{$Mode Delphi}
|
||||
|
||||
Uses wutils,whelp,whtml,SysUtils,ChmReader,ChmSiteMap,Classes;
|
||||
|
||||
Type
|
||||
// TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;
|
||||
|
||||
TChmWrapper = Class
|
||||
private
|
||||
ffs : Classes.TFileStream;
|
||||
fchmr : TChmReader;
|
||||
findex: TChmSiteMap;
|
||||
ftopic: TChmSiteMap;
|
||||
floaded : boolean;
|
||||
public
|
||||
constructor Create(name:String);
|
||||
function LoadIndex(id:integer;TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;helpfacility:PHelpFacility):boolean;
|
||||
function GetTopic(name:string):PMemoryTextFile;
|
||||
destructor Destroy;override;
|
||||
end;
|
||||
|
||||
function combinepaths(relpath,basepath:String):String;
|
||||
|
||||
implementation
|
||||
|
||||
function combinepaths(relpath,basepath:String):String;
|
||||
|
||||
begin
|
||||
{$ifdef combinedebug}
|
||||
debugmessage({$i %file%},'combine in "'+relpath+'" and "'+basepath+'"'+{$i %line%},1,1);
|
||||
{$endif}
|
||||
|
||||
if relpath='' then exit;
|
||||
if relpath[length(relpath)]<>'/' Then
|
||||
basepath:=extractfiledir(basepath);
|
||||
while (length(relpath)>0) and (copy(relpath,1,3)='../') do
|
||||
begin
|
||||
basepath:=extractfiledir(basepath);
|
||||
delete(relpath,1,3);
|
||||
end;
|
||||
|
||||
{$ifdef combinedebug}
|
||||
debugmessage({$i %file%},'combine out "'+relpath+'" and "'+basepath+'"'+{$i %line%},1,1);
|
||||
{$endif}
|
||||
|
||||
result:=basepath+relpath;
|
||||
end;
|
||||
|
||||
|
||||
Constructor TChmWrapper.Create(name:string);
|
||||
|
||||
begin
|
||||
ffs:=Classes.TFileStream.create(name,fmOpenRead);
|
||||
fchmr:=TChmReader.Create(ffs,True);
|
||||
findex:=nil;
|
||||
if not fchmr.isvalidfile then
|
||||
begin
|
||||
freeandnil(fchmr);
|
||||
freeandnil(ffs);
|
||||
exit;
|
||||
end;
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: before sitemap creation '+{$i %line%},1,1);
|
||||
{$endif}
|
||||
findex:=TChmSiteMap.create(stindex);
|
||||
ftopic:=TChmSiteMap.create(sttoc);
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: after sitemap creation '+{$i %line%}+inttostr(ptrint(findex)),1,1);
|
||||
{$endif}
|
||||
floaded:=false;
|
||||
end;
|
||||
|
||||
function TChmWrapper.LoadIndex(id:integer;TopicLinks: PTopicLinkCollection;IndexEntries : PUnsortedIndexEntryCollection;helpfacility:PHelpFacility):boolean;
|
||||
function FormatAlias(Alias: string): string;
|
||||
begin
|
||||
if Assigned(HelpFacility) then
|
||||
if length(Alias)>HelpFacility^.IndexTabSize-4 then
|
||||
Alias:=Trim(copy(Alias,1,HelpFacility^.IndexTabSize-4-2))+'..';
|
||||
// if (length(alias)>0) and (alias[1]<>'/') then Alias:='/'+alias;
|
||||
FormatAlias:=Alias;
|
||||
end;
|
||||
|
||||
var
|
||||
m : Classes.TMemoryStream;
|
||||
i,j : integer;
|
||||
item : TChmSiteMapItem;
|
||||
tli: integer;
|
||||
begin
|
||||
result:=false;
|
||||
if not assigned (fchmr) then exit;
|
||||
if floaded then exit;
|
||||
// m:=Classes.TMemorystream.create;
|
||||
m:=fchmr.getobject(fchmr.indexfile);
|
||||
try
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: before loadfromstream '+{$i %line%},1,1);
|
||||
debugmessage({$i %file%},'TCHMWrapper: stream size loaded'+inttostr(m.size),1,1);
|
||||
{$endif}
|
||||
findex.loadfromStream(m);
|
||||
finally
|
||||
freeandnil(m);
|
||||
end;
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: loadindex after final '+{$i %line%},1,1);
|
||||
{$endif}
|
||||
|
||||
tli:=TopicLinks^.AddItem(fchmr.defaultpage);
|
||||
TLI:=EncodeHTMLCtx(ID,TLI+1);
|
||||
IndexEntries^.Insert(NewIndexEntry( FormatAlias('Table of contents'),ID,TLI));
|
||||
for i:=0 to findex.items.count-1 do
|
||||
begin
|
||||
item:=findex.items.item[i];
|
||||
tli:=TopicLinks^.AddItem('/'+item.local);
|
||||
TLI:=EncodeHTMLCtx(ID,TLI+1);
|
||||
IndexEntries^.Insert(NewIndexEntry( FormatAlias(item.text),ID,TLI));
|
||||
end;
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: endloadindex '+{$i %line%},1,1);
|
||||
{$endif}
|
||||
floaded:=true;
|
||||
result:=true;
|
||||
end;
|
||||
|
||||
function TChmWrapper.GetTopic(name:string):PMemoryTextFile;
|
||||
|
||||
var
|
||||
m : Classes.TMemorystream;
|
||||
linedata:Classes.TStringList;
|
||||
i : integer;
|
||||
begin
|
||||
result:=nil;
|
||||
if not assigned(fchmr) or (name='') then exit;
|
||||
|
||||
If name[1]<>'/' Then
|
||||
name:='/'+name;
|
||||
linedata:=Classes.TStringList.create;
|
||||
try
|
||||
{$ifdef wdebug}
|
||||
debugmessage({$i %file%},'TCHMWrapper: Getting file '+name+' '+{$i %line%},1,1);
|
||||
{$endif}
|
||||
// if uppercase(name)='TABLE OF CONTENTS' Then
|
||||
// m:=fchmr.getobject(fchmr.tocfile)
|
||||
// else
|
||||
m:=fchmr.getobject(name);
|
||||
|
||||
if not assigned(m) then exit;
|
||||
linedata.loadfromstream(m);
|
||||
result:=new(PMemoryTextFile,Init);
|
||||
for i:=0 to linedata.count-1 do
|
||||
result.addline(linedata[i]);
|
||||
finally
|
||||
m.free;
|
||||
linedata.free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
destructor TChmWrapper.Destroy;
|
||||
|
||||
begin
|
||||
freeandnil(ftopic);
|
||||
freeandnil(findex);
|
||||
freeandnil(fchmr);
|
||||
end;
|
||||
// m:=r.getobject(r.indexfile);
|
||||
// siteindex.loadfromStream(m);
|
||||
|
||||
end.
|
@ -115,6 +115,18 @@ type
|
||||
procedure DocHorizontalRuler; virtual;
|
||||
end;
|
||||
|
||||
Type
|
||||
PTopicLinkCollection = ^TTopicLinkCollection;
|
||||
TTopicLinkCollection = object(TStringCollection)
|
||||
procedure Insert(Item: Pointer); virtual;
|
||||
function At(Index: sw_Integer): PString;
|
||||
function AddItem(Item: string): integer;
|
||||
end;
|
||||
|
||||
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
|
||||
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
@ -859,6 +871,47 @@ procedure THTMLParser.DocHorizontalRuler;
|
||||
begin
|
||||
end;
|
||||
|
||||
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
|
||||
var Ctx: longint;
|
||||
begin
|
||||
Ctx:=(longint(FileID) shl 16)+LinkNo;
|
||||
EncodeHTMLCtx:=Ctx;
|
||||
end;
|
||||
|
||||
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
|
||||
begin
|
||||
if (Ctx shr 16)=0 then
|
||||
begin
|
||||
FileID:=$ffff; LinkNo:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FileID:=Ctx shr 16; LinkNo:=Ctx and $ffff;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTopicLinkCollection.Insert(Item: Pointer);
|
||||
begin
|
||||
AtInsert(Count,Item);
|
||||
end;
|
||||
|
||||
function TTopicLinkCollection.At(Index: sw_Integer): PString;
|
||||
begin
|
||||
At:=inherited At(Index);
|
||||
end;
|
||||
|
||||
function TTopicLinkCollection.AddItem(Item: string): integer;
|
||||
var Idx: sw_integer;
|
||||
begin
|
||||
if Item='' then Idx:=-1 else
|
||||
if Search(@Item,Idx)=false then
|
||||
begin
|
||||
AtInsert(Count,NewStr(Item));
|
||||
Idx:=Count-1;
|
||||
end;
|
||||
AddItem:=Idx;
|
||||
end;
|
||||
|
||||
|
||||
END.
|
||||
|
382
ide/whtmlhlp.pas
382
ide/whtmlhlp.pas
@ -14,11 +14,12 @@ unit WHTMLHlp;
|
||||
|
||||
interface
|
||||
|
||||
uses Objects,WHTML,WAnsi,WHelp;
|
||||
uses Objects,WHTML,WAnsi,WHelp,WChmHWrap;
|
||||
|
||||
const
|
||||
extHTML = '.htm';
|
||||
extHTMLIndex = '.htx';
|
||||
extCHM = '.chm';
|
||||
|
||||
ListIndent = 2;
|
||||
DefIndent = 4;
|
||||
@ -28,13 +29,6 @@ const
|
||||
type
|
||||
THTMLSection = (hsNone,hsHeading1,hsHeading2,hsHeading3,hsHeading4,hsHeading5,hsHeading6);
|
||||
|
||||
PTopicLinkCollection = ^TTopicLinkCollection;
|
||||
TTopicLinkCollection = object(TStringCollection)
|
||||
procedure Insert(Item: Pointer); virtual;
|
||||
function At(Index: sw_Integer): PString;
|
||||
function AddItem(Item: string): integer;
|
||||
end;
|
||||
|
||||
TParagraphAlign = (paLeft,paCenter,paRight);
|
||||
|
||||
PTableElement = ^TTableElement;
|
||||
@ -116,6 +110,7 @@ type
|
||||
procedure DocTableHeaderItem(Entered: boolean); virtual;
|
||||
procedure DocTableItem(Entered: boolean); virtual;
|
||||
procedure DocHorizontalRuler; virtual;
|
||||
function CanonicalizeURL(const Base,Relative:String):string; virtual;
|
||||
public
|
||||
function GetSectionColor(Section: THTMLSection; var Color: byte): boolean; virtual;
|
||||
private
|
||||
@ -148,24 +143,28 @@ type
|
||||
procedure AddCharAt(C: char;AtPtr : sw_word);
|
||||
function AddTextAt(const S: string;AtPtr : sw_word) : sw_word;
|
||||
function ComputeTextLength(TStart,TEnd : sw_word) : sw_word;
|
||||
|
||||
end;
|
||||
|
||||
PCHMTopicRenderer = ^TCHMTopicRenderer;
|
||||
TCHMTopicRenderer = object(THTMLTopicRenderer)
|
||||
function CanonicalizeURL(const Base,Relative:String):string; virtual;
|
||||
end;
|
||||
|
||||
PCustomHTMLHelpFile = ^TCustomHTMLHelpFile;
|
||||
TCustomHTMLHelpFile = object(THelpFile)
|
||||
constructor Init(AID: word);
|
||||
destructor Done; virtual;
|
||||
public
|
||||
Renderer: PHTMLTopicRenderer;
|
||||
function GetTopicInfo(T: PTopic) : string; virtual;
|
||||
function SearchTopic(HelpCtx: THelpCtx): PTopic; virtual;
|
||||
function ReadTopic(T: PTopic): boolean; virtual;
|
||||
private
|
||||
Renderer: PHTMLTopicRenderer;
|
||||
DefaultFileName: string;
|
||||
CurFileName: string;
|
||||
TopicLinks: PTopicLinkCollection;
|
||||
end;
|
||||
|
||||
|
||||
PHTMLHelpFile = ^THTMLHelpFile;
|
||||
THTMLHelpFile = object(TCustomHTMLHelpFile)
|
||||
constructor Init(AFileName: string; AID: word; ATOCEntry: string);
|
||||
@ -175,6 +174,19 @@ type
|
||||
TOCEntry: string;
|
||||
end;
|
||||
|
||||
PCHMHelpFile = ^TCHMHelpFile;
|
||||
TCHMHelpFile = object(TCustomHTMLHelpFile)
|
||||
constructor Init(AFileName: string; AID: word);
|
||||
destructor Done; virtual;
|
||||
public
|
||||
function LoadIndex: boolean; virtual;
|
||||
function ReadTopic(T: PTopic): boolean; virtual;
|
||||
function GetTopicInfo(T: PTopic) : string; virtual;
|
||||
function SearchTopic(HelpCtx: THelpCtx): PTopic; virtual;
|
||||
private
|
||||
Chmw: TCHMWrapper;
|
||||
end;
|
||||
|
||||
PHTMLIndexHelpFile = ^THTMLIndexHelpFile;
|
||||
THTMLIndexHelpFile = object(TCustomHTMLHelpFile)
|
||||
constructor Init(AFileName: string; AID: word);
|
||||
@ -527,25 +539,6 @@ begin
|
||||
DefHTMLGetSectionColor:=false;
|
||||
end;
|
||||
|
||||
function EncodeHTMLCtx(FileID: integer; LinkNo: word): longint;
|
||||
var Ctx: longint;
|
||||
begin
|
||||
Ctx:=(longint(FileID) shl 16)+LinkNo;
|
||||
EncodeHTMLCtx:=Ctx;
|
||||
end;
|
||||
|
||||
procedure DecodeHTMLCtx(Ctx: longint; var FileID: word; var LinkNo: word);
|
||||
begin
|
||||
if (Ctx shr 16)=0 then
|
||||
begin
|
||||
FileID:=$ffff; LinkNo:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FileID:=Ctx shr 16; LinkNo:=Ctx and $ffff;
|
||||
end;
|
||||
end;
|
||||
|
||||
function CharStr(C: char; Count: byte): string;
|
||||
var S: string;
|
||||
begin
|
||||
@ -554,27 +547,6 @@ begin
|
||||
CharStr:=S;
|
||||
end;
|
||||
|
||||
procedure TTopicLinkCollection.Insert(Item: Pointer);
|
||||
begin
|
||||
AtInsert(Count,Item);
|
||||
end;
|
||||
|
||||
function TTopicLinkCollection.At(Index: sw_Integer): PString;
|
||||
begin
|
||||
At:=inherited At(Index);
|
||||
end;
|
||||
|
||||
function TTopicLinkCollection.AddItem(Item: string): integer;
|
||||
var Idx: sw_integer;
|
||||
begin
|
||||
if Item='' then Idx:=-1 else
|
||||
if Search(@Item,Idx)=false then
|
||||
begin
|
||||
AtInsert(Count,NewStr(Item));
|
||||
Idx:=Count-1;
|
||||
end;
|
||||
AddItem:=Idx;
|
||||
end;
|
||||
|
||||
function THTMLTopicRenderer.DocAddTextChar(C: char): boolean;
|
||||
var Added: boolean;
|
||||
@ -662,9 +634,9 @@ begin
|
||||
if Name<>'' then
|
||||
begin
|
||||
Topic^.NamedMarks^.InsertStr(Name);
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage('',' Adding Name "'+Name+'"',1,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
AddChar(hscNamedMark);
|
||||
end;
|
||||
if (HRef<>'')then
|
||||
@ -674,13 +646,17 @@ begin
|
||||
begin
|
||||
InAnchor:=true;
|
||||
AddChar(hscLink);
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage('',' Adding Link1 "'+HRef+'"'+' "'+url+'"',1,1);
|
||||
{$endif WDEBUG}
|
||||
|
||||
if pos('#',HRef)=1 then
|
||||
Href:=NameAndExtOf(GetFilename)+Href;
|
||||
HRef:=CompleteURL(URL,HRef);
|
||||
HRef:=canonicalizeURL(URL,HRef);
|
||||
LinkIndexes[LinkPtr]:=TopicLinks^.AddItem(HRef);
|
||||
{$ifdef DEBUG}
|
||||
DebugMessage('',' Adding Link "'+HRef+'"',1,1);
|
||||
{$endif DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage('',' Adding Link2 "'+HRef+'"',1,1);
|
||||
{$endif WDEBUG}
|
||||
Inc(LinkPtr);
|
||||
end;
|
||||
end;
|
||||
@ -694,10 +670,10 @@ end;
|
||||
|
||||
procedure THTMLTopicRenderer.DocUnknownTag;
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage('',' Unknown tag "'+TagName+'" params "'+
|
||||
TagParams+'"',1,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
end;
|
||||
|
||||
procedure DecodeAlign(Align: string; var PAlign: TParagraphAlign);
|
||||
@ -740,6 +716,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
Function THTMLTopicRenderer.CanonicalizeURL(const Base,Relative:String):string;
|
||||
// uses info from filesystem (curdir) -> overriden for CHM.
|
||||
begin
|
||||
CanonicalizeURL:=CompleteURL(Base,relative);
|
||||
end;
|
||||
|
||||
procedure THTMLTopicRenderer.DocParagraph(Entered: boolean);
|
||||
var Align: string;
|
||||
begin
|
||||
@ -776,20 +758,20 @@ var
|
||||
begin
|
||||
if pos('tex4ht:',Comment)=0 then
|
||||
exit;
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,'tex4ht comment "'
|
||||
+Comment+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
if SuppressOutput then
|
||||
begin
|
||||
if (pos(SuppressUntil,Comment)=0) then
|
||||
exit
|
||||
else
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Found '+SuppressUntil+'comment "'
|
||||
+Comment+'" SuppressOuput reset to false',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
SuppressOutput:=false;
|
||||
SuppressUntil:='';
|
||||
end;
|
||||
@ -797,20 +779,20 @@ begin
|
||||
if (pos('tex4ht:graphics ',Comment)>0) and
|
||||
LastAnsiLoadFailed then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Using tex4ht comment "'
|
||||
+Comment+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
{ Try again with this info }
|
||||
TagParams:=Comment;
|
||||
DocImage;
|
||||
end;
|
||||
if (pos('tex4ht:syntaxdiagram ',Comment)>0) then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Using tex4ht:syntaxdiagram comment "'
|
||||
+Comment+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
{ Try again with this info }
|
||||
TagParams:=Comment;
|
||||
DocImage;
|
||||
@ -822,10 +804,10 @@ begin
|
||||
end;
|
||||
if (pos('tex4ht:mysyntdiag ',Comment)>0) then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Using tex4ht:mysyntdiag comment "'
|
||||
+Comment+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
{ Try again with this info }
|
||||
TagParams:=Comment;
|
||||
DocGetTagParam('SRC',src);
|
||||
@ -849,16 +831,16 @@ var Name,Src,Alt,SrcLine: string;
|
||||
begin
|
||||
if SuppressOutput then
|
||||
exit;
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
if not DocGetTagParam('NAME',Name) then
|
||||
Name:='<No name>';
|
||||
DebugMessage(GetFileName,' Image "'+Name+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
if DocGetTagParam('SRC',src) then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Image source tag "'+Src+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
if src<>'' then
|
||||
begin
|
||||
src:=CompleteURL(URL,src);
|
||||
@ -866,24 +848,24 @@ begin
|
||||
Try to see if a file with same name and extension .git
|
||||
exists PM }
|
||||
src:=DirAndNameOf(src)+'.ans';
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
if not ExistsFile(src) then
|
||||
begin
|
||||
DocGetTagParam('SRC',src);
|
||||
src:=DirAndNameOf(src)+'.ans';
|
||||
src:=CompleteURL(DirOf(URL)+'../',src);
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' Trying "'+Src+'"',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif wDEBUG}
|
||||
end;
|
||||
if not ExistsFile(src) then
|
||||
begin
|
||||
LastAnsiLoadFailed:=true;
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' "'+Src+'" not found',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -908,9 +890,9 @@ begin
|
||||
if not ExistsFile(src) then
|
||||
begin
|
||||
LastAnsiLoadFailed:=true;
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(GetFileName,' "'+Src+'" not found',Line,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -1336,6 +1318,11 @@ begin
|
||||
BuildTopic:=OK;
|
||||
end;
|
||||
|
||||
Function TCHMTopicRenderer.CanonicalizeURL(const Base,Relative:String):string;
|
||||
begin
|
||||
CanonicalizeUrl:=combinepaths(relative,base);
|
||||
end;
|
||||
|
||||
constructor TCustomHTMLHelpFile.Init(AID: word);
|
||||
begin
|
||||
inherited Init(AID);
|
||||
@ -1388,10 +1375,14 @@ begin
|
||||
else
|
||||
begin
|
||||
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking before for ',1,1);
|
||||
{$endif WDEBUG}
|
||||
|
||||
Link:=FormatPath(Link);
|
||||
{$ifdef DEBUG_WHTMLHLP}
|
||||
DebugMessage(Link,' looking for',1,1);
|
||||
{$endif DEBUG_WHTMLHLP}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking after for ',1,1);
|
||||
{$endif WDEBUG}
|
||||
P:=Pos('#',Link);
|
||||
if P>0 then
|
||||
begin
|
||||
@ -1425,10 +1416,15 @@ begin
|
||||
else
|
||||
begin
|
||||
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking before for ',1,1);
|
||||
{$endif WDEBUG}
|
||||
|
||||
Link:=FormatPath(Link);
|
||||
{$ifdef DEBUG}
|
||||
DebugMessage(Link,' looking for',1,1);
|
||||
{$endif DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking after for ',1,1);
|
||||
{$endif WDEBUG}
|
||||
|
||||
P:=Pos('#',Link);
|
||||
if P>0 then
|
||||
begin
|
||||
@ -1450,18 +1446,18 @@ begin
|
||||
end;
|
||||
if (HTMLFile=nil) then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' filename not known :(',1,1);
|
||||
{$endif DEBUG}
|
||||
end;
|
||||
if (p>1) and (HTMLFile=nil) then
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
if p>0 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
|
||||
else
|
||||
DebugMessage(Name,Link+' not found',1,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
New(HTMLFile, Init);
|
||||
HTMLFile^.AddLine('<HEAD><TITLE>'+msg_pagenotavailable+'</TITLE></HEAD>');
|
||||
HTMLFile^.AddLine(
|
||||
@ -1474,12 +1470,12 @@ begin
|
||||
CurFileName:=Name
|
||||
else
|
||||
begin
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
if p>0 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
|
||||
else
|
||||
DebugMessage(Name,Link+' not found',1,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
end;
|
||||
if HTMLFile<>nil then Dispose(HTMLFile, Done);
|
||||
if BookMark='' then
|
||||
@ -1487,10 +1483,10 @@ begin
|
||||
else
|
||||
begin
|
||||
P:=T^.GetNamedMarkIndex(BookMark);
|
||||
{$ifdef DEBUG}
|
||||
{$IFDEF WDEBUG}
|
||||
if p=-1 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' bookmark not found',1,1);
|
||||
{$endif DEBUG}
|
||||
{$endif WDEBUG}
|
||||
T^.StartNamedMark:=P+1;
|
||||
end;
|
||||
end;
|
||||
@ -1576,6 +1572,194 @@ begin
|
||||
LoadIndex:=OK;
|
||||
end;
|
||||
|
||||
constructor TChmHelpFile.Init(AFileName: string; AID: word);
|
||||
begin
|
||||
if inherited Init(AID)=false then Fail;
|
||||
renderer^.done;
|
||||
renderer:=New(PCHMTopicRenderer, Init);
|
||||
DefaultFileName:=AFileName;
|
||||
if (DefaultFileName='') or not ExistsFile(DefaultFilename) then
|
||||
begin
|
||||
Done;
|
||||
Fail;
|
||||
end
|
||||
else
|
||||
chmw:=TCHMWrapper.Create(DefaultFileName);
|
||||
end;
|
||||
|
||||
function TChmHelpFile.LoadIndex: boolean;
|
||||
begin
|
||||
loadindex:=false;
|
||||
if assigned(chmw) then
|
||||
loadindex:=chmw.loadindex(id,TopicLinks,IndexEntries,helpfacility);
|
||||
end;
|
||||
|
||||
function TChmHelpFile.SearchTopic(HelpCtx: THelpCtx): PTopic;
|
||||
function MatchCtx(P: PTopic): boolean;
|
||||
begin
|
||||
MatchCtx:=P^.HelpCtx=HelpCtx;
|
||||
end;
|
||||
var FileID,LinkNo: word;
|
||||
P: PTopic;
|
||||
FName: string;
|
||||
begin
|
||||
DecodeHTMLCtx(HelpCtx,FileID,LinkNo);
|
||||
if (HelpCtx<>0) and (FileID<>ID) then P:=nil else
|
||||
if (FileID=ID) and (LinkNo>TopicLinks^.Count) then P:=nil else
|
||||
begin
|
||||
P:=Topics^.FirstThat(@MatchCtx);
|
||||
if P=nil then
|
||||
begin
|
||||
if LinkNo=0 then
|
||||
FName:=DefaultFileName
|
||||
else
|
||||
FName:=TopicLinks^.At(LinkNo-1)^;
|
||||
P:=NewTopic(ID,HelpCtx,0,FName,nil,0);
|
||||
Topics^.Insert(P);
|
||||
end;
|
||||
end;
|
||||
SearchTopic:=P;
|
||||
end;
|
||||
|
||||
function TChmHelpFile.GetTopicInfo(T: PTopic) : string;
|
||||
var OK: boolean;
|
||||
Name: string;
|
||||
Link,Bookmark: string;
|
||||
P: sw_integer;
|
||||
begin
|
||||
Bookmark:='';
|
||||
OK:=T<>nil;
|
||||
if OK then
|
||||
begin
|
||||
if T^.HelpCtx=0 then
|
||||
begin
|
||||
Name:=DefaultFileName;
|
||||
P:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
|
||||
Link:=FormatPath(Link);
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking for',1,1);
|
||||
{$endif WDEBUG}
|
||||
P:=Pos('#',Link);
|
||||
if P>0 then
|
||||
begin
|
||||
Bookmark:=copy(Link,P+1,length(Link));
|
||||
Link:=copy(Link,1,P-1);
|
||||
end;
|
||||
{ if CurFileName='' then Name:=Link else
|
||||
Name:=CompletePath(CurFileName,Link);}
|
||||
Name:=Link;
|
||||
end;
|
||||
end;
|
||||
GetTopicInfo:=Name+'#'+BookMark;
|
||||
end;
|
||||
|
||||
function TChmHelpFile.ReadTopic(T: PTopic): boolean;
|
||||
var OK: boolean;
|
||||
HTMLFile: PMemoryTextFile;
|
||||
Name: string;
|
||||
Link,Bookmark: string;
|
||||
P: sw_integer;
|
||||
begin
|
||||
Bookmark:='';
|
||||
OK:=T<>nil;
|
||||
if OK then
|
||||
begin
|
||||
if T^.HelpCtx=0 then
|
||||
begin
|
||||
Name:=DefaultFileName;
|
||||
P:=0;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Link:=TopicLinks^.At((T^.HelpCtx and $ffff)-1)^;
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking for',1,1);
|
||||
{$endif WDEBUG}
|
||||
|
||||
Link:=FormatPath(Link);
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' looking for',1,1);
|
||||
{$endif WDEBUG}
|
||||
P:=Pos('#',Link);
|
||||
if P>0 then
|
||||
begin
|
||||
Bookmark:=copy(Link,P+1,length(Link));
|
||||
Link:=copy(Link,1,P-1);
|
||||
end;
|
||||
{ if CurFileName='' then Name:=Link else
|
||||
Name:=CompletePath(CurFileName,Link);}
|
||||
Name:=Link;
|
||||
end;
|
||||
HTMLFile:=nil;
|
||||
if Name<>'' then
|
||||
HTMLFile:=chmw.gettopic(name);
|
||||
|
||||
if (HTMLFile=nil) and (CurFileName<>'') then
|
||||
begin
|
||||
Name:=CurFileName;
|
||||
HTMLFile:=chmw.gettopic(name);
|
||||
end;
|
||||
if (HTMLFile=nil) then
|
||||
begin
|
||||
{$IFDEF WDEBUG}
|
||||
DebugMessage(Link,' filename not known :(',1,1);
|
||||
{$endif WDEBUG}
|
||||
end;
|
||||
if (p>1) and (HTMLFile=nil) then
|
||||
begin
|
||||
{$IFDEF WDEBUG}
|
||||
if p>0 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
|
||||
else
|
||||
DebugMessage(Name,Link+' not found',1,1);
|
||||
{$endif WDEBUG}
|
||||
New(HTMLFile, Init);
|
||||
HTMLFile^.AddLine('<HEAD><TITLE>'+msg_pagenotavailable+'</TITLE></HEAD>');
|
||||
HTMLFile^.AddLine(
|
||||
'<BODY>'+
|
||||
FormatStrStr(msg_cantaccessurl,Name)+'<br><br>'+
|
||||
'</BODY>');
|
||||
end;
|
||||
OK:=Renderer^.BuildTopic(T,Name,HTMLFile,TopicLinks);
|
||||
if OK then
|
||||
CurFileName:=Name
|
||||
else
|
||||
begin
|
||||
{$IFDEF WDEBUG}
|
||||
if p>0 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' not found',1,1)
|
||||
else
|
||||
DebugMessage(Name,Link+' not found',1,1);
|
||||
{$endif WDEBUG}
|
||||
end;
|
||||
if HTMLFile<>nil then Dispose(HTMLFile, Done);
|
||||
if BookMark='' then
|
||||
T^.StartNamedMark:=0
|
||||
else
|
||||
begin
|
||||
P:=T^.GetNamedMarkIndex(BookMark);
|
||||
{$IFDEF WDEBUG}
|
||||
if p=-1 then
|
||||
DebugMessage(Name,Link+'#'+Bookmark+' bookmark not found',1,1);
|
||||
{$endif WDEBUG}
|
||||
T^.StartNamedMark:=P+1;
|
||||
end;
|
||||
end;
|
||||
ReadTopic:=OK;
|
||||
end;
|
||||
|
||||
destructor TChmHelpFile.done;
|
||||
|
||||
begin
|
||||
if assigned(chmw) then
|
||||
chmw.free;
|
||||
inherited Done;
|
||||
end;
|
||||
|
||||
function CreateProcHTML(const FileName,Param: string;Index : longint): PHelpFile;
|
||||
var H: PHelpFile;
|
||||
begin
|
||||
@ -1585,6 +1769,15 @@ begin
|
||||
CreateProcHTML:=H;
|
||||
end;
|
||||
|
||||
function CreateProcCHM(const FileName,Param: string;Index : longint): PHelpFile;
|
||||
var H: PHelpFile;
|
||||
begin
|
||||
H:=nil;
|
||||
if CompareText(copy(ExtOf(FileName),1,length(extCHM)),extCHM)=0 then
|
||||
H:=New(PCHMHelpFile, Init(FileName,Index));
|
||||
CreateProcCHM:=H;
|
||||
end;
|
||||
|
||||
function CreateProcHTMLIndex(const FileName,Param: string;Index : longint): PHelpFile;
|
||||
var H: PHelpFile;
|
||||
begin
|
||||
@ -1598,6 +1791,7 @@ procedure RegisterHelpType;
|
||||
begin
|
||||
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTML);
|
||||
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcHTMLIndex);
|
||||
RegisterHelpFileType({$ifdef FPC}@{$endif}CreateProcCHM);
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user