Example #1
0
 def ok_verse_cb(self, *a):
     all_verse = self.verse_all_bfr.get_text(
         self.verse_all_bfr.get_start_iter(), self.verse_all_bfr.get_end_iter(), False
     ).decode("utf8")
     verse0 = self.verse_prog_bfr.get_text(
         self.verse_prog_bfr.get_start_iter(), self.verse_prog_bfr.get_end_iter(), False
     ).decode("utf8")
     rawi0 = daw_araby.NAMES[daw_tools.rawi_poem(verse0.strip())]
     verse1 = self.verse_usr_bfr.get_text(
         self.verse_usr_bfr.get_start_iter(), self.verse_usr_bfr.get_end_iter(), False
     ).decode("utf8")
     if verse1 == u"":
         return
     rawi1 = daw_araby.NAMES[daw_tools.rawi_poem(verse1.strip())]
     first1 = daw_araby.NAMES[verse1.strip()[0]]
     if first1 != rawi0:
         daw_customs.erro(self.parent, "البيت يبدأ بحرف غير الذي انتهى به الأول\nحاول مجددا .")
         return
     if self.db.is_verse(verse1):
         if daw_araby.fuzzy_plus(verse1) in daw_araby.fuzzy_plus(all_verse):
             daw_customs.erro(self.parent, "البيت مستخدم مسبقا\nحاول مجددا .")
             return
         else:
             daw_customs.info(self.parent, "أحسنت")
             self.verse_all_bfr.insert(self.verse_all_bfr.get_end_iter(), u"\nالمستخدم : " + verse1.strip())
             d = int(self.lab_answer_user.get_label()) + 1
             self.lab_answer_user.set_label(str(d))
             self.next_verse(rawi1)
     else:
         daw_customs.erro(self.parent, "البيت غير موجود في قاعدة بيانات البرنامج\nحاول مجددا .")
         return
     daw_customs.with_tag(self.verse_all_bfr, self.verse_all_tag, ["البرنامج : "])
     self.verse_all.scroll_to_iter(self.verse_all_bfr.get_end_iter(), 0, 1, 1, 1)
Example #2
0
 def next_verse(self, rawi):
     all_verse = self.verse_all_bfr.get_text(
         self.verse_all_bfr.get_start_iter(), self.verse_all_bfr.get_end_iter(), False
     ).decode("utf8")
     if rawi == u"همزة":
         r = u"أ"
     elif rawi == u"ألف":
         r = u"ا"
     else:
         r = rawi[0]
     verses = self.db.first_in_verse(r)
     random.shuffle(verses)
     if len(verses) == 0:
         daw_customs.erro(self.parent, "لا يوجد بيت جديد يبدأ بحرف {}".format(rawi))
         return
     else:
         for a in verses:
             if daw_araby.fuzzy_plus(a[0]) not in daw_araby.fuzzy_plus(all_verse):
                 self.verse_prog_bfr.set_text(a[0].strip())
                 self.verse_all_bfr.insert(self.verse_all_bfr.get_end_iter(), u"\nالبرنامج : " + a[0].strip())
                 d = int(self.lab_answer_prog.get_label()) + 1
                 self.lab_answer_prog.set_label(str(d))
                 self.verse_usr_bfr.set_text("")
                 i = self.db.id_poet(a[1])
                 self.lab_speaker0.set_label(self.db.name_poet(i)[1])
                 if a[0] == None:
                     return
                 r = self.db.rawi_poem(a[1])
                 rawi = daw_araby.NAMES[daw_tools.rawi_poem(a[0].strip())]
                 self.lab_rawi.set_label(rawi)
                 return
         daw_customs.erro(self.parent, "لا يوجد بيت جديد يبدأ بحرف {}".format(rawi))
Example #3
0
 def search(self, text, dict_perf, selected_list):
     self.text = text
     self.cursive = dict_perf['cursive']
     text = text.replace('"','')
     text = text.replace("'","")
     ls_term = []
     if dict_perf['with_tachkil'] == True: 
         cond = 'nasse LIKE ?'
     else:
         cond = 'fuzzy(nasse) LIKE ?'
         text = daw_araby.fuzzy_plus(text)
     if dict_perf['identical'] == True:  pfx, sfx = '% ', ' %'
     else: pfx, sfx = '%', '%'
     if dict_perf['cursive'] == True:
         self.condition = 'fuzzy(nasse) LIKE ?'
         ls_term.append(pfx+text+sfx)
     else: 
         for a in text.split(u' '):
             ls_term.append(pfx+a+sfx)
         #if dict_perf['one_verse'] == True:
         #    self.condition = u'fuzzy(nasse) LIKE ?'
         #    ls_term = ['%'+u'%[.+]%'.join(text.split(u' '))+u'%',]
         #else:
         if dict_perf['one_term'] == True:
             self.condition = ' OR '.join([cond]*len(ls_term))
         else :
             self.condition = ' AND '.join([cond]*len(ls_term))
     n = 0
     for a in selected_list:
         ls = self.parent.db.poems_id(a)
         for b in ls:
             check = self.parent.db.search(b, self.condition, ls_term)
             if check == True:
                 n += 1
                 self.results_store.append([b, n, self.parent.db.name_poem(b),
                                            self.parent.db.name_poet(self.parent.db.id_poet(b))[1],
                                            daw_tools.get_name(daw_tools.elbehor, self.parent.db.get_id_baher(b)),
                                            daw_tools.get_name(daw_tools.elgharadh, self.parent.db.gharadh_poem(b)),
                                            daw_tools.get_name(daw_tools.elrawi, self.parent.db.rawi_poem(b)),])
                 self.results_list.append([b, n, self.parent.db.name_poem(b),
                                            self.parent.db.name_poet(self.parent.db.id_poet(b))[1],
                                            daw_tools.get_name(daw_tools.elbehor, self.parent.db.get_id_baher(b)),
                                            daw_tools.get_name(daw_tools.elgharadh, self.parent.db.gharadh_poem(b)),
                                            daw_tools.get_name(daw_tools.elrawi, self.parent.db.rawi_poem(b)),])
             else: pass
     if len(self.results_list)>0:
         output = open(join(daw_customs.HOME_DIR,'آخر بحث.pkl'), 'wb')
         cPickle.dump(self.results_list, output)
         output.close()
Example #4
0
 def is_verse(self, verse):
     self.cur.execute('SELECT id_poem FROM kassaid WHERE fuzzy(nasse) LIKE ? OR fuzzy(nasse) LIKE ? LIMIT 1', 
                      (daw_araby.fuzzy_plus('%\n'+verse+'\n%'), daw_araby.fuzzy_plus(verse+'\n%')))
     verses = self.cur.fetchall()
     if len(verses) > 0: return True
     else: return False