diff options
Diffstat (limited to 'apps/windoze/CBuilder4')
190 files changed, 12984 insertions, 0 deletions
diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp new file mode 100644 index 0000000..d511378 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp @@ -0,0 +1,92 @@ +//--------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) : TForm(AOwner) { +} + + +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) { + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + + string newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + ConfigEntMap::iterator it3; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 3; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + it3 = (*it2).second.find("About"); + if (it3 != (*it2).second.end()) + newtext = newtext + "{\\fs20\\cf0 " + (*it3).second.c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "All the people at The Outpost in Scottsdale for testing and suggestions; "; + newtext += "The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; "; + newtext += "William Dicks; Everyone on b-greek@franklin.oit.unc.edu; Michael Paul Johnson; "; + newtext += "Roland Nygren; Bayu Gunawan; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; "; + newtext += "Gregory Hall; Luis Cortes; Steve Hiner; Kristof Petr; Paul Gear and OpenBible; Chris Bitmead (go Scheme!); "; + newtext += "Chris Little; Brook Humphrey; Torsten Uhlmann, Joachim Ansorg, Darwin Gregory and the BibleTime Team; "; + newtext += "Darren DeMeulenaere"; + newtext += "\\par\\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm Binary files differnew file mode 100644 index 0000000..3316b80 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h new file mode 100644 index 0000000..77da4f8 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h @@ -0,0 +1,36 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include <vcl\System.hpp> +#include <vcl\Windows.hpp> +#include <vcl\SysUtils.hpp> +#include <vcl\Classes.hpp> +#include <vcl\Graphics.hpp> +#include <vcl\Forms.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Buttons.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\ComCtrls.hpp> +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TButton *OKButton; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + void __fastcall FormShow(TObject *Sender); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/Makefile b/apps/windoze/CBuilder4/BibleCS/Makefile new file mode 100644 index 0000000..ed02952 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/Makefile @@ -0,0 +1,13 @@ + +root := ../../../.. +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/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp b/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm b/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm Binary files differnew file mode 100644 index 0000000..4e01f3d --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/ModInstForm.h b/apps/windoze/CBuilder4/BibleCS/ModInstForm.h new file mode 100644 index 0000000..f0cb90a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ComCtrls.hpp> +#include <vcl\ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *Button1; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp new file mode 100644 index 0000000..ef84061 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp @@ -0,0 +1,130 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#pragma hdrstop + +#include "RangeMaintFrm.h" +#include <versekey.h> +#include <listkey.h> +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TRangeMaintForm *RangeMaintForm; + +//--------------------------------------------------------------------------- +__fastcall TRangeMaintForm::TRangeMaintForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./options.conf"); + ListBox1->Clear(); + loop = config->Sections["CustomRanges"].begin(); + end = config->Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + if (ListBox1->ItemIndex) { + SpeedButton1Click(0); + } + else { + ListBox1Click(0); + Button1Click(0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + TextEdit->Text = rs->text.c_str(); + } + else { + NameEdit->Text = ""; + TextEdit->Text = ""; + } + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::TextEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->text = TextEdit->Text.c_str(); + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton1Click(TObject *Sender) +{ + TCustomRange *rs = new TCustomRange("[New Custom Range]", ""); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton3Click(TObject *Sender) +{ + TCustomRange *rs; + config->Sections["CustomRanges"].erase(config->Sections["CustomRanges"].begin(), config->Sections["CustomRanges"].end()); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TCustomRange *)ListBox1->Items->Objects[i]; + config->Sections["CustomRanges"].insert(ConfigEntMap::value_type(rs->name.c_str(), rs->text.c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::Button1Click(TObject *Sender) +{ + VerseKey key; + ListBox2->Clear(); + ListKey verses = key.ParseVerseList(TextEdit->Text.c_str(), key, true); + for (int i = 0; i < verses.Count(); i++) { + VerseKey *element = dynamic_cast<VerseKey *>(verses.GetElement(i)); + if (element) { + ListBox2->Items->Add((string(element->LowerBound()) + " - " + string(element->UpperBound())).c_str()); + } + else ListBox2->Items->Add((const char *)*verses.GetElement(i)); + } +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm Binary files differnew file mode 100644 index 0000000..91bee28 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h new file mode 100644 index 0000000..e279783 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------- + +#ifndef RangeMaintFrmH +#define RangeMaintFrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <Buttons.hpp> +#include <ExtCtrls.hpp> +#include <swconfig.h> +//--------------------------------------------------------------------------- +class TRangeMaintForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TPanel *Panel2; + TPanel *Panel1; + TPanel *Panel3; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TListBox *ListBox1; + TPanel *Panel5; + TLabel *Label1; + TLabel *Label2; + TEdit *NameEdit; + TEdit *TextEdit; + TPanel *Panel6; + TListBox *ListBox2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall TextEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRangeMaintForm(TComponent* Owner); +}; + +class TCustomRange : public TObject { +public: + string name; + string text; + TCustomRange(const char *name, const char *text) { + this->name = name; + this->text = text; + } +}; + + +//--------------------------------------------------------------------------- +extern PACKAGE TRangeMaintForm *RangeMaintForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/back.bmp b/apps/windoze/CBuilder4/BibleCS/back.bmp Binary files differnew file mode 100644 index 0000000..e1f0f93 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/back.bmp diff --git a/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp new file mode 100644 index 0000000..306340a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp @@ -0,0 +1,80 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include <swconfig.h> +#include <gbfrtf.h> +#include <rwprtf.h> +#include <rawgbf.h> +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, 0, false) +{ + gbftortf = new GBFRTF(); + rwptortf = new RWPRTF(); + ModInstFrm = iModInstFrm; + Load(); +} + + +BibleCSMGR::~BibleCSMGR() +{ + if (gbftortf) + delete gbftortf; + + if (rwptortf) + delete rwptortf; +} + + +void BibleCSMGR::AddRenderFilters(SWModule *module, ConfigEntMap §ion) +{ + string sourceformat; + ConfigEntMap::iterator entry; + + sourceformat = ((entry = section.find("SourceType")) != section.end()) ? (*entry).second : (string)""; + // Temporary: To support old module types + if (sourceformat.empty()) { + try { + if (dynamic_cast<RawGBF *>(module)) + sourceformat = "GBF"; + } + catch ( ... ) {} + } + + if (!stricmp(sourceformat.c_str(), "GBF")) { + module->AddRenderFilter(gbftortf); + } + + if (!stricmp(module->Name(), "RWP")) + module->AddRenderFilter(rwptortf); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + bool logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*(*section).second.find("Description")).second.c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*(*section).second.find("About")).second.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->log; + SWLog::systemlog->log = false; + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->log = logflag; + + return retval; +} diff --git a/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h new file mode 100644 index 0000000..61600ee --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include <swmgr.h> +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; + SWFilter *gbftortf; + SWFilter *rwptortf; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); + virtual ~BibleCSMGR(); +}; + +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmark.bmp b/apps/windoze/CBuilder4/BibleCS/bookmark.bmp Binary files differnew file mode 100644 index 0000000..4b6df0c --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmark.bmp diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp new file mode 100644 index 0000000..58c5f73 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp @@ -0,0 +1,221 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "bookmarkfrm.h" +#include <swconfig.h> +#include <dirent.h> +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include <io.h> +#include <dir.h> + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +__fastcall TBookmarksfrm::TBookmarksfrm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TBookmarksfrm::~TBookmarksfrm() { + list <String *>::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TBookmarksfrm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookmarksfrm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookmarksfrm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list <String *>::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TBookmarksfrm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookmarksfrm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm Binary files differnew file mode 100644 index 0000000..deb814d --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h new file mode 100644 index 0000000..4c37796 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ComCtrls.hpp> +#include <swconfig.h> +#include <vcl\Menus.hpp> +#include <list> +//--------------------------------------------------------------------------- +class TBookmarksfrm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list <String *> bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TBookmarksfrm(TComponent* Owner); + __fastcall ~TBookmarksfrm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf b/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf new file mode 100644 index 0000000..b4af089 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf @@ -0,0 +1,7 @@ + +[ROOT] +branch0=Personal Bookmarks + +[branch0] +branch1=James 1:19 + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP Binary files differnew file mode 100644 index 0000000..1a4cc45 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP Binary files differnew file mode 100644 index 0000000..dc698d5 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp b/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp Binary files differnew file mode 100644 index 0000000..8357474 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr new file mode 100644 index 0000000..8c2df01 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr @@ -0,0 +1,182 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = cdstartup.exe +OBJFILES = cdstartup.obj mainfrm.obj +RESFILES = cdstartup.res +RESDEPEN = $(RESFILES) mainfrm.dfm +LIBFILES = +LIBRARIES = vcl40.lib +SPARELIBS = vcl40.lib +DEFFILE = +PACKAGES = vclx40.bpi vcl40.bpi vcldb40.bpi vcldbx40.bpi ibsmp40.bpi bcbsmp40.bpi \ + dclocx40.bpi qrpt40.bpi teeui40.bpi vclsmp40.bpi teedb40.bpi tee40.bpi \ + dss40.bpi nmfast40.bpi inetdb40.bpi inet40.bpi vclmid40.bpi +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +SYSDEFINES = NO_STRICT +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 \ + -k- -vi -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl -Vx -tW -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$YD -v -M -JPHNE +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn /d_RTLDLL +LFLAGS = -L$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=5 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=The SWORD Project CD Installer +FileVersion=1.4.5.0 +InternalName=cdstartup +LegalCopyright=(c) 1998 CrossWire Software under the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.5 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=1 +Item0=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) $(IFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp new file mode 100644 index 0000000..9f2f8c7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USERES("cdstartup.res"); +USEFORM("mainfrm.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res Binary files differnew file mode 100644 index 0000000..ad713e3 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html new file mode 100644 index 0000000..698fea2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html @@ -0,0 +1,246 @@ +<HTML> +<HEAD> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> + <META NAME="Author" CONTENT="Scribe"> + <META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (WinNT; I) [Netscape]"> + <TITLE>The SWORD Project: ALPHA Test Program</TITLE> +</HEAD> +<BODY> +Problems/Bugs found on the ALPHA distribution; +<TABLE BORDER WIDTH="100%" > +<TR> +<TD><B>Problem</B></TD> + +<TD><B>Distributions Affected</B></TD> + +<TD><B>Comments / Workaround</B></TD> +</TR> + +<TR> +<TD>Why won't my greek text show up GREEK!</TD> + +<TD>All</TD> + +<TD>I don't know how to install fonts via InstallShield. Any help +would be appreciated. To workaround this problem: +<BR>Go to Windows Control Panel; double-click the Fonts icon; from the +menu choose: File|Install New Font...; browse (on the CD) to sword\modules\texts\rawtext\nu; +select the font therein. REBOOT</TD> +</TR> +</TABLE> +Click <A HREF="mailto:sword-bugs@crosswire.org">here</A> to report bugs +<BR>Click <A HREF="mailto:sword-feedback@crosswire.org">here</A> to send +comments +<BR>Click here to enter the Java-based bug reporting tool. [Not implemented +yet] +<BR> +<BR> + +<P><B><FONT SIZE=+2>Download</FONT></B> +<UL><A HREF="sword.exe">sword.exe</A> (v0.1.4; 716,800 bytes; 04-Mar-1998) +GUI frontend (Latest changes below) +<UL><A HREF="options.conf">options.conf</A> Put this +file in the same directory as <B>sword.exe</B> +<BR>Create a subdirectory called <B>bookmarks</B> under the same directory +as <B>sword.exe</B>. Put these files there. +<UL><A HREF="wtbsa.conf">wtbsa.conf</A> example custom +bookmarks +<BR><A HREF="getsaved.conf">getsaved.conf</A> example +custom bookmarks</UL> +</UL> +</UL> + +<TABLE BORDER WIDTH="100%" > +<TR> +<TD><B>Date</B></TD> + +<TD><B>Description</B></TD> + +<TD><B>Ref.</B></TD> +</TR> + +<TR> +<TD>04-Mar-1998</TD> + +<TD>Added Directory= option in the Bookmarks section of options.conf allowing +a custom location (to accommodate bookmark saves when running from CDROM)</TD> + +<TD></TD> +</TR> + +<TR> +<TD>04-Mar-1998</TD> + +<TD>Handled creation of bookmarks directory if it does not exist</TD> + +<TD></TD> +</TR> + +<TR> +<TD>04-Mar-1998</TD> + +<TD>Added restrictions to Personal Bookmarks in the Edit Bookmarks tree</TD> + +<TD></TD> +</TR> + +<TR> +<TD>26-Feb-1998b</TD> + +<TD>Enabled Statusbar and added some hint texts to a few controls</TD> + +<TD></TD> +</TR> + +<TR> +<TD>26-Feb-1998b</TD> + +<TD>Stretched controls to prevent clipping of text</TD> + +<TD>Hastings, J</TD> +</TR> + +<TR> +<TD>26-Feb-1998</TD> + +<TD>Changed Book DropDown to DropDownList and reset CH and VS on change</TD> + +<TD>Williams, +<BR>Hastings, J</TD> +</TR> + +<TR> +<TD>26-Feb-1998</TD> + +<TD>Added Greek2Greek patch</TD> + +<TD>Dicks</TD> +</TR> + +<TR> +<TD>25-Feb-1998</TD> + +<TD>Added Options Screen (need file: options.conf)</TD> + +<TD>Moore</TD> +</TR> + +<TR> +<TD>25-Feb-1998</TD> + +<TD>Added Bookmarks (need directory ./bookmarks)</TD> + +<TD></TD> +</TR> + +<TR> +<TD>25-Feb-1998</TD> + +<TD>Added stable Back Button routines</TD> + +<TD></TD> +</TR> + +<TR> +<TD>25-Feb-1998</TD> + +<TD>Added Search Button</TD> + +<TD></TD> +</TR> + +<TR> +<TD>25-Feb-1998</TD> + +<TD>Added CTRL-<0--9> and CTRL-SHIFT-<0..9> temporary StateMarks</TD> + +<TD>Kingery</TD> +</TR> + +<TR> +<TD>19-Feb-1998</TD> + +<TD>Added William Dicks Greek2Greek functions and right-click option from +NU module to access.</TD> + +<TD>Dicks</TD> +</TR> + +<TR> +<TD>19-Feb-1998</TD> + +<TD>Added Back Button and routines</TD> + +<TD></TD> +</TR> + +<TR> +<TD>27-Jan-1998</TD> + +<TD>Added support to rawld.cpp to pad all numeric keys to 5 digits to support +Strongs numbers</TD> + +<TD></TD> +</TR> + +<TR> +<TD>27-Jan-1998</TD> + +<TD>Autoselect current word on dictionary lookup if no text is highlighted</TD> + +<TD></TD> +</TR> + +<TR> +<TD>30-Dec-1997</TD> + +<TD>Added spin buttons to verse lookup controls</TD> + +<TD>Hastings</TD> +</TR> + +<TR> +<TD>30-Dec-1997</TD> + +<TD>Added count to search window</TD> + +<TD>Hastings</TD> +</TR> + +<TR> +<TD>30-Dec-1997</TD> + +<TD>Added preview control to search window</TD> + +<TD>Hastings</TD> +</TR> + +<TR> +<TD>30-Dec-1997</TD> + +<TD>Always sync. verse lookup controls to current verse</TD> + +<TD>Hastings</TD> +</TR> +</TABLE> + + +<P><B>Utility Programs</B> +<UL><A HREF="olb2sword.exe">olb2sword.exe</A> (96,256 bytes; 22-Jan-1998) +Used to create a SWORD module from an installed OLB Bible text.</UL> + +<BR><B>Modules</B> +<UL><A HREF="ftp://ftp.crosswire.org/private/n27u4.zip">n27u4.zip</A> (1,081,986 +bytes; 28-Jan-1998) Nestle-Aland 27th ed. / United Bible Society 4th ed. +Greek New Testament. +<BR><A HREF="ftp://ftp.crosswire.org/private/OrthJBC.zip">OrthJBC.zip</A> +(1,387,695 bytes; 07-Feb-1998) The Orthodox Jewish Brit Chadasha New Testament. +<BR><A HREF="ftp://ftp.crosswire.org/private/vines.zip">vines.zip</A> (2,166,895 +bytes; 07-Feb-1998) Vines Bible Dictionary.</UL> + +<HR WIDTH="100%"> +<BR><A HREF="http://www.crosswire.org">CrossWire Software and Communications</A> +homepage +<BR><A HREF="http://www.bf.org">The Bible Foundation</A> homepage +</BODY> +</HTML> diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html new file mode 100644 index 0000000..6a8ec1a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html @@ -0,0 +1,28 @@ +<HTML> +<HEAD> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> + <META NAME="Author" CONTENT="Scribe"> + <META NAME="GENERATOR" CONTENT="Mozilla/4.04b9 [en] (WinNT; I) [Netscape]"> + <TITLE>The SWORD Project ALPHA Test Site</TITLE> +</HEAD> +<BODY> + +<CENTER><A HREF="http://www.crosswire.org/ALPHAcckswwlkrfre22034820285912"><IMG SRC="swordalpha.JPG" HEIGHT=238 WIDTH=606></A></CENTER> +Thank you for your contribution to The SWORD Project. Our goal to +make quality study software freely available to our generation is one that +we hope you also share. As a contributor or alpha tester, access +is provided to a website were you will be able to share your thoughts, +ideas, criticisms, and thanks with others also involved at this early stage. +The latest versions of software will also be made available at this site. + +<P><B>Important: </B>Please remember, as parts of the project are still +in an alpha stage, public distribution of these sources is not allowed. +As modules are approved by their owners/authors they will be promoted to +public BETA status. ALPHA distributions contain <I>tentative</I> +resources. Permission to distribute these resources may not have +been secured from their owners/authors in spite of what the module's <I>tentative</I> +comments may say. + +<P>To proceed to the alpha test site, click on the image above. +</BODY> +</HTML> diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG Binary files differnew file mode 100644 index 0000000..9dce00f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp new file mode 100644 index 0000000..f40b559 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "mainfrm.h" +#include <shellapi.h> +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn1Click(TObject *Sender) +{ + WinExec(".\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn2Click(TObject *Sender) +{ + WinExec(".\\sword.exe", SW_SHOWNORMAL); +// ShellExecute(this->Handle, "open", "sword.exe", NULL, ".\\", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ +// AddFontResource("\\sword\\modules\\texts\\rawtext\\nu\\greek.ttf"); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn3Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn4Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", ".\\", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::BitBtn5Click(TObject *Sender) +{ + WinExec(".\\fonts\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm Binary files differnew file mode 100644 index 0000000..d001498 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h new file mode 100644 index 0000000..ba10380 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\Buttons.hpp> +#include <Graphics.hpp> +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TBitBtn *BitBtn1; + TBitBtn *BitBtn2; + TLabel *Label1; + TBitBtn *BitBtn3; + TBitBtn *BitBtn4; + TBitBtn *BitBtn5; + void __fastcall BitBtn1Click(TObject *Sender); + void __fastcall BitBtn2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall BitBtn3Click(TObject *Sender); + void __fastcall BitBtn4Click(TObject *Sender); + void __fastcall BitBtn5Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp b/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp Binary files differnew file mode 100644 index 0000000..a0266b1 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP Binary files differnew file mode 100644 index 0000000..f60b75b --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG Binary files differnew file mode 100644 index 0000000..f4424f2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG diff --git a/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf new file mode 100644 index 0000000..4b7b7b3 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf @@ -0,0 +1,10 @@ + +[ROOT] +branch1=What's God all about anyway? + +[branch1] +branch2=Romans 3:23 +branch3=Romans 6:23 +branch4=John 3:16 +branch5=I John 1:9 + diff --git a/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf new file mode 100644 index 0000000..f2e87ed --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf @@ -0,0 +1,304 @@ +[Globals] +AutoInstall=./newmods/ + +[Websters] +DataPath=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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. + + +[FrenchLSG] +DataPath=../../../../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/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf new file mode 100644 index 0000000..55faa41 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf @@ -0,0 +1,18 @@ + +[ROOT] +branch6=What the Bible Says About... + +[branch10] +branch11=Mark 12:25 +branch12=Matthew 22:30 + +[branch6] +branch7=Mormonism + +[branch7] +branch10=Will We Be Married In Heaven? +branch8=Are There Other Gods Besides YHWH? + +[branch8] +branch9=Isaiah 44:8 + diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp new file mode 100644 index 0000000..4024da2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "DDEClientForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ + if (DdeClientConv1->SetLink("sword","Bible")) { + Application->MessageBox("DDE Link Successful!","DDE Information",MB_OK); + DdeClientItem1->DdeItem = "Lookup"; + DdeClientItem2->DdeItem = "Search"; + } + else { + MessageBox(Handle,"DDE Link Unsuccessful","DDE Information", MB_OK | MB_ICONERROR); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DdeClientItem1Change(TObject *Sender) +{ + Memo1->Text = DdeClientItem1->Text; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DdeClientItem2Change(TObject *Sender) +{ + Memo2->Text = DdeClientItem2->Text; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button2Click(TObject *Sender) +{ + DdeClientConv1->PokeData("Lookup", Edit1->Text.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button3Click(TObject *Sender) +{ + DdeClientConv1->PokeData("Search", Edit2->Text.c_str()); +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm Binary files differnew file mode 100644 index 0000000..b964701 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h new file mode 100644 index 0000000..6f23c5f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#ifndef DDEClientFormH +#define DDEClientFormH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\DdeMan.hpp> +#include <vcl\ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TDdeClientConv *DdeClientConv1; + TPanel *Panel1; + TMemo *Memo1; + TMemo *Memo2; + TPanel *Panel2; + TEdit *Edit1; + TButton *Button1; + TButton *Button2; + TButton *Button3; + TEdit *Edit2; + TDdeClientItem *DdeClientItem1; + TDdeClientItem *DdeClientItem2; + void __fastcall Button1Click(TObject *Sender); + void __fastcall DdeClientItem1Change(TObject *Sender); + + void __fastcall DdeClientItem2Change(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall Button3Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp new file mode 100644 index 0000000..12c3d74 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("DDEClientForm.cpp", Form1); +USERES("DDEClientProj.res"); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "SWORD DDE Test Program"; + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak new file mode 100644 index 0000000..20a6233 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak @@ -0,0 +1,55 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.01 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = DDEClientProj.exe +OBJFILES = DDEClientProj.obj DDEClientForm.obj +RESFILES = DDEClientProj.res +RESDEPEN = $(RESFILES) DDEClientForm.dfm +LIBFILES = +DEFFILE = +# --------------------------------------------------------------------------- +CFLAG1 = -Od -Hc -w -k -r- -y -v -vi- -c -a4 -b- -w-par -w-inl -Vx -Ve -x +CFLAG2 = -I$(BCB)\include;$(BCB)\include\vcl -H=$(BCB)\lib\vcld.csm +PFLAGS = -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE \ + -U$(BCB)\lib\obj;$(BCB)\lib -I$(BCB)\include;$(BCB)\include\vcl -v -$Y -$W \ + -$O- -JPHNV -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib -aa -Tpe -x -v -V4.0 +IFLAGS = +LINKER = ilink32 +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) vcl.lib import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\brcc32 $(RFLAGS) $< +#----------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res Binary files differnew file mode 100644 index 0000000..be31e84 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp b/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp new file mode 100644 index 0000000..595cbfe --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp @@ -0,0 +1,330 @@ +#include <vcl.h> +#pragma hdrstop +#include <windows.hpp> +#include <stdlib.h> +#include <stdio.h> +#include "editentryfrm.h" +#include <swdisprtf.h> + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +__fastcall TEditEntry::TEditEntry(TComponent *Owner) : TForm(Owner) { + ResultBuf = 0; +} + + +__fastcall TEditEntry::~TEditEntry() { + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SelectionChange(TObject */*Sender*/) { + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} + + +//---------------------------------------------------------------------------- +TTextAttributes *__fastcall TEditEntry::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntry::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntry::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntry::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = (char *)*Module; + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntry::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + strtok(strstr(tmpbuf, "colortbl"), "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm b/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm Binary files differnew file mode 100644 index 0000000..3b40fc4 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.h b/apps/windoze/CBuilder4/BibleCS/editentryfrm.h new file mode 100644 index 0000000..058c385 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/editentryfrm.h @@ -0,0 +1,108 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include <Outline.hpp> +#include <Grids.hpp> +#include <Buttons.hpp> +#include <ExtCtrls.hpp> +#include <StdCtrls.hpp> +#include <ComCtrls.hpp> +#include <Menus.hpp> +#include <Dialogs.hpp> +#include <Forms.hpp> +#include <Controls.hpp> +#include <Graphics.hpp> +#include <Classes.hpp> +#include <SysUtils.hpp> +#include <Messages.hpp> +#include <Windows.hpp> +#include <System.hpp> +#include <swmodule.h> +#include <swdisprtf.h> +//---------------------------------------------------------------------------- +class TEditEntry : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TRichEdit *RichEdit1; + TLabel *Label1; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntry(TComponent *Owner); + __fastcall ~TEditEntry(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/getsaved.conf b/apps/windoze/CBuilder4/BibleCS/getsaved.conf new file mode 100644 index 0000000..6a77364 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/getsaved.conf @@ -0,0 +1,8 @@ +[ROOT] +getsaved=What's God all about anyway? + +[getsaved] +verse1=Romans 3:23 +verse2=Romans 6:23 +verse3=John 3:16 +verse4=I John 1:9
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp b/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp new file mode 100644 index 0000000..025bd06 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp @@ -0,0 +1,1151 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#include <vcl/clipbrd.hpp> +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include <utilstr.h> +#include <filemgr.h> +#include "editentryfrm.h" +#include "versesel.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = GetLongHint(Application->Hint); +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + list <SWDisplay *>::iterator it; + int loop; + + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + + for (loop = 0; loop < 10; loop++) { + if (ctrlstates[loop]); + delete ctrlstates[loop]; + } + list <ModState *>::iterator mit; + for (mit = modstates.begin(); mit != modstates.end(); mit++) { + delete (*mit); + } +} +//--------------------------------------------------------------------------- +void TForm1::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + string value; + ConfigEntMap::iterator entry; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + ConfigEntMap §ion = (*sit).second; + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", + ((entry = section.find("CurrentVSColorRed")) != section.end()) ? atoi((*entry).second.c_str()) : 0, + ((entry = section.find("CurrentVSColorGreen")) != section.end()) ? atoi((*entry).second.c_str()) : 0, + ((entry = section.find("CurrentVSColorBlue")) != section.end()) ? atoi((*entry).second.c_str()) : 0); + } + else sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl1; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + newrtf->MarkCurrentVerse = (atoi((*(*sit).second.find("AutoVSColor")).second.c_str())) ? true:false; + } + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + newrtf->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(disp); + displays.insert(displays.begin(), disp); + mod->SetKey(DefaultVSKey); + + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + SectionMap::iterator sit; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + SWDisplay *disp = new DispExternal(); + mod->Disp(*displays.insert(displays.begin(), disp)); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + ((SWDispRTF *)newrtf)->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp((SWDispRTF *)newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl2; + newrtf->Parent = newtab; + newrtf->Align = alClient; + + mod->SetKey(DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl3; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + newrtf->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + mod->SetKey(DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::PageControl1Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl1); + Form1->ActiveControl = PageControl1; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey.books[DefaultVSKey.Testament()-1][DefaultVSKey.Book()-1].name); + CHBox->Text = DefaultVSKey.Chapter(); + VSBox->Text = DefaultVSKey.Verse(); + freeHandLookup->Text = (const char *)DefaultVSKey; + RefreshActiveSheet(PageControl1); + logmodstate = false; // only log state once + RefreshActiveSheet(PageControl2); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey.AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + DefaultVSKey = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey.AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl2Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl2); + Form1->ActiveControl = PageControl2; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditChange(TObject *Sender) +{ + if (DictKeyEdit->Modified) { + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + DictKeyEdit->Modified = false; + FillDictKeys(); + } +} + +void TForm1::FillDictKeys() { + ModMap::iterator it; + int index = 0; + SWKey saveKey; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *mod = (*it).second; + mod->KeyText(); // snap to entry + saveKey = mod->KeyText(); + int count = lbDictKeys->Height / lbDictKeys->ItemHeight; + lbDictKeys->Items->Clear(); + for (int i = 0; i < (count / 2); i++) + (*mod)++; + for (int i = 0; i < count-1; i++) + (*mod)--; + mod->Error(); + for (;!mod->Error() && count;count--,(*mod)++) { + lbDictKeys->Items->Add(mod->KeyText()); + if (saveKey == mod->Key()) + index = lbDictKeys->Items->Count-1; + } + lbDictKeys->ItemIndex = index; + } +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl3Change(TObject *Sender) +{ + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + Form1->ActiveControl = PageControl3; + FillDictKeys(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) +{ + Form2->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + DictKeyEdit->Text = Trim(rtf->SelText); + rtf->SelStart = saveSelStart; + rtf->SelLength = 0; + } + else DictKeyEdit->Text = Trim(rtf->SelText); +} + + +void __fastcall TForm1::verseLookupClick(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + freeHandLookup->Text = Trim(rtf->SelText); + rtf->SelStart = saveSelStart; + rtf->SelLength = 0; + } + else freeHandLookup->Text = Trim(rtf->SelText); + char ret = '\r'; + freeHandLookupoldKeyPress(Sender, ret); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + + sit = layoutconf->Sections["Screen"]; + sit.erase("MainTop"); sit.insert(ConfigEntMap::value_type("MainTop", IntToStr(Form1->Top).c_str())); + sit.erase("MainLeft"); sit.insert(ConfigEntMap::value_type("MainLeft", IntToStr(Form1->Left).c_str())); + sit.erase("MainHeight"); sit.insert(ConfigEntMap::value_type("MainHeight", IntToStr(Form1->Height).c_str())); + sit.erase("MainWidth"); sit.insert(ConfigEntMap::value_type("MainWidth", IntToStr(Form1->Width).c_str())); + sit.erase("TextComHeight"); sit.insert(ConfigEntMap::value_type("TextComHeight", IntToStr(pnlTextCom->Height).c_str())); + sit.erase("TextWidth"); sit.insert(ConfigEntMap::value_type("TextWidth", IntToStr(pnlText->Width).c_str())); + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit, eitend; + AnsiString s1; + char *font; + int loop; + int maxFiles; + string tmpval; + + logmodstate = true; + freshdict = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + tmpval = ((eit = optionsconf->Sections["System"].find("MaxFiles")) != optionsconf->Sections["System"].end())? (*eit).second : (string)""; + if ((maxFiles = atoi(tmpval.c_str()))) { + FileMgr::systemFileMgr.maxFiles = maxFiles; + } + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + + DefaultVSKey = TOP; + cbBook->Clear(); + while (!DefaultVSKey.Error()) { + s1 = (const char *)DefaultVSKey; + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + DefaultVSKey.Book(DefaultVSKey.Book() + 1); + } + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey.Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey.Persist(1); + DefaultStrKey = ""; + + mainmgr = new BibleCSMGR(ModInstFrm); + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + font = 0; + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + CreateTextPane((*it).second, font); + } + if (!strcmp((*it).second->Type(), "Commentaries")) + CreateCommentPane((*it).second); + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + CreateLDPane((*it).second); + } + + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + if ((eit = (*sit).second.find("MainTop")) != (*sit).second.end()) + Form1->Top = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainLeft")) != (*sit).second.end()) + Form1->Left = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainHeight")) != (*sit).second.end()) + Form1->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainWidth")) != (*sit).second.end()) + Form1->Width = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("TextComHeight")) != (*sit).second.end()) + pnlTextCom->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("TextWidth")) != (*sit).second.end()) + pnlText->Width = atoi((*eit).second.c_str()); + } + + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + Graphics::TBitmap *bitmap = BackBtnImage->Picture->Bitmap; + TColor transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + bitmap = SearchBtnImage->Picture->Bitmap; + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + bitmap = BookmarkBtnImage->Picture->Bitmap; + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList2->AddMasked(bitmap, transColor); + + // Add options to Options Main Menu choice + OptionsList options = mainmgr->getGlobalOptions(); + for (OptionsList::iterator it = options.begin(); it != options.end(); it++) { + TMenuItem *newitem = new TMenuItem(MainMenu1); + newitem->Caption = (*it).c_str(); + newitem->Default = false; + newitem->OnClick = OptionShowVals; + newitem->Hint = mainmgr->getGlobalOptionTip((*it).c_str()); + OptionsList values = mainmgr->getGlobalOptionValues((*it).c_str()); + for (OptionsList::iterator it2 = values.begin(); it2 != values.end(); it2++) { + TMenuItem *newitem2 = new TMenuItem(MainMenu1); + newitem2->Caption = (*it2).c_str(); + newitem2->Default = false; + newitem2->OnClick = GlobalOptionChange; + newitem->Add(newitem2); + } +// Mainmenu->Items->Add(newitem); + Options2->Add(newitem); + } + + + if ((sit = layoutconf->Sections.find("History")) != layoutconf->Sections.end()) { + + eitend = (*sit).second.upper_bound("SearchText"); + for (eit = (*sit).second.lower_bound("SearchText"); eit != eitend; eit++) + Form2->SearchText->Items->Add(eit->second.c_str()); + + eitend = (*sit).second.upper_bound("LookupText"); + for (eit = (*sit).second.lower_bound("LookupText"); eit != eitend; eit++) + freeHandLookup->Items->Add(eit->second.c_str()); + + if ((eit = (*sit).second.find("LastVerse")) != (*sit).second.end()) { + freeHandLookup->Text = (*eit).second.c_str(); + char ret = '\r'; + freeHandLookupoldKeyPress(0, ret); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = ((*it).second)->KeyText(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + if (state) { + state->pc->ActivePage = state->ap; + if ((state->pc == PageControl1) || (state->pc == PageControl2)) { + DefaultVSKey = state->key; + TextKeyChanged(); + } + if (state->pc == PageControl3) { + DictKeyEdit->Text = (const char *)state->key; + } + if (state->pc->ActivePage->ControlCount) + Form1->ActiveControl = (TWinControl *)state->pc->ActivePage->Controls[0]; + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list <ModState *>::iterator it; + + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list <ModState *>::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + DefaultVSKey = value; + delete [] value; + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + Bookmarksfrm->bmtree->Items->AddChild(Bookmarksfrm->bmtree->Items->Item[0], (const char *)DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup, point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, Bookmarksfrm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + Bookmarksfrm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = PageControl1; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == PageControl2) || (IsChild(PageControl2->Handle, Screen->ActiveControl->Handle))) + pc = PageControl2; + if ((Screen->ActiveControl == PageControl3) || (IsChild(PageControl3->Handle, Screen->ActiveControl->Handle))) + pc = PageControl3; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + ConfigEntMap emap; + int color; + string tmpval; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + Optionsfrm->CurrentVSColor->Brush->Color = + atoi((*(*sit).second.find("CurrentVSColorRed")).second.c_str()) + | (atoi((*(*sit).second.find("CurrentVSColorGreen")).second.c_str()) << 8) + | (atoi((*(*sit).second.find("CurrentVSColorBlue")).second.c_str()) << 16); + Optionsfrm->AutoVSColor->Checked = ((atoi((*(*sit).second.find("AutoVSColor")).second.c_str()))?true:false); + if ((*sit).second.find("FontSize") != (*sit).second.end()) + Optionsfrm->UpDown1->Position = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi((*(*sit).second.find("AutoSaveOther")).second.c_str()))?true:false); + } + + + Optionsfrm->HintPopups->Checked = true; + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + if (!atoi(tmpval.c_str())) + Optionsfrm->HintPopups->Checked = false; + + if (Optionsfrm->ShowModal() == mrOk) { + emap = optionsconf->Sections["Appearance"]; + color = Optionsfrm->CurrentVSColor->Brush->Color; + emap.erase("CurrentVSColorRed"); emap.insert(ConfigEntMap::value_type("CurrentVSColorRed", IntToStr(color & 0xFF).c_str())); + emap.erase("CurrentVSColorGreen"); emap.insert(ConfigEntMap::value_type("CurrentVSColorGreen", IntToStr((color >> 8) & 0xFF).c_str())); + emap.erase("CurrentVSColorBlue"); emap.insert(ConfigEntMap::value_type("CurrentVSColorBlue", IntToStr((color >> 16) & 0xFF).c_str())); + emap.erase("AutoVSColor"); emap.insert(ConfigEntMap::value_type("AutoVSColor", IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str())); + emap.erase("FontSize"); emap.insert(ConfigEntMap::value_type("FontSize", IntToStr(atoi(Optionsfrm->fontSize->Text.c_str())).c_str())); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["Bookmarks"]; + emap.erase("AutoSavePersonal"); emap.insert(ConfigEntMap::value_type("AutoSavePersonal", IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str())); + emap.erase("AutoSaveOther"); emap.insert(ConfigEntMap::value_type("AutoSaveOther", IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str())); + optionsconf->Sections["Bookmarks"] = emap; + + emap = optionsconf->Sections["Hints"]; + emap.erase("On"); emap.insert(ConfigEntMap::value_type("On", IntToStr((Optionsfrm->HintPopups->Checked)?1:0).c_str())); + optionsconf->Sections["Hints"] = emap; + + optionsconf->Save(); + } + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + Hint = ""; + Application->OnHint = DisplayHint; + Application->ShowHint = true; + this->ShowHint = true; +} + + +void TForm1::AddVerseChoices(TPopupMenu *menu, const char *buf, TRichEdit *rtf) { + TMenuItem *newitem; + + tmpVerseList = VerseKey::ParseVerseList((char *)buf, DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = "Create Verse List"; + newitem->Hint = "Create a New Verse List Window"; + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + int breakcnt = 3; + while (!tmpVerseList.Error()) { + breakcnt++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(breakcnt%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + + + +} + + +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) { + + int versestart, verseend; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + TMenuItem *newitem; + + if (menu == PopupMenu1) + staticMenuItemsCount = 3; + else if (menu == PopupMenu2) + staticMenuItemsCount = 2; + else if (menu == PopupMenu3) + staticMenuItemsCount = 6; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + int entrylen = strlen(rtf->Text.c_str()); + char *entrytext = new char [ entrylen + 1 ]; + int selstart = rtf->SelStart; + strcpy(entrytext, rtf->Text.c_str()); +// for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + for (versestart = selstart; ((versestart)&&(entrytext[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < entrylen) && (entrytext[verseend] != '|')); verseend++); + if ((verseend < entrylen) && (verseend > selstart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &entrytext[versestart+1], len - 2); // strip the # and | from the string + int buflen = strlen(buf); + for (int i = 0; i < buflen; i++) { + if ((buf[i] == 10) || (buf[i] == 13)) + buf[i] = ' '; + } + AddVerseChoices(menu, buf, rtf); + delete [] buf; + } + } + delete [] entrytext; + } + else { + string highlight = Trim(rtf->SelText).c_str(); + tmpVerseList = VerseKey::ParseVerseList((char *)highlight.c_str(), DefaultVSKey); + if (tmpVerseList.Count()) + AddVerseChoices(menu, highlight.c_str(), rtf); + +// newitem = new TMenuItem(menu); +// newitem->Caption = "Verse Lookup"; +// newitem->Hint = "Attempt to lookup highlighted text as a verse"; +// newitem->OnClick = verseLookupClick; +// menu->Items->Add(newitem); + } + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupoldKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = VerseKey::ParseVerseList(freeHandLookup->Text.c_str(), DefaultVSKey); + + if (tmpVerseList.Count()) { + int index = freeHandLookup->Items->IndexOf(freeHandLookup->Text); + freeHandLookup->Items->Insert(0, freeHandLookup->Text); + + if (index >= 0) + freeHandLookup->Items->Delete(index+1); + + freeHandLookup->ItemIndex = 0; + + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + + tmpVerseList = TOP; + DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { + ((TWinControl *)Sender)->SetFocus(); + TRichEdit *rtf = (TRichEdit *)Sender; + if (Button == mbRight) { + if (!rtf->SelLength) + SendMessage(rtf->Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(X, Y)); + } +} + + +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntry->Module = module = (*target).second; + EditEntry->RTFDisplay = rtf; + } + else EditEntry->Module = module = 0; + EditEntry->ShowModal(); + if (EditEntry->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntry->ResultBuf; + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->Delete(); + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(PageControl2); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::GlobalOptionChange(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + source = menuchoice->Parent->Caption.c_str(); + char *option = new char [strlen(source) + 1]; + k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + option[k++] = source[j]; + } + option[k] = 0; + mainmgr->setGlobalOption(option, value); + delete [] option; + delete [] value; + TextKeyChanged(); +} +//--------------------------------------------------------------------------- + + + +void __fastcall TForm1::OptionShowVals(TObject *Sender) +{ + TMenuItem *menuChoice = (TMenuItem *)Sender; + + string option = menuChoice->Caption.c_str(); + int k = 0; + const char *source = option.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + + string value = mainmgr->getGlobalOption(caption); + delete [] caption; + for (int i = 0; i < menuChoice->Count; i++) { + int k = 0; + char *source = menuChoice->Items[i]->Caption.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + if (!stricmp(caption, value.c_str())) + menuChoice->Items[i]->Checked = true; + else menuChoice->Items[i]->Checked = false; + delete [] caption; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Contents1Click(TObject *Sender) +{ + string helpDir; + ConfigEntMap::iterator it = optionsconf->Sections["Help"].find("Directory"); + if (it != optionsconf->Sections["Help"].end()) + helpDir = (*it).second; + else helpDir = ".\\help"; + + string helpExe = helpDir + "\\sword.chm"; + + if ((int)ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL) < 33) { + helpExe = helpDir + "\\index.html"; + ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) +{ + int saveCount = 5; + + + ConfigEntMap section; + ConfigEntMap::iterator entryIt; + + section = layoutconf->Sections["History"]; + entryIt = section.find("SearchSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("SearchSaveCount", "5")); + + section.erase("SearchText"); + for (int loop = 0; ((loop < saveCount) && (loop < Form2->SearchText->Items->Count)); loop++) + section.insert(ConfigEntMap::value_type("SearchText", Form2->SearchText->Items->Strings[loop].c_str())); + + entryIt = section.find("LookupSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("LookupSaveCount", "5")); + + section.erase("LookupText"); + for (int loop = 0; ((loop < saveCount) && (loop < freeHandLookup->Items->Count)); loop++) + section.insert(ConfigEntMap::value_type("LookupText", freeHandLookup->Items->Strings[loop].c_str())); + + section.erase("LastVerse"); + section.insert(ConfigEntMap::value_type("LastVerse", (const char *)DefaultVSKey)); + + layoutconf->Sections["History"] = section; + layoutconf->Save(); + +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::lbDictKeysClick(TObject *Sender) +{ + DictKeyEdit->Text = lbDictKeys->Items->Strings[lbDictKeys->ItemIndex]; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm b/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm Binary files differnew file mode 100644 index 0000000..76b27a2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.h b/apps/windoze/CBuilder4/BibleCS/mainfrm.h new file mode 100644 index 0000000..60cdc25 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mainfrm.h @@ -0,0 +1,252 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\ComCtrls.hpp> +#include <swmgr.h> +#include <swtext.h> +#include <strkey.h> +#include <regex.h> +#include <listkey.h> +#include "swdisprtfchap.h" +#include <vcl\Buttons.hpp> +#include <vcl\Menus.hpp> +#include <vcl\DdeMan.hpp> +//#include <NMHTML.hpp> +#include <OleCtrls.hpp> +#include <ToolWin.hpp> +//#include <vcl\isp.hpp> +#include <shellapi.h> +#include <Graphics.hpp> +#include <ImgList.hpp> +#include <jpeg.hpp> +#include <list> +#include <vector> + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + return edit->Display(imodule); + } +}; + +/* +class HREFDisp : public SWDisplay { + THTML *edit; +public: + HREFDisp(THTML *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + edit->RequestDoc((char *)imodule); + } +}; +*/ + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + return 0; + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *PageControl1; + TPageControl *PageControl2; + TStatusBar *StatusBar1; + TPageControl *PageControl3; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TPopupMenu *PopupMenu3; + TMenuItem *MenuItem2; + TMenuItem *MenuItem3; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TMenuItem *Options2; + TMenuItem *Contents1; + TComboBox *freeHandLookup; + TPanel *Panel2; + TSplitter *Splitter3; + TRichEdit *DictKeyEdit; + TListBox *lbDictKeys; + void __fastcall PageControl1Change(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall PageControl2Change(TObject *Sender); + + + + void __fastcall DictKeyEditChange(TObject *Sender); + void __fastcall PageControl3Change(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + + void __fastcall FormShow(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall DisplayHint(TObject* Sender) ; + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupoldKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + + void __fastcall GlobalOptionChange(TObject *Sender); + + + void __fastcall OptionShowVals(TObject *Sender); + void __fastcall Contents1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall lbDictKeysClick(TObject *Sender); + void __fastcall verseLookupClick(TObject *Sender); +private: // User declarations + list <SWDisplay *> displays; // so we can delete each display we create + list <ModState *> modstates; + vector <ModState *> ctrlstates; + bool logmodstate; + bool freshdict; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); + void PushState(); + void BackState(); + void ForwardState(); + void BuildRTFHeader(char *buf, char *font, int max); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + void FillDictKeys(); + void AddVerseChoices(TPopupMenu *menu, const char *buf, TRichEdit *rtf); + +public: // User declarations + VerseKey DefaultVSKey; + SWKey DefaultStrKey; + SWMgr *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + ListKey tmpVerseList; + String tmpVerseListCaption; +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/mods.conf b/apps/windoze/CBuilder4/BibleCS/mods.conf new file mode 100644 index 0000000..dbfa84a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mods.conf @@ -0,0 +1,487 @@ +[Globals] +;AutoInstall=./newmods/ + + +[OLB] +DataPath=../../../../modules/texts/rawgbf/olb/ +ModDrv=RawGBF +GlobalOptionFilter=GBFStrongs +GlobalOptionFilter=GBFFootnotes +Description=OLB Converted Module +About= OLB Converted Module + +[-+*Personal*+-] +DataPath=../../../../modules/comments/rawfiles/personal/ +ModDrv=RawFiles +Description=Personal Commentary +About=This module allows you to store your own commentary. + +[SpanishRVA] +DataPath=../../../../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=../../../../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=../../../../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=../../../../modules/comments/hrefcom/jfb/ +ModDrv=HREFCom +Prefix=http://ccel.wheaton.edu/j/jfb/jfb/ +;External=0 +;Prefix=file:///../../../../modules/comments/hrefcom/jfb/ +External=1 +Description=Jamison Faucett Brown Bible Commentary +About=\qc Jamison Faucett Brown Commentary + + +[Naves] +DataPath=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../modules/texts/rawgbf/frenchlsg/ +ModDrv=RawGBF +GlobalOptionFilter=GBFStrongs +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. + +[NKJV] +DataPath=../../../../modules/texts/rawtext/nkjv/ +ModDrv=RawText +Version=1.2 +CipherKey=yomama +History_1.1=changed text source to more reliable version +Description=The New King James Version +About=The New King James Version NKJV, copyright 1982 \par \ +Thomas Nelson, Inc. All rights reserved. Bible text from \par \ +the New King James Version is not to be reproduced in \par \ +copies or otherwise by any means except as permitted in \par \ +writing by Thomas Nelson, Inc. diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm Binary files differnew file mode 100644 index 0000000..33d61d4 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h new file mode 100644 index 0000000..9b4c017 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *Button1; + TButton *Button2; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp b/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp new file mode 100644 index 0000000..621c45f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "optionfrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::ChooseColorbtnClick(TObject *Sender) +{ + ColorDialog1->Execute(); + CurrentVSColor->Brush->Color = ColorDialog1->Color; +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm b/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm Binary files differnew file mode 100644 index 0000000..13859c6 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.h b/apps/windoze/CBuilder4/BibleCS/optionfrm.h new file mode 100644 index 0000000..f3e1d41 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/optionfrm.h @@ -0,0 +1,47 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\Dialogs.hpp> +#include <ComCtrls.hpp> +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TGroupBox *GroupBox1; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *GroupBox2; + TCheckBox *AutoVSColor; + TShape *CurrentVSColor; + TColorDialog *ColorDialog1; + TButton *ChooseColorbtn; + TPanel *Panel2; + TButton *Button1; + TPanel *Panel3; + TButton *Button2; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TUpDown *UpDown1; + TEdit *fontSize; + TPanel *Panel4; + TGroupBox *GroupBox3; + TCheckBox *HintPopups; + void __fastcall ChooseColorbtnClick(TObject *Sender); + +private: // User declarations +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/options.conf b/apps/windoze/CBuilder4/BibleCS/options.conf new file mode 100644 index 0000000..5b50f30 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/options.conf @@ -0,0 +1,22 @@ + +[Appearance] +AutoVSColor=1 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=0 +FontSize=0 + +[Bookmarks] +AutoSaveOther=1 +AutoSavePersonal=1 +Directory= + +[CustomRanges] +New Testament=mat - rev + +[Hints] +On=1 + +[System] +MaxFiles=40 + diff --git a/apps/windoze/CBuilder4/BibleCS/search.bmp b/apps/windoze/CBuilder4/BibleCS/search.bmp Binary files differnew file mode 100644 index 0000000..ee693be --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/search.bmp diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp b/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp new file mode 100644 index 0000000..afc45c0 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp @@ -0,0 +1,192 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "searchfrm.h" +#include <listkey.h> +#include "mainfrm.h" +#include <regex.h> +#include "RangeMaintFrm.h" + + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm2 *Form2; +//--------------------------------------------------------------------------- +__fastcall TForm2::TForm2(TComponent* Owner) + : TForm(Owner) { + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; + SearchText->Align = alClient; +// pvrtf->PopupMenu = PopupMenu2; + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::Button1Click(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + if (!SearchText->Text.Length()) + return; + + + int index = SearchText->Items->IndexOf(SearchText->Text); + SearchText->Items->Insert(0, SearchText->Text); + + if (index >= 0) + SearchText->Items->Delete(index+1); + + SearchText->ItemIndex = 0; + + Caption = ""; + + targetpc = Form1->PageControl1; + + if ((Form1->ActiveControl == Form1->PageControl2) || (IsChild(Form1->PageControl2->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl2; + if ((Form1->ActiveControl == Form1->PageControl3) || (IsChild(Form1->PageControl3->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl3; + + + target = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + Caption = Caption + "Searching [" + (*target).first.c_str() + "]..."; + ListBox1->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (CheckBox2->Checked) ? 0 : REG_ICASE; + Button1->Caption = "Halt"; + Button1->OnClick = TerminateSearch; + SWKey *scope = 0; + switch (scopeGroup->ItemIndex) { + case 2: + if (ComboBox1->ItemIndex < 0) + results = VerseKey().ParseVerseList(ComboBox1->Text.c_str(), "", true); + else { + TCustomRange *rs = (TCustomRange *)ComboBox1->Items->Objects[ComboBox1->ItemIndex]; + results = VerseKey().ParseVerseList(rs->text.c_str(), "", true); + } + case 1: scope = &results; break; + } + searchThread = new TSearchThread(this, SearchText->Text.c_str(), searchType, searchOptions, scope); + } + else Caption = "Error finding target module"; +} + + +void __fastcall TForm2::TerminateSearch(TObject *Sender) +{ + (*target).second->terminateSearch = true; +} + +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1DblClick(TObject *Sender) +{ + if (targetpc == Form1->PageControl3) { + Form1->DictKeyEdit->Text = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + } + else { + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1Click(TObject *Sender) +{ + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +__fastcall TForm2::TSearchThread::TSearchThread(TForm2 *parent, string searchText, int searchType, int searchOptions, SWKey *scope, bool CreateSuspended) + : TThread(CreateSuspended) +{ + this->parent = parent; + this->searchText = searchText; + this->searchType = searchType; + this->searchOptions = searchOptions; + this->scope = scope; + Priority = tpNormal; + FreeOnTerminate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::TSearchThread::FillListBox(void) +{ + for (results = TOP; !results.Error(); results++) { + parent->ListBox1->Items->Add((const char *)results); + } +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + parent->Caption = ""; + parent->Caption = parent->Caption + "Results from [" + (*(parent->target)).first.c_str() + "] (" + parent->ListBox1->Items->Count + ((parent->ListBox1->Items->Count == 1) ? " match)" : " matches)"); + parent->Button1->Caption = "Search"; + parent->Button1->OnClick = parent->Button1Click; +} + +void __fastcall TForm2::TSearchThread::Execute() +{ + results = (*(parent->target)).second->Search(searchText.c_str(), searchType, searchOptions, scope); + + Synchronize((TThreadMethod)&FillListBox); + parent->results = results; +} + + + + +void __fastcall TForm2::scopeGroupClick(TObject *Sender) { + bool enabled = (scopeGroup->ItemIndex == 2); + + Button2->Enabled = enabled; + ComboBox1->Enabled = enabled; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm2::Button2Click(TObject *Sender) +{ + RangeMaintForm->ShowModal(); + populateRanges(); +} +//--------------------------------------------------------------------------- + +void TForm2::populateRanges() { + ConfigEntMap::iterator loop, end; + SWConfig config("./options.conf"); + ComboBox1->Clear(); + loop = config.Sections["CustomRanges"].begin(); + end = config.Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ComboBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } +} + + +void __fastcall TForm2::FormShow(TObject *Sender) +{ + populateRanges(); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm b/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm Binary files differnew file mode 100644 index 0000000..de8802a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.h b/apps/windoze/CBuilder4/BibleCS/searchfrm.h new file mode 100644 index 0000000..1d47379 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/searchfrm.h @@ -0,0 +1,69 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include "mainfrm.h" +#include <swmgr.h> +//--------------------------------------------------------------------------- +class TForm2 : public TForm { + class TSearchThread; + friend class TSearchThread; +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *pnlResult; + TListBox *ListBox1; + TPanel *Panel3; + TPanel *plPreview; + TRadioGroup *searchTypeGroup; + TGroupBox *GroupBox1; + TCheckBox *CheckBox2; + TPanel *Panel4; + TButton *Button1; + TSplitter *Splitter1; + TPanel *pnlScope; + TComboBox *SearchText; + TComboBox *ComboBox1; + TButton *Button2; + TPanel *Panel2; + TRadioGroup *scopeGroup; + void __fastcall Button1Click(TObject *Sender); + void __fastcall TerminateSearch(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall scopeGroupClick(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + class TSearchThread : public TThread { + ListKey results; + string searchText; + int searchType; + int searchOptions; + SWKey *scope; + TForm2 *parent; + protected: + void __fastcall Execute(); + public: + __fastcall TSearchThread(TForm2 *parent, string searchText, int searchType, int searchOptions, SWKey *scope = 0, bool CreateSuspended = false); + void __fastcall FillListBox(void); + } *searchThread; + SWDispRTF *pvrtf; + ListKey results; + void populateRanges(); +public: // User declarations + ModMap::iterator target; + TPageControl *targetpc; +// AnsiString CapText; + + __fastcall TForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm2 *Form2; +//--------------------------------------------------------------------------- +#endif + diff --git a/apps/windoze/CBuilder4/BibleCS/sword.bpr b/apps/windoze/CBuilder4/BibleCS/sword.bpr new file mode 100644 index 0000000..f8049e7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.bpr @@ -0,0 +1,201 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = sword.exe +OBJFILES = sword.obj mainfrm.obj AboutBoxfrm.obj bookmarkfrm.obj newbmfilefrm.obj \ + optionfrm.obj searchfrm.obj biblecsmgr.obj ModInstForm.obj vrslstfrm.obj \ + editentryfrm.obj versesel.obj RangeMaintFrm.obj +RESFILES = sword.res +RESDEPEN = $(RESFILES) mainfrm.dfm AboutBoxfrm.dfm bookmarkfrm.dfm newbmfilefrm.dfm \ + optionfrm.dfm searchfrm.dfm ModInstForm.dfm vrslstfrm.dfm editentryfrm.dfm \ + versesel.dfm RangeMaintFrm.dfm +LIBFILES = swordlib.lib +LIBRARIES = vcljpg40.lib nmfast40.lib vcldb40.lib vclx40.lib vcl40.lib +SPARELIBS = vcl40.lib vclx40.lib vcldb40.lib nmfast40.lib vcljpg40.lib +DEFFILE = +PACKAGES = vclx40.bpi vcl40.bpi vcldb40.bpi vcldbx40.bpi ibsmp40.bpi bcbsmp40.bpi \ + dclocx40.bpi qrpt40.bpi teeui40.bpi vclsmp40.bpi teedb40.bpi tee40.bpi \ + dss40.bpi nmfast40.bpi vclmid40.bpi +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +SYSDEFINES = NO_STRICT +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -w -Ve -a8 -4 -k- -vi -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl \ + -Vx -tW -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -M -JPHNE +RFLAGS = -i"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects" \ + /i..\..\..\..\include /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn \ + /dUSEPACKAGES +LFLAGS = -L"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=4 +Release=7 +Build=0 +Debug=0 +PreRelease=1 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=Windows 32bit User Interface to The SWORD Project +FileVersion=1.4.7.0 +InternalName=biblecs +LegalCopyright=(c) 1999 CrossWire Bible Society under the terms of the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.7 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item2=c:\usr\troy\src\sword\include;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=4 +Item0=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;d:\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item2=d:\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item3=$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=2 +Item0=USEPACKAGES +Item1=_RTLDLL;USEPACKAGES + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) $(IFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/sword.cpp b/apps/windoze/CBuilder4/BibleCS/sword.cpp new file mode 100644 index 0000000..b4743d0 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.cpp @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("searchfrm.cpp", Form2); +USEUNIT("biblecsmgr.cpp"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("editentryfrm.cpp", EditEntry); +USEFORM("versesel.cpp", VerseSelFrm); +USELIB("swordlib.lib"); +USEFORM("RangeMaintFrm.cpp", RangeMaintForm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { + try { + Application->Initialize(); + Application->Title = "The SWORD Project"; + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TAboutBox), &AboutBox); + Application->CreateForm(__classid(TBookmarksfrm), &Bookmarksfrm); + Application->CreateForm(__classid(TNewBMfrm), &NewBMfrm); + Application->CreateForm(__classid(TOptionsfrm), &Optionsfrm); + Application->CreateForm(__classid(TForm2), &Form2); + Application->CreateForm(__classid(TModInstFrm), &ModInstFrm); + Application->CreateForm(__classid(TVerseListFrm), &VerseListFrm); + Application->CreateForm(__classid(TEditEntry), &EditEntry); + Application->CreateForm(__classid(TVerseSelFrm), &VerseSelFrm); + Application->CreateForm(__classid(TRangeMaintForm), &RangeMaintForm); + Application->Run(); + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/sword.ico b/apps/windoze/CBuilder4/BibleCS/sword.ico Binary files differnew file mode 100644 index 0000000..694fbb1 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.ico diff --git a/apps/windoze/CBuilder4/BibleCS/sword.res b/apps/windoze/CBuilder4/BibleCS/sword.res Binary files differnew file mode 100644 index 0000000..2aafbdf --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.res diff --git a/apps/windoze/CBuilder4/BibleCS/swordlib.bpr b/apps/windoze/CBuilder4/BibleCS/swordlib.bpr new file mode 100644 index 0000000..cd9d1d3 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordlib.bpr @@ -0,0 +1,208 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = swordlib.lib +OBJFILES = swordlib.obj ..\..\..\..\src\keys\versekey.obj ..\..\..\..\src\keys\swkey.obj \ + ..\..\..\..\src\keys\listkey.obj ..\..\..\..\src\keys\strkey.obj \ + ..\..\..\..\src\mgr\swmgr.obj ..\..\..\..\src\mgr\swconfig.obj \ + ..\..\..\..\src\modules\comments\rawcom\rawcom.obj \ + ..\..\..\..\src\modules\comments\swcom.obj \ + ..\..\..\..\src\modules\common\rawverse.obj \ + ..\..\..\..\src\modules\common\rawstr.obj \ + ..\..\..\..\src\modules\filters\rwprtf.obj \ + ..\..\..\..\src\modules\filters\gbfrtf.obj \ + ..\..\..\..\src\modules\filters\gbfplain.obj \ + ..\..\..\..\src\modules\lexdict\rawld\rawld.obj \ + ..\..\..\..\src\modules\lexdict\swld.obj \ + ..\..\..\..\src\modules\texts\rawgbf\rawgbf.obj \ + ..\..\..\..\src\modules\texts\rawtext\rawtext.obj \ + ..\..\..\..\src\modules\texts\swtext.obj ..\..\..\..\src\modules\swmodule.obj \ + ..\..\tbdisp.obj ..\..\swdisprtfchap.obj ..\..\swwinlog.obj ..\..\swdisprtf.obj \ + ..\..\..\..\src\modules\comments\hrefcom\hrefcom.obj \ + ..\..\..\..\src\mgr\filemgr.obj \ + ..\..\..\..\src\modules\comments\rawfiles\rawfiles.obj \ + ..\..\..\..\src\utilfuns\utilstr.obj ..\..\..\..\src\utilfuns\utilconf.obj \ + ..\..\..\..\src\utilfuns\Greek2Greek.obj ..\..\..\..\src\utilfuns\regex.obj \ + ..\..\..\..\src\frontend\swlog.obj ..\..\..\..\src\frontend\swdisp.obj \ + ..\..\..\..\src\modules\filters\gbfstrongs.obj \ + ..\..\..\..\src\modules\filters\gbffootnotes.obj \ + ..\..\..\..\src\modules\filters\cipherfil.obj \ + ..\..\..\..\src\modules\common\sapphire.obj \ + ..\..\..\..\src\modules\common\swcipher.obj +LIBFILES = +RESDEPEN = $(RESFILES) +RESFILES = +LIBRARIES = nmfast40.lib vclx40.lib vcl40.lib +SPARELIBS = vcl40.lib vclx40.lib nmfast40.lib +DEFFILE = +PACKAGES = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts;..\..\..\..\src\modules;..\..;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\utilfuns;..\..\..\..\src\frontend +PATHASM = .; +PATHPAS = .; +PATHRC = .; +SYSDEFINES = NO_STRICT;_NO_VCL +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -4 -k- -vi \ + -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl -Vx -g0 -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U..\..\..\..\src\modules\common;$(DEBUGLIBPATH) \ + -I..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -M -JPHNE +AFLAGS = /i..\.. /i..\..\..\..\src\frontend /i..\..\.. /i..\..\..\..\utilfuns \ + /i..\..\..\framework /i..\..\..\..\src\modules\comments\rawfiles \ + /i..\..\..\..\src\modules\comments\hrefcom /i..\..\..\..\include \ + /i..\..\..\..\frontend /i..\..\..\..\src\utilfuns /i..\..\..\..\src\modules \ + /i..\..\..\..\src\modules\texts /i..\..\..\..\src\modules\texts\rawtext \ + /i..\..\..\..\src\modules\texts\rawgbf /i..\..\..\..\src\modules\lexdict \ + /i..\..\..\..\src\modules\lexdict\rawld /i..\..\..\..\src\modules\filters \ + /i..\..\..\..\src\modules\common /i..\..\..\..\src\modules\comments \ + /i..\..\..\..\src\modules\comments\rawcom /i..\..\..\..\src\mgr \ + /i..\..\..\..\src\keys /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn \ + /d_NO_VCL +RFLAGS = -i..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = /P64 +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +ALLLIB = +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=10 +Item0=..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item3=..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item5=..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item7=..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item8=c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl +Item9=c:\usr\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_NO_VCL + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project makefile is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/swordlib.cpp b/apps/windoze/CBuilder4/BibleCS/swordlib.cpp new file mode 100644 index 0000000..8aad358 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordlib.cpp @@ -0,0 +1,45 @@ +//--------------------------------------------------------------------------- +#include <condefs.h> +#pragma hdrstop +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawgbf\rawgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\regex.c"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfstrongs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbffootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\cipherfil.cpp"); +USEUNIT("..\..\..\..\src\modules\common\sapphire.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcipher.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder4/BibleCS/swordprj.bpg b/apps/windoze/CBuilder4/BibleCS/swordprj.bpg new file mode 100644 index 0000000..44add94 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordprj.bpg @@ -0,0 +1,24 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib sword +#------------------------------------------------------------------------------ +default: sword +#------------------------------------------------------------------------------ + + +swordlib: swordlib.bpr + $(MAKE) + +sword: sword.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.cpp b/apps/windoze/CBuilder4/BibleCS/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "versesel.h" +#include <versekey.h> +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.dfm b/apps/windoze/CBuilder4/BibleCS/versesel.dfm Binary files differnew file mode 100644 index 0000000..ddc4857 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/versesel.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.h b/apps/windoze/CBuilder4/BibleCS/versesel.h new file mode 100644 index 0000000..b4c1981 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *Button1; + TButton *Button2; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp new file mode 100644 index 0000000..0528c7f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) { + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) { + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->PageControl1->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm Binary files differnew file mode 100644 index 0000000..0e923ed --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/wtbsa.conf b/apps/windoze/CBuilder4/BibleCS/wtbsa.conf new file mode 100644 index 0000000..ff69dc7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/wtbsa.conf @@ -0,0 +1,20 @@ +[ROOT] +WTBSA=What the Bible Says About... + +[WTBSA] +Mormons=Mormonism +Calvan=Calvanism + +[Mormons] +Verse=I Peter 2:8 + +[Calvan] +Verse=James 1:19 +TotalDep=Total Depravity of Man +UncondEl=Unconditional Election +LimAt=Limited Atonement +IrrGrace=Irresistable Grace +PersSt=Perseverence of the Saints + +[TotalDep] +Verse=Romans 1:1 diff --git a/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp new file mode 100644 index 0000000..eb74177 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "FTPDownload.h" +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Important: Methods and properties of objects in VCL can only be +// used in a method called using Synchronize, for example: +// +// Synchronize(UpdateCaption); +// +// where UpdateCaption could look like: +// +// void __fastcall FTPDownload::UpdateCaption() +// { +// Form1->Caption = "Updated in a thread"; +// } +//--------------------------------------------------------------------------- +__fastcall FTPDownload::FTPDownload(bool CreateSuspended) + : TThread(CreateSuspended) +{ +} +//--------------------------------------------------------------------------- +void __fastcall FTPDownload::Execute() +{ + //---- Place thread code here ---- +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h new file mode 100644 index 0000000..4ad9e01 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- +#ifndef FTPDownloadH +#define FTPDownloadH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +//--------------------------------------------------------------------------- +class FTPDownload : public TThread +{ +private: +protected: + void __fastcall Execute(); +public: + __fastcall FTPDownload(bool CreateSuspended); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp new file mode 100644 index 0000000..a75b7b2 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "InfoFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +__fastcall TInfoForm::TInfoForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::FormShow(TObject *Sender) +{ + AnsiString abouttext = ""; + TMemoryStream *RTFStream = new TMemoryStream(); + + abouttext = abouttext + "{\\fs20\\cf0 " + info.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + InfoText->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::SpeedButton1Click(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm Binary files differnew file mode 100644 index 0000000..065b0c2 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h new file mode 100644 index 0000000..9bbeef6 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------- +#ifndef InfoFrmH +#define InfoFrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <Buttons.hpp> +#include <ComCtrls.hpp> +#include <ExtCtrls.hpp> +#include <string> + +//--------------------------------------------------------------------------- +class TInfoForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TRichEdit *InfoText; + TSpeedButton *SpeedButton1; + void __fastcall FormShow(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); +private: // User declarations +public: // User declarations + std::string info; + __fastcall TInfoForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg new file mode 100644 index 0000000..bad1593 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib InstallMgr.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +InstallMgr.exe: InstallMgr.bpr + $(MAKE) + +swordlib.lib: ..\BibleCS\swordlib.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr new file mode 100644 index 0000000..93e3047 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr @@ -0,0 +1,202 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = InstallMgr.exe +OBJFILES = InstallMgr.obj MainFrm.obj StatusFrm.obj RemoteMntFrm.obj InfoFrm.obj \ + cipherfrm.obj UninstallFrm.obj +RESFILES = InstallMgr.res +RESDEPEN = $(RESFILES) MainFrm.dfm StatusFrm.dfm RemoteMntFrm.dfm InfoFrm.dfm \ + cipherfrm.dfm UninstallFrm.dfm +LIBFILES = ..\BibleCS\swordlib.lib +LIBRARIES = nmfast40.lib Vclx40.lib Vcl40.lib +SPARELIBS = Vcl40.lib Vclx40.lib nmfast40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi -c -b- -w-par -w-inl -Vx -tW \ + -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +AFLAGS = /i..\BibleCS /i..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr \ + /i$(BCB)\include /i$(BCB)\include\vcl /i..\..\..\..\include /mx /w2 /zn +LFLAGS = -L..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=5 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Bible Society +FileDescription=SWORD Installation Manager +FileVersion=1.4.5.0 +InternalName=InstallMgr +LegalCopyright=GNU GPL 1999 +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.5 +Comments=Seek Jesus who exchanges temporary for eternal + +[HistoryLists\hlIncludePath] +Count=2 +Item0=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include + +[HistoryLists\hlLibraryPath] +Count=2 +Item0=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlRunParameters] +Count=1 +Item0=-uninstall + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf new file mode 100644 index 0000000..f217e61 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf @@ -0,0 +1,5 @@ + +[Sources] +FTPSource=CrossWire Bible Society|ftp.crosswire.org|/pub/sword/raw/ +LocalPath=C:\sword + diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp new file mode 100644 index 0000000..1d6907e --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USERES("InstallMgr.res"); +USEFORM("MainFrm.cpp", MainForm); +USELIB("..\BibleCS\swordlib.lib"); +USEFORM("StatusFrm.cpp", StatusForm); +USEFORM("RemoteMntFrm.cpp", RemoteMntForm); +USEFORM("InfoFrm.cpp", InfoForm); +USEFORM("cipherfrm.cpp", CipherForm); +USEFORM("UninstallFrm.cpp", UninstallForm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "Install Manager"; + Application->CreateForm(__classid(TMainForm), &MainForm); + Application->CreateForm(__classid(TStatusForm), &StatusForm); + Application->CreateForm(__classid(TRemoteMntForm), &RemoteMntForm); + Application->CreateForm(__classid(TInfoForm), &InfoForm); + Application->CreateForm(__classid(TCipherForm), &CipherForm); + Application->CreateForm(__classid(TUninstallForm), &UninstallForm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res Binary files differnew file mode 100644 index 0000000..f65507c --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp new file mode 100644 index 0000000..55eb8fb --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp @@ -0,0 +1,1021 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "MainFrm.h" +#include "StatusFrm.h" +#include "RemoteMntFrm.h" +#include "InfoFrm.h" +#include "cipherfrm.h" +#include "UninstallFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +#include <swwinlog.h> +#include <shellapi.h> +#include <dirent.h> +#include <fcntl.h> +#include <io.h> +#include <sys/stat.h> +#include <dir.h> + +TMainForm *MainForm; + + +VersionInfo::VersionInfo(const char *version) { + char *buf = new char[ strlen(version) + 1 ]; + char *tok; + major = minor = minor2 = minor3 = 0; + + strcpy(buf, version); + tok = strtok(buf, "."); + if (tok) + major = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor2 = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor3 = atoi(tok); + delete [] buf; +} + + +int VersionInfo::compare(const VersionInfo &vi) const { + if (major == vi.major) + if (minor == vi.minor) + if (minor2 == vi.minor2) + if (minor3 == vi.minor3) + return 0; + else return minor3 - vi.minor3; + else return minor2 - vi.minor2; + else return minor - vi.minor; + else return major - vi.major; +} + + +__fastcall InstallSourceTab::InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type) : TControl(Owner) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + Caption = strtok(buf, "|"); + Source = strtok(0, "|"); + Directory = strtok(0, "|"); + delete [] buf; + Type = type; + mgr = 0; +} + +__fastcall InstallSourceTab::~InstallSourceTab() { + if (mgr) + delete mgr; +} + +__fastcall TMainForm::TMainForm(TComponent* Owner) + : TForm(Owner) +{ + manager = new SWMgr(); + installConf = new SWConfig("./InstallMgr.conf"); + localMgr = 0; +} + + +__fastcall TMainForm::~TMainForm() +{ + delete manager; + delete installConf; + if (localMgr) + delete localMgr; +} + + +void __fastcall TMainForm::FormCreate(TObject *Sender) { + + refreshPageControl(); + + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + + fillInstallTree(); + fillSourceTree(getLocalDir(), localTree); +} + + +void TMainForm::refreshPageControl() +{ + SectionMap::iterator sources; + ConfigEntMap::iterator sourceBegin; + ConfigEntMap::iterator sourceEnd; + + while (PageControl1->PageCount > 1) { + delete PageControl1->Pages[1]; + } + + sources = installConf->Sections.find("Sources"); + + if (sources != installConf->Sections.end()) { + sourceBegin = sources->second.lower_bound("FTPSource"); + sourceEnd = sources->second.upper_bound("FTPSource"); + + if (sourceBegin != sourceEnd) { + while (sourceBegin != sourceEnd) { + addSource(new InstallSourceTab(this, sourceBegin->second.c_str(), "FTP")); + sourceBegin++; + } + } + } +} + + +void TMainForm::addSource(InstallSourceTab *ist) +{ + TTabSheet *newtab = new TTabSheet(this); + TTreeView *newtree = new TTreeView(this); + TSpeedButton *newbutton = new TSpeedButton(this); + TPanel *newpanel = new TPanel(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = ist->Caption.c_str(); + newtab->Hint = ist->Source.c_str(); + newtab->ShowHint = true; + newtab->PageControl = PageControl1; + ist->Parent = newtab; + ist->tree = newtree; + newpanel->Parent = newtab; + newpanel->Align = alTop; + newpanel->BevelOuter = bvNone; + newpanel->BevelInner = bvNone; + newpanel->Height = 25; + newbutton->Parent = newpanel; + newbutton->Caption = "Refresh from Remote Source"; + newbutton->Width = 175; + newbutton->OnClick = RefreshRemoteSource; + newbutton->Flat = true; + newbutton->Glyph = SpeedButton2->Glyph; + newtree->Parent = newtab; + newtree->Align = alClient; + newtree->ReadOnly = true; + newtree->OnDblClick = localTreeDblClick; + newtree->Images = ImageList1; + newtree->StateImages = ImageList2; + string parent = "./sources/" + ist->Source + "/file"; + createParent(parent.c_str()); + parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), newtree); +} + + +const char *TMainForm::getLocalDir() +{ + ConfigEntMap::iterator entry; + + entry = installConf->Sections["Sources"].find("LocalPath"); + if (entry == installConf->Sections["Sources"].end()) { + installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", "d:/sword")); + entry = installConf->Sections["Sources"].find("LocalPath"); + } + return entry->second.c_str(); + +} + + +void TMainForm::setLocalDir(const char *idir) +{ + installConf->Sections["Sources"].erase("LocalPath"); installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", idir)); +} + + +//--------------------------------------------------------------------------- +void __fastcall TMainForm::LocalPath1Click(TObject *Sender) +{ + localPathDlg->Title = "Select a file in the directory to choose"; + localPathDlg->InitialDir = getLocalDir(); + if (localPathDlg->Execute()) { + char *buf = new char [ strlen(localPathDlg->FileName.c_str()) + 1 ]; + + strcpy(buf, localPathDlg->FileName.c_str()); + int end = strlen(buf) - 1; + while (end) { + if ((buf[end] == '/') || (buf[end] == '\\')) + break; + end--; + } + buf[end+1] = 0; + setLocalDir(buf); + delete [] buf; + } + + installConf->Save(); + fillSourceTree(getLocalDir(), localTree); +} +//--------------------------------------------------------------------------- + +void TMainForm::fillInstallTree() +{ + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + + installTree->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), mods->second->Type())) { + break; + } + } + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = installTree->Items->AddChildFirst(0, mods->second->Type()); + else node = installTree->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = installTree->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + } +} + + +void TMainForm::fillSourceTree(const char *sourceConf, TTreeView *tree) +{ + ModMap::iterator mods; + TTreeNode *node; + SectionMap::iterator sections, targetSection; + ConfigEntMap::iterator entry; + string secName; + const char * modDesc; + string nodeName; + string targetVersion; + string sourceVersion; + bool cipher; + + SWMgr *mgr; + + if (tree == localTree) { + if (localMgr) + delete localMgr; + mgr = localMgr = new SWMgr(sourceConf); + } + else { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + if (ist->mgr) + delete ist->mgr; + mgr = ist->mgr = new SWMgr(sourceConf); + } + + tree->Items->Clear(); + + if (!mgr->configPath) + return; + + for (sections = mgr->config->Sections.begin(); sections != mgr->config->Sections.end(); sections++) { + + cipher = false; + + if (!strcmp(sections->first.c_str(), "Globals")) // skip [Globals] + continue; + + mods = mgr->Modules.find(sections->first.c_str()); + if (mods != mgr->Modules.end()) + secName = mods->second->Type(); + else { + secName = "Other"; + } + entry = sections->second.find("Description"); + if (entry != sections->second.end()) + modDesc = entry->second.c_str(); + else modDesc = ""; + + + targetVersion = "0.0"; + sourceVersion = "1.0"; + + entry = sections->second.find("CipherKey"); + if (entry != sections->second.end()) + cipher = true; + + entry = sections->second.find("Version"); + if (entry != sections->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(sections->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + + if (VersionInfo(sourceVersion.c_str()) > VersionInfo(targetVersion.c_str())) { + + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), secName.c_str())) { + break; + } + } + + if (!node) { // Add Section + if (!strncmp(secName.c_str(), "Bibl", 4)) // If Bibles, put first in list + node = tree->Items->AddChildFirst(0, secName.c_str()); + else node = tree->Items->AddChild(0, secName.c_str()); + node->ImageIndex = 0; + } + nodeName = "[" + sections->first + "] " + modDesc; + node = tree->Items->AddChildObject(node, nodeName.c_str(), (void *) sections->first.c_str()); + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + node->ImageIndex = 1; + node->SelectedIndex = 1; + } + else { + node->ImageIndex = 2; + node->SelectedIndex = 2; + } + if (cipher) { + node->ImageIndex += 2; + node->SelectedIndex += 2; + } + node->StateIndex = 0; + } + } +} + + +void __fastcall TMainForm::Button5Click(TObject *Sender) +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (node->StateIndex == 1) + node->StateIndex = 0; //node->StateIndex; + else node->StateIndex = 1; + tree->Repaint(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::localTreeDblClick(TObject *Sender) +{ + Button5Click(Sender); +} +//--------------------------------------------------------------------------- + +int TMainForm::selectAll(TTreeView *tree, bool sel) +{ + TTreeNode *node; + TTreeNode *node2; + int retCount = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + for (node2 = node->getFirstChild(); node2; node2 = node2->getNextSibling()) { + if (node2->StateIndex == 1) { + if (!sel) { + node2->StateIndex = 0; //node2->StateIndex; + retCount++; + } + } + else { + if (sel) { + node2->StateIndex = 1; + retCount++; + } + } + } + } + return retCount; +} + + +void __fastcall TMainForm::Button6Click(TObject *Sender) // SELECT ALL +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + if (!selectAll(tree, true)) + selectAll(tree, false); + tree->Repaint(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Image1Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); + +} +//--------------------------------------------------------------------------- + + +int TMainForm::removeModule(const char *modName) +{ + SectionMap::iterator module; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd, entry; + + module = manager->config->Sections.find(modName); + + if (module != manager->config->Sections.end()) { + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + CipherForm->cipherEdit->Text = entry->second.c_str(); + + fileBegin = module->second.lower_bound("File"); + fileEnd = module->second.upper_bound("File"); + + if (fileBegin != fileEnd) { // remove each file + while (fileBegin != fileEnd) { + //remove file + remove(fileBegin->second.c_str()); + fileBegin++; + } + } + else { //remove all files in DataPath directory + + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (dir = opendir(modDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + if (dir = opendir(manager->configPath)) { // find and remove .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = manager->configPath; + modFile += "/"; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + remove(modFile.c_str()); + } + else delete config; + } + } + closedir(dir); + } + } + } + return 0; + } + return 1; +} + + +int TMainForm::createParent(const char *pName) +{ + char *buf = new char [ strlen(pName) + 1 ]; + int retCode; + + strcpy(buf, pName); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + if (!strlen(buf)) + return -1; + + if ((retCode = mkdir(buf))) { + createParent(buf); + retCode = mkdir(buf); + } + delete [] buf; + return retCode; +} + + +int TMainForm::createPathAndFile(const char *fName) +{ + int fd; + + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + if (fd < 1) { + createParent(fName); + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + } + return fd; +} + + +int TMainForm::copyFileToCWD(const char *sourceDir, const char *fName) +{ + string sourcePath = sourceDir; + sourcePath += fName; + + return copyFile(sourcePath.c_str(), fName); +} + + +int TMainForm::copyFile(const char *sourceFile, const char *targetFile) +{ + int sfd, dfd, len; + char buf[4096]; + + if ((sfd = open(sourceFile, O_RDONLY|O_BINARY)) < 1) + return -1; + if ((dfd = createPathAndFile(targetFile)) < 1) + return -1; + + do { + len = read(sfd, buf, 4096); + write(dfd, buf, len); + } + while(len == 4096); + close(dfd); + close(sfd); + + return 0; +} + + +int TMainForm::installModule(const char *modName, InstallSourceTab *ist) +{ + SectionMap::iterator module, section; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd; + ConfigEntMap::iterator entry; + string sourceDir; + string buffer; + bool aborted = false; + bool cipher = false; + + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + + SWMgr mgr(sourceDir.c_str()); + + module = mgr.config->Sections.find(modName); + + if (module != mgr.config->Sections.end()) { + + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + cipher = true; + + fileEnd = module->second.upper_bound("File"); + fileBegin = module->second.lower_bound("File"); + + if (fileBegin != fileEnd) { // copy each file + if (ist) { + while (fileBegin != fileEnd) { // ftp each file first + buffer = sourceDir + "/" + fileBegin->second; + if (FTPCopy(ist, fileBegin->second.c_str(), buffer.c_str())) { + aborted = true; + break; // user aborted + } + fileBegin++; + } + fileBegin = module->second.lower_bound("File"); + } + + if (!aborted) { + // DO THE INSTALL + while (fileBegin != fileEnd) { + copyFileToCWD(sourceDir.c_str(), fileBegin->second.c_str()); + fileBegin++; + } + } + //--------------- + + if (ist) { + fileBegin = module->second.lower_bound("File"); + while (fileBegin != fileEnd) { // delete each tmp ftp file + buffer = sourceDir + "/" + fileBegin->second; + remove(buffer.c_str()); + fileBegin++; + } + } + } + else { //copy all files in DataPath directory + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string sourceOrig = sourceDir; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (ist) { + buffer = sourceDir + "/" + modDir; + if (FTPCopy(ist, modDir.c_str(), buffer.c_str(), true)) { + aborted = true; // user aborted + } + } + sourceDir += "/"; + sourceDir += modDir; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + copyFileToCWD(sourceOrig.c_str(), modFile.c_str()); + } + } + closedir(dir); + } + } + if (ist) { // delete tmp ftp files + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceOrig + "/" + modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + } + sourceDir = sourceOrig; + sourceDir += "/mods.d/"; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { // find and copy .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceDir; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + string targetFile = "./mods.d/"; + targetFile += ent->d_name; + copyFile(modFile.c_str(), targetFile.c_str()); + if (cipher) { + CipherForm->modName = modName; + CipherForm->confFile = targetFile; + CipherForm->ShowModal(); + } + } + else delete config; + } + } + closedir(dir); + } + } + } + } + return (aborted) ? -1 : 0; + } + return 1; +} + + +void TMainForm::fillAllSourceTrees() +{ + fillSourceTree(getLocalDir(), localTree); + for (int i = 1; i < PageControl1->PageCount; i++) { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->Pages[i]->Controls[0]; + string parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), ist->tree); + } +} + + +void __fastcall TMainForm::Button4Click(TObject *Sender) // REMOVE MODULE +{ + TTreeNode *node = installTree->Selected; + if (node) { + if (node->Parent) { + removeModule((const char *)node->Data); + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button2Click(TObject *Sender) // INSTALL +{ + TTreeNode *node; + int count = 0; + int abort = 0; + + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) + count++; + } // do true progress bar + + if (!count) return; // if nothing is selected, do nothing + + progressBar->Max = count; + progressBar->Position = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) { // if selected for install + CipherForm->cipherEdit->Text = ""; + if ((node->ImageIndex == 2) || (node->ImageIndex == 4)) { // if this is an upgrade + removeModule((const char *)node->Data); + } + // install module + statusBar->Caption = "Installing: " + node->Text + "..."; + statusBar->Repaint(); + if (tree == localTree) + abort = installModule((const char *)node->Data); + else abort = installModule((const char *)node->Data, (InstallSourceTab *) PageControl1->ActivePage->Controls[0]); + if (abort) + break; + progressBar->Position++; + } + } + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + statusBar->Caption = ""; + progressBar->Position = 0; +} + + +int TMainForm::FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer) +{ + StatusForm->ist = ist; + StatusForm->src = src; + StatusForm->dest = dest; + StatusForm->dirTransfer = dirTransfer; + + Application->ProcessMessages(); + if (StatusForm->ShowModal() == mrCancel) + return -1; + else return 0; +} + + +void __fastcall TMainForm::RefreshRemoteSource(TObject *Sender) +{ + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string target = "./sources/"; + target += ist->Source.c_str(); + target += "/mods.d"; + + if (dir = opendir(target.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = target; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + + + FTPCopy(ist, "mods.d", target.c_str(), true); + + target = "./sources/"; + target += ist->Source.c_str(); + + fillSourceTree(target.c_str(), ist->tree); +} + + + +void __fastcall TMainForm::SpeedButton1Click(TObject *Sender) +{ + InfoForm->Caption = "W A R N I N G"; + InfoForm->info = "\\qc {\\b \\fs20 -=+* WARNING *+=- -=+* WARNING *+=-}\\par\\par\\pard "; + InfoForm->info += "Although Install Manager provides a convenient way for installing and upgrading SWORD components, it also uses a systematic method for accessing sites which gives packet sniffers a target to lock into for singling out users. \\par\\par "; + InfoForm->info += "\\b\\qc IF YOU LIVE IN A PERSECUTED COUNTRY AND DO NOT WISH TO RISK DETECTION, YOU SHOULD *NOT* USE INSTALL MANAGER'S REMOTE SOURCE FEATURES."; + InfoForm->ShowModal(); + if (RemoteMntForm->ShowModal() == mrOk) { + delete installConf; + installConf = new SWConfig("./InstallMgr.conf"); + + refreshPageControl(); + } +} + +void __fastcall TMainForm::SpeedButton5Click(TObject *Sender) +{ + TTreeView *tree; + InstallSourceTab *ist = 0; + SectionMap::iterator module; + ConfigEntMap::iterator entry, entryEnd; + string sourceDir; + + if (PageControl1->ActivePage != PageControl1->Pages[0]) { + ist = (InstallSourceTab *) PageControl1->ActivePage->Controls[0]; + tree = ist->tree; + } + else tree = localTree; + + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + SWMgr *mgr = new SWMgr(sourceDir.c_str()); + + module = mgr->config->Sections.find((const char *)node->Data); + + if (module != mgr->config->Sections.end()) { + string targetVersion = "0.0"; + string sourceVersion = "1.0"; + SectionMap::iterator targetSection; + + entry = module->second.find("Version"); + if (entry != module->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(module->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + InfoForm->info = "\\pard{\\b * Additional Module Available for Install. } \\par "; + } + else { + InfoForm->info = "\\pard{\\b + Upgraded Module Available for Install.}\\par\\tab Current Version: \\tab " + targetVersion + " \\par\\tab Upgrade Version:\\tab " + sourceVersion + " \\par "; + bool changes = false; + for (entry = module->second.begin(); entry != module->second.end(); entry++) { + if (!strncmp(entry->first.c_str(), "History_", 8)) { + if (VersionInfo(&entry->first.c_str()[8]) > VersionInfo(targetVersion.c_str())) { + if (!changes) { + changes = true; + InfoForm->info += "\\par{\\b Changes: }\\par "; + } + InfoForm->info += "\\tab "; + InfoForm->info += entry->second.c_str(); + InfoForm->info += "\\par "; + } + } + } + } + + entry = module->second.find("About"); + if (entry != module->second.end()) { + InfoForm->info += "\\par{\\b About: } \\par\\par "; + InfoForm->info += entry->second.c_str(); + } + InfoForm->Caption = "Module Information"; + InfoForm->ShowModal(); + } + delete mgr; + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Exit1Click(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + + +void TMainForm::deleteAllModules() { + + SWMgr *mgr = new SWMgr(); + + + int count = mgr->Modules.size(); + + if (!count) + return; + + UninstallForm->Show(); + UninstallForm->ProgressBar1->Max = count; + UninstallForm->ProgressBar1->Position = 0; + + ModMap::iterator it; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + string label = "Uninstalling: ["; + label += it->second->Name(); + label += "] "; + label += it->second->Description(); + UninstallForm->Label1->Caption = label.c_str(); + UninstallForm->Label1->Repaint(); + removeModule(it->second->Name()); + UninstallForm->ProgressBar1->Position = UninstallForm->ProgressBar1->Position + 1; + UninstallForm->ProgressBar1->Repaint(); + } + delete mgr; + UninstallForm->Hide(); + return; +} +void __fastcall TMainForm::FormShow(TObject *Sender) +{ + for (int i=0;i<=ParamCount();i++) { + if (LowerCase(ParamStr(i)) == "-uninstall") { + deleteAllModules(); + Application->Terminate(); + } + } + +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm Binary files differnew file mode 100644 index 0000000..9dd6502 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.h b/apps/windoze/CBuilder4/InstallMgr/MainFrm.h new file mode 100644 index 0000000..a6f7cd8 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/MainFrm.h @@ -0,0 +1,139 @@ +//--------------------------------------------------------------------------- +#ifndef MainFrmH +#define MainFrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <Dialogs.hpp> +#include <Menus.hpp> +#include <ExtCtrls.hpp> +#include <MPlayer.hpp> +#include <Graphics.hpp> +#include <ComCtrls.hpp> +#include <swmgr.h> +#include <ImgList.hpp> +#include <Buttons.hpp> +#include <NMFtp.hpp> +#include <NMHttp.hpp> +#include <Psock.hpp> + + +class VersionInfo { + public: + int major, minor, minor2, minor3; + + VersionInfo(const char *version); + int compare(const VersionInfo &vi) const; + bool operator>(const VersionInfo &vi) const {return (compare(vi) > 0);} + bool operator<(const VersionInfo &vi) const {return (compare(vi) < 0);} + bool operator==(const VersionInfo &vi) const {return (compare(vi) == 0);} +}; + + +class InstallSourceTab : public TControl { +public: + __fastcall InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type); + __fastcall ~InstallSourceTab(); + string Type; + string Source; + string Directory; + string Caption; + TTreeView *tree; + SWMgr *mgr; +}; + + +//--------------------------------------------------------------------------- +class TMainForm : public TForm +{ + class TWebThread; + friend class TWebThread; +__published: // IDE-managed Components + TMainMenu *MainMenu1; + TMenuItem *File1; + TMenuItem *Exit1; + TMenuItem *Option1; + TMenuItem *LocalPath1; + TOpenDialog *localPathDlg; + TPanel *Panel1; + TMediaPlayer *MediaPlayer1; + TImage *Image1; + TPanel *pnlAvailable; + TPanel *pnlInstalled; + TSplitter *Splitter1; + TPanel *Panel2; + TPanel *Panel5; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TTreeView *localTree; + TPanel *Panel8; + TPanel *Panel7; + TPanel *Panel6; + TTreeView *installTree; + TTimer *Timer1; + TLabel *Label1; + TImageList *ImageList1; + TPanel *Panel3; + TImageList *ImageList2; + TPanel *statusBar; + TPanel *Panel4; + TProgressBar *progressBar; + TSpeedButton *SpeedButton2; + TImage *Image2; + TLabel *Label2; + TMenuItem *ManageRemoteSources1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + TSpeedButton *SpeedButton6; + TSpeedButton *SpeedButton7; + void __fastcall LocalPath1Click(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall Button5Click(TObject *Sender); + void __fastcall localTreeDblClick(TObject *Sender); + void __fastcall Button6Click(TObject *Sender); + void __fastcall Image1Click(TObject *Sender); + void __fastcall Button4Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall Exit1Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + +private: // User declarations + + SWMgr *manager; + SWConfig *installConf; + const char *getLocalDir(); + void setLocalDir(const char *idir); + void refreshPageControl(); + void addSource(InstallSourceTab *ist); + void fillAllSourceTrees(); + void deleteAllModules(); + +public: // User declarations + __fastcall TMainForm(TComponent* Owner); + __fastcall ~TMainForm(); + void __fastcall RefreshRemoteSource(TObject *Sender); + int selectAll(TTreeView *tree, bool sel); + int removeModule(const char *modName); + int installModule(const char *modName, InstallSourceTab *ist = 0); + static int createParent(const char *pName); + int createPathAndFile(const char *fName); + int copyFile(const char *sourceFile, const char *targetFile); + int copyFileToCWD(const char *sourceDir, const char *fName); + int FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer = false); + SWMgr *localMgr; + +protected: + virtual void fillInstallTree(); + virtual void fillSourceTree(const char *sourceConf, TTreeView *tree); +}; + +//--------------------------------------------------------------------------- +extern PACKAGE TMainForm *MainForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp new file mode 100644 index 0000000..a6b04b3 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp @@ -0,0 +1,145 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "RemoteMntFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +TRemoteMntForm *RemoteMntForm; + + +class TRemoteSource : public TObject { +public: + string name; + string machine; + string dir; + TRemoteSource(const char *confEnt) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + name = strtok(buf, "|"); + machine = strtok(0, "|"); + dir = strtok(0, "|"); + delete [] buf; + } + string getConfEnt() { + return name +"|" + machine + "|" + dir; + } +}; + + +//--------------------------------------------------------------------------- +__fastcall TRemoteMntForm::TRemoteMntForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./InstallMgr.conf"); + ListBox1->Clear(); + loop = config->Sections["Sources"].lower_bound("FTPSource"); + end = config->Sections["Sources"].upper_bound("FTPSource"); + while (loop != end) { + TRemoteSource *rs = new TRemoteSource(loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} + + +void __fastcall TRemoteMntForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} + + +void __fastcall TRemoteMntForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + MachineEdit->Text = rs->machine.c_str(); + DirEdit->Text = rs->dir.c_str(); + } + else { + NameEdit->Text = ""; + MachineEdit->Text = ""; + DirEdit->Text = ""; + } +} + + +void __fastcall TRemoteMntForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} + + +void __fastcall TRemoteMntForm::MachineEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->machine = MachineEdit->Text.c_str(); +} + + +void __fastcall TRemoteMntForm::DirEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->dir = DirEdit->Text.c_str(); +} + +void __fastcall TRemoteMntForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender) +{ + TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/"); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton3Click(TObject *Sender) +{ + TRemoteSource *rs; + config->Sections["Sources"].erase("FTPSource"); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TRemoteSource *)ListBox1->Items->Objects[i]; + config->Sections["Sources"].insert(ConfigEntMap::value_type("FTPSource", rs->getConfEnt().c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm Binary files differnew file mode 100644 index 0000000..965036c --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h new file mode 100644 index 0000000..81060e1 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h @@ -0,0 +1,49 @@ +//--------------------------------------------------------------------------- +#ifndef RemoteMntFrmH +#define RemoteMntFrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <Buttons.hpp> +#include <ExtCtrls.hpp> +#include <swconfig.h> +//--------------------------------------------------------------------------- +class TRemoteMntForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TListBox *ListBox1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TEdit *NameEdit; + TEdit *MachineEdit; + TEdit *DirEdit; + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall MachineEditChange(TObject *Sender); + void __fastcall DirEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRemoteMntForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TRemoteMntForm *RemoteMntForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp new file mode 100644 index 0000000..36911d2 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp @@ -0,0 +1,175 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "StatusFrm.h" +#include "MainFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TStatusForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TStatusForm::FormShow(TObject *Sender) +{ + abort = false; + ftpThread = new TFTPThread(ist, src.c_str(), dest.c_str(), dirTransfer, true); + ftpThread->OnTerminate = Cleanup; + ftpThread->Resume(); +} +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TFTPThread::TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer, bool CreateSuspended) + : TThread(CreateSuspended) +{ + ist = iist; + src = isrc; + dest = idest; + dirTransfer = idirTransfer; + Priority = tpNormal; + FreeOnTerminate = true; + Synchronize((TThreadMethod)&CreateFTPObject); +} + +__fastcall TStatusForm::TFTPThread::~TFTPThread() +{ + delete FTPLink; +} + + +void __fastcall TStatusForm::TFTPThread::Execute() +{ + Synchronize((TThreadMethod)&PreConnect); + FTPLink->OnPacketRecvd = FTPLinkPacketRecvd; + FTPLink->ParseList = true; + FTPLink->Host = ist->Source.c_str(); + FTPLink->Port = 21; + FTPLink->UserID = "ftp"; + FTPLink->Password = "installmgr@user.com"; + + try { + FTPLink->Connect(); + FTPLink->Mode(MODE_IMAGE); + FTPLink->ChangeDir(ist->Directory.c_str()); + } + catch(...) { + StatusForm->Button1Click(0); // abort thread + } + + if (!Terminated) { + if (dirTransfer) { + FTPLink->ChangeDir(src.c_str()); + fileList.clear(); + FTPLink->List(); + int fileCount = FTPLink->FTPDirectoryList->name->Count; + for (int i = 0; i < fileCount; i++) { + if (FTPLink->FTPDirectoryList->Attribute->Strings[i].c_str()[0] != 'd') { + buffer = dest + "/" + FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + buffer2 = "Downloading ("; + buffer2 += IntToStr(i+1).c_str(); + buffer2 += " of "; + buffer2 += IntToStr(fileCount).c_str(); + buffer2 += "): "; + buffer2 += FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + // SWLog::systemlog->LogInformation("%s", buffer.c_str()); + TMainForm::createParent(buffer.c_str()); // make sure parent directory exists + Synchronize((TThreadMethod)&PreDownload1); + try { + FTPLink->Download(FTPLink->FTPDirectoryList->name->Strings[i].c_str(), buffer.c_str()); + } + catch(...) {} + if (Terminated) + break; + } + } + + } + else { + Synchronize((TThreadMethod)&PreDownload2); + FTPLink->Download(src.c_str(), dest.c_str()); + } + try { + FTPLink->Disconnect(); + } + catch(...){} + } +} + + +void __fastcall TStatusForm::TFTPThread::FTPLinkPacketRecvd(TObject *Sender) +{ + Synchronize((TThreadMethod)&UpdateBytes); +} + + +void __fastcall TStatusForm::TFTPThread::UpdateBytes(void) +{ + StatusForm->statusBar->Caption = IntToStr(FTPLink->BytesRecvd) + " bytes out of " + IntToStr(FTPLink->BytesTotal) + " transferred (" + IntToStr((int)((float)(FTPLink->BytesRecvd + 1) / (float)(FTPLink->BytesTotal + 1) * 100)) + "%)"; + StatusForm->statusBar->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::CreateFTPObject(void) +{ + FTPLink = new TNMFTP(0); +} + + +void __fastcall TStatusForm::TFTPThread::PreConnect(void) +{ + buffer = "Connecting to server at "; + buffer += ist->Source.c_str(); + buffer += "..."; + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload1(void) +{ +// SWLog::systemlog->LogInformation("Creating parent dir: %s", buffer.c_str()); +// SWLog::systemlog->LogInformation("Return: %d", ret); + StatusForm->actionBar->Caption = buffer2.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload2(void) +{ + buffer = "Downloading: "; + buffer += src.c_str(); + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); + MainForm->createParent(dest.c_str()); // make sure parent directory exists +} + + +void __fastcall TStatusForm::Cleanup(TObject *Sender) +//void __fastcall TStatusForm::TFTPThread::Cleanup() +{ + if (abort) + StatusForm->ModalResult = mrCancel; + else StatusForm->ModalResult = mrOk; +// StatusForm->Close(); +} + +void __fastcall TStatusForm::FormClose(TObject *Sender, TCloseAction &Action) +{ + MainForm->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TStatusForm::Button1Click(TObject *Sender) +{ + abort = true; + ftpThread->Terminate(); + ftpThread->FTPLink->Abort(); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm Binary files differnew file mode 100644 index 0000000..2075523 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h new file mode 100644 index 0000000..fdf7800 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h @@ -0,0 +1,61 @@ +//--------------------------------------------------------------------------- +#ifndef StatusFrmH +#define StatusFrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include <NMFtp.hpp> +#include "MainFrm.h" +//--------------------------------------------------------------------------- +class TStatusForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TButton *Button1; + TPanel *statusBar; + TPanel *Panel3; + TPanel *actionBar; + void __fastcall FormShow(TObject *Sender); + void __fastcall Cleanup(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + class TFTPThread : public TThread { + bool abort; + InstallSourceTab *ist; + string src; + string dest; + string buffer; + string buffer2; + bool dirTransfer; + protected: + void __fastcall Execute(); + public: + TNMFTP *FTPLink; + list<string> fileList; + __fastcall TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer = false, bool CreateSuspended = false); + __fastcall TFTPThread::~TFTPThread(); + void __fastcall FTPLinkPacketRecvd(TObject *Sender); + void __fastcall CreateFTPObject(void); + void __fastcall UpdateBytes(void); + void __fastcall PreConnect(void); + void __fastcall PreDownload1(void); + void __fastcall PreDownload2(void); +// void __fastcall Cleanup(void); + } *ftpThread; +public: // User declarations + InstallSourceTab *ist; + string src; + string dest; + bool dirTransfer; + bool abort; + __fastcall TStatusForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp b/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp Binary files differnew file mode 100644 index 0000000..8d5713f --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp b/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp Binary files differnew file mode 100644 index 0000000..a1c4068 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/back.bmp b/apps/windoze/CBuilder4/InstallMgr/back.bmp Binary files differnew file mode 100644 index 0000000..966e157 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/back.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp b/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp Binary files differnew file mode 100644 index 0000000..5389910 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp b/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp Binary files differnew file mode 100644 index 0000000..0da70ab --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp b/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp Binary files differnew file mode 100644 index 0000000..61c7e5b --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/check.bmp b/apps/windoze/CBuilder4/InstallMgr/check.bmp Binary files differnew file mode 100644 index 0000000..09307a9 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/check.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp new file mode 100644 index 0000000..5b77797 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp @@ -0,0 +1,67 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "cipherfrm.h" +#include <swmgr.h> +#include <swconfig.h> +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +__fastcall TCipherForm::TCipherForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TCipherForm::Button2Click(TObject *Sender) +{ + SectionMap::iterator section; + ConfigEntMap::iterator entry; + SWConfig *modconf = new SWConfig(confFile.c_str()); + string tmpBuf; + + section = modconf->Sections.find(modName); + if (section != modconf->Sections.end()) { + entry = section->second.find("CipherKey"); + if (entry != section->second.end()) { + entry->second = CipherForm->cipherEdit->Text.c_str(); + modconf->Save(); + delete modconf; // close file + modconf = 0; + SWMgr *mgr = new SWMgr(); + SWModule *mod = mgr->Modules[modName]; + mod->SetKey("Ipet 2:12"); + tmpBuf = mod->StripText(); + mod->SetKey("gen 1:10"); + tmpBuf += "\r\n\r\n"; + tmpBuf += mod->StripText(); + Memo1->Text = tmpBuf.c_str(); + delete mgr; + } + } + if (modconf) + delete modconf; + +} +//--------------------------------------------------------------------------- + +void __fastcall TCipherForm::FormShow(TObject *Sender) +{ + string tmpCaption; + tmpCaption = "Cipher Key: ["; + tmpCaption += modName; + tmpCaption += "]"; + Caption = tmpCaption.c_str(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TCipherForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + Memo1->Text = ""; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm Binary files differnew file mode 100644 index 0000000..8758bdb --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h new file mode 100644 index 0000000..4fcd722 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#ifndef cipherfrmH +#define cipherfrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include <string> +//--------------------------------------------------------------------------- +class TCipherForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TLabel *Label1; + TLabel *Label2; + TEdit *cipherEdit; + TMemo *Memo1; + TButton *Button1; + TButton *Button2; + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); +private: // User declarations +public: // User declarations + std::string confFile; + std::string modName; + __fastcall TCipherForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/delete.bmp b/apps/windoze/CBuilder4/InstallMgr/delete.bmp Binary files differnew file mode 100644 index 0000000..d20cbf9 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/delete.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/filenew.bmp b/apps/windoze/CBuilder4/InstallMgr/filenew.bmp Binary files differnew file mode 100644 index 0000000..59fb3db --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/filenew.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/floppy.bmp b/apps/windoze/CBuilder4/InstallMgr/floppy.bmp Binary files differnew file mode 100644 index 0000000..5fbef0a --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/floppy.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/globe.bmp b/apps/windoze/CBuilder4/InstallMgr/globe.bmp Binary files differnew file mode 100644 index 0000000..e4b661d --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/globe.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/insert.bmp b/apps/windoze/CBuilder4/InstallMgr/insert.bmp Binary files differnew file mode 100644 index 0000000..7cc35c5 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/insert.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/query.bmp b/apps/windoze/CBuilder4/InstallMgr/query.bmp Binary files differnew file mode 100644 index 0000000..36cd506 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/query.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/sword.bmp b/apps/windoze/CBuilder4/InstallMgr/sword.bmp Binary files differnew file mode 100644 index 0000000..32c5606 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/sword.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/trash.bmp b/apps/windoze/CBuilder4/InstallMgr/trash.bmp Binary files differnew file mode 100644 index 0000000..effbab9 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/trash.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/undo.bmp b/apps/windoze/CBuilder4/InstallMgr/undo.bmp Binary files differnew file mode 100644 index 0000000..fc4fff6 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/undo.bmp diff --git a/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp b/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp Binary files differnew file mode 100644 index 0000000..4158452 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr b/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr new file mode 100644 index 0000000..2d39a4e --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr @@ -0,0 +1,191 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = CoolTools.dll +OBJFILES = CoolTools.obj +RESFILES = CoolTools.res +RESDEPEN = $(RESFILES) +LIBFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -WD -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve \ + -a8 -k- -vi- -c -b- -w-par -w-inl -Vx -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpd -x -Gn -Gi +# --------------------------------------------------------------------------- +ALLOBJ = c0d32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software +FileDescription=Jody's Cool Tools +FileVersion=1.0.0.0 +InternalName=CoolTools +LegalCopyright=(c) Copyright 1999 CrossWire Software +LegalTrademarks= +OriginalFilename= +ProductName=CoolTools +ProductVersion=1.0.0.0 +Comments=Jody's Cool Tools +Message=Seek Him and you will find Him -John 3:16; Romans 5:5-10; Philippians 2:5-11 + +[HistoryLists\hlIncludePath] +Count=1 +Item0=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp new file mode 100644 index 0000000..451aa35 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp @@ -0,0 +1,55 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#include <dos.h> +#pragma hdrstop +//--------------------------------------------------------------------------- +// Important note about DLL memory management when your DLL uses the +// static version of the RunTime Library: +// +// If your DLL exports any functions that pass String objects (or structs/ +// classes containing nested Strings) as parameter or function results, +// you will need to add the library MEMMGR.LIB to both the DLL project and +// any other projects that use the DLL. You will also need to use MEMMGR.LIB +// if any other projects which use the DLL will be perfomring new or delete +// operations on any non-TObject-derived classes which are exported from the +// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling +// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, +// the file BORLNDMM.DLL should be deployed along with your DLL. +// +// To avoid using BORLNDMM.DLL, pass string information using "char *" or +// ShortString parameters. +// +// If your DLL uses the dynamic version of the RTL, you do not need to +// explicitly add MEMMGR.LIB as this will be done implicitly for you +//--------------------------------------------------------------------------- +USERES("CoolTools.res"); +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- +extern "C" { + +DWORD APIENTRY __export launchAndWait(LPCSTR cmdLine, LPCSTR workDir) { + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode = -1; + + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, (char *)cmdLine, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, workDir, &StartupInfo, &ProcessInformation)) { + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + } + else { + LPVOID lpMsgBuf; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); + MessageBox(NULL, (const char *)lpMsgBuf, "Error", MB_OK|MB_ICONINFORMATION); + LocalFree(lpMsgBuf); + } + return ExitCode; +} + +}
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.res b/apps/windoze/CBuilder4/UninstCust/CoolTools.res Binary files differnew file mode 100644 index 0000000..89c703a --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.res diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.bpr b/apps/windoze/CBuilder4/UninstCust/Project1.bpr new file mode 100644 index 0000000..b66358b --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Project1.bpr @@ -0,0 +1,179 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = Project1.exe +OBJFILES = Project1.obj Unit1.obj +RESFILES = Project1.res +RESDEPEN = $(RESFILES) Unit1.dfm +LIBFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -Od -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -r- \ + -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx -tW -tWM \ + -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$YD -$W -$O- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zd +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.cpp b/apps/windoze/CBuilder4/UninstCust/Project1.cpp new file mode 100644 index 0000000..550e6cf --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Project1.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USERES("Project1.res"); +USEFORM("Unit1.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.res b/apps/windoze/CBuilder4/UninstCust/Project1.res Binary files differnew file mode 100644 index 0000000..32b522d --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Project1.res diff --git a/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg b/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg new file mode 100644 index 0000000..a41533f --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg @@ -0,0 +1,26 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = UninstCust.dll Project1.exe CoolTools.dll +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +UninstCust.dll: UninstCust.bpr + $(MAKE) + +Project1.exe: Project1.bpr + $(MAKE) + +CoolTools.dll: CoolTools.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr b/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr new file mode 100644 index 0000000..25f3add --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr @@ -0,0 +1,178 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = UninstCust.dll +OBJFILES = UninstCust.obj +RESFILES = UninstCust.res +RESDEPEN = $(RESFILES) +LIBFILES = +LIBRARIES = VCL40.lib +SPARELIBS = VCL40.lib +PACKAGES = VCL40.bpi VCLX40.bpi VCLJPG40.bpi bcbsmp40.bpi QRPT40.bpi VCLDB40.bpi \ + ibsmp40.bpi VCLDBX40.bpi TEEUI40.bpi TEEDB40.bpi TEE40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -WD -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve \ + -a8 -k- -vi- -c -b- -w-par -w-inl -Vx -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpd -x -Gn -Gi +# --------------------------------------------------------------------------- +ALLOBJ = c0d32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Bible Society +FileDescription=Uninstaller +FileVersion=1.0.0.0 +InternalName=Uninstaller +LegalCopyright=(c) Copyright CrossWire Bible Society +LegalTrademarks= +OriginalFilename=UninstCust.dll +ProductName=Uninstaller +ProductVersion=1.0.0.0 +Comments=Jesus is alone the One Who can and will fill your empty heart if you surrender to Him. + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp b/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp new file mode 100644 index 0000000..04203f7 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp @@ -0,0 +1,90 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +#include <dos.h> +#include <stdlib.h> +//--------------------------------------------------------------------------- +// Important note about DLL memory management when your DLL uses the +// static version of the RunTime Library: +// +// If your DLL exports any functions that pass String objects (or structs/ +// classes containing nested Strings) as parameter or function results, +// you will need to add the library MEMMGR.LIB to both the DLL project and +// any other projects that use the DLL. You will also need to use MEMMGR.LIB +// if any other projects which use the DLL will be perfomring new or delete +// operations on any non-TObject-derived classes which are exported from the +// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling +// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, +// the file BORLNDMM.DLL should be deployed along with your DLL. +// +// To avoid using BORLNDMM.DLL, pass string information using "char *" or +// ShortString parameters. +// +// If your DLL uses the dynamic version of the RTL, you do not need to +// explicitly add MEMMGR.LIB as this will be done implicitly for you +//--------------------------------------------------------------------------- +USERES("UninstCust.res"); +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + +extern "C" { + +LONG APIENTRY __export UninstInitialize(HWND x, HINSTANCE y, long z) { + DWORD size; + char *path; + char *app; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, NULL, &size); + path = (char *) calloc(size+1, 1); + app = (char *) calloc(size+40, 1); + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr -uninstall"); + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, app, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation)) { + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + free(app); + free(path); + RegCloseKey(hKey); + } + else { + + LPVOID lpMsgBuf; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + + // Display the string. + MessageBox( NULL, (const char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION ); + + // Free the buffer. + LocalFree( lpMsgBuf ); + + } + + } +} + +LONG APIENTRY __export UninstUnInitialize(HWND x, HINSTANCE y, long z) { +} +} diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.res b/apps/windoze/CBuilder4/UninstCust/UninstCust.res Binary files differnew file mode 100644 index 0000000..6b49be6 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/UninstCust.res diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.cpp b/apps/windoze/CBuilder4/UninstCust/Unit1.cpp new file mode 100644 index 0000000..e17f0b8 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Unit1.cpp @@ -0,0 +1,107 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "Unit1.h" +#include <dos.h> +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Button1Click(TObject *Sender) +{ + DWORD size; + char path[1024]; + char app[1024]; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { +// if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.Exe", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr"); +//SetCurrentDirectory(path); +GetStartupInfo(&StartupInfo); +CreateProcess( + NULL, // pointer to name of executable module + app, // pointer to command line string + NULL, // pointer to process security attributes + NULL, // pointer to thread security attributes + TRUE, // handle inheritance flag + NORMAL_PRIORITY_CLASS, // creation flags + NULL, // pointer to new environment block + path, // pointer to current directory name + &StartupInfo, // pointer to STARTUPINFO + &ProcessInformation // pointer to PROCESS_INFORMATION + ); + RegCloseKey(hKey); + + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Button2Click(TObject *Sender) +{ + DWORD size; + char *path; + char *app; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, NULL, &size); + path = (char *) calloc(size+1, 1); + app = (char *) calloc(size+40, 1); + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr -uninstall"); + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, "app", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation)) { +// CreateProcess(NULL, app, NULL, NULL, TRUE, DEBUG_PROCESSNORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation); + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + free(app); + free(path); + RegCloseKey(hKey); + } + else { + + LPVOID lpMsgBuf; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + + // Display the string. + MessageBox( NULL, (const char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION ); + + // Free the buffer. + LocalFree( lpMsgBuf ); + + } + + } + +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.dfm b/apps/windoze/CBuilder4/UninstCust/Unit1.dfm Binary files differnew file mode 100644 index 0000000..7723036 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Unit1.dfm diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.h b/apps/windoze/CBuilder4/UninstCust/Unit1.h new file mode 100644 index 0000000..37acbda --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Unit1.h @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TButton *Button1; + TEdit *Edit1; + TButton *Button2; + void __fastcall Button1Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp new file mode 100644 index 0000000..39ca670 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp @@ -0,0 +1,85 @@ +//--------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) + : TForm(AOwner) +{ +} +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) +{ + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + + AnsiString newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 3; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + newtext = newtext + "{\\fs20\\cf0 " + (*it2).second["About"].c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "All the people at The Outpost in Scottsdale for testing and suggestions; The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; William Dicks; Everyone on b-greek@virginia.edu; Michael Paul Johnson; Roland Nygren; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; Gregory Hall; Luis Cortes\\par \\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm Binary files differnew file mode 100644 index 0000000..4911690 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h new file mode 100644 index 0000000..77da4f8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h @@ -0,0 +1,36 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include <vcl\System.hpp> +#include <vcl\Windows.hpp> +#include <vcl\SysUtils.hpp> +#include <vcl\Classes.hpp> +#include <vcl\Graphics.hpp> +#include <vcl\Forms.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Buttons.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\ComCtrls.hpp> +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TButton *OKButton; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + void __fastcall FormShow(TObject *Sender); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/AppBar.cpp b/apps/windoze/CBuilder4/prototype/AppBar.cpp new file mode 100644 index 0000000..081364f --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AppBar.cpp @@ -0,0 +1,108 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "AppBar.h" +#include "DockCanvas.h" +#include "ModTabPanel.h" +#include "biblecsmgr.h" +#include "BookMarkPanel.h" +#include "DeskTopNameForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "MenuBar" +#pragma resource "*.dfm" +TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +__fastcall TAppBarFrm::TAppBarFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormCreate(TObject *Sender) +{ + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + mainmgr = new BibleCSMGR(ModInstFrm); + activeDesktop = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton2Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Biblical Texts"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton5Click(TObject *Sender) +{ + if (activeDesktop) { + TBookMarkPanel *bookmarks = new TBookMarkPanel(activeDesktop); + bookmarks->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton3Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Commentaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton4Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Lexicons / Dictionaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::TabControl1Change(TObject *Sender) +{ + int index = TabControl1->TabIndex; + if (index > -1) { + activeDesktop = ((TForm *)(TabControl1->Tabs->Objects[index])); + activeDesktop->Show(); + } + else activeDesktop = 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton1Click(TObject *Sender) +{ + DeskTopNameFrm->ShowModal(); + activeDesktop = new TDockCanvasFrm(this); + activeDesktop->OnClose = FormClose; + activeDesktop->OnActivate = FormActivate; + activeDesktop->Caption = DeskTopNameFrm->desktopName->Text; + TabControl1->Tabs->AddObject(activeDesktop->Caption, activeDesktop); + if (activeDesktop->Top < (this->Top + this->Height)) + activeDesktop->Top = this->Top + this->Height + 1; + activeDesktop->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->Tabs->Delete(index); + TabControl1->TabIndex = 0; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormActivate(TObject *Sender) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->TabIndex = index; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/prototype/AppBar.dfm b/apps/windoze/CBuilder4/prototype/AppBar.dfm Binary files differnew file mode 100644 index 0000000..de0ee59 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AppBar.dfm diff --git a/apps/windoze/CBuilder4/prototype/AppBar.h b/apps/windoze/CBuilder4/prototype/AppBar.h new file mode 100644 index 0000000..d3a9072 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AppBar.h @@ -0,0 +1,84 @@ +//--------------------------------------------------------------------------- +#ifndef AppBarH +#define AppBarH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <Buttons.hpp> +#include <ComCtrls.hpp> +#include <ExtCtrls.hpp> +#include <Graphics.hpp> +#include <ToolWin.hpp> +#include <Menus.hpp> +#include <MenuBar.hpp> +#include <ImgList.hpp> +#include <DockCanvas.h> +class SWMgr; +//--------------------------------------------------------------------------- +class TAppBarFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TTabControl *TabControl1; + TCoolBar *CoolBar1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *Panel3; + TSpeedButton *btnLookup; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TEdit *freeHandLookup; + TToolBar *ToolBar1; + TSpeedButton *Bookmarkbtn; + TPanel *pnlSpeed; + TCoolBar *CoolBar2; + TMainMenu *MainMenu2; + TMenuItem *File1; + TMenuItem *Options1; + TMenuItem *SaveLayout1; + TMenuItem *N1; + TMenuItem *Exit1; + TMenuItem *Edit2; + TMenuItem *Copy3; + TMenuItem *Search3; + TMenuItem *NewSearchWindow1; + TMenuItem *Help4; + TMenuItem *About1; + TMenuBar *MenuBar1; + TImageList *ImageList1; + TImage *Image2; + TImage *Image1; + TPanel *Panel4; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + void __fastcall FormCreate(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall TabControl1Change(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall FormActivate(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TAppBarFrm(TComponent* Owner); + SWMgr *mainmgr; + TForm *activeDesktop; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/Bitmap1.bmp b/apps/windoze/CBuilder4/prototype/Bitmap1.bmp Binary files differnew file mode 100644 index 0000000..cab8e28 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/Bitmap1.bmp diff --git a/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp b/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp new file mode 100644 index 0000000..2974d44 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp @@ -0,0 +1,344 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "BookMarkPanel.h" +#pragma package(smart_init) +#include "newbmfilefrm.h" +//#include <dir.h> +#include <io.h> +#include <dirent.h> +#include <swconfig.h> +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TBookMarkPanel *) +{ + new TBookMarkPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TBookMarkPanel::TBookMarkPanel(TComponent* Owner) + : TPanel(Owner) +{ + BMPopup = new TPopupMenu(this); + TMenuItem * newitem; + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Add Child"; + newitem->OnClick = AddChild1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Delete"; + newitem->OnClick = Delete1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Rename"; + newitem->OnClick = Rename1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "-"; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&New Bookmark File"; + newitem->OnClick = NewBookmarkFile1Click; + BMPopup->Items->Add(newitem); +} + + +__fastcall TBookMarkPanel::~TBookMarkPanel() +{ + list <String *>::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +void __fastcall TBookMarkPanel::CreateWnd() { + + TPanel::CreateWnd(); + + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + bmtree->Items->Clear(); + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +/* + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + + bmtree = new TTreeView(this); + bmtree->Parent = this; + bmtree->Align = alClient; + bmtree->DragMode = dmAutomatic; + bmtree->Indent = 19; + bmtree->PopupMenu = BMPopup; + bmtree->TabOrder = 0; + bmtree->OnDblClick = bmtreeDblClick; + bmtree->OnDragDrop = bmtreeDragDrop; + bmtree->OnDragOver = bmtreeDragOver; + + + + bmtree->Items->Clear(); + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +*/ +} + + +void TBookMarkPanel::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookMarkPanel::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { +// Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); +// Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookMarkPanel::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list <String *>::iterator it; + string persfile; + SWConfig optionsconf("./options.conf"); + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TBookMarkPanel::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookMarkPanel::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} + + + +//--------------------------------------------------------------------------- +namespace Bookmarkpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TBookMarkPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/BookMarkPanel.h b/apps/windoze/CBuilder4/prototype/BookMarkPanel.h new file mode 100644 index 0000000..c998b76 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/BookMarkPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef BookMarkPanelH +#define BookMarkPanelH +//--------------------------------------------------------------------------- +#include <SysUtils.hpp> +#include <Controls.hpp> +#include <Classes.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include <swconfig.h> +#include <list> +//--------------------------------------------------------------------------- +class PACKAGE TBookMarkPanel : public TPanel +{ +private: + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list <String *> bmfiles; // so we can delete each display we create +protected: +public: + __fastcall TBookMarkPanel(TComponent* Owner); + virtual __fastcall ~TBookMarkPanel(); + virtual void __fastcall CreateWnd(); + string bmdir; + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +__published: + TTreeView *bmtree; + TPopupMenu *BMPopup; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/CommentPanel.cpp b/apps/windoze/CBuilder4/prototype/CommentPanel.cpp new file mode 100644 index 0000000..dbf8adf --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/CommentPanel.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#include <vcl/clipbrd.hpp> +#pragma hdrstop + +#include "CommentPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include <swconfig.h> +#include <swmodule.h> +#include "Greek2Greek.h" +#include <utilfuns.h> +#include <swmgr.h> +#include <shellapi.h> + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TCommentPanel *) +{ + new TCommentPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TCommentPanel::TCommentPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TCommentPanel::CreateWnd() { + TPanel::CreateWnd(); + + TWinControl *newrtf; + + if (mgr->config->Sections[module->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + display = new DispExternal(); + module->Disp(display); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + display = new RTFDisp((SWDispRTF *)newrtf); + module->Disp(display); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mgr->config->Sections[module->Name()]["ModDrv"] == "RawFiles") { +// ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } +// else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newrtf->Parent = this; + newrtf->Align = alClient; + +// mod->SetKey(DefaultVSKey); +// return 0; + + +} +__fastcall TCommentPanel::~TCommentPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Commentpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TCommentPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TCommentPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TCommentPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TCommentPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TCommentPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TCommentPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TCommentPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/CommentPanel.h b/apps/windoze/CBuilder4/prototype/CommentPanel.h new file mode 100644 index 0000000..6fa9145 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/CommentPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef CommentPanelH +#define CommentPanelH +//--------------------------------------------------------------------------- +#include <SysUtils.hpp> +#include <Controls.hpp> +#include <Classes.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TCommentPanel : public TPanel +{ +private: +protected: +public: + __fastcall TCommentPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TCommentPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp new file mode 100644 index 0000000..c3308b4 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "DeskTopNameForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +__fastcall TDeskTopNameFrm::TDeskTopNameFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm Binary files differnew file mode 100644 index 0000000..e64f7bd --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h new file mode 100644 index 0000000..3ef1549 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef DeskTopNameFormH +#define DeskTopNameFormH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ComCtrls.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TDeskTopNameFrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TPanel *Panel1; + TButton *Button1; + TPanel *Panel2; + TEdit *desktopName; +private: // User declarations +public: // User declarations + __fastcall TDeskTopNameFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/LDPanel.cpp b/apps/windoze/CBuilder4/prototype/LDPanel.cpp new file mode 100644 index 0000000..b93af95 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/LDPanel.cpp @@ -0,0 +1,174 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#include <vcl/clipbrd.hpp> +#pragma hdrstop + +#include "LDPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include <swconfig.h> +#include <swmodule.h> +#include "Greek2Greek.h" +#include <utilfuns.h> +#include <swmgr.h> + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TLDPanel *) +{ + new TLDPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TLDPanel::TLDPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TLDPanel::CreateWnd() { + TPanel::CreateWnd(); + + SWDispRTF *newrtf = new SWDispRTF(this); + + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; +// newrtf->PopupMenu = PopupMenu2; +// newrtf->OnMouseDown = RTFMouseDown; + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultStrKey); + + +} +__fastcall TLDPanel::~TLDPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Ldpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TLDPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLDPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TLDPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TLDPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TLDPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TLDPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TLDPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/LDPanel.h b/apps/windoze/CBuilder4/prototype/LDPanel.h new file mode 100644 index 0000000..80dcdff --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/LDPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef LDPanelH +#define LDPanelH +//--------------------------------------------------------------------------- +#include <SysUtils.hpp> +#include <Controls.hpp> +#include <Classes.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TLDPanel : public TPanel +{ +private: +protected: +public: + __fastcall TLDPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TLDPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.cpp b/apps/windoze/CBuilder4/prototype/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.dfm b/apps/windoze/CBuilder4/prototype/ModInstForm.dfm Binary files differnew file mode 100644 index 0000000..41ce498 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModInstForm.dfm diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.h b/apps/windoze/CBuilder4/prototype/ModInstForm.h new file mode 100644 index 0000000..f0cb90a --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ComCtrls.hpp> +#include <vcl\ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *Button1; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp b/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp new file mode 100644 index 0000000..0d39acf --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp @@ -0,0 +1,114 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "ModTabPanel.h" +#pragma package(smart_init) +#include <swmgr.h> +#include "TextPanel.h" +#include "CommentPanel.h" +#include "LDPanel.h" +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TModTabPanel *) +{ + new TModTabPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TModTabPanel::TModTabPanel(TComponent* Owner, SWMgr *mgr, char *modType) + : TPanel(Owner) +{ + this->mgr = mgr; + this->modType = modType; +} + +void __fastcall TModTabPanel::CreateWnd() { + TPanel::CreateWnd(); + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + pageControl = new TPageControl(this); + pageControl->Parent = this; + pageControl->Align = alClient; + pageControl->MultiLine = True; + pageControl->ParentFont = False; + pageControl->ParentShowHint = False; + pageControl->ShowHint = True; + pageControl->TabHeight = 14; + pageControl->TabOrder = 0; + pageControl->OnChange = PageControl1Change; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + if ((!strcmp((*it).second->Type(), "Biblical Texts")) && (!strcmp(modType.c_str(), "Biblical Texts"))) { + font = 0; + if ((sit = mgr->config->Sections.find((*it).second->Name())) != mgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TTextPanel *panel = new TTextPanel(this, (*it).second, font); + panel->Parent = newtab; + panel->Align = alClient; +// CreateTextPane((*it).second, font); + } + if ((!strcmp((*it).second->Type(), "Commentaries")) && (!strcmp(modType.c_str(), "Commentaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TCommentPanel *panel = new TCommentPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateCommentPane((*it).second); + } + if ((!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) && (!strcmp(modType.c_str(), "Lexicons / Dictionaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TLDPanel *panel = new TLDPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateLDPane((*it).second); + } + } +} +//--------------------------------------------------------------------------- +namespace Modtabpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TModTabPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TModTabPanel::PageControl1Change(TObject *Sender) +{ + RefreshActiveSheet(); +// Form1->ActiveControl = PageControl1; +} + + +void TModTabPanel::RefreshActiveSheet() +{ + ModMap::iterator it; + + it = mgr->Modules.find(pageControl->ActivePage->Caption.c_str()); + if (it != mgr->Modules.end()) { + (*it).second->Display(); +// if (logmodstate) +// modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModTabPanel.h b/apps/windoze/CBuilder4/prototype/ModTabPanel.h new file mode 100644 index 0000000..9da8db2 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModTabPanel.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------- +#ifndef ModTabPanelH +#define ModTabPanelH +//--------------------------------------------------------------------------- +#include <SysUtils.hpp> +#include <Controls.hpp> +#include <Classes.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include <string> + +class SWMgr; +//--------------------------------------------------------------------------- +class PACKAGE TModTabPanel : public TPanel +{ +private: +protected: +public: + SWMgr *mgr; + std::string modType; + __fastcall TModTabPanel(TComponent* Owner, SWMgr *mgr = 0, char *modtype = 0); + void RefreshActiveSheet(); + virtual void __fastcall CreateWnd(); + +__published: + TPageControl *pageControl; + void __fastcall PageControl1Change(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/TextPanel.cpp b/apps/windoze/CBuilder4/prototype/TextPanel.cpp new file mode 100644 index 0000000..a534e12 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/TextPanel.cpp @@ -0,0 +1,183 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#include <vcl/clipbrd.hpp> +#pragma hdrstop + +#include "TextPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include <swconfig.h> +#include <swmodule.h> +#include "Greek2Greek.h" +#include <utilfuns.h> + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TTextPanel *) +{ + new TTextPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TTextPanel::TTextPanel(TComponent* Owner, SWModule *mod, char *font) + : TPanel(Owner) +{ + module = mod; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TTextPanel::CreateWnd() { + TPanel::CreateWnd(); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[512]; + SectionMap::iterator sit; + +// newtab->Caption = mod->Name(); +// newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = menu; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; +// } + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultVSKey); + +} +__fastcall TTextPanel::~TTextPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Textpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TTextPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TTextPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TTextPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TTextPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TTextPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TTextPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TTextPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/TextPanel.h b/apps/windoze/CBuilder4/prototype/TextPanel.h new file mode 100644 index 0000000..6103088 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/TextPanel.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- +#ifndef TextPanelH +#define TextPanelH +//--------------------------------------------------------------------------- +#include <SysUtils.hpp> +#include <Controls.hpp> +#include <Classes.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +class SWDisplay; +class SWModule; +//--------------------------------------------------------------------------- +class PACKAGE TTextPanel : public TPanel +{ +private: +protected: +public: + __fastcall TTextPanel(TComponent* Owner, SWModule *mod = 0, char *font = 0); + __fastcall virtual ~TTextPanel(); + SWDisplay *display; + SWModule *module; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/back.bmp b/apps/windoze/CBuilder4/prototype/back.bmp Binary files differnew file mode 100644 index 0000000..5284295 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/back.bmp diff --git a/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp b/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp new file mode 100644 index 0000000..502cb09 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include <swconfig.h> +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, false) +{ + ModInstFrm = iModInstFrm; + Load(); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + bool logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*section).second["Description"].c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*section).second["About"].c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->log; + SWLog::systemlog->log = false; + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->log = logflag; + + return retval; +} diff --git a/apps/windoze/CBuilder4/prototype/biblecsmgr.h b/apps/windoze/CBuilder4/prototype/biblecsmgr.h new file mode 100644 index 0000000..d94bbd6 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/biblecsmgr.h @@ -0,0 +1,18 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include <swmgr.h> +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); +}; + +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmark.bmp b/apps/windoze/CBuilder4/prototype/bookmark.bmp Binary files differnew file mode 100644 index 0000000..4b6df0c --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmark.bmp diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp b/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp new file mode 100644 index 0000000..8ef63cc --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "bookmarkfrm.h" +#include <swconfig.h> +#include <dirent.h> +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include <io.h> +#include <dir.h> + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +__fastcall TBookmarksfrm::TBookmarksfrm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TBookmarksfrm::~TBookmarksfrm() +{ + list <String *>::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TBookmarksfrm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookmarksfrm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookmarksfrm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list <String *>::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*sit).second["AutoSavePersonal"].c_str())) ? true:false; + other = (atoi((*sit).second["AutoSaveOther"].c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap[buf] = tree->Text.c_str(); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + } + } +} + + +void TBookmarksfrm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) +{ + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit[buf] = tree->Text.c_str(); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookmarksfrm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm b/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm Binary files differnew file mode 100644 index 0000000..45152a3 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.h b/apps/windoze/CBuilder4/prototype/bookmarkfrm.h new file mode 100644 index 0000000..4c37796 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ComCtrls.hpp> +#include <swconfig.h> +#include <vcl\Menus.hpp> +#include <list> +//--------------------------------------------------------------------------- +class TBookmarksfrm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list <String *> bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TBookmarksfrm(TComponent* Owner); + __fastcall ~TBookmarksfrm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf b/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf new file mode 100644 index 0000000..e5317f6 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf @@ -0,0 +1,4 @@ + +[ROOT] +branch0=Personal Bookmarks + diff --git a/apps/windoze/CBuilder4/prototype/desktop.bmp b/apps/windoze/CBuilder4/prototype/desktop.bmp Binary files differnew file mode 100644 index 0000000..5692668 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/desktop.bmp diff --git a/apps/windoze/CBuilder4/prototype/desktop2.bmp b/apps/windoze/CBuilder4/prototype/desktop2.bmp Binary files differnew file mode 100644 index 0000000..fa1bf08 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/desktop2.bmp diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.cpp b/apps/windoze/CBuilder4/prototype/editentryfrm.cpp new file mode 100644 index 0000000..e9404f8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/editentryfrm.cpp @@ -0,0 +1,332 @@ +#include <vcl.h> +#pragma hdrstop +#include <windows.hpp> +#include <stdlib.h> +#include <stdio.h> +#include "editentryfrm.h" +#include <swdisprtf.h> + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +__fastcall TEditEntry::TEditEntry(TComponent *Owner) + : TForm(Owner) +{ + ResultBuf = 0; +} + + +__fastcall TEditEntry::~TEditEntry() +{ + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SelectionChange(TObject */*Sender*/) +{ + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} +//---------------------------------------------------------------------------- +TTextAttributes *__fastcall TEditEntry::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntry::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntry::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntry::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = (char *)*Module; + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntry::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + strtok(strstr(tmpbuf, "colortbl"), "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.dfm b/apps/windoze/CBuilder4/prototype/editentryfrm.dfm Binary files differnew file mode 100644 index 0000000..3b40fc4 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/editentryfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.h b/apps/windoze/CBuilder4/prototype/editentryfrm.h new file mode 100644 index 0000000..058c385 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/editentryfrm.h @@ -0,0 +1,108 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include <Outline.hpp> +#include <Grids.hpp> +#include <Buttons.hpp> +#include <ExtCtrls.hpp> +#include <StdCtrls.hpp> +#include <ComCtrls.hpp> +#include <Menus.hpp> +#include <Dialogs.hpp> +#include <Forms.hpp> +#include <Controls.hpp> +#include <Graphics.hpp> +#include <Classes.hpp> +#include <SysUtils.hpp> +#include <Messages.hpp> +#include <Windows.hpp> +#include <System.hpp> +#include <swmodule.h> +#include <swdisprtf.h> +//---------------------------------------------------------------------------- +class TEditEntry : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TRichEdit *RichEdit1; + TLabel *Label1; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntry(TComponent *Owner); + __fastcall ~TEditEntry(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.cpp b/apps/windoze/CBuilder4/prototype/mainfrm.cpp new file mode 100644 index 0000000..bb89b40 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mainfrm.cpp @@ -0,0 +1,824 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#include <vcl/clipbrd.hpp> +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include <utilstr.h> +#include <filemgr.h> +#include "editentryfrm.h" +#include "versesel.h" +#include "ModTabPanel.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; + Application->OnHint = DisplayHint; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = Application->Hint; +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + list <SWDisplay *>::iterator it; + int loop; + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + +// for (loop = 0; loop < 10; loop++) { +// if (ctrlstates[loop]); +// delete ctrlstates[loop]; +// } +} +//--------------------------------------------------------------------------- +void TForm1::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", + atoi((*sit).second["CurrentVSColorRed"].c_str()), + atoi((*sit).second["CurrentVSColorGreen"].c_str()), + atoi((*sit).second["CurrentVSColorBlue"].c_str())); + } + else sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + TTextPanel *panel = new TTextPanel(this, mod, font); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + panel->Parent = newtab; +/* + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; + } + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultVSKey); +*/ + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + mod->Disp(*displays.insert(displays.begin(), new DispExternal())); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl2; + newrtf->Parent = newtab; + newrtf->Align = alClient; + + mod->SetKey(DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl3; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::PageControl1Change(TObject *Sender) +{ +// RefreshActiveSheet(PageControl1); +// Form1->ActiveControl = PageControl1; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey.books[DefaultVSKey.Testament()-1][DefaultVSKey.Book()-1].name); + CHBox->Text = DefaultVSKey.Chapter(); + VSBox->Text = DefaultVSKey.Verse(); + freeHandLookup->Text = (const char *)DefaultVSKey; + textTabs->RefreshActiveSheet(); + logmodstate = false; // only log state once + RefreshActiveSheet(PageControl2); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey.AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + DefaultVSKey = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey.AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl2Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl2); + Form1->ActiveControl = PageControl2; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditChange(TObject *Sender) +{ + if (DictKeyEdit->Modified) { + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + DictKeyEdit->Modified = false; + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl3Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl3); + Form1->ActiveControl = PageControl3; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) +{ + Form2->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + DictKeyEdit->Text = Trim(rtf->SelText); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + + sit = layoutconf->Sections["Screen"]; + sit["MainTop"] = IntToStr(Form1->Top).c_str(); + sit["MainLeft"] = IntToStr(Form1->Left).c_str(); + sit["MainHeight"] = IntToStr(Form1->Height).c_str(); + sit["MainWidth"] = IntToStr(Form1->Width).c_str(); + sit["TextComHeight"] = IntToStr(pnlTextCom->Height).c_str(); + sit["TextWidth"] = IntToStr(pnlText->Width).c_str(); + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + AnsiString s1; + char *font; + int val; + int loop; + int maxFiles; + + mainmgr = new BibleCSMGR(ModInstFrm); +// textTabs = new TModTabPanel(this, mainmgr, "Biblical Texts"); +// textTabs->Align = alClient; +// textTabs->Parent = pnlText; +// logmodstate = true; +// freshdict = true; +// if ((maxFiles = atoi(optionsconf->Sections["System"]["MaxFiles"].c_str()))) { +// FileMgr::systemFileMgr.maxFiles = maxFiles; +// } + +// DefaultVSKey = TOP; +// DefaultVSKey = "Genesis 1:1"; +// cbBook->Clear(); +/* + while (!DefaultVSKey.Error()) { + s1 = (const char *)DefaultVSKey; + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + DefaultVSKey.Book(DefaultVSKey.Book() + 1); + } + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey.Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey.Persist(1); + DefaultStrKey = ""; + Hint = ""; + ShowHint = true; + Application->ShowHint = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + if (val = atoi((*sit).second["MainTop"].c_str())) + Form1->Top = val; + if (val = atoi((*sit).second["MainLeft"].c_str())) + Form1->Left = val; + if (val = atoi((*sit).second["MainHeight"].c_str())) + Form1->Height = val; + if (val = atoi((*sit).second["MainWidth"].c_str())) + Form1->Width = val; + if (val = atoi((*sit).second["TextComHeight"].c_str())) + pnlTextCom->Height = val; + if (val = atoi((*sit).second["TextWidth"].c_str())) + pnlText->Width = val; + } + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + ImageList2->Add(BookmarkBtnImage->Picture->Bitmap, NULL); +*/ +} + + +//void __fastcall TForm1::CreateWnd() { +// TForm::CreateWnd(); + +/* + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + font = 0; + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + CreateTextPane((*it).second, font); + } + if (!strcmp((*it).second->Type(), "Commentaries")) + CreateCommentPane((*it).second); + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + CreateLDPane((*it).second); + } +*/ +//} + +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = ((*it).second)->KeyText(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + if (state) { + state->pc->ActivePage = state->ap; +// if ((state->pc == PageControl1) || (state->pc == PageControl2)) { +// DefaultVSKey = state->key; +// TextKeyChanged(); +// } + if (state->pc == PageControl3) { + DictKeyEdit->Text = (const char *)state->key; + } + if (state->pc->ActivePage->ControlCount) + Form1->ActiveControl = (TWinControl *)state->pc->ActivePage->Controls[0]; + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list <ModState *>::iterator it; + + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list <ModState *>::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + DefaultVSKey = menuchoice->Caption.c_str(); + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + Bookmarksfrm->bmtree->Items->AddChild(Bookmarksfrm->bmtree->Items->Item[0], (const char *)DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup; + TPoint point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, Bookmarksfrm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + Bookmarksfrm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = textTabs->pageControl; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == PageControl2) || (IsChild(PageControl2->Handle, Screen->ActiveControl->Handle))) + pc = PageControl2; + if ((Screen->ActiveControl == PageControl3) || (IsChild(PageControl3->Handle, Screen->ActiveControl->Handle))) + pc = PageControl3; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap emap; + int color; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + Optionsfrm->CurrentVSColor->Brush->Color = atoi((*sit).second["CurrentVSColorRed"].c_str()) + | (atoi((*sit).second["CurrentVSColorGreen"].c_str()) << 8) + | (atoi((*sit).second["CurrentVSColorBlue"].c_str()) << 16); + Optionsfrm->AutoVSColor->Checked = ((atoi((*sit).second["AutoVSColor"].c_str()))?true:false); + } + + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi((*sit).second["AutoSavePersonal"].c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi((*sit).second["AutoSaveOther"].c_str()))?true:false); + } + + if (Optionsfrm->ShowModal() == mrOk) { + emap = optionsconf->Sections["Appearance"]; + color = Optionsfrm->CurrentVSColor->Brush->Color; + emap["CurrentVSColorRed"] = IntToStr(color & 0xFF).c_str(); + emap["CurrentVSColorGreen"] = IntToStr((color >> 8) & 0xFF).c_str(); + emap["CurrentVSColorBlue"] = IntToStr((color >> 16) & 0xFF).c_str(); + emap["AutoVSColor"] = IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str(); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["Bookmarks"]; + emap["AutoSavePersonal"] = IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str(); + emap["AutoSaveOther"] = IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str(); + optionsconf->Sections["Bookmarks"] = emap; + + optionsconf->Save(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) +{ + + int versestart, verseend; + TMenuItem * newitem; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + + if (menu == PopupMenu1) + staticMenuItemsCount = 3; + else if (menu == PopupMenu2) + staticMenuItemsCount = 2; + else if (menu == PopupMenu3) + staticMenuItemsCount = 6; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < rtf->Text.Length())&&(rtf->Text[verseend] != '|')); verseend++); + if ((verseend < rtf->Text.Length()) && (verseend > rtf->SelStart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &rtf->Text.c_str()[versestart], len - 2); // strip the # and | from the string + tmpVerseList = VerseKey::ParseVerseList(buf, DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + delete [] buf; + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = "Create Verse List"; + newitem->Hint = "Create a New Verse List Window"; + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + versestart = 3; + while (!tmpVerseList.Error()) { + versestart++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(versestart%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + } + } + } + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = VerseKey::ParseVerseList(freeHandLookup->Text.c_str(), DefaultVSKey); + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + if (tmpVerseList.Count()) { + tmpVerseList = TOP; + DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntry->Module = module = (*target).second; + EditEntry->RTFDisplay = rtf; + } + else EditEntry->Module = module = 0; + EditEntry->ShowModal(); + if (EditEntry->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntry->ResultBuf; + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->Delete(); + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(PageControl2); + } +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.dfm b/apps/windoze/CBuilder4/prototype/mainfrm.dfm Binary files differnew file mode 100644 index 0000000..2b4f1e8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mainfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.h b/apps/windoze/CBuilder4/prototype/mainfrm.h new file mode 100644 index 0000000..b8e7433 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mainfrm.h @@ -0,0 +1,238 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\ComCtrls.hpp> +#include <swmgr.h> +#include <swtext.h> +#include <strkey.h> +#include <regex.h> +#include <listkey.h> +#include "swdisprtfchap.h" +#include <vcl\Buttons.hpp> +#include <vcl\Menus.hpp> +#include <vcl\DdeMan.hpp> +//#include <NMHTML.hpp> +#include <OleCtrls.hpp> +#include <ToolWin.hpp> +//#include <vcl\isp.hpp> +#include <shellapi.h> +#include <Graphics.hpp> +#include <ImgList.hpp> +#include <list> +#include <vector> +#include "TextPanel.h" +#include "ModTabPanel.h" + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +/* +class HREFDisp : public SWDisplay { + THTML *edit; +public: + HREFDisp(THTML *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + edit->RequestDoc((char *)imodule); + } +}; +*/ + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *PageControl2; + TStatusBar *StatusBar1; + TPageControl *PageControl3; + + TPanel *pnlDictHeader; + TLabel *Label1; + TRichEdit *DictKeyEdit; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TEdit *freeHandLookup; + TPopupMenu *PopupMenu3; + TMenuItem *MenuItem2; + TMenuItem *MenuItem3; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TUpDown *UpDown3; + void __fastcall PageControl1Change(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall PageControl2Change(TObject *Sender); + + + + void __fastcall DictKeyEditChange(TObject *Sender); + void __fastcall PageControl3Change(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall DisplayHint(TObject* Sender) ; + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + +private: // User declarations + list <SWDisplay *> displays; // so we can delete each display we create + list <ModState *> modstates; + vector <ModState *> ctrlstates; + bool logmodstate; + bool freshdict; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); + void PushState(); + void BackState(); + void ForwardState(); + void BuildRTFHeader(char *buf, char *font, int max); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + +public: // User declarations + TModTabPanel *textTabs; + VerseKey DefaultVSKey; + SWKey DefaultStrKey; + SWMgr *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); +// virtual void __fastcall CreateWnd(); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + ListKey tmpVerseList; + String tmpVerseListCaption; +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/mods.conf b/apps/windoze/CBuilder4/prototype/mods.conf new file mode 100644 index 0000000..aaf29df --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mods.conf @@ -0,0 +1,465 @@ +[Globals] +;AutoInstall=./newmods/ + +[-+*Personal*+-] +DataPath=../../../../modules/comments/rawfiles/personal/ +ModDrv=RawFiles +Description=Personal Commentary +About=This module allows you to store your own commentary. + +[SpanishRVA] +DataPath=../../../../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=../../../../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=../../../../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=../../../../modules/comments/hrefcom/jfb/ +ModDrv=HREFCom +Prefix=http://ccel.wheaton.edu/j/jfb/jfb/ +;External=0 +;Prefix=file:///../../../../modules/comments/hrefcom/jfb/ +External=1 +Description=Jamison Faucett Brown Bible Commentary +About=\qc Jamison Faucett Brown Commentary + + +[Naves] +DataPath=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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=../../../../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/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp b/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//---------------------------------------------------------------------------
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm b/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm Binary files differnew file mode 100644 index 0000000..1e88bcd --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/newbmfilefrm.h b/apps/windoze/CBuilder4/prototype/newbmfilefrm.h new file mode 100644 index 0000000..9b4c017 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *Button1; + TButton *Button2; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.cpp b/apps/windoze/CBuilder4/prototype/optionfrm.cpp new file mode 100644 index 0000000..8af047a --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/optionfrm.cpp @@ -0,0 +1,20 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "optionfrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::ChooseColorbtnClick(TObject *Sender) +{ + ColorDialog1->Execute(); + CurrentVSColor->Brush->Color = ColorDialog1->Color; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.dfm b/apps/windoze/CBuilder4/prototype/optionfrm.dfm Binary files differnew file mode 100644 index 0000000..0b20318 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/optionfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.h b/apps/windoze/CBuilder4/prototype/optionfrm.h new file mode 100644 index 0000000..1ea8f08 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/optionfrm.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include <vcl\Dialogs.hpp> +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TGroupBox *GroupBox1; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *GroupBox2; + TCheckBox *AutoVSColor; + TShape *CurrentVSColor; + TColorDialog *ColorDialog1; + TButton *ChooseColorbtn; + TPanel *Panel2; + TButton *Button1; + TPanel *Panel3; + TButton *Button2; + TLabel *Label1; + void __fastcall ChooseColorbtnClick(TObject *Sender); + +private: // User declarations +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/options.conf b/apps/windoze/CBuilder4/prototype/options.conf new file mode 100644 index 0000000..db0e4ce --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/options.conf @@ -0,0 +1,15 @@ + +[Appearance] +AutoVSColor=1 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=0 + +[Bookmarks] +AutoSaveOther=1 +AutoSavePersonal=1 +Directory= + +[System] +MaxFiles=40 + diff --git a/apps/windoze/CBuilder4/prototype/search.bmp b/apps/windoze/CBuilder4/prototype/search.bmp Binary files differnew file mode 100644 index 0000000..ee693be --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/search.bmp diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.cpp b/apps/windoze/CBuilder4/prototype/searchfrm.cpp new file mode 100644 index 0000000..c5b29b2 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/searchfrm.cpp @@ -0,0 +1,95 @@ +//--------------------------------------------------------------------------- +#include <vcl\vcl.h> +#pragma hdrstop + +#include "searchfrm.h" +#include <listkey.h> +#include "mainfrm.h" +#include <regex.h> + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm2 *Form2; +//--------------------------------------------------------------------------- +__fastcall TForm2::TForm2(TComponent* Owner) + : TForm(Owner) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +// pvrtf->PopupMenu = PopupMenu2; + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::Button1Click(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + Caption = ""; + + + targetpc = Form1->textTabs->pageControl; + + if ((Form1->ActiveControl == Form1->PageControl2) || (IsChild(Form1->PageControl2->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl2; + if ((Form1->ActiveControl == Form1->PageControl3) || (IsChild(Form1->PageControl3->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl3; + + + target = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + Caption = Caption + "Searching [" + (*target).first.c_str() + "]..."; + ListBox1->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (CheckBox2->Checked) ? 0 : REG_ICASE; + ListKey &results = (*target).second->Search(SearchText->Text.c_str(), searchType, searchOptions); + while (!results.Error()) { + ListBox1->Items->Add((const char *)results); + results++; + } +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + Caption = ""; + Caption = Caption + "Results from [" + (*target).first.c_str() + "] (" + ListBox1->Items->Count + ((ListBox1->Items->Count == 1) ? " match)" : " matches)"); + } + else Caption = "Error finding target module"; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1DblClick(TObject *Sender) +{ + if (targetpc == Form1->PageControl3) { + Form1->DictKeyEdit->Text = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + } + else { + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1Click(TObject *Sender) +{ + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.dfm b/apps/windoze/CBuilder4/prototype/searchfrm.dfm Binary files differnew file mode 100644 index 0000000..9c366d8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/searchfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.h b/apps/windoze/CBuilder4/prototype/searchfrm.h new file mode 100644 index 0000000..a50ee44 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/searchfrm.h @@ -0,0 +1,44 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include <vcl\Classes.hpp> +#include <vcl\Controls.hpp> +#include <vcl\StdCtrls.hpp> +#include <vcl\Forms.hpp> +#include <vcl\ExtCtrls.hpp> +#include "mainfrm.h" +#include <swmgr.h> +//--------------------------------------------------------------------------- +class TForm2 : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TListBox *ListBox1; + TPanel *Panel3; + TMemo *SearchText; + TPanel *plPreview; + TRadioGroup *searchTypeGroup; + TGroupBox *GroupBox1; + TCheckBox *CheckBox2; + TPanel *Panel4; + TButton *Button1; + TSplitter *Splitter1; + void __fastcall Button1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; +public: // User declarations + ModMap::iterator target; + TPageControl *targetpc; +// AnsiString CapText; + + __fastcall TForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm2 *Form2; +//--------------------------------------------------------------------------- +#endif +
\ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/sword.bpr b/apps/windoze/CBuilder4/prototype/sword.bpr new file mode 100644 index 0000000..b913721 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/sword.bpr @@ -0,0 +1,223 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = sword.exe +OBJFILES = sword.obj mainfrm.obj ModInstForm.obj ..\..\swdisprtf.obj \ + ..\..\swdisprtfchap.obj ..\..\swwinlog.obj ..\..\tbdisp.obj searchfrm.obj \ + editentryfrm.obj biblecsmgr.obj bookmarkfrm.obj AboutBoxfrm.obj optionfrm.obj \ + vrslstfrm.obj versesel.obj newbmfilefrm.obj CommentPanel.obj ModTabPanel.obj \ + AppBar.obj \ + "..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.obj" \ + BookMarkPanel.obj TextPanel.obj LDPanel.obj DeskTopNameForm.obj +RESFILES = sword.res +RESDEPEN = $(RESFILES) mainfrm.dfm ModInstForm.dfm searchfrm.dfm editentryfrm.dfm \ + bookmarkfrm.dfm AboutBoxfrm.dfm optionfrm.dfm vrslstfrm.dfm versesel.dfm \ + newbmfilefrm.dfm AppBar.dfm \ + "..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.dfm" \ + DeskTopNameForm.dfm +LIBFILES = swordlib.lib +IDLGENFILES = +IDLFILES = +LIBRARIES = dclusr40.lib Vclx40.lib Vcl40.lib +SPARELIBS = Vcl40.lib Vclx40.lib dclusr40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi Vclmid40.bpi Vcldb40.bpi bcbsmp40.bpi \ + vcldbx40.bpi Qrpt40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi Dss40.bpi ibsmp40.bpi \ + NMFast40.bpi Inetdb40.bpi Inet40.bpi dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..;..\..\..\..\..\..\..\Program Files\Common Files\Borland \ + Shared\Images\Buttons +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi- -c -b- -w-par -w-inl -Vx \ + -tW -tWM -D$(SYSDEFINES);$(USERDEFINES) +IDLCFLAGS = -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons" \ + -I..\.. -I$(BCB)\include -I$(BCB)\include\vcl -I..\..\..\..\include \ + -src_suffixcpp +PFLAGS = -U"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";$(BCB)\Projects\Lib;"..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib";..\..;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +AFLAGS = /i"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons" \ + /i..\.. /i$(BCB)\include /i$(BCB)\include\vcl /i..\..\..\..\include /mx /w2 /zn +LFLAGS = -L"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";$(BCB)\Projects\Lib;"..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib";..\..;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item2=$(BCB)\include;$(BCB)\include\vcl;../../../../include + +[HistoryLists\hlLibraryPath] +Count=3 +Item0=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;$(BCB)\Projects\Lib;..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib;..\..;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..;$(BCB)\lib\obj;$(BCB)\lib +Item2=$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +!if !$d(IDL2CPP) +IDL2CPP = idl2cpp +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/sword.cpp b/apps/windoze/CBuilder4/prototype/sword.cpp new file mode 100644 index 0000000..e6faae7 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/sword.cpp @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USELIB("swordlib.lib"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEFORM("searchfrm.cpp", Form2); +USEFORM("editentryfrm.cpp", EditEntry); +USEUNIT("biblecsmgr.cpp"); +USEFORM("bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("versesel.cpp", VerseSelFrm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEUNIT("CommentPanel.cpp"); +USEUNIT("ModTabPanel.cpp"); +USEFORM("AppBar.cpp", AppBarFrm); +USEFORM("..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.cpp", DockCanvasFrm); +USEUNIT("BookMarkPanel.cpp"); +USEUNIT("TextPanel.cpp"); +USEUNIT("LDPanel.cpp"); +USEFORM("DeskTopNameForm.cpp", DeskTopNameFrm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TAppBarFrm), &AppBarFrm); + Application->CreateForm(__classid(TDeskTopNameFrm), &DeskTopNameFrm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/prototype/sword.res b/apps/windoze/CBuilder4/prototype/sword.res Binary files differnew file mode 100644 index 0000000..32b522d --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/sword.res diff --git a/apps/windoze/CBuilder4/prototype/swordlib.bpr b/apps/windoze/CBuilder4/prototype/swordlib.bpr new file mode 100644 index 0000000..55d34f7 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordlib.bpr @@ -0,0 +1,214 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = swordlib.lib +OBJFILES = swordlib.obj ..\..\..\..\src\mgr\swmgr.obj ..\..\..\..\src\mgr\swconfig.obj \ + ..\..\..\..\src\mgr\filemgr.obj ..\..\..\..\src\keys\versekey.obj \ + ..\..\..\..\src\keys\swkey.obj ..\..\..\..\src\keys\listkey.obj \ + ..\..\..\..\src\keys\strkey.obj ..\..\..\..\src\utilfuns\utilstr.obj \ + ..\..\..\..\src\utilfuns\utilconf.obj ..\..\..\..\src\utilfuns\Greek2Greek.obj \ + ..\..\..\..\src\frontend\swlog.obj ..\..\..\..\src\frontend\swdisp.obj \ + ..\..\..\..\src\modules\common\rawstr.obj \ + ..\..\..\..\src\modules\common\rawverse.obj \ + ..\..\..\..\src\modules\common\swcomprs.obj \ + ..\..\..\..\src\modules\comments\swcom.obj \ + ..\..\..\..\src\modules\comments\hrefcom\hrefcom.obj \ + ..\..\..\..\src\modules\comments\rawcom\rawcom.obj \ + ..\..\..\..\src\modules\comments\rawfiles\rawfiles.obj \ + ..\..\..\..\src\modules\filters\rwprtf.obj \ + ..\..\..\..\src\modules\filters\gbfrtf.obj \ + ..\..\..\..\src\modules\filters\gbfplain.obj \ + ..\..\..\..\src\modules\lexdict\swld.obj \ + ..\..\..\..\src\modules\lexdict\rawld\rawld.obj \ + ..\..\..\..\src\modules\texts\swtext.obj \ + ..\..\..\..\src\modules\texts\rawgbf\rawgbf.obj \ + ..\..\..\..\src\modules\texts\rawtext\rawtext.obj \ + ..\..\..\..\src\modules\swmodule.obj +DEFFILE = +LIBFILES = +RESDEPEN = $(RESFILES) +RESFILES = +IDLGENFILES = +IDLFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..\..\..\src\mgr;..\..\..\..\src\keys;..\..\..\..\src\utilfuns;..\..\..\..\src\frontend;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules +PATHASM = .; +PATHPAS = .; +PATHRC = .; +USERDEFINES = +SYSDEFINES =NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi- -c -b- -w-par -w-inl -Vx \ + -tWM -D$(SYSDEFINES);$(USERDEFINES) +IDLCFLAGS = -I..\..\..\..\src\modules\texts\rawtext -I..\..\..\..\src\modules\texts\rawgbf \ + -I..\..\..\..\src\modules\texts -I..\..\..\..\src\modules\lexdict\rawld \ + -I..\..\..\..\src\modules\lexdict -I..\..\..\..\src\modules\filters \ + -I..\..\..\..\src\modules\comments\rawfiles \ + -I..\..\..\..\src\modules\comments\rawcom \ + -I..\..\..\..\src\modules\comments\hrefcom -I..\..\..\..\src\modules\comments \ + -I..\..\..\..\src\modules\common -I..\..\..\..\src\modules \ + -I..\..\..\..\src\frontend -I..\..\..\..\src\utilfuns -I..\..\..\..\src\keys \ + -I..\..\..\..\src\mgr -I..\..\..\..\include -I$(BCB)\include \ + -I$(BCB)\include\vcl -src_suffixcpp +PFLAGS = -U..\..\..\..\src\modules;$(DEBUGLIBPATH) \ + -I..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -JPHN -M +AFLAGS = /i..\..\..\..\src\modules\texts\rawtext /i..\..\..\..\src\modules\texts\rawgbf \ + /i..\..\..\..\src\modules\texts /i..\..\..\..\src\modules\lexdict\rawld \ + /i..\..\..\..\src\modules\lexdict /i..\..\..\..\src\modules\filters \ + /i..\..\..\..\src\modules\comments\rawfiles \ + /i..\..\..\..\src\modules\comments\rawcom \ + /i..\..\..\..\src\modules\comments\hrefcom /i..\..\..\..\src\modules\comments \ + /i..\..\..\..\src\modules\common /i..\..\..\..\src\modules \ + /i..\..\..\..\src\frontend /i..\..\..\..\src\utilfuns /i..\..\..\..\src\keys \ + /i..\..\..\..\src\mgr /i..\..\..\..\include /i$(BCB)\include \ + /i$(BCB)\include\vcl /mx /w2 /zn +RFLAGS = -i..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = /P64 +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project makefile is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(LIBFILES) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/swordlib.cpp b/apps/windoze/CBuilder4/prototype/swordlib.cpp new file mode 100644 index 0000000..258a253 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordlib.cpp @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawgbf\rawgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder4/prototype/swordprj.bpg b/apps/windoze/CBuilder4/prototype/swordprj.bpg new file mode 100644 index 0000000..0333c75 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordprj.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib sword.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +swordlib.lib: swordlib.bpr + $(MAKE) + +sword.exe: sword.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/prototype/versesel.cpp b/apps/windoze/CBuilder4/prototype/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "versesel.h" +#include <versekey.h> +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/versesel.dfm b/apps/windoze/CBuilder4/prototype/versesel.dfm Binary files differnew file mode 100644 index 0000000..4502433 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/versesel.dfm diff --git a/apps/windoze/CBuilder4/prototype/versesel.h b/apps/windoze/CBuilder4/prototype/versesel.h new file mode 100644 index 0000000..b4c1981 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *Button1; + TButton *Button2; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp b/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp new file mode 100644 index 0000000..f20e6a8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp @@ -0,0 +1,50 @@ +//--------------------------------------------------------------------------- +#include <vcl.h> +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) +{ + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->textTabs->pageControl->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm b/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm Binary files differnew file mode 100644 index 0000000..2b2af74 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.h b/apps/windoze/CBuilder4/prototype/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif |