def remove_iters(self, *a): res_self = asm_customs.sure(self, " هل ترغب في حذف جميع النتائج الموجودة ؟") if res_self == -8: for a in self.list_n: if a[-4:] == '.pkl': os.remove(join(asm_path.HOME_DIR, 'searchs', a)) self.store_sav.clear()
def rm_last_all(self, *a): msg = asm_customs.sure(self.parent, "هل تريد مسح قائمة الكتب المفتوحة أخيرا") if msg == Gtk.ResponseType.YES: remove(join(asm_path.DATA_DIR, 'last-books.pkl')) self.last_books = [] self.store_last.clear()
def remove_iter(self, *a): (model, i) = self.tree_sav.get_selection().get_selected() if i : res_self = asm_customs.sure(self, " هل ترغب في حذف النتيجة المحددة ؟") if res_self == -8: nm = model.get_value(i,0) os.remove(join(asm_path.HOME_DIR, 'searchs', nm+'.pkl')) self.store_sav.remove(i)
def copy_to_home_cb(self, *a): res = asm_customs.sure(self.parent, 'قد تحتاج هذه العملية إذا كان لديك قاعدة بيانات\nفي مسار لا تملك الصلاحيات \ للتعديل عليها فيه\nهل تريد المواصلة ؟') if res == -8: if not exists(expanduser('~/مكتبة أسماء')): os.mkdir(expanduser('~/مكتبة أسماء')) if not exists(join(expanduser('~/مكتبة أسماء'), 'books')): os.mkdir(join(expanduser('~/مكتبة أسماء'), 'books')) groups = self.db.all_parts() for g in groups: copytree(join(asm_path.LIBRARY_DIR, 'books', g[1]), join(expanduser('~/مكتبة أسماء'), 'books', g[1])) copytree(join(asm_path.LIBRARY_DIR, 'data'), join(expanduser('~/مكتبة أسماء'), 'data')) copytree(join(asm_path.LIBRARY_DIR, 'index'), join(expanduser('~/مكتبة أسماء'), 'index')) asm_customs.info(self.parent, 'تمت عملية النسخ بنجاح') res = asm_customs.sure(self.parent, 'قد تحتاج تغيير المسار إلى القاعدة الجديدة\nهل تريد فعل ذلك ؟') if res == -8: asm_config.setv('path', join(expanduser('~/مكتبة أسماء'), 'data', 'Listbooks.db')) asm_customs.info(self.parent, "سوف تحتاج إلى إعادة تشغيل مكتبة أسماء")
def remove_all(self, *a): msg = asm_customs.sure(self.parent, "هل تريد مسح جميع أوراق البحث") if msg == Gtk.ResponseType.YES: list_n = os.listdir(join(asm_path.LIBRARY_DIR, 'waraka-search')) for v in list_n: os.remove(join(asm_path.LIBRARY_DIR, 'waraka-search', v)) self.store_waraka.clear() self.edit_html.set_sensitive(False) self.edit_html.clear_page()
def remove_one(self, *a): model, i = self.tree_waraka.get_selection().get_selected() if i: msg = asm_customs.sure(self.parent, "هل تريد مسح الورقة المحددة") if msg == Gtk.ResponseType.YES: waraka = model.get_value(i, 0) os.remove(join(asm_path.LIBRARY_DIR, 'waraka-search', waraka)) model.remove(i) self.edit_html.set_sensitive(False)
def rm_fav_one(self, *a): model, i = self.sel_favorite.get_selected() if i: msg = asm_customs.sure(self.parent, "هل تريد مسح الكتاب المحدد من المفضلة") if msg == Gtk.ResponseType.YES: id_book = model.get_value(i, 0) check = self.db.out_favorite(id_book) if check == None: model.remove(i)
def edit_tafsir_cb(self, *a): book = self.db.file_book(self.id_book) info = self.db.info_book(book) if info[8] != 1: msg = asm_customs.sure(self.parent, 'هذا الكتاب ليس تفسيرا هل تريد جعله كذلك') if msg == Gtk.ResponseType.YES: self.db.make_tafsir(book, self.id_book) else: return EditTafsir(self.parent, self.id_book)
def out_tafsir(self, *a): model, i = self.sel_tafsir_no_added.get_selected() if i: nm = model.get_value(i, 1) msg = asm_customs.sure(self.parent, 'هل تريد إزالة {} من القائمة؟'.format(nm, )) if msg == Gtk.ResponseType.YES: id_tafsir = model.get_value(i, 0) tafsir = self.db.file_book(id_tafsir) self.db.out_tafsir(tafsir, id_tafsir) model.remove(i) else: asm_customs.info(self.parent, "يجب تعليم التفسير في قائمة التفاسير المهملة\n ليتم إزالته منها")
def editbk_cb(self, *a): if asm_path.can_modify(self.parent): msg = asm_customs.sure( self.parent, 'عملية تعديل الكتاب عملية دقيقة،\nأي خطأ قد يؤدي لتلف الكتاب،\nهل تريد الاستمرار؟' ) if msg == Gtk.ResponseType.YES: self.parent.editbook.close_db() book = self.db_list.file_book(self.id_book) self.parent.editbook.add_book(book, self.id_book, self.all_in_page[1]) self.parent.notebook.set_current_page(7)
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 i: msg = asm_customs.sure( self.parent, ''' سيتم حذف قسم "{}" مع جميع كتبه، هل تريد الاستمرار ؟ '''.format(nm_group, )) if msg == Gtk.ResponseType.YES: check = self.db.remove_group(id_group) if check == None: rmtree(join(asm_path.BOOK_DIR, nm_group)) self.refresh_groups()
def remove_book(self, *a): model0, i0 = self.sel_group.get_selected() nm_group = model0.get_value(i0, 1) model, i = self.sel_book.get_selected() if i: id_book = model.get_value(i, 0) nm_book = model.get_value(i, 1) msg = asm_customs.sure( self.parent, ''' سيتم حذف كتاب "{}" هل تريد الاستمرار ؟ '''.format(nm_book, )) if msg == Gtk.ResponseType.YES: check = self.db.remove_book(id_book) if check == None: unlink(join(asm_path.BOOK_DIR, nm_group, nm_book + '.asm')) self.ok_group()
def save_book(self, *a): page_dict = {} res = asm_customs.sure( self.parent, 'هل أكملت جميع التغييرات المبتغاة وتريد الحفظ؟') if res == Gtk.ResponseType.YES: self.db.cur.execute("BEGIN;") self.db.cur.execute('ATTACH ? as f', (self.new_book, )) for tb in asm_customs.schema.keys(): self.db.cur.execute( 'CREATE TABLE IF NOT EXISTS f.{} ({})'.format( tb, asm_customs.schema[tb])) for i in ['main', 'shorts', 'shrooh', 'com']: self.db.cur.execute( "INSERT INTO f.{} SELECT * FROM main.{}".format(i, i)) pg = 0 while pg in range(len(self.all_pages)): if self.all_pages[pg][0] <= len(self.db.list_pages): all_in_page = self.db.get_text_body(self.all_pages[pg][0]) text = all_in_page[2] hno, sora, aya, na = all_in_page[5:] else: text = u'' hno, sora, aya, na = [0, 0, 0, 0] if self.all_pages[pg][0] in self.modified_pages.keys(): text = self.modified_pages[self.all_pages[pg][0]] part, page = self.all_pages[pg][1], self.all_pages[pg][2] self.db.cur.execute( 'INSERT INTO f.pages VALUES (?, ?, ?, ?, ?, ?, ?, ?)', (pg + 1, text, part, page, hno, sora, aya, na)) page_dict[self.all_pages[pg][0]] = pg + 1 pg += 1 for ti in self.store_index: try: self.db.cur.execute( 'INSERT INTO f.titles VALUES (?, ?, ?, ?)', (page_dict[ti[0]], ti[1].strip(), ti[1].count(' ') + 1, 0)) except: continue self.db.con.commit() self.db.cur.execute('DETACH f') os.unlink(self.book) os.rename(self.new_book, self.book)
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, ))