Esempio n. 1
0
	def body(self, statistic, stat_count_row):
		self.last_button = 0
		self.buttons = []

		self.frame_btn = Frame(self, borderwidth=2, relief=GROOVE)
		self.frame_btn.grid(row=0, column=0, sticky=N + S + E + W)
		Label(self.frame_btn, text="").grid(row=0, column=0)
		self.button_add(_("btn_ru_en"), self.show_ru_en)
		self.button_add(_("btn_en_ru"), self.show_en_ru)
		self.button_add(_("btn_common_stat"), self.show_common_stat)
		Label(self.frame_btn, text="").grid(row=0, column=4)

		self.frame_btn.grid_rowconfigure(0, weight=1)
		self.frame_btn.grid_columnconfigure(1, weight=1)
		self.frame_btn.grid_columnconfigure(2, weight=1)
		self.frame_btn.grid_columnconfigure(3, weight=1)

		self.init_common_stat(statistic)
		self.init_detailed_stat(statistic, stat_count_row)

		self.grid_rowconfigure(1, weight=1)
		self.grid_columnconfigure(0, weight=1)

		self.button_sel(0)
		self.show_ru_en()
Esempio n. 2
0
	def draw_callback(self, row, col, celltxt, clr):
		if col == 6:
			words = [_("st_learned"), _("st_study"), _("st_learn")]
			ind = int(celltxt)
			return words[ind], clr_stat[ind]
		else:
			return celltxt, clr
Esempio n. 3
0
 def body(self, master):
     self.var = IntVar(0)
     Radiobutton(master, text=_("end_lesson"), variable=self.var,
                 value=0).grid(sticky="w")
     Radiobutton(master, text=_("end_program"), variable=self.var,
                 value=1).grid(sticky="w")
     self.resizable(False, False)
     return None
Esempio n. 4
0
 def set_practice_result(self, is_success, right_answer):
     self.lbl_correct_word["text"] = right_answer.word
     self.lbl_correct_word_tr["text"] = right_answer.transcription
     if is_success:
         self.lbl_result_msg["text"] = _("correct")
         self.lbl_result_msg["fg"] = clr_success
     else:
         self.lbl_result_msg["text"] = _("incorrect")
         self.lbl_result_msg["fg"] = clr_error
Esempio n. 5
0
	def set_practice_result(self, is_success, right_answer):
		self.lbl_correct_word["text"]    = right_answer.word
		self.lbl_correct_word_tr["text"] = "" if self.cfg.get_dict()["hide_transcription"] == "yes" else right_answer.transcription
		if is_success:
			self.lbl_result_msg["text"] = _("correct")
			self.lbl_result_msg["fg"]   = clr_success
		else:
			self.lbl_result_msg["text"] = _("incorrect")
			self.lbl_result_msg["fg"]   = clr_error
Esempio n. 6
0
	def set_practice_result(self, is_success, right_answer):
		self.lbl_correct_word["text"]    = right_answer.word
		self.lbl_correct_word_tr["text"] = right_answer.transcription
		if is_success:
			self.lbl_result_msg["text"] = _("correct")
			self.lbl_result_msg["fg"]   = clr_success
		else:
			self.lbl_result_msg["text"] = _("incorrect")
			self.lbl_result_msg["fg"]   = clr_error
Esempio n. 7
0
class _EditWordDialog(TopDialog):
    def __init__(self, parent, en_str, tr_str, ru_str, callback):
        TopDialog.__init__(self, parent, (en_str, tr_str, ru_str))
        self._callback = callback
        self.title(_("win_editword_title"))
        self.wait_visibility()
        self.set_size(self.winfo_reqwidth(), self.winfo_reqheight())
        self.resizable(True, False)
        self.run()

    def init_window(self, (en_str, tr_str, ru_str)):
        prnt = self
        fnt_edit = Font(family="Arial", size=-16)  # 12pt

        self.var_en = StringVar(value=en_str)
        self.var_tr = StringVar(value=tr_str)
        self.var_ru = StringVar(value=ru_str)

        Label(prnt, text=_("lbl_edit_en")).grid(padx=15, sticky=SW)
        edit_en = Entry(prnt, font=fnt_edit, textvariable=self.var_en)
        edit_en.grid(padx=15, pady=4, sticky=EW)
        edit_en.focus()
        edit_en.select_range(0, END)

        Label(prnt, text=_("lbl_edit_tr")).grid(padx=15, sticky=W)
        Entry(prnt, font=fnt_edit, textvariable=self.var_tr).grid(padx=15,
                                                                  pady=4,
                                                                  sticky=EW)

        Label(prnt, text=_("lbl_edit_ru")).grid(padx=15, sticky=W)
        Entry(prnt, font=fnt_edit, textvariable=self.var_ru).grid(padx=15,
                                                                  pady=4,
                                                                  sticky=EW)

        frm_btn = Frame(prnt)
        Button(frm_btn,
               text="OK",
               width=10,
               command=self.on_ok,
               default=ACTIVE).pack(side=LEFT, padx=5, pady=5)
        Button(frm_btn, text="Cancel", width=10,
               command=self.on_destroy).pack(side=LEFT, padx=5, pady=5)
        frm_btn.grid(padx=10, pady=5, sticky=EW)

        self.bind("<Return>", self.on_ok)
        self.bind("<Escape>", self.on_destroy)

        prnt.grid_rowconfigure(0, minsize=30)
        prnt.grid_columnconfigure(0, weight=1)
        prnt.minsize(300, prnt.minsize()[1])
Esempio n. 8
0
    def draw_common_stat(self):
        row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")],
                    [_("row_total")]]
        table = [
            row_name[i] + it
            for i, it in enumerate(self.statistic.get_common_stat())
        ]
        table = [[
            "",
            _("clm_ru_en_cnt"),
            _("clm_en_ru_cnt"),
            _("clm_ru_en_pers"),
            _("clm_en_ru_pers")
        ]] + table

        len_clmn = [0, 0, 0, 0, 0]
        for row in table:
            for i, text in enumerate(row):
                len_clmn[i] = max(len_clmn[i], self.tbl_fnt.measure(text))
        len_clmn = [i + 20 for i in len_clmn]

        rc_left = 0
        rc_top = 1
        row_height = self.tbl_fnt.metrics("linespace") + 1
        self.canvas.create_table(rc_left, rc_top, row_height, 5, len_clmn)

        for i, row in enumerate(table):
            for j, text in enumerate(row):
                if i > 0 and j > 0:
                    alignment = RIGHT
                else:
                    alignment = LEFT
                self.canvas.fill_cell(j, i, text, clr_black, self.tbl_fnt,
                                      alignment)
Esempio n. 9
0
 def set_stat(self, stat):
     success_cnt = stat[0]
     max_success = stat[1]
     error_cnt = stat[2]
     self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"),
                                                    max_success)
     self.lbl_stat_error["text"] = "%i" % error_cnt
Esempio n. 10
0
 def __init__(self, parent, en_str, tr_str, ru_str, callback):
     TopDialog.__init__(self, parent, (en_str, tr_str, ru_str))
     self._callback = callback
     self.title(_("win_editword_title"))
     self.wait_visibility()
     self.set_size(self.winfo_reqwidth(), self.winfo_reqheight())
     self.resizable(True, False)
     self.run()
Esempio n. 11
0
 def __init__(self, parent, en_str, tr_str, ru_str, callback):
     TopDialog.__init__(self, parent, (en_str, tr_str, ru_str))
     self._callback = callback
     self.title(_("win_editword_title"))
     self.wait_visibility()
     self.set_size(self.winfo_reqwidth(), self.winfo_reqheight())
     self.resizable(True, False)
     self.run()
Esempio n. 12
0
 def __init__(self, parent, factory, statistic, stat_count_row):
     TopDialog.__init__(self, parent, (statistic, stat_count_row))
     self.factory = factory
     self.title(_("win_statistic_title"))
     self.wait_visibility()
     self.set_size(self.table_detailed_stat.get_totalWidth(), 750)
     self.resizable(True, True)
     self.grab_set()
     self.run()
Esempio n. 13
0
 def __init__(self, parent, factory, statistic, stat_count_row):
     TopDialog.__init__(self, parent, (statistic, stat_count_row))
     self.factory = factory
     self.title(_("win_statistic_title"))
     self.wait_visibility()
     self.set_size(self.table_detailed_stat.get_totalWidth(), 750)
     self.resizable(True, True)
     self.grab_set()
     self.run()
Esempio n. 14
0
 def set_wrong_answer(self, right_answer):
     self.edit_translate["state"] = "readonly"
     self.edit_translate["font"] = self.fnt_answer_error
     self.edit_translate['fg'] = clr_error
     self.lbl_correct_word["text"] = right_answer.word
     self.lbl_correct_word_tr["text"] = "" if self.cfg["hide_transcription"] == "yes" else right_answer.transcription
     self.lbl_result_msg["text"] = _("incorrect")
     self.lbl_result_msg["fg"] = clr_error
     self.show_find_in_web_btn(True)
     self.show_edit_word_btn(True)
Esempio n. 15
0
	def draw_stat(self, stat_table):
		rc_left   = 0
		rc_top    = 1
		row_height = self.tbl_fnt.metrics("linespace")+1
		self.canvas.create_table(rc_left, rc_top, row_height, len(stat_table)+1, self.len_clmn)

		state_str  = (_("st_learned"), _("st_study"), _("st_learn"))
		for i, row in enumerate([self.get_header_text()]+stat_table):
			for j, text in enumerate(row):
				if i > 0 and j in (0, 4, 5, 6):
					alignment = RIGHT
				else:
					alignment = LEFT

				if i > 0 and j == 7:
					txt, clr = state_str[text], clr_stat[text]
				else:
					txt, clr = text, clr_black
				self.canvas.fill_cell(j, i, txt, clr, self.tbl_fnt, alignment)
Esempio n. 16
0
	def draw_stat(self, stat_table):
		rc_left   = 0
		rc_top    = 1
		row_height = self.tbl_fnt.metrics("linespace")+1
		self.canvas.create_table(rc_left, rc_top, row_height, len(stat_table)+1, self.len_clmn)

		state_str  = (_("st_learned"), _("st_study"), _("st_learn"))
		for i, row in enumerate([self.get_header_text()]+stat_table):
			for j, text in enumerate(row):
				if i > 0 and j in (0, 4, 5, 6):
					alignment = RIGHT
				else:
					alignment = LEFT

				if i > 0 and j == 7:
					txt, clr = state_str[text], clr_stat[text]
				else:
					txt, clr = text, clr_black
				self.canvas.fill_cell(j, i, txt, clr, self.tbl_fnt, alignment)
Esempio n. 17
0
	def set_word(self, new_word, is_new):
		if is_new:
			self.lbl_result_msg["text"]  = ""
		else:
			self.lbl_result_msg["text"]  = _("reiterate")
			self.lbl_result_msg["fg"]    = clr_error
		self.lbl_word["text"]            = new_word.word
		self.lbl_transcription["text"]   = "" if self.cfg.get_dict()["hide_transcription"] == "yes" else new_word.transcription
		self.lbl_correct_word["text"]    = ""
		self.lbl_correct_word_tr["text"] = ""
		self.edit_translate.delete(0, END)
Esempio n. 18
0
 def set_word(self, new_word, is_new):
     if is_new:
         self.lbl_result_msg["text"] = ""
     else:
         self.lbl_result_msg["text"] = _("reiterate")
         self.lbl_result_msg["fg"] = clr_error
     self.lbl_word["text"] = new_word.word
     self.lbl_transcription["text"] = new_word.transcription
     self.lbl_correct_word["text"] = ""
     self.lbl_correct_word_tr["text"] = ""
     self.edit_translate.delete(0, END)
Esempio n. 19
0
 def set_wrong_answer(self, right_answer):
     self.edit_translate["state"] = "readonly"
     self.edit_translate["font"] = self.fnt_answer_error
     self.edit_translate['fg'] = clr_error
     self.lbl_correct_word["text"] = right_answer.word
     self.lbl_correct_word_tr["text"] = "" if self.cfg[
         "hide_transcription"] == "yes" else right_answer.transcription
     self.lbl_result_msg["text"] = _("incorrect")
     self.lbl_result_msg["fg"] = clr_error
     self.show_find_in_web_btn(True)
     self.show_edit_word_btn(True)
Esempio n. 20
0
	def init_common_stat(self, statistic):
		self.frame_common_stat = Frame(self)
		self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W)

		model_common_stat = TableModel(10, False)
		model_common_stat.add_column(_("clm_name"),       typedata='text',    align='left')
		model_common_stat.add_column(_("clm_ru_en_cnt"),  typedata='number',  align='right', max_val=u"99999")
		model_common_stat.add_column(_("clm_en_ru_cnt"),  typedata='number',  align='right', max_val=u"99999")
		model_common_stat.add_column(_("clm_ru_en_pers"), typedata='percent', align='right', max_val=u"100.0 %")
		model_common_stat.add_column(_("clm_en_ru_pers"), typedata='percent', align='right', max_val=u"100.0 %")

		row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]]
		for row in [row_name[i] + it for i, it in enumerate(statistic.get_common_stat())]:
			model_common_stat.add_row(row)

		self.table_common_stat = TableCanvas(self.frame_common_stat, model_common_stat, sort_enable=False)
		self.table_common_stat.createTableFrame()
		self.frame_common_stat.grid_forget()
Esempio n. 21
0
	def body(self):
		fnt = Font(family="Arial", size=10)
		self.tbl_fnt = fnt
				
		num_len       = max(fnt.measure(_("clm_num")), fnt.measure("9999"))
		word_len      = max(fnt.measure(_("clm_word")), fnt.measure(_("clm_transcription")), fnt.measure(_("clm_translate")))
		cnt_len       = max(fnt.measure("9999"), fnt.measure(_("clm_cnt_suc")), fnt.measure(_("clm_cnt_err")))
		prs_len       = max(fnt.measure("100.0%"), fnt.measure(_("clm_pers_suc")))
		state_len     = max(fnt.measure(_("st_learn")), fnt.measure(_("st_learned")), fnt.measure(_("st_study")), fnt.measure(_("clm_state")))
		self.len_clmn = [num_len, word_len, word_len, word_len, cnt_len, cnt_len, prs_len, state_len]

		# Находим слова с большей длинной, чем умолчательная
		for stat in self.statistic.get_ru_en():
			for it in range(1, 4):
				if len(stat[it]) > 10:
					self.len_clmn[it] = max(self.len_clmn[it], fnt.measure(stat[it]))

		self.len_clmn = [i+20 for i in self.len_clmn]

		Label(self, text="", bg=clr_tbl_bg[0]).grid(row=0, column=0, sticky=W+E, padx=2)
		self.btRuEn = Button(self, text=_("btn_ru_en"), command=self.show_ru_en)
		self.btRuEn.grid(row=0, column=1, sticky=W+E, pady=5, padx=1)
		self.btEnRu = Button(self, text=_("btn_en_ru"), command=self.show_en_ru)
		self.btEnRu.grid(row=0, column=2, sticky=W+E, pady=5, padx=1)
		self.btCmnStat = Button(self, text=_("btn_common_stat"), command=self.show_common_stat)
		self.btCmnStat.grid(row=0, column=3, sticky=W+E, pady=5, padx=1)

		self.canvas = ScrollCanvas(self)
		self.canvas.grid(row=1, column=1, columnspan=5)

		self.grid_rowconfigure(1, weight=1)
		self.grid_columnconfigure(1, weight=1)
		self.grid_columnconfigure(2, weight=1)
		self.grid_columnconfigure(3, weight=1)

		self.show_ru_en()

		self.canvas.config(scrollregion=self.canvas.bbox("all"))
Esempio n. 22
0
	def body(self):
		fnt = Font(family="Arial", size=10)
		self.tbl_fnt = fnt
				
		num_len       = max(fnt.measure(_("clm_num")), fnt.measure("9999"))
		word_len      = max(fnt.measure(_("clm_word")), fnt.measure(_("clm_transcription")), fnt.measure(_("clm_translate")))
		cnt_len       = max(fnt.measure("9999"), fnt.measure(_("clm_cnt_suc")), fnt.measure(_("clm_cnt_err")))
		prs_len       = max(fnt.measure("100.0%"), fnt.measure(_("clm_pers_suc")))
		state_len     = max(fnt.measure(_("st_learn")), fnt.measure(_("st_learned")), fnt.measure(_("st_study")), fnt.measure(_("clm_state")))
		self.len_clmn = [num_len, word_len, word_len, word_len, cnt_len, cnt_len, prs_len, state_len]

		# Находим слова с большей длинной, чем умолчательная
		for stat in self.statistic.get_ru_en():
			for it in range(1, 4):
				if len(stat[it]) > 10:
					self.len_clmn[it] = max(self.len_clmn[it], fnt.measure(stat[it]))

		self.len_clmn = [i+20 for i in self.len_clmn]

		Label(self, text="", bg=clr_tbl_bg[0]).grid(row=0, column=0, sticky=W+E, padx=2)
		self.btRuEn = Button(self, text=_("btn_ru_en"), command=self.show_ru_en)
		self.btRuEn.grid(row=0, column=1, sticky=W+E, pady=5, padx=1)
		self.btEnRu = Button(self, text=_("btn_en_ru"), command=self.show_en_ru)
		self.btEnRu.grid(row=0, column=2, sticky=W+E, pady=5, padx=1)
		self.btCmnStat = Button(self, text=_("btn_common_stat"), command=self.show_common_stat)
		self.btCmnStat.grid(row=0, column=3, sticky=W+E, pady=5, padx=1)

		self.canvas = ScrollCanvas(self)
		self.canvas.grid(row=1, column=1, columnspan=5)

		self.grid_rowconfigure(1, weight=1)
		self.grid_columnconfigure(1, weight=1)
		self.grid_columnconfigure(2, weight=1)
		self.grid_columnconfigure(3, weight=1)

		self.show_ru_en()

		self.canvas.config(scrollregion=self.canvas.bbox("all"))
Esempio n. 23
0
    def init_common_stat(self, statistic):
        self.frame_common_stat = Frame(self)
        self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W)

        model_common_stat = TableModel(10, False)
        model_common_stat.add_column(_("clm_name"),
                                     typedata='text',
                                     align='left')
        model_common_stat.add_column(_("clm_ru_en_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_en_ru_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_ru_en_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")
        model_common_stat.add_column(_("clm_en_ru_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")

        row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")],
                    [_("row_total")]]
        for row in [
                row_name[i] + it
                for i, it in enumerate(statistic.get_common_stat())
        ]:
            model_common_stat.add_row(row)

        self.table_common_stat = TableCanvas(self.frame_common_stat,
                                             model_common_stat,
                                             sort_enable=False)
        self.table_common_stat.createTableFrame()
        self.frame_common_stat.grid_forget()
Esempio n. 24
0
	def __init__(self, parent, statistic, stat_count_row):
		Toplevel.__init__(self, parent)

		self.withdraw()
		self.body(statistic, stat_count_row)
		self.deiconify()

		self.transient(parent)
		self.parent = parent
		self.title(_("win_statistic_title"))
		self.resizable(True, True)
		self.set_size()

		self.wait_visibility()  # window needs to be visible for the grab
		self.grab_set()

		self.protocol("WM_DELETE_WINDOW", self.on_destroy)
		self.focus_set()
		self.wait_window(self)
Esempio n. 25
0
	def draw_common_stat(self):
		row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")], [_("row_total")]]
		table = [row_name[i] + it for i, it in enumerate(self.statistic.get_common_stat())]
		table = [["", _("clm_ru_en_cnt"), _("clm_en_ru_cnt"), _("clm_ru_en_pers"), _("clm_en_ru_pers")]] + table

		len_clmn = [0, 0, 0, 0, 0]
		for row in table:
			for i, text in enumerate(row):
				len_clmn[i] = max(len_clmn[i], self.tbl_fnt.measure(text))
		len_clmn = [i+20 for i in len_clmn]

		rc_left    = 0
		rc_top     = 1
		row_height = self.tbl_fnt.metrics("linespace")+1
		self.canvas.create_table(rc_left, rc_top, row_height, 5, len_clmn)

		for i, row in enumerate(table):
			for j, text in enumerate(row):
				if i > 0 and j > 0:
					alignment = RIGHT
				else:
					alignment = LEFT
				self.canvas.fill_cell(j, i, text, clr_black, self.tbl_fnt, alignment)
Esempio n. 26
0
    def __init__(self, parent, statistic):
        Toplevel.__init__(self, parent, bg=clr_tbl_bg[0])

        self.transient(parent)
        self.parent = parent
        self.statistic = statistic

        self.body()

        self.wait_visibility()  # window needs to be visible for the grab
        self.grab_set()

        width = min(1050, self.winfo_screenwidth())
        height = min(750, self.winfo_screenheight())
        x = (self.winfo_screenwidth() - width) / 2
        y = (self.winfo_screenheight() - height) / 2
        self.title(_("win_statistic_title"))
        self.resizable(True, True)
        self.wm_geometry("%dx%d+%d+%d" % (width, height, x, y))
        self.focus_set()
        self.protocol("WM_DELETE_WINDOW", self.on_destroy)
        self.wait_window(self)
Esempio n. 27
0
	def __init__(self, parent, statistic):
		Toplevel.__init__(self, parent, bg=clr_tbl_bg[0])
		
		self.transient(parent)
		self.parent    = parent
		self.statistic = statistic

		self.body()

		self.wait_visibility() # window needs to be visible for the grab
		self.grab_set()

		width  = min(1050, self.winfo_screenwidth())
		height = min(750, self.winfo_screenheight())
		x = (self.winfo_screenwidth() - width) / 2
		y = (self.winfo_screenheight() - height) / 2
		self.title(_("win_statistic_title"))
		self.resizable(True, True)
		self.wm_geometry("%dx%d+%d+%d" % (width, height, x, y))
		self.focus_set()
		self.protocol("WM_DELETE_WINDOW", self.on_destroy)
		self.wait_window(self)
Esempio n. 28
0
	def init_window(self):
		# 12pt = 16px
		fnt_stat          = Font(family="Arial", size=-12)  # 9
		fnt_msg           = Font(family="Arial", size=-13, weight="bold")  # 10
		fnt_word          = Font(family="Arial", size=-19)  # 14
		fnt_transcription = Font(family="Arial", size=-13)  # 10
		fnt_translate     = Font(family="Arial", size=-16)  # 12

		########################################################

		frm_stat = Frame(self, bg=clr_stat_frame, bd=5)
		frm_stat.pack(fill="both")

		Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, text=_("correct_incorrect")).pack(side="left")

		img = PhotoImage(file="info.gif")
		bt = Button(frm_stat, image=img, bg=clr_stat_frame, relief="flat", command=self.show_statistic)
		bt.image = img
		bt.pack(side="right")

		self.lbl_stat_error = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_error, borderwidth=0)
		self.lbl_stat_error.pack(side="right")

		self.lbl_stat_success = Label(frm_stat, font=fnt_stat, bg=clr_stat_frame, fg=clr_success, borderwidth=0)
		self.lbl_stat_success.pack(side="right")

		########################################################

		frm_word = Frame(self, bg=clr_word_frame, bd=5)
		frm_word.pack(fill="both")

		self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame)
		self.lbl_word.pack()

		self.lbl_transcription = Label(frm_word, font=fnt_transcription, bg=clr_word_frame)
		self.lbl_transcription.pack()

		########################################################

		frm_answer = Frame(self, bg=clr_answer_frame, bd=15)
		frm_answer.pack(fill="both")

		frm_message = Frame(frm_answer, bg=clr_answer_frame)
		frm_message.pack(fill="both")

		self.lbl_result_msg = Label(frm_message, font=fnt_msg, bg=clr_answer_frame)
		self.lbl_result_msg.pack(side="left")

		self.lbl_correct_word = Label(frm_message, font=fnt_msg, bg=clr_answer_frame)
		self.lbl_correct_word.pack(side="left")

		self.lbl_correct_word_tr = Label(frm_message, font=fnt_transcription, bg=clr_answer_frame)
		self.lbl_correct_word_tr.pack(side="left")

		self.edit_translate = Entry(frm_answer, font=fnt_translate, width=30)
		self.edit_translate.pack(side="bottom")
		self.edit_translate.focus()

		self.bind("<Return>", self.on_check_translate)
		self.bind("<FocusIn>", lambda event: self.edit_translate.focus())
		########################################################

		x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2
		y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2
		self.title(_("win_learning_english"))
		self.resizable(False, False)
		self.wm_geometry("+%d+%d" % (x, y))
		self.protocol("WM_DELETE_WINDOW", self.on_destroy)
Esempio n. 29
0
	def body(self, master):
		self.var = IntVar(0)
		Radiobutton(master, text=_("end_lesson"),  variable=self.var, value=0).grid(sticky="w")
		Radiobutton(master, text=_("end_program"), variable=self.var, value=1).grid(sticky="w")
		self.resizable(False, False)
		return None
Esempio n. 30
0
def show_error(loc_res_msg):
    tkMessageBox.showerror(_("win_error"), _(loc_res_msg))
Esempio n. 31
0
 def get_header_text(self):
     return (_("clm_num"), _("clm_word"), _("clm_transcription"),
             _("clm_translate"), _("clm_cnt_suc"), _("clm_cnt_err"),
             _("clm_pers_suc"), _("clm_state"))
Esempio n. 32
0
def show_critical_error(loc_res_msg):
    tkMessageBox.showerror(_("win_critical_error"), _(loc_res_msg))
Esempio n. 33
0
 def on_ok(self, event=None):
     if tkMessageBox.askyesno(_("win_confirm_title"),
                              _("msg_confirm_rename")):
         if self._callback(self.var_en.get(), self.var_tr.get(),
                           self.var_ru.get()):
             self.on_destroy()
Esempio n. 34
0
class _StatisticDialog(TopDialog):
    def __init__(self, parent, factory, statistic, stat_count_row):
        TopDialog.__init__(self, parent, (statistic, stat_count_row))
        self.factory = factory
        self.title(_("win_statistic_title"))
        self.wait_visibility()
        self.set_size(self.table_detailed_stat.get_totalWidth(), 750)
        self.resizable(True, True)
        self.grab_set()
        self.run()

    def init_common_stat(self, statistic):
        self.frame_common_stat = Frame(self)
        self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W)

        model_common_stat = TableModel(10, False)
        model_common_stat.add_column(_("clm_name"),
                                     typedata='text',
                                     align='left')
        model_common_stat.add_column(_("clm_ru_en_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_en_ru_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_ru_en_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")
        model_common_stat.add_column(_("clm_en_ru_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")

        row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")],
                    [_("row_total")]]
        for row in [
                row_name[i] + it
                for i, it in enumerate(statistic.get_common_stat())
        ]:
            model_common_stat.add_row(row)

        self.table_common_stat = TableCanvas(self.frame_common_stat,
                                             model_common_stat,
                                             sort_enable=False)
        self.table_common_stat.createTableFrame()
        self.frame_common_stat.grid_forget()

    def init_detailed_stat(self, statistic, stat_count_row):
        self.frame_detailed_stat = Frame(self)
        self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W)

        self.model_ru_en = TableModel(stat_count_row, True)
        self.model_ru_en.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right',
                                    max_val=u"100.0 %")

        for row, word in statistic.get_ru_en():
            self.model_ru_en.add_row(row, word)
        self.model_ru_en.sort(5, True)

        self.table_detailed_stat = TableCanvas(
            self.frame_detailed_stat,
            self.model_ru_en,
            sort_enable=True,
            callback=self.draw_callback,
            dbl_click_callback=self.rename_dlg)
        self.table_detailed_stat.createTableFrame()

        self.model_en_ru = TableModel(stat_count_row, True)
        self.model_en_ru.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right')

        for row, word in statistic.get_en_ru():
            self.model_en_ru.add_row(row, word)
        self.model_en_ru.sort(5, True)

        for col in range(0, self.model_en_ru.get_column_count()):
            self.model_en_ru.get_column(
                col).width = self.model_ru_en.get_column(col).width

    def button_add(self, text, command):
        self.buttons.append(
            Button(self.frame_btn,
                   text=text,
                   command=command,
                   borderwidth=2,
                   default="normal"))
        ind = len(self.buttons)
        self.buttons[-1].grid(row=0,
                              column=ind,
                              sticky=N + S + E + W,
                              pady=5,
                              padx=3)

    def button_sel(self, cur_button):
        self.last_button = cur_button
        for i, it in enumerate(self.buttons):
            if i == cur_button:
                it.configure(relief="sunken")
            else:
                it.configure(relief="raised")
        self.update_idletasks()

    def init_window(self, (statistic, stat_count_row)):
        self.last_button = 0
        self.buttons = []

        self.frame_btn = Frame(self, borderwidth=2, relief=GROOVE)
        self.frame_btn.grid(row=0, column=0, sticky=N + S + E + W)
        Label(self.frame_btn, text="").grid(row=0, column=0)
        self.button_add(_("btn_ru_en"), self.show_ru_en)
        self.button_add(_("btn_en_ru"), self.show_en_ru)
        self.button_add(_("btn_common_stat"), self.show_common_stat)
        Label(self.frame_btn, text="").grid(row=0, column=4)

        self.frame_btn.grid_rowconfigure(0, weight=1)
        self.frame_btn.grid_columnconfigure(1, weight=1)
        self.frame_btn.grid_columnconfigure(2, weight=1)
        self.frame_btn.grid_columnconfigure(3, weight=1)

        self.init_common_stat(statistic)
        self.init_detailed_stat(statistic, stat_count_row)

        self.grid_rowconfigure(1, weight=1)
        self.grid_columnconfigure(0, weight=1)

        self.button_sel(0)
        self.show_ru_en()
Esempio n. 35
0
    def init_window(self):
        fnt_stat = Font(family="Arial", size=9)
        fnt_msg = Font(family="Arial", size=10, weight="bold")
        fnt_word = Font(family="Arial", size=14)
        fnt_transcription = Font(family="Arial", size=10)
        fnt_translate = Font(family="Arial", size=12)

        ########################################################

        frm_stat = Frame(self, bg=clr_stat_frame, bd=5)
        frm_stat.pack(fill="both")

        Label(frm_stat,
              font=fnt_stat,
              bg=clr_stat_frame,
              text=_("correct_incorrect")).pack(side="left")

        img = PhotoImage(file="info.gif")
        bt = Button(frm_stat,
                    image=img,
                    bg=clr_stat_frame,
                    relief="flat",
                    command=self.show_statistic)
        bt.image = img
        bt.pack(side="right")

        self.lbl_stat_error = Label(frm_stat,
                                    font=fnt_stat,
                                    bg=clr_stat_frame,
                                    fg=clr_error,
                                    borderwidth=0)
        self.lbl_stat_error.pack(side="right")

        self.lbl_stat_success = Label(frm_stat,
                                      font=fnt_stat,
                                      bg=clr_stat_frame,
                                      fg=clr_success,
                                      borderwidth=0)
        self.lbl_stat_success.pack(side="right")

        ########################################################

        frm_word = Frame(self, bg=clr_word_frame, bd=5)
        frm_word.pack(fill="both")

        self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame)
        self.lbl_word.pack()

        self.lbl_transcription = Label(frm_word,
                                       font=fnt_transcription,
                                       bg=clr_word_frame)
        self.lbl_transcription.pack()

        ########################################################

        frm_answer = Frame(self, bg=clr_answer_frame, bd=15)
        frm_answer.pack(fill="both")

        frm_message = Frame(frm_answer, bg=clr_answer_frame)
        frm_message.pack(fill="both")

        self.lbl_result_msg = Label(frm_message,
                                    font=fnt_msg,
                                    bg=clr_answer_frame)
        self.lbl_result_msg.pack(side="left")

        self.lbl_correct_word = Label(frm_message,
                                      font=fnt_msg,
                                      bg=clr_answer_frame)
        self.lbl_correct_word.pack(side="left")

        self.lbl_correct_word_tr = Label(frm_message,
                                         font=fnt_transcription,
                                         bg=clr_answer_frame)
        self.lbl_correct_word_tr.pack(side="left")

        self.edit_translate = Entry(frm_answer, font=fnt_translate, width=30)
        self.edit_translate.pack(side="bottom")
        self.edit_translate.focus()

        self.bind("<Return>", self.on_check_translate)
        self.bind("<FocusIn>", lambda event: self.edit_translate.focus())
        ########################################################

        x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2
        y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2
        self.title(_("win_learning_english"))
        self.resizable(False, False)
        self.wm_geometry("+%d+%d" % (x, y))
        self.protocol("WM_DELETE_WINDOW", self.on_destroy)
Esempio n. 36
0
 def set_repeat(self):
     self.lbl_result_msg["text"] = _("reiterate")
     self.lbl_result_msg["fg"] = clr_error
Esempio n. 37
0
	def get_header_text(self):
		return (_("clm_num"), _("clm_word"), _("clm_transcription"), _("clm_translate"), _("clm_cnt_suc"), _("clm_cnt_err"), _("clm_pers_suc"), _("clm_state"))
Esempio n. 38
0
 def set_statistic(self, stat):
     success_cnt, max_success, error_cnt = stat
     self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"),
                                                    max_success)
     self.lbl_stat_error["text"] = "%i" % error_cnt
Esempio n. 39
0
    def init_detailed_stat(self, statistic, stat_count_row):
        self.frame_detailed_stat = Frame(self)
        self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W)

        self.model_ru_en = TableModel(stat_count_row, True)
        self.model_ru_en.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right',
                                    max_val=u"100.0 %")

        for row, word in statistic.get_ru_en():
            self.model_ru_en.add_row(row, word)
        self.model_ru_en.sort(5, True)

        self.table_detailed_stat = TableCanvas(
            self.frame_detailed_stat,
            self.model_ru_en,
            sort_enable=True,
            callback=self.draw_callback,
            dbl_click_callback=self.rename_dlg)
        self.table_detailed_stat.createTableFrame()

        self.model_en_ru = TableModel(stat_count_row, True)
        self.model_en_ru.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right')

        for row, word in statistic.get_en_ru():
            self.model_en_ru.add_row(row, word)
        self.model_en_ru.sort(5, True)

        for col in range(0, self.model_en_ru.get_column_count()):
            self.model_en_ru.get_column(
                col).width = self.model_ru_en.get_column(col).width
Esempio n. 40
0
 def set_new_word(self):
     self.lbl_result_msg["text"] = _("lbl_new_word")
     self.lbl_result_msg["fg"] = clr_error
Esempio n. 41
0
 def set_repeat(self):
     self.lbl_result_msg["text"] = _("reiterate")
     self.lbl_result_msg["fg"] = clr_error
Esempio n. 42
0
	def show_critical_error(self, loc_res_msg):
		tkMessageBox.showerror(_("win_critical_error"), _(loc_res_msg))
Esempio n. 43
0
 def set_new_word(self, answer):
     self.lbl_result_msg["text"] = '%s: %s' % (_("lbl_new_word"), answer)
     self.lbl_result_msg["fg"] = clr_error
Esempio n. 44
0
 def on_ok(self, event=None):
     if tkMessageBox.askyesno(_("win_confirm_title"), _("msg_confirm_rename")):
         if self._callback(self.var_en.get(), self.var_tr.get(), self.var_ru.get()):
             self.on_destroy()
Esempio n. 45
0
    def init_window(self):
        # 12pt = 16px
        fnt_stat = Font(family="Arial", size=-12)  # 9pt
        fnt_msg = Font(family="Arial", size=-13, weight="bold")  # 10pt
        fnt_word = Font(family="Arial", size=-19)  # 14pt
        fnt_transcription = Font(family="Arial", size=-13)  # 10pt
        self.fnt_answer_normal = Font(family="Arial", size=-16)  # 12pt
        self.fnt_answer_error = Font(family="Arial", size=-16,
                                     overstrike=1)  # 12pt

        ########################################################

        frm_stat = Frame(self, bg=clr_stat_frame, bd=5)
        frm_stat.pack(fill="both")

        Label(frm_stat,
              font=fnt_stat,
              bg=clr_stat_frame,
              text=_("correct_incorrect")).pack(side="left")

        frm_btn = Frame(frm_stat, bg=clr_stat_frame)
        frm_btn.pack(side="right")

        img = stat_image()
        bt = Button(frm_btn,
                    image=img,
                    bg=clr_stat_frame,
                    relief="flat",
                    command=self.on_show_statistic_wnd)
        bt.image = img
        bt.pack(side="right")

        img = find_in_web_image()
        self.find_in_web_btn = Button(frm_btn,
                                      image=img,
                                      bg=clr_stat_frame,
                                      relief="flat",
                                      command=self.on_find_in_web)
        self.find_in_web_btn.image = img
        self.find_in_web_btn.pack(side="right")

        img = edit_image()
        self.edit_btn = Button(frm_btn,
                               image=img,
                               bg=clr_stat_frame,
                               relief="flat",
                               command=self.on_rename)
        self.edit_btn.image = img
        self.edit_btn.pack(side="right")

        self.lbl_stat_error = Label(frm_stat,
                                    font=fnt_stat,
                                    bg=clr_stat_frame,
                                    fg=clr_error,
                                    borderwidth=0)
        self.lbl_stat_error.pack(side="right")

        self.lbl_stat_success = Label(frm_stat,
                                      font=fnt_stat,
                                      bg=clr_stat_frame,
                                      fg=clr_success,
                                      borderwidth=0)
        self.lbl_stat_success.pack(side="right")

        ########################################################

        frm_word = Frame(self, bg=clr_word_frame, bd=5)
        frm_word.pack(fill="both")

        self.lbl_word = Label(frm_word, font=fnt_word, bg=clr_word_frame)
        self.lbl_word.pack()

        self.lbl_transcription = Label(frm_word,
                                       font=fnt_transcription,
                                       bg=clr_word_frame)
        self.lbl_transcription.pack()

        ########################################################

        frm_answer = Frame(self, bg=clr_answer_frame, bd=15)
        frm_answer.pack(fill="both")

        frm_message = Frame(frm_answer, bg=clr_answer_frame)
        frm_message.pack(fill="both")

        self.lbl_result_msg = Label(frm_message,
                                    font=fnt_msg,
                                    bg=clr_answer_frame)
        self.lbl_result_msg.pack(side="left")

        self.lbl_correct_word = Label(frm_message,
                                      font=fnt_msg,
                                      bg=clr_answer_frame)
        self.lbl_correct_word.pack(side="left")

        self.lbl_correct_word_tr = Label(frm_message,
                                         font=fnt_transcription,
                                         bg=clr_answer_frame)
        self.lbl_correct_word_tr.pack(side="left")

        self.edit_translate = Entry(frm_answer, width=35)
        self.edit_translate.pack(fill="both")
        self.edit_translate.focus()

        self.bind("<Return>", self.on_return)
        self.bind("<Control-Return>", self.on_rename)
        self.bind("<FocusIn>", lambda event: self.edit_translate.focus())
        ########################################################

        x = (self.winfo_screenwidth() - self.winfo_reqwidth()) / 2
        y = (self.winfo_screenheight() - self.winfo_reqheight()) / 2
        self.title(_("win_learning_english"))
        self.resizable(False, False)
        self.wm_geometry("+%d+%d" % (x, y))
        self.protocol("WM_DELETE_WINDOW", self.on_destroy)
Esempio n. 46
0
	def set_stat(self, stat):
		success_cnt = stat[0]
		max_success = stat[1]
		error_cnt   = stat[2]
		self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"), max_success)
		self.lbl_stat_error["text"]   = "%i" % error_cnt
Esempio n. 47
0
 def set_new_word(self):
     self.lbl_result_msg["text"] = _("lbl_new_word")
     self.lbl_result_msg["fg"] = clr_error
Esempio n. 48
0
	def init_detailed_stat(self, statistic, stat_count_row):
		self.frame_detailed_stat = Frame(self)
		self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W)

		self.model_ru_en = TableModel(stat_count_row, True)
		self.model_ru_en.add_column(_("clm_word"),          typedata='text',    align='left')
		self.model_ru_en.add_column(_("clm_transcription"), typedata='text',    align='left')
		self.model_ru_en.add_column(_("clm_translate"),     typedata='text',    align='left')
		self.model_ru_en.add_column(_("clm_cnt_suc"),       typedata='number',  align='right', max_val=u"999")
		self.model_ru_en.add_column(_("clm_cnt_err"),       typedata='number',  align='right', max_val=u"999")
		self.model_ru_en.add_column(_("clm_pers_suc"),      typedata='percent', align='right', max_val=u"100.0 %")
		self.model_ru_en.add_column(_("clm_state"),         typedata='text',    align='left', max_val=_("st_study") + u"  ")

		for row in statistic.get_ru_en():
			self.model_ru_en.add_row(row)
		self.model_ru_en.sort(6, False)

		self.table_detailed_stat = TableCanvas(self.frame_detailed_stat, self.model_ru_en, sort_enable=True, callback=self.draw_callback)
		self.table_detailed_stat.createTableFrame()

		self.model_en_ru = TableModel(stat_count_row, True)
		self.model_en_ru.add_column(_("clm_word"),          typedata='text',    align='left')
		self.model_en_ru.add_column(_("clm_transcription"), typedata='text',    align='left')
		self.model_en_ru.add_column(_("clm_translate"),     typedata='text',    align='left')
		self.model_en_ru.add_column(_("clm_cnt_suc"),       typedata='number',  align='right')
		self.model_en_ru.add_column(_("clm_cnt_err"),       typedata='number',  align='right')
		self.model_en_ru.add_column(_("clm_pers_suc"),      typedata='percent', align='right')
		self.model_en_ru.add_column(_("clm_state"),         typedata='text',    align='left')

		for row in statistic.get_en_ru():
			self.model_en_ru.add_row(row)
		self.model_en_ru.sort(6, False)

		for col in range(0, self.model_en_ru.get_column_count()):
			self.model_en_ru.get_column(col).width = self.model_ru_en.get_column(col).width
Esempio n. 49
0
 def set_statistic(self, stat):
     success_cnt, max_success, error_cnt = stat
     self.lbl_stat_success["text"] = "%i %s %i/" % (success_cnt, _("of"), max_success)
     self.lbl_stat_error["text"] = "%i" % error_cnt