def del_history(self, *a): self.list_terms = [] output = open(join(asm_path.HOME_DIR, u'last-terms.pkl'), 'wb') pickle.dump(self.list_terms, output) output.close() self.list_ts.clear() asm_customs.info(self.parent, "تمّ مسح الكلمات المبحوث عنها سابقاً")
def site_in_book(self, *a): list_marks = eval(asm_config.getv('marks')) if self.notebook.get_current_page() == 1: n = self.viewerbook.get_current_page() ch = self.viewerbook.get_nth_page(n) list_marks.append([ch.all_in_page[1], ch.nm_book, ch.id_book]) marks = repr(list_marks) asm_config.setv('marks', marks) asm_customs.info(self, 'تم تعليم هذا الموضع')
def add_to_favory(self, *a): model, i = self.sel_book.get_selected() if i: id_book = model.get_value(i, 0) nm_book = model.get_value(i, 1) check = self.db.to_favorite(id_book) if check == None: asm_customs.info( self.parent, 'تم إضافة كتاب "{}" للمفضلة'.format(nm_book, )) self.parent.list_books.load_fav()
def add_to_favory(self, *a): if asm_path.can_modify(self): if self.notebook.get_current_page() == 1: n = self.viewerbook.get_current_page() ch = self.viewerbook.get_nth_page(n) check = ch.db_list.to_favorite(ch.id_book) if check == None: asm_customs.info( self, 'تم إضافة كتاب "{}" للمفضلة'.format(ch.nm_book, )) self.list_books.load_fav()
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 save_cb(self, *a): txt_bitaka = self.view_bitaka_bfr.get_text( self.view_bitaka_bfr.get_start_iter(), self.view_bitaka_bfr.get_end_iter(), False) txt_info = self.view_info_bfr.get_text( self.view_info_bfr.get_start_iter(), self.view_info_bfr.get_end_iter(), False) name = self.ent_name.get_text() short_name = self.ent_name_sh.get_text() if self.has_shorts.get_active(): is_short = 1 else: is_short = 0 self.db.save_info(self.book, name, short_name, txt_bitaka, txt_info, is_short) asm_customs.info(self.parent, 'تم حفظ المعلومات الجديدة')
def change_path_db(self, *a): open_dlg = Gtk.FileChooserDialog('تغيير مسار قاعدة البيانات', self.parent, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_OK, Gtk.ResponseType.OK, Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL)) Filter = Gtk.FileFilter() Filter.set_name("قاعدة البيانات") Filter.add_pattern("Listbooks.db") open_dlg.add_filter(Filter) res = open_dlg.run() if res == Gtk.ResponseType.OK: asm_config.setv('path', open_dlg.get_filenames()[0]) asm_customs.info(self.parent, 'يرجى إعادة تشغيل المكتبة ليتغير المسار فعليا!') open_dlg.destroy()
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, 'تم إضافة كتاب فارغ')
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 move_book_cb(self, *a): model0, i0 = self.sel_group.get_selected() old_group = model0.get_value(i0, 1) model, i = self.sel_book.get_selected() if i: msg = self.choose_part( self.parent, 'هل تريد نقل الكتاب المحدد إلى هذا القسم ؟') if msg == Gtk.ResponseType.YES: id_book = model.get_value(i, 0) nm_book = model.get_value(i, 1) self.db.change_group(id_book, self.received_part_id) copyfile( join(asm_path.BOOK_DIR, old_group, nm_book + '.asm'), join(asm_path.BOOK_DIR, self.received_part_name, nm_book + '.asm')) unlink(join(asm_path.BOOK_DIR, old_group, nm_book + '.asm')) asm_customs.info( self.parent, 'تم نقل الكتاب "{}" إلى قسم "{}"'.format( nm_book, self.received_part_name)) self.ok_group()
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()
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 count_cb(self, *a): n_group = len(self.db.all_parts()) n_book = self.db.n_books() asm_customs.info(self.parent, 'عدد الأقسام : {}\nعدد الكتب : {}'.format(n_group,n_book))
def modify_data(self, *a): asm_customs.info(self.parent, 'تم تعديل البيانات بنجاح') return
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,\ tafsir INTEGER DEFAULT 0, indx INTEGER DEFAULT 0)') asm_config.setv('path', join(new_dir, 'data', 'Listbooks.db')) asm_customs.info(None, 'تم إضافة مكتبة مفرغة جديدة') else: y_return = 0 quit() save_dlg.destroy() # a المسار الافتراضي-------------------------- elif res == 4: asm_config.setv('path', DEFAULT_LISTBOOK_FILE) # a إلغاء التحديد---------------------------- else: my_return = 0 quit() library_path = asm_config.getv('path') LIBRARY_DIR = dirname(dirname(library_path))
def rv_index_cb(self, *a): check = self.db.remove_index() if check == None: rmtree(join(asm_path.INDEX_DIR, 'my_index')) asm_customs.info(self.parent, 'تم مسح الفهرس .')
def build(self,*a): self.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT) self.set_transition_duration(300) self.list_btn_colors = [] #--------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_color = Gtk.ToolButton() btn_color.set_label('الألوان') vb.pack_start(btn_color, False, False, 0) btn_color.connect('clicked', lambda *a: self.set_visible_child_name('n1')) btn_font = Gtk.ToolButton() btn_font.set_label('الخطوط') vb.pack_start(btn_font, False, False, 0) btn_font.connect('clicked', lambda *a: self.set_visible_child_name('n2')) vb.pack_start(Gtk.Separator(), False, False, 3) btn_wins = Gtk.ToolButton() btn_wins.set_label('النوافذ') vb.pack_start(btn_wins, False, False, 0) btn_wins.connect('clicked', lambda *a: self.set_visible_child_name('n3')) btn_option = Gtk.ToolButton() btn_option.set_label('العمليات') vb.pack_start(btn_option, False, False, 0) btn_option.connect('clicked', lambda *a: self.set_visible_child_name('n4')) btn_prefe = Gtk.ToolButton() btn_prefe.set_label('الخيارات') vb.pack_start(btn_prefe, False, False, 0) btn_prefe.connect('clicked', lambda *a: self.set_visible_child_name('n5')) vb.pack_start(Gtk.Separator(), False, False, 3) btn_info = Gtk.ToolButton() btn_info.set_label('معلومات') vb.pack_start(btn_info, False, False, 0) btn_info.connect('clicked', lambda *a: self.set_visible_child_name('n6')) btn_about = Gtk.ToolButton() btn_about.set_label('حول المكتبة') btn_about.connect('clicked', lambda *a: About(self.parent)) vb.pack_start(btn_about, False, False, 0) self.add_named(vb, 'n0') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) ls = ['أصفر' ,'أزرق','أحمر','أخضر','بنفسجي','معتم', 'مخصص'] self.style_btn = Gtk.ComboBoxText() self.style_btn.set_name('style_btn') for a in ls: self.style_btn.append_text(a) self.style_btn.set_active(asm_config.getn('theme')) self.style_btn.connect("changed", self.specified) hb = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) self.btn_specific = Gtk.Button('تخصيصه') self.btn_specific.connect('clicked', self.specific_cb) hb.pack_start(self.btn_specific, False, False, 0) hb.pack_end(self.style_btn, False, False, 0) hb.pack_end(Gtk.Label('الألوان : '), False, False, 0) vb.pack_start(hb, False, False, 0) self.vbox_color = Gtk.Box(spacing=10,orientation=Gtk.Orientation.VERTICAL) self.vbox_color.set_border_width(10) if asm_config.getn('theme') == 6: self.btn_specific.set_no_show_all(True) self.btn_specific.hide() else: self.vbox_color.set_no_show_all(True) self.vbox_color.hide() self.set_btns_color() scroll = Gtk.ScrolledWindow() scroll.set_shadow_type(Gtk.ShadowType.NONE) scroll.add(self.vbox_color) vb.pack_start(scroll, True, True, 0) self.add_named(vb, 'n1') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) vb_font = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) list_fonts = [['خط النافذة','_window'], ['قائمة الأقسام','_lists_parts'], ['قائمة الكتب','_lists_books'], ['القوائم الجانبية','_lists_titles'], ['نص الكتاب','_nasse_books'], ['نصوص أخرى','_nasse_others'], ['العناوين','_anawin'], ['القرآن الكريم','_quran']] for a in list_fonts: hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL) btn = Gtk.FontButton.new_with_font(asm_config.getv('font{}'.format(a[1]))) btn.set_name('font'+a[1]) btn.connect('font-set',self.ch_font) hbox.pack_end(btn, False, False, 0) hbox.pack_start(Gtk.Label(a[0]), False, False, 0) vb_font.pack_start(hbox, False, False, 0) scroll = Gtk.ScrolledWindow() scroll.set_shadow_type(Gtk.ShadowType.NONE) scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) scroll.add(vb_font) vb.pack_start(scroll, True, True, 0) sf = asm_config.getf('scale_fonts') ad1 = Gtk.Adjustment(sf, 1, 2, 5, 0.0, 0) self.h_scale = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1) self.h_scale.set_draw_value(True) self.h_scale.set_has_origin(True) self.h_scale.set_digits(1) self.h_scale.set_valign(Gtk.Align.START) self.h_scale.connect("value-changed", self.scale_fonts_c) self.h_scale.set_hexpand(True) self.h_scale.add_mark(1.0,0,None) self.h_scale.add_mark(1.1,0,None) self.h_scale.add_mark(1.2,0,None) self.h_scale.add_mark(1.3,0,None) self.h_scale.add_mark(1.4,0,None) self.h_scale.add_mark(1.5,0,None) self.h_scale.add_mark(1.6,0,None) self.h_scale.add_mark(1.7,0,None) self.h_scale.add_mark(1.8,0,None) self.h_scale.add_mark(1.9,0,None) self.h_scale.add_mark(2.0,0,None) vb.pack_start(Gtk.Separator(), False, False, 3) vb.pack_start(self.h_scale, False, False, 0) self.add_named(vb, 'n2') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) btn_win_organize = Gtk.ToolButton() btn_win_organize.set_label('تعديل المكتبة') btn_win_organize.connect('clicked', self.cheeck_page, 1) vb.pack_start(btn_win_organize, False, False, 0) btn_win_siana = Gtk.ToolButton() btn_win_siana.set_label('نافذة الصيانة') btn_win_siana.connect('clicked', self.cheeck_page, 2) vb.pack_start(btn_win_siana, False, False, 0) btn_win_add = Gtk.ToolButton() btn_win_add.set_label('نافذة الاستيراد') btn_win_add.connect('clicked', self.cheeck_page, 3) vb.pack_start(btn_win_add, False, False, 0) btn_win_export = Gtk.ToolButton() btn_win_export.set_label('نافذة التصدير') btn_win_export.set_sensitive(False) #btn_win_export.connect('clicked', lambda *a: AddBooks(self.parent)) vb.pack_start(btn_win_export, False, False, 0) btn_win_index = Gtk.ToolButton() btn_win_index.set_label('نافذة الفهرسة') btn_win_index.set_sensitive(False) vb.pack_start(btn_win_index, False, False, 0) self.add_named(vb, 'n3') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) self.add_db = Gtk.ToolButton() self.add_db.set_label('إنشاء مكتبة مفرّغة') self.add_db.connect('clicked', self.new_db) vb.pack_start(self.add_db, False, False, 0) self.b_dest = Gtk.ToolButton() self.b_dest.set_label('تغيير مسار المكتبة') self.b_dest.connect('clicked', self.change_path_db) self.b_path = Gtk.ToolButton() self.b_path.set_label('عرض المسار الحاليّ') self.b_path.connect('clicked', lambda *a: asm_customs.info(self.parent, asm_config.getv('path'))) vb.pack_start(self.b_dest, False, False, 0) vb.pack_start(self.b_path, False, False, 0) self.copy_to_home = Gtk.ToolButton() self.copy_to_home.set_label('نسخ المكتبة إلى المنزل') self.copy_to_home.set_tooltip_text('هذا الخيار إذا كانت كتب المكتبة في دليل :\nلا يمكن الكتابة فيه') self.copy_to_home.connect('clicked', self.copy_to_home_cb) vb.pack_start(self.copy_to_home, False, False, 0) self.add_named(vb, 'n4') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) self.saved_session = Gtk.CheckButton('حفظ الجلسة عند الإغلاق') vb.pack_start(self.saved_session, False, False, 0) if asm_config.getn('saved_session') == 1: self.saved_session.set_active(True) else: self.saved_session.set_active(False) self.saved_session.connect("toggled", self.saved_session_cb) self.active_mouse_browse = Gtk.CheckButton('التصفح بعجلة الفأرة') vb.pack_start(self.active_mouse_browse, False, False, 0) if asm_config.getn('mouse_browse') == 1: self.active_mouse_browse.set_active(True) else: self.active_mouse_browse.set_active( False) self.active_mouse_browse.connect("toggled", self.active_mouse_browse_cb) ls = ['بدون', 'اختفاء وظهور', 'زحلقة أفقية', 'زحلقة عمودية'] style_browse = Gtk.ComboBoxText() for a in ls: style_browse.append_text(a) style_browse.connect("changed", self.style_browse_cb) style_browse.set_active(asm_config.getn('style_browse')) hb = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) hb.pack_start(Gtk.Label('نمط التصفح'), False, False, 0) hb.pack_end(style_browse, False, False, 0) vb.pack_start(hb, False, False, 0) ls = ['0.1', '0.2', '0.5', '1', '1.5', '2', '3'] time_browse = Gtk.ComboBoxText() for a in ls: time_browse.append_text(a) time_browse.connect("changed", self.time_browse_cb) time_browse.set_active(asm_config.getn('time_browse')) hb = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) hb.pack_start(Gtk.Label('زمن التصفح بالثواني'), False, False, 0) hb.pack_end(time_browse, False, False, 0) vb.pack_start(hb, False, False, 0) ls = ['1', '2', '3', '4', '5', '10'] auto_browse = Gtk.ComboBoxText() for a in ls: auto_browse.append_text(a) auto_browse.connect("changed", self.auto_browse_cb) idx = ls.index(str(asm_config.getv('auto_browse')), ) auto_browse.set_active(idx) hb = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) hb.pack_start(Gtk.Label('سرعة الاستعراض الآلي'), False, False, 0) hb.pack_end(auto_browse, False, False, 0) vb.pack_start(hb, False, False, 0) self.numbers = Gtk.CheckButton('استعمال أرقام المغاربة') vb.pack_start(self.numbers, False, False, 0) if asm_config.getn('nmbrs') == 1: self.numbers.set_active(True) else: self.numbers.set_active(False) self.numbers.connect("toggled", self.numbers_cb) self.add_named(vb, 'n5') #---------------------------- vb = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL) btn_back = Gtk.ToolButton() btn_back.set_label('الرجوع للخيارات') vb.pack_start(btn_back, False, False, 0) vb.pack_start(Gtk.Separator(), False, False, 3) btn_back.connect('clicked', lambda *a: self.set_visible_child_name('n0')) self.n_books_parts = Gtk.ToolButton() self.n_books_parts.set_label('عدد الكتب') self.n_books_parts.connect('clicked', self.count_cb) vb.pack_start(self.n_books_parts, False, False, 0) self.rapid_count = Gtk.ToolButton() self.rapid_count.set_label('إحصاء سريع') self.rapid_count.connect('clicked', self.count_fast) self.detail_count = Gtk.ToolButton() self.detail_count.set_label('إحصاء مفصل') self.detail_count.connect('clicked', self.count_detail) vb.pack_start(self.rapid_count, False, False, 0) vb.pack_start(self.detail_count, False, False, 0) web_page = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/asmaalibrary/files/", 'صفحة البرنامج على الشّبكة') vb.pack_start(web_page, False, False, 0) db_void = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/asmaalibrary/files/AsmaaLibrary.tar.gz/download", 'تنزيل قاعدة بيانات للتجربة') vb.pack_start(db_void, False, False, 0) db_all = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/asmaalibrary/files/AsmaaLibrary.tar.xz/download", 'تنزيل مكتبة كاملة 4000 كتاب') vb.pack_start(db_all, False, False, 0) self.add_named(vb, 'n6') self.show_all()
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, ))