Ejemplo n.º 1
0
    def replace_bible_links(match):
        ref = match.group(1)
        #print "Replacing bible link", ref
        vk = VK(ref)

        return "href='book_%s.html#%s_start'" % (vk.getOSISBookName(),
                                                 vk.getOSISRef())
Ejemplo n.º 2
0
 def new_guess(self):
     self.key = None
     while not self.key or not biblemgr.bible.mod.hasEntry(self.key):
         randomnum = random.randint(1, 31102)
         self.key = VK("Gen 1:%d" % randomnum)
     self.user_key = UserVK(self.key)
     self.reference_frame.SetReference(self.key.getText())
Ejemplo n.º 3
0
    def SetReference(self, ref, ref_to_scroll_to=None, settings_changed=False):
        """Sets reference. This is set up to be an observer of the main frame,
		so don't call internally. To set verse reference, use notify"""
        self.reference = GetVerseStr(ref)

        has_selected_new_verse = False
        # If the settings have changed we want to do a complete reload anyway
        # (since it could be something that requires a complete reload, such as changing version).
        if self.dom_loaded:
            if settings_changed:
                self.reference, ref_to_scroll_to = self.GetCurrentReferenceAndPosition(
                )
            else:
                osisRef = VK(self.reference).getOSISRef()
                has_selected_new_verse = self.ExecuteScriptWithResult(
                    'select_new_verse("%s")' % osisRef)
                has_selected_new_verse = (has_selected_new_verse == "true")

        if has_selected_new_verse:
            self.NewReferenceLoaded()
        elif self.CheckChapterInBook(ref):
            self.OpenURIForCurrentBook("bpbible://content/page/%s/%s" %
                                       (self.book.version, self.reference))

        if ref_to_scroll_to:
            self.scroll_to_osis_ref(ref_to_scroll_to)

        chapter = GetBookChapter(self.reference)
        self.header_bar.set_current_chapter(pysw.internal_to_user(chapter),
                                            chapter)

        self.update_title()
Ejemplo n.º 4
0
    def has_chapter(self, ref, mod=None):
        assert self.is_verse_keyed, "Calling has_chapter for non-verse keyed module."
        module = mod or self.mod
        if module is None:
            return False

        vk = VK(ref)
        if module.hasEntry(vk):
            return True

        vk.setVerse(1)
        if module.hasEntry(vk):
            return True

        module.setKey(vk)
        try:
            old_mod_skiplinks = module.getSkipConsecutiveLinks()
            module.setSkipConsecutiveLinks(True)
            module.increment()
            next_vk = VK.castTo(module.getKey())
            return (next_vk.Book() == vk.Book() and next_vk.Chapter()
                    == vk.Chapter() and next_vk.Testament()
                    == vk.Testament()) and not self.has_error(module)
        finally:
            module.setSkipConsecutiveLinks(old_mod_skiplinks)
Ejemplo n.º 5
0
def _setupPassageLists(test):
    """Sets up the passage lists for the given test."""
    test._verse_list1 = VerseList(
        [VK(("gen 2:3", "gen 2:5")), "gen 3:4", "gen 5:2"])
    test._verse_list2 = VerseList(
        ["ex 2:2", "ex 3:5", VK(("ex 3:7", "ex 3:9"))])
    test._verse_list3 = VerseList([VK(("lev 2:3", "lev 2:5")), "lev 2:7"])
    test._verse_list4 = VerseList(["num 3:1", VK(("num 3:4", "num 3:5"))])
    test._list = PassageList.create_from_verse_list("abc", test._verse_list1)
    test._list2 = PassageList.create_from_verse_list("def", test._verse_list2)
    test._list3 = PassageList.create_from_verse_list("ghi", test._verse_list3)
    test._list4 = PassageList.create_from_verse_list("jkl", test._verse_list4)
    test._list2.add_subtopic(test._list4)
    test._list.add_subtopic(test._list2)
    test._list.add_subtopic(test._list3)
    test._manager = PassageListManager()
    test._manager.add_subtopic(test._list)
Ejemplo n.º 6
0
	def testContainsVerseWorksWithRange(self):
		self.assert_(self._passage_entry2.contains_verse(VK("gen 3:5")))
		self.assert_(self._passage_entry2.contains_verse(VK("gen 3:6")))
		self.assert_(self._passage_entry2.contains_verse(VK("gen 3:9")))
		self.assert_(self._passage_entry2.contains_verse(VK("gen 3:10")))
		self.assert_(not self._passage_entry2.contains_verse(VK("gen 3:4")))
		self.assert_(not self._passage_entry2.contains_verse(VK("gen 3:11")))
Ejemplo n.º 7
0
    def cut_down_index(self, bottom, top):
        ### not fully implemented for non-bibles
        vk1 = VK((self.bookname, self.bookname))
        vk = VK((bottom, top))
        vk_dn = vk.LowerBound()
        vk_up = vk.UpperBound()

        # the item we are currently looking for
        start_ref = None
        ret = []
        items = []

        self.old_text = self.text
        self.old_index = self.index

        for match in re.finditer("(?m)^.*$", self.text):
            if vk_dn <= vk1 <= vk_up:
                items.append(match.group())

            vk1.increment(1)

        self.text = '\n'.join(items)
        self.create_index_against_text(vk)
Ejemplo n.º 8
0
        def insert_footnotes(match):
            #print "Inserting footnotes", match
            href = match.group(1)
            url = SW.URL(href.encode("utf8"))
            ftype = url.getParameterValue("type")  #x or n
            value = url.getParameterValue("value")  #number footnote in verse
            if ((not ftype) or (not value)):
                dprint(WARNING, "Not type or value in showNote", href)
                return ""

            module = biblemgr.get_module(url.getParameterValue("module"))
            passage = url.getParameterValue("passage")
            back_ref = VK(passage).getOSISRef()
            user_ref = book_fix(internal_to_user(passage))

            if not passage or not module:
                print "No passage/module?"
                return ""

            id = "footnote_data_%s_%s" % (back_ref, value)
            #print passage, id
            if ftype in ("n", "x"):
                data = sword_book.GetFootnoteData(module, passage, value,
                                                  "body")
                if footnotes[ftype] and footnotes[ftype][-1][0] == back_ref:
                    footnotes_group = footnotes[ftype][-1]
                else:
                    footnotes_group = [
                        back_ref,
                        "<div class='verse_footnotes footnote_%s' id='verse_footnote_%s_%s'>%s for "
                        "<a href='#%s_start'>%s</a>%%s</div>" %
                        (ftype, back_ref, ftype, footnote_types[ftype],
                         back_ref, user_ref)
                    ]

                    footnotes[ftype].append(footnotes_group)

                footnotes_group.append(
                    "<div class='footnote_data' id='%s'><span class='footnote_marker'>%s</span>: %s</div>"
                    % (id, match.group(3), data))
            else:
                print "Footnote type was", ftype

            id = "verse_footnote_%s_%s" % (back_ref, ftype)
            return 'href="#%s"%s' % (id, match.group(2))
Ejemplo n.º 9
0
def yield_verses(mod):
    from swlib.pysw import VK, TOP
    vk = VK()
    vk.Headings(1)
    vk.setPosition(TOP)
    #vk.setText("Matthew 1:1")
    vk.Persist(1)
    vk.thisown = False

    mod.setKey(vk)

    books = ("Genesis", "Matthew")  #"Exodus")
    while not vk.Error():
        #while vk.Testament() in '\x00\x01':
        #while vk.Testament() == '\x00' or vk.Book() == '\x00' or \
        #	vk.getBookName() in books:
        yield
        vk.increment(1)
Ejemplo n.º 10
0
 def __init__(self, parent, version=""):
     self.parent = parent
     self.mod = None
     self.observers = observerlist.ObserverList()
     self.cleanup_module = observerlist.ObserverList()
     self.template = VerseTemplate(body="$text")
     self.templatelist = [self.template]
     self.vk = VK()
     self.headings = False
     if self.ModuleExists(version):
         self.SetModule(version)
     else:
         mods = self.GetModuleList()
         if mods:
             self.SetModule(mods[0])
         else:
             dprint(WARNING, "No modules of type", self.type)
             self.SetModule(None)
Ejemplo n.º 11
0
    def get_verses_on_screen(self, verses):
        if not self.dom_loaded:
            return []

        osis_refs = [VK(verse).getOSISRef() for verse in verses]
        osis_refs_on_screen = self.ExecuteScriptWithResult("""
			(function(osis_refs) {
				var result = [];
				for (var index = 0; index < osis_refs.length; index++)	{
					var osisRef = osis_refs[index];
					var reference_found = $('[osisRef="' + osisRef + '"]').length > 0;
					if (reference_found)	{
						result.push(osisRef);
					}
				}
				return JSON.stringify(result);
			})(%s);
		""" % json.dumps(osis_refs))

        return json.loads(osis_refs_on_screen)
Ejemplo n.º 12
0
    def get_document(self, path):
        module_name, rest = path.split("/", 1)
        ref, direction = rest.rsplit("/", 1)
        assert direction in ("next", "previous")

        dir = {"next": 1, "previous": -1}[direction]
        book = biblemgr.get_module_book_wrapper(module_name)
        mod = book.mod
        no_more = False
        if book.is_verse_keyed:
            vk = VK(ref, headings=not book.chapter_view)
            if book.chapter_view:
                vk.chapter += dir
                if vk.Error():
                    print "No more in that direction", dir
                    no_more = True
                else:

                    # go back just a little, so that when we go forward on the module
                    # we won't overshoot... (at least, that is our plan - we hope it
                    # won't be baffled...)
                    vk.Verse(vk.Verse() - dir)
                    if vk.Error():
                        print "VK had an error taking away a verse", dir

            if not no_more:
                old_mod_skiplinks = mod.getSkipConsecutiveLinks()
                mod.setSkipConsecutiveLinks(True)
                try:
                    vk.Persist(1)
                    mod.setKey(vk)
                    #print repr(mod.Error())
                    mod.increment(dir)

                    if mod.Error() != '\x00':
                        print "Mod had an error"
                        no_more = True
                    else:
                        if book.chapter_view:
                            new_ref = vk.get_chapter_osis_ref()
                        else:
                            new_ref = vk.getOSISRef()
                finally:
                    mod.setKey(SW.Key())
                    mod.setSkipConsecutiveLinks(old_mod_skiplinks)

        elif book.is_dictionary:
            # XXX: Would using an index rather than a reference (as the XUL code did) be more efficient?
            book.snap_text(ref)
            book.mod.increment(dir)
            if mod.Error() == '\x00' and book.mod.getKey().getText():
                new_ref = to_unicode(mod.getKey().getText(), mod)
            else:
                no_more = True

        elif book.is_genbook:
            ref = "/" + ref
            tk = book.GetKey()
            tk.Persist(1)
            assert tk.thisown
            newtk = book.GetKey()
            newtk.thisown = True
            mod.setKey(tk)
            print "Getting next for", ref
            tk.set_text(ref)
            print tk.getText()
            if mod.Error() != '\x00':
                print "Error on initial set?"
            mod.increment(dir)
            if mod.Error() == '\x00' and tk.getText():
                new_ref = to_unicode(tk.getText(),
                                     mod)[1:]  # trim off the leading /
            else:
                no_more = True

            mod.setKey(newtk)
        else:
            print "Book type not handled", module_name

        if no_more:
            message = (_("You are at the start of this book.")
                       if dir == -1 else _("You are at the end of this book."))
            class_name = "book-%s" % ("start" if dir == -1 else "end")
            return '''
			<div class="page_segment" empty="true">
				<div class='no_more_text %(class_name)s'>
					%(message)s
				</div>
			</div>''' % locals()

        return '<div class="page_segment">%(content)s%(timer)s</div>' % self._get_document_parts_for_ref(
            module_name, new_ref, do_current_ref=False)
Ejemplo n.º 13
0
def get_book(sword_book, bible_book, verse_per_line=False):
    print "fetching", bible_book, "from", sword_book
    bookname = str(bible_book)
    chapter_bookname = book_fix(bookname)

    osis_bookname = VK(bookname).getOSISBookName()
    filename = "book_%s.html" % osis_bookname

    preverse = '<span id="${osisRef}_start" />'

    # templates
    verse_number = u'''<span class="vnumber $numbertype%s"
		   id="${osisRef}_number">
		   $versenumber<span class="post_versenumber_space">&nbsp;</span></span>'''

    # TODO - reinstate  $usercomments $tags after $text?
    body = (u'''%s<span class="zwnj">&zwnj;</span>$text''') % verse_number
    #		<a id="${osisRef}_end" osisRef="$osisRef"></a>''') % verse_number

    bible_template = SmartVerseTemplate(body=body % (''), preverse=preverse)
    bible_template.body.verse_per_line = verse_per_line

    toc = []
    chapters = []
    footnotes = {
        'n': [],
        'x': [],
    }
    footnote_types = {
        'n': "Footnotes",
        'x': "Cross-references",
    }

    for chapter in bible_book.chapters:
        if chapter.chapter_number % 10 == 0:
            print osis_bookname, chapter
            if RESTRICTED:
                break

        chapter_id = "%s_%s_start" % (osis_bookname, chapter)
        chapter_link = '<a class="chapter_link" href="#intro">%s</a>' % chapter_bookname
        toc.append(
            '''<a class="toc_chapter_link" href="#chapter_%s">%s</a>''' %
            (chapter_id, chapter))

        ref = "%s %s" % (osis_bookname, chapter)
        content = sword_book.GetReference(ref,
                                          end_ref=ref,
                                          template=bible_template,
                                          max_verses=-1)
        #		content = re.sub(r'<(/?)h2([^>]*)>', r'<\1h4\2>', content)

        chapter_marker = '<span class="vnumber chapternumber'
        # always a chance
        new_content = content.replace(chapter_marker,
                                      chapter_link + chapter_marker)

        osisRef = "%s.%s.%s" % (osis_bookname, chapter, 1)
        if new_content == content:
            print "No chapter intro link found for %s %s" % (osis_bookname,
                                                             chapter)
            new_content = (chapter_link + (verse_number % '').replace(
                "$numbertype", "chapternumber").replace(
                    "${osisRef}", osisRef).replace("${versenumber}", "%s" %
                                                   (chapter)))

        content = new_content
        expected_start = preverse.replace("${osisRef}", osisRef) + chapter_link
        if not content.startswith(expected_start):
            print "pre-content chapter intro link found for %s %s" % (
                osis_bookname, chapter)
            #print "Sample starter content: " + content[:100]
            content = content.replace(chapter_link, "<br / >" + chapter_link)

            # now take it back out if write after a lg
            q = '<blockquote class="lg" width="0">'
            content = content.replace(q + '<br / >', q)

        # check - did we have a closing or opening <p> last?
        if 0:
            # note, it's only epubcheck which complains about this. kindlegen
            # complains as this support isn't perfect so it sees some unclosed
            # <p> tags
            add_p = True
            for a in re.findall("<(/?)p>", content):
                add_p = not (a)

            if add_p:
                content += '</p>'

        def insert_footnotes(match):
            #print "Inserting footnotes", match
            href = match.group(1)
            url = SW.URL(href.encode("utf8"))
            ftype = url.getParameterValue("type")  #x or n
            value = url.getParameterValue("value")  #number footnote in verse
            if ((not ftype) or (not value)):
                dprint(WARNING, "Not type or value in showNote", href)
                return ""

            module = biblemgr.get_module(url.getParameterValue("module"))
            passage = url.getParameterValue("passage")
            back_ref = VK(passage).getOSISRef()
            user_ref = book_fix(internal_to_user(passage))

            if not passage or not module:
                print "No passage/module?"
                return ""

            id = "footnote_data_%s_%s" % (back_ref, value)
            #print passage, id
            if ftype in ("n", "x"):
                data = sword_book.GetFootnoteData(module, passage, value,
                                                  "body")
                if footnotes[ftype] and footnotes[ftype][-1][0] == back_ref:
                    footnotes_group = footnotes[ftype][-1]
                else:
                    footnotes_group = [
                        back_ref,
                        "<div class='verse_footnotes footnote_%s' id='verse_footnote_%s_%s'>%s for "
                        "<a href='#%s_start'>%s</a>%%s</div>" %
                        (ftype, back_ref, ftype, footnote_types[ftype],
                         back_ref, user_ref)
                    ]

                    footnotes[ftype].append(footnotes_group)

                footnotes_group.append(
                    "<div class='footnote_data' id='%s'><span class='footnote_marker'>%s</span>: %s</div>"
                    % (id, match.group(3), data))
            else:
                print "Footnote type was", ftype

            id = "verse_footnote_%s_%s" % (back_ref, ftype)
            return 'href="#%s"%s' % (id, match.group(2))

        content = re.sub(
            r'href="newbible://content/(passagestudy\.jsp\?action=showNote&type=[nx]&value=\d+&module=\w+&passage=(?:[^"]+))"(>([^<]*)</a>)',
            insert_footnotes, content)

        chapters.append('''
			<div class="chapter" id="chapter_%s">
			<!-- <p> -->
			%s
			</div>
			<hr />
			''' % (chapter_id, content))

    footnotes_html = ''
    for ftype in "nx":
        if footnotes[ftype]:
            footnotes_html += '<div class="book_footnotes"><h3>%s for %s</h3>%s</div>' % (
                footnote_types[ftype], bookname, '<hr />\n'.join(
                    [f[1] % ('\n\t'.join(f[2:])) for f in footnotes[ftype]]))

    html_content = '''<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>%s</title>
    	<link type="text/css" rel="stylesheet" href="bpbible_epub.css" />
	</head>
	<body>
		<div id="intro">
			<h3>%s</h3>
			<div class="book_toc">%s</div>
			<hr style="clear:both" />
			<div style="clear:both">
			Return to <a href="toc.html">Table of Contents</a>
			</div>
		</div>
		<hr class="pagebreak" />
		<div class="chapterview">
		%s
		</div>
		%s
	</body>
</html>
		''' % (bookname, bookname, '\n'.join(toc), '\n'.join(chapters),
         footnotes_html)

    # TODO: sword:// links, any others?
    print "Resolving bible links for", bookname

    def replace_bible_links(match):
        ref = match.group(1)
        #print "Replacing bible link", ref
        vk = VK(ref)

        return "href='book_%s.html#%s_start'" % (vk.getOSISBookName(),
                                                 vk.getOSISRef())

    html_content = re.sub(r'href="bible:([^"]*)"', replace_bible_links,
                          html_content)

    return (
        osis_bookname,
        filename,
        bookname,
        html_content.encode("utf8"),
    )
Ejemplo n.º 14
0
 def random_verse(self):
     randomnum = random.randint(1, 31102)
     ref = VK("Gen 1:%d" % randomnum).text
     self.notify(ref, source=events.RANDOM_VERSE)
Ejemplo n.º 15
0
 def testValuesAreRight(self):
     self.assertEquals(self._list.passages[0].passage, VK("gen 2:3"))
     self.assertEquals(self._list.passages[2].passage, VK("gen 2:7"))
Ejemplo n.º 16
0
 def current_segment_changed(self, new_segment_ref):
     self.reference = VK(new_segment_ref).getText()
     self.latest_reference = self.reference
     self.ChangeCurrentReference(self.reference)
     self.update_title()
Ejemplo n.º 17
0
 def testVersesInMainTopicShouldBeContainedDirectly(self):
     self.assert_(self._list.contains_verse(VK("gen 3:4")))
Ejemplo n.º 18
0
 def testVersesInSubtopicsShouldNotBeContainedDirectly(self):
     self.assert_(not self._list.contains_verse(VK("ex 2:2")))
     self.assert_(not self._list.contains_verse(VK("num 2:5")))
Ejemplo n.º 19
0
 def testVersesInSubtopicsShouldBeContainedRecursively(self):
     self.assert_(self._list.contains_verse(VK("ex 2:2"), recursive=True))
     self.assert_(self._list.contains_verse(VK("num 3:5"), recursive=True))
Ejemplo n.º 20
0
    def _get_document_parts_for_ref(self,
                                    module_name,
                                    ref,
                                    do_current_ref=True):
        t = default_timer()

        stylesheets = list(self.bible_stylesheets)
        scripts = self.standard_scripts + self.bible_scripts + [
            "highlight.js", "bpbible_html.js", "contrib/hyphenate.js",
            "columns.js"
        ]

        book = biblemgr.get_module_book_wrapper(module_name)
        assert book, "Module wrapper not found for book " + module_name
        module = book.mod
        if book.chapter_view:
            scripts.append("bpbible_html_chapter_view.js")
            #stylesheets.append("bpbible_chapter_view.css")
            #stylesheets.append("bpbible://content/quotes_skin/")
        else:
            scripts.append("bpbible_html_page_view.js")
            stylesheets.append("bpbible_page_view.css")

        if is_debugging():
            stylesheets.append("bpbible_html_debug.css")

        if book.is_verse_keyed:
            if book.chapter_view:
                if do_current_ref:
                    c = book.GetChapter(ref, ref,
                                        config.current_verse_template)
                else:
                    c = book.GetChapter(ref)

                ref_id = VK(ref).get_chapter_osis_ref()

            else:
                c = book.GetReference(ref, headings=True)
                ref_id = VK(ref).getOSISRef()

        elif book.is_dictionary:
            c = book.GetReference(ref)
            ref_id = ref

        elif book.is_genbook:
            c = book.GetReference(ref)
            ref_id = ref
        else:
            dprint(ERROR, "Book `%s' not found." % module_name)
            c = ''
        c = c.replace("<!P>", "</p><p>")

        clas = ""
        if not c:
            clas = " nocontent"

        lang = module.Lang() if module else "en",
        c = convert_language(c, lang)
        c = '<div class="segment%s" ref_id="%s">%s</div>' % (
            clas, urllib.quote(ref_id.encode("utf8")), c)

        return dict(
            module=module,
            content=c,
            bodyattrs=self._get_body_attrs(module),
            stylesheets=stylesheets,
            scripts=scripts,
            timer="<div class='timer'>Time taken: %.3f (ref_id %s)</div>" %
            (default_timer() - t, ref_id))
Ejemplo n.º 21
0
 def testVersesNotInVerseRangeShouldNotBeContained(self):
     self.assert_(not self._list.contains_verse(VK("deut 3:5")))
     self.assert_(
         not self._list.contains_verse(VK("deut 3:5"), recursive=True))
Ejemplo n.º 22
0
 def testVersesInVerseRangeShouldBeContained(self):
     self.assert_(self._list.contains_verse(VK("gen 2:5")))
     self.assert_(self._list.contains_verse(VK("gen 2:4")))
Ejemplo n.º 23
0
	def testContainsVerseWorksWithSingleVerse(self):
		self.assert_(self._passage_entry.contains_verse(VK("gen 2:2")))
		self.assert_(not self._passage_entry.contains_verse(VK("gen 2:1")))
Ejemplo n.º 24
0
 def chapter_move(self, number):
     vk = VK(self.reference)
     vk.chapter += number
     if not vk.Error():
         self.notify(vk.text, source=events.CHAPTER_MOVE)
Ejemplo n.º 25
0
    def get_tree_item(self):
        root = self.tree.GetRootItem()

        text = self.GetValue()
        was_book = False
        for book in UserVK.books:
            if ("%s" % book) == text:
                was_book = True
                self.currentverse = book.bookname
                break
        else:
            try:
                # try updating verse based on user text
                # if we fail, just use old text (assuming there is any)
                self.currentverse = GetVerseStr(text,
                                                self.currentverse,
                                                raiseError=True,
                                                userInput=True,
                                                userOutput=False)

            except VerseParsingError:
                if not self.currentverse:
                    return self.tree.GetFirstChild(root)[0]

        verse_key = UserVK(VK(self.currentverse))
        single_chapter_book = verse_key.getChapterMax() == 1

        book, chapter = verse_key.getBookName(), verse_key.Chapter()
        verse = verse_key.Verse()
        chapter = process_digits(str(chapter), userOutput=True)
        verse = process_digits(str(verse), userOutput=True)
        if single_chapter_book:
            chapter = verse

        item, cookie = self.tree.GetFirstChild(root)
        while item:
            if self.tree.GetItemText(item) == book:
                break

            item, cookie = self.tree.GetNextChild(root, cookie)

        assert item, book + " not found!"

        if was_book or (single_chapter_book and not self.with_verses):
            return item

        self.tree.Expand(item)

        item2, cookie = self.tree.GetFirstChild(item)

        while item2:
            data = unicode(self.get_data(item2))
            if data == chapter:
                # if : isn't in there, we take it as a chapter reference
                if not self.with_verses or  ":" not in text \
                  or single_chapter_book:
                    return item2
                else:
                    break

            item2, cookie = self.tree.GetNextChild(item, cookie)

        assert item2, "Chapter '%s' not found in %s" % (chapter, book)
        assert not single_chapter_book, "Single chapter books, but chapterMax == 1?!?"

        self.tree.Expand(item2)

        item3, cookie = self.tree.GetFirstChild(item2)

        while item3:
            data = unicode(self.get_data(item3))
            if data == verse:
                return item3

            item3, cookie = self.tree.GetNextChild(item2, cookie)

        assert item3, "Verse '%s' not found in %s %s" % (verse, book, chapter)
Ejemplo n.º 26
0
 def verse_move(self, number):
     vk = VK(self.reference)
     vk += number
     self.notify(vk.text, source=events.VERSE_MOVE)
Ejemplo n.º 27
0
 def get_key(self, module):
     vk = VK((self.bookname, self.bookname))
     vk.Headings(0)
     vk.setPosition(TOP)
     return vk
Ejemplo n.º 28
0
 def get_ref_id(self, reference):
     osis_ref = VK(reference).getOSISRef()
     return super(LinkedFrame, self).get_ref_id(osis_ref)