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 := '
';
while(chapter = getChapter(module.getKeyText)) do
begin
if(currentVerse = module.getKeyText) then
text := text + '' +
module.getKeyText() +
' ' +
'' +
module.getRenderText() + '
'
else
text := text + '' +
module.getKeyText() +
' ' + '' +
module.getRenderText() + '
';
//buf := IntToStr(chapter);
//Label1.Caption := IntToStr(chapter) + ':' + IntToStr(verse);
module.modNext;
end;
text := text + '';
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 :=
'' +
'[' +
module.getName + '] ' +
module.getKeyText() +
' ' +
module.getRenderText() +
'';
//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 :=
'' +
'[' +
module.getName + '] ' + module.getKeyText() +
' ' +
module.getRenderText() +
'';
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.