summaryrefslogtreecommitdiff
path: root/bindings
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 /bindings
Imported Upstream version 1.5.3
Diffstat (limited to 'bindings')
-rw-r--r--bindings/Makefile9
-rw-r--r--bindings/Makefile.am5
-rw-r--r--bindings/clx/Sword.pas211
-rw-r--r--bindings/clx/test1/MainFrm.pas116
-rw-r--r--bindings/clx/test1/MainFrm.xfm90
-rw-r--r--bindings/clx/test1/test1.conf36
-rw-r--r--bindings/clx/test1/test1.dpr14
-rw-r--r--bindings/clx/test1/test1.kof61
-rw-r--r--bindings/clx/test1/test1.resbin0 -> 32 bytes
-rw-r--r--bindings/clx/test1/test1g.bpg15
-rw-r--r--bindings/clx/test2/MainFrm.pas417
-rw-r--r--bindings/clx/test2/MainFrm.xfm753
-rw-r--r--bindings/clx/test2/test2.conf38
-rw-r--r--bindings/clx/test2/test2.dpr14
-rw-r--r--bindings/clx/test2/test2.kof61
-rw-r--r--bindings/clx/test2/test2.resbin0 -> 32 bytes
-rw-r--r--bindings/flatapi.cpp259
17 files changed, 2099 insertions, 0 deletions
diff --git a/bindings/Makefile b/bindings/Makefile
new file mode 100644
index 0000000..2ea344d
--- /dev/null
+++ b/bindings/Makefile
@@ -0,0 +1,9 @@
+
+root := ..
+targets := ${root}/lib/libsword.a
+clean-targets := none
+include ${root}/Makefile.cfg
+
+cpp += flatapi.cpp
+
+include ${root}/Makefile.post
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
new file mode 100644
index 0000000..86b8ab2
--- /dev/null
+++ b/bindings/Makefile.am
@@ -0,0 +1,5 @@
+
+bindingsdir = $(top_srcdir)/bindings
+libsword_la_SOURCES += $(bindingsdir)/flatapi.cpp
+
+
diff --git a/bindings/clx/Sword.pas b/bindings/clx/Sword.pas
new file mode 100644
index 0000000..239f932
--- /dev/null
+++ b/bindings/clx/Sword.pas
@@ -0,0 +1,211 @@
+unit Sword;
+
+interface
+ function SWMgr_getPrefixPath(h: integer): PChar; cdecl; external 'libsword.so';
+ function SWMgr_new: integer; cdecl; external 'libsword.so';
+ procedure SWMgr_delete(h: integer); cdecl; external 'libsword.so';
+ function SWMgr_getModulesIterator(h: integer) : integer; cdecl; external 'libsword.so';
+ function SWMgr_getModuleByName(h: integer; name: PChar) : integer; cdecl; external 'libsword.so';
+
+ procedure ModList_iterator_next(h: integer); cdecl; external 'libsword.so';
+ function ModList_iterator_val(h: integer) : integer; cdecl; external 'libsword.so';
+
+ function SWModule_getType(h: integer) : PChar; cdecl; external 'libsword.so';
+ function SWModule_getName(h: integer) : PChar; cdecl; external 'libsword.so';
+ function SWModule_getDescription(h: integer) : PChar; cdecl; external 'libsword.so';
+ function SWModule_getStripText(h: integer) : PChar; cdecl; external 'libsword.so';
+ function SWModule_getRenderText(h: integer) : PChar; cdecl; external 'libsword.so';
+ function SWModule_getKeyText(h: integer) : PChar; cdecl; external 'libsword.so';
+ procedure SWModule_setKeyText(h: integer; key: PChar); cdecl; external 'libsword.so';
+ procedure SWModule_begin(h: integer); cdecl; external 'libsword.so';
+ procedure SWModule_next(h: integer); cdecl; external 'libsword.so';
+ procedure SWModule_previous(h: integer); cdecl; external 'libsword.so';
+type
+
+ SWModule = class(TObject)
+ private
+ handle : integer;
+ public
+ constructor Create(handle : integer);
+ function getType : String;
+ function getName : String;
+ function getDescription : String;
+ function getStripText : String;
+ function getRenderText : WideString;
+ function getKeyText : String;
+ procedure setKeyText(keyText : String);
+ procedure modBegin;
+ procedure modNext;
+ procedure modPrevious;
+ end;
+
+
+ ModIterator = class(TObject)
+ private
+ handle : integer;
+ public
+ constructor Create(handle : integer);
+ procedure next;
+ function getValue : SWModule;
+ end;
+
+
+ SWMgr = class(TObject)
+ private
+ handle : integer;
+ public
+ constructor Create;
+ destructor Destroy; override;
+ function getPrefixPath : String;
+ function getModulesIterator : ModIterator;
+ function getModuleByName(name: String) : SWModule;
+ end;
+
+implementation
+
+constructor SWMgr.Create;
+var
+ yohan : integer;
+begin
+ yohan := SWMgr_new;
+ handle := yohan;
+end;
+
+
+destructor SWMgr.Destroy;
+begin
+ SWMgr_delete(handle);
+end;
+
+
+function SWMgr.getPrefixPath() : String;
+var
+ stuff : String;
+ pstuff : PChar;
+begin
+ pstuff := SWMgr_getPrefixPath(handle);
+ stuff := String(pstuff);
+ Result := stuff;
+end;
+
+
+function SWMgr.getModulesIterator : ModIterator;
+begin
+ Result := ModIterator.Create(SWMgr_getModulesIterator(handle));
+end;
+
+function SWMgr.getModuleByName(name: String) : SWModule;
+var
+ modHandle : Integer;
+
+begin
+ modHandle := SWMgr_getModuleByName(handle, PChar(name));
+ if (modHandle <> 0) then
+ Result := SWModule.Create(modHandle)
+ else Result := nil;
+end;
+
+
+
+
+{ ModIterator methods --------------------------------------------- }
+
+
+constructor ModIterator.Create(handle : integer);
+begin
+ Self.handle := handle;
+end;
+
+
+procedure ModIterator.next;
+begin
+ ModList_iterator_next(handle);
+end;
+
+
+function ModIterator.getValue : SWModule;
+var
+ modHandle : Integer;
+
+begin
+ modHandle := ModList_iterator_val(handle);
+ if (modHandle <> 0) then
+ Result := SWModule.Create(modHandle)
+ else Result := nil;
+end;
+
+
+
+
+
+{ SWModule methods --------------------------------------------- }
+
+
+constructor SWModule.Create(handle : integer);
+begin
+ Self.handle := handle;
+end;
+
+
+function SWModule.getType : String;
+begin
+ Result := String(SWModule_getType(handle));
+end;
+
+
+function SWModule.getName : String;
+begin
+ Result := String(SWModule_getName(handle));
+end;
+
+
+function SWModule.getDescription : String;
+begin
+ Result := String(SWModule_getDescription(handle));
+end;
+
+
+function SWModule.getStripText : String;
+begin
+ Result := String(SWModule_getStripText(handle));
+end;
+
+
+function SWModule.getRenderText : WideString;
+begin
+ Result := WideString(SWModule_getRenderText(handle));
+end;
+
+
+function SWModule.getKeyText : String;
+begin
+ Result := String(SWModule_getKeyText(handle));
+end;
+
+
+procedure SWModule.setKeyText(keyText: String);
+begin
+ SWModule_setKeyText(handle, PChar(keyText));
+end;
+
+
+procedure SWModule.modBegin;
+begin
+ SWModule_begin(handle);
+end;
+
+
+procedure SWModule.modNext;
+begin
+ SWModule_next(handle);
+end;
+
+
+procedure SWModule.modPrevious;
+begin
+ SWModule_previous(handle);
+end;
+
+end.
+
+
diff --git a/bindings/clx/test1/MainFrm.pas b/bindings/clx/test1/MainFrm.pas
new file mode 100644
index 0000000..2d28a7f
--- /dev/null
+++ b/bindings/clx/test1/MainFrm.pas
@@ -0,0 +1,116 @@
+unit MainFrm;
+
+interface
+
+uses
+ SysUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs,
+ QStdCtrls, QComCtrls, QExtCtrls, Sword;
+
+type
+ TForm1 = class(TForm)
+ Panel1: TPanel;
+ Panel2: TPanel;
+ Panel3: TPanel;
+ TreeView1: TTreeView;
+ Button1: TButton;
+ Edit1: TEdit;
+ Label1: TLabel;
+ TextBrowser1: TTextBrowser;
+ procedure Edit1Change(Sender: TObject);
+ procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
+ procedure Button1Click(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ private
+ procedure lookup();
+ public
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+ mgr : SWMgr;
+
+implementation
+
+{$R *.xfm}
+
+procedure TForm1.Edit1Change(Sender: TObject);
+begin
+ lookup();
+end;
+
+procedure TForm1.lookup();
+var
+ module : SWModule;
+ node : TTreeNode;
+
+begin
+ node := TreeView1.Selected;
+ if (node <> nil) then
+ begin
+ module := mgr.getModuleByName(node.Text);
+ if (module <> nil) then
+ begin
+ module.setKeyText(Edit1.Text);
+
+ TextBrowser1.Text :=
+ '<HTML><BODY>' +
+ '<small><b>' + module.getKeyText() + '<b></small> ' +
+ module.getRenderText() +
+ '</BODY></HTML>';
+
+ Label1.Caption := ': ' + module.getKeyText();
+ end;
+ end;
+end;
+
+procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
+begin
+ lookup();
+end;
+
+procedure TForm1.Button1Click(Sender: TObject);
+begin
+ Application.Terminate;
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+ mgr := SWMgr.Create;
+end;
+
+procedure TForm1.FormShow(Sender: TObject);
+var
+ root, node : TTreeNode;
+ module : SWModule;
+ modIt : ModIterator;
+ found : Boolean;
+
+begin
+// root := TreeView1.TopItem;
+// root := TreeView1.Items.AddChild(TreeView1.TopItem, 'Modules');
+
+ modIt := mgr.getModulesIterator;
+ module := modIt.getValue;
+ while (module <> nil) do
+ begin
+ node := TreeView1.Items.GetFirstNode;
+ found := false;
+ while ((node <> nil) AND (NOT found)) do
+ begin
+ if (node.Text = module.getType) then
+ found := true
+ else node := node.getNextSibling;
+ end;
+ if (node = nil) then
+ node := TreeView1.Items.AddChild(TreeView1.TopItem, module.GetType());
+
+ TreeView1.Items.AddChild(node, module.GetName());
+
+ modIt.Next;
+ module := modIt.getValue;
+ end;
+end;
+
+end.
diff --git a/bindings/clx/test1/MainFrm.xfm b/bindings/clx/test1/MainFrm.xfm
new file mode 100644
index 0000000..ce77f46
--- /dev/null
+++ b/bindings/clx/test1/MainFrm.xfm
@@ -0,0 +1,90 @@
+object Form1: TForm1
+ Left = 260
+ Top = 148
+ Width = 592
+ Height = 487
+ HorzScrollBar.Range = 185
+ VertScrollBar.Range = 41
+ Caption = 'Form1'
+ Color = clBackground
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 108
+ TextHeight = 20
+ TextWidth = 8
+ object Panel1: TPanel
+ Left = 0
+ Top = 41
+ Width = 185
+ Height = 446
+ Align = alLeft
+ Caption = 'Panel1'
+ TabOrder = 0
+ object TreeView1: TTreeView
+ Left = 1
+ Top = 1
+ Width = 183
+ Height = 444
+ Align = alClient
+ Columns = <>
+ TabOrder = 0
+ OnChange = TreeView1Change
+ end
+ end
+ object Panel2: TPanel
+ Left = 185
+ Top = 41
+ Width = 407
+ Height = 446
+ Align = alClient
+ Caption = 'Panel2'
+ TabOrder = 1
+ object TextBrowser1: TTextBrowser
+ Left = 1
+ Top = 1
+ Width = 405
+ Height = 444
+ Align = alClient
+ TabOrder = 0
+ TextFormat = tfText
+ end
+ end
+ object Panel3: TPanel
+ Left = 0
+ Top = 0
+ Width = 592
+ Height = 41
+ Align = alTop
+ TabOrder = 2
+ object Button1: TButton
+ Left = 509
+ Top = 8
+ Width = 75
+ Height = 25
+ Anchors = [akTop, akRight]
+ Caption = 'Exit'
+ TabOrder = 0
+ OnClick = Button1Click
+ end
+ object Edit1: TEdit
+ Left = 136
+ Top = 8
+ Width = 177
+ Height = 28
+ TabOrder = 1
+ OnChange = Edit1Change
+ end
+ object Label1: TLabel
+ Left = 328
+ Top = 12
+ Width = 1
+ Height = 20
+ Font.Color = clBlack
+ Font.Height = 17
+ Font.Name = 'Helvetica'
+ Font.Pitch = fpVariable
+ Font.Style = [fsBold]
+ ParentFont = False
+ end
+ end
+end
diff --git a/bindings/clx/test1/test1.conf b/bindings/clx/test1/test1.conf
new file mode 100644
index 0000000..b6fb6e7
--- /dev/null
+++ b/bindings/clx/test1/test1.conf
@@ -0,0 +1,36 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-U"../"
+-O"../"
+-I"../"
+-R"../"
diff --git a/bindings/clx/test1/test1.dpr b/bindings/clx/test1/test1.dpr
new file mode 100644
index 0000000..7b18af9
--- /dev/null
+++ b/bindings/clx/test1/test1.dpr
@@ -0,0 +1,14 @@
+program test1;
+
+uses
+ QForms,
+ MainFrm in 'MainFrm.pas' {Form1},
+ Sword in '../Sword.pas';
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
diff --git a/bindings/clx/test1/test1.kof b/bindings/clx/test1/test1.kof
new file mode 100644
index 0000000..99b034e
--- /dev/null
+++ b/bindings/clx/test1/test1.kof
@@ -0,0 +1,61 @@
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=
+
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+DynamicLoader=/lib/ld-linux.so.2
+
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=../
+Packages=baseclx:visualclx
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=/usr/X11R6/bin/xterm -T KylixDebuggerOutput -e bash -i -c %debuggee%
+UseLauncher=0
+DebugCWD=
+
diff --git a/bindings/clx/test1/test1.res b/bindings/clx/test1/test1.res
new file mode 100644
index 0000000..36f26e2
--- /dev/null
+++ b/bindings/clx/test1/test1.res
Binary files differ
diff --git a/bindings/clx/test1/test1g.bpg b/bindings/clx/test1/test1g.bpg
new file mode 100644
index 0000000..db19a61
--- /dev/null
+++ b/bindings/clx/test1/test1g.bpg
@@ -0,0 +1,15 @@
+#------------------------------------------------------------------------------
+VERSION = BWS.02.5
+#------------------------------------------------------------------------------
+MAKE = make -$(MAKEFLAGS) -f$**
+DCC =dcc $<
+#------------------------------------------------------------------------------
+PROJECTS = test1
+#------------------------------------------------------------------------------
+default: $(PROJECTS)
+#------------------------------------------------------------------------------
+
+test1: test1.dpr
+ $(DCC)
+
+
diff --git a/bindings/clx/test2/MainFrm.pas b/bindings/clx/test2/MainFrm.pas
new file mode 100644
index 0000000..dc13e5e
--- /dev/null
+++ b/bindings/clx/test2/MainFrm.pas
@@ -0,0 +1,417 @@
+unit MainFrm;
+
+interface
+
+uses
+ SysUtils, StrUtils, Types, Classes, Variants, QGraphics, QControls, QForms, QDialogs,
+ QStdCtrls, QComCtrls, QExtCtrls, Sword, QButtons, QImgList, QMenus,
+ QTypes;
+
+type
+ TForm1 = class(TForm)
+ Panel1: TPanel;
+ TreeView1: TTreeView;
+ ImageList1: TImageList;
+ Splitter1: TSplitter;
+ Panel3: TPanel;
+ Splitter2: TSplitter;
+ Panel4: TPanel;
+ TextBrowser2: TTextBrowser;
+ Panel5: TPanel;
+ ListView: TListView;
+ Splitter3: TSplitter;
+ Panel6: TPanel;
+ Edit2: TEdit;
+ StatusBar1: TStatusBar;
+ ColorDialog1: TColorDialog;
+ FontDialog1: TFontDialog;
+ Panel8: TPanel;
+ Splitter4: TSplitter;
+ Panel7: TPanel;
+ TextBrowser3: TTextBrowser;
+ Panel2: TPanel;
+ TextBrowser1: TTextBrowser;
+ ToolBar2: TToolBar;
+ Edit1: TEdit;
+ ComboBox1: TComboBox;
+ SpinEdit1: TSpinEdit;
+ SpinEdit2: TSpinEdit;
+ ToolButton4: TToolButton;
+ Label2: TLabel;
+ btnBTFollow: TToolButton;
+ btnCMFollow: TToolButton;
+ ImageList2: TImageList;
+ MainMenu1: TMainMenu;
+ File1: TMenuItem;
+ Exit1: TMenuItem;
+ Options1: TMenuItem;
+ Strongs1: TMenuItem;
+ MorphTags1: TMenuItem;
+ Footnotes1: TMenuItem;
+ ChangeTextFont1: TMenuItem;
+ CurrentVerseColor1: TMenuItem;
+ procedure Edit1Change(Sender: TObject);
+ procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
+ procedure Button1Click(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure FormShow(Sender: TObject);
+ procedure ToolButton1Click(Sender: TObject);
+ procedure Edit2Change(Sender: TObject);
+ procedure ListViewItemClick(Sender: TObject; Button: TMouseButton;
+ Item: TListItem; const Pt: TPoint; ColIndex: Integer);
+ procedure SpinEdit2Changed(Sender: TObject; NewValue: Integer);
+ procedure SpinEdit1Changed(Sender: TObject; NewValue: Integer);
+ procedure ComboBox1Change(Sender: TObject);
+ procedure CurrentVerseColor1Click(Sender: TObject);
+ private
+ fontName: string;
+ fontSize: integer;
+ doOnChange: boolean;
+ procedure setBookCombo(ref: String);
+ procedure lookup();
+ procedure lookupLD();
+ function getChapter(key: String): integer;
+ function getVerse(key: String): integer;
+ procedure FillDictKeys(key: String);
+ public
+ { Public declarations }
+ curModBT: String;
+ curModCM: String;
+ curModLD: String;
+ end;
+
+var
+ Form1: TForm1;
+ mgr : SWMgr;
+
+implementation
+
+{$R *.xfm}
+
+procedure TForm1.Edit1Change(Sender: TObject);
+begin
+ if (doOnChange) then
+ lookup();
+end;
+
+procedure TForm1.setBookCombo(ref: string);
+var
+ pos: integer;
+ bookname: string;
+
+begin
+ pos := LastDelimiter(' ',ref);
+ bookname := LeftStr(ref,pos);
+ ComboBox1.Text := bookname;
+end;
+
+function TForm1.getChapter(key: String): integer;
+var
+ len: integer;
+ pos: integer;
+ j: integer;
+ tmpbuf: String;
+begin
+ //len := Length(key);
+ pos := LastDelimiter(':',key);
+ tmpbuf := '000';
+ j := 3;
+ for len := pos-1 downto 0 do
+ begin
+ if(key[len] <> ' ') then
+ begin
+ tmpbuf[j] := key[len];
+ j := j -1;
+ end
+ else break;
+ end;
+ Result := StrToInt(tmpbuf);
+end;
+
+
+function TForm1.getVerse(key: String): integer;
+var
+ len: integer;
+ pos: integer;
+ j: integer;
+ i: integer;
+ tmpbuf: String;
+begin
+ len := Length(key);
+ pos := LastDelimiter(':',key);
+ tmpbuf := ' ';
+ j := 1;
+ for i := pos+1 to len do
+ begin
+ if(key[i] <> '') then
+ begin
+ tmpbuf[j] := key[i];
+ j := j + 1;
+ end
+ else break;
+ end;
+ tmpbuf := TrimRight(tmpbuf);
+ Result := StrToInt(tmpbuf);
+end;
+
+
+procedure TForm1.lookup();
+var
+ module : SWModule;
+ chapter : integer;
+ buf : string;
+ currentVerse : string;
+ text : string;
+ key : string;
+ verse : integer;
+ j : integer;
+begin
+ module := mgr.getModuleByName(curModBT);
+ if (module <> nil) then
+ begin
+ module.setKeyText(Edit1.Text);
+ currentVerse := module.getKeyText;
+ chapter := getChapter(currentVerse);
+ verse := getVerse(currentVerse);
+
+ doOnChange := false;
+ setBookCombo(currentVerse);
+ SpinEdit1.Value := chapter;
+ SpinEdit2.Value := verse;
+ doOnChange := true;
+
+ buf := ' ';
+ key := module.getKeyText;
+ j := 1;
+ if(AnsiContainsText(key,':')) then
+ begin
+ while key[j] <> ':' do
+ begin
+ buf[j] := key[j];
+ j := j + 1;
+ end;
+ end;
+ buf := TrimRight(buf);
+ buf := buf + ':1';
+ module.setKeyText(buf);
+ text := '<html><body>';
+ while(chapter = getChapter(module.getKeyText)) do
+ begin
+ if(currentVerse = module.getKeyText) then
+ text := text + '<small><b><font color="blue">' +
+ module.getKeyText() +
+ '</font><b></small> ' +
+ '<A NAME="cv"><font face="' + fontName +
+ '" size="' + IntToStr(fontSize) +
+ '"color="forest green">' +
+ module.getRenderText() + '</font></a><br>'
+ else
+ text := text + '<small><b><font color="blue">' +
+ module.getKeyText() +
+ '</font><b></small> ' + '<font face="' +
+ fontName + '" size="' + IntToStr(fontSize) + '">' +
+ module.getRenderText() + '</font><br>';
+ //buf := IntToStr(chapter);
+ //Label1.Caption := IntToStr(chapter) + ':' + IntToStr(verse);
+ module.modNext;
+ end;
+ text := text + '</body></html>';
+ TextBrowser1.Text := text;
+ TextBrowser1.ScrollToAnchor('cv');
+ StatusBar1.SimpleText := currentVerse;
+ end;
+ //end;
+
+
+ if(btnCMFollow.Down) then
+ begin
+ module := mgr.getModuleByName(curModCM);
+ if (module <> nil) then
+ begin
+ module.setKeyText(Edit1.Text);
+ TextBrowser3.Text :=
+ '<HTML><BODY>' +
+ '<font color="blue"><small><b>[' +
+ module.getName + '] ' +
+ module.getKeyText() +
+ '<b></small></font> ' +
+ module.getRenderText() +
+ '</BODY></HTML>';
+
+ //Label1.Caption := ': ' + module.getKeyText();
+ end;
+ end;
+end;
+
+procedure TForm1.lookupLD();
+var
+ module : SWModule;
+begin
+ module := mgr.getModuleByName(curModLD);
+ if (module <> nil) then
+ begin
+ module.setKeyText(Edit2.Text);
+ TextBrowser2.Text :=
+ '<HTML><BODY>' +
+ '<font color="blue"><small><b>[' +
+ module.getName + '] ' + module.getKeyText() +
+ '<b></small></font> ' +
+ module.getRenderText() +
+ '</BODY></HTML>';
+ end;
+ FillDictKeys(module.getKeyText);
+
+
+end;
+
+procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
+var
+ module : SWModule;
+
+begin
+ module := mgr.getModuleByName(Node.Text);
+ if (module <> nil) then
+ begin
+ if(module.getType = 'Biblical Texts') then
+ begin
+ curModBT := Node.Text;
+ lookup();
+ end;
+
+ if(module.getType = 'Commentaries') then
+ begin
+ curModCM := Node.Text;
+ lookup();
+ end;
+
+ if(module.getType = 'Lexicons / Dictionaries') then
+ begin
+ curModLD := Node.Text;
+ lookupLD;
+ end;
+ end;
+end;
+
+procedure TForm1.Button1Click(Sender: TObject);
+begin
+ Application.Terminate;
+end;
+
+procedure TForm1.FormCreate(Sender: TObject);
+begin
+ mgr := SWMgr.Create;
+end;
+
+procedure TForm1.FormShow(Sender: TObject);
+var
+ node : TTreeNode;
+ module : SWModule;
+ modIt : ModIterator;
+ found : Boolean;
+
+begin
+ doOnChange := true;
+ fontName := '';
+ fontSize := 3; // html font size
+
+ modIt := mgr.getModulesIterator;
+ module := modIt.getValue;
+ while (module <> nil) do
+ begin
+ node := TreeView1.Items.GetFirstNode;
+ found := false;
+ while ((node <> nil) AND (NOT found)) do
+ begin
+ if (node.Text = module.getType) then
+ found := true
+ else node := node.getNextSibling;
+ end;
+ if (node = nil) then
+ node := TreeView1.Items.AddChild(TreeView1.TopItem, module.GetType());
+
+ TreeView1.Items.AddChild(node, module.GetName());
+
+ modIt.Next;
+ module := modIt.getValue;
+ end;
+end;
+
+procedure TForm1.ToolButton1Click(Sender: TObject);
+begin
+ FontDialog1.Execute;
+ fontName := FontDialog1.Font.Name;
+ fontSize := FontDialog1.Font.Size;
+ if (fontSize > 18) then fontSize := 7
+ else if (fontSize < 8) then fontSize := 1
+ else if (fontSize = 8) then fontSize := 1
+ else if (fontSize = 9) then fontSize := 1
+ else if (fontSize = 10) then fontSize := 2
+ else if (fontSize = 11) then fontSize := 3
+ else if (fontSize = 12) then fontSize := 3
+ else if (fontSize = 13) then fontSize := 4
+ else if (fontSize = 14) then fontSize := 5
+ else if (fontSize = 15) then fontSize := 5
+ else if (fontSize = 16) then fontSize := 6
+ else if (fontSize = 17) then fontSize := 6
+ else if (fontSize = 18) then fontSize := 7;
+
+ lookup;
+end;
+
+procedure TForm1.Edit2Change(Sender: TObject);
+begin
+ lookupLD();
+end;
+
+
+procedure TForm1.FillDictKeys(key: string);
+var
+ module : SWModule;
+ count : integer;
+ i : integer;
+ ListItem: TListItem;
+begin
+ module := mgr.getModuleByName(curModLD);
+ count := (ListView.Height div (ListView.Font.Height + 8));
+ ListView.Items.Clear;
+ for i := 0 to (count div 2) do
+ module.modNext; //-- get equal number of keys before and after our starting key(saveKey)
+ for i := 0 to count - 1 do
+ module.modPrevious;
+ for i := 0 to count do
+ begin
+ ListItem := ListView.Items.Add;
+ ListItem.Caption := module.getKeyText;
+ module.modNext;
+ end;
+ module.setKeyText(key);
+end;
+
+procedure TForm1.ListViewItemClick(Sender: TObject; Button: TMouseButton;
+ Item: TListItem; const Pt: TPoint; ColIndex: Integer);
+begin
+ Edit2.Text := Item.Caption;
+end;
+
+procedure TForm1.SpinEdit2Changed(Sender: TObject; NewValue: Integer);
+begin
+ Edit1.Text := ComboBox1.Text + ' ' + SpinEdit1.Text + ':' + SpinEdit2.Text;
+end;
+
+procedure TForm1.SpinEdit1Changed(Sender: TObject; NewValue: Integer);
+begin
+ Edit1.Text := ComboBox1.Text + ' ' + SpinEdit1.Text + ':1';
+end;
+
+procedure TForm1.ComboBox1Change(Sender: TObject);
+begin
+ Edit1.Text := ComboBox1.Text + ' ' + '1:1';
+end;
+
+procedure TForm1.CurrentVerseColor1Click(Sender: TObject);
+begin
+ ColorDialog1.Execute
+ //ColorDialog1.Color
+end;
+
+end.
diff --git a/bindings/clx/test2/MainFrm.xfm b/bindings/clx/test2/MainFrm.xfm
new file mode 100644
index 0000000..180fac1
--- /dev/null
+++ b/bindings/clx/test2/MainFrm.xfm
@@ -0,0 +1,753 @@
+object Form1: TForm1
+ Left = 331
+ Top = 273
+ Width = 608
+ Height = 407
+ HorzScrollBar.Range = 118
+ VertScrollBar.Range = 19
+ ActiveControl = TreeView1
+ Caption = 'KylixSWORD'
+ Color = clBackground
+ Menu = MainMenu1
+ OnCreate = FormCreate
+ OnShow = FormShow
+ PixelsPerInch = 108
+ TextHeight = 15
+ TextWidth = 7
+ object Splitter1: TSplitter
+ Left = 113
+ Top = 0
+ Width = 5
+ Height = 363
+ Beveled = True
+ end
+ object Panel1: TPanel
+ Left = 0
+ Top = 0
+ Width = 113
+ Height = 363
+ Align = alLeft
+ Caption = 'Panel1'
+ TabOrder = 0
+ object TreeView1: TTreeView
+ Left = 1
+ Top = 1
+ Width = 111
+ Height = 361
+ Align = alClient
+ Color = clLight
+ Columns = <>
+ TabOrder = 0
+ OnChange = TreeView1Change
+ end
+ end
+ object Panel3: TPanel
+ Left = 118
+ Top = 0
+ Width = 490
+ Height = 363
+ Align = alClient
+ Caption = 'Panel3'
+ TabOrder = 1
+ object Splitter2: TSplitter
+ Left = 1
+ Top = 231
+ Width = 488
+ Height = 5
+ Cursor = crVSplit
+ Align = alBottom
+ end
+ object Panel4: TPanel
+ Left = 1
+ Top = 236
+ Width = 488
+ Height = 126
+ Align = alBottom
+ TabOrder = 0
+ object Splitter3: TSplitter
+ Left = 283
+ Top = 1
+ Width = 5
+ Height = 124
+ Align = alRight
+ end
+ object TextBrowser2: TTextBrowser
+ Left = 1
+ Top = 1
+ Width = 282
+ Height = 124
+ Align = alClient
+ TabOrder = 0
+ end
+ object Panel5: TPanel
+ Left = 288
+ Top = 1
+ Width = 199
+ Height = 124
+ Align = alRight
+ TabOrder = 1
+ object ListView: TListView
+ Left = 1
+ Top = 25
+ Width = 197
+ Height = 98
+ Align = alClient
+ Columns = <>
+ TabOrder = 0
+ OnItemClick = ListViewItemClick
+ end
+ object Panel6: TPanel
+ Left = 1
+ Top = 1
+ Width = 197
+ Height = 24
+ Align = alTop
+ Caption = 'Panel6'
+ TabOrder = 1
+ object Edit2: TEdit
+ Left = 2
+ Top = 1
+ Width = 193
+ Height = 22
+ AutoSize = False
+ Font.CharSet = fcsUnicode
+ Font.Color = clBlack
+ Font.Height = 13
+ Font.Name = 'arial unicode ms'
+ Font.Pitch = fpVariable
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 0
+ Text = 'GRACE'
+ OnChange = Edit2Change
+ end
+ end
+ end
+ end
+ object Panel8: TPanel
+ Left = 1
+ Top = 28
+ Width = 488
+ Height = 203
+ Align = alClient
+ Caption = 'Panel8'
+ TabOrder = 1
+ object Splitter4: TSplitter
+ Left = 249
+ Top = 1
+ Width = 5
+ Height = 201
+ Align = alRight
+ end
+ object Panel7: TPanel
+ Left = 254
+ Top = 1
+ Width = 233
+ Height = 201
+ Align = alRight
+ Caption = 'Panel7'
+ TabOrder = 0
+ object TextBrowser3: TTextBrowser
+ Left = 1
+ Top = 1
+ Width = 231
+ Height = 199
+ Align = alClient
+ TabOrder = 0
+ end
+ end
+ object Panel2: TPanel
+ Left = 1
+ Top = 1
+ Width = 248
+ Height = 201
+ Align = alClient
+ Caption = 'Panel2'
+ TabOrder = 1
+ object TextBrowser1: TTextBrowser
+ Left = 1
+ Top = 1
+ Width = 246
+ Height = 199
+ Align = alClient
+ TabOrder = 0
+ end
+ end
+ end
+ object ToolBar2: TToolBar
+ Left = 1
+ Top = 1
+ Width = 488
+ Height = 27
+ ButtonHeight = 23
+ Caption = 'ToolBar2'
+ Images = ImageList2
+ TabOrder = 2
+ object Edit1: TEdit
+ Left = 51
+ Top = 4
+ Width = 166
+ Height = 23
+ AutoSize = False
+ Font.CharSet = fcsUnicode
+ Font.Color = clBlack
+ Font.Height = 13
+ Font.Name = 'arial unicode ms'
+ Font.Pitch = fpVariable
+ Font.Style = []
+ ParentFont = False
+ TabOrder = 0
+ Text = 'Genesis 1:1'
+ OnChange = Edit1Change
+ end
+ object ComboBox1: TComboBox
+ Left = 225
+ Top = 4
+ Width = 120
+ Height = 23
+ ItemHeight = 17
+ Items.Strings = (
+ 'Genesis'
+ 'Exodus'
+ 'Leviticus'
+ 'Numbers'
+ 'Deuteronomy'
+ 'Joshua'
+ 'Judges'
+ 'Ruth'
+ 'I Samuel'
+ 'II Samuel'
+ 'I Kings'
+ 'II Kings'
+ 'I Chronicles'
+ 'II Chronicles'
+ 'Ezra'
+ 'Nehemiah'
+ 'Esther'
+ 'Job'
+ 'Psalms'
+ 'Proverbs'
+ 'Ecclesiastes'
+ 'Song of Solomon'
+ 'Isaiah'
+ 'Jeremiah'
+ 'Lamentations'
+ 'Ezekiel'
+ 'Daniel'
+ 'Hosea'
+ 'Joel'
+ 'Amos'
+ 'Obadiah'
+ 'Jonah'
+ 'Micah'
+ 'Nahum'
+ 'Habakkuk'
+ 'Zephaniah'
+ 'Haggai'
+ 'Zechariah'
+ 'Malachi'
+ 'Matthew'
+ 'Mark'
+ 'Luke'
+ 'John'
+ 'Acts'
+ 'Romans'
+ 'I Corinthians'
+ 'II Corinthians'
+ 'Galatians'
+ 'Ephesians'
+ 'Philippians'
+ 'Colossians'
+ 'I Thessalonians'
+ 'II Thessalonians'
+ 'I Timothy'
+ 'II Timothy'
+ 'Titus'
+ 'Philemon'
+ 'Hebrews'
+ 'James'
+ 'I Peter'
+ 'II Peter'
+ 'I John'
+ 'II John'
+ 'III John'
+ 'Jude'
+ 'Revelation of John')
+ ItemIndex = 0
+ TabOrder = 1
+ Text = 'Genesis'
+ OnChange = ComboBox1Change
+ end
+ object SpinEdit1: TSpinEdit
+ Left = 345
+ Top = 4
+ Width = 45
+ Height = 23
+ Align = alCustom
+ TabOrder = 2
+ OnChanged = SpinEdit1Changed
+ end
+ object SpinEdit2: TSpinEdit
+ Left = 390
+ Top = 4
+ Width = 45
+ Height = 23
+ Align = alCustom
+ TabOrder = 3
+ OnChanged = SpinEdit2Changed
+ end
+ object ToolButton4: TToolButton
+ Left = 217
+ Top = 4
+ Width = 8
+ Height = 23
+ Style = tbsSeparator
+ Caption = 'ToolButton4'
+ end
+ object Label2: TLabel
+ Left = 1
+ Top = 4
+ Width = 50
+ Height = 20
+ Align = alLeft
+ Alignment = taCenter
+ AutoSize = False
+ Caption = 'KJV'
+ Layout = tlCenter
+ end
+ object btnBTFollow: TToolButton
+ Tag = 2
+ Left = 435
+ Top = 4
+ Height = 23
+ Style = tbsCheck
+ Caption = 'btnBTFollow'
+ Down = True
+ ImageIndex = 1
+ end
+ object btnCMFollow: TToolButton
+ Tag = 2
+ Left = 458
+ Top = 4
+ Height = 23
+ Style = tbsCheck
+ Caption = 'CM'
+ Down = True
+ ImageIndex = 0
+ end
+ end
+ end
+ object StatusBar1: TStatusBar
+ Left = 0
+ Top = 363
+ Width = 608
+ Height = 19
+ Panels = <>
+ SimplePanel = True
+ SimpleText = 'Genesis 1:1'
+ end
+ object ImageList1: TImageList
+ Height = 24
+ Width = 24
+ Left = 472
+ Top = 72
+ Bitmap = {
+ 494D474C01000100180000001800000004000000424D361B0000000000003600
+ 00002800000030000000300000000100180000000000001B0000120B0000120B
+ 00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF89B7DB88B6DB6E97B91E2C38FFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97BFDF88B6DB77A2C5
+ 54779510181FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5445495445495445495445492B1918
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF9CC2E188B6DB88B6DB6C95B74C6B863F586E0E161CFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF4F3D3F737482432B2A3516103516103516106158607A7E
+ 8FA2BBD8A2BBD8A2BBD87E8597281A1A11090AFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFF698EABB0CEE785B3D7
+ 8DB9DC7FACD05779924F6F8716232DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35161097AAC4A2BBD895
+ A7C092A3BB92A3BB92A3BB9BB1CCA2BBD8A2BBD8A2BBD8A2BBD890A0B772798A
+ 09070BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF
+ FFFFFFFFFFFFFF2D4A53B6D2E9A3C7E291BCDAB7D3E584B1D66D95B548667F43
+ 565CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFF351610A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BB
+ D8A2BBD8A2BBD8A2BBD87E85975A5259110A0BFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF9595959EC0DCCADDEE
+ BAD4E988B6DBB5D0E76A8FAD83AFD245627B1F241FFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A6772A2BBD8A2
+ BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD87678864E3E41
+ 160B0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+ 00000000000000FFFFFF7F97ABB7D3E8ACCCE6B3D0E7729DBD88B5DA5C809E0C
+ 101225271FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFF737482A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BB
+ D8A2BBD8A2BBD8A2BBD890A0B7838C9F515460040509FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF0000000000005C748787A7C0
+ BBD3E877A1C389AFCF678EAF495252536E81FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF737482A2
+ BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD88793A7737482
+ 73748221232AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+ 00000000000000000000FFFFFF9FB6C7AFCDE5688FAE7FA0B65D73843850631D
+ 211FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFF737482A2BBD8A2BBD8A2BBD8A2BBD899AEC88CA1
+ BA8BA1BA8BA1BA8BA1BA8BA1BA8BA1BA8BA1BA28303AFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF608198
+ 607C8E8CB8DC48657D5050503C3C3C324A5BFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF737482A2
+ BBD8A2BBD8A2BBD8A2BBD8645D660C0709000307000307000307000307000307
+ 000307000307FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E5E5E8EABC16C95B54B5C5B4242420F
+ 0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF33354495A7C0A2BBD8A2BBD8A2BBD8A2BBD8645D66FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF5656568DB4D45C809AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33394AA2BBD8A2
+ BBD8A2BBD8A2BBD8A2BBD8A2BBD8202332FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+ 00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56565688B1D148627600
+ 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF33394AA2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD82023
+ 32FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF7F9DB3678DAD2A2A2AFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33394AA2BBD8A2
+ BBD8A2BBD8A2BBD8A2BBD8A2BBD8202332FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+ 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6788A348
+ 6783FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF33394AA2BBD8A2BBD8A2BBD8A2BBD8A2BBD8A2BBD82023
+ 32FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFF2D2F1B678AA42E2E2E000000000000FFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33394AA2BBD8A2
+ BBD8A2BBD8FFFFFFA2BBD8A2BBD8202332FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+ 00000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42
+ 4242000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF000000FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+ 00000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+ 0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12
+ E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E
+ 12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E5
+ 4E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12
+ E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFF
+ FFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFF
+ FFFFFFFFFF4E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF4E12E5FFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFF4E12E54E12E5FFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFE0141BE0141BFF
+ FFFFFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E5FFFFFF4E12E5
+ 4E12E5FFFFFFE0141BE0141BE0141BE0141BFFFFFFFFFFFFFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFF4E12E54E
+ 12E54E12E54E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ E0141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFF4E12E5FFFFFF4E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFF
+ FFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE0
+ 141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E
+ 12E54E12E54E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ E0141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFF
+ FFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE0
+ 141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5
+ FFFFFFFFFFFFFFFFFFE0141BE0141BE0141BE0141BFFFFFFFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFE0141BE0141BE0141BE0141BFFFFFFFFFFFFFFFFFF4E
+ 12E54E12E54E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ E0141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFE0141BE0141BE0141BFFFF
+ FFFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFF
+ FFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE0
+ 141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5
+ FFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E
+ 12E54E12E54E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF
+ E0141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE014
+ 1BFFFFFFFFFFFF4E12E5FFFFFF4E12E5FFFFFFFFFFFFE0141BFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0141BFFFFFFFFFFFFFFFFFFE0141BFFFFFF
+ FFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E54E12E54E12E5FFFFFFFFFFFFE014
+ 1BFFFFFFE0141BFFFFFFE0141BFFFFFFE0141BFFFFFFE0141BFFFFFFFFFFFFE0
+ 141BFFFFFFE0141BFFFFFFFFFFFFE0141BFFFFFFFFFFFF4E12E5FFFFFF4E12E5
+ 4E12E5FFFFFFFFFFFFE0141BE0141BE0141BE0141BFFFFFFE0141BE0141BE014
+ 1BE0141BE0141BFFFFFFE0141BE0141BE0141BE0141BFFFFFFFFFFFF4E12E54E
+ 12E54E12E54E12E5FFFFFFFFFFFFE0141BE0141BFFFFFFFFFFFFFFFFFFE0141B
+ E0141BFFFFFFFFFFFFE0141BE0141BFFFFFFFFFFFFE0141BE0141BE0141BFFFF
+ FFFFFFFFFFFFFF4E12E5FFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFF4E12E54E12E5FFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E5FFFFFFFFFFFF
+ FFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFF
+ FFFFFFFFFF4E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFF4E12E5FFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E
+ 12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E5
+ 4E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12
+ E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12E5FFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E12E54E12
+ E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF424DBE010000000000003E0000002800000030000000
+ 30000000010001000000000080010000120B0000120B00000200000002000000
+ FFFFFF0000000000000000000000FF00000000000000FF00000000000000D010
+ 0000000000000000000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000FF00000000000000FF00000000000000FF00
+ 000000000000FF00000000000000000000000000000000000000000000000000
+ 0000000000000000}
+ end
+ object ColorDialog1: TColorDialog
+ Color = clTeal
+ Left = 440
+ Top = 72
+ end
+ object FontDialog1: TFontDialog
+ Font.CharSet = fcsUnicode
+ Font.Color = clBlack
+ Font.Height = 15
+ Font.Name = 'arial unicode ms'
+ Font.Pitch = fpVariable
+ Font.Style = []
+ Left = 408
+ Top = 72
+ end
+ object ImageList2: TImageList
+ Left = 504
+ Top = 72
+ Bitmap = {
+ 494D474C01000100100000001000000003000000424D360C0000000000003600
+ 00002800000020000000200000000100180000000000000C0000120B0000120B
+ 00000000000000000000FFFFFFFFFFFF00000000000000000000000000000000
+ 0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000FFFF00FFFF00FFFF00
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000FFFF00FFFF00
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000FFFF00
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000FFFF00
+ 000000FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000008000008000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000080FFFF0000008000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000080FFFF00FFFF0000000000
+ FFFF00FFFF00FFFF00FFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
+ 0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
+ 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000BFBFBFBFBFBF7F
+ 7F7F7F7F7F7F7F7F000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000000000000BFBFBFBFBFBF7F7F7F7F7F7F7F7F7F000000000000FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000BFBFBFBFBFBF7F7F7F00000000
+ 00000000007F7F7F7F7F7F7F7F7F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 000000BFBFBFBFBFBF7F7F7F0000000000000000007F7F7F7F7F7F7F7F7F0000
+ 00FFFFFFFFFFFFFFFFFFFFFFFF000000BFBFBFBFBFBF000000FFFFFF0000FFFF
+ FFFF0000FFFFFFFF0000007F7F7F7F7F7F000000FFFFFFFFFFFFFFFFFF000000
+ BFBFBFBFBFBF000000FFFFFF00FF00FFFFFF00FF00FFFFFF0000007F7F7F7F7F
+ 7F000000FFFFFFFFFFFFFFFFFF000000BFBFBF000000FFFFFF00000000000000
+ 0000000000000000FFFFFF0000007F7F7F000000FFFFFFFFFFFFFFFFFF000000
+ BFBFBF000000FFFFFF000000000000000000000000000000FFFFFF0000007F7F
+ 7F000000FFFFFFFFFFFF000000BFBFBF7F7F7FFFFFFF0000000000000000FF00
+ 0080000080000000000000FFFFFF7F7F7F7F7F7F000000FFFFFF000000BFBFBF
+ 7F7F7FFFFFFF00000000000000FF00008000008000000000000000FFFFFF7F7F
+ 7F7F7F7F000000FFFFFF000000BFBFBF0000000000FF0000000000FF00008000
+ 00FF0000800000800000000000FF0000007F7F7F000000FFFFFF000000BFBFBF
+ 00000000FF0000000000FF0000800000FF0000800000800000000000FF000000
+ 007F7F7F000000FFFFFF000000FFFFFF000000FFFFFF0000000000FF0000FF00
+ 00FF0000FF000080000000FFFFFF0000007F7F7F000000FFFFFF000000FFFFFF
+ 000000FFFFFF00000000FF0000FF0000FF0000FF00008000000000FFFFFF0000
+ 007F7F7F000000FFFFFF000000FFFFFF0000000000FF000000FFFFFF0000FF00
+ 00FF0000800000FF0000000000FF000000BFBFBF000000FFFFFF000000FFFFFF
+ 00000000FF00000000FFFFFF00FF0000FF0000800000FF0000000000FF000000
+ 00BFBFBF000000FFFFFF000000FFFFFF7F7F7FFFFFFF000000000000FFFFFFFF
+ FFFF0000FF000000000000FFFFFF7F7F7FBFBFBF000000FFFFFF000000FFFFFF
+ 7F7F7FFFFFFF000000000000FFFFFFFFFFFF00FF00000000000000FFFFFF7F7F
+ 7FBFBFBF000000FFFFFFFFFFFF000000BFBFBF000000FFFFFF00000000000000
+ 0000000000000000FFFFFF000000BFBFBF000000FFFFFFFFFFFFFFFFFF000000
+ BFBFBF000000FFFFFF000000000000000000000000000000FFFFFF000000BFBF
+ BF000000FFFFFFFFFFFFFFFFFF000000FFFFFFBFBFBF000000FFFFFF0000FFFF
+ FFFF0000FFFFFFFF000000BFBFBFBFBFBF000000FFFFFFFFFFFFFFFFFF000000
+ FFFFFFBFBFBF000000FFFFFF00FF00FFFFFF00FF00FFFFFF000000BFBFBFBFBF
+ BF000000FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFBFBFBF7F7F7F00000000
+ 00000000007F7F7FBFBFBFBFBFBF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 000000FFFFFFBFBFBF7F7F7F0000000000000000007F7F7FBFBFBFBFBFBF0000
+ 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFF
+ FFFFBFBFBFBFBFBF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFF000000000000FFFFFFFFFFFFFFFFFFBFBFBFBFBFBF000000000000FFFF
+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
+ 0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFF
+ FFFFFFFFFFFFFFFFFFFF424DBE000000000000003E0000002800000020000000
+ 20000000010001000000000080000000120B0000120B00000200000002000000
+ FFFFFF00000000000000FFFD0000DFBF0000FFF700007D7A0000A75D0000DBFF
+ 0000FFFD0000D7A700007ADB0000BFFB0000BF9F0000FAF500004DBD0000FFBF
+ 0000F57B0000AFAD000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000}
+ end
+ object MainMenu1: TMainMenu
+ Images = ImageList1
+ Left = 536
+ Top = 72
+ object File1: TMenuItem
+ Caption = 'File'
+ object Exit1: TMenuItem
+ Caption = 'Exit'
+ OnClick = Button1Click
+ end
+ end
+ object Options1: TMenuItem
+ Caption = 'Options'
+ object Strongs1: TMenuItem
+ Caption = 'Strongs Numbers'
+ Enabled = False
+ ImageIndex = 0
+ end
+ object MorphTags1: TMenuItem
+ Caption = 'Morph Tags'
+ Enabled = False
+ ImageIndex = 1
+ end
+ object Footnotes1: TMenuItem
+ Caption = 'Footnotes'
+ Enabled = False
+ ImageIndex = 2
+ end
+ object ChangeTextFont1: TMenuItem
+ Caption = 'Change Text Font'
+ ImageIndex = 3
+ OnClick = ToolButton1Click
+ end
+ object CurrentVerseColor1: TMenuItem
+ Caption = 'Current Verse Color'
+ OnClick = CurrentVerseColor1Click
+ end
+ end
+ end
+end
diff --git a/bindings/clx/test2/test2.conf b/bindings/clx/test2/test2.conf
new file mode 100644
index 0000000..6b9045c
--- /dev/null
+++ b/bindings/clx/test2/test2.conf
@@ -0,0 +1,38 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O-
+-$P+
+-$Q+
+-$R+
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-vn
+-vr
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-U"/home/tbiggs/kylix2/lib/debug:../"
+-O"/home/tbiggs/kylix2/lib/debug:../"
+-I"/home/tbiggs/kylix2/lib/debug:../"
+-R"/home/tbiggs/kylix2/lib/debug:../"
diff --git a/bindings/clx/test2/test2.dpr b/bindings/clx/test2/test2.dpr
new file mode 100644
index 0000000..ec160ef
--- /dev/null
+++ b/bindings/clx/test2/test2.dpr
@@ -0,0 +1,14 @@
+program test2;
+
+uses
+ QForms,
+ MainFrm in 'MainFrm.pas' {Form1},
+ Sword in '../Sword.pas';
+
+{$R *.res}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
diff --git a/bindings/clx/test2/test2.kof b/bindings/clx/test2/test2.kof
new file mode 100644
index 0000000..b5fdd24
--- /dev/null
+++ b/bindings/clx/test2/test2.kof
@@ -0,0 +1,61 @@
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=0
+P=1
+Q=1
+R=1
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=
+
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=1
+RemoteSymbols=1
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+DynamicLoader=/lib/ld-linux.so.2
+
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=/home/tbiggs/kylix2/lib/debug:../
+Packages=baseclx:visualclx
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=/usr/X11R6/bin/xterm -T KylixDebuggerOutput -e bash -i -c %debuggee%
+UseLauncher=0
+DebugCWD=
+
diff --git a/bindings/clx/test2/test2.res b/bindings/clx/test2/test2.res
new file mode 100644
index 0000000..36f26e2
--- /dev/null
+++ b/bindings/clx/test2/test2.res
Binary files differ
diff --git a/bindings/flatapi.cpp b/bindings/flatapi.cpp
new file mode 100644
index 0000000..4611a28
--- /dev/null
+++ b/bindings/flatapi.cpp
@@ -0,0 +1,259 @@
+/******************************************************************************
+ * swordapi.cpp - This file contains an api usable by non-C++ windows
+ * environments
+ */
+
+#include <string.h>
+#include <stdio.h>
+
+#include <rawtext.h>
+#include <rawcom.h>
+#include <rawld.h>
+#include <strkey.h>
+#include <listkey.h>
+#include <versekey.h>
+#include <swmgr.h>
+#include <markupfiltmgr.h>
+
+#include "flatapi.h"
+
+
+//-----------------------------------------------------------------
+// SWMgr methods
+//
+extern "C" SWHANDLE SWMgr_new() {
+ return (SWHANDLE) new SWMgr(new MarkupFilterMgr());
+}
+
+
+// SWConfig *, SWConfig *, bool, SWFilterMgr *
+SWHANDLE SWMgr_newEx(SWHANDLE hiconfig, SWHANDLE hisysconfig, char autoload, SWHANDLE hfilterMgr) {
+ SWConfig *iconfig = (SWConfig *)hiconfig;
+ SWConfig *isysconfig = (SWConfig *)hisysconfig;
+ SWFilterMgr *filterMgr = (SWFilterMgr *)hfilterMgr;
+
+ return (SWHANDLE) new SWMgr(iconfig, isysconfig, autoload, filterMgr);
+}
+
+
+void SWMgr_delete(SWHANDLE hmgr) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ if (mgr)
+ delete mgr;
+}
+
+
+SWHANDLE SWMgr_getConfig(SWHANDLE hmgr) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? (SWHANDLE)mgr->config : 0;
+}
+
+
+SWHANDLE SWMgr_getModulesIterator(SWHANDLE hmgr) {
+ static ModItType it;
+
+ SWMgr *mgr = (SWMgr *)hmgr;
+ if (mgr) {
+ it.it = mgr->Modules.begin();
+ it.end = mgr->Modules.end();
+ }
+ return (SWHANDLE)&it;
+}
+
+
+SWHANDLE SWMgr_getModuleByName(SWHANDLE hmgr, char *name) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? (SWHANDLE) mgr->Modules[name] : 0;
+}
+
+
+char *SWMgr_getPrefixPath(SWHANDLE hmgr) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? mgr->prefixPath : 0;
+}
+
+
+char *SWMgr_getConfigPath(SWHANDLE hmgr) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? mgr->configPath : 0;
+}
+
+
+void SWMgr_setGlobalOption(SWHANDLE hmgr, char *option, char *value) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ if (mgr)
+ mgr->setGlobalOption(option, value);
+}
+
+
+char *SWMgr_getGlobalOption(SWHANDLE hmgr, char *option) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? (char *)mgr->getGlobalOption(option) : 0;
+}
+
+
+char *SWMgr_getGlobalOptionTip(SWHANDLE hmgr, char *option) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ return (mgr) ? (char *)mgr->getGlobalOptionTip(option) : 0;
+}
+
+
+// ret: forward_iterator
+SWHANDLE SWMgr_getGlobalOptionsIterator(SWHANDLE hmgr) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ static OptionsList::iterator it;
+
+ if (mgr)
+ it = mgr->getGlobalOptions().begin();
+ return (SWHANDLE)&it;
+}
+
+
+// ret: forward_iterator
+SWHANDLE SWMgr_getGlobalOptionValuesIterator(SWHANDLE hmgr, char *option) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ static OptionsList::iterator it;
+
+ if (mgr)
+ it = mgr->getGlobalOptionValues(option).begin();
+ return (SWHANDLE)&it;
+}
+
+
+void SWMgr_setCipherKey(SWHANDLE hmgr, char *modName, char *key) {
+ SWMgr *mgr = (SWMgr *)hmgr;
+ if (mgr)
+ mgr->setCipherKey(modName, key);
+}
+
+
+//-----------------------------------------------------------------
+// SWModule methods
+
+// static void nullPercent (char percent, void *userData);
+void SWModule_terminateSearch(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ if (module)
+ module->terminateSearch = true;
+}
+
+// SWModule (const char *imodname = 0, const char *imoddesc = 0, SWDisplay * idisp = 0, char *imodtype = 0, SWTextEncoding encoding = ENC_UNKNOWN, SWTextDirection dir = DIRECTION_LTR, SWTextMarkup markup = FMT_UNKNOWN, const char* modlang = 0);
+// virtual ~ SWModule ();
+
+ /** Gets and clears error status
+ *
+ * @return error status
+ */
+char SWModule_error(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (module) ? module->Error() : 0;
+}
+
+
+int SWModule_getEntrySize(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (module) ? module->getEntrySize() : 0;
+}
+
+
+void SWModule_setKeyText(SWHANDLE hmodule, char *key) {
+ SWModule *module = (SWModule *)hmodule;
+ if (module)
+ module->Key(key);
+}
+
+// virtual char SetKey (const SWKey &ikey);
+// virtual SWKey & Key () const {
+
+char *SWModule_getKeyText(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->KeyText() : 0);
+}
+
+
+// virtual char Display ();
+// virtual SWDisplay *Disp (SWDisplay * idisp = 0);
+
+char *SWModule_getName(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->Name() : 0);
+}
+
+
+char *SWModule_getDescription(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->Description() : 0);
+}
+
+
+char *SWModule_getType(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->Type() : 0);
+}
+
+
+void SWModule_previous(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ if (module)
+ (*module)--;
+}
+
+
+void SWModule_next(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ if (module)
+ (*module)++;
+}
+
+
+void SWModule_begin(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ if (module)
+ (*module) = TOP;
+}
+
+
+char *SWModule_getStripText(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->StripText() : 0);
+}
+
+
+char *SWModule_getRenderText(SWHANDLE hmodule) {
+ SWModule *module = (SWModule *)hmodule;
+ return (char *)((module) ? module->RenderText() : 0);
+}
+
+
+
+//-----------------------------------------------------------------
+// stringlist_iterator methods
+
+void stringlist_iterator_next(SWHANDLE hsli) {
+ OptionsList::iterator *sli = (OptionsList::iterator *)hsli;
+ (*sli)++;
+}
+
+
+char *stringlist_iterator_val(SWHANDLE hsli) {
+ OptionsList::iterator *sli = (OptionsList::iterator *)hsli;
+ return (char *)(*sli)->c_str();
+}
+
+
+
+//-----------------------------------------------------------------
+// modmap methods
+
+void ModList_iterator_next(SWHANDLE hmmi) {
+ ModItType *it = (ModItType *)hmmi;
+ if (it->it != it->end)
+ it->it++;
+}
+
+
+SWHANDLE ModList_iterator_val(SWHANDLE hmmi) {
+ ModItType *it = (ModItType *)hmmi;
+ return (it->it != it->end) ? (SWHANDLE)it->it->second : 0;
+}
+