Ejemplo n.º 1
0
 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, "تمّ مسح الكلمات المبحوث عنها سابقاً")
Ejemplo n.º 2
0
 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, 'تم تعليم هذا الموضع')
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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()
Ejemplo n.º 5
0
 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 ليتم إزالته منها")
Ejemplo n.º 6
0
 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, 'تم حفظ المعلومات الجديدة')
Ejemplo n.º 7
0
 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()
Ejemplo n.º 8
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, 'تم إضافة كتاب فارغ')
Ejemplo n.º 9
0
    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, "سوف تحتاج إلى إعادة تشغيل مكتبة أسماء")
Ejemplo n.º 10
0
 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()
Ejemplo n.º 11
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()
Ejemplo n.º 12
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()
Ejemplo n.º 13
0
 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))
Ejemplo n.º 14
0
 def modify_data(self, *a):
     asm_customs.info(self.parent, 'تم تعديل البيانات بنجاح')
     return
Ejemplo n.º 15
0
                    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))
Ejemplo n.º 16
0
 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, 'تم مسح الفهرس .')
Ejemplo n.º 17
0
    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()
Ejemplo n.º 18
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, ))