--- On Sun, 11/1/09, Greg Hellings <greg.helli...@gmail.com> wrote: > From: Greg Hellings <greg.helli...@gmail.com> > Subject: Re: [sword-devel] Understanding the structure of generic books and > their relationship with TreeKey. > To: "SWORD Developers' Collaboration Forum" <sword-devel@crosswire.org> > Date: Sunday, November 1, 2009, 5:33 PM > Rendezvous, > > On Sun, Nov 1, 2009 at 4:01 PM, Rendezvous <junk_and_m...@yahoo.com> > wrote: > > Through browsing through some source code i've managed > to figure out that you need to convert a SWKey > (SWModule::getKey()) to a TreeKey to be able to iterate > through the sections/chapters of a GenBook. However, i have > yet to figure out how to obtain the children for each > section/chapter. Rather than taking a guess with trial and > error and searching through more Sword frontends' source > code, i would prefer to have a _full_ understanding on how > Sword handles GenBooks and how frontends can make use of > those methods. > > > > My questions: Is TreeKey the only way to obtain the > sections/chapters of a Genbook? And how do i get a list of > the children for each section/chapter? Am i right to assume > that i have to use SWModule::setKey() to set the current key > to one of the root sections and then re-cast > SWModule::getKey() to a TreeKey and iterate through that? Or > is another method required? > > > > > > You might want to look into the documentation on > http://www.crosswire.org/~ghellings/1_6_0classdocs/ for > version 1.6.0 > of the engine. Particularly look under > TreeKey::firstChild() and > TreeKey::nextSibling/previousSibling. > > --Greg >
The code i was using already made use of those methods. However, i could go down no further than the root level. I am wondering how to obtain the children for the keys i've only been able to get. Here's is the current, relevant part of the code i am using: // { QList<DSword::TreeNode> sectionsList; sword::TreeKey *tk = dynamic_cast<sword::TreeKey*>(swModule->getKey()); if (tk->firstChild()) { while (tk->nextSibling()) { DSword::TreeNode node; node.name = tk->getText(); node.parent = NULL; sectionsList << node; } } return sectionsList; } // Let's say i load the English GenBook, "Immitation." I only get the following: /Foreword /Book 1 /Book 2 /Book 3 /Book 4 though the last four have children. Trying to figure out how to obtain the children through trial and error have so far led me no where. _______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page