Пример #1
0
 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
Пример #2
0
 def ok_verse_cb(self, *a):
     all_verse = self.verse_all_bfr.get_text(
         self.verse_all_bfr.get_start_iter(), self.verse_all_bfr.get_end_iter(), False
     ).decode("utf8")
     verse0 = self.verse_prog_bfr.get_text(
         self.verse_prog_bfr.get_start_iter(), self.verse_prog_bfr.get_end_iter(), False
     ).decode("utf8")
     rawi0 = daw_araby.NAMES[daw_tools.rawi_poem(verse0.strip())]
     verse1 = self.verse_usr_bfr.get_text(
         self.verse_usr_bfr.get_start_iter(), self.verse_usr_bfr.get_end_iter(), False
     ).decode("utf8")
     if verse1 == u"":
         return
     rawi1 = daw_araby.NAMES[daw_tools.rawi_poem(verse1.strip())]
     first1 = daw_araby.NAMES[verse1.strip()[0]]
     if first1 != rawi0:
         daw_customs.erro(self.parent, "البيت يبدأ بحرف غير الذي انتهى به الأول\nحاول مجددا .")
         return
     if self.db.is_verse(verse1):
         if daw_araby.fuzzy_plus(verse1) in daw_araby.fuzzy_plus(all_verse):
             daw_customs.erro(self.parent, "البيت مستخدم مسبقا\nحاول مجددا .")
             return
         else:
             daw_customs.info(self.parent, "أحسنت")
             self.verse_all_bfr.insert(self.verse_all_bfr.get_end_iter(), u"\nالمستخدم : " + verse1.strip())
             d = int(self.lab_answer_user.get_label()) + 1
             self.lab_answer_user.set_label(str(d))
             self.next_verse(rawi1)
     else:
         daw_customs.erro(self.parent, "البيت غير موجود في قاعدة بيانات البرنامج\nحاول مجددا .")
         return
     daw_customs.with_tag(self.verse_all_bfr, self.verse_all_tag, ["البرنامج : "])
     self.verse_all.scroll_to_iter(self.verse_all_bfr.get_end_iter(), 0, 1, 1, 1)
Пример #3
0
 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()
Пример #4
0
 def answer_who_cb(self, *a):
     self.choice_1.set_sensitive(False)
     self.choice_2.set_sensitive(False)
     self.choice_3.set_sensitive(False)
     self.answer_who.set_sensitive(False)
     daw_customs.info(self.parent, u"القائل هو {}".format(self.who_speaker))
     d = int(self.lab_skip_who.get_label()) + 1
     self.lab_skip_who.set_label(str(d))
     self.new_verse_who()
     self.appraisal_who()
Пример #5
0
 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))
Пример #6
0
 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)
Пример #7
0
 def set_recite(self, *a):
     open_dlg = Gtk.FileChooserDialog("أضف ملفا صوتيا للقصيدة", self.parent,
                                     Gtk.FileChooserAction.OPEN,
                                     (Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                     Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
     
     Filter = Gtk.FileFilter()
     Filter.set_name("ملفات OGG")
     Filter.add_pattern("*.[Oo][Gg][Gg]")
     open_dlg.add_filter(Filter)
     
     res = open_dlg.run()
     if res == Gtk.ResponseType.OK:
         old_file = open_dlg.get_filename()
         old_name = basename(old_file)
         new_name = u'00'+str(self.id_poem)+u'.ogg'
         new_file = join(daw_customs.AUDIO_DIR, new_name)
         if new_file == old_file:
             daw_customs.erro(self.parent, u'الملف موجود بالفعل لايمكنك استيراده') 
         else:
             ent_dlg = Gtk.Dialog("أدخل اسم الملقي", open_dlg, Gtk.DialogFlags.MODAL)
             entry = Gtk.Entry()
             entry.show()
             btn = daw_customs.ButtonClass('نعم')
             btn.show()
             ent_dlg.add_action_widget(entry, 0)
             ent_dlg.add_action_widget(btn, 1)
             res_ent = ent_dlg.run()
             if res_ent == 1:
                 reciter = entry.get_text().decode('utf8')
                 ent_dlg.destroy()
                 if exists(new_file):
                     replace = u'واستبداله بالملف القديم'
                 else:
                     replace = u''
                 msg = daw_customs.sure(self.parent, u'''
                 سوف يقوم البرنامج بنسخ الملف {} 
                 إلى المجلد {}
                 بعد تسميته بـ {}
                 {} 
                 ''' .format(
                 old_name, 
                 daw_customs.AUDIO_DIR, 
                 new_name, 
                 replace))
                 if msg == Gtk.ResponseType.YES:
                     copyfile(old_file, new_file)
                     check = self.parent.db.set_recite(self.id_poem, reciter)
                     self.parent.recite.store()
                     if check == None: daw_customs.info(self.parent, 'تم إضافة ملف صوتي لهذه القصيدة') 
                     open_dlg.destroy()
             else:
                 ent_dlg.destroy()
     open_dlg.destroy()
Пример #8
0
 def adding_one(self, *a):
     text = daw_tools.right_space(self.nasse_bfr.get_text(self.nasse_bfr.get_start_iter(),
                                                     self.nasse_bfr.get_end_iter(), False)).decode('utf8')
     if text == '': daw_customs.erro(self.parent, 'ضع القصيدة أولا'); return
     nam = self.name_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 : daw_customs.erro(self.parent, 'حدد بحر القصيدة'); return
         rawi = daw_customs.value_active(self.rawi)
         if rawi == None : daw_customs.erro(self.parent, 'حدد روي القصيدة'); return
         kafia = daw_customs.value_active(self.kafia)
         if kafia == None : daw_customs.erro(self.parent, 'حدد قافية القصيدة'); return
         arodh = daw_customs.value_active(self.arodh)
         if arodh == None : daw_customs.erro(self.parent, 'حدد عروض القصيدة'); return
     elif naw3 == 2:
         baher = daw_customs.value_active(self.baher)
         if baher == None : 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 : daw_customs.erro(self.parent, 'حدد غرض القصيدة'); return
     poet, sex, balad, age = self.add_poet()
     if poet == 'none': return
     charh = self.charh_bfr.get_text(self.charh_bfr.get_start_iter(),
                                     self.charh_bfr.get_end_iter(), False).decode('utf8')
     sabab = self.sabab_bfr.get_text(self.sabab_bfr.get_start_iter(),
                                     self.sabab_bfr.get_end_iter(), False).decode('utf8')
     label = Gtk.Label()
     label.override_font(Pango.FontDescription('KacstOne 15'))
     if naw3 != 5:
         if daw_tools.is_machtor(text):
             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
         n_abiat = len(text.splitlines(1))
     check = self.parent.db.add_poem(nam, text, sabab, charh, poet, sex, balad, age, 
                              n_abiat, baher, rawi, kafia, arodh, gharadh, naw3, longer_half)
     self.parent.dawawinpage.refresh_poets()
     self.parent.dawawinpage.search_cb()
     self.parent.organizepage.refresh_poets()
     self.parent.organizepage.search_cb()
     if check == None: daw_customs.info(self.parent, 'تم إضافة القصيدة بنجاح'); return
Пример #9
0
 def save_ta3lim(self, *a):
     if self.view_poem_bfr.get_has_selection():
         sel = self.view_poem_bfr.get_selection_bounds()
         sel_text = self.view_poem_bfr.get_text(sel[0], sel[1],True)
         text = daw_tools.one_half(sel_text.decode('utf8'))
         list_marks = eval(daw_config.getv('marks'))
         list_marks.append([self.id_poem, text])
         marks = repr(list_marks)
         daw_config.setv('marks', marks)
         daw_customs.info(self.parent, u'تم تعليم الموضع')
     else:
         daw_customs.erro(self.parent, u'حدد شطرا واحدا من البيت الذي تريد الرجوع إليه')
Пример #10
0
 def save_abiaty(self, *a):
     if self.view_poem_bfr.get_has_selection():
         sel = self.view_poem_bfr.get_selection_bounds()
         v1 = sel[0].get_line() 
         v2 = sel[1].get_line()
         abiaty = daw_tools.get_abiat(self.text_poem, v1, v2, self.t)
         if abiaty == None: return daw_customs.erro(self.parent, u'لا يمكن إضافة هذه الأبيات إلى المفضلة')
         id_verse = self.parent.db.to_abiaty(self.id_poem, abiaty)
         if id_verse > 0:
             daw_customs.info(self.parent, u'تم إضافة هذا البيت للأبيات المفضلة')
             n = self.parent.main_notebook.get_n_pages()
             for s in range(n):
                 ch = self.parent.main_notebook.get_nth_page(s)
                 if self.parent.main_notebook.get_tab_label_text(ch) == 'أبياتي':
                     ch.pages()
                     return
     else:
         daw_customs.erro(self.parent, u'''
         حدد البيت أو الأبيات التي تريد 
         إضافتها إلى أبياتك المفضلة
         ''')
Пример #11
0
 def adding_muth(self, *a):
     text = daw_tools.right_space(self.nasse_bfr.get_text(self.nasse_bfr.get_start_iter(),
                                                     self.nasse_bfr.get_end_iter(), False)).decode('utf8')
     if text == '': daw_customs.erro(self.parent, 'ضع القصائد أولا'); return
     gharadh = 0
     baher = 0
     rawi = 0
     kafia = 0
     arodh = 0
     sabab = ""
     charh = ""
     poet, sex, balad, age = self.add_poet()
     if poet == 'none': return
     self.set_sensitive(False)
     list_poems = text.split('#')
     for poem_text in list_poems:
         while (Gtk.events_pending()): Gtk.main_iteration()
         name, poem, naw3, gharadh, baher, rawi, kafia = daw_tools.name_poem(poem_text)
         poem = daw_tools.right_space(poem)
         label = Gtk.Label()
         label.override_font(Pango.FontDescription('KacstOne 15'))
         if naw3 != 5:
             if daw_tools.is_machtor(poem):
                 longer_half, n_abiat = daw_tools.longer_half(poem, label, 1)
             else:
                 longer_half, n_abiat = daw_tools.longer_half(poem, label, 0)
         else: 
             longer_half = 0
             n_abiat = len(poem.splitlines(1))
         self.parent.db.add_poem(name, poem, sabab, charh, poet, sex, balad, age, 
                              n_abiat, baher, rawi, kafia, arodh, gharadh, naw3, longer_half)
     self.parent.dawawinpage.refresh_poets()
     self.parent.dawawinpage.search_cb()
     self.parent.organizepage.refresh_poets()
     self.parent.organizepage.search_cb()
     daw_customs.info(self.parent, 'تم إضافة جميع القصائد بنجاح')
     self.set_sensitive(True); return
Пример #12
0
 def check_verse_cb(self, *a):
     half1 = ""
     half2 = ""
     if self.verse == None:
         return
     l_v = self.verse.split("*")
     chs1 = self.box_half1.get_children()
     for ch1 in chs1:
         nm = ch1.get_name()
         half1 += nm + " "
     chs2 = self.box_half2.get_children()
     for ch2 in chs2:
         nm = ch2.get_name()
         half2 += nm + " "
     if half1.strip().decode("utf8") == l_v[0].strip() and half2.strip().decode("utf8") == l_v[1].strip():
         daw_customs.info(self.parent, "أحسنت ..!!!")
         d = int(self.lab_correct.get_label()) + 1
         self.lab_correct.set_label(str(d))
         self.new_verse_organize()
     else:
         daw_customs.info(self.parent, "حاول مرة أخرى ..!!!")
         d = int(self.lab_false.get_label()) + 1
         self.lab_false.set_label(str(d))
     self.appraisal()
Пример #13
0
 def choice_speaker(self, *a):
     self.choice_1.set_sensitive(False)
     self.choice_2.set_sensitive(False)
     self.choice_3.set_sensitive(False)
     self.answer_who.set_sensitive(False)
     if self.choice_1.get_active() and self.entry_speaker_1.get_text().decode("utf8") == self.who_speaker:
         daw_customs.info(self.parent, u"أحسنت القائل هو {}".format(self.who_speaker))
         d = int(self.lab_correct_who.get_label()) + 1
         self.lab_correct_who.set_label(str(d))
     elif self.choice_2.get_active() and self.entry_speaker_2.get_text().decode("utf8") == self.who_speaker:
         daw_customs.info(self.parent, u"أحسنت القائل هو {}".format(self.who_speaker))
         d = int(self.lab_correct_who.get_label()) + 1
         self.lab_correct_who.set_label(str(d))
     elif self.choice_3.get_active() and self.entry_speaker_3.get_text().decode("utf8") == self.who_speaker:
         daw_customs.info(self.parent, u"أحسنت القائل هو {}".format(self.who_speaker))
         d = int(self.lab_correct_who.get_label()) + 1
         self.lab_correct_who.set_label(str(d))
     else:
         if self.choice_1.get_active() or self.choice_2.get_active() or self.choice_3.get_active():
             daw_customs.erro(self.parent, u"أخطأت !! القائل هو {}".format(self.who_speaker))
             d = int(self.lab_false_who.get_label()) + 1
             self.lab_false_who.set_label(str(d))
     self.new_verse_who()
     self.appraisal_who()
Пример #14
0
 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
Пример #15
0
 def save_tafdil(self, *a):
     check = self.parent.db.to_favorite(self.id_poem)
     self.parent.favorite.store()
     if check == None:
         daw_customs.info(self.parent, u'تم إضافة هذه القصيدة للمفضلة')