Exemplo n.º 1
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.HOME_DIR, 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)
Exemplo n.º 2
0
 def replace_cb(widget):
     n_page = int(ent_page.get_text())
     n_part = int(ent_part.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")
     dlg.destroy()
Exemplo n.º 3
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, u'fields-search', nm + u'.pkl'), 'wb')
     pickle.dump(self.selected_books, output)
     output.close()
     self.ent_field.set_text('')
     self.load_fields()
Exemplo n.º 4
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(join(asm_path.HOME_DIR, 'searchs')):
         asm_customs.erro(self.parent, "يوجد بحث محفوظ بنفس الاسم !!")
     else:
         output = open(join(asm_path.HOME_DIR, 'searchs', nm + u'.pkl'),
                       'wb')
         pickle.dump((self.text, self.results_books), output)
         output.close()
     self.sav_result_entry.set_text("")
Exemplo n.º 5
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
Exemplo n.º 6
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 = ''
        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:] == '.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, nm_group, nm_file)
                    copyfile(book, new_book)
                    self.db.add_book(nm_book, id_group, is_tafsir)
                except:
                    self.no_add += '\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 += '\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 != '':
            asm_customs.erro(
                self, 'الكتب التي لم يتم إضافتها {}'.format(self.no_add, ))
Exemplo n.º 7
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]])
Exemplo n.º 8
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()
Exemplo n.º 9
0
 def new_waraka(self, *a):
     if asm_path.can_modify(self.parent):
         new_waraka = self.ent_new.get_text()
         if new_waraka == u'': return
         myfile = join(asm_path.LIBRARY_DIR, 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('')
Exemplo n.º 10
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, nm_group, new_bk + '.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, 'تم إضافة كتاب فارغ')
Exemplo n.º 11
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)
Exemplo n.º 12
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()
Exemplo n.º 13
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
Exemplo n.º 14
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)
Exemplo n.º 15
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])
Exemplo n.º 16
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()
Exemplo n.º 17
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)
Exemplo n.º 18
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, 'searchs', u'آخر بحث.pkl'),
                       'wb')
         pickle.dump((text, sr.results_books), output)
         output.close()
Exemplo n.º 19
0
 def new_db(self,*a): 
     save_dlg = Gtk.FileChooserDialog('مسار قاعدة البيانات الجديدة', 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(), 'مكتبة أسماء')
         if os.path.exists(join(new_dir, 'data', 'Listbooks.db')):
             asm_customs.erro(self.parent, 'يوجد مكتبة في هذا الدليل بالفعل')
         else: 
             if not os.path.exists(new_dir):
                 os.mkdir(new_dir)
             if not os.path.exists(join(new_dir, 'data')):
                 os.mkdir(join(new_dir, 'data'))
             if not os.path.exists(join(new_dir, 'books')):
                 os.mkdir(join(new_dir, 'books'))
             if not os.path.exists(join(new_dir, 'index')):
                 os.mkdir(join(new_dir, 'index'))
             self.db.new_db(join(new_dir, 'data', 'Listbooks.db'))
             asm_customs.info(self.parent, 'تم إضافة مكتبة مفرغة جديدة')
     save_dlg.destroy()
Exemplo n.º 20
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"")
Exemplo n.º 21
0
 def show_books(self, *a):
     self.comments = {}
     self.shorts = {}
     self.path_books = self.entry_books_dir.get_text()
     if self.path_books == '':
         asm_customs.erro(self, "لم تحدد موقع الكتب")
         return
     self.path_main_mdb = self.entry_main_mdb.get_text()
     if self.path_main_mdb == '':
         asm_customs.erro(self, "لم تحدد موقع main.mdb")
         return
     self.path_special_mdb = self.entry_special_mdb.get_text()
     if self.path_special_mdb == '':
         asm_customs.erro(self, "لم تحدد موقع special.mdb")
         return
     self.btn_convert.set_sensitive(False)
     load_list_books = load_list_books_from_shamela(self.path_main_mdb,
                                                    self.path_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)
Exemplo n.º 22
0
    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(
Exemplo n.º 23
0
 def import_docs(self, *a):
     self.no_add = ''
     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 == '':
             asm_customs.info(self, "ضع اسما للكتاب المراد استيراده")
             return
         list_page = []
         list_title = []
         id_page = 1
     n_docs = len(self.store_add_doc)
     f = 0
     self.no_add = ''
     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('\....?.?$', '', 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), 'الجزء {}'.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 != '':
             msg = asm_customs.sure(
                 self, '''
             عدد الملفات التي لم يتمكن من إضافتها هو {}
             هل تريد الاستمرار في تكوين الكتاب ؟
             '''.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 != '':
         asm_customs.erro(
             self, 'الملفات التي لم يتم إضافتها {}'.format(self.no_add, ))