[sword-devel] Tagging verses and verse lists
SonWon
sonwon.1 at gmail.com
Sat Mar 7 15:59:19 MST 2009
I confess I didn't read through the whole thread. I just wanted to say
whatever we do with bookmarks we should be able to organize them into
groups. I would recommend main category and sub. Also to be able to
setup as Bible studies to share. I'll go back to lurking now.
Peter von Kaehne wrote:
> The thread I pull up here has some relevance
>
> 1) it was never concluded in theory and certainly no conclusions ever
> put into practice
> 2) With more and more applications becoming crossplatform there will be
> a growing and quite reasonable expectation by users to switch
> applications and be able to make use of their old bookmarks in some form.
> 3) looking at the wiki page on comparison, it is clear that there is a
> semblance of practical consensus between the various implementations of
> the feature
>
> a) bookmarks should be hierarchical,
> b) should be user editable/arrangable,
> c) should allow for some comment
> d) should allow both bulk addition via searches and by-hand addition
> e) should be exportable/sharable
>
> Eeli suggested in this thread that an editable GenBook with some special
> features is the overarching best representation. I agree with this and
> suggested the same on gnomesword-devel, where Eeli referred me back to
> this old thread.
>
> So, is it time to resume the debate and bring it to a conclusion?
>
> Peter
>
>
>
> Troy A. Griffitts wrote:
>
>> Martin Gruner wrote:
>>
>>> Will this be a part of Sword?
>>>
>>> Troy, what do you say?
>>>
>> Since most of our frontends have some type of verse list functionality,
>> I would like for us to have something common in the engine we can all
>> use. This will also benefit our users, allowing them to share these
>> between applications. We would all have to agree on an interface
>> though, so I'd appreciate hearing from other frontend developers on the
>> proposed functionality and interface. I would be particularly
>> interested in whether you think a 'list' concept meets enough needs to
>> warrant a mechanism. BibleCS has basic verse lists, and also bookmark
>> trees. The bookmark trees seem more useful to me, but I would not have
>> a straight forward path to modify BibleCS to use a 'PassageList'
>> mechanism for trees.
>>
>> I have some other comments below.
>>
>>
>> SWMgr is probably not the best place for this functionality. SWMgr was
>> our first 'manager' create 15+ years ago, and now that the engine has
>> grown considerably, this should probably be renamed to something like
>> SWModuleMgr, as its main purpose is to be a factory to hand back virtual
>> base SWModule * objects.
>>
>> Are we planning to handle any type of key lists with this interface?
>> e.g., both Verse and GenBook references?
>>
>> We also try to keep the std namespace out of the public interfaces the
>> best we can. It makes bindings easier to implement, thus, where the
>> interface methods accept std::string, they should accept const char * or
>> SWBuf if they are intentionally non-const.
>>
>>
>> I would suggest something like:
>>
>> class KeyListMgr {
>> public:
>> KeyListMgr(cont char *configPath);
>> }
>>
>> modeled after the LocaleMgr.
>>
>> This would add a new subdirectory to our config root (along with
>> mods.d/, modules/, locales.d/), something like keylists.d/, and I'm sure
>> everyone would like to honor a ~/.sword/keylists.d/ as well.
>>
>> If we are planning to go all out and extend the list interface to a tree
>> interface, maybe a more generic name like BookmarkMgr would be better
>> suited.
>>
>> I realize this doesn't map directly to the purpose that Jonathan
>> intended. I don't know if there is an easy delineation to give us
>> multiple uses.
>>
>> Just my initial thoughts. Looking forward to the conversation.
>>
>> -Troy.
>>
>>
>>
>>
>>
>>>> PassageList API:
>>>> typedef PassageListMap std::map<std::string, sword::PassageList>;
>>>>
>>>> /**
>>>> Returns the passage list map, which maps unique names to passage lists.
>>>> */
>>>> PassageListMap SWMgr::getPassageLists();
>>>>
>>>> /**
>>>> Creates a new passage list with the given name, and adds it to the
>>>> passage list map.
>>>> There must not already be a passage list with the given name.
>>>> */
>>>> PassageList SWMgr::addPassageList(std::string name);
>>>>
>>>> /**
>>>> Creates a new passage list with the given name, and initialises it with the
>>>> given list of passages.
>>>> */
>>>> PassageList SWMgr::addPassageList(std::string name, ListKey passages);
>>>>
>>>> /**
>>>> Removes the given passage list.
>>>> Returns true on success, and false on failure.
>>>> */
>>>> bool SWMgr::removePassageList(PassageList);
>>>>
>>>> /**
>>>> Removes the passage list with the given name.
>>>> Returns true on success, and false on failure.
>>>> */
>>>> bool SWMgr::removePassageList(std::string name);
>>>>
>>>> /**
>>>> A passage list must have a unique name to identify itself.
>>>> It may also have a description of the list, which can be used by the user.
>>>> */
>>>> PassageList
>>>> ===========
>>>> PassageList::get/setName()
>>>> PassageList::get/setDescription()
>>>>
>>>> /**
>>>> Adds the given passage to the end of the passage list.
>>>> */
>>>> PassageList::addPassage(PassageEntry passage);
>>>> PassageList::addPassage(VerseKey passage);
>>>> PassageList::moveUp(int index);
>>>> PassageList::moveDown(int index);
>>>>
>>>> /**
>>>> Removes the given passage entry from the list.
>>>> */
>>>> PassageList::removePassage(PassageEntry passage)
>>>> PassageList::removePassage(int index)
>>>>
>>>> /**
>>>> Sorts the passage list. At present, this will only support sorting it in
>>>> canonical order, but in the future, other sort orders may be supported.
>>>> */
>>>> void PassageList::sort(PassageListSortOrder order)
>>>>
>>>> /**
>>>> Gets a list key with all the passages in the passage list.
>>>> */
>>>> ListKey PassageList::getListKey();
>>>>
>>>> /**
>>>> Creates a new passage list with the same passages as this passage list, but
>>>> with the given new name.
>>>> */
>>>> PassageList PassageList::clone(std::string newName)
>>>>
>>>> /**
>>>> Returns true if the given verse is contained in the passage list.
>>>> */
>>>> boolean PassageList::containsVerse(VerseKey verse)
>>>>
>>>> /**
>>>> This class wraps around a VerseKey to allow additional attributes to be
>>>> attached to an entry in a passage list. At present, the main addition that
>>>> is planned is attaching comments to passage entries.
>>>> */
>>>> PassageEntry
>>>> ============
>>>> /**
>>>> Creates a passage entry from the given verse.
>>>> */
>>>> PassageEntry(VerseKey verse)
>>>>
>>>> /**
>>>> VerseKey PassageEntry::get/setPassage()
>>>>
>>>> /**
>>>> For later extension.
>>>> */
>>>> std::string PassageEntry::get/setComment()
>>>>
>>>> _______________________________________________
>>>> sword-devel mailing list: sword-devel at crosswire.org
>>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>>> Instructions to unsubscribe/change your settings at above page
>>>>
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20090307/9ad9bff9/attachment.html>
More information about the sword-devel
mailing list