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()
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)
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()
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)
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()
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("")
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))
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
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]])
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()
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, 'تم إضافة كتاب فارغ')
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()
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)
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()
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("")
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()
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)
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])
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()
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()
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()
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)
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()
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"")
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
# 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,\
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))