[sword-devel] Here's a quick sample of a BCB6 front-end I'm developing for personal research using CLX
Martin Gruner
sword-devel@crosswire.org
Sat, 10 Apr 2004 20:26:21 +0200
Thanks for you willingness to contribute, to help others.
May I suggest that you use the wiki for your documentation?
http://www.crosswire.org/ucgi-bin/twiki/view/Swordwin/WebHome
It allows you to update your docs without loosing older content (version
control) and does also allow for collaboration.
Martin
Am Freitag, 9. April 2004 17:02 schrieb Jonathan Mickelson:
> Yes, I'm using the SWORD API. I'm using standard sword-api calls; very
> simple when you're back down to the basics.
>
> My objective publicly is to become a helpful, contributing member of
> Crosswire and the sword project.
> At the moment, this means developing some simple working examples of
> sword-api in use that can be employed by interested parties with various
> levels of programming skills. I want the examples to show the
> minimalist approach to having a working program that can then be
> enhanced, hacked, etc. Having something working in your hands is very
> satisfying.
>
> My personal objectives, for my inhouse program (PlowShare), is to
> develop my dream bible tool considering my own goals and desires and not
> for public release (too many support issues/questions/complaints for a
> personal tool). When some UI feature works real well, I'll add it to
> the list of tips and tricks. I greatly prefer CLX over VCL primarily
> because CLX has an HTML widget that has made that first screen shot
> possible with 10-15 of coding (once the development environment is setup
> properly).
>
> The screen shot was to garner interest in the Sword API and this
> "tutorial".
>
> The rest of this text is from a previous posting. My preference is too
> have some other develops from scratch also, compare notes and make sure
> we have all the information corrected and documented for others. So, I
> will help you.
> -----------
> This thread will archive the neccesary steps to compile your own Sword
> Project from scratch using BCB 6.0
>
> Later, this material will be consolidated into a tutorial.
>
> Create a new Borland BCB 6 project
> [I am building a CLX project though either CLX or VCL (standard) may be
> used. ]
>
> 1) modify the Project Options dialog box.
> TAB "Directories/Conditional"
>
> Include Path =
> $(BCB)\include
> $(BCB)\include
> ..\..\sword\include
> ..\..\icu-sword\source\common
> ..\..\icu-sword\source\i18n
>
> Library Path =
> $(BCB)\lib\obj
> $(BCB)\lib
> ..\..\icu-sword\as_is\borland
> ..\..\sword\lib
>
> Conditional Defines (VERY IMPORTANT)
> _DEBUG
> _ICU_
> _ICUSWORD_
> _USE_OLD_RW_STL
> U_HAVE_PLACEMENT_NEW=0
>
> 2) here is my simple program to display module names and descriptions on
> a form.
> //-------------
> // download and install BibleCS 1.5.6. This creates all the proper
> production directories.
> // download some bible modules
> // test that BibleCS is working properly
> //-------------
> // Add a memo component to the form (it's under the "Standard" tab)
> // Create Form Events for OnDestroy and OnShow
> // judiciously use the code below putting things in their proper place
> // compile and run
> // the form should appear with a list of module names and descriptions
> //-------------
> #include <clx.h> // used for CLX projects
> #pragma hdrstop
>
> #include "MySampleProject.h"
> #include <string>
> #include <swmgr.h>
> #include <swconfig.h>
> #include <markupfiltmgr.h>
>
> #define WM_VERSE (WM_APP + 1995)
> extern AnsiString startVerse;
>
> using namespace sword;
> //-------------------------------------------------------------------------
>--
>
> //#pragma package(smart_init)
> #pragma resource "*.xfm"
>
> SWConfig *userPrefs;
> SWMgr *mainmgr;
> SWConfig *optionsconf;
>
>
> TForm1 *Form1;
> //-------------------------------------------------------------------------
>--
>
> __fastcall TForm1::TForm1(TComponent* Owner)
>
> : TForm(Owner)
>
> {
> }
> //-------------------------------------------------------------------------
>--
>
> void __fastcall TForm1::FormDestroy(TObject *Sender)
> {
> if (mainmgr)
> delete mainmgr;
> if (userPrefs)
> {
> userPrefs->Save();
> delete userPrefs;
> }
> if (optionsconf)
> delete optionsconf;
> }
> //-------------------------------------------------------------------------
>--
>
> void __fastcall TForm1::FormShow(TObject *Sender)
> {
> // MyLibrary = new SWMgr(0, 0, true, new
> MarkupFilterMgr(FMT_HTMLHREF, ENC_HTML));
>
> ModMap::iterator it;
> SWModule *MyMod;
>
> optionsconf = new SWConfig("./options.conf");
>
> try
> {
> mainmgr = new SWMgr(0, 0, false, new MarkupFilterMgr(FMT_RTF,
> ENC_RTF));
> userPrefs = 0;
> mainmgr->Load();
>
> userPrefs = new SWConfig("./userprefs.conf");
> if ((mainmgr->config) && (userPrefs))
> (*(mainmgr->config)) += (*userPrefs);
> }
> catch (...)
> {
> Application->Terminate();
> }
>
> if (!mainmgr->config)
> Application->Terminate();
>
> for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++)
> {
> MyMod = (*it).second;
> if (!strcmp((*it).second->Type(), "Biblical Texts"))
> {
> Memo1->Lines->Append(MyMod->Name());
> Memo1->Lines->Append(MyMod->Description());
> }
> }
> }
> //----------------
> // End of code
> //----------------
>
>
>
> _______________________________________________
> sword-devel mailing list
> sword-devel@crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel