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)
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)