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 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)
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 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()
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 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()
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
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'حدد شطرا واحدا من البيت الذي تريد الرجوع إليه')
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''' حدد البيت أو الأبيات التي تريد إضافتها إلى أبياتك المفضلة ''')
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
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()
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()
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 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'تم إضافة هذه القصيدة للمفضلة')