[Rapier-commits] r175 - in trunk: debian src
This list send mail when a change occurs on the subversion repository
rapier-commits at garage.maemo.org
Mon Jan 14 18:12:31 EET 2008
Author: pamadio
Date: 2008-01-14 18:12:29 +0200 (Mon, 14 Jan 2008)
New Revision: 175
Added:
trunk/src/prepare-sqlite.py
Modified:
trunk/debian/changelog
trunk/debian/control
trunk/src/rapier
trunk/src/swordutils.py
Log:
starting to play with strong number
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2008-01-12 10:39:36 UTC (rev 174)
+++ trunk/debian/changelog 2008-01-14 16:12:29 UTC (rev 175)
@@ -1,6 +1,7 @@
-rapier (1.0.3-1) unstable; urgency=low
+rapier (1.0.3-1test) unstable; urgency=low
- * Changing the package section to user/other
+ * Changing the package section to user/other.
+ * Strong Number support.
-- Pierre Amadio <melmoth at localhost> Sat, 12 Jan 2008 11:33:38 +0100
Modified: trunk/debian/control
===================================================================
--- trunk/debian/control 2008-01-12 10:39:36 UTC (rev 174)
+++ trunk/debian/control 2008-01-14 16:12:29 UTC (rev 175)
@@ -6,7 +6,7 @@
Standards-Version: 3.6.1
Package: rapier
-Architecture: all
-Depends: ${shlibs:Depends}, ${misc:Depends}, python-sword, python2.5-runtime
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, python-sword, python2.5-runtime, libsqlite3-0
Description: A sword based Bible reader for maemo.
A sword based Bible reader for maemo.
Added: trunk/src/prepare-sqlite.py
===================================================================
--- trunk/src/prepare-sqlite.py (rev 0)
+++ trunk/src/prepare-sqlite.py 2008-01-14 16:12:29 UTC (rev 175)
@@ -0,0 +1,124 @@
+#!/usr/bin/python2.5
+import Sword
+import os
+import re
+import sqlite3
+import sys
+
+database_file="/home/user/MyDocs/strong.db"
+data_path="/home/user/sword"
+
+def create_tables(db):
+ c = db.cursor()
+ print "creating tables"
+ snt="create table Words (word text primary key)"
+ c.execute(snt)
+ snt="create table Words_Per_Verse (word text,verse text)"
+ c.execute(snt)
+ snt="create index word_per_verse_idx on Words_Per_Verse (word)"
+ c.execute(snt)
+ snt="create index word_idx on Words (word)"
+ c.execute(snt)
+
+
+
+def is_word_in_db(db,word):
+ c = db.cursor()
+ c.execute("select count(*) from Words where word=?",(word,))
+ return c.fetchone()[0]
+
+def is_word_per_verse_in_db(db,word,key):
+ c=db.cursor()
+ c.execute("select count(*) from Words_Per_Verse where word=? and verse=?",\
+ (word,key,))
+ return c.fetchone()[0]
+
+def getAllBooks():
+ """
+ Return an array:
+ [{'testament': 1, 'bookCount': 1, 'name': 'Genesis', 'abbr': 'Gen'},
+ {'testament': 1, 'bookCount': 2, 'name': 'Exodus', 'abbr': 'Exod'},
+ """
+ vk=Sword.VerseKey()
+ out=[]
+ for i in range(2):
+ vk.Testament(i+1)
+ for j in range(vk.bookCount(i+1)):
+ vk.Book(j+1)
+ tmp={}
+ tmp['name']=vk.bookName(i+1,j+1)
+ tmp['abbr']=vk.getBookAbbrev()
+ tmp['testament']=i+1
+ tmp['bookCount']=j+1
+ out.append(tmp)
+ return out
+
+def parse_words(verseTxt):
+ reg=re.compile("<(\w+)>")
+ out=[]
+ for i in reg.findall(verseTxt):
+ if i not in out:
+ out.append(i)
+ return out
+
+
+
+
+if os.path.exists(database_file):
+ print "Removing old db:%s",database_file
+ os.remove(database_file)
+ db=sqlite3.connect(database_file)
+ create_tables(db)
+
+
+#db=sqlite3.connect(database_file)
+
+
+#print "plop",is_word_in_db(db,"plop")
+#print "kikoo",is_word_in_db(db,"kikoo")
+
+
+markup=Sword.MarkupFilterMgr(Sword.FMT_PLAIN)
+markup.thisown=False
+mgr=Sword.SWMgr(markup)
+mgr.prefixPath = data_path
+mgr.configPath = "%s/mods.d" % data_path
+mgr.augmentModules(data_path)
+mod=mgr.getModule('KJV')
+
+for curbook in getAllBooks():
+ print "_________________"
+ print curbook
+ vk=Sword.VerseKey()
+ nbr_chapter=vk.chapterCount(curbook['testament'],curbook['bookCount'])
+ for chapter_idx in range(nbr_chapter):
+ chapter=chapter_idx+1
+ print "chapter %s"%chapter
+ nbr_verses=vk.verseCount(curbook['testament'],\
+ curbook['bookCount'],\
+ chapter)
+ for verse_idx in range(nbr_verses):
+ verse=verse_idx+1
+ key="%s %d:%d"%(curbook['abbr'],chapter,verse)
+ print key
+ tmpvk=Sword.VerseKey(key)
+ mod.setKey(tmpvk)
+ mgr.setGlobalOption("Strong's Numbers","On")
+ verseTxt=mod.RenderText()
+ #print verseTxt
+ words=parse_words(verseTxt)
+ #print words
+ c = db.cursor()
+ for cur_word in words:
+ if not is_word_in_db(db,cur_word):
+ #print "adding word %s in db"%cur_word
+ c.execute("insert into Words (word) values (?)"\
+ ,(cur_word,))
+ if not is_word_per_verse_in_db(db,cur_word,key):
+ #print "adding association (%s,%s)"%(cur_word,verse)
+ c.execute("insert into Words_Per_Verse (word,verse) values (?,?)"\
+ ,(cur_word,key))
+ db.commit()
+ print "\n"
+
+db.commit()
Property changes on: trunk/src/prepare-sqlite.py
___________________________________________________________________
Name: svn:executable
+ *
Modified: trunk/src/rapier
===================================================================
--- trunk/src/rapier 2008-01-12 10:39:36 UTC (rev 174)
+++ trunk/src/rapier 2008-01-14 16:12:29 UTC (rev 175)
@@ -31,8 +31,8 @@
from gnome import gnomevfs
import swordutils
import os
-
-
+import sqlite3
+import string
"""
Does not work as expected...should change this.
@@ -114,6 +114,7 @@
self.waitForSearchFlag=False
self.waitForRemoteModulesFlag=False
self.waitForModuleManagementFlag=False
+ self.showStrongNumbers=False
""" coordinate of the mouse last time there was a click. """
self.y={'old':0,'new':0}
"""indice=verse number, value=verse text"""
@@ -333,16 +334,26 @@
self.mainWindow.toolbar.insert(self.mainWindow.verse_tb_item,2)
#Ok button
- self.mainWindow.display_b_item=gtk.ToolItem()
- self.mainWindow.display_b=gtk.Button("Display")
- self.mainWindow.display_b_item.add(self.mainWindow.display_b)
- self.mainWindow.display_b.connect("clicked",self.display_b_clicked)
+ #self.mainWindow.display_b_item=gtk.ToolItem()
+ #self.mainWindow.display_b=gtk.Button("Display")
+ #self.mainWindow.display_b_item.add(self.mainWindow.display_b)
+ #self.mainWindow.display_b.connect("clicked",self.display_b_clicked)
#self.mainWindow.toolbar.insert(self.mainWindow.display_b_item,3)
+ #Strong Number checkbox.
+ self.mainWindow.strong_number_item=gtk.ToolItem()
+ self.mainWindow.strong_number_check_b=gtk.CheckButton(\
+ label="Strong Number",use_underline=False)
+ self.mainWindow.strong_number_check_b.connect("clicked",\
+ self.strong_number_check_b_clicked)
+ self.mainWindow.strong_number_item.add(\
+ self.mainWindow.strong_number_check_b)
+ self.mainWindow.toolbar.insert(\
+ self.mainWindow.strong_number_item,3)
-
+
self.mainWindow.back_b_item=gtk.ToolItem()
self.mainWindow.back_b=gtk.Button()
self.mainWindow.back_b_item.add(self.mainWindow.back_b)
@@ -1242,7 +1253,11 @@
vk=Sword.VerseKey(key)
mod.setKey(vk)
#verseTxt=mod.RenderText()
- mgr.setGlobalOption("Cross-references","Off")
+ mgr.setGlobalOption("Cross-references","Off")
+ if self.showStrongNumbers:
+ mgr.setGlobalOption("Strong's Numbers","On")
+ else:
+ mgr.setGlobalOption("Strong's Numbers","Off")
verseTxt=mod.RenderText()
self.textArray.append(verseTxt)
self.refreshTextDisplay()
@@ -1307,6 +1322,16 @@
self.mainWindow.set_title(moduleName)
self.refresh_textArray()
+ if swordutils.has_strong_number(self.mgr,moduleName):
+ self.mainWindow.strong_number_item.show()
+ else:
+ self.showStrongNumbers=False
+ self.mainWindow.strong_number_check_b.set_active(False)
+ self.mainWindow.strong_number_item.hide()
+
+
+
+
def book_combo_changed(self,widget):
self.selected_book=self.get_combo_active_text(widget)
self.fillChapters()
@@ -1347,7 +1372,8 @@
return
filterSnt=self.searchEntry.get_text()
- args={'filter':filterSnt,'module':self.selected_module}
+ args={'filter':filterSnt,'module':self.selected_module,\
+ 'useStrongNumber':self.showStrongNumbers}
self.searchProgressbar.show()
self.waitForSearchFlag=True
self.putJob(aJob(self.jobCounter,"search_string",args))
@@ -1363,6 +1389,10 @@
if self.selected_chapter<self.maxChapter:
self.mainWindow.chapter_tb_combo.set_active(self.selected_chapter)
+ def strong_number_check_b_clicked(self,widget):
+ self.showStrongNumbers= widget.get_active()
+ self.refresh_textArray()
+
def set_display_to_ref(self,ref):
info=self.get_info_from_refs(ref)
@@ -1567,17 +1597,28 @@
def search_string(self,args):
out=[]
+
+ useStrong=args['useStrongNumber']
markup=Sword.MarkupFilterMgr(Sword.FMT_PLAIN)
markup.thisown=False
mgr=swordutils.get_manager(markup)
mod=mgr.getModule(args['module'])
- res=mod.doSearch(args['filter'],-4)
- for n in range(res.Count()):
- vk=res.GetElement(n)
- out.append(vk.getShortText())
- return out
+ if not useStrong:
+ res=mod.doSearch(args['filter'],-4)
+ for n in range(res.Count()):
+ vk=res.GetElement(n)
+ out.append(vk.getShortText())
+ return out
+ else:
+ print "Let s implement strong number search"
+ db=sqlite3.connect("/home/user/MyDocs/strong.db")
+ c=db.cursor()
+ for row in \
+ c.execute("select verse from Words_Per_Verse where word=?",\
+ (string.upper(args['filter']),)):
+ out.append(row[0])
+ return out
-
def remote_modules_list(self,args):
data_path = args['data_path']
tmp=swordutils.InstallMgr(dataPath=data_path,
Modified: trunk/src/swordutils.py
===================================================================
--- trunk/src/swordutils.py 2008-01-12 10:39:36 UTC (rev 174)
+++ trunk/src/swordutils.py 2008-01-14 16:12:29 UTC (rev 175)
@@ -90,6 +90,15 @@
a=mgr.getModule(modName)
return a.isSearchOptimallySupported('plop',-4,1,Sword.VerseKey())
+def has_strong_number(mgr,modName):
+ mod=mgr.getModule(modName)
+ if mod.getConfigEntry("Feature")=="StrongsNumbers":
+ return True
+ else:
+ return False
+
+
+
class InstallMgr:
"""
The sword swing binding does not seems to make InstallMgr
More information about the Rapier-commits
mailing list