Example #1
0
 def __init__(self, parent):
     self.parent = parent
     self.size_font = int(self.parent.theme.fontch[-2:])
     self.con = sqlite3.connect(daw_customs.MY_DATA)
     self.db = MyDB()
     self.con.create_function('fuzzy', 1, daw_araby.fuzzy)
     self.cur = self.con.cursor()
     Gtk.Box.__init__(self,spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
     self.view_count = daw_customs.ViewClass()
     self.view_count_bfr = self.view_count.get_buffer()
     self.view_count_tag = self.view_count_bfr.create_tag("title")
     scroll = Gtk.ScrolledWindow()
     scroll.set_shadow_type(Gtk.ShadowType.IN)
     scroll.add(self.view_count)
     self.pack_start(scroll, True, True, 0)
     self.show_all()
Example #2
0
 def __init__(self, parent):
     self.parent = parent
     self.db = MyDB()
     self.size_font = int(self.parent.theme.fontch[-2:])
     self.list_modifieds = []
     self .build()
Example #3
0
class Organize(Gtk.Box):
    
    def visible_cb(self, model, itr, data):
        if len(self.theword) == 0: return
        if daw_araby.fuzzy(self.theword[0]) in daw_araby.fuzzy(model.get_value(itr, 1).decode('utf8')):
            return True
        else: return False
        
    def search_cb(self, *a):
        self.theword = [self.search_poets.get_text().decode('utf8')]
        self.modelfilter.refilter()
    
    def visible_cb0(self, model, itr, data):
        if len(self.theword) == 0: return
        if daw_araby.fuzzy(self.theword0[0]) in daw_araby.fuzzy(model.get_value(itr, 1).decode('utf8')):
            return True
        else: return False
        
    def search_on_page(self, text):
        if len(self.store_poems) == 0: return
        self.theword0 = [text]
        self.modelfilter0.refilter()
    
    def near_page(self, v):
        self.size_font += v
        self.view_charh.override_font(Pango.FontDescription("{}".format(self.size_font,))) 
        self.view_nasse.override_font(Pango.FontDescription("{}".format(self.size_font,))) 
        self.view_sabab.override_font(Pango.FontDescription("{}".format(self.size_font,))) 
        self.view_tarjama.override_font(Pango.FontDescription("{}".format(self.size_font,))) 
    
    def move_in_page(self, v):
        model, i = self.tree_poet.get_selection().get_selected()
        if i:
            p = model.get_path(i).get_indices()[0]
            if p+v == -1 or p+v == len(model): return
            i1 = model.get_iter((p+v,))
            self.tree_poet.get_selection().select_iter(i1)
            self.tree_poet.scroll_to_cell((p+v,))
        elif len(self.tree_poet.get_model()) == 0: return
        else:
            i2 = model.get_iter((0,))
            self.tree_poet.get_selection().select_iter(i2)
            self.tree_poet.scroll_to_cell((0,))
        self.ok_poet()
    
    def __init__(self, parent):
        self.parent = parent
        self.db = MyDB()
        self.size_font = int(self.parent.theme.fontch[-2:])
        self.list_modifieds = []
        self .build()
    
    def modify_data(self, *a):
        model, i = self.sel_poem.get_selected()
        id_poem = model.get_value(i,0)
        text = daw_tools.right_space(self.view_nasse_bfr.get_text(self.view_nasse_bfr.get_start_iter(),
                                                        self.view_nasse_bfr.get_end_iter(), False)).decode('utf8')
        if text == '': daw_customs.erro(self.parent, 'لقد تم مسح القصيدة'); return
        nam = self.nm_poem.get_text().decode('utf8')
        if nam == '' : daw_customs.erro(self.parent, 'ضع اسما للقصيدة\nأو أول شطر منها'); return
        naw3 = daw_customs.value_active(self.naw3)
        if naw3 == None : daw_customs.erro(self.parent, 'حدد نوع القصيدة'); return
        if naw3 == 1:
            baher = daw_customs.value_active(self.baher)
            if baher == None : 
                if self.active_baher.get_active() == False:
                    baher = 0
                else: daw_customs.erro(self.parent, 'حدد بحر القصيدة'); return
            rawi = daw_customs.value_active(self.rawi)
            if rawi == None : 
                if self.active_rawi.get_active() == False:
                    rawi = 0
                else:  daw_customs.erro(self.parent, 'حدد روي القصيدة'); return
            kafia = daw_customs.value_active(self.kafia)
            if kafia == None : 
                if self.active_kafia.get_active() == False:
                    kafia = 0
                else:  daw_customs.erro(self.parent, 'حدد قافية القصيدة'); return
            arodh = daw_customs.value_active(self.arodh)
            if arodh == None : 
                if self.active_arodh.get_active() == False:
                    arodh = 0
                else:  daw_customs.erro(self.parent, 'حدد عروض القصيدة'); return
        elif naw3 == 2:
            baher = daw_customs.value_active(self.baher)
            if baher == None : 
                if self.active_baher.get_active() == False:
                    baher = 0
                else:  daw_customs.erro(self.parent, 'حدد بحر القصيدة'); return
            rawi = 0
            kafia = 0
            arodh = 0
        else:
            baher = 0
            rawi = 0
            kafia = 0
            arodh = 0
        gharadh = daw_customs.value_active(self.gharadh)
        if gharadh == None : 
                if self.active_gharadh.get_active() == False:
                    gharadh = 0
                else:  daw_customs.erro(self.parent, 'حدد غرض القصيدة'); return
        charh = self.view_charh_bfr.get_text(self.view_charh_bfr.get_start_iter(),
                                             self.view_charh_bfr.get_end_iter(), False).decode('utf8')
        sabab = self.view_sabab_bfr.get_text(self.view_sabab_bfr.get_start_iter(),
                                             self.view_sabab_bfr.get_end_iter(), False).decode('utf8')
        label = Gtk.Label()
        label.override_font(Pango.FontDescription('KacstOne 15'))
        if naw3 != 5:
            if arodh in [26, 27, 37, 39, 40]:
                longer_half, n_abiat = daw_tools.longer_half(text, label, 1)
            else:
                longer_half, n_abiat = daw_tools.longer_half(text, label, 0)
        else: longer_half = 0
        msg = daw_customs.sure(self.parent, '''
            هل أنت متأكد بأنك 
            تريد تعديل البيانات ؟
            ''' )
        if msg == Gtk.ResponseType.NO:
            return
        check = self.parent.db.modify_poem(id_poem, nam, text, sabab, charh, n_abiat, 
                                           baher, rawi, kafia, arodh, gharadh, naw3, longer_half)
        if check == None: daw_customs.info(self.parent, 'تم تعديل البيانات بنجاح'); return
    
    def modify_poet_cb(self, *a):
        model, i = self.sel_poet.get_selected()
        id_poet = model.get_value(i,0)
        if id_poet != 0:
            nm = self.nm_poet.get_text().decode('utf8')
            lak = self.lak_poet.get_text().decode('utf8')
            if nm == lak == '': daw_customs.erro(self.parent, 'ضع أسما للشاعر'); return
            if nm == '': nm += lak
            elif lak == '': lak += nm
            age = daw_customs.value_active(self.ages)
            if age == None : daw_customs.erro(self.parent, 'حدد عصر الشاعر\nأو اجعله غير معروف'); return
            balad = daw_customs.value_active(self.lands)
            if self.lands.get_sensitive():
                if balad == None : daw_customs.erro(self.parent, 'حدد بلد الشاعر\nأو اجعله غير معروف'); return
            else: balad = 22
            sex = daw_customs.value_active(self.sexs)
            if sex == None : daw_customs.erro(self.parent, 'حدد جنس الشاعر'); return
            die = self.dh_poet.get_value()
            tarjama = self.view_tarjama_bfr.get_text(self.view_tarjama_bfr.get_start_iter(),
                                                     self.view_tarjama_bfr.get_end_iter(), False).decode('utf8')
            msg = daw_customs.sure(self.parent, '''
                هل أنت متأكد بأنك 
                تريد تعديل بيانات الشاعر ؟
                ''' )
            if msg == Gtk.ResponseType.NO:
                return
            check = self.parent.db.modify_poet(id_poet, nm, lak, tarjama, die, sex, balad, age)
            if check == None: daw_customs.info(self.parent, 'تم تعديل البيانات بنجاح'); return
        else: return
    
    def load_data(self, text_poem='', text_sabab='', 
                  text_charh='', nm_poem='', baher=-1, rawi=-1, gharadh=-1, kafia=-1, naw3=-1, arodh=-1):
        self.view_nasse_bfr.set_text(text_poem)
        self.view_sabab_bfr.set_text(text_sabab)
        self.view_charh_bfr.set_text(text_charh)
        self.nm_poem.set_text(nm_poem)
        self.naw3.set_active(naw3)
        if self.baher.get_visible():
            self.baher.set_active(baher)
        if self.rawi.get_visible():
            self.rawi.set_active(rawi)
        if self.gharadh.get_visible():
            self.gharadh.set_active(gharadh)
        if self.kafia.get_visible():
            self.kafia.set_active(kafia)
        if self.arodh.get_visible():
            if arodh == None: arodh = -1
            self.arodh.set_active(arodh)
    
    # a حذف ديوان
    
    def remove_poet(self,*a):
        model, i = self.sel_poet.get_selected()
        if i:
            id_poet = model.get_value(i,0)
            nm = model.get_value(i,1)
            msg = daw_customs.sure(self.parent, '''
            سيتم حذف ديوان {}"
            مع بيانات الشاعر، هل تريد الاستمرار ؟
            '''.format(nm,))
            if msg == Gtk.ResponseType.YES:
                check = self.parent.db.remove_poet(id_poet)
                if check == None:
                    self.refresh_poets()
    
    # a حذف قصيدة
                    
    def remove_poem(self,*a):
        model, i = self.sel_poem.get_selected()
        if i:
            id_poem = model.get_value(i,0)
            nm = model.get_value(i,1)
            msg = daw_customs.sure(self.parent, '''
            سيتم حذف قصيدة {}
            هل تريد الاستمرار ؟
            '''.format(nm,))
            if msg == Gtk.ResponseType.YES:
                check = self.parent.db.remove_poem(id_poem)
                if check == None:
                    self.ok_poet()
    
    def ok_poem(self, *a):
        self.notebk.set_current_page(1)
        model, i = self.sel_poem.get_selected()
        if i:
            id_poem = model.get_value(i,0)
            text_poem, text_sabab, text_charh, text_ta3lik = self.parent.db.get_poem(id_poem)
            nm_poem = self.parent.db.name_poem(id_poem)
            baher = self.parent.db.get_id_baher(id_poem)-1
            rawi = daw_tools.get_index(daw_tools.elrawi, self.parent.db.rawi_poem(id_poem))
            gharadh = daw_tools.get_index(daw_tools.elgharadh, self.parent.db.gharadh_poem(id_poem))
            kafia = daw_tools.get_index(daw_tools.elkawafi, self.parent.db.kafia_poem(id_poem))
            naw3 = daw_tools.get_index(daw_tools.elnaw3, self.parent.db.naw3_poem(id_poem))
            if baher == -1:
                arodh = -1
            else:
                arodh = daw_tools.get_index_arodh(self.parent.db.get_id_baher(id_poem), 
                                                  self.parent.db.arodh_poem(id_poem))
            self.load_data(text_poem, text_sabab, text_charh, nm_poem, baher, rawi, gharadh,
                            kafia, naw3, arodh)
            self.list_modifieds = []
            self.list_modifieds.append(text_poem)
            self.redo.set_sensitive(False)  
    
    def ok_poet(self, *a):
        model, i = self.sel_poet.get_selected()
        if i:
            id_poet = model.get_value(i,0)
            list_poems, self.text_tarjama = self.parent.db.poems_of_poet(id_poet)
            if id_poet != 0:
                self.grid_poet.set_sensitive(True)
                self.view_tarjama_bfr.set_text(self.text_tarjama)
                self.lak_poet.set_text(self.parent.db.name_poet(id_poet)[1])
                self.nm_poet.set_text(self.parent.db.name_poet(id_poet)[0])
                self.ages.set_active(daw_tools.get_index(daw_tools.age_poet, self.parent.db.age_poet(id_poet)))
                self.lands.set_active(daw_tools.get_index(daw_tools.elbalad, self.parent.db.balad_poet(id_poet)))
                self.sexs.set_active(daw_tools.get_index(daw_tools.sex_poet, self.parent.db.sex_poet(id_poet)))
                self.dh_poet.set_value(float(self.parent.db.death_poet(id_poet)))
            else:
                self.grid_poet.set_sensitive(False)
                self.view_tarjama_bfr.set_text('')
                self.lak_poet.set_text('')
                self.nm_poet.set_text('')
                self.ages.set_active(-1)
                self.lands.set_active(-1)
                self.sexs.set_active(-1)
                self.dh_poet.set_value(0.0)
            self.store_poems.clear()
            self.load_data()
            if len(list_poems) != 0:
                self.names_list0 = []
                self.modelfilter0 = self.store_poems.filter_new()
                for a in list_poems:
                    self.store_poems.append([a[0], a[1]])
                    self.names_list0.append(a[1])
                self.theword0 = self.names_list0[:]
                self.modelfilter0.set_visible_func(self.visible_cb0, self.theword0) 
                self.tree_poems.set_model(self.modelfilter0)
            self.notebk.set_current_page(0)
            
    def change_text(self, *a):
        text = (self.view_nasse_bfr.get_text(self.view_nasse_bfr.get_start_iter(), self.view_nasse_bfr.get_end_iter(), False)).decode('utf8')
        model, i = self.sel_poem.get_selected()
        if i:
            id_poem = model.get_value(i,0)
            if len(self.list_modifieds) > 0:
                if text != self.list_modifieds[-1]:
                    self.list_modifieds.append(text)
                    self.redo.set_sensitive(True)
    
    def redo_text(self, *a):
        del self.list_modifieds[-1]
        self.view_nasse_bfr.set_text(self.list_modifieds[-1])
        del self.list_modifieds[-1]
        del self.list_modifieds[-1]
        if len(self.list_modifieds) == 1:
            self.redo.set_sensitive(False)      
    
    def change_naw3(self, *a):
        if self.naw3.get_active() == 0:
            self.baher_hb.show_all()
            self.rawi_hb.show_all()
            self.kafia_hb.show_all()
            self.arodh_hb.show_all()
        elif self.naw3.get_active() == 1:
            self.baher_hb.show_all()
            self.rawi_hb.hide()
            self.kafia_hb.hide()
            self.arodh_hb.hide()
        else:
            self.baher_hb.hide()
            self.rawi_hb.hide()
            self.kafia_hb.hide()
            self.arodh_hb.hide()
    
    def a3aridh_elbaher(self, *a):
        model = self.arodh.get_model()
        model.clear()
        baher = daw_customs.value_active(self.baher)
        if baher == None: return
        a3aridh = daw_tools.ela3aridh_in_behor[baher]
        for a in a3aridh:
            nm = daw_tools.get_name(daw_tools.ela3aridh, a)
            model.append([a, nm])
    
    def select_age(self, *a):
        if daw_customs.value_active(self.ages) == 8: self.lands.set_sensitive(True)
        else:
            self.lands.set_active(-1)
            self.lands.set_sensitive(False)
    
    def tashkeel_cb(self, btn, haraka):
        self.view_nasse_bfr.insert_at_cursor(haraka)
    
    def merge_poet_cb(self, *a):
        new_poet = self.poets_entry1.get_text()
        if new_poet == '': return
        poet, sex, balad, age = self.parent.db.id_name_poet(new_poet.decode('utf8'))
        if poet == None: daw_customs.erro(self.parent, 'ضع الاسم الصحيح للشاعر'); return
        model, i = self.sel_poet.get_selected()
        if i:
            poet_old = model.get_value(i,0)
            self.parent.db.merge_poet(poet_old, poet, sex, balad, age)
            daw_customs.info(self.parent, 'تم دمج ديوان {} مع ديوان {}'.format(model.get_value(i,1), new_poet))
    
    def move_poem_cb(self, *a):
        new_poet = self.poets_entry.get_text()
        if new_poet == '': return
        poet, sex, balad, age = self.parent.db.id_name_poet(new_poet.decode('utf8'))
        if poet == None: daw_customs.erro(self.parent, 'ضع الاسم الصحيح للشاعر'); return
        model, i = self.sel_poem.get_selected()
        if i:
            poem = model.get_value(i,0)
            self.parent.db.change_poet(poem, poet, sex, balad, age)
            daw_customs.info(self.parent, 'تم نقل القصيدة {} إلى ديوان {}'.format(model.get_value(i,1), new_poet))
            model.remove(i)
      
    def refresh_poets(self, *a):
        self.store_poet.clear()
        ls = self.db.all_poets()
        self.modelfilter = self.store_poet.filter_new()
        ls.append([0, u'ما لا يعرف قائله', 0, 22, 9])
        self.names_list = []
        for a in ls:
            s_list = []
            self.store_poet.append(a)
            s_list.append(a[2])
            self.names_list.append(s_list)
        self.theword = self.names_list[:]
        self.modelfilter.set_visible_func(self.visible_cb, self.theword) 
        self.tree_poet.set_model(self.modelfilter)
      
    def build(self,*a): 
        Gtk.Box.__init__(self,spacing=7,orientation=Gtk.Orientation.VERTICAL)
        hp1 = Gtk.HPaned()
        self.pack_start(hp1, True, True, 0)
        self.tree_poet = daw_customs.TreeClass()
        self.sel_poet = self.tree_poet.get_selection()
        cell = Gtk.CellRendererText()
        cell.set_property("wrap-mode", Pango.WrapMode.WORD_CHAR)
        cell.set_property("wrap-width", 150)
        kal = Gtk.TreeViewColumn('دواوين الشعراء', cell, text=1)
        self.tree_poet.append_column(kal)
        self.store_poet = Gtk.ListStore(int, str, int, int, int)
        self.refresh_poets()
        self.tree_poet.connect("cursor-changed", self.ok_poet)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_poet)
        scroll.set_size_request(150, -1)
        scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        vb = Gtk.Box(spacing=7,orientation=Gtk.Orientation.VERTICAL)
        try: self.search_poets = Gtk.SearchEntry()
        except: self.search_poets = Gtk.Entry()
        self.search_poets.set_placeholder_text('بحث عن شاعر')
        self.search_poets.connect('changed', self.search_cb)
        vb.pack_start(self.search_poets, False, False, 0)
        vb.pack_start(scroll, True, True, 0)
        hp1.pack1(vb, False, False)
        
        hp2 = Gtk.HPaned()
        hp1.pack2(hp2, True, True)
        self.store_poems = Gtk.ListStore(int, str)
        self.tree_poems = daw_customs.TreeClass()
        self.tree_poems.set_model(self.store_poems)
        self.sel_poem = self.tree_poems.get_selection()
        self.tree_poems.set_grid_lines(Gtk.TreeViewGridLines.HORIZONTAL)
        self.tree_poems.connect("cursor-changed", self.ok_poem)
        poems = Gtk.TreeViewColumn('القصائد', Gtk.CellRendererText(), text=1)
        self.tree_poems.append_column(poems)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.tree_poems)
        scroll.set_size_request(180, -1)
        hp2.pack1(scroll, False, False)
        
        self.notebk = Gtk.Notebook()
        hp2.pack2(self.notebk, True, True)
        self.notebk.set_show_tabs(False)
        self.nbk1 = Gtk.Notebook()
        self.nbk2 = Gtk.Notebook()
        self.view_nasse  = daw_customs.ViewEdit()
        self.view_nasse.set_justification(Gtk.Justification.CENTER)
        self.view_nasse_bfr = self.view_nasse.get_buffer()
        self.view_nasse_bfr.connect('changed', self.change_text)
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_nasse)
        vb = Gtk.VBox(False, 0)
        hb = Gtk.HBox(False, 0)
        lab = Gtk.Label('التشكيل :   ')
        lab.set_alignment(0,0.5)
        hb.pack_start(lab, False, False, 0)
        shadda = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'shadda.png'), 'الشدة', self.tashkeel_cb, daw_araby.SHADDA)
        hb.pack_start(shadda, False, False, 0)
        skon = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'skon.png'), 'السكون',self.tashkeel_cb, daw_araby.SUKUN)
        hb.pack_start(skon, False, False, 0)
        fatha = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'fatha.png'), 'الفتحة',self.tashkeel_cb, daw_araby.FATHA)
        hb.pack_start(fatha, False, False, 0)
        damma = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'damma.png'), 'الضمة',self.tashkeel_cb, daw_araby.DAMMA)
        hb.pack_start(damma, False, False, 0)
        kasra = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'kasra.png'), 'الكسرة',self.tashkeel_cb, daw_araby.KASRA)
        hb.pack_start(kasra, False, False, 0)
        fatha2 = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'fatha2.png'), 'الفتحتين',self.tashkeel_cb, daw_araby.FATHATAN)
        hb.pack_start(fatha2, False, False, 0)
        damma2 = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'damma2.png'), 'الضمتين',self.tashkeel_cb, daw_araby.DAMMATAN)
        hb.pack_start(damma2, False, False, 0)
        kasra2 = daw_customs.tool_button(join(daw_customs.ICON_DIR, 'kasra2.png'), 'الكسرتين',self.tashkeel_cb, daw_araby.KASRATAN)
        hb.pack_start(kasra2, False, False, 0)
        vb.pack_start(scroll, True, True, 0)
        
        self.redo = Gtk.ToolButton(stock_id=Gtk.STOCK_REDO)
        self.redo.set_sensitive(False)
        hb.pack_end(self.redo, False, False, 3)
        self.redo.connect('clicked', self.redo_text)
        vb.pack_start(hb, False, False, 0)
        self.nbk1.append_page(vb, Gtk.Label('القصيدة'))
        
        self.view_charh = daw_customs.ViewEdit()
        self.view_charh_bfr = self.view_charh.get_buffer()
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_charh)
        self.nbk1.append_page(scroll, Gtk.Label('الشرح'))
        
        vb = Gtk.VBox(False, 7)
        vb.set_border_width(7)
        hb = Gtk.HBox(False, 7)
        la0 = Gtk.Label('اسم القصيدة')
        la0.set_alignment(0,0.5)
        hb.pack_start(la0, False, False, 0)
        self.nm_poem = Gtk.Entry()
        self.nm_poem.set_placeholder_text('إن لم يكن لها اسم ، اكتب صدر أول بيت بدلا من ذلك')
        hb.pack_start(self.nm_poem, True, True, 0)
        vb.pack_start(hb, False, False, 0)
  
        hb, self.naw3 = daw_customs.combo(daw_tools.elnaw3, u'النوع', 0)
        vb.pack_start(hb, False, False, 0)
        self.naw3.connect('changed', self.change_naw3)
        
        hb, self.gharadh = daw_customs.combo(daw_tools.elgharadh, u'الغرض', 0)
        vb.pack_start(hb, False, False, 0)
        self.active_gharadh = Gtk.CheckButton('')
        self.active_gharadh.set_active(True)
        def active_gharadh_cb(widget, *a):
            if self.active_gharadh.get_active():
                self.gharadh.set_sensitive(True)
            else:
                self.gharadh.set_sensitive(False)
                self.gharadh.set_active(-1)
        self.active_gharadh.connect('toggled', active_gharadh_cb)
        hb.pack_start(self.active_gharadh, False, False, 0)

        self.baher_hb, self.baher = daw_customs.combo(daw_tools.elbehor, u'البحر', 0)
        self.baher.connect('changed', self.a3aridh_elbaher)
        vb.pack_start(self.baher_hb, False, False, 0)
        self.active_baher = Gtk.CheckButton('')
        self.active_baher.set_active(True)
        def active_baher_cb(widget, *a):
            if self.active_baher.get_active():
                self.baher.set_sensitive(True)
            else:
                self.baher.set_sensitive(False)
                self.baher.set_active(-1)
        self.active_baher.connect('toggled', active_baher_cb)
        self.baher_hb.pack_start(self.active_baher, False, False, 0)
        
        self.rawi_hb, self.rawi = daw_customs.combo(daw_tools.elrawi, u'الروي', 0)
        vb.pack_start(self.rawi_hb, False, False, 0)
        self.active_rawi = Gtk.CheckButton('')
        self.active_rawi.set_active(True)
        def active_rawi_cb(widget, *a):
            if self.active_rawi.get_active():
                self.rawi.set_sensitive(True)
            else:
                self.rawi.set_sensitive(False)
                self.rawi.set_active(-1)
        self.active_rawi.connect('toggled', active_rawi_cb)
        self.rawi_hb.pack_start(self.active_rawi, False, False, 0)
        
        self.kafia_hb, self.kafia = daw_customs.combo(daw_tools.elkawafi, u'القافية', 0)
        vb.pack_start(self.kafia_hb, False, False, 0)
        self.active_kafia = Gtk.CheckButton('')
        self.active_kafia.set_active(True)
        def active_kafia_cb(widget, *a):
            if self.active_kafia.get_active():
                self.kafia.set_sensitive(True)
            else:
                self.kafia.set_sensitive(False)
                self.kafia.set_active(-1)
        self.active_kafia.connect('toggled', active_kafia_cb)
        self.kafia_hb.pack_start(self.active_kafia, False, False, 0)
        
        self.arodh_hb, self.arodh = daw_customs.combo([], u'العروض وضربها', 0)
        vb.pack_start(self.arodh_hb, False, False, 0)
        self.active_arodh = Gtk.CheckButton('')
        self.active_arodh.set_active(True)
        def active_arodh_cb(widget, *a):
            if self.active_arodh.get_active():
                self.arodh.set_sensitive(True)
            else:
                self.arodh.set_sensitive(False)
                self.arodh.set_active(-1)
        self.active_arodh.connect('toggled', active_arodh_cb)
        self.arodh_hb.pack_start(self.active_arodh, False, False, 0)
        
        la1 = Gtk.Label('سبب النظم')
        la1.set_alignment(0,1)
        vb.pack_start(la1, False, False, 0)
        self.view_sabab = daw_customs.ViewEdit()
        self.view_sabab_bfr = self.view_sabab.get_buffer()
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_sabab)
        vb.pack_start(scroll, True, True, 0)
        self.nbk1.append_page(vb, Gtk.Label('معلوماتها'))
        
        self.view_tarjama = daw_customs.ViewEdit()
        self.view_tarjama_bfr = self.view_tarjama.get_buffer()
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_tarjama)
        self.nbk2.append_page(scroll, Gtk.Label('الترجمة'))
        
        self.grid_poet = Gtk.Grid()
        self.grid_poet.set_column_spacing(6)
        self.grid_poet.set_row_spacing(6)
        self.grid_poet.set_border_width(6)

        self.grid_poet.attach(Gtk.Label('الاسم المشتهر'), 1, 1, 1, 1)
        self.lak_poet = Gtk.Entry()
        self.grid_poet.attach(self.lak_poet, 2, 1, 3, 1)
        
        self.grid_poet.attach(Gtk.Label('الاسم الحقيقي'), 1, 2, 1, 1)
        self.nm_poet = Gtk.Entry()
        self.grid_poet.attach(self.nm_poet, 2, 2, 3, 1)
        
        hb, self.ages = daw_customs.combo(daw_tools.age_poet, u'العصر', 0)
        self.ages.connect('changed', self.select_age)
        self.grid_poet.attach(hb, 1, 3, 4, 1)
        
        hb, self.lands = daw_customs.combo(daw_tools.elbalad, u'البلد', 0)
        self.grid_poet.attach(hb, 1, 4, 4, 1)
        
        hb, self.sexs = daw_customs.combo(daw_tools.sex_poet, u'الجنس', 0)
        self.grid_poet.attach(hb, 1, 5, 4, 1)
        
        self.grid_poet.attach(Gtk.Label('الوفاة (هـ)'), 1, 6, 1, 1)
        adj = Gtk.Adjustment(1434, -300, 1434, 1, 5.0, 0.0)
        self.dh_poet = Gtk.SpinButton()
        self.dh_poet.set_adjustment(adj)
        self.dh_poet.set_wrap(True)
        self.grid_poet.attach(self.dh_poet, 2, 6, 1, 1)
        self.nbk2.append_page(self.grid_poet, Gtk.Label('معلومات الشاعر'))
        
        vb = Gtk.VBox(False, 7)
        vb.set_border_width(7)
        hb = Gtk.HBox(False, 7)
        move_poem = daw_customs.ButtonClass('نقل القصيدة الحالية إلى ديوان : ')
        move_poem.connect('clicked', self.move_poem_cb)
        hb.pack_start(move_poem, False, False, 0)
        self.poets_entry = Gtk.Entry()
        self.poets_entry.set_placeholder_text('اكتب حرفا لتحصل على التكملة')
        self.completion03 = Gtk.EntryCompletion()
        self.completion03.set_model(self.parent.dawawinpage.store_poet)
        self.completion03.set_text_column(1)
        self.poets_entry.set_completion(self.completion03)
        hb.pack_start(self.poets_entry, True, True, 0)
        vb.pack_start(hb, False, False, 0)
        
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        self.del_poem = daw_customs.ButtonClass('حذف قصيدة')
        self.del_poem.connect('clicked',self.remove_poem)
        hbox.pack_start(self.del_poem, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        self.nbk1.append_page(vb, Gtk.Label('متقدم'))
        
        vb = Gtk.VBox(False, 7)
        vb.set_border_width(7)
        hb = Gtk.HBox(False, 7)
        merge_poet = daw_customs.ButtonClass('دمج الشاعر الحالي مع الشاعر : ')
        merge_poet.connect('clicked', self.merge_poet_cb)
        hb.pack_start(merge_poet, False, False, 0)
        self.poets_entry1 = Gtk.Entry()
        self.poets_entry1.set_placeholder_text('اكتب حرفا لتحصل على التكملة')
        self.completion04 = Gtk.EntryCompletion()
        self.completion04.set_model(self.parent.dawawinpage.store_poet)
        self.completion04.set_text_column(1)
        self.poets_entry1.set_completion(self.completion04)
        hb.pack_start(self.poets_entry1, True, True, 0)
        vb.pack_start(hb, False, False, 0)
        
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        self.del_poet = daw_customs.ButtonClass('حذف ديوان')
        self.del_poet.connect('clicked',self.remove_poet)
        hbox.pack_start(self.del_poet, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        self.nbk2.append_page(vb, Gtk.Label('متقدم'))
        
        vb = Gtk.VBox(False, 7)
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        self.modif_poet = daw_customs.ButtonClass('تعديل الشاعر')
        self.modif_poet.connect('clicked',self.modify_poet_cb)
        vb.pack_start(self.nbk2, True, True, 0)
        vb.pack_start(hbox, False, False, 0)
        hbox.pack_start(self.modif_poet, False, False, 0)
        self.notebk.append_page(vb, Gtk.Label(''))
        
        vb = Gtk.VBox(False, 7)
        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        self.modif_poem = daw_customs.ButtonClass('تعديل القصائد')
        self.modif_poem.connect('clicked',self.modify_data)
        vb.pack_start(self.nbk1, True, True, 0)
        vb.pack_start(hbox, False, False, 0)
        hbox.pack_start(self.modif_poem, False, False, 0)
        self.notebk.append_page(vb, Gtk.Label(''))

        self.show_all()
        
Example #4
0
class Count(Gtk.Box):
    
    def __init__(self, parent):
        self.parent = parent
        self.size_font = int(self.parent.theme.fontch[-2:])
        self.con = sqlite3.connect(daw_customs.MY_DATA)
        self.db = MyDB()
        self.con.create_function('fuzzy', 1, daw_araby.fuzzy)
        self.cur = self.con.cursor()
        Gtk.Box.__init__(self,spacing=7,orientation=Gtk.Orientation.HORIZONTAL)
        self.view_count = daw_customs.ViewClass()
        self.view_count_bfr = self.view_count.get_buffer()
        self.view_count_tag = self.view_count_bfr.create_tag("title")
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(self.view_count)
        self.pack_start(scroll, True, True, 0)
        self.show_all()
   
    def near_page(self, v):
        self.size_font += v
        self.view_count.override_font(Pango.FontDescription("{}".format(self.size_font,))) 
   
    def move_in_page(self, v):
        return
     
    def n_dawawin(self, sex, age):
        self.cur.execute('SELECT id_poet FROM poets WHERE sex=? AND age=?', (sex, age))
        poets = self.cur.fetchall()
        return len(poets)
    
    def n_poems(self, sex, age):
        self.cur.execute('SELECT id_poem FROM infopoem WHERE sex=? AND age=?', (sex, age))
        poems = self.cur.fetchall()
        return len(poems)
    
    def n_verses(self, sex, age):
        self.cur.execute('SELECT sum(abiat) FROM infopoem WHERE sex=? AND age=?', (sex, age))
        abiats = self.cur.fetchall()
        if abiats[0][0] == None: return 0
        return abiats[0][0] 
       
    def refresh(self, *a):
        self.v_f_1 = self.n_verses(2, 1)
        self.v_m_1 = self.n_verses(1, 1)
        self.p_f_1 = self.n_poems(2, 1)
        self.p_m_1 = self.n_poems(1, 1)
        self.d_f_1 = self.n_dawawin(2, 1)
        self.d_m_1 = self.n_dawawin(1, 1)

        self.v_f_2 = self.n_verses(2, 2)
        self.v_m_2 = self.n_verses(1, 2)
        self.p_f_2 = self.n_poems(2, 2)
        self.p_m_2 = self.n_poems(1, 2)
        self.d_f_2 = self.n_dawawin(2, 2)
        self.d_m_2 = self.n_dawawin(1, 2)

        self.v_f_3 = self.n_verses(2, 3)
        self.v_m_3 = self.n_verses(1, 3)
        self.p_f_3 = self.n_poems(2, 3)
        self.p_m_3 = self.n_poems(1, 3)
        self.d_f_3 = self.n_dawawin(2, 3)
        self.d_m_3 = self.n_dawawin(1, 3)

        self.v_f_4 = self.n_verses(2, 4)
        self.v_m_4 = self.n_verses(1, 4)
        self.p_f_4 = self.n_poems(2, 4)
        self.p_m_4 = self.n_poems(1, 4)
        self.d_f_4 = self.n_dawawin(2, 4)
        self.d_m_4 = self.n_dawawin(1, 4)

        self.v_f_5 = self.n_verses(2, 5)
        self.v_m_5 = self.n_verses(1, 5)
        self.p_f_5 = self.n_poems(2, 5)
        self.p_m_5 = self.n_poems(1, 5)
        self.d_f_5 = self.n_dawawin(2, 5)
        self.d_m_5 = self.n_dawawin(1, 5)

        self.v_f_10 = self.n_verses(2, 10)
        self.v_m_10 = self.n_verses(1, 10)
        self.p_f_10 = self.n_poems(2, 10)
        self.p_m_10 = self.n_poems(1, 10)
        self.d_f_10 = self.n_dawawin(2, 10)
        self.d_m_10 = self.n_dawawin(1, 10)

        self.v_f_11 = self.n_verses(2, 11)
        self.v_m_11 = self.n_verses(1, 11)
        self.p_f_11 = self.n_poems(2, 11)
        self.p_m_11 = self.n_poems(1, 11)
        self.d_f_11 = self.n_dawawin(2, 11)
        self.d_m_11 = self.n_dawawin(1, 11)

        self.v_f_6 = self.n_verses(2, 6)
        self.v_m_6 = self.n_verses(1, 6)
        self.p_f_6 = self.n_poems(2, 6)
        self.p_m_6 = self.n_poems(1, 6)
        self.d_f_6 = self.n_dawawin(2, 6)
        self.d_m_6 = self.n_dawawin(1, 6)

        self.v_f_7 = self.n_verses(2, 7)
        self.v_m_7 = self.n_verses(1, 7)
        self.p_f_7 = self.n_poems(2, 7)
        self.p_m_7 = self.n_poems(1, 7)
        self.d_f_7 = self.n_dawawin(2, 7)
        self.d_m_7 = self.n_dawawin(1, 7)

        self.v_f_8 = self.n_verses(2, 8)
        self.v_m_8 = self.n_verses(1, 8)
        self.p_f_8 = self.n_poems(2, 8)
        self.p_m_8 = self.n_poems(1, 8)
        self.d_f_8 = self.n_dawawin(2, 8)
        self.d_m_8 = self.n_dawawin(1, 8)
         
        self.v_f_9 = self.n_verses(2, 9)
        self.v_m_9 = self.n_verses(1, 9)
        self.p_f_9 = self.n_poems(2, 9)
        self.p_m_9 = self.n_poems(1, 9)
        self.d_f_9 = self.n_dawawin(2, 9)
        self.d_m_9 = self.n_dawawin(1, 9)
        self.p_n_9 = self.n_poems(0, 9)
        self.v_n_9 = self.n_verses(0, 9)
    
    def make_html(self, *a):
        self.refresh()
        template  = '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
        <html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>إحصاءات دواوين العرب</title>
        </head>
        <body>
        <table
        style="vertical-align: middle; text-align: center; width: 800px; height: 700px; margin-left: auto; margin-right: auto;"
        border = 1"1" cellpadding = 1"2" cellspacing = 1"2">
        <caption style="caption-side: right;"><br>
        </caption><tbody>
        <tr>
        <td style="background-color: rgb(204, 51, 204);">أبيات الشواعر<br>
        </td>
        <td style="background-color: rgb(204, 51, 204);">أبيات الشعراء<br>
        </td>
        <td style="background-color: rgb(204, 51, 204);">قصائد الشواعر<br>
        </td>
        <td style="background-color: rgb(204, 51, 204);">قصائد الشعراء<br>
        </td>
        <td style="background-color: rgb(204, 51, 204);">دواوين الشواعر<br>
        </td>
        <td style="background-color: rgb(204, 51, 204);">دواوين الشعراء<br>
        </td>
        <td style="background-color: rgb(51, 204, 255);">العصور</td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">الجاهلي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">المخضرمون<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">صدر اﻹسلام<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">الأموي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">العباسي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">الفاطمي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">الأيوبي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">المملوكي<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">العثماني<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">الحديث<br>
        </td>
        </tr>
        <tr>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td>{}<br>
        </td>
        <td style="background-color: rgb(255, 190, 94);">غير معروف<br>
        </td>
        </tr>
        </tbody>
        </table>
        <br>
        <br>
        </body>
        </html>'''.format(self.v_f_1, self.v_m_1, self.p_f_1, self.p_m_1, self.d_f_1, self.d_m_1,
                          self.v_f_2, self.v_m_2, self.p_f_2, self.p_m_2, self.d_f_2, self.d_m_2,
                          self.v_f_3, self.v_m_3, self.p_f_3, self.p_m_3, self.d_f_3, self.d_m_3,
                          self.v_f_4, self.v_m_4, self.p_f_4, self.p_m_4, self.d_f_4, self.d_m_4,
                          self.v_f_5, self.v_m_5, self.p_f_5, self.p_m_5, self.d_f_5, self.d_m_5,
                          self.v_f_10, self.v_m_10, self.p_f_10, self.p_m_10, self.d_f_10, self.d_m_10,
                          self.v_f_11, self.v_m_11, self.p_f_11, self.p_m_11, self.d_f_11, self.d_m_11,
                          self.v_f_6, self.v_m_6, self.p_f_6, self.p_m_6, self.d_f_6, self.d_m_6,
                          self.v_f_7, self.v_m_7, self.p_f_7, self.p_m_7, self.d_f_7, self.d_m_7,
                          self.v_f_8, self.v_m_8, self.p_f_8, self.p_m_8, self.d_f_8, self.d_m_8,
                          self.v_f_9, self.v_m_9, self.p_f_9, self.p_m_9, self.d_f_9, self.d_m_9)
        
        file_html = join(daw_customs.HOME_DIR, 'count.html')
        file_count = open(file_html, 'w')
        file_count.write(template)
        file_count.close()
        call(['xdg-open', file_html])
        
    def make_text(self, *a):
        self.refresh()
        new_text = '''
        صفحة إحصاء الدواوين والقصائد والأبيات الملحقة بقاعدة بيانات برنامج دواوين العرب :
        عدد الدواوين الإجمالي : {} ،
        عدد القصائد الإجمالي : {} ،
        عدد الأبيات الإجمالي : {} ،
        ،============================================،
        
        العصر الجاهلي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        عصر المخضرمين :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر الإسلامي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر الأموي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر العباسي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر الفاطمي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر الأيوبي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر المملوكي :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر العثماني :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        العصر الحديث :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        غير المعروف عصره :
        الشعراء :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الشواعر :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        الكل :
        عدد الدواوين : {} ،
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        ...................................
        غير المعروف قائله :
        عدد القصائد : {} ،
        عدد الأبيات : {} ،
        '''.format(self.db.n_dawawin(), self.db.n_poems(), self.db.n_verses(),
                      self.d_m_1, self.p_m_1, self.v_m_1, self.d_f_1, self.p_f_1, self.v_f_1,
                      self.d_m_1+self.d_f_1 ,self.p_m_1+self.p_f_1, self.v_m_1+self.v_f_1,
                      self.d_m_2, self.p_m_2, self.v_m_2, self.d_f_2, self.p_f_2, self.v_f_2,
                      self.d_m_2+self.d_f_2 , self.p_m_2+self.p_f_2, self.v_m_2+self.v_f_2,
                      self.d_m_3, self.p_m_3, self.v_m_3, self.d_f_3, self.p_f_3, self.v_f_3,
                      self.d_m_3+self.d_f_3 ,self.p_m_3+self.p_f_3, self.v_m_3+self.v_f_3,
                      self.d_m_4, self.p_m_4, self.v_m_4, self.d_f_4, self.p_f_4, self.v_f_4,
                      self.d_m_4+self.d_f_4 ,self.p_m_4+self.p_f_4, self.v_m_4+self.v_f_4,
                      self.d_m_5, self.p_m_5, self.v_m_5, self.d_f_5, self.p_f_5, self.v_f_5,
                      self.d_m_5+self.d_f_5, self.p_m_5+self.p_f_5, self.v_m_5+self.v_f_5,
                      self.d_m_10, self.p_m_10, self.v_m_10, self.d_f_10, self.p_f_10, self.v_f_10,
                      self.d_m_10+self.d_f_10 ,self.p_m_10+self.p_f_10, self.v_m_10+self.v_f_10,
                      self.d_m_11, self.p_m_11, self.v_m_11, self.d_f_11, self.p_f_11, self.v_f_11,
                      self.d_m_11+self.d_f_11 ,self.p_m_11+self.p_f_11, self.v_m_11+self.v_f_11,
                      self.d_m_6, self.p_m_6, self.v_m_6, self.d_f_6, self.p_f_6, self.v_f_6,
                      self.d_m_6+self.d_f_6 ,self.p_m_6+self.p_f_6, self.v_m_6+self.v_f_6,
                      self.d_m_7, self.p_m_7, self.v_m_7, self.d_f_7, self.p_f_7, self.v_f_7,
                      self.d_m_7+self.d_f_7 ,self.p_m_7+self.p_f_7, self.v_m_7+self.v_f_7,
                      self.d_m_8, self.p_m_8, self.v_m_8, self.d_f_8, self.p_f_8, self.v_f_8,
                      self.d_m_8+self.d_f_8 ,self.p_m_8+self.p_f_8, self.v_m_8+self.v_f_8,
                      self.d_m_9, self.p_m_9, self.v_m_9, self.d_f_9, self.p_f_9, self.v_f_9,
                      self.d_m_9+self.d_f_9 ,self.p_m_9+self.p_f_9, self.v_m_9+self.v_f_9,
                      self.p_n_9, self.v_n_9)
        self.view_count_bfr.set_text(new_text)
Example #5
0
 def __init__(self, parent):
     self.parent = parent
     self.db = MyDB()
     self.build()        
Example #6
0
class Preference(Gtk.Dialog):
    
    def __init__(self, parent):
        self.parent = parent
        self.db = MyDB()
        self.build()        
        
    def specified(self, *a):
        if self.dfo.get_active():
            self.frame.set_sensitive(False)
            daw_config.setv('tr', '0')
        else:
            self.frame.set_sensitive(True)
            daw_config.setv('tr', '1')
        
    def ch_font(self, btn):
        nconf = btn.get_name()
        dialog = Gtk.FontChooserDialog("اختر خطا")
        dialog.set_font(daw_config.getv(nconf))
        response = dialog.run()
        if response == Gtk.ResponseType.OK:
            font = dialog.get_font()
            daw_config.setv(nconf, font)
        dialog.destroy()
        self.parent.theme.refrech()
        
#FIXME change 'get_current_color' to 'get_current_rgba'-------------
    def ch_color(self, btn):
        nconf = btn.get_name()
        dialog = Gtk.ColorSelectionDialog("اختر لونا")
        colorsel = dialog.get_color_selection()
        colorsel.set_current_rgba(daw_customs.rgba(daw_config.getv(nconf)))
        response = dialog.run()
        if response == Gtk.ResponseType.OK:
            color = colorsel.get_current_color().to_string()
            daw_config.setv(nconf, color)
        dialog.destroy()
        self.parent.theme.refrech()
    
    def change_vls(self, btn, nm):
        v = btn.get_active()
        daw_config.setv(nm, v)
    
    def sel_ORNAMENT(self, icv, path):
        model = icv.get_model()
        name = model[path][1]
        daw_config.setv('ornament-file', name)
        self.parent.theme.refrech()
    
    def has_mytheme(self, *a):
        if self.sel_theme.get_active():
            daw_config.setv('theme', '1')
            self.parent.theme.refrech()
        else:
            daw_config.setv('theme', '0')
            self.parent.theme.refrech()
    
    def has_ornament(self, *a):
        if self.sel_ornament.get_active():
            daw_config.setv('ornament', '1')
            self.parent.theme.refrech()
        else:
            daw_config.setv('ornament', '0')
            self.parent.theme.refrech()
    
    def change_path_db(self, *a):
        open_dlg = Gtk.FileChooserDialog(u'تغيير مسار قاعدة البيانات',
                                         self.parent, Gtk.FileChooserAction.OPEN,
                                        (Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                         Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
        
        Filter = Gtk.FileFilter()
        Filter.set_name(u"قاعدة البيانات")
        Filter.add_pattern("Dawawin.db")
        open_dlg.add_filter(Filter)
        
        res = open_dlg.run()
        if res == Gtk.ResponseType.OK:
            self.e_dest.set_text(open_dlg.get_filenames()[0].decode('utf8')) 
            daw_config.setv('path', open_dlg.get_filenames()[0])          
        open_dlg.destroy()
    
    def new_db(self,*a): 
        save_dlg = Gtk.FileChooserDialog(u'مسار قاعدة البيانات الجديدة', 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().decode('utf8'), u'دواوين العرب')
            if os.path.exists(join(new_dir,'Dawawin.db')):
                daw_customs.erro(self.parent, u'يوجد قاعدة بيانات في هذا الدليل بالفعل')
            else:
                if not os.path.exists(new_dir):
                    os.mkdir(new_dir)
                if not os.path.exists(join(new_dir,u'Audio')):
                    os.mkdir(join(new_dir,u'Audio'))
                if not os.path.exists(join(new_dir,u'Ornament')):
                    os.mkdir(join(new_dir,u'Ornament'))
                list_f = os.listdir(daw_customs.ORNAMENT)
                for v in list_f:
                    copyfile(join(daw_customs.ORNAMENT,v), join(new_dir,u'Ornament',v))
                self.parent.db.create_db(join(new_dir,'Dawawin.db'))
                copyfile(daw_customs.MY_AWZAN, join(new_dir,'Awzan.db'))
                copyfile(daw_customs.MY_HELP, join(new_dir,'Help.db'))
                copyfile(daw_customs.MY_DICT, join(new_dir,'Dict.db'))
                daw_customs.info(self.parent, u'تم إضافة قاعدة بيانات جديدة')
        save_dlg.destroy()
    
    def count_cb(self, *a):
        n_dawawin = self.db.n_dawawin()
        n_poems = self.db.n_poems()
        n_verses = self.db.n_verses()
        daw_config.setv('n_dawawin', n_dawawin)
        daw_config.setv('n_poems', n_poems)
        daw_config.setv('n_verses', n_verses)
        self.n_dawawin.set_text('عدد الدواوين : '+n_dawawin)
        self.n_poems.set_text('عدد القصائد : '+n_poems)
        self.n_verses.set_text('عدد الأبيات : '+n_verses)
    
    def del_all_cb(self, *a):
        Clear(self.parent).show_all()
        self.hide()
    
    def show_count(self, *a):
        self.parent.show_page(None, 'الإحصاء', 15)
        self.parent.countpage.make_text()
        self.hide()
              
    def build(self,*a):
        Gtk.Dialog.__init__(self, parent=self.parent)
        self.set_icon_name("Dawawin")
        self.set_title("التفضيلات")
        self.resize(500, 300)
        area = self.get_content_area()
        area.set_spacing(6)
        self.connect('delete-event', lambda w,*a: w.hide() or True)
        self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        lab_info = Gtk.Label('بعض الخيارات قد تحتاج إلى إعادة تشغيل البرنامج')
        lab_info.override_background_color(Gtk.StateFlags.NORMAL, daw_customs.rgba('#FFF14E'))
        lab_info.override_color(Gtk.StateFlags.NORMAL, daw_customs.rgba('#E90003'))
        lab_info.override_font(Pango.FontDescription("8"))
        
        self.notebook = Gtk.Notebook()
        self.box0 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.box00 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.box1 = Gtk.Box(spacing=4, orientation=Gtk.Orientation.VERTICAL)
        self.box2 = Gtk.Box(spacing=4,orientation=Gtk.Orientation.VERTICAL)
        hbox = Gtk.Box(spacing=40,orientation=Gtk.Orientation.HORIZONTAL)
        hbox.pack_start(self.box1, False, False, 0)
        hbox.pack_start(self.box2, False, False, 0)
        self.frame = Gtk.Frame()
        self.frame.add(hbox)
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        self.dfo = Gtk.RadioButton.new_with_label_from_widget(None, 'افتراضي')
        self.cos = Gtk.RadioButton.new_with_label_from_widget(self.dfo,'مخصص')
        self.dfo.connect('toggled',self.specified,'0')
        self.cos.connect('toggled',self.specified,'1')
        hbox.pack_start(self.dfo, False, False, 0)
        hbox.pack_start(self.cos, False, False, 0)
        self.sel_theme = Gtk.CheckButton('تلوين النافذة')
        hbox.pack_end(self.sel_theme, False, False, 0)
        if daw_config.getv('theme') == '1': self.sel_theme.set_active(True)
        else: self.sel_theme.set_active(False)
        self.sel_theme.connect("toggled", self.has_mytheme)
        hbox.set_border_width(5)
        self.box0.pack_start(hbox, False, False, 0)
        self.box0.pack_start(self.frame, True, True, 0)
       
        list_w1 = [[u'القوائم الجانبية','td'], [u'قائمة القصائد','tp'], [u'متن القصيدة','mp'], 
                   [u'الشرح والترجمة','ch'], [u'العناوين','an']]
        list_w2 = [[u'لون خلفية العرض','b'], [u'لون خط التحديد','fs'], [u'لون خلفية التحديد','bs'], 
                   [u'لون تحديد البحث','ss'], [u'لون خلفية خاص','bp']]
        for a in list_w1:
            hbox = Gtk.Box(spacing=10,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(btn2, False, False, 0)
            hbox.pack_start(btn1, False, False, 0)
            hbox.pack_start(Gtk.Label(a[0]), False, False, 0)
            self.box1.pack_start(hbox, False, False, 0)
            
        for a in list_w2:
            hbox = Gtk.Box(spacing=10,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(btn, False, False, 0)
            hbox.pack_start(Gtk.Label(a[0]), False, False, 0)
            self.box2.pack_start(hbox, False, False, 0)
        self.notebook.append_page(self.box0, Gtk.Label('خط ولون'))
        
        vb = Gtk.VBox(False, 6)
        vb.set_border_width(6)
        ls = [[0, u'ضيق'],
            [1, u'وسط'],
            [2, u'واسع']]
        hb, self.bayn_abiat = daw_customs.combo(ls, u'المسافة بين الأبيات', 3)
        self.bayn_abiat.set_active(daw_config.getn('b_abiat'))
        self.bayn_abiat.connect('changed', self.change_vls, u'b_abiat')
        vb.pack_start(hb, False, False, 0)
        
        ls = [[0, u'ضيق'],
            [1, u'وسط'],
            [2, u'واسع']]
        hb, self.bayn_shater = daw_customs.combo(ls, u'المسافة بين شطري البيت', 3)
        self.bayn_shater.set_active(daw_config.getn('b_half'))
        self.bayn_shater.connect('changed', self.change_vls, u'b_half')
        vb.pack_start(hb, False, False, 0)
        
        ls = [[0, u'دوما'],
            [1, u'للحاجة']]
        hb, self.tarakeb = daw_customs.combo(ls, u'تراكب شطري البيت', 3)
        self.tarakeb.set_active(daw_config.getn('tarakeb'))
        self.tarakeb.connect('changed', self.change_vls, u'tarakeb')
        vb.pack_start(hb, False, False, 0)
        
        ls = [[0, u'بالتطويلات'],
            [1, u'بالمسافات']]
        hb, self.tandhid = daw_customs.combo(ls, u'تعديل طول الشطر', 3)
        self.tandhid.set_active(daw_config.getn('tandhid'))
        self.tandhid.connect('changed', self.change_vls, u'tandhid')
        vb.pack_start(hb, False, False, 0)
        
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        lab = Gtk.Label('أدنى طول للشطر بالبكسلات')
        lab.set_alignment(0,0.5)
        hbox.pack_start(lab, False, False, 0)
        adj = Gtk.Adjustment(150, 100, 700, 1, 5, 0)
        self.min_long = Gtk.SpinButton()
        self.min_long.set_adjustment(adj)
        self.min_long.set_wrap(True)
        self.min_long.set_value(daw_config.getf('min_long'))
        def change_min(widget, *a):
            v = self.min_long.get_value()
            daw_config.setv('min_long', v)
        self.min_long.connect('value-changed', change_min)
        hbox.pack_start(self.min_long, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        lab = Gtk.Label('التراكب إذا تجاوز طول الشطر')
        lab.set_alignment(0,0.5)
        hbox.pack_start(lab, False, False, 0)
        adj = Gtk.Adjustment(350, 300, 1000, 1, 5, 0)
        self.max_long = Gtk.SpinButton()
        self.max_long.set_adjustment(adj)
        self.max_long.set_wrap(True)
        self.max_long.set_value(daw_config.getf('max_long'))
        def change_max(widget, *a):
            v = self.max_long.get_value()
            daw_config.setv('max_long', v)
        self.max_long.connect('value-changed', change_max)
        hbox.pack_start(self.max_long, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        self.notebook.append_page(vb, Gtk.Label('تخطيط'))
        
        vb = Gtk.VBox(False, 6)
        vb.set_border_width(6)
        
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        self.del_all = daw_customs.ButtonClass('مسح عام')
        self.del_all.connect('clicked', self.del_all_cb)
        hbox.pack_start(self.del_all, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        self.add_db = daw_customs.ButtonClass('أنشاء قاعدة بيانات جديدة')
        self.add_db.connect('clicked', self.new_db)
        hbox.pack_start(self.add_db, False, False, 0)
        if not exists(dirname(daw_config.getv('path'))): self.add_db.set_sensitive(False)
        vb.pack_start(hbox, False, False, 0)
        
        hbox = Gtk.Box(spacing=6,orientation=Gtk.Orientation.HORIZONTAL)
        self.e_dest = Gtk.Entry()
        self.e_dest.set_text(daw_config.getv('path').decode('utf8'))
        self.b_dest = daw_customs.ButtonClass('تغيير المسار')
        self.b_dest.connect('clicked', self.change_path_db)  
        hbox.pack_start(self.b_dest, False, False, 0)
        hbox.pack_start(self.e_dest, True, True, 0)
        vb.pack_start(hbox, False, False, 0)
        
        hbox = Gtk.Box(spacing=6,orientation=Gtk.Orientation.HORIZONTAL)
        db_void = Gtk.LinkButton.new_with_label("http://sourceforge.net/projects/dawawin/files/",
                                                'صفحة البرنامج على النت')
        hbox.pack_start(db_void, False, False, 0)
        vb.pack_start(hbox, False, False, 0)
        self.notebook.append_page(vb, Gtk.Label('خيارات'))
        
        vb = Gtk.VBox(False, 6)
        vb.set_border_width(6)
        self.n_dawawin = Gtk.Label('عدد الدواوين : '+daw_config.getv('n_dawawin'))
        self.n_dawawin.set_alignment(0,0.5)
        vb.pack_start(self.n_dawawin, False, False, 0)
        self.n_poems = Gtk.Label('عدد القصائد : '+daw_config.getv('n_poems'))
        self.n_poems.set_alignment(0,0.5)
        vb.pack_start(self.n_poems, False, False, 0)
        self.n_verses = Gtk.Label('عدد الأبيات : '+daw_config.getv('n_verses'))
        self.n_verses.set_alignment(0,0.5)
        vb.pack_start(self.n_verses, False, False, 0)
        hbox = Gtk.Box(spacing=6,orientation=Gtk.Orientation.HORIZONTAL)
        self.rapid_count = daw_customs.ButtonClass('إحصاء سريع')
        self.rapid_count.connect('clicked', self.count_cb)
        self.detail_count = daw_customs.ButtonClass('إحصاء مفصل')
        self.detail_count.connect('clicked', self.show_count)
        self.web_count = daw_customs.ButtonClass('صفحة ويب')
        self.web_count.connect('clicked', lambda *a: self.parent.countpage.make_html())
        hbox.pack_start(self.rapid_count, False, False, 0)
        hbox.pack_start(self.detail_count, False, False, 0)
        hbox.pack_start(self.web_count, False, False, 0)
        vb.pack_end(hbox, False, False, 0)
        self.notebook.append_page(vb, Gtk.Label('إحصاء'))
        
        vbox = Gtk.Box(spacing=4, orientation=Gtk.Orientation.VERTICAL)
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        self.sel_ornament = Gtk.CheckButton('اعتمد زخرفة الخلفية')
        hbox.pack_start(self.sel_ornament, False, False, 0)
        if daw_config.getv('ornament') == '1': self.sel_ornament.set_active(True)
        else: self.sel_ornament.set_active(False)
        self.sel_ornament.connect("toggled", self.has_ornament)
        vbox.pack_start(hbox, False, False, 0)
        
        liststore = Gtk.ListStore(Pixbuf, str)
        iconview = Gtk.IconView.new()
        iconview.set_model(liststore)
        iconview.set_pixbuf_column(0)
        iconview.set_reorderable(True)
        list_icons = os.listdir(daw_customs.ORNAMENT)
        iconview.set_columns(6)
        iconview.connect('item-activated', self.sel_ORNAMENT)
        for a in list_icons:
            try:
                pixbuf = Pixbuf.new_from_file_at_size(join(daw_customs.ORNAMENT, a), 64, 64 )
                liststore.append([pixbuf, a])
            except: pass
        scroll = Gtk.ScrolledWindow()
        scroll.set_shadow_type(Gtk.ShadowType.IN)
        scroll.add(iconview)
        scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
        vbox.pack_start(scroll, True, True, 0)
        self.notebook.append_page(vbox, Gtk.Label('الزخرفة'))
        
        self.box.pack_start(self.notebook, True, True, 0)
        self.box.pack_start(lab_info, False, False, 0)
        
        clo = daw_customs.ButtonClass("إغلاق")
        clo.connect('clicked',lambda *a: self.hide())
        ref = daw_customs.ButtonClass("تحديث الواجهة")
        ref.connect('clicked',lambda *a: self.parent.theme.refrech())
        ref.connect('clicked',lambda *a: self.parent.refrech())
        hbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.HORIZONTAL)
        hbox.set_border_width(5)
        hbox.pack_start(ref, False, False, 0)
        hbox.pack_end(clo, False, False, 0)
        self.box.pack_start(hbox, False, False, 0)
        if daw_config.getv('tr') == '1':
            self.cos.set_active(True)
        else:
            self.frame.set_sensitive(False)
            self.dfo.set_active(True)
        area.pack_start(self.box, True, True, 0)