示例#1
0
 def search_in_result(self, *a):
     text = self.sav_result_entry.get_text()
     if text == u"":
         asm_customs.erro(self.parent, "أدخل كلمة للبحث أولا.")
         return
     sr = ShowResult(self.parent)
     self.parent.viewerbook.append_page(sr,TabLabel(sr, u'بحث عن :'+text))
     self.parent.viewerbook.set_current_page(-1)
     n = 0
     s = 0
     for a in self.store_results:
         while (Gtk.events_pending()): Gtk.main_iteration()
         n += 1
         if self.stop_n == 0: break
         book = self.db_list.file_book(a[6])
         con = sqlite3.connect(book)
         con.create_function('fuzzy', 1, asm_araby.fuzzy_plus)
         cur = con.cursor()
         cur.execute('SELECT id FROM pages WHERE id=? AND fuzzy(nass) LIKE ?', (a[0], '%'+text+'%'))
         if len(cur.fetchall()) > 0:
             s += 1
             sr.store_results.append([a[0], s, a[2], a[3], a[4], a[5], a[6]])
         sr.progress.set_fraction(float(n)/(float(len(self.store_results))))
         sr.lab_n_result.set_text('عدد النتائج : {}'.format(s, ))
     sr.progress.set_fraction(0.0)
     sr.hb_stop.hide()
     if len(sr.store_results)>0:
         for a in sr.store_results:
             sr.results_books.append([a[0], a[1], a[2], a[3], a[4], a[5], a[6]])
         output = open(join(asm_path.HOME_DIR, u'آخر بحث.pkl'), 'wb')
         pickle.dump(sr.results_books, output)
         output.close()
示例#2
0
 def search(self, *a):
     self.add_all_list()
     text = self.entry_search.get_text()
     if text == u"":
         asm_customs.erro(self.parent, "أدخل النص المراد البحث عنه")
     elif self.selected_books == []:
         asm_customs.erro(self.parent, "أنت لم تحدد أين ستبحث")
     else:
         try:
             if len(self.list_terms) == 50:
                 self.list_terms.pop(0)
             if text in self.list_terms:
                 self.list_terms.remove(text)
             self.list_terms.append(text)
             output = open(join(asm_path.DATA_DIR_rw, u"last-terms.pkl"), "wb")
             pickle.dump(self.list_terms, output)
             output.close()
         except:
             pass
         self.hide()
         self.parent.notebook.set_current_page(1)
         sr = ShowResult(self.parent)
         self.parent.viewerbook.append_page(sr, TabLabel(sr, u"بحث عن :" + text))
         self.parent.viewerbook.set_current_page(-1)
         sr.search(text, self.dict_perf, self.dict_field, self.selected_books)
示例#3
0
 def search_in_result(self, *a):
     text = self.sav_result_entry.get_text()
     if text == u"":
         asm_customs.erro(self.parent, "أدخل كلمة للبحث أولا.")
         return
     sr = ShowResult(self.parent)
     self.parent.viewerbook.append_page(sr, TabLabel(sr, u"بحث عن :" + text))
     self.parent.viewerbook.set_current_page(-1)
     n = 0
     s = 0
     for a in self.store_results:
         while Gtk.events_pending():
             Gtk.main_iteration()
         n += 1
         if self.stop_n == 0:
             break
         book = self.db_list.file_book(a[6])
         db = bookDB(book, a[6])
         res = db.search_in_page(a[0], text)
         if res == True:
             s += 1
             sr.store_results.append([a[0], s, a[2], a[3], a[4], a[5], a[6]])
         sr.progress.set_fraction(float(n) / (float(len(self.store_results))))
         sr.lab_n_result.set_text("عدد النتائج : {}".format(s))
     sr.progress.set_fraction(0.0)
     sr.hb_stop.hide()
     if len(sr.store_results) > 0:
         for a in sr.store_results:
             sr.results_books.append([a[0], a[1], a[2], a[3], a[4], a[5], a[6]])
         output = open(join(asm_path.HOME_DIR, u"آخر بحث.pkl"), "wb")
         pickle.dump(sr.results_books, output)
         output.close()
示例#4
0
 def search(self, *a):
     self.add_all_list()
     text = self.entry_search.get_text()
     if text == u'':
         asm_customs.erro(self.parent, 'أدخل النص المراد البحث عنه')
     if self.stack.get_visible_child_name() == "n1":
         asm_config.setv('search', 0)
         if self.selected_books == []:
             asm_customs.erro(self.parent, 'أنت لم تحدد أين ستبحث')
         else:
             try:
                 if len(self.list_terms) == 50: self.list_terms.pop(0)
                 if text in self.list_terms: self.list_terms.remove(text)
                 self.list_terms.append(text)
                 output = open(join(asm_path.DATA_DIR_rw, u'last-terms.pkl'), 'wb')
                 pickle.dump(self.list_terms, output)
                 output.close()
             except: pass
             self.hide()
             self.parent.notebook.set_current_page(1)
             sr = ShowResult(self.parent)
             self.parent.viewerbook.append_page(sr,TabLabel(sr, u'بحث عن :'+text))
             self.parent.viewerbook.set_current_page(-1)
             sr.search(text, self.dict_perf, self.dict_field, self.selected_books)
     else:
         asm_config.setv('search', 1)
示例#5
0
 def save_fields(self, *a):
     if len(self.selected_books) == 0: 
         asm_customs.erro(self.parent, "لا يوجد أي كتاب محدد!")
         return
     nm = self.ent_field.get_text()
     output = open(join(asm_path.LIBRARY_DIR_rw, u'fields-search', nm+u'.pkl'), 'wb')
     pickle.dump(self.selected_books, output)
     output.close()
     self.ent_field.set_text('')
     self.load_fields()
示例#6
0
 def sav_result_cb(self, *a):
     nm = self.sav_result_entry.get_text()
     if nm == u"":
         asm_customs.erro(self.parent, "أدخل الاسم أولا.")
     elif nm in os.listdir(asm_path.HOME_DIR): 
         asm_customs.erro(self.parent, "يوجد بحث محفوظ بنفس الاسم !!")
     else:
         output = open(join(asm_path.HOME_DIR, nm+u'.pkl'), 'wb')
         pickle.dump(self.results_books, output)
         output.close()
     self.sav_result_entry.set_text("")
示例#7
0
 def import_book(self, *a):
     if len(self.store_add) == 0:
         return
     id_group = asm_customs.value_active(self.groups)
     nm_group = asm_customs.value_active(self.groups, 1)
     self.progress.set_fraction(0.0)
     self.btn_clear.set_sensitive(False)
     self.btn_convert.set_sensitive(False)
     self.btn_remove.set_sensitive(False)
     self.btn_add.set_sensitive(False)
     n_books = len(self.store_add)
     f = 0
     self.no_add = u""
     while len(self.store_add) > 0:
         if self.stop_n == 1:
             break
         while Gtk.events_pending():
             Gtk.main_iteration()
         book = self.store_add[0][0]
         nm_file = self.store_add[0][1]
         if nm_file[-4:] == u".asm":
             try:
                 con = sqlite3.connect(book)
                 cur = con.cursor()
                 cur.execute("SELECT * FROM main")
                 info = cur.fetchone()
                 is_tafsir = info[8]
                 nm_book = info[0]
                 new_book = join(asm_path.BOOK_DIR_rw, nm_group, nm_file)
                 copyfile(book, new_book)
                 self.db.add_book(nm_book, id_group, is_tafsir)
             except:
                 self.no_add += u"\n- " + nm_file[:-4]
                 print("not add {}".format(book))
         else:
             nm_book = nm_file[:-4]
             # try:
             DB_from_BOK(book, nm_group, id_group)
             self.progress.set_fraction(float(f) / float(n_books))
         #                except OSError: asm_customs.erro(self, "حزمة mdbtools \nيرجى تثبيتها لأجل استيراد الكتب غير مثبتة"); raise
         #                except: self.no_add += u'\n- '+nm_book; print ('not add {}'.format(book,))
         i = self.store_add.get_iter_first()
         self.store_add.remove(i)
         f += 1
     self.progress.set_text("انتهى !!")
     self.progress.set_fraction(1.0)
     self.btn_clear.set_sensitive(True)
     self.btn_convert.set_sensitive(True)
     self.btn_remove.set_sensitive(True)
     self.btn_add.set_sensitive(True)
     if self.no_add != u"":
         asm_customs.erro(self, u"الكتب التي لم يتم إضافتها {}".format(self.no_add))
示例#8
0
 def search_on_active(self, text):
     if text == u'': return
     elif len(text) < 3: 
         asm_customs.erro(self.parent, 'أدخل كلمة بها أكثر من حرفين للبحث عنها')
         return
     all_root, all_term = asm_stemming.get_root(u''+text)
     self.tree_dict.collapse_all()
     self.store_dict.clear()
     self.view_dict_bfr.set_text('')
     if len(all_root) == 0: asm_customs.erro(self.parent, 'لا يوجد نتيجة'); return
     for text in all_root: 
         self.store_dict.append(None, [text])
     self.all_term = all_term
示例#9
0
 def search_on_quran(self, *a):
     text = self.search_entry.get_text()
     if len(text) >= 3:
         all_ayat = Othman().search('"'+text+'"')
         self.store_search.clear()
         if len(all_ayat) == 0:
             asm_customs.erro(self.parent, 'لا يوجد نتيجة'); return
         else: 
             for ayat in all_ayat:
                 i_sura = ayat[0]
                 i_ayat = ayat[1]
                 suras_names = Othman().get_suras_names()
                 sura = suras_names[i_sura-1]
                 self.store_search.append(None, [i_sura, i_ayat, sura[1]])
示例#10
0
 def rename_group(self, *a):
     new_grp = self.entry_group.get_text()
     if new_grp == '': return
     model, i = self.sel_group.get_selected()
     id_group = model.get_value(i, 0)
     if self.db.check_books_part(id_group) == True:
         asm_customs.erro(self.parent, 'لا يمكن تغيير اسم هذا القسم\nلأن بعض كتبه للقراءة فقط')
         return
     if i:
         nm_group = model.get_value(i, 1)
     check = self.db.rename_part(new_grp, nm_group)
     if check == None:
         rename(join(asm_path.BOOK_DIR_rw, nm_group), join(asm_path.BOOK_DIR_rw, new_grp))
         self.refresh_groups()
示例#11
0
 def empty_book_cb(self, *a):
     model, i = self.sel_group.get_selected()
     if i:
         nm_group = model.get_value(i, 1)
         id_part = model.get_value(i, 0)
         new_bk = self.entry_group.get_text()
         if new_bk == '' :
             asm_customs.erro(self.parent, 'أدخل اسم الكتاب أولا')
             return
         db = join(asm_path.BOOK_DIR_rw, nm_group, new_bk+u'.asm')
         if exists(db):
             asm_customs.erro(self.parent, 'يوجد كتاب بنفس الاسم في هذا القسم')
             return
         self.db.empty_book(db)
         self.db.add_book(new_bk, id_part)
         asm_customs.info(self.parent, 'تم إضافة كتاب فارغ')
示例#12
0
 def merge_group_cb(self, *a):
     model, i = self.sel_group.get_selected()
     id_old = model.get_value(i, 0)
     old_group = model.get_value(i, 1)
     if self.db.check_books_part(id_old) == True:
         asm_customs.erro(self.parent, 'لا يمكن دمج هذا القسم في غيره\nلأن بعض كتبه للقراءة فقط')
         return
     if i:
         msg = self.choose_part(self.parent, 'هل تريد دمج القسم المحدد مع هذا القسم ؟')
         if msg == Gtk.ResponseType.YES:
             for v in listdir(join(asm_path.BOOK_DIR_rw, old_group)):
                 copyfile(join(asm_path.BOOK_DIR_rw, old_group, v),
                           join(asm_path.BOOK_DIR_rw, self.received_part_name, v))
             self.db.merge_group(id_old, self.received_part_id)
             rmtree(join(asm_path.BOOK_DIR_rw, old_group))
             self.refresh_groups()
示例#13
0
 def search_on_active(self, text):
     if text == '': return
     self.store_search.clear()
     self.scroll_index.hide()
     self.scroll_search.show_all()
     phrase = '''fuzzy(nass) LIKE ? ESCAPE "|"'''
     text = asm_araby.fuzzy(text)
     self.search_tokens = asm_araby.tokenize_search(text)
     phrase2 = list(map(lambda phrase: '%'+phrase.replace('|','||').replace('%','|%')+'%', self.search_tokens))
     if len(phrase2) < 1: return []
     condition = ' AND '.join([phrase]*len(phrase2))
     self.db.search(text, self.store_search, condition, phrase2)
     if len(self.store_search) == 0:
         self.hide_search()
         asm_customs.erro(self.parent, 'لا يوجد نتائج')
         return
     self.hp.set_position(200)
示例#14
0
 def remove_group(self,*a):
     model, i = self.sel_group.get_selected()
     id_group = model.get_value(i, 0)
     nm_group = model.get_value(i, 1)
     if self.db.check_books_part(id_group) == True:
         asm_customs.erro(self.parent, 'لا يمكن حذف هذا القسم\nلأن بعض كتبه للقراءة فقط')
         return
     if i:
         msg = asm_customs.sure(self.parent, u'''
         سيتم حذف قسم "{}"
         مع جميع كتبه، هل تريد الاستمرار ؟
         '''.format(nm_group,))
         if msg == Gtk.ResponseType.YES:
             check = self.db.remove_group(id_group)
             if check == None:
                 rmtree(join(asm_path.BOOK_DIR_rw, nm_group))
                 self.refresh_groups()
示例#15
0
 def new_waraka(self, *a):
     new_waraka = self.ent_new.get_text()
     if new_waraka == u"":
         return
     myfile = join(asm_path.LIBRARY_DIR_rw, u"waraka-search", new_waraka)
     if not exists(myfile):
         try:
             f = open(myfile, "w+")
             f.write(new_w)
             f.close()
         except:
             raise
     else:
         asm_customs.erro(self.parent, "يوجد ورقة بنفس الاسم يرجى تغيير الاسم.")
         return
     self.store_waraka.append([new_waraka])
     self.ent_new.set_text("")
示例#16
0
 def tafsir_ayat(self, *a):
     all_ayat = self.db.ayat_in_page(self.page_id)
     self.parent.tafsirpage.store_search.clear()
     if len(all_ayat[0]) == 0:
         asm_customs.erro(self.parent, 'لا يوجد نتيجة'); return
     else: 
         for ayat in all_ayat:
             i_sura = ayat[0]
             i_ayat = ayat[1]
             suras_names = Othman().get_suras_names()
             sura = suras_names[i_sura-1]
             self.parent.tafsirpage.store_search.append(None, [i_sura, i_ayat, sura[1]])
             self.parent.tafsirpage.notebook.set_current_page(1)
     self.parent.tafsirpage.view_tafsir_bfr.set_text('')
     self.parent.tafsirpage.sel_search.select_path((0,))
     self.parent.notebook.set_current_page(4)
     self.parent.tafsirpage.ok_result()
示例#17
0
def tarjama_rawi(widget, buff, parent):
    if buff.get_has_selection():
        sel = buff.get_selection_bounds()
        text = buff.get_text(sel[0], sel[1],True)
        if len(text) >= 3:
            all_rewat = TarajimDB().tardjma('"'+text+'"')
            parent.winspage.tarjamapage.store_tarjama.clear()
            if len(all_rewat) == 0:
                asm_customs.erro(parent, 'لا يوجد نتيجة'); return
            else: 
                for id_rawi in all_rewat:
                    name = id_rawi[1].split(u'،')[0]
                    parent.winspage.tarjamapage.store_tarjama.append(None, [id_rawi[0], name])
            parent.winspage.tarjamapage.tree_tarjama.collapse_all()
            parent.winspage.tarjamapage.view_tarjama_bfr.set_text('')
            parent.winspage.tarjamapage.tree_tarjama.expand_all()
            parent.winspage.tarjamapage.sel_tarjama.select_path((0,))
            parent.notebook.set_current_page(3)
            parent.winspage.set_current_page(1)
示例#18
0
 def search_on_active(self, text):
     if len(text) >= 3:
         all_ayat = Othman().search(text)
         self.store_index.clear()
         if len(all_ayat) == 0:
             asm_customs.erro(self.parent, 'لا يوجد نتيجة'); return
         else: 
             for ayat in all_ayat:
                 sura = ayat[0]
                 aya = ayat[1]
                 suras_names = Othman().get_suras_names()
                 suranm = suras_names[sura-1]
                 id_page = self.db.aya_page(aya, sura)
                 if id_page != self.id_page_last:
                     self.my_aya[id_page] = [ayat[5]]
                     self.id_page_last = id_page
                     self.store_index.append(None, [id_page, suranm[1]])
                 else:
                     self.my_aya[id_page].append(ayat[5])                
示例#19
0
 def replace_cb(widget):
     n_page = int(self.ent_page_move.get_text())
     n_part = int(self.ent_part_move.get_text())
     id_page = self.db.go_to_page(n_part, n_page)
     if id_page == None: 
         for n in range(20):
             id_page = self.db.go_to_nearer_page(n_part, n_page, n+1)
             if id_page != None: break
     if id_page == None: 
         asm_customs.erro(self.parent, "لا يمكن الذهاب إلى الصفحة المحددة")
         return
     if self.current_id < id_page[0]: self.stack.set_transition_type(self.style_browse_next)
     elif self.current_id > id_page[0]: self.stack.set_transition_type(self.style_browse_prev)
     elif self.current_id == id_page[0]: return
     self.show_page(id_page[0])
     ch = self.stack.get_visible_child_name()
     if ch == "n1": 
         self.stack.set_visible_child_name("n2")
     else: 
         self.stack.set_visible_child_name("n1")
     self.popover.hide()
示例#20
0
def tafsir_ayat(widget, buff, parent):
    if buff.get_has_selection():
        sel = buff.get_selection_bounds()
        text = buff.get_text(sel[0], sel[1],True)
        if len(text) >= 3:
            all_ayat = Othman().search('"'+text+'"')
            parent.tafsirpage.store_search.clear()
            if len(all_ayat) == 0:
                asm_customs.erro(parent, 'لا يوجد نتيجة'); return
            else: 
                for ayat in all_ayat:
                    i_sura = ayat[0]
                    i_ayat = ayat[1]
                    suras_names = Othman().get_suras_names()
                    sura = suras_names[i_sura-1]
                    parent.tafsirpage.store_search.append(None, [i_sura, i_ayat, sura[1]])
                    parent.tafsirpage.notebook.set_current_page(1)
            parent.tafsirpage.view_tafsir_bfr.set_text('')
            parent.tafsirpage.sel_search.select_path((0,))
            parent.notebook.set_current_page(4)
            parent.tafsirpage.ok_result()
示例#21
0
 def start_convert(self, *a):
     if self.stack.get_visible_child_name() == "n3":
         if len(self.store_books) == 0:
             asm_customs.erro(self, "يجب إظهار قائمة الكتب أولا!")
             return
         self.btn_convert.set_sensitive(False)
         self.btn_stop.set_sensitive(True)
         self.stop_n = 0
         self.no_book = 1
         self.no_add = u""
         self.btn_convert.set_sensitive(False)
         self.store_books.foreach(self.import_shamela, True)
         if self.no_add != u"":
             asm_customs.erro(self, u"الكتب التي لم يتم إضافتها {}".format(self.no_add))
         self.lab_status.set_text(" لقد انتهت عملية التحويل ")
         self.btn_convert.set_sensitive(True)
     elif self.stack.get_visible_child_name() == "n1":
         id_group = asm_customs.value_active(self.groups)
         if id_group == None:
             if len(self.db.all_parts()) > 0:
                 asm_customs.info(self, "اختر القسم المراد ضم الكتب إليه")
             else:
                 asm_customs.info(self, "اذهب إلى صفحة تنظيم المكتبة وأضف قسما لاستيراد الملفات إليه")
         else:
             self.btn_convert.set_sensitive(False)
             self.btn_stop.set_sensitive(True)
             self.stop_n = 0
             self.import_book()
     elif self.stack.get_visible_child_name() == "n2":
         id_group = asm_customs.value_active(self.groups_doc)
         if id_group == None:
             if len(self.db.all_parts()) > 0:
                 asm_customs.info(self, "اختر القسم المراد ضم الكتب إليه")
             else:
                 asm_customs.info(self, "اذهب إلى صفحة تنظيم المكتبة وأضف قسما لاستيراد الملفات إليه")
         else:
             self.btn_convert.set_sensitive(False)
             self.btn_stop.set_sensitive(True)
             self.stop_n = 0
             self.import_docs()
示例#22
0
 def show_books(self, *a):
     self.comments = {}
     self.shorts = {}
     self.path_shamila = self.entry_shamila.get_text()
     if self.path_shamila == u"":
         asm_customs.erro(self, "لم تحدد موقع المكتبة الشاملة")
         return
     else:
         if not exists(join(self.path_shamila, u"Files")) or not exists(join(self.path_shamila, u"Books")):
             asm_customs.erro(self, "موقع الشاملة المحدد غير صحيح")
             return
         elif not exists(join(self.path_shamila, u"Files", u"main.mdb")) or not exists(
             join(self.path_shamila, u"Files", u"special.mdb")
         ):
             asm_customs.erro(self, "بعض الملفات الضرورية غير موجودة في هذا الدليل")
             return
     self.btn_convert.set_sensitive(False)
     load_list_books = load_list_books_from_shamela(
         join(self.path_shamila, u"Files", u"main.mdb"),
         join(self.path_shamila, u"Files", u"special.mdb"),
         self.store_books,
         self.comments,
         self.shorts,
     )
     self.no_all_book = load_list_books.no_all_book
     self.all_books.set_active(True)
     self.btn_convert.set_sensitive(True)
示例#23
0
 def new_db(self,*a): 
     save_dlg = Gtk.FileChooserDialog(u'مسار قاعدة البيانات الجديدة', self.parent,
                                 Gtk.FileChooserAction.SELECT_FOLDER,
                                 (Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
     res = save_dlg.run()
     if res == Gtk.ResponseType.OK:
         new_dir = join(save_dlg.get_filename(), u'مكتبة أسماء')
         if os.path.exists(join(new_dir, u'data', u'Listbooks.db')):
             asm_customs.erro(self.parent, u'يوجد مكتبة في هذا الدليل بالفعل')
         else: 
             if not os.path.exists(new_dir):
                 os.mkdir(new_dir)
             if not os.path.exists(join(new_dir, u'data')):
                 os.mkdir(join(new_dir, u'data'))
             if not os.path.exists(join(new_dir, u'books')):
                 os.mkdir(join(new_dir, u'books'))
             if not os.path.exists(join(new_dir, u'index')):
                 os.mkdir(join(new_dir, u'index'))
             self.db.new_db(join(new_dir, 'data', 'Listbooks.db'))
             asm_customs.info(self.parent, u'تم إضافة مكتبة مفرغة جديدة')
     save_dlg.destroy()
示例#24
0
def explain_term(widget, buff, parent):
    if buff.get_has_selection():
        sel = buff.get_selection_bounds()
        text = buff.get_text(sel[0], sel[1],True)
        text = asm_customs.first_term(text)
        if len(text) >= 3:
            all_root, all_term = asm_stemming.get_root(u''+text)
            if len(all_root) == 0:
                asm_customs.erro(parent, 'لا يوجد نتيجة'); return
            parent.winspage.dictpage.tree_dict.collapse_all()
            parent.winspage.dictpage.store_dict.clear()
            parent.winspage.dictpage.view_dict_bfr.set_text('')
            if len(all_root) != 0: 
                for text in all_root:
                    parent.winspage.dictpage.store_dict.append(None, [text])
            parent.winspage.dictpage.all_term = all_term
            i = parent.winspage.dictpage.store_dict.get_iter_first()
            p = parent.winspage.dictpage.store_dict.get_path(i)
            parent.winspage.dictpage.sel_dict.select_path(p)
            parent.notebook.set_current_page(3)
            parent.winspage.set_current_page(0)
            parent.winspage.dictpage.search_on_page(u"")
示例#25
0
 def import_shamela(self, model, path, i, fixed):
     # model = 0=bool, 1='BkId', 2='Bk', 3='cat', 4='Betaka', 5='Inf', 6='Auth', 7='TafseerNam', 8='IslamShort', 9='Archive'
     bool0 = model.get_value(i, 0)
     if self.stop_n == 1:
         return True
     if bool0 == fixed:
         nm_book = model.get_value(i, 2)
         id_book = model.get_value(i, 1)
         archive = model.get_value(i, 9)  #######
         i0 = model.iter_parent(i)
         if i0 != None:
             info_list = model.get(i, 1, 2, 4, 5, 6, 7, 8)
             nm_group = model.get_value(i0, 2)
             id_group = model.get_value(i0, 1)
             dr = str(id_book)[-1]
             if archive == 0:
                 book = join(self.path_shamila, "Books", dr, str(id_book) + ".mdb")
             else:
                 book = join(self.path_shamila, "Books", "Archive", str(archive) + ".mdb")
             try:
                 while Gtk.events_pending():
                     Gtk.main_iteration()
                 self.no_book += 1
                 self.progress.set_fraction(float(self.no_book) / float(self.no_all_book))
                 DB_from_MDB(book, nm_group, info_list, self.comments, self.shorts, archive)
                 model.set_value(i, 0, False)
                 self.lab_status.set_text(
                     "({} \ {})  يجري تحويل كتاب {} ".format(self.no_book, self.no_all_book, nm_book)
                 )
             except OSError:
                 asm_customs.erro(self, "حزمة mdbtools \nيرجى تثبيتها لأجل استيراد الكتب غير مثبتة")
                 raise
             except:
                 self.no_add += "\n- " + info_list[1]
                 print("not add {}".format(str(info_list[0]) + ".mdb"))
         return False
示例#26
0
 # a إلغاء التحديد-------------------------
 elif res == 1:
     my_return = 0
     quit()
     
 # a مكتبة مفرغة--------------------------
 elif res == 3:
     save_dlg = Gtk.FileChooserDialog('مسار قاعدة البيانات الجديدة', None,
                                 Gtk.FileChooserAction.SELECT_FOLDER,
                                 (Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
     res = save_dlg.run()
     if res == Gtk.ResponseType.OK:
         new_dir = join(save_dlg.get_filename(), 'مكتبة أسماء')
         if exists(join(new_dir, 'data', 'Listbooks.db')):
             asm_customs.erro(None, 'يوجد مكتبة في هذا الدليل بالفعل')
         else:
             if not exists(new_dir):
                 mkdir(new_dir)
             if not exists(join(new_dir, 'data')):
                 mkdir(join(new_dir, 'data'))
             if not exists(join(new_dir, 'books')):
                 mkdir(join(new_dir, 'books'))
             if not exists(join(new_dir, 'index')):
                 mkdir(join(new_dir, 'index'))
             con = sqlite3.connect(join(new_dir, 'data', 'Listbooks.db'))
             cur = con.cursor()
             cur.execute('CREATE TABLE groups (id_group integer primary key, \
             tit varchar(255), sub INTEGER, cat INTEGER)') 
             cur.execute('CREATE TABLE books (id_book integer primary key, tit varchar(255), \
             parent INTEGER, fav  INTEGER DEFAULT 0, last  INTEGER DEFAULT 1, cat  INTEGER DEFAULT 0,\
示例#27
0
 def import_docs(self, *a):
     self.no_add = u""
     if len(self.store_add_doc) == 0:
         return
     id_group = asm_customs.value_active(self.groups_doc)
     nm_group = asm_customs.value_active(self.groups_doc, 1)
     self.progress.set_fraction(0.0)
     self.btn_clear_doc.set_sensitive(False)
     self.btn_convert.set_sensitive(False)
     self.btn_remove_doc.set_sensitive(False)
     self.btn_add_doc.set_sensitive(False)
     if not self.is_book_radio.get_active():
         new_book = self.name_book_entry.get_text()
         if new_book == u"":
             asm_customs.info(self, "ضع اسما للكتاب المراد استيراده")
             return
         list_page = []
         list_title = []
         id_page = 1
     n_docs = len(self.store_add_doc)
     f = 0
     self.no_add = u""
     while len(self.store_add_doc) > 0:
         f += 1
         self.progress.set_fraction(float(f) / float(n_docs))
         while Gtk.events_pending():
             Gtk.main_iteration()
         if self.is_book_radio.get_active():
             new_book = re.sub(u"\....?.?$", u"", self.store_add_doc[0][1])
             text_book = self.get_text_from_file(self.store_add_doc[0][0], self.store_add_doc[0][1])
             if text_book != None and len(text_book) != 0:
                 pages = self.split_text_to_pages(text_book)
                 list_page = []
                 for a in range(len(pages)):
                     list_page.append([a + 1, pages[a], 1, a + 1])
                 list_title = [[1, new_book, 1, 0]]
                 self.make_book(new_book, id_group, nm_group, list_page, list_title)
         elif self.is_part_radio.get_active():
             text_book = self.get_text_from_file(self.store_add_doc[0][0], self.store_add_doc[0][1])
             if text_book != None and len(text_book) != 0:
                 pages = self.split_text_to_pages(text_book)
                 for a in range(len(pages)):
                     list_page.append([id_page, pages[a], f, a + 1])
                     id_page += 1
                 list_title.append([id_page - len(pages), u"الجزء {}".format(f), 1, 0])
         else:
             text_book = self.get_text_from_file(self.store_add_doc[0][0], self.store_add_doc[0][1])
             if text_book != None and len(text_book) != 0:
                 list_page.append([f, text_book, 1, f])
         i = self.store_add_doc.get_iter_first()
         self.store_add_doc.remove(i)
     if not self.is_book_radio.get_active():
         if list_title == []:
             list_title = [[1, new_book, 1, 0]]
         if self.no_add != u"":
             msg = asm_customs.sure(
                 self,
                 u"""
             عدد الملفات التي لم يتمكن من إضافتها هو {}
             هل تريد الاستمرار في تكوين الكتاب ؟
             """.format(
                     len(self.no_add.split("\n"))
                 ),
             )
             if msg == Gtk.ResponseType.YES:
                 self.make_book(new_book, id_group, nm_group, list_page, list_title)
     self.progress.set_text("انتهى !!")
     self.progress.set_fraction(1.0)
     self.btn_clear_doc.set_sensitive(True)
     self.btn_convert.set_sensitive(True)
     self.btn_remove_doc.set_sensitive(True)
     self.btn_add_doc.set_sensitive(True)
     if self.no_add != u"":
         asm_customs.erro(self, u"الملفات التي لم يتم إضافتها {}".format(self.no_add))