コード例 #1
0
ファイル: asm_window.py プロジェクト: wahaproject/asmaa
 def show_side(self, *a):
     if asm_config.getn('show_side') == 0:
         self.list_books.vbox_side.hide()
         asm_config.setv('show_side', 1)
     else:
         self.list_books.vbox_side.show_all()
         asm_config.setv('show_side', 0)
コード例 #2
0
ファイル: asm_viewer.py プロジェクト: wahaproject/asmaa
 def show_page(self, id_page):
     self.all_in_page = self.db.get_text_body(id_page)#rowid, id, text, part, page, hno, sora, aya, na
     if asm_config.getn('tashkil') == 0: now_text = asm_araby.stripHarakat(self.all_in_page[2])
     else: now_text = self.all_in_page[2]
     self.has_commment(id_page)
     titles = self.db.titles_page(self.all_in_page[1])
     ch = self.stack.get_visible_child_name()
     if ch == "n1": 
         self.view_nasse_bfr2.set_text(now_text)
         self.view_nasse_bfr2.insert(self.view_nasse_bfr2.get_end_iter(), " \n")
         try: asm_customs.with_tag(self.view_nasse_bfr2, self.view_title_tag2, titles)
         except: pass 
     else:
         self.view_nasse_bfr1.set_text(now_text)
         self.view_nasse_bfr1.insert(self.view_nasse_bfr1.get_end_iter(), " \n")
         try: asm_customs.with_tag(self.view_nasse_bfr1, self.view_title_tag1, titles)
         except: pass
     self.is_tafsir(self.all_in_page)
     self.current_id = self.all_in_page[0]
     self.ent_page.set_text(str(self.all_in_page[4]))
     self.ent_part.set_text(str(self.all_in_page[3]))
     text = self.parent.entry_search.get_text()
     if len(text) >= 2 and text != "ال": 
         self.search_now(text)
     if len(self.opened_old) == 0: self.opened_old.append(id_page)
     elif id_page != self.opened_old[-1]: self.opened_old.append(id_page)
     self.stack.show_all()
     self.scroll_nasse1.get_vadjustment().set_value(0.0)
     self.scroll_nasse2.get_vadjustment().set_value(0.0)
コード例 #3
0
ファイル: asm_contacts.py プロジェクト: wahaproject/asmaa
 def expand_shorts(self, txt):
     if asm_config.getn('nmbrs') == 0: 
         for i, j in self.altered: txt = txt.replace(i, j)
     else: 
         for i, j in self.altered0: txt = txt.replace(i, j)
     for i, j in self.shorts1: txt = txt.replace(i, j)
     for i, j in self.shorts2: txt = txt.replace(i, j)
     return txt
コード例 #4
0
ファイル: asm_window.py プロジェクト: wahaproject/asmaa
 def set_tashkil(self, *a):
     if asm_config.getn('tashkil') == 0: 
         asm_config.setv('tashkil', 1)
         self.del_tashkil.set_label("حذف التّشكيل")
     else: 
         asm_config.setv('tashkil', 0)
         self.del_tashkil.set_label("إعادة التّشكيل")
     self.viewerbook.set_tashkil()
コード例 #5
0
ファイル: asm_viewer.py プロジェクト: wahaproject/asmaa
 def set_tashkil(self, *a):
     self.show_page(self.all_in_page[1])
     if asm_config.getn('tashkil') == 0: now_text = asm_araby.stripHarakat(self.all_in_page[2])
     else: now_text = self.all_in_page[2]
     ch = self.stack.get_visible_child_name()
     if ch == "n1": 
         self.view_nasse_bfr1.set_text(now_text)
         self.view_nasse_bfr1.insert(self.view_nasse_bfr1.get_end_iter(), " \n")
     else:
         self.view_nasse_bfr2.set_text(now_text)
         self.view_nasse_bfr2.insert(self.view_nasse_bfr2.get_end_iter(), " \n")
コード例 #6
0
ファイル: asm_moshaf.py プロジェクト: wahaproject/asmaa
 def build(self, *a):
     self.id_page_last = 0
     try:
         self.list_sura = pickle.load(open(join(asm_path.MOSHAF_DIR, 'list_sura.pkl'), "rb"))
         self.list_ahzab =  pickle.load(open(join(asm_path.MOSHAF_DIR, 'list_ahzab.pkl'), "rb"))
     except:
         self.list_sura = []
         self.list_ahzab =  []
     self.my_aya = {}
     self.page_id = asm_config.getn('quran_pos')
     Gtk.HPaned.__init__(self)
     self.set_border_width(3)
     self.set_position(150)
     # a الفهرس-----------------------------------
     vbox = Gtk.VBox(False, 3)
     index_by = Gtk.ComboBoxText()
     index_by.append_text(u'السور')
     index_by.append_text(u'الأجزاء')
     index_by.append_text(u'الصفحات')
     index_by.set_active(0)
     vbox.pack_start(index_by, False, False, 0)
     self.tree_index = asm_customs.TreeIndex()
     self.tree_index.set_headers_visible(False)
     cell = Gtk.CellRendererText()
     cell.set_property("wrap-width", 150)
     kal = Gtk.TreeViewColumn('الفهرس', cell, text=1)
     self.tree_index.append_column(kal)
     self.store_index = Gtk.TreeStore(int, str)
     self.tree_index.set_model(self.store_index)
     self.sel_index = self.tree_index.get_selection()
     self.changed_index = self.tree_index.connect("cursor-changed", self.ok_index)
     scroll = Gtk.ScrolledWindow()
     scroll.set_shadow_type(Gtk.ShadowType.IN)
     scroll.add(self.tree_index)
     scroll.get_hadjustment().set_value(0.0) 
     vbox.pack_start(scroll, True, True, 0)
     self.pack1(vbox, True, True)
     
     self.view_quran = WebKit.WebView()
     self.view_quran.connect("populate-popup", self.populate_page_popup_cb)
     scroll = Gtk.ScrolledWindow()
     scroll.set_shadow_type(Gtk.ShadowType.IN)
     scroll.add(self.view_quran)
     self.view_quran.set_full_content_zoom(True)
     self.pack2(scroll, True, True)
     index_by.connect('changed', self.load_index)
     self.load_index(index_by)
コード例 #7
0
ファイル: asm_window.py プロジェクト: wahaproject/asmaa
 def start_session(self, *a):
     session = eval(asm_config.getv('start_session'))
     if asm_config.getn('saved_session') == 0: return
     if session[1][-1] == 1: 
         if self.viewerbook.get_n_pages() == 0: self.notebook.set_current_page(session[1][-2])
         else: self.notebook.set_current_page(session[1][-1])
     elif session[1][-1] in [0, 2, 3, 4, 5, 6, 8]:
         self.notebook.set_current_page(session[1][-1])
     else:
         self.notebook.set_current_page(session[1][-2])
     if session[0] == []: return
     for id_book in session[0][0]:
         book = self.db.file_book(id_book)
         sr = OpenBook(self, book, id_book)
         self.viewerbook.append_page(sr,TabLabel(sr, self.db.tit_book(id_book)[1]))
         sr.set_index()
         sr.scroll_search.hide()
     self.viewerbook.set_current_page(session[0][1])
コード例 #8
0
ファイル: asm_viewer.py プロジェクト: wahaproject/asmaa
 def convert_browse(self, *a):
     ls = [1, 2, 5, 10, 15, 20, 30]
     self.stack.set_transition_duration(ls[asm_config.getn('time_browse')]*100)
     GObject.source_remove(self.timeo)
     self.timeo = GLib.timeout_add(100/((asm_config.getn('auto_browse'))*8), self.autoScroll, None)
     if asm_config.getn('style_browse') == 0:
         self.style_browse_next = Gtk.StackTransitionType.NONE
         self.style_browse_prev = Gtk.StackTransitionType.NONE
     elif asm_config.getn('style_browse') == 1:
         self.style_browse_next = Gtk.StackTransitionType.CROSSFADE
         self.style_browse_prev = Gtk.StackTransitionType.CROSSFADE
     elif asm_config.getn('style_browse') == 2:
         self.style_browse_next = Gtk.StackTransitionType.SLIDE_LEFT
         self.style_browse_prev = Gtk.StackTransitionType.SLIDE_RIGHT
     elif asm_config.getn('style_browse') == 3:
         self.style_browse_next = Gtk.StackTransitionType.SLIDE_UP
         self.style_browse_prev = Gtk.StackTransitionType.SLIDE_DOWN 
コード例 #9
0
ファイル: asm_viewer.py プロジェクト: wahaproject/asmaa
 def scroll_event(self, sc, ev):
     if asm_config.getn('mouse_browse') == 0: return
     vadj = sc.get_vadjustment()
     p = vadj.get_page_size()
     m = vadj.get_upper()-p
     v = vadj.get_value()
     if m == v:
         if self.vadj_page_next == 5:
             self.next_page()
             self.vadj_page_next = 0
         else:
             self.vadj_page_next += 1
     elif v <= 1.0:
         if self.vadj_page_prev == 5:
             if ev.get_scroll_deltas()[2] == -1.0:
                 self.previous_page()
             if ev.get_scroll_deltas()[2] == 1.0:
                 self.next_page()
             self.vadj_page_prev = 0
         else:
             self.vadj_page_prev += 1
     else:
         self.vadj_page_next = 0
         self.vadj_page_prev = 0
コード例 #10
0
ファイル: asm_viewer.py プロジェクト: wahaproject/asmaa
    def build(self, *a):
        self.vadj_page_next = 0
        self.vadj_page_prev= 0
        self.hp = Gtk.HPaned()
        self.parent.connect("check-resize", self.convert_browse)
        
        # a الفهرس-----------------------------------
        vbox = Gtk.VBox(False, 0)
        self.tree_index = asm_customs.TreeIndex()
        cell = Gtk.CellRendererText()
        cell.set_property("ellipsize", Pango.EllipsizeMode.END)
        kal = Gtk.TreeViewColumn('الفهرس', cell, text=1)
        self.tree_index.append_column(kal)
        self.store_index = Gtk.TreeStore(int, str)
        self.tree_index.set_model(self.store_index)
        self.sel_index = self.tree_index.get_selection()
        self.tree_index.connect("cursor-changed", self.ok_index)
        self.scroll_index = Gtk.ScrolledWindow()
        self.scroll_index.set_shadow_type(Gtk.ShadowType.IN)
        self.scroll_index.add(self.tree_index)
        #self.scroll_index.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.AUTOMATIC)
        self.scroll_index.get_hadjustment().set_value(0.0) 
        vbox.pack_start(self.scroll_index, True, True, 0)
        #----------------------------------------------
        self.tree_search = asm_customs.TreeIndex()
        cell = Gtk.CellRendererText()
        raq = Gtk.TreeViewColumn('الرقم', cell, text=1)
        self.tree_search.append_column(raq)
        cell = Gtk.CellRendererText()
        cell.set_property("ellipsize", Pango.EllipsizeMode.END)
        kal = Gtk.TreeViewColumn('أغلق النتائج', cell, text=2)
        kal.set_expand(True)
        kal.set_clickable(True)
        kal.connect('clicked', self.hide_search)
        self.tree_search.append_column(kal)
        self.store_search = Gtk.ListStore(int, int, str, str, int, int, str, int)
        self.tree_search.set_model(self.store_search)
        self.sel_search = self.tree_search.get_selection()
        self.tree_search.connect("cursor-changed", self.ok_search)
        self.scroll_search = Gtk.ScrolledWindow()
        self.scroll_search.set_shadow_type(Gtk.ShadowType.IN)
        self.scroll_search.add(self.tree_search)
        self.scroll_search.get_hadjustment().set_value(0.0) 
        vbox.pack_start(self.scroll_search, True, True, 0)
        
        try: self.entry_index = Gtk.SearchEntry()
        except: self.entry_index = Gtk.Entry()
        self.entry_index.set_placeholder_text('بحث في الفهرس')
        self.entry_index.connect('changed', self.search_entry)
        vbox.pack_start(self.entry_index, False, False, 3)
        self.hp.pack1(vbox, True, True)
        
        # a عارض النص-----------------------------------
        vbox = Gtk.VBox(False, 0)
        self.stack = Gtk.Stack()
        vbox.pack_start(self.stack, True, True, 0)
        #-------------------------------------
        self.view_nasse1 = asm_customs.ViewClass()
        self.view_nasse_bfr1 = self.view_nasse1.get_buffer()
        self.view_nasse1.connect_after("populate-popup", asm_popup.populate_popup, self.parent)
        #self.view_nasse1.connect('button-press-event', self.sss)
        self.scroll_nasse1 = Gtk.ScrolledWindow()
        #self.scroll_nasse1.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        self.scroll_nasse1.set_shadow_type(Gtk.ShadowType.IN)
        self.scroll_nasse1.add(self.view_nasse1)
        self.scroll_event_name1 = self.scroll_nasse1.connect('scroll-event', self.scroll_event)
        self.view_title_tag1 = self.view_nasse_bfr1.create_tag("title1")
        self.view_quran_tag1 = self.view_nasse_bfr1.create_tag("quran1")
        self.view_search_tag1 = self.view_nasse_bfr1.create_tag("search1")
        self.view_terms_tag1 = self.view_nasse_bfr1.create_tag("terms1")
        self.title_select_tag1 = self.view_nasse_bfr1.create_tag("tit_select1")
        self.stack.add_named(self.scroll_nasse1, 'n1')
        #-------------------------------------
        self.view_nasse2 = asm_customs.ViewClass()
        self.view_nasse_bfr2 = self.view_nasse2.get_buffer()
        self.view_nasse2.connect_after("populate-popup", asm_popup.populate_popup, self.parent)
        self.scroll_nasse2 = Gtk.ScrolledWindow()
        #self.scroll_nasse2.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        self.scroll_nasse2.set_shadow_type(Gtk.ShadowType.IN)
        self.scroll_nasse2.add(self.view_nasse2)
        self.scroll_event_name2 = self.scroll_nasse2.connect('scroll-event', self.scroll_event)
        self.view_title_tag2 = self.view_nasse_bfr2.create_tag("title2")
        self.view_quran_tag2 = self.view_nasse_bfr2.create_tag("quran2")
        self.view_search_tag2 = self.view_nasse_bfr2.create_tag("search2")
        self.view_terms_tag2 = self.view_nasse_bfr2.create_tag("terms2")
        self.title_select_tag2 = self.view_nasse_bfr2.create_tag("tit_select2")
        self.stack.add_named(self.scroll_nasse2, 'n2')
        #----------------------------------------
        hbox = Gtk.HBox(False, 3)
        hbox.set_border_width(3)
        hbox.pack_start(Gtk.Label('('), False, False, 0) 
        self.ent_page = Gtk.Label()
        hbox.pack_start(self.ent_page, False, False, 0)
        hbox.pack_start(Gtk.Label('/'), False, False, 0) 
        self.ent_part = Gtk.Label()
        hbox.pack_start(self.ent_part, False, False, 0) 
        hbox.pack_start(Gtk.Label(')'), False, False, 0)
        
        try:
            move_btn = Gtk.MenuButton()
            img = Gtk.Image()
            img.set_from_stock(Gtk.STOCK_JUMP_TO, Gtk.IconSize.BUTTON)
            move_btn.set_image(img)
            self.popover = Gtk.Popover()
            move_btn.set_popover(self.popover)
            self.ent_page_move = Gtk.Entry()
            self.ent_part_move = Gtk.Entry()
            self.lab_page_move = Gtk.Label("عدد الصفحات ")
            self.lab_part_move = Gtk.Label("عدد الأجزاء ")
            move = Gtk.Button("انتقل")
            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()
            move.connect('clicked', replace_cb)
            self.ent_page_move.connect('activate', replace_cb)
            self.ent_part_move.connect('activate', replace_cb)
            box = Gtk.Box(spacing=5,orientation=Gtk.Orientation.VERTICAL)
            box.set_border_width(5)
            hb = Gtk.Box(spacing=5,orientation=Gtk.Orientation.HORIZONTAL)
            hb.pack_start(self.ent_page_move, False, False, 3)
            hb.pack_start(self.lab_page_move, False, False, 3)
            box.pack_start(hb, False, False, 3)
            hb = Gtk.Box(spacing=5,orientation=Gtk.Orientation.HORIZONTAL)
            hb.pack_start(self.ent_part_move, False, False, 3)
            hb.pack_start(self.lab_part_move, False, False, 3)
            box.pack_start(hb, False, False, 3)
            hb = Gtk.Box(spacing=5,orientation=Gtk.Orientation.HORIZONTAL)
            hb.pack_start(move, False, False, 0)
            box.pack_end(hb, False, False, 0)
            move_btn.connect("clicked", self.move_to_page)
            box.show_all()
            self.popover.add(box)
            move_btn.set_tooltip_text('الانتقال إلى الصفحة المحددة')
            hbox.pack_start(move_btn,False,False,10)
        except:
            move_btn = Gtk.Button()
            move_btn.set_tooltip_text('الانتقال إلى الصفحة المحددة')
            img = Gtk.Image()
            move_btn.connect("clicked", self.dialog_move_to_page)
            img.set_from_stock(Gtk.STOCK_JUMP_TO, Gtk.IconSize.LARGE_TOOLBAR)
            move_btn.set_image(img)
            hbox.pack_start(move_btn,False,False,10)

        btnbox_action = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        Gtk.StyleContext.add_class(btnbox_action.get_style_context(), "linked")
        
        self.comment_btn = Gtk.Button() 
        self.comment_btn.set_tooltip_text("أظهر التعليق")
        self.comment_btn.connect('clicked', self.comment_cb)
        btnbox_action.pack_start(self.comment_btn, False, False, 0)
        vbox.pack_start(hbox, False, False, 0)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_MEDIA_FORWARD, Gtk.IconSize.BUTTON)
        self.btn_autoScroll = Gtk.ToggleButton()
        self.btn_autoScroll.add(img)
        self.btn_autoScroll.set_tooltip_text("استعراض آلي")
        btnbox_action.pack_start(self.btn_autoScroll, False, False, 0 )
        hbox.pack_start(btnbox_action, False, False, 0 )
        self.autoScrolling = False
        self.btn_autoScroll.connect("clicked", self.autoScrollCb)
        self.timeo = GLib.timeout_add(100/((asm_config.getn('auto_browse'))*8), self.autoScroll, None)
        
        btnbox_info = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        Gtk.StyleContext.add_class(btnbox_info.get_style_context(), "linked")
        
        bitaka = Gtk.Button()
        bitaka.set_tooltip_text("بطاقة عن الكتاب")
        bitaka.connect('clicked', self.show_bitaka)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_INFO, Gtk.IconSize.BUTTON)
        bitaka.set_image(img)
        btnbox_info.pack_start(bitaka, False, False, 0 ) 
        edit_book = Gtk.Button()
        edit_book.set_tooltip_text("تحرير الكتاب الحاليّ")
        edit_book.connect('clicked', self.editbk_cb)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_EDIT, Gtk.IconSize.BUTTON)
        edit_book.set_image(img)
        btnbox_info.pack_start(edit_book, False, False, 0 ) 
        hbox.pack_end(btnbox_info, False, False, 0 ) 
        
        self.convert_browse()
        self.hp.pack2(vbox, True, False)
        self.pack_start(self.hp, True, True, 0)
        self.show_all()
        self.scroll_search.hide()
        self.change_font()
        if self.id_book != -1:
            if self.db_list.book_dir(self.id_book) == asm_path.BOOK_DIR_r:
                self.comment_btn.set_sensitive(False)
コード例 #11
0
ファイル: asm_listbook.py プロジェクト: wahaproject/asmaa
    def build(self, *a):
        self.select_part = u''
        self.select_book = u''
        Gtk.HBox.__init__(self, False, 3)
        self.set_border_width(3)
        self.vbox_side = Gtk.VBox(False, 0)
        
        # a أيقونات الكتب--------------------------
        self.vbox_iconview = Gtk.VBox(False, 5)
        self.nb = Gtk.Notebook()
        self.nb.set_show_tabs(False)
        vbox = Gtk.VBox(False, 0) 
        self.particon = GdkPixbuf.Pixbuf.new_from_file_at_size(join(asm_path.ICON_DIR, 'Groups-128.png'), 128, 128)
        self.bookicon = GdkPixbuf.Pixbuf.new_from_file_at_size(join(asm_path.ICON_DIR, 'Book-128.png'), 96, 96)
        sw = Gtk.ScrolledWindow()
        vbox.pack_start(sw, True, True, 0)
        self.store_parts_icon = Gtk.ListStore(str, GdkPixbuf.Pixbuf, int)
        iconView_parts = Gtk.IconView()
        iconView_parts.set_reorderable(True)
        iconView_parts.set_model(self.store_parts_icon)
        iconView_parts.override_font(Pango.FontDescription('KacstOne 20'))
        iconView_parts.set_text_column(COL_NAME)
        iconView_parts.set_pixbuf_column(COL_PIXBUF)
        iconView_parts.set_item_width(150)
        iconView_parts.set_row_spacing(50)
        iconView_parts.connect("item-activated", self.item_part_active)
        sw.add(iconView_parts)
        iconView_parts.grab_focus()
        self.nb.append_page(vbox, Gtk.Label('0'))
        
        vbox = Gtk.VBox(False, 0);  
        sw = Gtk.ScrolledWindow()
        vbox.pack_start(sw, True, True, 0)
        self.store_books_icon = Gtk.ListStore(str, GdkPixbuf.Pixbuf, int)
        iconView_books = Gtk.IconView()
        iconView_books.set_model(self.store_books_icon)
        iconView_books.override_font(Pango.FontDescription('KacstOne 16'))
        iconView_books.set_text_column(COL_NAME)
        iconView_books.set_pixbuf_column(COL_PIXBUF)
        iconView_books.connect("selection_changed", self.item_book_select)
        iconView_books.set_item_width(120)
        iconView_books.set_row_spacing(40)
        sw.add(iconView_books)
        iconView_books.grab_focus()
        self.nb.append_page(vbox, Gtk.Label('1'))
        self.vbox_iconview.pack_start(self.nb, True, True, 0)
        
        # a قائمة الكتب----------------------------
        self.particon1 = GdkPixbuf.Pixbuf.new_from_file_at_size(join(asm_path.ICON_DIR, 'Groups-128.png'), 32, 32)
        self.bookicon1 = GdkPixbuf.Pixbuf.new_from_file_at_size(join(asm_path.ICON_DIR, 'Book-128.png'), 24, 24)
        scroll = Gtk.ScrolledWindow()
        self.tree_parts = asm_customs.TreeParts()
        self.tree_parts.set_headers_visible(False)
        self.sel_parts = self.tree_parts.get_selection()
        cell = Gtk.CellRendererText()
        cell.set_property("ellipsize", Pango.EllipsizeMode.END)
        kal = Gtk.TreeViewColumn('الأقسام')    
        icon_renderer = Gtk.CellRendererPixbuf();
        kal.pack_start(icon_renderer, False);
        kal.pack_start(cell, False);
        kal.add_attribute(icon_renderer, "pixbuf", 2);
        kal.add_attribute(cell, "text", 1);   

        self.tree_parts.connect("row-activated", self.avtive_row_parts)
        self.tree_parts.append_column(kal)
        self.store_parts_list = Gtk.ListStore(int, str, GdkPixbuf.Pixbuf)
        scroll.add(self.tree_parts)
        self.tree_parts.set_model(self.store_parts_list)
        self.load_list()
        self.nb.append_page(scroll, Gtk.Label('2'))
        
        scroll = Gtk.ScrolledWindow()
        self.tree_books = asm_customs.TreeBooks()
        self.tree_books.set_headers_visible(False)
        self.sel_books = self.tree_books.get_selection()
        cell = Gtk.CellRendererText()
        cell.set_property("ellipsize", Pango.EllipsizeMode.END)
        kal = Gtk.TreeViewColumn('الكتب')    
        icon_renderer = Gtk.CellRendererPixbuf();
        kal.pack_start(icon_renderer, False);
        kal.pack_start(cell, False);
        kal.add_attribute(icon_renderer, "pixbuf", 2);
        kal.add_attribute(cell, "text", 1);   
        self.tree_books.connect("row-activated", self.avtive_row_books)
        self.tree_books.append_column(kal)
        self.store_books_list = Gtk.ListStore(int, str, GdkPixbuf.Pixbuf)
        scroll.add(self.tree_books)
        self.tree_books.set_model(self.store_books_list)
        self.nb.append_page(scroll, Gtk.Label('3'))
        
        # a بطاقة كتاب--------------------------------
        self.view_info = asm_customs.ViewBitaka()
        self.view_info_bfr = self.view_info.get_buffer()
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_info)
        scroll.set_size_request(250, 200)
        self.vbox_side.pack_start(scroll, False, False, 0)
        
        # a ------------------------------------------
        stack = Gtk.Stack()
        stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
        stack.set_transition_duration(1000)
        
        # a الكتب الأخيرة------------------------------
        vbox = Gtk.Box(spacing=2,orientation=Gtk.Orientation.VERTICAL)
#        vbox.set_border_width(3)
        self.tree_last = asm_customs.TreeIndex()
        self.tree_last.set_headers_visible(False)
        self.tree_last.set_size_request(250, -1)
        self.sel_last = self.tree_last.get_selection()
        cell = Gtk.CellRendererText()
        kal = Gtk.TreeViewColumn('الكتب الأخيرة', cell, text=1)
        self.tree_last.append_column(kal)
        self.store_last = Gtk.ListStore(int, str)
        self.load_last()
        self.tree_last.set_model(self.store_last)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_last)
        self.tree_last.connect("row-activated", self.ok_last)
        vbox.pack_start(scroll, True, True, 0)

        remove_all = Gtk.Button("مسح القائمة")
        remove_all.connect('clicked', self.rm_last_all)
        vbox.pack_start(remove_all, False, False, 0)
        stack.add_titled(vbox, 'n0', 'الكتب الأخيرة')
        
        # a المفضلة-----------------------------------
        vbox = Gtk.Box(spacing=2,orientation=Gtk.Orientation.VERTICAL)
#        vbox.set_border_width(3)
        self.tree_favorite = asm_customs.TreeIndex()
        self.tree_favorite.set_headers_visible(False)
        self.tree_favorite.set_size_request(250, -1)
        self.sel_favorite = self.tree_favorite.get_selection()
        cell = Gtk.CellRendererText()
        kal = Gtk.TreeViewColumn('الكتب المفضلة', cell, text=1)
        self.tree_favorite.append_column(kal)
        self.store_favorite = Gtk.ListStore(int, str)
        self.load_fav()
        self.tree_favorite.set_model(self.store_favorite)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_favorite)
        self.tree_favorite.connect("row-activated", self.ok_fav)
        vbox.pack_start(scroll, True, True, 0)
        
        self.tree_books.connect("cursor-changed", self.select_row, self.sel_books)
        self.tree_last.connect("cursor-changed", self.select_row, self.sel_last)
        self.tree_favorite.connect("cursor-changed", self.select_row, self.sel_favorite)
        
        remove_one = Gtk.Button("حذف من المفضلة")
        remove_one.connect('clicked', self.rm_fav_one)
        vbox.pack_start(remove_one, False, False, 0)
        stack.add_titled(vbox, 'n1', 'الكتب المفضلة')
        
        hbox = Gtk.Box(spacing=2,orientation=Gtk.Orientation.HORIZONTAL)
        stack_switcher = Gtk.StackSwitcher()
        stack_switcher.set_stack(stack)
        hbox.pack_start(stack_switcher, True, False, 0)
        self.vbox_side.pack_start(hbox, False, False, 3)
        self.vbox_side.pack_start(stack, True, True, 0)
        
        self.pack_start(self.vbox_iconview, True, True, 0)
        self.pack_start(self.vbox_side, False, False, 0)
        self.show_all()
        
        #-----------------------------------------
        if asm_config.getn('view_books') == 0:
            pass
        else:
            self.nb.set_current_page(2)
コード例 #12
0
ファイル: asm_search.py プロジェクト: wahaproject/asmaa
    def build(self, *a):
        Gtk.Dialog.__init__(self, parent=self.parent)
        self.set_border_width(3)
        self.set_icon_name("asmaa")
        area = self.get_content_area()
        area.set_spacing(3)
        
        hb_bar = Gtk.HeaderBar()
        hb_bar.set_show_close_button(True)
        self.set_titlebar(hb_bar)
        self.stack = Gtk.Stack()
        self.stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
        self.stack.set_transition_duration(1000)
        stack_switcher = Gtk.StackSwitcher()
        stack_switcher.set_stack(self.stack)
        hb_bar.pack_end(stack_switcher)
        vbox1 = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL)
        vbox2 = Gtk.Box(spacing=3,orientation=Gtk.Orientation.VERTICAL)
        
        self.set_size_request(600,450)
        self.connect('delete-event', lambda w,*a: w.hide() or True)
        #---------------------------------------------------
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        self.entry_search = Gtk.SearchEntry()
#        self.entry_search.set_size_request(400,-1)
        try: self.list_terms = pickle.load(open(join(asm_path.DATA_DIR_rw, u'last-terms.pkl'), "rb"))
        except: self.list_terms = []
        completion = Gtk.EntryCompletion()
        self.list_ts = Gtk.ListStore(str)
        for a in self.list_terms:
            self.list_ts.append([a])
        completion.set_model(self.list_ts)
        completion.set_text_column(0)
        self.entry_search.set_completion(completion)
        self.entry_search.connect('activate', self.search)
        self.entry_search.set_placeholder_text('أدخل النص المراد البحث عنه')
        self.btn_search = asm_customs.ButtonClass('بحث')
        hb_bar.pack_start(self.btn_search)
        hb_bar.set_custom_title(self.entry_search)
        self.btn_search.connect('clicked', self.search)
        vbox1.pack_start(hbox, False, False, 0)
        #-------------------------------------------------------
        hbox = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        vbox = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        hb = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        self.ent_search = Gtk.SearchEntry()
        self.ent_search.set_placeholder_text('بحث عن كتاب')
        self.ent_search.connect('changed', self.search_entry_cb)
        hb.pack_end(self.ent_search, False, False, 0)
        self.ent_search.connect('activate', self.search_cb)
        vbox.pack_start(hb, False, False, 0)
        hbox.pack_start(vbox, False, False, 0)
        self.store_fields = Gtk.ListStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING)
        self.load_fields()
        self.tree_fields = Gtk.TreeView(self.store_fields)
        self.tree_fields.set_rules_hint(True)
        celltext = Gtk.CellRendererText()
        celltext.set_property("ellipsize", Pango.EllipsizeMode.END)
        celltoggle = Gtk.CellRendererToggle()
        celltoggle.set_property('activatable', True)
        columntoggle = Gtk.TreeViewColumn("اختر", celltoggle)
        columntext = Gtk.TreeViewColumn("النطاق", celltext, text = 1 )
        columntext.set_expand(True)
        columntoggle.add_attribute( celltoggle, "active", 0)
        celltoggle.connect('toggled', self.fixed_toggled_field, self.store_fields)
        self.tree_fields.append_column(columntoggle)
        self.tree_fields.append_column(columntext)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_fields)
        vbox.pack_start(scroll,True, True, 0)
        
        self.store_books = Gtk.TreeStore(GObject.TYPE_BOOLEAN, GObject.TYPE_STRING, GObject.TYPE_INT)
        self.load_books()
        self.tree_books = Gtk.TreeView()
        self.tree_books.set_model(self.store_books)
        self.sel_books = self.tree_books.get_selection()
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_books)
        scroll.set_size_request(200, -1)
        celltext = Gtk.CellRendererText()
        celltext.set_property("ellipsize", Pango.EllipsizeMode.END)
        celltoggle = Gtk.CellRendererToggle()
        celltoggle.set_property('activatable', True)
        columntoggle = Gtk.TreeViewColumn("ضمّ", celltoggle)
        columntoggle.set_clickable(True)
        columntoggle.connect('clicked', lambda *a:
                             self.tree_books.collapse_all()) 
        self.columntext1 = Gtk.TreeViewColumn("علّم جميع الكتب", celltext, text = 1 )
        self.columntext1.set_clickable(True)
        self.columntext1.connect('clicked', self.select_all) 
        self.columntext1.set_expand(True)
        columntoggle.add_attribute( celltoggle, "active", 0)
        celltoggle.connect('toggled', self.fixed_toggled, self.store_books)
        self.tree_books.append_column(columntoggle)
        self.tree_books.append_column(self.columntext1)
        hbox.pack_start(scroll, True, True, 0)
        vbox1.pack_start(hbox, True, True, 0)
        #-------------------------------------------------------
        expander = Gtk.Expander.new("خيارات متقدمة")
        notebk = Gtk.Notebook()
        expander.add(notebk)
        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        notebk.append_page(box, Gtk.Label('مجالات البحث'))
        self.dict_field = {'nass':True, 'tit':False}
        self.in_nasse = Gtk.RadioButton.new_with_label_from_widget(None, u'في النصوص')
        self.in_nasse.set_name('nass')
        box.pack_start(self.in_nasse, False, False, 0)
        self.in_nasse.connect('toggled', self.select_field, 1)
        self.in_title = Gtk.RadioButton.new_with_label_from_widget(self.in_nasse, u'في العناوين')
        self.in_title.set_name('tit')
        box.pack_start(self.in_title, False, False, 0)
        self.in_title.connect('toggled', self.select_field, 2)

        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        notebk.append_page(box, Gtk.Label('خيارات البحث'))
        self.dict_perf = {}
        for a in [[u'بدون لواصق', u'identical'],
        [u'عبارة متصلة', u'cursive'], 
        [u'إحدى الكلمات', u'one_term'],  
        [u'مع التشكيل', u'with_tachkil']]:
            btn = Gtk.CheckButton(a[0])
            btn.set_name(a[1])
            box.pack_start(btn, False, False, 0)
            btn.connect('toggled', self.select_perf)
            self.dict_perf[a[1]] = False
        
        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        notebk.append_page(box, Gtk.Label('حفظ النطاقات'))
        sav_field = Gtk.Button('حفظ النطاق المحدد')
        sav_field.set_tooltip_text("حفظ نطاق البحث المحدد حالياً")
        hb = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        hb.pack_start(sav_field,False, False, 0)
        sav_field.connect('clicked', self.save_fields)
        self.ent_field = Gtk.Entry()
        self.ent_field.set_placeholder_text('اسم النطاق')
        hb.pack_start(self.ent_field,False, False, 0)
        box.pack_start(hb, False, False, 0)
        
        hb = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        rm_field = Gtk.Button('حذف النطاق المحدد')
        hb.pack_start(rm_field,False, False, 0)
        box.pack_start(hb, False, False, 0) 
        def rm_field_cb(widget, *a):
            model, i = self.tree_fields.get_selection().get_selected()
            if i:
                nm = model.get_value(i, 1)
                if nm == u"المفضلة": return
                os.remove(join(asm_path.LIBRARY_DIR_rw, u'fields-search', nm+'.pkl')) 
                model.remove(i)
        rm_field.connect('clicked', rm_field_cb)
        
                
        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        notebk.append_page(box, Gtk.Label('خيارات أخرى'))
        del_term = Gtk.Button('مسح الكلمات المحفوظة')
        hb = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        hb.pack_start(del_term,False, False, 0)
        del_term.connect('clicked', self.del_history)
        box.pack_start(hb, False, False, 0)
        vbox1.pack_start(expander, False, False, 0)
        self.stack.add_titled(vbox1, 'n1', 'بحث عادي')
        
        hbox = Gtk.Box(spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        self.dict_field_index = {'nass':True, 'tit':False}
        self.in_nasse_index = Gtk.RadioButton.new_with_label_from_widget(None, u'في النصوص')
        self.in_nasse_index.set_name('nass')
        box.pack_start(self.in_nasse_index, False, False, 0)
        self.in_nasse_index.connect('toggled', self.select_field_index, 1)
        self.in_title_index = Gtk.RadioButton.new_with_label_from_widget(self.in_nasse_index, u'في العناوين')
        self.in_title_index.set_name('tit')
        box.pack_start(self.in_title_index, False, False, 0)
        self.in_title_index.connect('toggled', self.select_field_index, 2)
        hbox.pack_start(box, False, False, 0)

        box = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        box.set_border_width(7)
        self.dict_perf_index = {}
        for a in [[u'بدون لواصق', u'identical'],
        [u'عبارة متصلة', u'cursive'], 
        [u'إحدى الكلمات', u'one_term'],  
        [u'مع التشكيل', u'with_tachkil']]:
            btn = Gtk.CheckButton(a[0])
            btn.set_name(a[1])
            box.pack_start(btn, False, False, 0)
            btn.connect('toggled', self.select_perf_index)
            self.dict_perf_index[a[1]] = False
        hbox.pack_start(box, False, False, 0)
        
        vbox2.pack_start(hbox,True, True, 0)
        self.stack.add_titled(vbox2, 'n2', 'بحث مفهرس')
        if asm_config.getn('search') == 0:
            self.stack.set_visible_child_name("n1")
        else:
            self.stack.set_visible_child_name("n2")
        self.stack.show_all()
        area.pack_start(self.stack, True, True, 0)
コード例 #13
0
ファイル: asm_preference.py プロジェクト: wahaproject/asmaa
    def build(self,*a):
        Gtk.Dialog.__init__(self, parent=self.parent)
        self.set_default_size(500, 400)
        vbox1 = self.vbox
        vbox = Gtk.Box(spacing=0,orientation=Gtk.Orientation.HORIZONTAL)
        hb_bar = Gtk.HeaderBar()
        hb_bar.set_show_close_button(True)
        self.set_titlebar(hb_bar)
        hb_bar.set_custom_title(vbox)
        Gtk.StyleContext.add_class(vbox.get_style_context(), "linked")
        vbox.set_border_width(3)
        self.notebook = Gtk.Notebook()
        self.notebook.set_show_tabs(False)
        
        box = Gtk.Box(spacing=5, orientation=Gtk.Orientation.VERTICAL)
        box1 = Gtk.Box(spacing=4, orientation=Gtk.Orientation.VERTICAL)
        box1.set_border_width(5)
        self.frame = Gtk.Frame()
        box.set_border_width(5)
        ls = [u'بدون', u'مقترح', u'متباين', u'مخصص']
        style_btn = Gtk.ComboBoxText()
        for a in ls:
            style_btn.append_text(a)
        style_btn.connect("changed", self.specified)
        style_btn.set_active(asm_config.getn('theme'))
        hb = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        hb.pack_start(Gtk.Label('النمط'), False, False, 0)
        hb.pack_end(style_btn, False, False, 0)
        box.pack_start(hb, False, False, 0)
        box.pack_start(self.frame, True, True, 0)
       
        list_w1 = [[u'قائمة الأقسام','_prts'], [u'قائمة الكتب','_bks'], [u'القوائم الجانبية','_idx'], [u'نصوص الكتاب','_nass'], 
                   [u'النص القرآني', '_qrn'], [u'نصوص أخرى','_oth'], [u'العناوين','_tit']]
        list_w2 = [[u'لون خلفية العرض','_bg'], [u'خلفية النص القرآني', '_bg_qrn'], [u'لون خلفية القوائم','_bgs', 
                   [u'لون خط التحديد','_sel'], [u'لون خلفية التحديد','_bg_sel'], [u'لون تحديد البحث','_fnd']]]
        
        for a in list_w1:
            hbox = Gtk.Box(spacing=3,orientation=Gtk.Orientation.HORIZONTAL)
            btn1 = Gtk.ToolButton(stock_id = Gtk.STOCK_SELECT_FONT)
            btn1.set_name('font'+a[1])
            btn1.connect('clicked',self.ch_font)
            btn2 = Gtk.ToolButton(stock_id = Gtk.STOCK_SELECT_COLOR)
            btn2.set_name('color'+a[1])
            btn2.connect('clicked',self.ch_color)
            hbox.pack_start(Gtk.Label(a[0]), False, False, 0)
            hbox.pack_end(btn2, False, False, 0)
            hbox.pack_end(btn1, False, False, 0)
            box1.pack_start(hbox, False, False, 0)
            
        for a in list_w2:
            hbox = Gtk.Box(spacing=3,orientation=Gtk.Orientation.HORIZONTAL)
            btn = Gtk.ToolButton(stock_id = Gtk.STOCK_SELECT_COLOR)
            btn.set_name('color'+a[1])
            btn.connect('clicked',self.ch_color)
            hbox.pack_start(Gtk.Label(a[0]), False, False, 0)
            hbox.pack_end(btn, False, False, 0)
            box1.pack_start(hbox, False, False, 0)
            
        ref = Gtk.Button("تحديث الواجهة")
        ref.connect('clicked', lambda *a: self.parent.theme.refresh())
        ref.connect('clicked', self.refresh)
        box.pack_end(ref, False, False, 0)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(box1)
        self.frame.add(scroll)
        self.notebook.append_page(box, Gtk.Label('خط ولون'))
        
        box = Gtk.VBox(False, 6)
        box.set_border_width(6) 
        btn_win_organize = Gtk.Button('تعديل المكتبة')
        btn_win_organize.connect('clicked', lambda *a: self.parent.notebook.set_current_page(8))
        box.pack_start(btn_win_organize, False, False, 0)
        
        btn_win_siana = Gtk.Button('نافذة الصيانة')
        btn_win_siana.connect('clicked', lambda *a: SianaWin(self.parent))
        box.pack_start(btn_win_siana, False, False, 0)
        
        btn_win_add = Gtk.Button('نافذة الاستيراد')
        btn_win_add.connect('clicked', lambda *a: AddBooks(self.parent))
        box.pack_start(btn_win_add, False, False, 0)
        
        btn_win_export = Gtk.Button('نافذة التصدير')
        btn_win_export.set_sensitive(False)
        #btn_win_export.connect('clicked', lambda *a: AddBooks(self.parent))
        box.pack_start(btn_win_export, False, False, 0)
        
        btn_win_index = Gtk.Button('نافذة الفهرسة')
        #btn_win_index.set_sensitive(False)
        try:
            from Asmaa.asm_indexer import WinIndexer
            btn_win_index.connect('clicked', lambda *a: WinIndexer(self.parent))
        except: pass
        box.pack_start(btn_win_index, False, False, 0)
        self.notebook.append_page(box, Gtk.Label('النوافذ'))

        box = Gtk.VBox(False, 6)
        box.set_border_width(6) 
        self.add_db = Gtk.Button('إنشاء مكتبة مفرّغة')
        self.add_db.connect('clicked', self.new_db)
        box.pack_start(self.add_db, False, False, 0)
        
        self.b_dest = Gtk.Button('تغيير مسار المكتبة')
        self.b_dest.connect('clicked', self.change_path_db)  
        self.b_path = Gtk.Button('عرض المسار الحاليّ')
        self.b_path.connect('clicked', lambda *a: asm_customs.info(self.parent, asm_config.getv('path')))  
        box.pack_start(self.b_dest, False, False, 0)
        box.pack_start(self.b_path, False, False, 0)
        
        self.copy_to_home = Gtk.Button('نسخ المكتبة  إلى المنزل')
        self.copy_to_home.set_tooltip_text('هذا الخيار إذا كانت كتب المكتبة في الدليل :\n"/usr/share/asmaa/"')
        if self.db.check_books_library() == False:
            self.copy_to_home.set_sensitive(False) 
        self.copy_to_home.connect('clicked', self.copy_to_home_cb)
        box.pack_start(self.copy_to_home, False, False, 0)      
        self.notebook.append_page(box, Gtk.Label('المسار'))
        
        box = Gtk.VBox(False, 6)
        box.set_border_width(5)
        
        self.saved_session = Gtk.CheckButton('حفظ الجلسة عند الإغلاق')
        box.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('التصفح بعجلة الفأرة')
        box.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 = [u'بدون', u'اختفاء وظهور', u'زحلقة أفقية', u'زحلقة عمودية']
        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)
        box.pack_start(hb, False, False, 0)
        
        ls = [u'0.1', u'0.2', u'0.5', u'1', u'1.5', u'2', u'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)
        box.pack_start(hb, False, False, 0)
        
        ls = [u'1', u'2', u'3', u'4', u'5', u'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)
        box.pack_start(hb, False, False, 0)
        
        self.numbers = Gtk.CheckButton('استعمال أرقام المغاربة')
        box.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.notebook.append_page(box, Gtk.Label('خيارات'))
                
        box = Gtk.VBox(False, 6)
        box.set_border_width(6)
        self.rv_index = Gtk.Button('حذف الفهارس')
        self.rv_index.connect('clicked', self.rv_index_cb)
        box.pack_start(self.rv_index, False, False, 0)
        self.notebook.append_page(box, Gtk.Label('العمليات'))
        
        box = Gtk.VBox(False, 6)
        box.set_border_width(6)
        self.n_books_parts = Gtk.Button('عدد الكتب')
        self.n_books_parts.connect('clicked', self.count_cb)
        box.pack_start(self.n_books_parts, False, False, 0)
        self.rapid_count = Gtk.Button('إحصاء سريع')
        self.rapid_count.connect('clicked', self.count_fast)
        self.detail_count = Gtk.Button('إحصاء مفصل')
        self.detail_count.connect('clicked', self.count_detail)
        box.pack_start(self.rapid_count, False, False, 0)
        box.pack_start(self.detail_count, False, False, 0)
        
        btn_about = Gtk.Button('حول المكتبة')
        btn_about.connect('clicked', lambda *a: About(self.parent))
        box.pack_start(btn_about, False, False, 0)
        
        btn_help = Gtk.Button('صفحة المساعدة')
        btn_help.connect('clicked', lambda *a: self.parent.notebook.set_current_page(5))
        box.pack_start(btn_help, False, False, 0)
        
        web_page = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/asmaalibrary/files/",
                                                'صفحة البرنامج على الشّبكة')
        box.pack_start(web_page, False, False, 0)
        
        db_void = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/asmaalibrary/files/AsmaaLibrary.tar.gz/download",
                                                'تنزيل قاعدة بيانات للتجربة')
        
        box.pack_start(db_void, False, False, 0)
        self.notebook.append_page(box, Gtk.Label('المعلومات'))
        
        vbox1.pack_start(self.notebook, True, True, 0)
        
        self.theme_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_SELECT_COLOR, Gtk.IconSize.LARGE_TOOLBAR)
        self.theme_btn.set_image(img)
        self.theme_btn.set_name('theme')
        self.theme_btn.set_active(True)
        self.theme_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.theme_btn, False, False, 0)
        
        self.wins_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_HOME, Gtk.IconSize.LARGE_TOOLBAR)
        self.wins_btn.set_image(img)
        self.wins_btn.set_name('wins')
        self.wins_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.wins_btn, False, False, 0)
        
        self.path_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.LARGE_TOOLBAR)
        self.path_btn.set_image(img)
        self.path_btn.set_name('path')
        self.path_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.path_btn, False, False, 0)
        
        self.prop_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PROPERTIES, Gtk.IconSize.LARGE_TOOLBAR)
        self.prop_btn.set_image(img)
        self.prop_btn.set_name('prop')
        self.prop_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.prop_btn, False, False, 0)
        
        self.modifie_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PREFERENCES, Gtk.IconSize.LARGE_TOOLBAR)
        self.modifie_btn.set_image(img)
        self.modifie_btn.set_name('modifie')
        self.modifie_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.modifie_btn, False, False, 0)
        
        self.info_btn = Gtk.ToggleButton()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_INFO, Gtk.IconSize.LARGE_TOOLBAR)
        self.info_btn.set_image(img)
        self.info_btn.set_name('info')
        self.info_btn.connect("clicked", self.switch_page)
        vbox.pack_start(self.info_btn, False, False, 0)
        
        self.show_all()
コード例 #14
0
ファイル: asm_window.py プロジェクト: wahaproject/asmaa
    def build(self,*a):
        #self.set_title("مكتبة أسماء")
        self.set_icon_name('asmaa')
        self.maximize()
        #self.set_opacity(1.0)
        #self.set_default_size(800, 600)
        self.connect("delete_event", self.delete_event_cb)
        self.connect("destroy", self.delete_event_cb)
        self.box = Gtk.Box(spacing=5, orientation=Gtk.Orientation.VERTICAL)
        
        hb_bar = Gtk.HeaderBar()
        hb_bar.set_show_close_button(True)
        self.set_titlebar(hb_bar)

        menu_wins = Gtk.Menu()      
        win_quran = Gtk.ImageMenuItem("القرآن الكريم")
        win_quran.add_accelerator("activate", self.axl, Gdk.KEY_F1, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Quran-16.png'))
        win_quran.set_image(img)
        win_quran.connect('activate', lambda *a: self.notebook.set_current_page(2))
        win_tafsir = Gtk.ImageMenuItem("التفاسير")
        win_tafsir.add_accelerator("activate", self.axl, Gdk.KEY_F2, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Tafsir-16.png'))
        win_tafsir.set_image(img)
        win_tafsir.connect('activate', lambda *a: self.notebook.set_current_page(4))
        win_list = Gtk.ImageMenuItem("قائمة الكتب")
        win_list.add_accelerator("activate", self.axl, Gdk.KEY_F3, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Books-16.png'))
        win_list.set_image(img)
        win_list.connect('activate', lambda *a: self.notebook.set_current_page(0))
        win_opened = Gtk.ImageMenuItem("الكتب المفتوحة")
        win_opened.add_accelerator("activate", self.axl, Gdk.KEY_F4, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Book-Open-16.png'))
        win_opened.set_image(img)
        win_opened.connect('activate', self.opened_book)
        win_waraka = Gtk.ImageMenuItem("أوراق البحث")
        win_waraka.add_accelerator("activate", self.axl, Gdk.KEY_F5, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Papers-16.png'))
        win_waraka.set_image(img)
        win_waraka.connect('activate', lambda *a: self.notebook.set_current_page(6))
        win_special = Gtk.ImageMenuItem("نوافذ خاصة")
        win_special.add_accelerator("activate", self.axl, Gdk.KEY_F6, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Wins-16.png'))
        win_special.set_image(img)
        win_special.connect('activate', lambda *a: self.notebook.set_current_page(3))
        win_help = Gtk.ImageMenuItem("صفحة المساعدة")
        win_help.add_accelerator("activate", self.axl, Gdk.KEY_F7, 0, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'Help-16.png'))
        win_help.set_image(img)
        win_help.connect('activate', lambda *a: self.notebook.set_current_page(5))
        full_screen = Gtk.ImageMenuItem("ملء الشاشة")
        full_screen.add_accelerator("activate", self.axl, Gdk.KEY_F11, 0, Gtk.AccelFlags.VISIBLE)
        full_screen.connect('activate', self.full_screen)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FULLSCREEN, Gtk.IconSize.MENU)
        full_screen.set_image(img)
        exit1 = Gtk.ImageMenuItem("خروج")
        exit1.add_accelerator("activate", self.axl, Gdk.KEY_Q, ACCEL_CTRL_MOD, Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_file(join(asm_path.ICON_DIR, 'exit-16.png'))
        exit1.set_image(img)
        exit1.connect('activate', Gtk.main_quit)
        menu_wins.append(win_quran)
        menu_wins.append(win_tafsir)
        menu_wins.append(win_list)
        menu_wins.append(win_opened)
        menu_wins.append(win_waraka)
        menu_wins.append(win_special)
        menu_wins.append(win_help)
        menu_wins.append(Gtk.SeparatorMenuItem())
        menu_wins.append(full_screen) 
        menu_wins.append(exit1)
        btn_menu = Gtk.MenuButton();
        btn_menu.set_popup (menu_wins);
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_HOME, Gtk.IconSize.BUTTON)
        btn_menu.set_image(img)
        menu_wins.show_all();
        
        hb_bar.pack_start(btn_menu)

        
        btnbox_action = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        Gtk.StyleContext.add_class(btnbox_action.get_style_context(), "linked")
        
        find_btn = Gtk.Button()
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FIND, Gtk.IconSize.BUTTON)
        find_btn.set_image(img)
        find_btn.set_tooltip_text('نافذة البحث')
        find_btn.connect('clicked', lambda *a: self.search_win.show_all())
        btnbox_action.pack_start(find_btn, False, False, 0)
        
        menu_saveds = Gtk.Menu()   
        win_marks = Gtk.ImageMenuItem("نافذة العلامات المرجعيّة")
        win_marks.connect('activate', lambda *a: SavedMarks(self))
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PASTE, Gtk.IconSize.MENU)
        win_marks.set_image(img)
        menu_saveds.append(win_marks)     
        win_results = Gtk.ImageMenuItem("نافذة البحوث المحفوظة")
        win_results.connect('activate', lambda *a: SavedResult(self))
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_GO_UP, Gtk.IconSize.MENU)
        win_results.set_image(img)
        menu_saveds.append(win_results)
        btn_saveds = Gtk.MenuButton();
        btn_saveds.set_popup (menu_saveds);
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_SAVE, Gtk.IconSize.BUTTON)
        btn_saveds.set_image(img)
        menu_saveds.show_all();
        btnbox_action.pack_start(btn_saveds, False, False, 0)
        
        # a أحداث صفحة الكتاب المفتوح--------------------------------------
        
        menu_action_book = Gtk.Menu()      
        go_old = Gtk.ImageMenuItem("الذهاب إلى التصفح الأقدم")
        go_old.connect('activate', self.back_to_old)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_GO_DOWN, Gtk.IconSize.MENU)
        go_old.set_image(img)
        menu_action_book.append(go_old)     
        go_new = Gtk.ImageMenuItem("الذهاب إلى التصفح الأحدث")
        go_new.connect('activate', self.advance_to_new)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_GO_UP, Gtk.IconSize.MENU)
        go_new.set_image(img)
        menu_action_book.append(go_new)
        menu_action_book.append(Gtk.SeparatorMenuItem())
        add_fav = Gtk.ImageMenuItem("أضف الكتاب إلى المفضّلة")
        add_fav.connect('activate', self.add_to_favory)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_SAVE, Gtk.IconSize.MENU)
        add_fav.set_image(img)
        menu_action_book.append(add_fav)     
        sav_mark = Gtk.ImageMenuItem("حفظ موضع الصّفحة الحاليّة")
        sav_mark.connect('activate', self.site_in_book)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PASTE, Gtk.IconSize.MENU)
        sav_mark.set_image(img)
        menu_action_book.append(sav_mark)     
        menu_action_book.append(Gtk.SeparatorMenuItem())
        self.del_tashkil = Gtk.ImageMenuItem("حذف التّشكيل")
        if asm_config.getn('tashkil') == 0:  self.del_tashkil.set_label("إعادة التّشكيل")
        self.del_tashkil.connect('activate', self.set_tashkil)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FILE, Gtk.IconSize.MENU)
        self.del_tashkil.set_image(img)
        menu_action_book.append(self.del_tashkil)
        
        menu_action_book.append(Gtk.SeparatorMenuItem())
        win_prefs = Gtk.ImageMenuItem("التفضيلات")
        win_prefs.connect("activate", lambda *a: Preference(self))
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PREFERENCES, Gtk.IconSize.MENU)
        win_prefs.set_image(img)
        menu_action_book.append(win_prefs)
        self.btn_action_book = Gtk.MenuButton();
        self.btn_action_book.set_popup (menu_action_book);
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_EXECUTE, Gtk.IconSize.BUTTON)
        self.btn_action_book.set_image(img)
        menu_action_book.show_all();
        btnbox_action.pack_start(self.btn_action_book, False, False, 0)
        
        # a أحداث صفحة قائمة الكتب--------------------------------------
        
        menu_action_list = Gtk.Menu()          
        self.show_icons = Gtk.ImageMenuItem.new_with_label("عرض بالأيقونات")
        self.show_icons.add_accelerator("activate", self.axl, Gdk.KEY_S, ACCEL_CTRL_MOD, 
                       Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FILE, Gtk.IconSize.MENU)
        self.show_icons.set_image(img)
        menu_action_list.append(self.show_icons)
        if asm_config.getn('view_books') == 0: self.show_icons.set_label("عرض بالقائمة")
        else: self.show_icons.set_label("عرض بالأيقونات")
        self.show_icons.connect('activate', self.change_view)
        menu_action_list.append(Gtk.SeparatorMenuItem())
        side_panel = Gtk.ImageMenuItem("إخفاء/عرض اللوح الجانبي")
        side_panel.connect('activate', self.show_side)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_CLEAR, Gtk.IconSize.MENU)
        side_panel.set_image(img)
        menu_action_list.append(side_panel)  
        menu_action_list.append(Gtk.SeparatorMenuItem())
        organize = Gtk.ImageMenuItem("تنظيم المكتبة")
        organize.connect('activate', lambda *a: self.notebook.set_current_page(8))
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_EDIT, Gtk.IconSize.MENU)
        organize.set_image(img)
        menu_action_list.append(organize)     
        
        menu_action_list.append(Gtk.SeparatorMenuItem())
        win_prefs = Gtk.ImageMenuItem("التفضيلات")
        win_prefs.connect("activate", lambda *a: Preference(self))
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_PREFERENCES, Gtk.IconSize.MENU)
        win_prefs.set_image(img)
        menu_action_list.append(win_prefs)
        self.btn_action_list = Gtk.MenuButton();
        self.btn_action_list.set_popup (menu_action_list);
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_EXECUTE, Gtk.IconSize.BUTTON)
        self.btn_action_list.set_image(img)
        menu_action_list.show_all();
        btnbox_action.pack_start(self.btn_action_list, False, False, 0)
        
        # a أحداث صفحة تحرير الكتاب--------------------------------------
        
        menu_action_edit = Gtk.Menu()          
        find_replace = Gtk.ImageMenuItem("إيجاد واستبدال")
        find_replace.connect('activate', self.editbook.replace_all)
        find_replace.add_accelerator("activate", self.axl, Gdk.KEY_F, ACCEL_CTRL_MOD, 
                       Gtk.AccelFlags.VISIBLE)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FIND_AND_REPLACE, Gtk.IconSize.MENU)
        find_replace.set_image(img)
        menu_action_edit.append(find_replace)
        back_old_text = Gtk.ImageMenuItem("أرجع النص الأصلي")
        back_old_text.add_accelerator("activate", self.axl, Gdk.KEY_Z, ACCEL_CTRL_MOD, 
                       Gtk.AccelFlags.VISIBLE)
        back_old_text.connect('activate', self.editbook.undo_cb)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU)
        back_old_text.set_image(img)
        menu_action_edit.append(back_old_text)  
        menu_action_edit.append(Gtk.SeparatorMenuItem())
        change_info = Gtk.ImageMenuItem.new_with_label("تغيير معلومات الكتاب")
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_INFO, Gtk.IconSize.MENU)
        change_info.set_image(img)
        menu_action_edit.append(change_info)
        change_info.connect('activate', lambda *a: EditBitaka(self, self.editbook.id_book))
        menu_action_edit.append(Gtk.SeparatorMenuItem())
        save_changed = Gtk.ImageMenuItem("حفظ التغييرات في الكتاب")
        save_changed.add_accelerator("activate", self.axl, Gdk.KEY_S, ACCEL_CTRL_MOD, 
                       Gtk.AccelFlags.VISIBLE)
        save_changed.connect('activate', self.editbook.save_book)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_SAVE, Gtk.IconSize.MENU)
        save_changed.set_image(img)
        menu_action_edit.append(save_changed)  
        show_normal = Gtk.ImageMenuItem("عرض الكتاب في الوضع العاديّ")
        show_normal.connect('activate', self.editbook.show_book)
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_FILE, Gtk.IconSize.MENU)
        show_normal.set_image(img)
        menu_action_edit.append(show_normal)  
         
        self.btn_action_edit = Gtk.MenuButton();
        self.btn_action_edit.set_popup (menu_action_edit);
        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_EXECUTE, Gtk.IconSize.BUTTON)
        self.btn_action_edit.set_image(img)
        menu_action_edit.show_all();
        btnbox_action.pack_start(self.btn_action_edit, False, False, 0)
        hb_bar.pack_start(btnbox_action)
        
        #------------------------------------
        self.go_parts = Gtk.Button()
        self.go_parts.set_size_request(64, -1)
        self.go_parts.set_tooltip_text("الرجوع إلى الأقسام الرّئيسة")
        self.go_parts.connect('clicked', lambda *a: self.list_books.back_cb())
        img = Gtk.Image()
        icon_theme = Gtk.IconTheme.get_default ()
        has = icon_theme.has_icon("gtk-go-back-rtl")
        if  has: 
            img.set_from_icon_name('gtk-go-back-rtl', Gtk.IconSize.BUTTON)
        else:
            img.set_from_stock(Gtk.STOCK_GO_FORWARD, Gtk.IconSize.BUTTON)
        self.go_parts.set_image(img)
        hb_bar.pack_start(self.go_parts)
        
        # a أزرار التصفح---------------------------------------
            
        self.btnbox_pages = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        Gtk.StyleContext.add_class(self.btnbox_pages.get_style_context(), "linked")
        #-----------------------------
        first_page = Gtk.Button()
        img = Gtk.Image()
        has = icon_theme.has_icon("gtk-goto-first-rtl")
        if  has: 
            img.set_from_icon_name('gtk-goto-first-rtl', Gtk.IconSize.BUTTON)
        else:
            img.set_from_stock(Gtk.STOCK_GOTO_LAST, Gtk.IconSize.BUTTON)
        first_page.set_image(img)
        first_page.set_tooltip_text('الصفحة الأولى')
        first_page.connect('clicked', self.first_page)
        first_page.add_accelerator("clicked",self.axl, Gdk.KEY_Up, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE)
        self.btnbox_pages.pack_start(first_page, False, False, 0)
        #--------------------------------------
        prev_page = Gtk.Button()
        img = Gtk.Image()
        has = icon_theme.has_icon("gtk-go-back-rtl")
        if  has: 
            img.set_from_icon_name('gtk-go-back-rtl', Gtk.IconSize.BUTTON)
        else:
            img.set_from_stock(Gtk.STOCK_GO_FORWARD, Gtk.IconSize.BUTTON)
        prev_page.set_image(img)
        prev_page.set_tooltip_text('الصفحة السابقة')
        prev_page.connect('clicked', self.previous_page)
        prev_page.add_accelerator("clicked",self.axl, Gdk.KEY_Right, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE)
        self.btnbox_pages.pack_start(prev_page, False, False, 0)
        #--------------------------------------
        next_page = Gtk.Button()
        img = Gtk.Image()
        has = icon_theme.has_icon("gtk-go-forward-rtl")
        if  has: 
            img.set_from_icon_name('gtk-go-forward-rtl', Gtk.IconSize.BUTTON)
        else:
            img.set_from_stock(Gtk.STOCK_GO_BACK, Gtk.IconSize.BUTTON)
        next_page.set_image(img)
        next_page.set_tooltip_text('الصفحة التالية')
        next_page.connect('clicked', self.next_page)
        next_page.add_accelerator("clicked",self.axl, Gdk.KEY_Left, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE)
        self.btnbox_pages.pack_start(next_page, False, False, 0)
        #--------------------------------------
        last_page = Gtk.Button()
        img = Gtk.Image()
        has = icon_theme.has_icon("gtk-goto-last-rtl")
        if  has: 
            img.set_from_icon_name('gtk-goto-last-rtl', Gtk.IconSize.BUTTON)
        else:
            img.set_from_stock(Gtk.STOCK_GOTO_FIRST, Gtk.IconSize.BUTTON)
        last_page.set_image(img)
        last_page.set_tooltip_text('الصفحة الأخيرة')
        last_page.connect('clicked', self.last_page)
        last_page.add_accelerator("clicked",self.axl, Gdk.KEY_Down, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE)
        self.btnbox_pages.pack_start(last_page, False, False, 0)
        hb_bar.set_custom_title(self.btnbox_pages)
        
        self.entry_search.set_placeholder_text('بحث عن كتاب')
        self.entry_search.connect('changed', self.search_on_page)
        self.entry_search.connect('activate', self.search_on_active)
        
        hb_bar.pack_end(self.entry_search)
        
        # a--------------------------------
        self.notebook = Gtk.Notebook()
        self.notebook.set_show_tabs(False)
        self.notebook.append_page(self.list_books, Gtk.Label('0'))
        self.notebook.append_page(self.viewerbook, Gtk.Label('1'))
        self.notebook.append_page(self.moshafpage, Gtk.Label('2'))
        self.notebook.append_page(self.winspage, Gtk.Label('3'))
        self.notebook.append_page(self.tafsirpage, Gtk.Label('4'))
        self.notebook.append_page(self.help_book, Gtk.Label('5'))
        self.notebook.append_page(self.warakapage, Gtk.Label('6'))
        self.notebook.append_page(self.editbook, Gtk.Label('7'))
        self.notebook.append_page(self.organize, Gtk.Label('8'))
        self.notebook.connect("switch-page", self.switch_page)
        self.notebook.set_scrollable(True)
        self.notebook.set_show_tabs(False)

        self.box.pack_start(self.notebook, True, True, 0)

    
        self.axl.connect(Gdk.KEY_F11, 0, Gtk.AccelFlags.VISIBLE, self.full_screen)
        self.axl.connect(Gdk.KEY_F9, 0, Gtk.AccelFlags.VISIBLE, self.viewerbook.hide_index)
        self.axl.connect(Gdk.KEY_BackSpace, ACCEL_CTRL_MOD, Gtk.AccelFlags.VISIBLE, self.back_to_previous_page)
        
        self.axl.connect(Gdk.KEY_F1, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(2))
        self.axl.connect(Gdk.KEY_F2, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(4))
        self.axl.connect(Gdk.KEY_F3, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(0))
        self.axl.connect(Gdk.KEY_F4, 0, Gtk.AccelFlags.VISIBLE, self.opened_book)
        self.axl.connect(Gdk.KEY_F5, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(6))
        self.axl.connect(Gdk.KEY_F6, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(3))
        self.axl.connect(Gdk.KEY_F7, 0, Gtk.AccelFlags.VISIBLE, lambda *a: self.notebook.set_current_page(5))
        self.axl.connect(Gdk.KEY_Q, ACCEL_CTRL_MOD, Gtk.AccelFlags.VISIBLE, self.delete_event_cb)
        self.axl.connect(Gdk.KEY_S, ACCEL_CTRL_MOD, Gtk.AccelFlags.VISIBLE, self.change_view)
        self.axl.connect(Gdk.KEY_Up, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE, self.first_page)
        self.axl.connect(Gdk.KEY_Down, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE, self.last_page)
        self.axl.connect(Gdk.KEY_Left, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE, self.next_page)
        self.axl.connect(Gdk.KEY_Right, ACCEL_ALT_MOD, Gtk.AccelFlags.VISIBLE, self.previous_page)

        self.add(self.box)
        
        self.show_all()
        if asm_config.getn('search') == 0:
            self.search_win.stack.set_visible_child_name("n1")
        else:
            self.search_win.stack.set_visible_child_name("n2")
        self.btnbox_pages.hide()
        self.btn_action_book.hide()
        self.btn_action_edit.hide()
        self.go_parts.hide()
        self.help_book.scroll_search.hide()
        self.help_book.hp.set_position(120)
        if asm_config.getn('show_side') == 1:
            self.list_books.vbox_side.hide()
        else:
            self.list_books.vbox_side.show_all() 
        greet.destroy()
        try: self.start_session()
        except: pass
コード例 #15
0
ファイル: asm_theme.py プロジェクト: wahaproject/asmaa
 def refresh(self, *a):
     self.apply_preference()
     css_data = '''
     GtkMenu {
     font: Sans 12;
     }
     TreeParts, GtkIconView {
     background-color: '''+asm_customs.rgb(self.color_bg)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_prts)+''';
     font: '''+self.font_prts+''';
     }
     TreeBooks {
     background-color: '''+asm_customs.rgb(self.color_bg)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_bks)+''';
     font: '''+self.font_bks+''';
     }
     Treeindex {
     background-color: '''+asm_customs.rgb(self.color_bgs)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_idx)+''';
     font: '''+self.font_idx+''';
     }
     View:selected,
     Viewbitaka:selected,
     TreeBooks:selected,
     TreeParts:selected,
     Treeindex:selected, 
     GtkIconView:selected {
     background-color: '''+asm_customs.rgb(self.color_bg_sel)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_sel)+''';
     }
     View {
     background-color: '''+asm_customs.rgb(self.color_bg)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_nass)+''';
     font: '''+self.font_nass+''';
     }
     Viewbitaka {
     background-color: '''+asm_customs.rgb(self.color_bgs)+''';
     background-image: none;
     color: '''+asm_customs.rgb(self.color_nass)+''';
     font: KacstOne 13;
     }
     '''
     
     css_none = '''
     GtkMenu {
     font: Sans 12;
     }
     Tree {
     font:KacstOne 13;
     }
     Treeindex {
     font: KacstOne 13;
     }
     View {
     font: KacstOne 15;
     }
     Viewbitaka {
     font: KacstOne 13;
     }
     '''
         
     
     try: 
         screen = Gdk.Screen.get_default()
         css_provider = Gtk.CssProvider()
         context = Gtk.StyleContext()
         if asm_config.getn('theme') == 0: css_provider.load_from_data(css_none.encode('utf8'))
         else: css_provider.load_from_data(css_data.encode('utf8'))
         context.add_provider_for_screen(screen, css_provider,
                                         Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
     except: css_provider.load_from_data('')
コード例 #16
0
ファイル: asm_theme.py プロジェクト: wahaproject/asmaa
 def apply_preference(self, *a):
     
     if asm_config.getn('theme') == 3:
         self.font_tit     = asm_config.getv('font_tit')
         self.font_idx     = asm_config.getv('font_idx')
         self.font_nass    = asm_config.getv('font_nass')
         self.font_qrn     = asm_config.getv('font_qrn')
         self.font_prts     = asm_config.getv('font_prts')
         self.font_bks     = asm_config.getv('font_bks')
         self.color_tit    = asm_config.getv('color_tit')
         self.color_idx    = asm_config.getv('color_idx')
         self.color_nass   = asm_config.getv('color_nass')
         self.color_qrn    = asm_config.getv('color_qrn')
         self.color_prts    = asm_config.getv('color_prts')
         self.color_bks    = asm_config.getv('color_bks')
         self.color_bg     = asm_config.getv('color_bg')
         self.color_bgs    = asm_config.getv('color_bgs')
         self.color_sel    = asm_config.getv('color_sel')
         self.color_fnd    = asm_config.getv('color_fnd')
         self.color_bg_sel = asm_config.getv('color_bg_sel')
         self.color_bg_qrn = asm_config.getv('color_bg_qrn')
         
     elif asm_config.getn('theme') == 2:
         self.font_tit     = 'KacstOne 32'
         self.font_idx     = 'KacstOne 18'
         self.font_nass    = 'Amiri Quran 32'
         self.font_qrn     = 'Amiri Quran 32'
         self.font_prts     = 'KacstOne 22'
         self.font_bks     = 'KacstOne 20'
         self.color_tit    = '#f7f7e6e69494'
         self.color_idx    = '#ffffffffffff'
         self.color_nass   = '#ffffffffffff'
         self.color_qrn    = '#ffffffffffff'
         self.color_prts   = '#ffffffffffff'
         self.color_bks    = '#ffffffffffff'
         self.color_bg     = '#555555555555'
         self.color_bgs    = '#555555555555'
         self.color_sel    = '#444444444444'
         self.color_fnd    = '#222222222222'
         self.color_bg_sel = '#dddddddddddd'
         self.color_bg_qrn = '#888888888888'
         
     else:
         self.font_tit     = 'KacstOne Bold 20'
         self.font_idx     = 'KacstOne 13'
         self.font_nass    = 'Simplified Naskh 22'
         self.font_qrn     = 'Amiri Quran 23'
         self.font_bks     = 'KacstOne 15'
         self.font_prts     = 'KacstOne 17'
         self.color_tit    = '#868609091515'
         self.color_idx    = '#676f0584533d'
         self.color_nass   = '#1bac34a102b8'
         self.color_qrn    = '#202040400000'
         self.color_prts   = '#1bac34a102b8'
         self.color_bks    = '#868609091515'
         self.color_bg     = '#f7d1f3fce63d'
         self.color_bgs    = '#fca9fca9f231'
         self.color_sel    = '#ffffffffffff'
         self.color_fnd    = '#fe71fab0870b'
         self.color_bg_sel = '#9e9ec1c17a7a'
         self.color_bg_qrn = '#fcb2eb47aeb5'