summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorRoberto C. Sanchez <roberto@connexer.com>2014-03-29 10:53:33 -0400
committerRoberto C. Sanchez <roberto@connexer.com>2014-03-29 10:53:33 -0400
commit8d3fc864d094eeadc721f8e93436b37a5fab173e (patch)
tree05e201c67dca55b4ccdf90ad479a25d95e3b1e63 /examples
Imported Upstream version 1.5.3
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile.am3
-rw-r--r--examples/Makefile.in351
-rw-r--r--examples/X11/Makefile14
-rw-r--r--examples/X11/gtk--/Makefile15
-rw-r--r--examples/X11/gtk--/simplefrontend/Makefile22
-rw-r--r--examples/X11/gtk--/simplefrontend/README2
-rw-r--r--examples/X11/gtk--/simplefrontend/mods.conf465
-rw-r--r--examples/X11/gtk--/simplefrontend/simplefrontend.cpp93
-rw-r--r--examples/X11/qt/Makefile14
-rw-r--r--examples/X11/qt/simplefrontend/Makefile42
-rw-r--r--examples/X11/qt/simplefrontend/README2
-rw-r--r--examples/X11/qt/simplefrontend/SimpleFrontEndProject.cpp75
-rw-r--r--examples/X11/qt/simplefrontend/SimpleFrontEndProject.h49
-rw-r--r--examples/X11/qt/simplefrontend/main.cpp29
-rw-r--r--examples/X11/qt/simplefrontend/main.h18
-rw-r--r--examples/X11/qt/simplefrontend/mods.conf465
-rw-r--r--examples/classes/Makefile7
-rw-r--r--examples/classes/ciphercng.cpp43
-rw-r--r--examples/classes/swmgrex.cpp52
-rw-r--r--examples/cmdline/Makefile360
-rw-r--r--examples/cmdline/Makefile.am10
-rw-r--r--examples/cmdline/Makefile.in360
-rw-r--r--examples/cmdline/lookup.cpp51
-rw-r--r--examples/cmdline/search.cpp62
-rwxr-xr-xexamples/cmdline/threaded_search.cpp124
-rw-r--r--examples/windoze/Makefile14
-rw-r--r--examples/windoze/bcowl25/multimod/applsdi.icobin0 -> 766 bytes
-rw-r--r--examples/windoze/bcowl25/multimod/bookcb.cpp39
-rw-r--r--examples/windoze/bcowl25/multimod/bookcb.h34
-rw-r--r--examples/windoze/bcowl25/multimod/serchdlg.cpp104
-rw-r--r--examples/windoze/bcowl25/multimod/serchdlg.h55
-rw-r--r--examples/windoze/bcowl25/multimod/sword.idebin0 -> 68924 bytes
-rw-r--r--examples/windoze/bcowl25/multimod/swordapp.cpp135
-rw-r--r--examples/windoze/bcowl25/multimod/swordapp.def19
-rw-r--r--examples/windoze/bcowl25/multimod/swordapp.h59
-rw-r--r--examples/windoze/bcowl25/multimod/swordapp.rc369
-rw-r--r--examples/windoze/bcowl25/multimod/swordapp.rh196
-rw-r--r--examples/windoze/bcowl25/multimod/swrdabtd.cpp175
-rw-r--r--examples/windoze/bcowl25/multimod/swrdabtd.h60
-rw-r--r--examples/windoze/bcowl25/multimod/swrtdlgc.cpp213
-rw-r--r--examples/windoze/bcowl25/multimod/swrtdlgc.h71
-rw-r--r--examples/windoze/bcowl25/multimod/tversedt.cpp110
-rw-r--r--examples/windoze/bcowl25/multimod/tversedt.h50
-rw-r--r--examples/windoze/delphi20/multimo1/LogoMain.dfmbin0 -> 3868 bytes
-rw-r--r--examples/windoze/delphi20/multimo1/LogoMain.pas213
-rw-r--r--examples/windoze/delphi20/multimo1/Multimod.icobin0 -> 766 bytes
-rw-r--r--examples/windoze/delphi20/multimo1/about.dfmbin0 -> 851 bytes
-rw-r--r--examples/windoze/delphi20/multimo1/about.pas31
-rw-r--r--examples/windoze/delphi20/multimo1/multimod.dpr15
-rw-r--r--examples/windoze/delphi20/multimo2/LogoMain.dfmbin0 -> 4408 bytes
-rw-r--r--examples/windoze/delphi20/multimo2/LogoMain.pas151
-rw-r--r--examples/windoze/delphi20/multimo2/Multimod.icobin0 -> 766 bytes
-rw-r--r--examples/windoze/delphi20/multimo2/about.dfmbin0 -> 851 bytes
-rw-r--r--examples/windoze/delphi20/multimo2/about.pas31
-rw-r--r--examples/windoze/delphi20/multimo2/multimod.dpr15
-rw-r--r--examples/windoze/delphi20/multimo3/LogoMain.dfmbin0 -> 4884 bytes
-rw-r--r--examples/windoze/delphi20/multimo3/LogoMain.pas166
-rw-r--r--examples/windoze/delphi20/multimo3/about.dfmbin0 -> 1811 bytes
-rw-r--r--examples/windoze/delphi20/multimo3/about.pas31
-rw-r--r--examples/windoze/delphi20/multimo3/multimod.dpr18
-rw-r--r--examples/windoze/delphi20/multimo3/searchdlg.dfmbin0 -> 575 bytes
-rw-r--r--examples/windoze/delphi20/multimo3/searchdlg.pas35
-rw-r--r--examples/windoze/delphi20/multimo4/LogoMain.dfmbin0 -> 5659 bytes
-rw-r--r--examples/windoze/delphi20/multimo4/LogoMain.pas171
-rw-r--r--examples/windoze/delphi20/multimo4/Multimod.dpr17
-rw-r--r--examples/windoze/delphi20/multimo4/Searchdlg.dfmbin0 -> 682 bytes
-rw-r--r--examples/windoze/delphi20/multimo4/Searchdlg.pas60
-rw-r--r--examples/windoze/delphi20/multimo4/about.dfmbin0 -> 1811 bytes
-rw-r--r--examples/windoze/delphi20/multimo4/about.pas31
-rw-r--r--examples/windoze/delphi20/svertf/LogoMain.dfmbin0 -> 6567 bytes
-rw-r--r--examples/windoze/delphi20/svertf/LogoMain.pas170
-rw-r--r--examples/windoze/delphi20/svertf/Multimod.dpr17
-rw-r--r--examples/windoze/delphi20/svertf/Searchdlg.dfmbin0 -> 651 bytes
-rw-r--r--examples/windoze/delphi20/svertf/Searchdlg.pas59
-rw-r--r--examples/windoze/delphi20/svertf/about.dfmbin0 -> 1811 bytes
-rw-r--r--examples/windoze/delphi20/svertf/about.pas31
76 files changed, 5693 insertions, 0 deletions
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 0000000..f9c5127
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,3 @@
+AUTOMAKE_OPTIONS = 1.5
+
+SUBDIRS = cmdline
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644
index 0000000..036e202
--- /dev/null
+++ b/examples/Makefile.in
@@ -0,0 +1,351 @@
+# Makefile.in generated by automake 1.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+AMTAR = @AMTAR@
+AS = @AS@
+AWK = @AWK@
+CC = @CC@
+CXX = @CXX@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+MAINT = @MAINT@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+STRIP = @STRIP@
+VERSION = @VERSION@
+am__include = @am__include@
+am__quote = @am__quote@
+dir_confdef = @dir_confdef@
+enable_debug = @enable_debug@
+enable_profile = @enable_profile@
+enable_vcl = @enable_vcl@
+install_sh = @install_sh@
+target_cpu = @target_cpu@
+target_mingw32 = @target_mingw32@
+target_os = @target_os@
+target_system = @target_system@
+target_vendor = @target_vendor@
+with_conf = @with_conf@
+with_icu = @with_icu@
+with_zlib = @with_zlib@
+AUTOMAKE_OPTIONS = 1.5
+
+SUBDIRS = cmdline
+subdir = examples
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
+ uninstall-info-recursive all-recursive install-data-recursive \
+ install-exec-recursive installdirs-recursive install-recursive \
+ uninstall-recursive check-recursive installcheck-recursive
+DIST_COMMON = Makefile.am Makefile.in
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @set fnord $(MAKEFLAGS); amf=$$2; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @set fnord $(MAKEFLAGS); amf=$$2; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ cp -pR $$d/$$file $(distdir)$$dir \
+ || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d $(distdir)/$$subdir \
+ || mkdir $(distdir)/$$subdir \
+ || exit 1; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" \
+ distdir=../$(distdir)/$$subdir \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
+ clean-generic clean-libtool clean-recursive distclean \
+ distclean-generic distclean-libtool distclean-recursive \
+ distclean-tags distdir dvi dvi-am dvi-recursive info info-am \
+ info-recursive install install-am install-data install-data-am \
+ install-data-recursive install-exec install-exec-am \
+ install-exec-recursive install-info install-info-am \
+ install-info-recursive install-man install-recursive \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am installdirs-recursive maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ tags tags-recursive uninstall uninstall-am uninstall-info-am \
+ uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/X11/Makefile b/examples/X11/Makefile
new file mode 100644
index 0000000..c7eb974
--- /dev/null
+++ b/examples/X11/Makefile
@@ -0,0 +1,14 @@
+
+root := ../..
+subdirs := gtk-- qt
+pre-targets :=
+include ${root}/Makefile.cfg
+
+
+s = $(c) $(cpp)
+d = $(c:%.c=%.d) $(cpp:%.cpp=%.d)
+o = $(c:%.c=%.o) $(cpp:%.cpp=%.o)
+
+ifneq ($(nodeps),yes)
+-include $(d)
+endif
diff --git a/examples/X11/gtk--/Makefile b/examples/X11/gtk--/Makefile
new file mode 100644
index 0000000..5415f1a
--- /dev/null
+++ b/examples/X11/gtk--/Makefile
@@ -0,0 +1,15 @@
+
+root := ../../..
+subdirs := simplefrontend
+pre-targets :=
+include ${root}/Makefile.cfg
+
+
+s = $(c) $(cpp)
+d = $(c:%.c=%.d) $(cpp:%.cpp=%.d)
+o = $(c:%.c=%.o) $(cpp:%.cpp=%.o)
+
+
+ifneq ($(nodeps),yes)
+-include $(d)
+endif
diff --git a/examples/X11/gtk--/simplefrontend/Makefile b/examples/X11/gtk--/simplefrontend/Makefile
new file mode 100644
index 0000000..ca4a167
--- /dev/null
+++ b/examples/X11/gtk--/simplefrontend/Makefile
@@ -0,0 +1,22 @@
+root := ../../../..
+subdirs :=
+pre-targets :=
+targets := simplefrontend
+bin := simplefrontend
+include ${root}/Makefile.cfg
+
+cpp += simplefrontend.cpp
+
+s = $(c) $(cpp)
+d = $(c:%.c=%.d) $(cpp:%.cpp=%.d)
+o = $(c:%.c=%.o) $(cpp:%.cpp=%.o)
+l = -lsword -lgtkmm-1.1
+
+
+simplefrontend: $(o)
+ $(CC) $(LFLAGS) -o $@ simplefrontend.o $(l) $(l)
+
+
+ifneq ($(nodeps),yes)
+-include $(d)
+endif
diff --git a/examples/X11/gtk--/simplefrontend/README b/examples/X11/gtk--/simplefrontend/README
new file mode 100644
index 0000000..59b3bd0
--- /dev/null
+++ b/examples/X11/gtk--/simplefrontend/README
@@ -0,0 +1,2 @@
+Please make sure mods.conf contains a valid list of modules installed in your
+sword directory heirarchy.
diff --git a/examples/X11/gtk--/simplefrontend/mods.conf b/examples/X11/gtk--/simplefrontend/mods.conf
new file mode 100644
index 0000000..d0608b6
--- /dev/null
+++ b/examples/X11/gtk--/simplefrontend/mods.conf
@@ -0,0 +1,465 @@
+[Globals]
+AutoInstall=./newmods/
+
+[-+*Personal*+-]
+DataPath=../../../../src/modules/comments/rawfiles/personal/
+ModDrv=RawFiles
+Description=Personal Commentary
+About=This module allows you to store your own commentary.
+
+[SpanishRVA]
+DataPath=../../../../src/modules/texts/rawgbf/spanishrva/
+ModDrv=RawGBF
+Description=The New International Version
+About=\qc El texto b¡blico designado RVA es de LA SANTA BIBLIA, \par \
+VERSION REINA-VALERA ACTUALIZADA. Copyright 1982, 1986, \par \
+1987, 1989 de la Casa Bautista de Publicaciones. \par\par \
+Todos los derechos reservados. \par\par \
+El texto computarizado de la RVA para LA BIBLIA COM- \par \
+PUTARIZADA no puede ser modificado ni copiado sin per- \par \
+miso por escrito por la Casa Bautista de Publicaciones. \par\pard \
+
+
+[NASB]
+DataPath=../../../../src/modules/texts/rawgbf/nasb/
+ModDrv=RawGBF
+Description=The New American Standard Bible
+About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par \
+The New American Standard Bible \par \
+Copyright THE LOCKMAN FOUNDATION, 1960, 1962, 1963 \par \
+La Habra, Calif. \par \
+All rights in this book are reserved. \par \
+No part may be reproduced in any manner without \par \
+permission in writing from The Lockman Foundation, \par \
+except brief quotations used in connection with \par \
+a review in a magazine or newspaper. \par\pard
+
+
+
+
+[NIV]
+DataPath=../../../../src/modules/texts/rawgbf/niv/
+ModDrv=RawGBF
+Description=The New International Version
+About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par\pard \
+Quotations designated (NIV) are from \par\par \
+THE HOLY BIBLE: NEW INTERNATIONAL VERSION®. \par \
+Copyright © 1973, 1978, 1984 by International Bible Society; \
+Zondervan Publishing House. All rights reserved. \par\par \
+The "NIV" and "New International Version" trademarks are registered in \
+the United States Patent and Trademark Office by International Bible \
+Society. \par\par \
+The NIV text may be quoted in any form (written, visual, electronic, or \
+audio), up to and inclusive of five hundred (500) verses or less without \
+written permission, providing the verses quoted do not amount to a \
+complete book of the Bible, do not comprise 25% or more of the total \
+text of the work in which they are quoted, and the verses are not being \
+quoted in a commentary or other Biblical reference work. This \
+permission is contingent upon an appropriate copyright acknowledgment. \par\par \
+The NIV database is not a shareware program and may not be \
+duplicated. \par\par\pard
+
+
+[JFB]
+DataPath=../../../../src/modules/comments/hrefcom/jfb/
+ModDrv=HREFCom
+Prefix=http://ccel.wheaton.edu/j/jfb/jfb/
+;External=0
+;Prefix=file:///../../../../src/modules/comments/hrefcom/jfb/
+External=1
+Description=Jamison Faucett Brown Bible Commentary
+About=\qc Jamison Faucett Brown Commentary
+
+
+[Naves]
+DataPath=../../../../src/modules/lexdict/rawld/naves/naves
+ModDrv=RawLD
+Description=Nave's Topical Bible
+About= -=+* see the file 'naves.doc' for more details *+=-\par\par \
+\qc Nave's Topical Bible \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ Nave's Topics were originaly produced by Orville J. Nave, A.M., D.D., \
+LL.D. while serving as a Chaplin in the United States Army. He referred \
+to this work as "the result of fourteen years of delightful and untiring \
+study of the Word of God." Nave's topics were originally published in \
+the early 1900's, and a photo-offset reproduction is currently published \
+by Hendrickson, ISBN 0-917006-02-X. The title page states that this \
+work consists of 20,000+ topics and subtopics, and 100,000 references to \
+the Scriptures. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[BBE]
+DataPath=../../../../src/modules/texts/rawtext/bbe/
+ModDrv=RawText
+Description=The Bible in Basic English
+About= \qc -=+* see the file 'bbe.doc' for more details *+=-\par\par \
+1949/1964 Bible In Basic English \par \
+Public Domain -- Copy Freely \par\par\pard \
+The Bible In Basic English was printed in 1965 by Cambridge Press in \
+England. Published without any copyright notice and distributed in \
+America, this work fell immediatly and irretrievably into the Public \
+Domain in the United States according to the UCC convention of that \
+time. A call to Cambridge prior to placing this work in etext resulted \
+in an admission of this fact. \par\par \
+For more information about the text, see the file INTRO.BBE which \
+contains the printed introduction page. \par\par \
+The most current and correct copies of these files can be obtained from \
+the following. If any errors are located, please ensure you have the \
+latest files, and if so, we would appreciate being informed of the \
+error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+Or by contacting: \par \
+ Mark Fuller\par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[IndTB]
+DataPath=../../../../src/modules/texts/rawtext/indtb/
+ModDrv=RawText
+Description=Indonesian Terjemahan Baru
+About=\qc Terjemahan Baru (TB) \par\par \
+Copyright Lembaga Alkitab Indonesia \par \
+(Indonesian Bible Society), 1994. \par \
+Released for non-profit scholarly and personal use. \par \
+Not to be sold for profit. \par \
+When making formal public reference to the materials, \par \
+please acknowlege The Indonesian Bible Society \par \
+(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard
+
+
+
+[IndBIS]
+DataPath=../../../../src/modules/texts/rawtext/indbis/
+ModDrv=RawText
+Description=Indonesian Bahasa Indonesia Sehari-hari (BIS)
+About=\qc Bahasa Indonesia Sehari-hari (BIS) \par\par \
+Copyright Lembaga Alkitab Indonesia \par \
+(Indonesian Bible Society), 1994. \par \
+Released for non-profit scholarly and personal use. \par \
+Not to be sold for profit. \par \
+When making formal public reference to the materials, \par \
+please acknowlege The Indonesian Bible Society \par \
+(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard
+
+
+
+[Websters]
+DataPath=../../../../src/modules/texts/rawtext/websters/
+ModDrv=RawText
+Description=The Webster Bible
+About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \
+\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \
+COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \
+BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \
+PUBLISHED BY DURRIE & PECK. \par \
+Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \
+and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \
+Webster Bible Electronic Format.\par \
+PUBLIC DOMAIN\par\par \
+February 1992\par\par\pard \
+Webster Biography:\par \
+Noah Webster: America's first grammarian and founding father of American education.\par\par \
+ In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \
+dictionary demonstrates the Christian values which were found in America's educational \
+and scholarly systems. It is from this early dictionary that we have todays popular \
+'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \
+Hebrew and Greek, published the King James Authorized Version 'with amendments to the \
+language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \
+ 'In the present version, the language is, in general, correct and perspicuous; \
+... in many passages uniting sublimity with beautiful simplicity. In my view, the general \
+style of the version ought not to be altered. But, in the lapse of two or three centuries, \
+changes have taken place, which, in particular passages, impair the beauty; in others, \
+obscure the sense, of the original languages. ... they do not present to the reader \
+the Word of God. ... My principal aim is to remedy this evil.'\par\par \
+It was with cautious reverence that Webster corrected misused grammar, removed offensive \
+terms and expressions, and substituted commonly understood words for words that had fallen \
+into disuse, or no longer carried the same meaning.\par\par\
+ In 1834, the year after completing the Webster Bible, Noah Webster wrote a \
+companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \
+the Use of Families and Schools'.\par\par\
+ Webster, who was considered 'The schoolmaster to a nation' and produced the \
+earliest spellers and textbooks for America's school children, believed Christian religious \
+values and American public education to be inseparable. He believed the Webster Bible to \
+be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \
+ '... the chief moral cause of all that is good, and the best corrector of all that \
+is evil, in human society; the best book for regulating the temporal concerns of men, and \
+the only book that can serve as an infallible guide to future felicity.'\par\par \
+Introduction to the Electronic Format:\par \
+ Beginning in July of 1991 the task of placing the Webster Bible text in electronic \
+format began. The original purpose was to provide Larry Pierce, who produces the \
+On-Line Bible program, with a more modern *public domain* text, similar in content and \
+style to the AV but with a grammar that would provide better comprehension in todays \
+English.\par\par\
+ I plan on maintaining an accurate copy of the Webster text. Anyone finding an \
+error should contact me; Anyone desiring to obtain the latest, most correct text, can find \
+it on the Bible Foundation BBS, or can contact me in the following methods:\par \
+ Internet acus10@waccvm.corp.mot.com\par \
+ Home phone 602-829-8542\par \
+ Address Mark Fuller\par \
+ 1129 East Loyola Drive\par \
+ Tempe Arizona, 85282\par \
+ Bible Foundation http://www.bf.org\par\par \
+ I would like to thank the Bible Foundation not only for scanning nearly the entire \
+Webster Bible but for encouraging me to undertake this monumental work; particularly around \
+page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \
+the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \
+cleaning and making the texts available on the BBS.
+
+
+[Sve]
+DataPath=../../../../src/modules/texts/rawtext/sve/
+ModDrv=RawText
+Description=Swedish Bible 1917 New Testament
+About=\qc BIBELN eller DEN HELIGA SKRIFT \par innehållande \par \
+NYA TESTAMENTETS KANONISKA BÖCKER \par i överensstämmelse med den av \par \
+KONUNGEN ÅR 1917 \par gillade och stadfästa översättningen \par\par \
+THE BIBLE or THE HOLY SCRIPT \par containing \par CANONICAL BOOKS OF NEW TESTAMENT \par \
+in conformity with that of \par THE KING YEAR 1917 \par \
+liked and confirmed translation \par\par\pard \
+ Thank you to Roland Nygren for making this work available. For the latest \
+information, to report corrections, or for other correspondence: \par\par \
+ Roland Nygren \par \
+ qtxrony@aom.ericsson.se
+
+[VNT]
+DataPath=../../../../src/modules/texts/rawtext/vnt/
+ModDrv=RawText
+Description=Valera 1858 Spanish New Testament Text
+About=\qc-=+* see the file 'intro.rtf' for more details *+=- \par\par \
+El \par NUEVO TESTAMENTO \par DE \par NUESTRO SEÑOR JESU-CRISTO \par \
+QUE CONTIENE \par LOS ESCRITOS EVANGÉLICOS Y APOSTÓLICOS \par \
+ANTIGUA VERSION DE CIPRIANO DE VALERA \par REVISADA \par \
+Con arreglo al original griego. \par MADRID \par \
+SE HALLA EN EL DEPÓSITO CENTRAL DE LA SOCIEDAD BÍBLICA B. Y E. \par \
+Calle de Preciados, número 46. \par 1884 \par EL SANTO EVANGELIO \par DE \par \
+NUESTRO SEÑOR JESU-CRISTO \par SEGUN \par SAN MATEO. \par\par \pard \
+ Thank you to Bill Kincaid for making this work available. \
+This New Testament text (Valera 1858) was downloaded from The Word of God in \
+Spanish: Valera 1909 web site. (http://www.west.ga.net/~ForHim/word.html) This text is not \
+copyrighted, you are free to distribute it as you wish. We only ask out of respect for the \
+work we invested in bringing you this text (Finding, scanning, and proofing.), that you \
+leave this notice and the following introduction ([see the file intro.rtf]) in any copies \
+that you might make publish on the Internet. If you have any questions or comments please \
+contact: mnj@acnet.net \par\par \
+ Este texto del Nuevo Testamento (Valera 1858) fue bajado del la pagina de \
+web: La Palabra de Dios en Español: Valera 1909. (http://www.west.ga.net/~ForHim/word.html) \
+ Este texto no tiene derechos reservados, puedes distribuirlo como quieres. Solamente \
+pedimos que por respeto del trabajo que invertimos en dándote este texto (Encontrando, \
+escaneando, y corrigiendo.), que dejes esta noticia y la siguiente introducción \
+(FILE: intro.rtf) en cualquier copia que publicas sobre el Internet. Si tienes cualquier \
+pregunta o comentario por favor escribe a: mnj@acnet.net.
+
+
+[MHC]
+DataPath=../../../../src/modules/comments/rawcom/mhc/
+ModDrv=RawCom
+Description=Matthew Henry's Commentary on the Whole Bible
+About=\qc Matthew Henry's \par Concise Commentary on the Whole Bible \par\par \
+Public Domain--Copy Freely. \par\par\pard \
+ This text matches the printed edition as published by Moody Press, 28th printing, \
+no Copyright displayed. ISBN: 0-8024-5190-X. This text was created from an existing \
+electronic copy, with roughly 1200 errors corrected. The current files can be \
+found at: \par\par \
+ The Bible Foundation, \par \
+ http://www.bf.org \par\par \
+ If any errors are located, please notify me at the above BBS, or at: \par\par \
+ Mark Fuller \par \
+ 1129 E. Loyola Dr. \par \
+ Tempe, Az. 85282 \par \
+ (602) 829-8542
+
+
+
+[RWP]
+DataPath=../../../../src/modules/comments/rawcom/rwp/
+ModDrv=RawCom
+Description=Robertson's Word Pictures
+About=\qc -=+* see the files 'about.txt', 'title.pg', 'rwp.int', 'read.me', and \
+'correct.txt' for more details *+=- \par\par \
+ Robertson's \par Word Pictures in the \par New Testament \par\par \
+A.T. Robertson, A.M., D.D., LL. D., Litt.D. \par\par\pard \
+Vol 1,2,3,4 Public Domain -- Copy Freely \par\par Volume 5 (c) 1932. \par \
+Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \
+[Copyright expires Dec. 31, 2006.] \par\par Volume 6 (c) 1933. \par \
+Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \
+[Copyright expires Dec. 31, 2007.] \par\par \
++--------------- Copy Freely --------------+ \par\par \
+ The current files can be found at: \par\par \
+ The Bible Foundation, \par \
+ http://www.bf.org \par\par \
+ If any errors are located, please notify me at the above location, or at: \par\par \
+ Mark Fuller \par \
+ 1129 E. Loyola Dr. \par \
+ Tempe, Az. 85282 \par \
+ (602) 829-8542
+
+
+[Eastons]
+DataPath=../../../../src/modules/lexdict/rawld/eastons/eastons
+ModDrv=RawLD
+Description=Easton's Bible Dictionary
+About=\qc Easton's 1897 Bible Dictionary \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ These Dictionary topics are from M.G. Easton M.A., D.D., Illustrated Bible \
+Dictionary, Third Edition, published by Thomas Nelson, 1897. Due to the nature of etext, \
+the illustrated portions of the Dictionary have not been included. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[Vines]
+DataPath=../../../../src/modules/lexdict/rawld/vines/vines
+ModDrv=RawLD
+Description=Vines Bible Dictionary
+About=\qc Vine's Expository Dictionary \par of New Testament Words \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ These Dictionary topics are from W.E. Vine's M.A., Expository Dictionary of New Testament \
+Words published in 1940 and without copyright. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+
+[Strongs Hebrew (OT)]
+DataPath=../../../../src/modules/lexdict/rawld/strongs/hebrew
+ModDrv=RawLD
+Description=Strong's / Englishman's Hebrew Bible Dictionary
+About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \
+This is a lexicon of Hebrew words keyed off of Strong's numbers.
+
+[Strongs Greek (NT)]
+DataPath=../../../../src/modules/lexdict/rawld/strongs/greek
+ModDrv=RawLD
+Description=Strong's / Englishman's Greek Bible Dictionary
+About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \
+This is a lexicon of Greek words keyed off of Strong's numbers.
+
+
+
+[WEB]
+DataPath=../../../../src/modules/texts/rawgbf/web/
+ModDrv=RawGBF
+Description=The World English Bible
+About= -=+* see the file 'info.txt' for more details *+=-\par\par \
+\qc The World English Bible (WEB) \par\par Public Domain \par\par \pard \
+ The World English Bible is a 1997 revision of the American Standard Version of the \
+Holy Bible, first published in 1901. It is in the Public Domain. Please feel free to copy \
+and distribute it freely. \par\par \
+ Thank you to Michael Paul Johnson for making this work available. For the latest \
+information, to report corrections, or for other correspondence: \par\par \
+ Michael Paul Johnson \par \
+ http://www.ebible.org/bible \par \
+ mpj@ebible.org
+
+
+[ORTHJBC]
+DataPath=../../../../src/modules/texts/rawtext/orthjbc/
+ModDrv=RawText
+Description=The Orthodox Jewish Brit Chadasha
+About= \qc THE ORTHODOX JEWISH BRIT CHADASHA \par\par \pard \
+ A translation from the original language without goyishe and non-frum \
+terminology. \par\par \
+(C)COPYRIGHT, 1996, ARTISTS FOR ISRAEL INTERNATIONAL \par \
+ALL RIGHTS RESERVED \par \
+USED BY PERMISSION \par\par \
+ Thank you to Dr. Phil Goble for making this work available. This work is NOT in \
+the public domain. Please honor all applicable copyright laws. Permission to distribute \
+this text in its present electronic format for personal use has been granted by the \
+copyright holder. \par\par \
+ Please direct all correspondence to: \par\par \
+ Artists for Israel International \par \
+ http://www.afii.org \par \
+ P. O. Box 2056 \par \
+ New York, NY 10163
+
+
+
+[N27U4]
+DataPath=../../../../src/modules/texts/rawtext/nu/
+ModDrv=RawText
+Font=Greek
+Description=Nestle Aland 27th Ed./ UBS 4th Ed. Greek Text
+About= \qc Thank you to Barbara Aland, Kurt Aland, Johannes Karavidopoulos, Carlo M. \
+Martini, and Bruce M. Metzger for bringing this work to us. \par\par \pard \
+GREEK.TTF Greek Regular Font (C) Peter J. Gentry & Andrew M. Fountain, 1993. All Rights \
+Reserved. Special thanks to the copyright holders for permission to use these fonts with \
+The SWORD Project for personal use. For a complete list of Greek / Hebrew Utilities or \
+inquiries for other use may be directed to: \par\par \
+ Peter J. Gentry \par \
+ 55 Ambercroft Blvd. \par \
+ Scarborough \par \
+ Ontario, Canada \par \
+ M1W 2Z6
+
+
+[KJV]
+DataPath=../../../../src/modules/texts/rawtext/kjv/
+ModDrv=RawText
+Description=King James Version of 1611
+About= -=+* see the file 'kjvpref.rtf' for more details *+=-\par\par \
+ This is the King James Version of the Holy Bible (also known as the Authorized \
+Version) in Rich Text Format (among others, italics and red included). The preface from \
+the translators is in KJVPREF.RTF. These files are in the Public Domain. \par\par \
+ May God bless you as you study His Word. \par \
+ Michael Paul Johnson \par \
+ Sysop, Colorado Catacombs BBS (303-772-1062) \par \
+ email: mpj@csn.net \par \
+ http://www.csn.net/~mpj
+
+
+
+
+[KJVSTR]
+DataPath=../../../../src/modules/texts/rawtext/kjvstr/
+ModDrv=RawText
+Description=King James Version of 1611 w/ Strongs Numbers
+About= This is the King James Version of the Holy Bible (also known as the Authorized \
+Version) with embedded Strong's Numbers. This makes useful for looking up the exact \
+original language word in a lexicon that is keyed off of Strong's numbers. \par\par \
+Special thanks to Larry Pierce for extensive work encorporating the embedded \
+Strong's numbers in this module. This feature is not in the public domain. \
+Permission to use this feature for personal use has been granted by the author. \par \
+Inquiries and comments may be directed to: \par\par \
+ Larry Pierce \par \
+ 103526.2724@compuserve.com \par \
+ http://www.online-bible.com
+
+[FrenchLSG]
+DataPath=../../../../src/modules/texts/rawgbf/frenchlsg/
+ModDrv=RawGBF
+Description=French 1910 Louis Segond Version
+About=The 1910 edition of the Louis Segond Bible is keyed to Strong's numbers. \
+All this material may be freely copied and shared with your friends. \
+If you wish to use this material for other purposes, please contact: \par\par \
+ Stg. Publishare \par \
+ c/o Transvaalstraat 5 \par \
+ 3312 EX DORDRECHT \par \
+ The Netherlands \par\par \
+to obtain the latest accurate copy. The Englishman Strong's numbers are \
+not in the public domain and any commercial use requires a licence.
+
diff --git a/examples/X11/gtk--/simplefrontend/simplefrontend.cpp b/examples/X11/gtk--/simplefrontend/simplefrontend.cpp
new file mode 100644
index 0000000..ed5192a
--- /dev/null
+++ b/examples/X11/gtk--/simplefrontend/simplefrontend.cpp
@@ -0,0 +1,93 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <gtk--.h>
+
+#include <swmgr.h>
+
+
+class SimpleFrontEnd : public Gtk_Window {
+ Gtk_Label l1;
+ Gtk_Label l2;
+ Gtk_Label l3;
+ Gtk_Entry kt;
+ Gtk_Combo cb;
+ Gtk_VBox *vb;
+ Gtk_Text *text;
+ SWMgr manager;
+public:
+ SimpleFrontEnd() : l1("Module Name:"), l2("KeyText:"), l3(""), kt(), vb(new Gtk_VBox), text(new Gtk_Text) {
+ add(vb);
+ vb->pack_start(&l1);
+ vb->pack_start(&cb);
+ vb->pack_start(&l2);
+ vb->pack_start(&kt);
+ vb->pack_start(&l3);
+ vb->pack_start(text);
+ vb->show();
+ l1.show();
+ l2.show();
+ l3.show();
+ kt.show();
+ cb.show();
+ text->set_word_wrap(TRUE);
+ text->show();
+
+ connect_to_method(kt.changed,this,&keypress);
+ // use SWMgr to traverse installed modules and insert into QComboBox
+
+ ModMap::iterator modIterator;
+ G_List cbItems;
+
+ for (modIterator = manager.Modules.begin(); modIterator != manager.Modules.end(); modIterator++)
+ cbItems.append((void *)modIterator->first.c_str());
+ cb.set_popdown_strings(cbItems);
+
+
+ }
+
+ gint delete_event_impl(GdkEventAny*) {
+ Gtk_Main::instance()->quit(); return 0;
+ }
+
+ void keypress() {
+ string keyText;
+ string modName;
+ ModMap::iterator it;
+ gint position=0;
+
+ keyText = kt.get_text();
+ modName = cb.entry.get_text();
+
+ it = manager.Modules.find(modName.c_str());
+ if (it != manager.Modules.end()) {
+ it->second->SetKey(keyText.c_str());
+ text->delete_text(0, text->get_length());
+ text->insert_text((const char *)*it->second, strlen(*it->second), &position);
+ l3.set(it->second->KeyText());
+ }
+ }
+
+};
+
+
+int main(int argc, char *argv[]) {
+ Gtk_Main m(&argc,&argv);
+ SimpleFrontEnd *t=new SimpleFrontEnd;
+ t->show();
+ m.run();
+ printf("After run!\n");
+ return(EXIT_SUCCESS);
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/X11/qt/Makefile b/examples/X11/qt/Makefile
new file mode 100644
index 0000000..7bcf1af
--- /dev/null
+++ b/examples/X11/qt/Makefile
@@ -0,0 +1,14 @@
+
+root := ../../..
+subdirs := simplefrontend
+pre-targets :=
+include ${root}/Makefile.cfg
+
+
+s = $(c) $(cpp)
+d = $(c:%.c=%.d) $(cpp:%.cpp=%.d)
+o = $(c:%.c=%.o) $(cpp:%.cpp=%.o)
+
+ifneq ($(nodeps),yes)
+-include $(d)
+endif
diff --git a/examples/X11/qt/simplefrontend/Makefile b/examples/X11/qt/simplefrontend/Makefile
new file mode 100644
index 0000000..0bfdf5e
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/Makefile
@@ -0,0 +1,42 @@
+
+
+CC = /usr/bin/egcs
+CFLAGS = -g -I$(QTDIR)/include -I/usr/lib/qt/include -I../../../../include
+LFLAGS = -L$(QTDIR)/lib -lqt -L/usr/X11R6/lib -lXext -lX11 -L../../../../lib -lsword -lstdc++
+
+MOCSRC = ./simplefrontend/SimpleFrontEndProject.h
+MOC_CC = ./hSimpleFrontEndProject.cpp
+MOC_OBJ = ./hSimpleFrontEndProject.o
+
+SRC = ./SimpleFrontEndProject.cpp ./main.cpp
+OBJ = $(MOC_CC) ./SimpleFrontEndProject.o ./main.o
+TARGET = simplefrontend
+.SUFFIXES: .cpp
+
+.cpp.o: $(SRC)
+ $(CC) $(CFLAGS) -c $*.cpp -o $@
+
+all: $(TARGET)
+
+tarclean:
+ rm -f $(TARGET) core
+
+clean:
+ rm -f $(OBJ) $(MOC_CC) $(TARGET)
+
+distclean: clean
+ rm -f core *~ $(TARGET)
+
+$(TARGET): tarclean $(MOC_CC) $(OBJ)
+ rm -f $(TARGET)
+ $(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LFLAGS)
+
+./hSimpleFrontEndProject.cpp: ./SimpleFrontEndProject.h
+ moc ./SimpleFrontEndProject.h -o ./hSimpleFrontEndProject.cpp
+
+./SimpleFrontEndProject.o: ./SimpleFrontEndProject.h
+
+just-clean: clean
+just-pre:
+
+just-targets: $(TARGET)
diff --git a/examples/X11/qt/simplefrontend/README b/examples/X11/qt/simplefrontend/README
new file mode 100644
index 0000000..59b3bd0
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/README
@@ -0,0 +1,2 @@
+Please make sure mods.conf contains a valid list of modules installed in your
+sword directory heirarchy.
diff --git a/examples/X11/qt/simplefrontend/SimpleFrontEndProject.cpp b/examples/X11/qt/simplefrontend/SimpleFrontEndProject.cpp
new file mode 100644
index 0000000..3ddc77d
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/SimpleFrontEndProject.cpp
@@ -0,0 +1,75 @@
+/***********************************************
+** Source Dump From QtEZ http://qtez.zax.net/qtez
+** ---------------------------------------------
+** Dumped: Mon Sep 21 01:22:44 1998
+** To: /usr/src/sword/examples/X11/qt/simplefrontend/SimpleFrontEndProject.cpp
+** By: root
+***********************************************/
+
+#include "/usr/src/sword/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h"
+#include <string>
+#include <swmgr.h>
+
+SimpleFrontEndProject::SimpleFrontEndProject(QWidget *parent, char *name)
+ : QDialog(parent,name,FALSE,WStyle_Customize | WStyle_NormalBorder)
+{
+ resize(420,320);
+
+ label2 = new QLabel(this, "label2");
+ label2->setText("Module Name");
+ label2->setAlignment(AlignLeft | AlignTop);
+ label2->setGeometry(21,6,115,28);
+
+ label1 = new QLabel(this, "label1");
+ label1->setText("KeyText");
+ label1->setAlignment(AlignLeft | AlignTop);
+ label1->setGeometry(21,51,115,28);
+
+ label3 = new QLabel(this, "label3");
+ label3->setText("[ none ]");
+ label3->setAlignment(AlignLeft | AlignTop);
+ label3->setGeometry(21,96,115,28);
+
+ combo1 = new QComboBox((bool)0,this,"combo1");
+ combo1->setGeometry(143,6,270,28);
+
+ mlined1 = new QMultiLineEdit(this, "mlined1");
+ mlined1->setGeometry(21,141,390,160);
+ mlined1->setReadOnly(TRUE);
+
+ text1 = new QLineEdit(this, "text1");
+ text1->setGeometry(143,50,270,28);
+
+ QObject::connect(text1,SIGNAL(textChanged(const char *)),
+ this,SLOT(lookup(const char *)));
+
+ QObject::connect(combo1,SIGNAL(activated(const char *)),
+ this,SLOT(lookup(const char *)));
+
+// use SWMgr to traverse installed modules and insert into QComboBox
+
+ ModMap::iterator modIterator;
+
+ for (modIterator = manager.Modules.begin(); modIterator != manager.Modules.end(); modIterator++)
+ combo1->insertItem(modIterator->first.c_str());
+}
+
+void
+SimpleFrontEndProject::lookup(const char *)
+{
+ string keyText;
+ string modName;
+ ModMap::iterator it;
+
+ keyText = text1->text();
+ modName = combo1->currentText();
+
+ it = manager.Modules.find(modName.c_str());
+ if (it != manager.Modules.end()) {
+ it->second->SetKey(keyText.c_str());
+ mlined1->setText(*it->second);
+ label3->setText(it->second->KeyText());
+ }
+
+}
+
diff --git a/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h b/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h
new file mode 100644
index 0000000..96b7463
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h
@@ -0,0 +1,49 @@
+/***********************************************
+** Source Dump From QtEZ http://qtez.zax.net/qtez
+** ---------------------------------------------
+** Dumped: Mon Sep 21 01:22:44 1998
+** To: /usr/src/sword/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h
+** By: root
+***********************************************/
+
+#ifndef QTEZ_OUTP
+ #define QTEZ_OUTP "QTEZ v0.77a"
+#endif
+
+#ifndef SIMPLEFRONTENDPROJECT_H
+#define SIMPLEFRONTENDPROJECT_H
+
+/* Project Specific Includes */
+#include "/usr/src/sword/examples/X11/qt/simplefrontend/main.h"
+
+/* Library Includes */
+#include <qdialog.h>
+#include <qwidget.h>
+#include <qlabel.h>
+#include <qcombo.h>
+#include <qmlined.h>
+#include <qlined.h>
+#include <qpushbt.h>
+#include <swmgr.h>
+
+class
+SimpleFrontEndProject : public QDialog
+{
+ Q_OBJECT
+private:
+ QLineEdit *text1;
+ QMultiLineEdit *mlined1;
+ QComboBox *combo1;
+ QLabel *label1;
+ QLabel *label2;
+ QLabel *label3;
+public:
+ SimpleFrontEndProject(QWidget *parent=0, char *name=0);
+ friend int main(int, char **);
+ SWMgr manager;
+protected:
+signals:
+public slots:
+ void lookup(const char *);
+};
+#endif
diff --git a/examples/X11/qt/simplefrontend/main.cpp b/examples/X11/qt/simplefrontend/main.cpp
new file mode 100644
index 0000000..63d01e8
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/main.cpp
@@ -0,0 +1,29 @@
+/***********************************************
+** Source Dump From QtEZ http://qtez.zax.net/qtez
+** ---------------------------------------------
+** Dumped: Mon Sep 21 01:22:46 1998
+** To: /usr/src/sword/examples/X11/qt/simplefrontend/main.cpp
+** By: root
+***********************************************/
+
+/* Main Include */
+#include "/usr/src/sword/examples/X11/qt/simplefrontend/main.h"
+
+/* Top Level Widget Includes */
+#include "/usr/src/sword/examples/X11/qt/simplefrontend/SimpleFrontEndProject.h"
+
+/* Function Definitions (globals editor)*/
+
+
+int
+main(int argc,char **argv)
+{
+// KApplication app1(argc,argv);
+ QApplication app1(argc,argv);
+ SimpleFrontEndProject project1(0, "project1");
+
+
+app1.setMainWidget(&project1);
+ project1.show();
+ return app1.exec();
+}
diff --git a/examples/X11/qt/simplefrontend/main.h b/examples/X11/qt/simplefrontend/main.h
new file mode 100644
index 0000000..9c5d3b6
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/main.h
@@ -0,0 +1,18 @@
+/***********************************************
+** Source Dump From QtEZ http://qtez.zax.net/qtez
+** ---------------------------------------------
+** Dumped: Mon Sep 21 01:22:46 1998
+** To: /usr/src/sword/examples/X11/qt/simplefrontend/main.h
+** By: root
+***********************************************/
+
+#ifndef MAINHEADER_H
+#define MAINHEADER_H
+
+/* Main Header Includes */
+
+/* Main.cpp Includes*/
+//#include <kapp.h>
+#include <qapp.h>
+
+#endif
diff --git a/examples/X11/qt/simplefrontend/mods.conf b/examples/X11/qt/simplefrontend/mods.conf
new file mode 100644
index 0000000..d0608b6
--- /dev/null
+++ b/examples/X11/qt/simplefrontend/mods.conf
@@ -0,0 +1,465 @@
+[Globals]
+AutoInstall=./newmods/
+
+[-+*Personal*+-]
+DataPath=../../../../src/modules/comments/rawfiles/personal/
+ModDrv=RawFiles
+Description=Personal Commentary
+About=This module allows you to store your own commentary.
+
+[SpanishRVA]
+DataPath=../../../../src/modules/texts/rawgbf/spanishrva/
+ModDrv=RawGBF
+Description=The New International Version
+About=\qc El texto b¡blico designado RVA es de LA SANTA BIBLIA, \par \
+VERSION REINA-VALERA ACTUALIZADA. Copyright 1982, 1986, \par \
+1987, 1989 de la Casa Bautista de Publicaciones. \par\par \
+Todos los derechos reservados. \par\par \
+El texto computarizado de la RVA para LA BIBLIA COM- \par \
+PUTARIZADA no puede ser modificado ni copiado sin per- \par \
+miso por escrito por la Casa Bautista de Publicaciones. \par\pard \
+
+
+[NASB]
+DataPath=../../../../src/modules/texts/rawgbf/nasb/
+ModDrv=RawGBF
+Description=The New American Standard Bible
+About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par \
+The New American Standard Bible \par \
+Copyright THE LOCKMAN FOUNDATION, 1960, 1962, 1963 \par \
+La Habra, Calif. \par \
+All rights in this book are reserved. \par \
+No part may be reproduced in any manner without \par \
+permission in writing from The Lockman Foundation, \par \
+except brief quotations used in connection with \par \
+a review in a magazine or newspaper. \par\pard
+
+
+
+
+[NIV]
+DataPath=../../../../src/modules/texts/rawgbf/niv/
+ModDrv=RawGBF
+Description=The New International Version
+About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par\pard \
+Quotations designated (NIV) are from \par\par \
+THE HOLY BIBLE: NEW INTERNATIONAL VERSION®. \par \
+Copyright © 1973, 1978, 1984 by International Bible Society; \
+Zondervan Publishing House. All rights reserved. \par\par \
+The "NIV" and "New International Version" trademarks are registered in \
+the United States Patent and Trademark Office by International Bible \
+Society. \par\par \
+The NIV text may be quoted in any form (written, visual, electronic, or \
+audio), up to and inclusive of five hundred (500) verses or less without \
+written permission, providing the verses quoted do not amount to a \
+complete book of the Bible, do not comprise 25% or more of the total \
+text of the work in which they are quoted, and the verses are not being \
+quoted in a commentary or other Biblical reference work. This \
+permission is contingent upon an appropriate copyright acknowledgment. \par\par \
+The NIV database is not a shareware program and may not be \
+duplicated. \par\par\pard
+
+
+[JFB]
+DataPath=../../../../src/modules/comments/hrefcom/jfb/
+ModDrv=HREFCom
+Prefix=http://ccel.wheaton.edu/j/jfb/jfb/
+;External=0
+;Prefix=file:///../../../../src/modules/comments/hrefcom/jfb/
+External=1
+Description=Jamison Faucett Brown Bible Commentary
+About=\qc Jamison Faucett Brown Commentary
+
+
+[Naves]
+DataPath=../../../../src/modules/lexdict/rawld/naves/naves
+ModDrv=RawLD
+Description=Nave's Topical Bible
+About= -=+* see the file 'naves.doc' for more details *+=-\par\par \
+\qc Nave's Topical Bible \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ Nave's Topics were originaly produced by Orville J. Nave, A.M., D.D., \
+LL.D. while serving as a Chaplin in the United States Army. He referred \
+to this work as "the result of fourteen years of delightful and untiring \
+study of the Word of God." Nave's topics were originally published in \
+the early 1900's, and a photo-offset reproduction is currently published \
+by Hendrickson, ISBN 0-917006-02-X. The title page states that this \
+work consists of 20,000+ topics and subtopics, and 100,000 references to \
+the Scriptures. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[BBE]
+DataPath=../../../../src/modules/texts/rawtext/bbe/
+ModDrv=RawText
+Description=The Bible in Basic English
+About= \qc -=+* see the file 'bbe.doc' for more details *+=-\par\par \
+1949/1964 Bible In Basic English \par \
+Public Domain -- Copy Freely \par\par\pard \
+The Bible In Basic English was printed in 1965 by Cambridge Press in \
+England. Published without any copyright notice and distributed in \
+America, this work fell immediatly and irretrievably into the Public \
+Domain in the United States according to the UCC convention of that \
+time. A call to Cambridge prior to placing this work in etext resulted \
+in an admission of this fact. \par\par \
+For more information about the text, see the file INTRO.BBE which \
+contains the printed introduction page. \par\par \
+The most current and correct copies of these files can be obtained from \
+the following. If any errors are located, please ensure you have the \
+latest files, and if so, we would appreciate being informed of the \
+error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+Or by contacting: \par \
+ Mark Fuller\par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[IndTB]
+DataPath=../../../../src/modules/texts/rawtext/indtb/
+ModDrv=RawText
+Description=Indonesian Terjemahan Baru
+About=\qc Terjemahan Baru (TB) \par\par \
+Copyright Lembaga Alkitab Indonesia \par \
+(Indonesian Bible Society), 1994. \par \
+Released for non-profit scholarly and personal use. \par \
+Not to be sold for profit. \par \
+When making formal public reference to the materials, \par \
+please acknowlege The Indonesian Bible Society \par \
+(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard
+
+
+
+[IndBIS]
+DataPath=../../../../src/modules/texts/rawtext/indbis/
+ModDrv=RawText
+Description=Indonesian Bahasa Indonesia Sehari-hari (BIS)
+About=\qc Bahasa Indonesia Sehari-hari (BIS) \par\par \
+Copyright Lembaga Alkitab Indonesia \par \
+(Indonesian Bible Society), 1994. \par \
+Released for non-profit scholarly and personal use. \par \
+Not to be sold for profit. \par \
+When making formal public reference to the materials, \par \
+please acknowlege The Indonesian Bible Society \par \
+(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard
+
+
+
+[Websters]
+DataPath=../../../../src/modules/texts/rawtext/websters/
+ModDrv=RawText
+Description=The Webster Bible
+About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \
+\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \
+COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \
+BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \
+PUBLISHED BY DURRIE & PECK. \par \
+Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \
+and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \
+Webster Bible Electronic Format.\par \
+PUBLIC DOMAIN\par\par \
+February 1992\par\par\pard \
+Webster Biography:\par \
+Noah Webster: America's first grammarian and founding father of American education.\par\par \
+ In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \
+dictionary demonstrates the Christian values which were found in America's educational \
+and scholarly systems. It is from this early dictionary that we have todays popular \
+'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \
+Hebrew and Greek, published the King James Authorized Version 'with amendments to the \
+language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \
+ 'In the present version, the language is, in general, correct and perspicuous; \
+... in many passages uniting sublimity with beautiful simplicity. In my view, the general \
+style of the version ought not to be altered. But, in the lapse of two or three centuries, \
+changes have taken place, which, in particular passages, impair the beauty; in others, \
+obscure the sense, of the original languages. ... they do not present to the reader \
+the Word of God. ... My principal aim is to remedy this evil.'\par\par \
+It was with cautious reverence that Webster corrected misused grammar, removed offensive \
+terms and expressions, and substituted commonly understood words for words that had fallen \
+into disuse, or no longer carried the same meaning.\par\par\
+ In 1834, the year after completing the Webster Bible, Noah Webster wrote a \
+companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \
+the Use of Families and Schools'.\par\par\
+ Webster, who was considered 'The schoolmaster to a nation' and produced the \
+earliest spellers and textbooks for America's school children, believed Christian religious \
+values and American public education to be inseparable. He believed the Webster Bible to \
+be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \
+ '... the chief moral cause of all that is good, and the best corrector of all that \
+is evil, in human society; the best book for regulating the temporal concerns of men, and \
+the only book that can serve as an infallible guide to future felicity.'\par\par \
+Introduction to the Electronic Format:\par \
+ Beginning in July of 1991 the task of placing the Webster Bible text in electronic \
+format began. The original purpose was to provide Larry Pierce, who produces the \
+On-Line Bible program, with a more modern *public domain* text, similar in content and \
+style to the AV but with a grammar that would provide better comprehension in todays \
+English.\par\par\
+ I plan on maintaining an accurate copy of the Webster text. Anyone finding an \
+error should contact me; Anyone desiring to obtain the latest, most correct text, can find \
+it on the Bible Foundation BBS, or can contact me in the following methods:\par \
+ Internet acus10@waccvm.corp.mot.com\par \
+ Home phone 602-829-8542\par \
+ Address Mark Fuller\par \
+ 1129 East Loyola Drive\par \
+ Tempe Arizona, 85282\par \
+ Bible Foundation http://www.bf.org\par\par \
+ I would like to thank the Bible Foundation not only for scanning nearly the entire \
+Webster Bible but for encouraging me to undertake this monumental work; particularly around \
+page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \
+the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \
+cleaning and making the texts available on the BBS.
+
+
+[Sve]
+DataPath=../../../../src/modules/texts/rawtext/sve/
+ModDrv=RawText
+Description=Swedish Bible 1917 New Testament
+About=\qc BIBELN eller DEN HELIGA SKRIFT \par innehållande \par \
+NYA TESTAMENTETS KANONISKA BÖCKER \par i överensstämmelse med den av \par \
+KONUNGEN ÅR 1917 \par gillade och stadfästa översättningen \par\par \
+THE BIBLE or THE HOLY SCRIPT \par containing \par CANONICAL BOOKS OF NEW TESTAMENT \par \
+in conformity with that of \par THE KING YEAR 1917 \par \
+liked and confirmed translation \par\par\pard \
+ Thank you to Roland Nygren for making this work available. For the latest \
+information, to report corrections, or for other correspondence: \par\par \
+ Roland Nygren \par \
+ qtxrony@aom.ericsson.se
+
+[VNT]
+DataPath=../../../../src/modules/texts/rawtext/vnt/
+ModDrv=RawText
+Description=Valera 1858 Spanish New Testament Text
+About=\qc-=+* see the file 'intro.rtf' for more details *+=- \par\par \
+El \par NUEVO TESTAMENTO \par DE \par NUESTRO SEÑOR JESU-CRISTO \par \
+QUE CONTIENE \par LOS ESCRITOS EVANGÉLICOS Y APOSTÓLICOS \par \
+ANTIGUA VERSION DE CIPRIANO DE VALERA \par REVISADA \par \
+Con arreglo al original griego. \par MADRID \par \
+SE HALLA EN EL DEPÓSITO CENTRAL DE LA SOCIEDAD BÍBLICA B. Y E. \par \
+Calle de Preciados, número 46. \par 1884 \par EL SANTO EVANGELIO \par DE \par \
+NUESTRO SEÑOR JESU-CRISTO \par SEGUN \par SAN MATEO. \par\par \pard \
+ Thank you to Bill Kincaid for making this work available. \
+This New Testament text (Valera 1858) was downloaded from The Word of God in \
+Spanish: Valera 1909 web site. (http://www.west.ga.net/~ForHim/word.html) This text is not \
+copyrighted, you are free to distribute it as you wish. We only ask out of respect for the \
+work we invested in bringing you this text (Finding, scanning, and proofing.), that you \
+leave this notice and the following introduction ([see the file intro.rtf]) in any copies \
+that you might make publish on the Internet. If you have any questions or comments please \
+contact: mnj@acnet.net \par\par \
+ Este texto del Nuevo Testamento (Valera 1858) fue bajado del la pagina de \
+web: La Palabra de Dios en Español: Valera 1909. (http://www.west.ga.net/~ForHim/word.html) \
+ Este texto no tiene derechos reservados, puedes distribuirlo como quieres. Solamente \
+pedimos que por respeto del trabajo que invertimos en dándote este texto (Encontrando, \
+escaneando, y corrigiendo.), que dejes esta noticia y la siguiente introducción \
+(FILE: intro.rtf) en cualquier copia que publicas sobre el Internet. Si tienes cualquier \
+pregunta o comentario por favor escribe a: mnj@acnet.net.
+
+
+[MHC]
+DataPath=../../../../src/modules/comments/rawcom/mhc/
+ModDrv=RawCom
+Description=Matthew Henry's Commentary on the Whole Bible
+About=\qc Matthew Henry's \par Concise Commentary on the Whole Bible \par\par \
+Public Domain--Copy Freely. \par\par\pard \
+ This text matches the printed edition as published by Moody Press, 28th printing, \
+no Copyright displayed. ISBN: 0-8024-5190-X. This text was created from an existing \
+electronic copy, with roughly 1200 errors corrected. The current files can be \
+found at: \par\par \
+ The Bible Foundation, \par \
+ http://www.bf.org \par\par \
+ If any errors are located, please notify me at the above BBS, or at: \par\par \
+ Mark Fuller \par \
+ 1129 E. Loyola Dr. \par \
+ Tempe, Az. 85282 \par \
+ (602) 829-8542
+
+
+
+[RWP]
+DataPath=../../../../src/modules/comments/rawcom/rwp/
+ModDrv=RawCom
+Description=Robertson's Word Pictures
+About=\qc -=+* see the files 'about.txt', 'title.pg', 'rwp.int', 'read.me', and \
+'correct.txt' for more details *+=- \par\par \
+ Robertson's \par Word Pictures in the \par New Testament \par\par \
+A.T. Robertson, A.M., D.D., LL. D., Litt.D. \par\par\pard \
+Vol 1,2,3,4 Public Domain -- Copy Freely \par\par Volume 5 (c) 1932. \par \
+Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \
+[Copyright expires Dec. 31, 2006.] \par\par Volume 6 (c) 1933. \par \
+Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \
+[Copyright expires Dec. 31, 2007.] \par\par \
++--------------- Copy Freely --------------+ \par\par \
+ The current files can be found at: \par\par \
+ The Bible Foundation, \par \
+ http://www.bf.org \par\par \
+ If any errors are located, please notify me at the above location, or at: \par\par \
+ Mark Fuller \par \
+ 1129 E. Loyola Dr. \par \
+ Tempe, Az. 85282 \par \
+ (602) 829-8542
+
+
+[Eastons]
+DataPath=../../../../src/modules/lexdict/rawld/eastons/eastons
+ModDrv=RawLD
+Description=Easton's Bible Dictionary
+About=\qc Easton's 1897 Bible Dictionary \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ These Dictionary topics are from M.G. Easton M.A., D.D., Illustrated Bible \
+Dictionary, Third Edition, published by Thomas Nelson, 1897. Due to the nature of etext, \
+the illustrated portions of the Dictionary have not been included. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+[Vines]
+DataPath=../../../../src/modules/lexdict/rawld/vines/vines
+ModDrv=RawLD
+Description=Vines Bible Dictionary
+About=\qc Vine's Expository Dictionary \par of New Testament Words \par\par \
+Public Domain -- Copy Freely \par\par\pard \
+ These Dictionary topics are from W.E. Vine's M.A., Expository Dictionary of New Testament \
+Words published in 1940 and without copyright. \par\par \
+ The most current and correct copies of these files can be obtained from the \
+following. If any errors are located, please ensure you have the latest files, and if so, \
+we would appreciate being informed of the error. \par\par \
+ The Bible Foundation \par \
+ http://www.bf.org \par\par \
+ Or by contacting: \par\par \
+ Mark Fuller \par \
+ 1129 East Loyola Drive \par \
+ Tempe, Arizona, 85282 \par \
+ 602-829-8542 (voice)
+
+
+[Strongs Hebrew (OT)]
+DataPath=../../../../src/modules/lexdict/rawld/strongs/hebrew
+ModDrv=RawLD
+Description=Strong's / Englishman's Hebrew Bible Dictionary
+About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \
+This is a lexicon of Hebrew words keyed off of Strong's numbers.
+
+[Strongs Greek (NT)]
+DataPath=../../../../src/modules/lexdict/rawld/strongs/greek
+ModDrv=RawLD
+Description=Strong's / Englishman's Greek Bible Dictionary
+About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \
+This is a lexicon of Greek words keyed off of Strong's numbers.
+
+
+
+[WEB]
+DataPath=../../../../src/modules/texts/rawgbf/web/
+ModDrv=RawGBF
+Description=The World English Bible
+About= -=+* see the file 'info.txt' for more details *+=-\par\par \
+\qc The World English Bible (WEB) \par\par Public Domain \par\par \pard \
+ The World English Bible is a 1997 revision of the American Standard Version of the \
+Holy Bible, first published in 1901. It is in the Public Domain. Please feel free to copy \
+and distribute it freely. \par\par \
+ Thank you to Michael Paul Johnson for making this work available. For the latest \
+information, to report corrections, or for other correspondence: \par\par \
+ Michael Paul Johnson \par \
+ http://www.ebible.org/bible \par \
+ mpj@ebible.org
+
+
+[ORTHJBC]
+DataPath=../../../../src/modules/texts/rawtext/orthjbc/
+ModDrv=RawText
+Description=The Orthodox Jewish Brit Chadasha
+About= \qc THE ORTHODOX JEWISH BRIT CHADASHA \par\par \pard \
+ A translation from the original language without goyishe and non-frum \
+terminology. \par\par \
+(C)COPYRIGHT, 1996, ARTISTS FOR ISRAEL INTERNATIONAL \par \
+ALL RIGHTS RESERVED \par \
+USED BY PERMISSION \par\par \
+ Thank you to Dr. Phil Goble for making this work available. This work is NOT in \
+the public domain. Please honor all applicable copyright laws. Permission to distribute \
+this text in its present electronic format for personal use has been granted by the \
+copyright holder. \par\par \
+ Please direct all correspondence to: \par\par \
+ Artists for Israel International \par \
+ http://www.afii.org \par \
+ P. O. Box 2056 \par \
+ New York, NY 10163
+
+
+
+[N27U4]
+DataPath=../../../../src/modules/texts/rawtext/nu/
+ModDrv=RawText
+Font=Greek
+Description=Nestle Aland 27th Ed./ UBS 4th Ed. Greek Text
+About= \qc Thank you to Barbara Aland, Kurt Aland, Johannes Karavidopoulos, Carlo M. \
+Martini, and Bruce M. Metzger for bringing this work to us. \par\par \pard \
+GREEK.TTF Greek Regular Font (C) Peter J. Gentry & Andrew M. Fountain, 1993. All Rights \
+Reserved. Special thanks to the copyright holders for permission to use these fonts with \
+The SWORD Project for personal use. For a complete list of Greek / Hebrew Utilities or \
+inquiries for other use may be directed to: \par\par \
+ Peter J. Gentry \par \
+ 55 Ambercroft Blvd. \par \
+ Scarborough \par \
+ Ontario, Canada \par \
+ M1W 2Z6
+
+
+[KJV]
+DataPath=../../../../src/modules/texts/rawtext/kjv/
+ModDrv=RawText
+Description=King James Version of 1611
+About= -=+* see the file 'kjvpref.rtf' for more details *+=-\par\par \
+ This is the King James Version of the Holy Bible (also known as the Authorized \
+Version) in Rich Text Format (among others, italics and red included). The preface from \
+the translators is in KJVPREF.RTF. These files are in the Public Domain. \par\par \
+ May God bless you as you study His Word. \par \
+ Michael Paul Johnson \par \
+ Sysop, Colorado Catacombs BBS (303-772-1062) \par \
+ email: mpj@csn.net \par \
+ http://www.csn.net/~mpj
+
+
+
+
+[KJVSTR]
+DataPath=../../../../src/modules/texts/rawtext/kjvstr/
+ModDrv=RawText
+Description=King James Version of 1611 w/ Strongs Numbers
+About= This is the King James Version of the Holy Bible (also known as the Authorized \
+Version) with embedded Strong's Numbers. This makes useful for looking up the exact \
+original language word in a lexicon that is keyed off of Strong's numbers. \par\par \
+Special thanks to Larry Pierce for extensive work encorporating the embedded \
+Strong's numbers in this module. This feature is not in the public domain. \
+Permission to use this feature for personal use has been granted by the author. \par \
+Inquiries and comments may be directed to: \par\par \
+ Larry Pierce \par \
+ 103526.2724@compuserve.com \par \
+ http://www.online-bible.com
+
+[FrenchLSG]
+DataPath=../../../../src/modules/texts/rawgbf/frenchlsg/
+ModDrv=RawGBF
+Description=French 1910 Louis Segond Version
+About=The 1910 edition of the Louis Segond Bible is keyed to Strong's numbers. \
+All this material may be freely copied and shared with your friends. \
+If you wish to use this material for other purposes, please contact: \par\par \
+ Stg. Publishare \par \
+ c/o Transvaalstraat 5 \par \
+ 3312 EX DORDRECHT \par \
+ The Netherlands \par\par \
+to obtain the latest accurate copy. The Englishman Strong's numbers are \
+not in the public domain and any commercial use requires a licence.
+
diff --git a/examples/classes/Makefile b/examples/classes/Makefile
new file mode 100644
index 0000000..6b7a96c
--- /dev/null
+++ b/examples/classes/Makefile
@@ -0,0 +1,7 @@
+root := ../..
+subdirs :=
+pre-targets :=
+bin := yes
+targets := swmgrex ciphercng
+include ${root}/Makefile.cfg
+
diff --git a/examples/classes/ciphercng.cpp b/examples/classes/ciphercng.cpp
new file mode 100644
index 0000000..9e6e461
--- /dev/null
+++ b/examples/classes/ciphercng.cpp
@@ -0,0 +1,43 @@
+/******************************************************************************
+ *
+ * This example demonstrates how to change the cipher key of a module
+ * The change is only in effect for this run. This DOES NOT change the
+ * cipherkey in the module's .conf file.
+ *
+ */
+
+#include <swmgr.h>
+
+int main(int argc, char **argv) {
+
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s <modName>\n", *argv);
+ exit(-1);
+ }
+
+ SWMgr manager; // create a default manager that looks in the current directory for mods.conf
+ ModMap::iterator it;
+ it = manager.Modules.find(argv[1]);
+
+ if (it == manager.Modules.end()) {
+ fprintf(stderr, "%s: couldn't find module: %s\n", *argv, argv[1]);
+ exit(-1);
+ }
+
+ SWModule *module = (*it).second;
+ string key;
+
+ cout << "\nPress [CTRL-C] to end\n\n";
+ while (true) {
+ cout << "\nModule text:\n";
+ module->SetKey("1jn 1:9");
+ cout << "[ " << module->KeyText() << " ]\n";
+ cout << (const char *)*module;
+ cout << "\n\nEnter new cipher key: ";
+ cin >> key;
+ cout << "\nSetting key to: " << key;
+ manager.setCipherKey(argv[1], (unsigned char *)key.c_str());
+ }
+
+
+}
diff --git a/examples/classes/swmgrex.cpp b/examples/classes/swmgrex.cpp
new file mode 100644
index 0000000..5cb10ba
--- /dev/null
+++ b/examples/classes/swmgrex.cpp
@@ -0,0 +1,52 @@
+/******************************************************************************
+ * Class SWMgr manages installed modules for a frontend.
+ * SWMgr reads a mods.conf file to discover its information.
+ * It then instantiates the correct decendent of SWModule for each
+ * module entry in mods.conf
+ * The developer may use this class to query what modules are installed
+ * and to retrieve an (SWModule *) for any one of these modules
+ *
+ * SWMgr makes its modules available as an STL Map.
+ * The Map definition is typedef'ed as ModMap
+ * ModMap consists of: FIRST : string moduleName
+ * SECOND: SWModule *module
+ *
+ */
+
+#include <swmgr.h>
+
+main() {
+ SWMgr manager; // create a default manager that looks in the current directory for mods.conf
+
+ cout << "\nInstalled Modules:\n\n";
+
+ ModMap::iterator modIterator;
+
+// Loop thru all installed modules and print out information
+
+ for (modIterator = manager.Modules.begin(); modIterator != manager.Modules.end(); modIterator++) {
+ string modName = (*modIterator).first; // mod.conf section name (stored in module->Name())
+ SWModule *module = (*modIterator).second;
+
+ cout << modName << "(" << module->Name() << ") | " << module->Type() << "\n";
+ }
+
+// Print out a verse from the first module:
+
+ cout << "\n" << manager.Modules.begin()->second->KeyText() << ":\n";
+ cout << (const char *)(*manager.Modules.begin()->second);
+ cout << " (" << manager.Modules.begin()->second->Name() << ")\n";
+
+// Print out the same verse from the second module (less confusing):
+
+ modIterator = manager.Modules.begin(); // get first module
+ modIterator++; // increment to next module
+
+ SWModule *mod = modIterator->second;
+
+ cout << "\n" << mod->KeyText() << ":\n";
+// cout << (const char *)(*mod); // we could do this, the same as above
+ mod->Display(); // instead of casting mod to const char * to get its contents, we'll call the default display method that writes to stdout;
+ cout << " (" << mod->Name() << ")\n\n";
+
+}
diff --git a/examples/cmdline/Makefile b/examples/cmdline/Makefile
new file mode 100644
index 0000000..af9522b
--- /dev/null
+++ b/examples/cmdline/Makefile
@@ -0,0 +1,360 @@
+# Makefile.in generated by automake 1.6 from Makefile.am.
+# examples/cmdline/Makefile. Generated from Makefile.in by configure.
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+SHELL = /bin/sh
+
+srcdir = .
+top_srcdir = ../..
+
+prefix = /usr
+exec_prefix = ${prefix}
+
+bindir = ${exec_prefix}/bin
+sbindir = ${exec_prefix}/sbin
+libexecdir = ${exec_prefix}/libexec
+datadir = ${prefix}/share
+sysconfdir = /etc
+sharedstatedir = ${prefix}/com
+localstatedir = ${prefix}/var
+libdir = ${exec_prefix}/lib
+infodir = ${prefix}/info
+mandir = ${prefix}/man
+includedir = ${prefix}/include
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/sword
+pkglibdir = $(libdir)/sword
+pkgincludedir = $(includedir)/sword
+top_builddir = ../..
+
+ACLOCAL = ${SHELL} /space/home/scribe/src/sword/missing --run aclocal
+AUTOCONF = ${SHELL} /space/home/scribe/src/sword/missing --run autoconf
+AUTOMAKE = ${SHELL} /space/home/scribe/src/sword/missing --run automake
+AUTOHEADER = ${SHELL} /space/home/scribe/src/sword/missing --run autoheader
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = s,x,x,
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias =
+host_triplet = i686-pc-linux-gnu
+
+EXEEXT =
+OBJEXT = o
+PATH_SEPARATOR = :
+AMTAR = ${SHELL} /space/home/scribe/src/sword/missing --run tar
+AS = @AS@
+AWK = gawk
+CC = gcc
+CXX = g++
+DEPDIR = .deps
+DLLTOOL = @DLLTOOL@
+ECHO = echo
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+MAINT = #
+OBJDUMP = @OBJDUMP@
+PACKAGE = sword
+RANLIB = ranlib
+STRIP = strip
+VERSION = 1.5.3
+am__include = include
+am__quote =
+dir_confdef = no
+enable_debug = no
+enable_profile = yes
+enable_vcl = no
+install_sh = /space/home/scribe/src/sword/install-sh
+target_cpu = i686
+target_mingw32 = no
+target_os = linux-gnu
+target_system = intel
+target_vendor = pc
+with_conf = no
+with_icu = no
+with_zlib = yes
+AUTOMAKE_OPTIONS = 1.5
+INCLUDES = -I $(top_srcdir)/include
+LDADD = -L$(top_builddir)/lib -lsword
+
+noinst_PROGRAMS = lookup search threaded_search
+
+lookup_SOURCES = lookup.cpp
+search_SOURCES = search.cpp
+threaded_search_SOURCES = threaded_search.cpp
+threaded_search_LDADD = $(LDADD) -lpthread
+subdir = examples/cmdline
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+noinst_PROGRAMS = lookup$(EXEEXT) search$(EXEEXT) \
+ threaded_search$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+
+am_lookup_OBJECTS = lookup.$(OBJEXT)
+lookup_OBJECTS = $(am_lookup_OBJECTS)
+lookup_LDADD = $(LDADD)
+lookup_DEPENDENCIES =
+lookup_LDFLAGS =
+am_search_OBJECTS = search.$(OBJEXT)
+search_OBJECTS = $(am_search_OBJECTS)
+search_LDADD = $(LDADD)
+search_DEPENDENCIES =
+search_LDFLAGS =
+am_threaded_search_OBJECTS = threaded_search.$(OBJEXT)
+threaded_search_OBJECTS = $(am_threaded_search_OBJECTS)
+threaded_search_DEPENDENCIES =
+threaded_search_LDFLAGS =
+
+DEFS = -DHAVE_CONFIG_H
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+CPPFLAGS =
+LDFLAGS =
+LIBS = -lstdc++ -lz
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+DEP_FILES = ./$(DEPDIR)/lookup.Po ./$(DEPDIR)/search.Po \
+ ./$(DEPDIR)/threaded_search.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXFLAGS = -g -O2 -ftemplate-depth-25 -pg
+DIST_SOURCES = $(lookup_SOURCES) $(search_SOURCES) \
+ $(threaded_search_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(lookup_SOURCES) $(search_SOURCES) $(threaded_search_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+$(srcdir)/Makefile.in: # Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/cmdline/Makefile
+Makefile: # $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+lookup$(EXEEXT): $(lookup_OBJECTS) $(lookup_DEPENDENCIES)
+ @rm -f lookup$(EXEEXT)
+ $(CXXLINK) $(lookup_LDFLAGS) $(lookup_OBJECTS) $(lookup_LDADD) $(LIBS)
+search$(EXEEXT): $(search_OBJECTS) $(search_DEPENDENCIES)
+ @rm -f search$(EXEEXT)
+ $(CXXLINK) $(search_LDFLAGS) $(search_OBJECTS) $(search_LDADD) $(LIBS)
+threaded_search$(EXEEXT): $(threaded_search_OBJECTS) $(threaded_search_DEPENDENCIES)
+ @rm -f threaded_search$(EXEEXT)
+ $(CXXLINK) $(threaded_search_LDFLAGS) $(threaded_search_OBJECTS) $(threaded_search_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/lookup.Po
+include ./$(DEPDIR)/search.Po
+include ./$(DEPDIR)/threaded_search.Po
+
+distclean-depend:
+ -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+ source='$<' object='$@' libtool=no \
+ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \
+ $(CXXDEPMODE) $(depcomp) \
+ $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+ source='$<' object='$@' libtool=no \
+ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \
+ $(CXXDEPMODE) $(depcomp) \
+ $(CXXCOMPILE) -c -o $@ `cygpath -w $<`
+
+.cpp.lo:
+ source='$<' object='$@' libtool=yes \
+ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' \
+ $(CXXDEPMODE) $(depcomp) \
+ $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+CXXDEPMODE = depmode=gcc3
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ cp -pR $$d/$$file $(distdir)$$dir \
+ || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+
+installdirs:
+
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+ distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+uninstall-am: uninstall-info-am
+
+.PHONY: GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstPROGRAMS distclean distclean-compile \
+ distclean-depend distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/cmdline/Makefile.am b/examples/cmdline/Makefile.am
new file mode 100644
index 0000000..7f9f6a6
--- /dev/null
+++ b/examples/cmdline/Makefile.am
@@ -0,0 +1,10 @@
+AUTOMAKE_OPTIONS = 1.5
+INCLUDES = -I $(top_srcdir)/include
+LDADD = -L$(top_builddir)/lib -lsword
+
+noinst_PROGRAMS = lookup search threaded_search
+
+lookup_SOURCES = lookup.cpp
+search_SOURCES = search.cpp
+threaded_search_SOURCES = threaded_search.cpp
+threaded_search_LDADD = $(LDADD) -lpthread
diff --git a/examples/cmdline/Makefile.in b/examples/cmdline/Makefile.in
new file mode 100644
index 0000000..9d42d53
--- /dev/null
+++ b/examples/cmdline/Makefile.in
@@ -0,0 +1,360 @@
+# Makefile.in generated by automake 1.6 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+AMTAR = @AMTAR@
+AS = @AS@
+AWK = @AWK@
+CC = @CC@
+CXX = @CXX@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+MAINT = @MAINT@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+STRIP = @STRIP@
+VERSION = @VERSION@
+am__include = @am__include@
+am__quote = @am__quote@
+dir_confdef = @dir_confdef@
+enable_debug = @enable_debug@
+enable_profile = @enable_profile@
+enable_vcl = @enable_vcl@
+install_sh = @install_sh@
+target_cpu = @target_cpu@
+target_mingw32 = @target_mingw32@
+target_os = @target_os@
+target_system = @target_system@
+target_vendor = @target_vendor@
+with_conf = @with_conf@
+with_icu = @with_icu@
+with_zlib = @with_zlib@
+AUTOMAKE_OPTIONS = 1.5
+INCLUDES = -I $(top_srcdir)/include
+LDADD = -L$(top_builddir)/lib -lsword
+
+noinst_PROGRAMS = lookup search threaded_search
+
+lookup_SOURCES = lookup.cpp
+search_SOURCES = search.cpp
+threaded_search_SOURCES = threaded_search.cpp
+threaded_search_LDADD = $(LDADD) -lpthread
+subdir = examples/cmdline
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+noinst_PROGRAMS = lookup$(EXEEXT) search$(EXEEXT) \
+ threaded_search$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+
+am_lookup_OBJECTS = lookup.$(OBJEXT)
+lookup_OBJECTS = $(am_lookup_OBJECTS)
+lookup_LDADD = $(LDADD)
+lookup_DEPENDENCIES =
+lookup_LDFLAGS =
+am_search_OBJECTS = search.$(OBJEXT)
+search_OBJECTS = $(am_search_OBJECTS)
+search_LDADD = $(LDADD)
+search_DEPENDENCIES =
+search_LDFLAGS =
+am_threaded_search_OBJECTS = threaded_search.$(OBJEXT)
+threaded_search_OBJECTS = $(am_threaded_search_OBJECTS)
+threaded_search_DEPENDENCIES =
+threaded_search_LDFLAGS =
+
+DEFS = @DEFS@
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/lookup.Po ./$(DEPDIR)/search.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/threaded_search.Po
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+CXXFLAGS = @CXXFLAGS@
+DIST_SOURCES = $(lookup_SOURCES) $(search_SOURCES) \
+ $(threaded_search_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(lookup_SOURCES) $(search_SOURCES) $(threaded_search_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu examples/cmdline/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+lookup$(EXEEXT): $(lookup_OBJECTS) $(lookup_DEPENDENCIES)
+ @rm -f lookup$(EXEEXT)
+ $(CXXLINK) $(lookup_LDFLAGS) $(lookup_OBJECTS) $(lookup_LDADD) $(LIBS)
+search$(EXEEXT): $(search_OBJECTS) $(search_DEPENDENCIES)
+ @rm -f search$(EXEEXT)
+ $(CXXLINK) $(search_LDFLAGS) $(search_OBJECTS) $(search_LDADD) $(LIBS)
+threaded_search$(EXEEXT): $(threaded_search_OBJECTS) $(threaded_search_DEPENDENCIES)
+ @rm -f threaded_search$(EXEEXT)
+ $(CXXLINK) $(threaded_search_LDFLAGS) $(threaded_search_OBJECTS) $(threaded_search_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threaded_search.Po@am__quote@
+
+distclean-depend:
+ -rm -rf ./$(DEPDIR)
+
+.cpp.o:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+
+.cpp.obj:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CXXCOMPILE) -c -o $@ `cygpath -w $<`
+
+.cpp.lo:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
+CXXDEPMODE = @CXXDEPMODE@
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ cp -pR $$d/$$file $(distdir)$$dir \
+ || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+
+installdirs:
+
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+ distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+uninstall-am: uninstall-info-am
+
+.PHONY: GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstPROGRAMS distclean distclean-compile \
+ distclean-depend distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/examples/cmdline/lookup.cpp b/examples/cmdline/lookup.cpp
new file mode 100644
index 0000000..a244fb3
--- /dev/null
+++ b/examples/cmdline/lookup.cpp
@@ -0,0 +1,51 @@
+#include <stdio.h>
+#include <iostream.h>
+#include <stdlib.h>
+#include <swmgr.h>
+
+int main(int argc, char **argv)
+{
+ SWMgr manager;
+ SWModule *target;
+ ModMap::iterator it;
+
+ if (argc != 3) {
+ fprintf(stderr, "usage: %s <modname> <\"lookup key\">\n", argv[0]);
+ exit(-1);
+ }
+
+ it = manager.Modules.find(argv[1]);
+ if (it == manager.Modules.end()) {
+ fprintf(stderr, "Could not find module [%s]. Available modules:\n", argv[1]);
+ for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) {
+ fprintf(stderr, "[%s]\t - %s\n", (*it).second->Name(), (*it).second->Description());
+ }
+ exit(-1);
+ }
+
+ target = (*it).second;
+
+ target->SetKey(argv[2]);
+
+ (const char *)*target; // force an entry lookup to resolve key so we
+ // get the idxbuf entry for the key
+ cout << (const char *)(SWKey &)*target << ":\n";
+ cout << target->StripText();
+ cout << "\n";
+ cout << "==========================\n";
+ cout << "Entry Attributes:\n\n";
+ AttributeTypeList::iterator i1;
+ AttributeList::iterator i2;
+ AttributeValue::iterator i3;
+ for (i1 = target->getEntryAttributes().begin(); i1 != target->getEntryAttributes().end(); i1++) {
+ cout << "[ " << i1->first << " ]\n";
+ for (i2 = i1->second.begin(); i2 != i1->second.end(); i2++) {
+ cout << "\t[ " << i2->first << " ]\n";
+ for (i3 = i2->second.begin(); i3 != i2->second.end(); i3++) {
+ cout << "\t\t" << i3->first << " = " << i3->second << "\n";
+ }
+ }
+ }
+ cout << endl;
+ return 0;
+}
diff --git a/examples/cmdline/search.cpp b/examples/cmdline/search.cpp
new file mode 100644
index 0000000..519a3f2
--- /dev/null
+++ b/examples/cmdline/search.cpp
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <rawtext.h>
+#include <swmgr.h>
+#include <regex.h> // GNU
+
+void percentUpdate(char percent, void *userData) {
+ static char printed = 0;
+ char maxHashes = *((char *)userData);
+
+ while ((((float)percent)/100) * maxHashes > printed) {
+ cout << "=";
+ printed++;
+ cout.flush();
+ }
+/*
+ cout << (int)percent << "% ";
+*/
+ cout.flush();
+}
+
+
+int main(int argc, char **argv)
+{
+ SWMgr manager;
+ SWModule *target;
+ ListKey listkey;
+ VerseKey vk;
+ ModMap::iterator it;
+
+ if ((argc != 3) && (argc != 5)) {
+ fprintf(stderr, "usage: %s <modname> <\"search string\"> [\"min\" \"max\"]\n", argv[0]);
+ exit(-1);
+ }
+
+ it = manager.Modules.find(argv[1]);
+ if (it == manager.Modules.end()) {
+ fprintf(stderr, "Could not find module [%s]. Available modules:\n", argv[1]);
+ for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) {
+ fprintf(stderr, "[%s]\t - %s\n", (*it).second->Name(), (*it).second->Description());
+ }
+ exit(-1);
+ }
+
+ target = (*it).second;
+
+ if (argc == 5) { // if min / max specified
+ vk.LowerBound(argv[3]);
+ vk.UpperBound(argv[4]);
+ vk.Persist(1);
+ target->SetKey(vk);
+ }
+
+ cout << "[0=================================50===============================100]\n ";
+ char lineLen = 70;
+ listkey = target->Search(argv[2], -2, 0/*REG_ICASE*/, 0, 0, &percentUpdate, &lineLen);
+ cout << "\n";
+ while (!listkey.Error()) {
+ cout << (const char *)listkey << "\n";
+ listkey++;
+ }
+
+}
diff --git a/examples/cmdline/threaded_search.cpp b/examples/cmdline/threaded_search.cpp
new file mode 100755
index 0000000..2db9d30
--- /dev/null
+++ b/examples/cmdline/threaded_search.cpp
@@ -0,0 +1,124 @@
+#include <stdio.h>
+#include <rawtext.h>
+#include <swmgr.h>
+#include <regex.h> // GNU
+#include <listkey.h>
+
+#include <pthread.h>
+
+int cms_currentProgress;
+
+class CSwordModuleSearch {
+public:
+ CSwordModuleSearch();
+ ~CSwordModuleSearch();
+
+ char* m_searchedText;
+ SWModule* m_module;
+ ListKey m_searchResult;
+ bool m_isSearching;
+
+ void startThread();
+ void search();
+};
+
+void* dummy(void* p) {
+ CSwordModuleSearch* moduleSearch = (CSwordModuleSearch*)p;
+ moduleSearch->search();
+
+ return NULL;
+}
+
+void percentUpdate(char percent, void* userData) {
+ cms_currentProgress = (int)percent;
+ cout << cms_currentProgress << "% ";
+}
+
+CSwordModuleSearch::CSwordModuleSearch() {
+ m_isSearching = false;
+ m_module = 0;
+ m_searchedText = 0;
+ cms_currentProgress = -1;
+}
+
+CSwordModuleSearch::~CSwordModuleSearch() {
+}
+
+void CSwordModuleSearch::startThread() {
+ cout << "startThread" << endl;
+ cout.flush();
+
+ pthread_attr_t* attr = new pthread_attr_t;
+ pthread_attr_init(attr);
+ pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);
+
+ pthread_t *thread= new pthread_t;
+ m_isSearching = true;
+ int i = pthread_create(thread, attr, &dummy, this);
+
+ cout << "Created the thread: " << i << endl;
+ cout.flush();
+}
+
+void CSwordModuleSearch::search() {
+
+ if (!m_module) {
+ cout << "Return." << endl;
+ return;
+ }
+
+ ListKey scopeList = VerseKey().ParseVerseList("Luke;John;Revelation","", true);
+ for (int i=0; i < scopeList.Count(); ++i) {
+ cout << (const char*)*scopeList.GetElement(i) << endl;
+ }
+ SWKey* scope = &scopeList;
+
+ m_searchResult = m_module->Search(m_searchedText, -2, REG_ICASE, scope, 0, &percentUpdate);
+
+ if (!scope)
+ cout << "bad scope!" << endl;
+ m_isSearching = false;
+}
+
+int main(int argc, char **argv) {
+ SWMgr manager;
+ ModMap::iterator it;
+ int oldProgress = 0;
+
+ CSwordModuleSearch* moduleSearch = new CSwordModuleSearch();
+
+ if (argc != 3) {
+ fprintf(stderr, "usage: %s <modname> <searched text>\n", argv[0]);
+ exit(-1);
+ }
+
+ it = manager.Modules.find(argv[1]);
+ if (it == manager.Modules.end()) {
+ fprintf(stderr, "Could not find module [%s]. Available modules:\n", argv[1]);
+ for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) {
+ fprintf(stderr, "[%s]\t - %s\n", (*it).second->Name(), (*it).second->Description());
+ }
+ exit(-1);
+ }
+
+ moduleSearch->m_searchedText = argv[2];
+ moduleSearch->m_module = (*it).second;
+ moduleSearch->startThread();
+
+ cout << "Start loop" << endl;
+ cout.flush();
+ while (true) {
+ if (!moduleSearch->m_isSearching)
+ break;
+ else
+ cout.flush();
+ };
+
+ cout << endl << "Number of found items: " << moduleSearch->m_searchResult.Count() << endl;
+ cout << "Finished program" << endl;
+ cout.flush();
+
+ delete moduleSearch;
+ exit(0);
+}
+
diff --git a/examples/windoze/Makefile b/examples/windoze/Makefile
new file mode 100644
index 0000000..4147d02
--- /dev/null
+++ b/examples/windoze/Makefile
@@ -0,0 +1,14 @@
+
+root := ../..
+subdirs :=
+pre-targets :=
+include ${root}/Makefile.cfg
+
+
+s = $(c) $(cpp)
+d = $(c:%.c=%.d) $(cpp:%.cpp=%.d)
+o = $(c:%.c=%.o) $(cpp:%.cpp=%.o)
+
+ifneq ($(nodeps),yes)
+-include $(d)
+endif
diff --git a/examples/windoze/bcowl25/multimod/applsdi.ico b/examples/windoze/bcowl25/multimod/applsdi.ico
new file mode 100644
index 0000000..95a9986
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/applsdi.ico
Binary files differ
diff --git a/examples/windoze/bcowl25/multimod/bookcb.cpp b/examples/windoze/bcowl25/multimod/bookcb.cpp
new file mode 100644
index 0000000..837b2b9
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/bookcb.cpp
@@ -0,0 +1,39 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: bookcb.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of BookCB (TComboBox).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include "bookcb.h"
+
+
+//{{BookCB Implementation}}
+
+
+BookCB::BookCB (TWindow* parent, int id, int x, int y, int w, int h, uint32 style, uint textLen, TModule* module):
+ TComboBox(parent, id, x, y, w, h, style, textLen, module)
+{
+ // INSERT>> Your constructor code here.
+
+}
+
+
+BookCB::~BookCB ()
+{
+ Destroy();
+
+ // INSERT>> Your destructor code here.
+
+}
+
diff --git a/examples/windoze/bcowl25/multimod/bookcb.h b/examples/windoze/bcowl25/multimod/bookcb.h
new file mode 100644
index 0000000..ce770fd
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/bookcb.h
@@ -0,0 +1,34 @@
+#if !defined(__bookcb_h) // Sentry, use file only if it's not already included.
+#define __bookcb_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: bookcb.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for BookCB (TComboBox).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+
+#include "swordapp.rh" // Definition of all resources.
+
+
+//{{TComboBox = BookCB}}
+class BookCB : public TComboBox {
+public:
+ BookCB (TWindow* parent, int id, int x, int y, int w, int h, uint32 style, uint textLen, TModule* module = 0);
+ virtual ~BookCB ();
+}; //{{BookCB}}
+
+
+#endif // __bookcb_h sentry.
+
diff --git a/examples/windoze/bcowl25/multimod/serchdlg.cpp b/examples/windoze/bcowl25/multimod/serchdlg.cpp
new file mode 100644
index 0000000..c58b12c
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/serchdlg.cpp
@@ -0,0 +1,104 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: serchdlg.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of SearchDlg (TDialog).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include "serchdlg.h"
+#include <swdisp.h>
+#include <versekey.h>
+#include <swmodule.h>
+#include <listkey.h>
+
+extern SWDisplay *edit1disp;
+extern SWDisplay *edit2disp;
+extern SWDisplay *edit3disp;
+extern VerseKey *masterkey;
+extern SWModule *webster;
+extern SWModule *mhc;
+extern SWModule *eastons;
+extern SWModule *vines;
+
+ListKey searchlist;
+
+//
+// Build a response table for all messages/commands handled
+// by the application.
+//
+DEFINE_RESPONSE_TABLE1(SearchDlg, TDialog)
+//{{SearchDlgRSP_TBL_BEGIN}}
+ EV_BN_CLICKED(IDC_FIND, FindClicked),
+ EV_LBN_DBLCLK(IDC_LISTBOX1, searchlbox_Dblclk),
+//{{SearchDlgRSP_TBL_END}}
+END_RESPONSE_TABLE;
+
+
+//{{SearchDlg Implementation}}
+
+
+static SearchDlgXfer SearchDlgData;
+
+SearchDlg::SearchDlg (TWindow* parent, TResId resId, TModule* module):
+ TDialog(parent, resId, module)
+{
+//{{SearchDlgXFER_USE}}
+ searchlbox = new TListBox(this, IDC_LISTBOX1);
+
+ SetTransferBuffer(&SearchDlgData);
+//{{SearchDlgXFER_USE_END}}
+
+ // INSERT>> Your constructor code here.
+
+}
+
+
+SearchDlg::~SearchDlg ()
+{
+ Destroy();
+
+ // INSERT>> Your destructor code here.
+
+}
+
+
+void SearchDlg::FindClicked ()
+{
+ char buf[80];
+ int loop;
+
+ SetCaption("Search for Text (Searching...)");
+ GetDlgItemText(IDC_FINDTEXT, buf, 79);
+ searchlbox->ClearList();
+ if (*buf) {
+ for (searchlist = webster->Search(buf); !searchlist.Error(); searchlist++)
+ searchlbox->AddString((char *)searchlist);
+ }
+ SetCaption("Search for Text");
+}
+
+
+void SearchDlg::searchlbox_Dblclk ()
+{
+ char buf[80];
+
+ searchlbox->GetString(buf, searchlbox->GetCaretIndex());
+
+ masterkey->AutoNormalize(0);
+ *masterkey = buf;
+
+ webster->Display();
+ mhc->Display();
+ masterkey->AutoNormalize(0);
+}
+
diff --git a/examples/windoze/bcowl25/multimod/serchdlg.h b/examples/windoze/bcowl25/multimod/serchdlg.h
new file mode 100644
index 0000000..dfb2ad7
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/serchdlg.h
@@ -0,0 +1,55 @@
+#if !defined(__serchdlg_h) // Sentry, use file only if it's not already included.
+#define __serchdlg_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: serchdlg.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for SearchDlg (TDialog).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include <owl\listbox.h>
+
+#include "swordapp.rh" // Definition of all resources.
+
+
+//{{TDialog = SearchDlg}}
+struct SearchDlgXfer {
+//{{SearchDlgXFER_DATA}}
+ TListBoxData searchlbox;
+//{{SearchDlgXFER_DATA_END}}
+};
+
+
+class SearchDlg : public TDialog {
+public:
+ SearchDlg (TWindow* parent, TResId resId = DIALOG_1, TModule* module = 0);
+ virtual ~SearchDlg ();
+
+//{{SearchDlgRSP_TBL_BEGIN}}
+protected:
+ void FindClicked ();
+ void searchlbox_Dblclk ();
+//{{SearchDlgRSP_TBL_END}}
+DECLARE_RESPONSE_TABLE(SearchDlg);
+
+//{{SearchDlgXFER_DEF}}
+protected:
+ TListBox *searchlbox;
+
+//{{SearchDlgXFER_DEF_END}}
+}; //{{SearchDlg}}
+
+
+#endif // __serchdlg_h sentry.
+
diff --git a/examples/windoze/bcowl25/multimod/sword.ide b/examples/windoze/bcowl25/multimod/sword.ide
new file mode 100644
index 0000000..2072c49
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/sword.ide
Binary files differ
diff --git a/examples/windoze/bcowl25/multimod/swordapp.cpp b/examples/windoze/bcowl25/multimod/swordapp.cpp
new file mode 100644
index 0000000..4175f84
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swordapp.cpp
@@ -0,0 +1,135 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swordapp.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of swordApp (TApplication).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+
+#include "swordapp.h"
+#include "swrtdlgc.h" // Definition of client class.
+#include "swrdabtd.h" // Definition of about dialog.
+#include "serchdlg.h"
+
+//{{swordApp Implementation}}
+
+
+//
+// Build a response table for all messages/commands handled
+// by the application.
+//
+DEFINE_RESPONSE_TABLE1(swordApp, TApplication)
+//{{swordAppRSP_TBL_BEGIN}}
+ EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
+//{{swordAppRSP_TBL_END}}
+END_RESPONSE_TABLE;
+
+
+//////////////////////////////////////////////////////////
+// swordApp
+// =====
+//
+swordApp::swordApp () : TApplication("sword")
+{
+
+ // INSERT>> Your constructor code here.
+}
+
+
+swordApp::~swordApp ()
+{
+ // INSERT>> Your destructor code here.
+}
+
+
+//////////////////////////////////////////////////////////
+// swordApp
+// =====
+// Application intialization.
+//
+void swordApp::InitMainWindow ()
+{
+ if (nCmdShow != SW_HIDE)
+ nCmdShow = (nCmdShow != SW_SHOWMINNOACTIVE) ? SW_SHOWNORMAL : nCmdShow;
+
+ SDIDecFrame *frame = new SDIDecFrame(0, GetName(), 0, false);
+ frame->SetFlag(wfShrinkToClient);
+
+ //
+ // Assign ICON w/ this application.
+ //
+ frame->SetIcon(this, IDI_SDIAPPLICATION);
+
+ //
+ // Menu associated with window and accelerator table associated with table.
+ //
+ frame->AssignMenu(SDI_MENU);
+
+ //
+ // Associate with the accelerator table.
+ //
+ frame->Attr.AccelTable = SDI_MENU;
+
+
+ SetMainWindow(frame);
+
+ frame->SetMenuDescr(TMenuDescr(SDI_MENU));
+}
+
+
+//{{SDIDecFrame Implementation}}
+
+
+SDIDecFrame::SDIDecFrame (TWindow *parent, const char far *title, TWindow *clientWnd, bool trackMenuSelection, TModule *module)
+ : TDecoratedFrame(parent, title, clientWnd == 0 ? new swordTDLGClient(0) : clientWnd, trackMenuSelection, module)
+{
+}
+
+
+SDIDecFrame::~SDIDecFrame ()
+{
+ // INSERT>> Your destructor code here.
+
+}
+
+
+//////////////////////////////////////////////////////////
+// swordApp
+// ===========
+// Menu Help About sword.exe command
+void swordApp::CmHelpAbout ()
+{
+ //
+ // Show the modal dialog.
+ //
+ swordAboutDlg(MainWindow).Execute();
+}
+int OwlMain (int , char* [])
+{
+ try {
+ swordApp app;
+ return app.Run();
+ }
+ catch (xmsg& x) {
+ ::MessageBox(0, x.why().c_str(), "Exception", MB_OK);
+ }
+
+ return -1;
+}
+
+void swordApp::SearchText ()
+{
+ SearchDlg(MainWindow).Execute();
+}
+
diff --git a/examples/windoze/bcowl25/multimod/swordapp.def b/examples/windoze/bcowl25/multimod/swordapp.def
new file mode 100644
index 0000000..6fead0f
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swordapp.def
@@ -0,0 +1,19 @@
+;------------------------------------------------
+; Project sword
+;
+; GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+;
+; SUBSYSTEM: sword.exe Module Defintion File
+; FILE: swordapp.def
+; AUTHOR: The Sword Project Team
+;
+;------------------------------------------------
+
+NAME sword
+
+DESCRIPTION 'sword Application - GNU Copyleft GPL © 1995. Almost No Rights Reserved.'
+EXETYPE WINDOWS
+CODE PRELOAD MOVEABLE DISCARDABLE
+DATA PRELOAD MOVEABLE
+HEAPSIZE 4096
+STACKSIZE 8192
diff --git a/examples/windoze/bcowl25/multimod/swordapp.h b/examples/windoze/bcowl25/multimod/swordapp.h
new file mode 100644
index 0000000..776d025
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swordapp.h
@@ -0,0 +1,59 @@
+#if !defined(__swordapp_h) // Sentry, use file only if it's not already included.
+#define __swordapp_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swordapp.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for swordApp (TApplication).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+
+#include "swordapp.rh" // Definition of all resources.
+
+
+//
+// FrameWindow must be derived to override Paint for Preview and Print.
+//
+//{{TDecoratedFrame = SDIDecFrame}}
+class SDIDecFrame : public TDecoratedFrame {
+public:
+ SDIDecFrame (TWindow *parent, const char far *title, TWindow *clientWnd, bool trackMenuSelection = false, TModule *module = 0);
+ ~SDIDecFrame ();
+}; //{{SDIDecFrame}}
+
+
+//{{TApplication = swordApp}}
+class swordApp : public TApplication {
+private:
+
+public:
+ swordApp ();
+ virtual ~swordApp ();
+
+//{{swordAppVIRTUAL_BEGIN}}
+public:
+ virtual void InitMainWindow();
+//{{swordAppVIRTUAL_END}}
+
+//{{swordAppRSP_TBL_BEGIN}}
+protected:
+ void CmHelpAbout ();
+ void SearchText ();
+//{{swordAppRSP_TBL_END}}
+DECLARE_RESPONSE_TABLE(swordApp);
+}; //{{swordApp}}
+
+
+#endif // __swordapp_h sentry.
diff --git a/examples/windoze/bcowl25/multimod/swordapp.rc b/examples/windoze/bcowl25/multimod/swordapp.rc
new file mode 100644
index 0000000..4f3492a
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swordapp.rc
@@ -0,0 +1,369 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swordapp.rc
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ All resources defined here.
+*/
+
+#if !defined(WORKSHOP_INVOKED)
+#include <windows.h>
+#endif
+#include "swordapp.rh"
+
+SDI_MENU MENU
+{
+ POPUP "&File"
+ {
+ MENUITEM "E&xit\tAlt+F4", CM_EXIT
+ }
+
+ MENUITEM SEPARATOR
+ POPUP "&Search"
+ {
+ MENUITEM "&New Search Window", CM_EDITFIND, INACTIVE
+ }
+
+ MENUITEM SEPARATOR
+ MENUITEM SEPARATOR
+ MENUITEM SEPARATOR
+ MENUITEM SEPARATOR
+ POPUP "&Help"
+ {
+ MENUITEM "&About...", CM_HELPABOUT
+ }
+
+}
+
+
+// Accelerator table for short-cut to menu commands. (include\owl\editfile.rc)
+SDI_MENU ACCELERATORS
+BEGIN
+ VK_DELETE, CM_EDITDELETE, VIRTKEY
+ VK_DELETE, CM_EDITCUT, VIRTKEY, SHIFT
+ VK_INSERT, CM_EDITCOPY, VIRTKEY, CONTROL
+ VK_INSERT, CM_EDITPASTE, VIRTKEY, SHIFT
+ VK_DELETE, CM_EDITCLEAR, VIRTKEY, CONTROL
+ VK_BACK, CM_EDITUNDO, VIRTKEY, ALT
+ VK_F3, CM_EDITFINDNEXT, VIRTKEY
+END
+
+
+//
+// Table of help hints displayed in the status bar.
+//
+STRINGTABLE
+BEGIN
+ -1, "File/document operations"
+ CM_FILENEW, "Creates a new window"
+ CM_FILEOPEN, "Opens a window"
+ CM_FILECLOSE, "Close this document"
+ CM_FILESAVE, "Saves this document"
+ CM_FILESAVEAS, "Saves this document with a new name"
+ CM_EXIT, "Quits swordApp and prompts to save the documents"
+ CM_EDITUNDO-1, "Edit operations"
+ CM_EDITUNDO, "Reverses the last operation"
+ CM_EDITCUT, "Cuts the selection and puts it on the Clipboard"
+ CM_EDITCOPY, "Copies the selection and puts it on the Clipboard"
+ CM_EDITPASTE, "Inserts the clipboard contents at the insertion point"
+ CM_EDITDELETE, "Deletes the selection"
+ CM_EDITCLEAR, "Clear the document"
+ CM_EDITADD, "Insert a new line"
+ CM_EDITEDIT, "Edit the current line"
+ CM_EDITFIND-1, "Search/replace operations"
+ CM_EDITFIND, "Finds the specified text"
+ CM_EDITREPLACE, "Finds the specified text and changes it"
+ CM_EDITFINDNEXT, "Finds the next match"
+ CM_HELPABOUT-1, "Access About"
+ CM_HELPABOUT, "About the sword application"
+END
+
+
+//
+// OWL string table
+//
+
+// EditFile (include\owl\editfile.rc and include\owl\editsear.rc)
+STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
+BEGIN
+ IDS_CANNOTFIND, "Cannot find ""%s""."
+ IDS_UNTITLED, "Document"
+ IDS_UNABLEREAD, "Unable to read file %s from disk."
+ IDS_UNABLEWRITE, "Unable to write file %s to disk."
+ IDS_FILECHANGED, "The text in the %s file has changed.\n\nDo you want to save the changes?"
+ IDS_FILEFILTER, "Text files (*.TXT)|*.TXT|AllFiles (*.*)|*.*|"
+END
+
+
+// Exception string resources (include\owl\except.rc)
+STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
+BEGIN
+ IDS_OWLEXCEPTION, "ObjectWindows Exception"
+ IDS_UNHANDLEDXMSG, "Unhandled Exception"
+ IDS_OKTORESUME, "OK to resume?"
+ IDS_UNKNOWNEXCEPTION, "Unknown exception"
+
+ IDS_UNKNOWNERROR, "Unknown error"
+ IDS_NOAPP, "No application object"
+ IDS_OUTOFMEMORY, "Out of memory"
+ IDS_INVALIDMODULE, "Invalid module specified for window"
+ IDS_INVALIDMAINWINDOW, "Invalid MainWindow"
+ IDS_VBXLIBRARYFAIL, "VBX Library init failure"
+
+ IDS_INVALIDWINDOW, "Invalid window %s"
+ IDS_INVALIDCHILDWINDOW, "Invalid child window %s"
+ IDS_INVALIDCLIENTWINDOW, "Invalid client window %s"
+
+ IDS_CLASSREGISTERFAIL, "Class registration fail for window %s"
+ IDS_CHILDREGISTERFAIL, "Child class registration fail for window %s"
+ IDS_WINDOWCREATEFAIL, "Create fail for window %s"
+ IDS_WINDOWEXECUTEFAIL, "Execute fail for window %s"
+ IDS_CHILDCREATEFAIL, "Child create fail for window %s"
+
+ IDS_MENUFAILURE, "Menu creation failure"
+ IDS_VALIDATORSYNTAX, "Validator syntax error"
+ IDS_PRINTERERROR, "Printer error"
+
+ IDS_LAYOUTINCOMPLETE, "Incomplete layout constraints specified in window %s"
+ IDS_LAYOUTBADRELWIN, "Invalid relative window specified in layout constraint in window %s"
+
+ IDS_GDIFAILURE, "GDI failure"
+ IDS_GDIALLOCFAIL, "GDI allocate failure"
+ IDS_GDICREATEFAIL, "GDI creation failure"
+ IDS_GDIRESLOADFAIL, "GDI resource load failure"
+ IDS_GDIFILEREADFAIL, "GDI file read failure"
+ IDS_GDIDELETEFAIL, "GDI object %X delete failure"
+ IDS_GDIDESTROYFAIL, "GDI object %X destroy failure"
+ IDS_INVALIDDIBHANDLE, "Invalid DIB handle %X"
+END
+
+
+// General Window's status bar messages. (include\owl\statusba.rc)
+STRINGTABLE
+BEGIN
+ IDS_MODES "EXT|CAPS|NUM|SCRL|OVR|REC"
+ IDS_MODESOFF " | | | | | "
+ SC_SIZE, "Changes the size of the window"
+ SC_MOVE, "Moves the window to another position"
+ SC_MINIMIZE, "Reduces the window to an icon"
+ SC_MAXIMIZE, "Enlarges the window to it maximum size"
+ SC_RESTORE, "Restores the window to its previous size"
+ SC_CLOSE, "Closes the window"
+ SC_TASKLIST, "Opens task list"
+ SC_NEXTWINDOW, "Switches to next window"
+END
+
+
+// Validator messages (include\owl\validate.rc)
+STRINGTABLE LOADONCALL MOVEABLE DISCARDABLE
+BEGIN
+ IDS_VALPXPCONFORM "Input does not conform to picture:\n""%s"""
+ IDS_VALINVALIDCHAR "Invalid character in input"
+ IDS_VALNOTINRANGE "Value is not in the range %ld to %ld."
+ IDS_VALNOTINLIST "Input is not in valid-list"
+END
+
+
+//
+// Misc application definitions
+//
+
+// Application ICON
+IDI_SDIAPPLICATION ICON "applsdi.ico"
+
+
+// Client Dialog
+IDD_CLIENT DIALOG 6, 32, 328, 275
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog Client"
+FONT 8, "MS Sans Serif"
+{
+ COMBOBOX IDC_BOOK, 9, 13, 77, 140, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ EDITTEXT IDC_CHAPTER, 90, 13, 16, 12
+ EDITTEXT IDC_VERSE, 112, 13, 16, 12
+ DEFPUSHBUTTON "&Lookup ->", IDC_LOOKUP, 130, 12, 40, 14
+ PUSHBUTTON "^", IDC_UPBUTTON, 163, 44, 6, 10
+ PUSHBUTTON "v", IDC_DOWNBUTTON, 163, 164, 6, 10
+ EDITTEXT IDC_VTEXT, 3, 44, 160, 130, ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ EDITTEXT IDC_CTEXT, 169, 44, 157, 130, ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ EDITTEXT IDC_DTEXT, 3, 188, 324, 84, ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP
+ EDITTEXT IDC_KTEXT, 179, 13, 107, 12, ES_READONLY | WS_BORDER | WS_TABSTOP
+ LTEXT "AV with Webster's Updates", -1, 7, 35, 93, 8
+ LTEXT "Matthew Henry's Commentary", -1, 173, 35, 127, 8
+ LTEXT ":", -1, 108, 14, 1, 8
+ CTEXT "Easton's Bible Dictionary", IDC_LDNAME, 111, 178, 106, 8
+ LTEXT "Key:", -1, 5, 178, 18, 8
+ LTEXT "", IDC_LDKEY, 24, 178, 60, 8
+}
+
+
+// About box.
+IDD_ABOUT DIALOG 12, 17, 204, 65
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About sword"
+FONT 8, "MS Sans Serif"
+{
+ CTEXT "Version", IDC_VERSION, 2, 14, 200, 8, SS_NOPREFIX
+ CTEXT "The Sword Project", -1, 2, 4, 200, 8, SS_NOPREFIX
+ CTEXT "", IDC_COPYRIGHT, 2, 27, 200, 17, SS_NOPREFIX
+ RTEXT "", IDC_DEBUG, 136, 55, 66, 8, SS_NOPREFIX
+ ICON IDI_SDIAPPLICATION, -1, 2, 2, 18, 20
+ DEFPUSHBUTTON "OK", IDOK, 82, 48, 40, 14
+}
+
+
+// TInputDialog class dialog box.
+IDD_INPUTDIALOG DIALOG 20, 24, 180, 64
+STYLE WS_POPUP | WS_CAPTION | DS_SETFONT
+FONT 8, "Helv"
+BEGIN
+ LTEXT "", ID_PROMPT, 10, 8, 160, 10, SS_NOPREFIX
+ CONTROL "", ID_INPUT, "EDIT", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL, 10, 20, 160, 12
+ DEFPUSHBUTTON "&OK", IDOK, 47, 42, 40, 14
+ PUSHBUTTON "&Cancel", IDCANCEL, 93, 42, 40, 14
+END
+
+
+// Horizontal slider thumb bitmap for TSlider and VSlider (include\owl\slider.rc)
+IDB_HSLIDERTHUMB BITMAP PRELOAD MOVEABLE DISCARDABLE
+BEGIN
+ '42 4D 66 01 00 00 00 00 00 00 76 00 00 00 28 00'
+ '00 00 12 00 00 00 14 00 00 00 01 00 04 00 00 00'
+ '00 00 F0 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 10 00 00 00 00 00 00 00 00 00 C0 00 00 C0'
+ '00 00 00 C0 C0 00 C0 00 00 00 C0 00 C0 00 C0 C0'
+ '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
+ '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
+ '00 00 FF FF FF 00 BB BB 0B BB BB BB B0 BB BB 00'
+ '00 00 BB B0 80 BB BB BB 08 0B BB 00 00 00 BB 08'
+ 'F8 0B BB B0 87 70 BB 00 00 00 B0 8F F8 80 BB 08'
+ '77 77 0B 00 00 00 08 F8 88 88 00 88 88 87 70 00'
+ '00 00 0F F7 77 88 00 88 77 77 70 00 00 00 0F F8'
+ '88 88 00 88 88 87 70 00 00 00 0F F7 77 88 00 88'
+ '77 77 70 00 00 00 0F F8 88 88 00 88 88 87 70 00'
+ '00 00 0F F7 77 88 00 88 77 77 70 00 00 00 0F F8'
+ '88 88 00 88 88 87 70 00 00 00 0F F7 77 88 00 88'
+ '77 77 70 00 00 00 0F F8 88 88 00 88 88 87 70 00'
+ '00 00 0F F7 77 88 00 88 77 77 70 00 00 00 0F F8'
+ '88 88 00 88 88 87 70 00 00 00 0F F7 77 88 00 88'
+ '77 77 70 00 00 00 0F F8 88 88 00 88 88 87 70 00'
+ '00 00 0F F7 77 78 00 88 77 77 70 00 00 00 0F FF'
+ 'FF FF 00 88 88 88 80 00 00 00 B0 00 00 00 BB 00'
+ '00 00 0B 00 00 00'
+END
+
+
+// Vertical slider thumb bitmap for TSlider and HSlider (include\owl\slider.rc)
+IDB_VSLIDERTHUMB BITMAP PRELOAD MOVEABLE DISCARDABLE
+BEGIN
+ '42 4D 2A 01 00 00 00 00 00 00 76 00 00 00 28 00'
+ '00 00 28 00 00 00 09 00 00 00 01 00 04 00 00 00'
+ '00 00 B4 00 00 00 00 00 00 00 00 00 00 00 00 00'
+ '00 00 10 00 00 00 00 00 00 00 00 00 C0 00 00 C0'
+ '00 00 00 C0 C0 00 C0 00 00 00 C0 00 C0 00 C0 C0'
+ '00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
+ '00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
+ '00 00 FF FF FF 00 B0 00 00 00 00 00 00 00 00 0B'
+ 'B0 00 00 00 00 00 00 00 00 0B 0F 88 88 88 88 88'
+ '88 88 88 80 08 88 88 88 88 88 88 88 88 80 0F 77'
+ '77 77 77 77 77 77 77 80 08 77 77 77 77 77 77 77'
+ '77 80 0F 77 FF FF FF FF FF FF F7 80 08 77 FF FF'
+ 'FF FF FF FF F7 80 0F 70 00 00 00 00 00 00 77 80'
+ '08 70 00 00 00 00 00 00 77 80 0F 77 77 77 77 77'
+ '77 77 77 80 08 77 77 77 77 77 77 77 77 80 0F 77'
+ '77 77 77 77 77 77 77 80 08 77 77 77 77 77 77 77'
+ '77 80 0F FF FF FF FF FF FF FF FF F0 08 88 88 88'
+ '88 88 88 88 88 80 B0 00 00 00 00 00 00 00 00 0B'
+ 'B0 00 00 00 00 00 00 00 00 0B'
+END
+
+
+// Version info.
+//
+#if !defined(__DEBUG_)
+// Non-Debug VERSIONINFO
+1 VERSIONINFO
+FILEVERSION 0, 1, 0, 0
+PRODUCTVERSION 0, 1, 0, 0
+FILEFLAGSMASK 0
+FILEFLAGS VS_FFI_FILEFLAGSMASK
+FILEOS VOS__WINDOWS16
+FILETYPE VFT_APP
+{
+ BLOCK "StringFileInfo"
+ {
+ BLOCK "040904E4"
+ {
+ VALUE "CompanyName", "\000"
+ VALUE "FileDescription", "Sword for Windows\000"
+ VALUE "FileVersion", "0.0000001\000"
+ VALUE "InternalName", "Sword\000"
+ VALUE "LegalCopyright", "GNU Copyleft GPL © 1996. CrossWire Software. See LICENSE.DOC for more info.\000"
+ VALUE "LegalTrademarks", "Windows (TM) is a trademark of Microsoft Corporation\000"
+ VALUE "OriginalFilename", "sword.EXE\000"
+ VALUE "ProductName", "sword\000"
+ VALUE "ProductVersion", "0.0000001\000"
+ }
+
+ }
+
+ BLOCK "VarFileInfo"
+ {
+ VALUE "Translation", 0x0409, 0x04e4
+ }
+
+}
+#else
+
+// Debug VERSIONINFO
+1 VERSIONINFO LOADONCALL MOVEABLE
+FILEVERSION 0, 1, 0, 0
+PRODUCTVERSION 0, 1, 0, 0
+FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE | VS_FF_PATCHED | VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD
+FILEFLAGS VS_FFI_FILEFLAGSMASK
+FILEOS VOS__WINDOWS16
+FILETYPE VFT_APP
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ // Language type = U.S. English (0x0409) and Character Set = Windows, Multilingual(0x04e4)
+ BLOCK "040904E4" // Matches VarFileInfo Translation hex value.
+ BEGIN
+ VALUE "CompanyName", "\000"
+ VALUE "FileDescription", "sword for Windows\000"
+ VALUE "FileVersion", "0.0000001\000"
+ VALUE "InternalName", "sword\000"
+ VALUE "LegalCopyright", "GNU Copyleft GPL © 1995. Almost No Rights Reserved.\000"
+ VALUE "LegalTrademarks", "Windows (TM) is a trademark of Microsoft Corporation\000"
+ VALUE "OriginalFilename", "sword.EXE\000"
+ VALUE "ProductName", "sword\000"
+ VALUE "ProductVersion", "0.0000001\000"
+ VALUE "SpecialBuild", "Debug Version\000"
+ VALUE "PrivateBuild", "Built by The Sword Project Team\000"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0x04e4 // U.S. English(0x0409) & Windows Multilingual(0x04e4) 1252
+ END
+
+END
+#endif
+DIALOG_1 DIALOG 10, 20, 153, 88
+STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION "Search for Text"
+FONT 8, "MS Sans Serif"
+{
+ EDITTEXT IDC_FINDTEXT, 3, 6, 69, 12
+ DEFPUSHBUTTON "Find", IDC_FIND, 76, 5, 32, 14
+ LISTBOX IDC_LISTBOX1, 2, 30, 148, 59, LBS_NOTIFY | WS_BORDER | WS_BORDER | WS_VSCROLL
+ PUSHBUTTON "Close", IDOK, 112, 5, 38, 14
+ LTEXT "Results:", -1, 3, 21, 34, 8
+}
diff --git a/examples/windoze/bcowl25/multimod/swordapp.rh b/examples/windoze/bcowl25/multimod/swordapp.rh
new file mode 100644
index 0000000..a7378a8
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swordapp.rh
@@ -0,0 +1,196 @@
+//#if !defined(__swordapp_rh) // Sentry use file only if it's not already included.
+//#define __swordapp_rh
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swordapp.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Constant definitions for all resources defined in swordapp.rc.
+*/
+
+
+//
+// IDHELP BorButton for BWCC dialogs.
+//
+#define IDHELP 998 // Id of help button
+
+
+//
+// Application specific definitions:
+//
+#define DIALOG_1 1
+#define IDC_FIND 102
+#define IDC_LISTBOX1 103
+#define IDC_FINDTEXT 101
+#define IDI_SDIAPPLICATION 1001 // Application icon
+#define CM_VBDLOOKUP 112
+#define CM_EBDLOOKUP 109
+
+#define SDI_MENU 100 // Menu resource ID and Accelerator IDs
+
+//
+// CM_FILEnnnn commands (include\owl\editfile.rh except for CM_FILEPRINTPREVIEW)
+//
+#define CM_FILENEW 24331 // SDI New
+#define CM_FILEOPEN 24332 // SDI Open
+#define CM_FILECLOSE 24339
+#define CM_FILESAVE 24333
+#define CM_FILESAVEAS 24334
+
+
+//
+// Window commands (include\owl\window.rh)
+//
+#define CM_EXIT 24310
+
+
+//
+// CM_EDITnnnn commands (include\owl\window.rh)
+//
+#define CM_EDITUNDO 24321
+#define CM_EDITCUT 24322
+#define CM_EDITCOPY 24323
+#define CM_EDITPASTE 24324
+#define CM_EDITDELETE 24325
+#define CM_EDITCLEAR 24326
+#define CM_EDITADD 24327
+#define CM_EDITEDIT 24328
+
+
+//
+// Search menu commands (include\owl\editsear.rh)
+//
+#define CM_EDITFIND 24351
+#define CM_EDITREPLACE 24352
+#define CM_EDITFINDNEXT 24353
+
+
+//
+// Help menu commands.
+//
+#define CM_HELPABOUT 2009
+
+
+//
+// About Dialogs
+//
+#define IDD_ABOUT 22000
+#define IDC_VERSION 22001
+#define IDC_COPYRIGHT 22002
+#define IDC_DEBUG 22003
+
+
+//
+// Client Dialog
+//
+#define IDD_CLIENT 2000
+#define IDC_VTEXT 101
+#define IDC_KTEXT 102
+#define IDC_LDNAME 110
+#define IDC_LDKEY 111
+#define IDC_UPBUTTON 109
+#define IDC_DOWNBUTTON 112
+#define IDC_CTEXT 103
+#define IDC_DTEXT 108
+#define IDC_VERSE 106
+#define IDC_CHAPTER 105
+#define IDC_BOOK 104
+#define IDC_LOOKUP 107
+
+
+//
+// OWL defined strings
+//
+
+// Statusbar
+#define IDS_MODES 32530
+#define IDS_MODESOFF 32531
+
+
+// EditFile
+#define IDS_UNTITLED 32550
+#define IDS_UNABLEREAD 32551
+#define IDS_UNABLEWRITE 32552
+#define IDS_FILECHANGED 32553
+#define IDS_FILEFILTER 32554
+
+// EditSearch
+#define IDS_CANNOTFIND 32540
+
+
+//
+// General & application exception messages (include\owl\except.rh)
+//
+#define IDS_UNKNOWNEXCEPTION 32767
+#define IDS_OWLEXCEPTION 32766
+#define IDS_OKTORESUME 32765
+#define IDS_UNHANDLEDXMSG 32764
+#define IDS_UNKNOWNERROR 32763
+#define IDS_NOAPP 32762
+#define IDS_OUTOFMEMORY 32761
+#define IDS_INVALIDMODULE 32760
+#define IDS_INVALIDMAINWINDOW 32759
+#define IDS_VBXLIBRARYFAIL 32758
+
+//
+// Owl 1 compatibility messages
+//
+#define IDS_INVALIDWINDOW 32756
+#define IDS_INVALIDCHILDWINDOW 32755
+#define IDS_INVALIDCLIENTWINDOW 32754
+
+//
+// TXWindow messages
+//
+#define IDS_CLASSREGISTERFAIL 32749
+#define IDS_CHILDREGISTERFAIL 32748
+#define IDS_WINDOWCREATEFAIL 32747
+#define IDS_WINDOWEXECUTEFAIL 32746
+#define IDS_CHILDCREATEFAIL 32745
+
+#define IDS_MENUFAILURE 32744
+#define IDS_VALIDATORSYNTAX 32743
+#define IDS_PRINTERERROR 32742
+
+#define IDS_LAYOUTINCOMPLETE 32741
+#define IDS_LAYOUTBADRELWIN 32740
+
+//
+// TXGdi messages
+//
+#define IDS_GDIFAILURE 32739
+#define IDS_GDIALLOCFAIL 32738
+#define IDS_GDICREATEFAIL 32737
+#define IDS_GDIRESLOADFAIL 32736
+#define IDS_GDIFILEREADFAIL 32735
+#define IDS_GDIDELETEFAIL 32734
+#define IDS_GDIDESTROYFAIL 32733
+#define IDS_INVALIDDIBHANDLE 32732
+
+
+// TInputDialog DIALOG resource (include\owl\inputdia.rh)
+#define IDD_INPUTDIALOG 32514
+#define ID_PROMPT 4091
+#define ID_INPUT 4090
+
+
+// TSlider bitmaps (horizontal and vertical) (include\owl\slider.rh)
+#define IDB_HSLIDERTHUMB 32000
+#define IDB_VSLIDERTHUMB 32001
+
+
+// Validation messages (include\owl\validate.rh)
+#define IDS_VALPXPCONFORM 32520
+#define IDS_VALINVALIDCHAR 32521
+#define IDS_VALNOTINRANGE 32522
+#define IDS_VALNOTINLIST 32523
+
+
+//#endif // __swordapp_rh sentry.
diff --git a/examples/windoze/bcowl25/multimod/swrdabtd.cpp b/examples/windoze/bcowl25/multimod/swrdabtd.cpp
new file mode 100644
index 0000000..ca43db2
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swrdabtd.cpp
@@ -0,0 +1,175 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swrdabtd.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of swordAboutDlg (TDialog).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#if !defined(__FLAT__)
+#include <ver.h>
+#endif
+
+#include "swordapp.h"
+#include "swrdabtd.h"
+
+
+ProjectRCVersion::ProjectRCVersion (TModule *module)
+{
+ char appFName[255];
+ char subBlockName[255];
+ DWORD fvHandle;
+ UINT vSize;
+
+ FVData = 0;
+
+ module->GetModuleFileName(appFName, sizeof(appFName));
+ OemToAnsi(appFName, appFName);
+ DWORD dwSize = ::GetFileVersionInfoSize(appFName, &fvHandle);
+ if (dwSize) {
+ FVData = (void FAR *)new char[(UINT)dwSize];
+ if (::GetFileVersionInfo(appFName, fvHandle, dwSize, FVData)) {
+ // Copy string to buffer so if the -dc compiler switch (Put constant strings in code segments)
+ // is on VerQueryValue will work under Win16. This works around a problem in Microsoft's ver.dll
+ // which writes to the string pointed to by subBlockName.
+ strcpy(subBlockName, "\\VarFileInfo\\Translation");
+ if (!::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&TransBlock, &vSize)) {
+ delete[] FVData;
+ FVData = 0;
+ } else
+ // Swap the words so wsprintf will print the lang-charset in the correct format.
+ *(DWORD *)TransBlock = MAKELONG(HIWORD(*(DWORD *)TransBlock), LOWORD(*(DWORD *)TransBlock));
+ }
+ }
+}
+
+
+ProjectRCVersion::~ProjectRCVersion ()
+{
+ if (FVData)
+ delete[] FVData;
+}
+
+
+bool ProjectRCVersion::GetProductName (LPSTR &prodName)
+{
+ UINT vSize;
+ char subBlockName[255];
+
+ if (FVData) {
+ wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductName");
+ return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodName, &vSize) : false;
+ } else
+ return false;
+}
+
+
+bool ProjectRCVersion::GetProductVersion (LPSTR &prodVersion)
+{
+ UINT vSize;
+ char subBlockName[255];
+
+ if (FVData) {
+ wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"ProductVersion");
+ return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&prodVersion, &vSize) : false;
+ } else
+ return false;
+}
+
+
+bool ProjectRCVersion::GetCopyright (LPSTR &copyright)
+{
+ UINT vSize;
+ char subBlockName[255];
+
+ if (FVData) {
+ wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"LegalCopyright");
+ return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&copyright, &vSize) : false;
+ } else
+ return false;
+}
+
+
+bool ProjectRCVersion::GetDebug (LPSTR &debug)
+{
+ UINT vSize;
+ char subBlockName[255];
+
+ if (FVData) {
+ wsprintf(subBlockName, "\\StringFileInfo\\%08lx\\%s", *(DWORD *)TransBlock, (LPSTR)"SpecialBuild");
+ return FVData ? ::VerQueryValue(FVData, subBlockName, (void FAR* FAR*)&debug, &vSize) : false;
+ } else
+ return false;
+}
+
+
+//{{swordAboutDlg Implementation}}
+
+
+//////////////////////////////////////////////////////////
+// swordAboutDlg
+// ==========
+// Construction/Destruction handling.
+swordAboutDlg::swordAboutDlg (TWindow *parent, TResId resId, TModule *module)
+ : TDialog(parent, resId, module)
+{
+ // INSERT>> Your constructor code here.
+}
+
+
+swordAboutDlg::~swordAboutDlg ()
+{
+ Destroy();
+
+ // INSERT>> Your destructor code here.
+}
+
+
+void swordAboutDlg::SetupWindow ()
+{
+ LPSTR prodName = 0, prodVersion = 0, copyright = 0, debug = 0;
+
+ // Get the static text for the value based on VERSIONINFO.
+ TStatic *versionCtrl = new TStatic(this, IDC_VERSION, 255);
+ TStatic *copyrightCtrl = new TStatic(this, IDC_COPYRIGHT, 255);
+ TStatic *debugCtrl = new TStatic(this, IDC_DEBUG, 255);
+
+ TDialog::SetupWindow();
+
+ // Process the VERSIONINFO.
+ ProjectRCVersion applVersion(GetModule());
+
+ // Get the product name and product version strings.
+ if (applVersion.GetProductName(prodName) && applVersion.GetProductVersion(prodVersion)) {
+ // IDC_VERSION is the product name and version number, the initial value of IDC_VERSION is
+ // the word Version (in whatever language) product name VERSION product version.
+ char buffer[255];
+ char versionName[128];
+
+ buffer[0] = '\0';
+ versionName[0] = '\0';
+
+ versionCtrl->GetText(versionName, sizeof(versionName));
+ wsprintf(buffer, "%s %s %s", prodName, versionName, prodVersion);
+
+ versionCtrl->SetText(buffer);
+ }
+
+ //Get the legal copyright string.
+ if (applVersion.GetCopyright(copyright))
+ copyrightCtrl->SetText(copyright);
+
+ // Only get the SpecialBuild text if the VERSIONINFO resource is there.
+ if (applVersion.GetDebug(debug))
+ debugCtrl->SetText(debug);
+}
diff --git a/examples/windoze/bcowl25/multimod/swrdabtd.h b/examples/windoze/bcowl25/multimod/swrdabtd.h
new file mode 100644
index 0000000..dd091ae
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swrdabtd.h
@@ -0,0 +1,60 @@
+#if !defined(__swrdabtd_h) // Sentry, use file only if it's not already included.
+#define __swrdabtd_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swrdabtd.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for swordAboutDlg (TDialog).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include "swordapp.rh" // Definition of all resources.
+
+
+//{{TDialog = swordAboutDlg}}
+class swordAboutDlg : public TDialog {
+public:
+ swordAboutDlg (TWindow *parent, TResId resId = IDD_ABOUT, TModule *module = 0);
+ virtual ~swordAboutDlg ();
+
+//{{swordAboutDlgVIRTUAL_BEGIN}}
+public:
+ void SetupWindow ();
+//{{swordAboutDlgVIRTUAL_END}}
+}; //{{swordAboutDlg}}
+
+
+// Reading the VERSIONINFO resource.
+class ProjectRCVersion {
+public:
+ ProjectRCVersion (TModule *module);
+ virtual ~ProjectRCVersion ();
+
+ bool GetProductName (LPSTR &prodName);
+ bool GetProductVersion (LPSTR &prodVersion);
+ bool GetCopyright (LPSTR &copyright);
+ bool GetDebug (LPSTR &debug);
+
+protected:
+ LPBYTE TransBlock;
+ void FAR *FVData;
+
+private:
+ // Don't allow this object to be copied.
+ ProjectRCVersion (const ProjectRCVersion &);
+ ProjectRCVersion & operator =(const ProjectRCVersion &);
+};
+
+
+#endif // __swrdabtd_h sentry.
diff --git a/examples/windoze/bcowl25/multimod/swrtdlgc.cpp b/examples/windoze/bcowl25/multimod/swrtdlgc.cpp
new file mode 100644
index 0000000..44e93ca
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swrtdlgc.cpp
@@ -0,0 +1,213 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1996. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swrtdlgc.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of swordTDLGClient (TDialog).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include "tversedt.h"
+#include "swordapp.h"
+#include "swrtdlgc.h"
+#include "serchdlg.h"
+
+#include <versekey.h>
+#include <rawtext.h>
+#include <rawcom.h>
+#include <rawld.h>
+#include <tbdisp.h>
+
+
+class TBLDDisp: public TBDisp {
+ int nameid, keyid;
+public:
+ TBLDDisp(HWND iwnd, int ictrlid, int inameid = 0, int ikeyid = 0):TBDisp(iwnd, ictrlid) {
+ nameid = inameid;
+ keyid = ikeyid;
+ }
+ virtual char Display(SWModule &imodule) {
+ TBDisp::Display(imodule);
+ if (nameid)
+ SetDlgItemText(wnd, nameid, imodule.Description());
+ if (keyid)
+ SetDlgItemText(wnd, keyid, (char *)(SWKey)imodule);
+ }
+};
+
+
+SWDisplay *edit1disp = 0;
+SWDisplay *edit2disp = 0;
+SWDisplay *edit3disp = 0;
+VerseKey *masterkey = 0;
+SWModule *webster = 0;
+SWModule *mhc = 0;
+SWModule *eastons = 0;
+SWModule *vines = 0;
+
+//
+// Build a response table for all messages/commands handled
+// by the application.
+//
+DEFINE_RESPONSE_TABLE1(swordTDLGClient, TDialog)
+//{{swordTDLGClientRSP_TBL_BEGIN}}
+ EV_BN_CLICKED(IDC_LOOKUP, BNClicked),
+ EV_WM_RBUTTONDOWN,
+ EV_BN_CLICKED(IDC_UPBUTTON, UpVerse),
+ EV_BN_CLICKED(IDC_DOWNBUTTON, DownVerse),
+ EV_COMMAND(CM_EDITFIND, SearchTxt),
+//{{swordTDLGClientRSP_TBL_END}}
+END_RESPONSE_TABLE;
+
+
+// SWLookup This is a kludgy way to lookup, but a Module manager will do
+// this work in the future
+void SWLookup(char *modname, SWKey &key)
+{
+ if (!stricmp(modname, eastons->Name())) {
+ eastons->SetKey(key);
+ eastons->Display();
+ }
+ if (!stricmp(modname, vines->Name())) {
+ vines->SetKey(key);
+ vines->Display();
+ }
+}
+
+
+
+
+//{{swordTDLGClient Implementation}}
+
+
+//////////////////////////////////////////////////////////
+// swordTDLGClient
+// ==========
+// Construction/Destruction handling.
+static swordTDLGClientXfer swordTDLGClientData;
+
+swordTDLGClient::swordTDLGClient (TWindow *parent, TResId resId, TModule *module)
+ : TDialog(parent, resId, module)
+{
+//{{swordTDLGClientXFER_USE}}
+ BookCB = new TComboBox(this, IDC_BOOK, 1);
+ WebEdit = new TVerseEdit(this, IDC_VTEXT, 255);
+ MHCEdit = new TVerseEdit(this, IDC_CTEXT, 255);
+ LDText = new TVerseEdit(this, IDC_DTEXT, 255);
+
+ SetTransferBuffer(&swordTDLGClientData);
+//{{swordTDLGClientXFER_USE_END}}
+
+}
+
+
+swordTDLGClient::~swordTDLGClient ()
+{
+ Destroy();
+
+ delete edit1disp;
+ delete edit2disp;
+ delete edit3disp;
+ delete webster;
+ delete mhc;
+ delete eastons;
+ delete vines;
+ delete masterkey;
+}
+
+
+void swordTDLGClient::SetupWindow ()
+{
+ char loop1, loop2;
+
+ TDialog::SetupWindow();
+
+ edit1disp = new TBLDDisp(HWindow, IDC_VTEXT, 0, IDC_KTEXT);
+ edit2disp = new TBLDDisp(HWindow, IDC_CTEXT);
+ edit3disp = new TBLDDisp(HWindow, IDC_DTEXT, IDC_LDNAME, IDC_LDKEY);
+ masterkey = new VerseKey();
+ webster = new RawText("../../../../modules/texts/rawtext/webster/", "Webster", "Webster Text", edit1disp);
+ mhc = new RawCom ("../../../../modules/comments/rawcom/mhc/", "MHC", "Matthew Henry's Commentary", edit2disp);
+ eastons = new RawLD ("../../../../modules/lexdict/rawld/eastons/eastons", "Eastons", "Easton's Bible Dictionary", edit3disp);
+ vines = new RawLD ("../../../../modules/lexdict/rawld/vines/vines", "Vines", "Vine's Bible Dictionary", edit3disp);
+
+ masterkey->Persist(1);
+ webster->SetKey(*masterkey);
+ mhc->SetKey(*masterkey);
+
+ for (loop1 = 0; loop1 < 2; loop1++) {
+ for (loop2 = 0; loop2 < VerseKey::BMAX[loop1]; loop2++) {
+ BookCB->AddString(VerseKey::books[loop1][loop2].name);
+ }
+ }
+ BookCB->SetSelIndex(58);
+ SetDlgItemText(IDC_CHAPTER, "1");
+ SetDlgItemText(IDC_VERSE, "19");
+}
+
+
+void swordTDLGClient::BNClicked ()
+{
+ char buf[80], tmpbuf[70];
+ int ch, vs;
+
+ BookCB->GetText(tmpbuf, 79);
+ ch = GetDlgItemInt(IDC_CHAPTER);
+ vs = GetDlgItemInt(IDC_VERSE);
+
+ masterkey->AutoNormalize(ch && vs); // if either chapter or verse are 0 then don't auto normalize so that we can lookup intros
+
+ wsprintf(buf, "%s %d:%d", tmpbuf, ch, vs);
+ *masterkey = buf;
+
+ webster->Display();
+ mhc->Display();
+
+}
+
+
+void swordTDLGClient::EvRButtonDown (uint modKeys, TPoint& point)
+{
+ TDialog::EvRButtonDown(modKeys, point);
+}
+
+
+void swordTDLGClient::UpVerse ()
+{
+ (*masterkey)--;
+ webster->Display();
+ mhc->Display();
+}
+
+
+void swordTDLGClient::DownVerse ()
+{
+ (*masterkey)++;
+ webster->Display();
+ mhc->Display();
+}
+
+
+void swordTDLGClient::EvPaint ()
+{
+ TDialog::EvPaint();
+
+ // INSERT>> Your code here.
+
+}
+
+
+void swordTDLGClient::SearchTxt ()
+{
+ new SearchDlg(this)->Create();
+}
+
diff --git a/examples/windoze/bcowl25/multimod/swrtdlgc.h b/examples/windoze/bcowl25/multimod/swrtdlgc.h
new file mode 100644
index 0000000..18307fc
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/swrtdlgc.h
@@ -0,0 +1,71 @@
+#if !defined(__swrtdlgc_h) // Sentry, use file only if it's not already included.
+#define __swrtdlgc_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.exe Application
+ FILE: swrtdlgc.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for swordTDLGClient (TDialog).
+*/
+
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include <owl\edit.h>
+#include <owl\combobox.h>
+#include "swordapp.rh" // Definition of all resources.
+
+
+//{{TDialog = swordTDLGClient}}
+struct swordTDLGClientXfer {
+//{{swordTDLGClientXFER_DATA}}
+ TComboBoxData BookCB;
+ char WebEdit[ 255 ];
+ char MHCEdit[ 255 ];
+ char LDText[ 255 ];
+//{{swordTDLGClientXFER_DATA_END}}
+};
+
+
+class swordTDLGClient : public TDialog {
+public:
+ swordTDLGClient (TWindow *parent, TResId resId = IDD_CLIENT, TModule *module = 0);
+ virtual ~swordTDLGClient ();
+
+
+//{{swordTDLGClientVIRTUAL_BEGIN}}
+public:
+ virtual void SetupWindow ();
+//{{swordTDLGClientVIRTUAL_END}}
+
+//{{swordTDLGClientRSP_TBL_BEGIN}}
+protected:
+ void BNClicked ();
+ void EvRButtonDown (uint modKeys, TPoint& point);
+ void UpVerse ();
+ void DownVerse ();
+ void EvPaint ();
+ void SearchTxt ();
+//{{swordTDLGClientRSP_TBL_END}}
+DECLARE_RESPONSE_TABLE(swordTDLGClient);
+
+//{{swordTDLGClientXFER_DEF}}
+protected:
+ TComboBox *BookCB;
+ TEdit *WebEdit;
+ TEdit *MHCEdit;
+ TEdit *LDText;
+
+//{{swordTDLGClientXFER_DEF_END}}
+}; //{{swordTDLGClient}}
+
+
+#endif // __swrtdlgc_h sentry.
diff --git a/examples/windoze/bcowl25/multimod/tversedt.cpp b/examples/windoze/bcowl25/multimod/tversedt.cpp
new file mode 100644
index 0000000..317fdd4
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/tversedt.cpp
@@ -0,0 +1,110 @@
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: tversedt.cpp
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Source file for implementation of TVerseEdit (TEdit).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+#include "tversedt.h"
+#include <swkey.h>
+
+void SWLookup(char *modname, SWKey &key);
+
+//
+// Build a response table for all messages/commands handled
+// by the application.
+//
+DEFINE_RESPONSE_TABLE1(TVerseEdit, TEdit)
+//{{TVerseEditRSP_TBL_BEGIN}}
+ EV_WM_RBUTTONDOWN,
+ EV_COMMAND(CM_EBDLOOKUP, EbdLookUp),
+ EV_COMMAND(CM_VBDLOOKUP, VbdLookUp),
+//{{TVerseEditRSP_TBL_END}}
+END_RESPONSE_TABLE;
+
+
+//{{TVerseEdit Implementation}}
+
+
+TVerseEdit::TVerseEdit (TWindow* parent, int id, const char far* text, int x, int y, int w, int h, uint textLen, bool multiline, TModule* module):
+ TEdit(parent, id, text, x, y, w, h, textLen, multiline, module)
+{
+}
+
+
+TVerseEdit::~TVerseEdit ()
+{
+ Destroy();
+
+ // INSERT>> Your destructor code here.
+
+}
+
+
+void TVerseEdit::EvRButtonDown (uint modKeys, TPoint& point)
+{
+ TEdit::EvRButtonDown(modKeys, point);
+
+ GetCursorPos(point);
+ PopupMenu.TrackPopupMenu(TPM_LEFTALIGN, point, 0, HWindow);
+}
+
+
+void TVerseEdit::SetupWindow ()
+{
+ TEdit::SetupWindow();
+
+ PopupMenu.AppendMenu(MF_STRING, CM_EBDLOOKUP, "Easton's Bible Dictionary");
+ PopupMenu.AppendMenu(MF_STRING, CM_VBDLOOKUP, "Vine's Bible Dictionary");
+}
+
+
+void TVerseEdit::EbdLookUp()
+{
+ unsigned int start, end;
+ char *buf, *str;
+
+ GetSelection(start, end);
+ if (end - start) {
+ buf = new char [ (end - start) + 1 ];
+ GetSubText(buf, start, end);
+ for (str = &buf[ strlen(buf) - 1 ]; str > buf; str--) {
+ if (!isalnum(*str))
+ *str = 0;
+ else break;
+ }
+ SWLookup("Eastons", buf);
+ delete [] buf;
+ }
+}
+
+
+void TVerseEdit::VbdLookUp()
+{
+ unsigned int start, end;
+ char *buf, *str;
+
+ GetSelection(start, end);
+ if (end - start) {
+ buf = new char [ (end - start) + 1 ];
+ GetSubText(buf, start, end);
+ for (str = &buf[ strlen(buf) - 1 ]; str > buf; str--) {
+ if (!isalnum(*str))
+ *str = 0;
+ else break;
+ }
+ SWLookup("Vines", buf);
+ delete [] buf;
+ }
+}
+
diff --git a/examples/windoze/bcowl25/multimod/tversedt.h b/examples/windoze/bcowl25/multimod/tversedt.h
new file mode 100644
index 0000000..97f2c6c
--- /dev/null
+++ b/examples/windoze/bcowl25/multimod/tversedt.h
@@ -0,0 +1,50 @@
+#if !defined(__tversedt_h) // Sentry, use file only if it's not already included.
+#define __tversedt_h
+
+/* Project sword
+
+ GNU Copyleft GPL © 1995. Almost No Rights Reserved.
+
+ SUBSYSTEM: sword.apx Application
+ FILE: tversedt.h
+ AUTHOR: The Sword Project Team
+
+
+ OVERVIEW
+ ========
+ Class definition for TVerseEdit (TEdit).
+*/
+
+#include <owl\owlpch.h>
+#pragma hdrstop
+
+
+#include "swordapp.rh" // Definition of all resources.
+
+
+//{{TEdit = TVerseEdit}}
+class TVerseEdit : public TEdit {
+public:
+ TVerseEdit(TWindow* parent, int id, const char far* text, int x, int y, int w, int h, uint textLen = 0, bool multiline = false, TModule* module = 0);
+ TVerseEdit(TWindow* parent, int resourceID, uint textLen = 0, TModule* module = 0) : TEdit(parent, resourceID, textLen, module) {}
+
+ virtual ~TVerseEdit ();
+
+//{{TVerseEditVIRTUAL_BEGIN}}
+public:
+ virtual void SetupWindow ();
+//{{TVerseEditVIRTUAL_END}}
+
+//{{TVerseEditRSP_TBL_BEGIN}}
+protected:
+ TPopupMenu PopupMenu;
+ void EvRButtonDown (uint modKeys, TPoint& point);
+ void EbdLookUp();
+ void VbdLookUp();
+//{{TVerseEditRSP_TBL_END}}
+DECLARE_RESPONSE_TABLE(TVerseEdit);
+}; //{{TVerseEdit}}
+
+
+#endif // __tversedt_h sentry.
+
diff --git a/examples/windoze/delphi20/multimo1/LogoMain.dfm b/examples/windoze/delphi20/multimo1/LogoMain.dfm
new file mode 100644
index 0000000..f57ec1c
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/LogoMain.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo1/LogoMain.pas b/examples/windoze/delphi20/multimo1/LogoMain.pas
new file mode 100644
index 0000000..4365c83
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/LogoMain.pas
@@ -0,0 +1,213 @@
+unit LogoMain;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, Menus,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids;
+
+type
+ paramt = record
+ path, name, disc: pchar;
+ end;
+ pparamt = ^paramt;
+
+ TSwordAppForm = class(TForm)
+ MainMenu: TMainMenu;
+ FileMenu: TMenuItem;
+ FileExitItem: TMenuItem;
+ Help1: TMenuItem;
+ AboutItem: TMenuItem;
+ SpeedPanel: TPanel;
+ ExitBtn: TSpeedButton;
+ StatusBar: TStatusBar;
+ TextBox: TRichEdit;
+ CommentBox: TRichEdit;
+ BookCB: TComboBox;
+ CHBox: TEdit;
+ VSBox: TEdit;
+ Label1: TLabel;
+ LookupBtn: TSpeedButton;
+ TextKeyText: TLabel;
+ LDBox: TRichEdit;
+ LDTitle: TLabel;
+ Label2: TLabel;
+ LDKeyText: TLabel;
+ TextTitle: TLabel;
+ CommentTitle: TLabel;
+ PopupMenu1: TPopupMenu;
+ EastonsBibleDictionary1: TMenuItem;
+ VinesBibleDictionary1: TMenuItem;
+ procedure FormCreate(Sender: TObject);
+ procedure FileExit(Sender: TObject);
+ procedure Lookup(Sender: TObject);
+ procedure About(Sender: TObject);
+ procedure ShowHint(Sender: TObject);
+ procedure EastonsBibleDictionary1Click(Sender: TObject);
+ procedure TextBoxEnter(Sender: TObject);
+ procedure VinesBibleDictionary1Click(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ private
+ curedit: TRichEdit;
+ commonkey: integer;
+ webster: integer;
+ mhc: longint;
+ eastons: longint;
+ vines: longint;
+ FFileName: String;
+ public
+ { Public declarations }
+ end;
+
+var
+ SwordAppForm: TSwordAppForm;
+
+implementation
+
+uses SwordAPI, SysUtils, Mapi, About;
+
+{$R *.DFM}
+
+procedure TSwordAppForm.FormCreate(Sender: TObject);
+var
+ params: paramt;
+ s1, s2, s3, s4: AnsiString;
+ buf:PChar;
+ book: integer;
+begin
+ Application.OnHint := ShowHint;
+
+ commonkey := NewKey('VerseKey');
+ GetMem(buf, 255);
+ KeySetText(commonkey, 'Genesis 1:1');
+ while (KeyError(commonkey) = 0) do
+ begin
+ KeyGetText(commonkey, buf, 254);
+ s4 := strpas(buf);
+ SetLength(s4, Length(s4) - 4);
+ BookCB.Items.Add(s4);
+ book := VerseKeyGetBook(commonkey);
+ book := book + 1;
+ VerseKeySetBook(commonkey, book);
+ end;
+ FreeMem(buf, 255);
+
+ s1 := 'Webster';
+ s2 := '../../../../modules/texts/rawtext/webster/';
+ s3 := 'Webster Text';
+ params.name := PChar(s1);
+ params.path := PChar(s2);
+ params.disc := PChar(s3);
+ webster := NewModule('RawText', @params);
+
+
+ params.name := 'MHC';
+ params.path := '../../../../modules/comments/rawcom/mhc/';
+ params.disc := 'Matthew Henry''''s Commentary';
+ mhc := NewModule('RawCom', @params);
+
+ KeySetPersist(commonkey, 1);
+ ModSetKeyKey(mhc, commonkey);
+ ModSetKeyKey(webster, commonkey);
+
+ params.name := 'Eastons';
+ params.path := '../../../../modules/lexdict/rawld/eastons/eastons';
+ params.disc := 'Easton''''s Bible Dictionary';
+ eastons := NewModule('RawLD', @params);
+
+ params.path := '../../../../modules/lexdict/rawld/vines/vines';
+ params.name := 'Vines';
+ params.disc := 'Vine''''s Bible Dictionary';
+ vines := NewModule('RawLD', @params);
+end;
+
+
+procedure TSwordAppForm.FormClose(Sender: TObject;
+ var Action: TCloseAction);
+begin
+ DeleteModule(webster);
+ DeleteModule(mhc);
+ DeleteModule(eastons);
+ DeleteModule(vines);
+ DeleteKey(commonkey);
+end;
+
+
+procedure TSwordAppForm.FileExit(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSwordAppForm.Lookup(Sender: TObject);
+var
+ Buffer: PChar;
+ s1: AnsiString;
+ hkey: integer;
+begin
+ s1 := BookCB.Text + ' ' + CHBox.Text + ':' + VSBox.Text;
+ if ((StrToInt(CHBox.Text) = 0) or (StrToInt(VSBox.Text) = 0)) then
+ VerseKeySetAutoNormalize(commonkey, 0);
+
+ KeySetText(commonkey, PChar(s1));
+
+ GetMem(Buffer, 4096); {Creates Buffer dynamic variable}
+ KeyGetText(commonkey, Buffer, 4095);
+ TextKeyText.Caption := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ ModGetText(webster, Buffer, 4095);
+ TextBox.Text := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ ModGetText(mhc, Buffer, 4095);
+ CommentBox.Text := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ FreeMem(Buffer, 4096); {Frees memory allocated to Buffer}
+
+ VerseKeySetAutoNormalize(commonkey, 1);
+end;
+
+procedure TSwordAppForm.About(Sender: TObject);
+begin
+ AboutBox.ShowModal;
+end;
+
+procedure TSwordAppForm.ShowHint(Sender: TObject);
+begin
+ StatusBar.SimpleText := Application.Hint;
+end;
+
+procedure TSwordAppForm.EastonsBibleDictionary1Click(Sender: TObject);
+var
+ s1 : AnsiString;
+ Buffer: PChar;
+begin
+ s1 := Trim(curedit.SelText);
+ ModSetKeyText(eastons, PChar(s1));
+ GetMem(Buffer, 4096); {Creates Buffer dynamic variable}
+ ModGetText(eastons, Buffer, 4095);
+ LDBox.Text := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ ModGetKeyText(eastons, Buffer, 4095);
+ LDKeyText.Caption := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ LDTitle.Caption := 'Easton''s Bible Dictionary';
+ FreeMem(Buffer, 4096);
+end;
+
+procedure TSwordAppForm.TextBoxEnter(Sender: TObject);
+begin
+ curedit := TRichEdit(Sender);
+end;
+
+procedure TSwordAppForm.VinesBibleDictionary1Click(Sender: TObject);
+var
+ s1 : AnsiString;
+ Buffer: PChar;
+begin
+ s1 := Trim(curedit.SelText);
+ ModSetKeyText(vines, PChar(s1));
+ GetMem(Buffer, 4096); {Creates Buffer dynamic variable}
+ ModGetText(vines, Buffer, 4095);
+ LDBox.Text := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ ModGetKeyText(vines, Buffer, 4095);
+ LDKeyText.Caption := StrPas(Buffer); {Converts Buffer to a Pascal-style string}
+ LDTitle.Caption := 'Vines''s Bible Dictionary';
+ FreeMem(Buffer, 4096);
+
+end;
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo1/Multimod.ico b/examples/windoze/delphi20/multimo1/Multimod.ico
new file mode 100644
index 0000000..e2a7458
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/Multimod.ico
Binary files differ
diff --git a/examples/windoze/delphi20/multimo1/about.dfm b/examples/windoze/delphi20/multimo1/about.dfm
new file mode 100644
index 0000000..613bc00
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/about.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo1/about.pas b/examples/windoze/delphi20/multimo1/about.pas
new file mode 100644
index 0000000..44a8a55
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/about.pas
@@ -0,0 +1,31 @@
+unit About;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
+ Buttons, ExtCtrls;
+
+type
+ TAboutBox = class(TForm)
+ Panel1: TPanel;
+ OKButton: TButton;
+ ProgramIcon: TImage;
+ ProductName: TLabel;
+ Version: TLabel;
+ Copyright: TLabel;
+ Comments: TLabel;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo1/multimod.dpr b/examples/windoze/delphi20/multimo1/multimod.dpr
new file mode 100644
index 0000000..33d0684
--- /dev/null
+++ b/examples/windoze/delphi20/multimo1/multimod.dpr
@@ -0,0 +1,15 @@
+program MultiMod;
+
+uses
+ Forms,
+ LogoMain in 'LogoMain.pas' {SwordAppForm},
+ About in 'ABOUT.PAS' {AboutBox};
+
+{$R *.RES}
+
+begin
+ Application.CreateForm(TSwordAppForm, SwordAppForm);
+ Application.CreateForm(TAboutBox, AboutBox);
+ Application.Run;
+end.
+ \ No newline at end of file
diff --git a/examples/windoze/delphi20/multimo2/LogoMain.dfm b/examples/windoze/delphi20/multimo2/LogoMain.dfm
new file mode 100644
index 0000000..c30e38f
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/LogoMain.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo2/LogoMain.pas b/examples/windoze/delphi20/multimo2/LogoMain.pas
new file mode 100644
index 0000000..1d6b840
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/LogoMain.pas
@@ -0,0 +1,151 @@
+unit LogoMain;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, Menus,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, swmodule;
+
+type
+ TSwordAppForm = class(TForm)
+ MainMenu: TMainMenu;
+ FileMenu: TMenuItem;
+ FileExitItem: TMenuItem;
+ Help1: TMenuItem;
+ AboutItem: TMenuItem;
+ SpeedPanel: TPanel;
+ ExitBtn: TSpeedButton;
+ StatusBar: TStatusBar;
+ TextBox: TRichEdit;
+ CommentBox: TRichEdit;
+ BookCB: TComboBox;
+ CHBox: TEdit;
+ VSBox: TEdit;
+ Label1: TLabel;
+ LookupBtn: TSpeedButton;
+ TextKeyText: TLabel;
+ LDBox: TRichEdit;
+ LDTitle: TLabel;
+ Label2: TLabel;
+ LDKeyText: TLabel;
+ TextTitle: TLabel;
+ CommentTitle: TLabel;
+ PopupMenu1: TPopupMenu;
+ EastonsBibleDictionary1: TMenuItem;
+ VinesBibleDictionary1: TMenuItem;
+ Webster: TSWModule;
+ MHC: TSWModule;
+ Eastons: TSWModule;
+ Vines: TSWModule;
+ procedure FormCreate(Sender: TObject);
+ procedure FileExit(Sender: TObject);
+ procedure Lookup(Sender: TObject);
+ procedure About(Sender: TObject);
+ procedure ShowHint(Sender: TObject);
+ procedure EastonsBibleDictionary1Click(Sender: TObject);
+ procedure TextBoxEnter(Sender: TObject);
+ procedure VinesBibleDictionary1Click(Sender: TObject);
+ procedure FormClose(Sender: TObject; var Action: TCloseAction);
+ private
+ curedit: TRichEdit;
+ commonkey: integer;
+ FFileName: String;
+ public
+ { Public declarations }
+ end;
+
+var
+ SwordAppForm: TSwordAppForm;
+
+implementation
+
+uses SwordAPI, SysUtils, Mapi, About;
+
+{$R *.DFM}
+procedure TSwordAppForm.FormCreate(Sender: TObject);
+var
+ buf: PChar;
+ book: integer;
+ s1: AnsiString;
+begin
+ Application.OnHint := ShowHint;
+
+ commonkey := NewKey('VerseKey');
+ GetMem(buf, 255);
+ KeySetText(commonkey, 'Genesis 1:1');
+ while (KeyError(commonkey) = 0) do
+ begin
+ KeyGetText(commonkey, buf, 254);
+ s1 := strpas(buf);
+ SetLength(s1, Length(s1) - 4);
+ BookCB.Items.Add(s1);
+ book := VerseKeyGetBook(commonkey);
+ book := book + 1;
+ VerseKeySetBook(commonkey, book);
+ end;
+ FreeMem(buf, 255);
+
+ KeySetPersist(commonkey, 1);
+ ModSetKeyKey(MHC.SWHandle, commonkey);
+ ModSetKeyKey(Webster.SWHandle, commonkey);
+end;
+
+
+procedure TSwordAppForm.FormClose(Sender: TObject;
+ var Action: TCloseAction);
+begin
+ DeleteKey(commonkey);
+end;
+
+
+procedure TSwordAppForm.FileExit(Sender: TObject);
+begin
+ Close;
+end;
+
+
+procedure TSwordAppForm.Lookup(Sender: TObject);
+begin
+ if ((StrToInt(CHBox.Text) = 0) or (StrToInt(VSBox.Text) = 0)) then
+ VerseKeySetAutoNormalize(commonkey, 0);
+
+ Webster.Key.Text := BookCB.Text + ' ' + CHBox.Text + ':' + VSBox.Text;
+ TextKeyText.Caption := Webster.Key.Text;
+ TextBox.Text := Webster.Text;
+ CommentBox.Text := MHC.Text;
+
+ VerseKeySetAutoNormalize(commonkey, 1);
+end;
+
+procedure TSwordAppForm.About(Sender: TObject);
+begin
+ AboutBox.ShowModal;
+end;
+
+procedure TSwordAppForm.ShowHint(Sender: TObject);
+begin
+ StatusBar.SimpleText := Application.Hint;
+end;
+
+procedure TSwordAppForm.EastonsBibleDictionary1Click(Sender: TObject);
+begin
+ Eastons.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ LDBox.Text := Eastons.Text;
+ LDKeyText.Caption := Eastons.KeyText;
+ LDTitle.Caption := Eastons.Description;
+end;
+
+procedure TSwordAppForm.TextBoxEnter(Sender: TObject);
+begin
+ curedit := TRichEdit(Sender);
+end;
+
+procedure TSwordAppForm.VinesBibleDictionary1Click(Sender: TObject);
+begin
+ Vines.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ LDBox.Text := Vines.Text;
+ LDKeyText.Caption := Vines.KeyText;
+ LDTitle.Caption := Vines.Description;
+end;
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo2/Multimod.ico b/examples/windoze/delphi20/multimo2/Multimod.ico
new file mode 100644
index 0000000..e2a7458
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/Multimod.ico
Binary files differ
diff --git a/examples/windoze/delphi20/multimo2/about.dfm b/examples/windoze/delphi20/multimo2/about.dfm
new file mode 100644
index 0000000..613bc00
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/about.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo2/about.pas b/examples/windoze/delphi20/multimo2/about.pas
new file mode 100644
index 0000000..44a8a55
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/about.pas
@@ -0,0 +1,31 @@
+unit About;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
+ Buttons, ExtCtrls;
+
+type
+ TAboutBox = class(TForm)
+ Panel1: TPanel;
+ OKButton: TButton;
+ ProgramIcon: TImage;
+ ProductName: TLabel;
+ Version: TLabel;
+ Copyright: TLabel;
+ Comments: TLabel;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo2/multimod.dpr b/examples/windoze/delphi20/multimo2/multimod.dpr
new file mode 100644
index 0000000..33d0684
--- /dev/null
+++ b/examples/windoze/delphi20/multimo2/multimod.dpr
@@ -0,0 +1,15 @@
+program MultiMod;
+
+uses
+ Forms,
+ LogoMain in 'LogoMain.pas' {SwordAppForm},
+ About in 'ABOUT.PAS' {AboutBox};
+
+{$R *.RES}
+
+begin
+ Application.CreateForm(TSwordAppForm, SwordAppForm);
+ Application.CreateForm(TAboutBox, AboutBox);
+ Application.Run;
+end.
+ \ No newline at end of file
diff --git a/examples/windoze/delphi20/multimo3/LogoMain.dfm b/examples/windoze/delphi20/multimo3/LogoMain.dfm
new file mode 100644
index 0000000..5ca5da8
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/LogoMain.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo3/LogoMain.pas b/examples/windoze/delphi20/multimo3/LogoMain.pas
new file mode 100644
index 0000000..d7545a4
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/LogoMain.pas
@@ -0,0 +1,166 @@
+unit LogoMain;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, Menus,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, swmodule,
+ swkey, swvskey;
+
+type
+ TSwordAppForm = class(TForm)
+ MainMenu: TMainMenu;
+ FileMenu: TMenuItem;
+ FileExitItem: TMenuItem;
+ Help1: TMenuItem;
+ AboutItem: TMenuItem;
+ SpeedPanel: TPanel;
+ ExitBtn: TSpeedButton;
+ StatusBar: TStatusBar;
+ TextBox: TRichEdit;
+ CommentBox: TRichEdit;
+ BookCB: TComboBox;
+ CHBox: TEdit;
+ VSBox: TEdit;
+ Label1: TLabel;
+ LookupBtn: TSpeedButton;
+ TextKeyText: TLabel;
+ LDBox: TRichEdit;
+ LDTitle: TLabel;
+ Label2: TLabel;
+ LDKeyText: TLabel;
+ TextTitle: TLabel;
+ CommentTitle: TLabel;
+ PopupMenu1: TPopupMenu;
+ EastonsBibleDictionary1: TMenuItem;
+ VinesBibleDictionary1: TMenuItem;
+ Webster: TSWModule;
+ MHC: TSWModule;
+ Eastons: TSWModule;
+ Vines: TSWModule;
+ CommonKey: TSWVerseKey;
+ Button1: TButton;
+ Button2: TButton;
+ DblClkWordRtClkMouse1: TMenuItem;
+ Search1: TMenuItem;
+ NewSearchWindow1: TMenuItem;
+ procedure FormCreate(Sender: TObject);
+ procedure FileExit(Sender: TObject);
+ procedure Lookup(Sender: TObject);
+ procedure About(Sender: TObject);
+ procedure ShowHint(Sender: TObject);
+ procedure EastonsBibleDictionary1Click(Sender: TObject);
+ procedure TextBoxEnter(Sender: TObject);
+ procedure VinesBibleDictionary1Click(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure Button2Click(Sender: TObject);
+ procedure NewSearchWindow1Click(Sender: TObject);
+ private
+ curedit: TRichEdit;
+ public
+ { Public declarations }
+ end;
+
+var
+ SwordAppForm: TSwordAppForm;
+
+implementation
+
+uses SysUtils, Mapi, About, searchdlg;
+
+{$R *.DFM}
+procedure TSwordAppForm.FormCreate(Sender: TObject);
+var
+ s1: string;
+begin
+ Application.OnHint := ShowHint;
+
+ CommonKey.Text := 'Genesis 1:1';
+ while (CommonKey.Error = 0) do
+ begin
+ s1 := CommonKey.Text;
+ SetLength(s1, (Length(s1) - 4));
+ BookCB.Items.Add(s1);
+ CommonKey.Book := CommonKey.Book + 1;
+ end;
+end;
+
+
+procedure TSwordAppForm.FileExit(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSwordAppForm.Lookup(Sender: TObject);
+var
+ Buffer: PChar;
+ s1: AnsiString;
+ hkey: integer;
+begin
+ if ((StrToInt(CHBox.Text) = 0) or (StrToInt(VSBox.Text) = 0)) then
+ CommonKey.AutoNormalize := false;
+
+ CommonKey.Text := BookCB.Text + ' ' + CHBox.Text + ':' + VSBox.Text;
+ TextKeyText.Caption := CommonKey.Text;
+ TextBox.Text := Webster.Text;
+ CommentBox.Text := MHC.Text;
+
+ CommonKey.AutoNormalize := true;
+end;
+
+procedure TSwordAppForm.About(Sender: TObject);
+begin
+ AboutBox.ShowModal;
+end;
+
+procedure TSwordAppForm.ShowHint(Sender: TObject);
+begin
+ StatusBar.SimpleText := Application.Hint;
+end;
+
+procedure TSwordAppForm.EastonsBibleDictionary1Click(Sender: TObject);
+begin
+ Eastons.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ LDBox.Text := Eastons.Text;
+ LDKeyText.Caption := Eastons.KeyText;
+ LDTitle.Caption := Eastons.Description;
+end;
+
+procedure TSwordAppForm.TextBoxEnter(Sender: TObject);
+begin
+ curedit := TRichEdit(Sender);
+end;
+
+procedure TSwordAppForm.VinesBibleDictionary1Click(Sender: TObject);
+begin
+ Vines.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ LDBox.Text := Vines.Text;
+ LDKeyText.Caption := Vines.KeyText;
+ LDTitle.Caption := Vines.Description;
+end;
+
+procedure TSwordAppForm.Button1Click(Sender: TObject);
+begin
+ CommonKey.Dec;
+ TextKeyText.Caption := CommonKey.Text;
+ TextBox.Text := Webster.Text;
+ CommentBox.Text := MHC.Text;
+
+end;
+
+procedure TSwordAppForm.Button2Click(Sender: TObject);
+begin
+ CommonKey.Inc;
+ TextKeyText.Caption := CommonKey.Text;
+ TextBox.Text := Webster.Text;
+ CommentBox.Text := MHC.Text;
+
+
+end;
+
+procedure TSwordAppForm.NewSearchWindow1Click(Sender: TObject);
+begin
+ SearchForm.Show;
+end;
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo3/about.dfm b/examples/windoze/delphi20/multimo3/about.dfm
new file mode 100644
index 0000000..16013ec
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/about.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo3/about.pas b/examples/windoze/delphi20/multimo3/about.pas
new file mode 100644
index 0000000..44a8a55
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/about.pas
@@ -0,0 +1,31 @@
+unit About;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
+ Buttons, ExtCtrls;
+
+type
+ TAboutBox = class(TForm)
+ Panel1: TPanel;
+ OKButton: TButton;
+ ProgramIcon: TImage;
+ ProductName: TLabel;
+ Version: TLabel;
+ Copyright: TLabel;
+ Comments: TLabel;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo3/multimod.dpr b/examples/windoze/delphi20/multimo3/multimod.dpr
new file mode 100644
index 0000000..6060337
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/multimod.dpr
@@ -0,0 +1,18 @@
+program MultiMod;
+
+uses
+ Forms,
+ LogoMain in 'LogoMain.pas' {SwordAppForm},
+ About in 'ABOUT.PAS' {AboutBox},
+ searchdlg in 'searchdlg.pas' {SearchForm};
+
+{$R *.RES}
+
+begin
+ Application.Title := 'The SWORD Project';
+ Application.CreateForm(TSwordAppForm, SwordAppForm);
+ Application.CreateForm(TAboutBox, AboutBox);
+ Application.CreateForm(TSearchForm, SearchForm);
+ Application.Run;
+end.
+ \ No newline at end of file
diff --git a/examples/windoze/delphi20/multimo3/searchdlg.dfm b/examples/windoze/delphi20/multimo3/searchdlg.dfm
new file mode 100644
index 0000000..dca8382
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/searchdlg.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo3/searchdlg.pas b/examples/windoze/delphi20/multimo3/searchdlg.pas
new file mode 100644
index 0000000..7a8144d
--- /dev/null
+++ b/examples/windoze/delphi20/multimo3/searchdlg.pas
@@ -0,0 +1,35 @@
+unit searchdlg;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+ StdCtrls;
+
+type
+ TSearchForm = class(TForm)
+ Edit1: TEdit;
+ Button1: TButton;
+ Button2: TButton;
+ ListBox1: TListBox;
+ Label1: TLabel;
+ procedure Button2Click(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ SearchForm: TSearchForm;
+
+implementation
+
+{$R *.DFM}
+
+procedure TSearchForm.Button2Click(Sender: TObject);
+begin
+ Close;
+end;
+
+end.
diff --git a/examples/windoze/delphi20/multimo4/LogoMain.dfm b/examples/windoze/delphi20/multimo4/LogoMain.dfm
new file mode 100644
index 0000000..466ea20
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/LogoMain.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo4/LogoMain.pas b/examples/windoze/delphi20/multimo4/LogoMain.pas
new file mode 100644
index 0000000..0803d43
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/LogoMain.pas
@@ -0,0 +1,171 @@
+unit LogoMain;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, Menus,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, swmodule,
+ swkey, swvskey, swtxtdsp;
+
+type
+ TSwordAppForm = class(TForm)
+ MainMenu: TMainMenu;
+ FileMenu: TMenuItem;
+ FileExitItem: TMenuItem;
+ Help1: TMenuItem;
+ AboutItem: TMenuItem;
+ pnlToolbar: TPanel;
+ StatusBar: TStatusBar;
+ BookCB: TComboBox;
+ CHBox: TEdit;
+ VSBox: TEdit;
+ Label1: TLabel;
+ btnLookup: TSpeedButton;
+ lblTextKeyText: TLabel;
+ PopupMenu1: TPopupMenu;
+ EastonsBibleDictionary1: TMenuItem;
+ VinesBibleDictionary1: TMenuItem;
+ mrtWebster: TSWModule;
+ mrcMHC: TSWModule;
+ mrldEastons: TSWModule;
+ mrldVines: TSWModule;
+ vkCommonKey: TSWVerseKey;
+ DblClkWordRtClkMouse1: TMenuItem;
+ Search1: TMenuItem;
+ NewSearchWindow1: TMenuItem;
+ Bevel1: TBevel;
+ pnlMain: TPanel;
+ pnlText: TPanel;
+ lblTextTitle: TLabel;
+ pnlCommentary: TPanel;
+ lblCommentTitle: TLabel;
+ edCommentBox: TRichEdit;
+ pnlVSplitter: TPanel;
+ pnlHSplitter: TPanel;
+ pnlDictionary: TPanel;
+ edLDBox: TRichEdit;
+ pnlDcitionaryTitle: TPanel;
+ Label2: TLabel;
+ lblLDTitle: TLabel;
+ btnPreviousVerse: TButton;
+ btnNextVerse: TButton;
+ lblLDKeyText: TLabel;
+ edTextBox: TSWTextDisp;
+ procedure FormCreate(Sender: TObject);
+ procedure FileExit(Sender: TObject);
+ procedure Lookup(Sender: TObject);
+ procedure About(Sender: TObject);
+ procedure ShowHint(Sender: TObject);
+ procedure EastonsBibleDictionary1Click(Sender: TObject);
+ procedure edTextBoxEnter(Sender: TObject);
+ procedure VinesBibleDictionary1Click(Sender: TObject);
+ procedure btnPreviousVerseClick(Sender: TObject);
+ procedure btnNextVerseClick(Sender: TObject);
+ procedure NewSearchWindow1Click(Sender: TObject);
+ private
+ curedit: TRichEdit;
+ public
+ { Public declarations }
+ end;
+
+var
+ SwordAppForm: TSwordAppForm;
+
+implementation
+
+uses SysUtils, Mapi, About, searchdlg;
+
+{$R *.DFM}
+procedure TSwordAppForm.FormCreate(Sender: TObject);
+var
+ s1: string;
+begin
+ Application.OnHint := ShowHint;
+
+ vkCommonKey.Text := 'Genesis 1:1';
+ while (vkCommonKey.Error = 0) do
+ begin
+ s1 := vkCommonKey.Text;
+ SetLength(s1, (Length(s1) - 4));
+ BookCB.Items.Add(s1);
+ vkCommonKey.Book := vkCommonKey.Book + 1;
+ end;
+end;
+
+
+procedure TSwordAppForm.FileExit(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSwordAppForm.Lookup(Sender: TObject);
+var
+ Buffer: PChar;
+ s1: AnsiString;
+ hkey: integer;
+begin
+ if ((StrToInt(CHBox.Text) = 0) or (StrToInt(VSBox.Text) = 0)) then
+ vkCommonKey.AutoNormalize := false;
+
+ vkCommonKey.Text := BookCB.Text + ' ' + CHBox.Text + ':' + VSBox.Text;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+
+ vkCommonKey.AutoNormalize := true;
+end;
+
+procedure TSwordAppForm.About(Sender: TObject);
+begin
+ AboutBox.ShowModal;
+end;
+
+procedure TSwordAppForm.ShowHint(Sender: TObject);
+begin
+ StatusBar.SimpleText := Application.Hint;
+end;
+
+procedure TSwordAppForm.EastonsBibleDictionary1Click(Sender: TObject);
+begin
+ mrldEastons.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ edLDBox.Text := mrldEastons.Text;
+ lblLDKeyText.Caption := mrldEastons.KeyText;
+ lblLDTitle.Caption := mrldEastons.Description;
+end;
+
+procedure TSwordAppForm.edTextBoxEnter(Sender: TObject);
+begin
+ curedit := TRichEdit(Sender);
+end;
+
+procedure TSwordAppForm.VinesBibleDictionary1Click(Sender: TObject);
+begin
+ mrldVines.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Vines (in fact, it may even not be allocated yet). We just want to set Vines with the text and let Vines worry about allocating keys.}
+ edLDBox.Text := mrldVines.Text;
+ lblLDKeyText.Caption := mrldVines.KeyText;
+ lblLDTitle.Caption := mrldVines.Description;
+end;
+
+procedure TSwordAppForm.btnPreviousVerseClick(Sender: TObject);
+begin
+ vkCommonKey.Dec;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+end;
+
+procedure TSwordAppForm.btnNextVerseClick(Sender: TObject);
+begin
+ vkCommonKey.Inc;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+end;
+
+procedure TSwordAppForm.NewSearchWindow1Click(Sender: TObject);
+begin
+ SearchForm := TSearchForm.Create(Self);
+ SearchForm.Show;
+end;
+
+end.
+
diff --git a/examples/windoze/delphi20/multimo4/Multimod.dpr b/examples/windoze/delphi20/multimo4/Multimod.dpr
new file mode 100644
index 0000000..be232ac
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/Multimod.dpr
@@ -0,0 +1,17 @@
+program MultiMod;
+
+uses
+ Forms,
+ LogoMain in 'LogoMain.pas' {SwordAppForm},
+ About in 'ABOUT.PAS' {AboutBox},
+ Searchdlg in 'Searchdlg.pas' {SearchForm};
+
+{$R *.RES}
+
+begin
+ Application.Title := 'The SWORD Project';
+ Application.CreateForm(TSwordAppForm, SwordAppForm);
+ Application.CreateForm(TAboutBox, AboutBox);
+// Application.CreateForm(TSearchForm, SearchForm);
+ Application.Run;
+end.
diff --git a/examples/windoze/delphi20/multimo4/Searchdlg.dfm b/examples/windoze/delphi20/multimo4/Searchdlg.dfm
new file mode 100644
index 0000000..6b8b7a8
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/Searchdlg.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo4/Searchdlg.pas b/examples/windoze/delphi20/multimo4/Searchdlg.pas
new file mode 100644
index 0000000..1cf83fc
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/Searchdlg.pas
@@ -0,0 +1,60 @@
+unit searchdlg;
+
+interface
+
+uses
+ SWKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+ StdCtrls;
+
+type
+ TSearchForm = class(TForm)
+ Edit1: TEdit;
+ Button1: TButton;
+ Button2: TButton;
+ ListBox1: TListBox;
+ Label1: TLabel;
+ procedure Button2Click(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure ListBox1DblClick(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ SearchForm: TSearchForm;
+
+implementation
+
+uses LogoMain;
+
+{$R *.DFM}
+
+procedure TSearchForm.Button2Click(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSearchForm.Button1Click(Sender: TObject);
+var
+ results:TSWKey;
+begin
+ ListBox1.Clear;
+ results := SwordAppForm.mrtWebster.Search(PChar(Edit1.Text));
+ while (results.Error = 0) do
+ begin
+ ListBox1.Items.Add(results.text);
+ results.Inc;
+ end;
+end;
+
+procedure TSearchForm.ListBox1DblClick(Sender: TObject);
+begin
+ SwordAppForm.vkcommonkey.text := ListBox1.items[listbox1.itemindex];
+ SwordAppForm.lblTextKeyText.Caption := SwordAppForm.vkCommonKey.Text;
+ SwordAppForm.edTextBox.Display;
+ SwordAppForm.edCommentBox.Text := SwordAppForm.mrcMHC.Text;
+end;
+
+end.
diff --git a/examples/windoze/delphi20/multimo4/about.dfm b/examples/windoze/delphi20/multimo4/about.dfm
new file mode 100644
index 0000000..16013ec
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/about.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/multimo4/about.pas b/examples/windoze/delphi20/multimo4/about.pas
new file mode 100644
index 0000000..44a8a55
--- /dev/null
+++ b/examples/windoze/delphi20/multimo4/about.pas
@@ -0,0 +1,31 @@
+unit About;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
+ Buttons, ExtCtrls;
+
+type
+ TAboutBox = class(TForm)
+ Panel1: TPanel;
+ OKButton: TButton;
+ ProgramIcon: TImage;
+ ProductName: TLabel;
+ Version: TLabel;
+ Copyright: TLabel;
+ Comments: TLabel;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+end.
+
diff --git a/examples/windoze/delphi20/svertf/LogoMain.dfm b/examples/windoze/delphi20/svertf/LogoMain.dfm
new file mode 100644
index 0000000..4cc49ef
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/LogoMain.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/svertf/LogoMain.pas b/examples/windoze/delphi20/svertf/LogoMain.pas
new file mode 100644
index 0000000..78ec426
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/LogoMain.pas
@@ -0,0 +1,170 @@
+unit LogoMain;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, Menus,
+ Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, swmodule,
+ swkey, swvskey, swtxtdsp;
+
+type
+ TSwordAppForm = class(TForm)
+ MainMenu: TMainMenu;
+ FileMenu: TMenuItem;
+ FileExitItem: TMenuItem;
+ Help1: TMenuItem;
+ AboutItem: TMenuItem;
+ pnlToolbar: TPanel;
+ StatusBar: TStatusBar;
+ BookCB: TComboBox;
+ CHBox: TEdit;
+ VSBox: TEdit;
+ Label1: TLabel;
+ btnLookup: TSpeedButton;
+ lblTextKeyText: TLabel;
+ PopupMenu1: TPopupMenu;
+ EastonsBibleDictionary1: TMenuItem;
+ VinesBibleDictionary1: TMenuItem;
+ mrtWebster: TSWModule;
+ mrcMHC: TSWModule;
+ mrldEastons: TSWModule;
+ mrldVines: TSWModule;
+ vkCommonKey: TSWVerseKey;
+ DblClkWordRtClkMouse1: TMenuItem;
+ Search1: TMenuItem;
+ NewSearchWindow1: TMenuItem;
+ Bevel1: TBevel;
+ pnlMain: TPanel;
+ pnlText: TPanel;
+ lblTextTitle: TLabel;
+ pnlCommentary: TPanel;
+ lblCommentTitle: TLabel;
+ edCommentBox: TRichEdit;
+ pnlVSplitter: TPanel;
+ pnlHSplitter: TPanel;
+ pnlDictionary: TPanel;
+ edLDBox: TRichEdit;
+ pnlDcitionaryTitle: TPanel;
+ Label2: TLabel;
+ lblLDTitle: TLabel;
+ btnPreviousVerse: TButton;
+ btnNextVerse: TButton;
+ lblLDKeyText: TLabel;
+ edTextBox: TSWTextDisp;
+ procedure FormCreate(Sender: TObject);
+ procedure FileExit(Sender: TObject);
+ procedure Lookup(Sender: TObject);
+ procedure About(Sender: TObject);
+ procedure ShowHint(Sender: TObject);
+ procedure EastonsBibleDictionary1Click(Sender: TObject);
+ procedure edTextBoxEnter(Sender: TObject);
+ procedure VinesBibleDictionary1Click(Sender: TObject);
+ procedure btnPreviousVerseClick(Sender: TObject);
+ procedure btnNextVerseClick(Sender: TObject);
+ procedure NewSearchWindow1Click(Sender: TObject);
+ private
+ curedit: TRichEdit;
+ public
+ { Public declarations }
+ end;
+
+var
+ SwordAppForm: TSwordAppForm;
+
+implementation
+
+uses SysUtils, Mapi, About, searchdlg;
+
+{$R *.DFM}
+procedure TSwordAppForm.FormCreate(Sender: TObject);
+var
+ s1: string;
+begin
+ Application.OnHint := ShowHint;
+
+ vkCommonKey.Text := 'Genesis 1:1';
+ while (vkCommonKey.Error = 0) do
+ begin
+ s1 := vkCommonKey.Text;
+ SetLength(s1, (Length(s1) - 4));
+ BookCB.Items.Add(s1);
+ vkCommonKey.Book := vkCommonKey.Book + 1;
+ end;
+end;
+
+
+procedure TSwordAppForm.FileExit(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSwordAppForm.Lookup(Sender: TObject);
+var
+ Buffer: PChar;
+ s1: AnsiString;
+ hkey: integer;
+begin
+ if ((StrToInt(CHBox.Text) = 0) or (StrToInt(VSBox.Text) = 0)) then
+ vkCommonKey.AutoNormalize := false;
+
+ vkCommonKey.Text := BookCB.Text + ' ' + CHBox.Text + ':' + VSBox.Text;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+
+ vkCommonKey.AutoNormalize := true;
+end;
+
+procedure TSwordAppForm.About(Sender: TObject);
+begin
+ AboutBox.ShowModal;
+end;
+
+procedure TSwordAppForm.ShowHint(Sender: TObject);
+begin
+ StatusBar.SimpleText := Application.Hint;
+end;
+
+procedure TSwordAppForm.EastonsBibleDictionary1Click(Sender: TObject);
+begin
+ mrldEastons.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Eastons (in fact, it may even not be allocated yet). We just want to set Eastons with the text and let Eastons worry about allocating keys.}
+ edLDBox.Text := mrldEastons.Text;
+ lblLDKeyText.Caption := mrldEastons.KeyText;
+ lblLDTitle.Caption := mrldEastons.Description;
+end;
+
+procedure TSwordAppForm.edTextBoxEnter(Sender: TObject);
+begin
+ curedit := TRichEdit(Sender);
+end;
+
+procedure TSwordAppForm.VinesBibleDictionary1Click(Sender: TObject);
+begin
+ mrldVines.KeyText := Trim(curedit.SelText); { we use .KeyText instead of Key.Text because we don't care about accessing the actual key in Vines (in fact, it may even not be allocated yet). We just want to set Vines with the text and let Vines worry about allocating keys.}
+ edLDBox.Text := mrldVines.Text;
+ lblLDKeyText.Caption := mrldVines.KeyText;
+ lblLDTitle.Caption := mrldVines.Description;
+end;
+
+procedure TSwordAppForm.btnPreviousVerseClick(Sender: TObject);
+begin
+ vkCommonKey.Dec;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+end;
+
+procedure TSwordAppForm.btnNextVerseClick(Sender: TObject);
+begin
+ vkCommonKey.Inc;
+ lblTextKeyText.Caption := vkCommonKey.Text;
+ edTextBox.Display;
+ edCommentBox.Text := mrcMHC.Text;
+end;
+
+procedure TSwordAppForm.NewSearchWindow1Click(Sender: TObject);
+begin
+ SearchForm.Show;
+end;
+
+end.
+
diff --git a/examples/windoze/delphi20/svertf/Multimod.dpr b/examples/windoze/delphi20/svertf/Multimod.dpr
new file mode 100644
index 0000000..d4986dc
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/Multimod.dpr
@@ -0,0 +1,17 @@
+program MultiMod;
+
+uses
+ Forms,
+ LogoMain in 'LogoMain.pas' {SwordAppForm},
+ About in 'ABOUT.PAS' {AboutBox},
+ Searchdlg in 'Searchdlg.pas' {SearchForm};
+
+{$R *.RES}
+
+begin
+ Application.Title := 'The SWORD Project';
+ Application.CreateForm(TSwordAppForm, SwordAppForm);
+ Application.CreateForm(TAboutBox, AboutBox);
+ Application.CreateForm(TSearchForm, SearchForm);
+ Application.Run;
+end.
diff --git a/examples/windoze/delphi20/svertf/Searchdlg.dfm b/examples/windoze/delphi20/svertf/Searchdlg.dfm
new file mode 100644
index 0000000..a46702e
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/Searchdlg.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/svertf/Searchdlg.pas b/examples/windoze/delphi20/svertf/Searchdlg.pas
new file mode 100644
index 0000000..0e8475f
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/Searchdlg.pas
@@ -0,0 +1,59 @@
+unit searchdlg;
+
+interface
+
+uses
+ SWKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+ StdCtrls;
+
+type
+ TSearchForm = class(TForm)
+ Edit1: TEdit;
+ Button1: TButton;
+ Button2: TButton;
+ ListBox1: TListBox;
+ Label1: TLabel;
+ procedure Button2Click(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure ListBox1DblClick(Sender: TObject);
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ SearchForm: TSearchForm;
+
+implementation
+
+uses LogoMain;
+
+{$R *.DFM}
+
+procedure TSearchForm.Button2Click(Sender: TObject);
+begin
+ Close;
+end;
+
+procedure TSearchForm.Button1Click(Sender: TObject);
+var
+ results:TSWKey;
+begin
+ results := SwordAppForm.mrtWebster.Search(PChar(Edit1.Text));
+ while (results.Error = 0) do
+ begin
+ ListBox1.Items.Add(results.text);
+ results.Inc;
+ end;
+end;
+
+procedure TSearchForm.ListBox1DblClick(Sender: TObject);
+begin
+ SwordAppForm.vkcommonkey.text := ListBox1.items[listbox1.itemindex];
+ SwordAppForm.lblTextKeyText.Caption := SwordAppForm.vkCommonKey.Text;
+ SwordAppForm.edTextBox.Display;
+ SwordAppForm.edCommentBox.Text := SwordAppForm.mrcMHC.Text;
+end;
+
+end.
diff --git a/examples/windoze/delphi20/svertf/about.dfm b/examples/windoze/delphi20/svertf/about.dfm
new file mode 100644
index 0000000..16013ec
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/about.dfm
Binary files differ
diff --git a/examples/windoze/delphi20/svertf/about.pas b/examples/windoze/delphi20/svertf/about.pas
new file mode 100644
index 0000000..44a8a55
--- /dev/null
+++ b/examples/windoze/delphi20/svertf/about.pas
@@ -0,0 +1,31 @@
+unit About;
+
+interface
+
+uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
+ Buttons, ExtCtrls;
+
+type
+ TAboutBox = class(TForm)
+ Panel1: TPanel;
+ OKButton: TButton;
+ ProgramIcon: TImage;
+ ProductName: TLabel;
+ Version: TLabel;
+ Copyright: TLabel;
+ Comments: TLabel;
+ private
+ { Private declarations }
+ public
+ { Public declarations }
+ end;
+
+var
+ AboutBox: TAboutBox;
+
+implementation
+
+{$R *.DFM}
+
+end.
+