Example #1
0
    def Push(self):
        if len(self.newAdditions) > 0:
            mycsv.write(mstr=self.newAdditions, lesson=True, new=True)
            self.controller.controller.doValues()
            self.curDecksAndLevels = srs.findDecksAndLevels()
            self.newAdditions = []
            self.newDeckLevels = {}
            self.populateSessionAdditionsListbox()

            old = self.deckSelectListbox.curselection()
            self.populateDeckListbox()
            self.deckSelectListbox.selection_set(old)
            self.deckSelectListbox.selection_anchor(old)
            self.deckSelectListbox.see(tk.ANCHOR)

            old = self.levelSelectListbox.curselection()
            self.populateLevelsListbox()
            self.levelSelectListbox.selection_set(old)
            self.levelSelectListbox.selection_anchor(old)
            self.levelSelectListbox.see(tk.ANCHOR)

            self.populateEntriesListbox()

            def d(self):
                for i in self.imgDl:
                    audio.preload(i, r=True)
                for i in self.audDl:
                    audio.preload(i, r=True)

            threading.Thread(target=d, kwargs={
                'self': self
            }, daemon=True).start()
Example #2
0
    def saveEditsSearch(self):
        newline = []
        self.changes = []
        for n, w in enumerate(self.entries):
            try:
                newline.append(w.get().replace(",", "commaChar"))
            except:
                newline.append(w['text'])
        self.changes.append(','.join(newline))

        mycsv.write(mstr=self.changes, lesson=True)
        self.controller.controller.doValues()
        self.updateResults(args=True, reset=True)
Example #3
0
    def saveEditsDeck(self, origDeckName):
        newDeckName = self.deckNameEntry.get()
        mycsv.write(mstr=(origDeckName, newDeckName), option=11)

        for w in self.winfo_children():
            w.destroy()
        self.controller.controller.doValues()
        self.deckLevels = self.controller.controller.dandl
        self.createWidgets()
        for n, i in enumerate(self.decksLBox.get(0, tk.END)):
            if i == newDeckName:
                self.decksLBox.selection_set(n)
                self.decksLBoxSelect(None)
Example #4
0
 def ignoreAll(self, deck, level, val):
     mycsv.write(mstr=val, row=(deck, level), option=13)
Example #5
0
 def goMainMenu(self):
     # DecksAndLevelsFuncs.goMainMenu(self)
     if len(self.changes) > 1:
         mycsv.write(mstr=self.changes, lesson=True)
         self.controller.controller.doValues()
     self.controller.controller.show_frame("Mainmenu")
Example #6
0
def doLearnLesson(sentences, root, tWidget, eWidget, tagsWidget, cWidget):
    curdate = "{}/{}/{}".format(datetime.now().day,
                                datetime.now().month,
                                datetime.now().year)
    gotAnswer = False
    completed = []

    while len(sentences) > 0:
        random.shuffle(sentences)
        for n, i in enumerate(sentences):
            root.line = i.split(",")
            eWidget.delete(0, len(eWidget.get()))
            if not 'img-' in root.line[1].replace(
                    'commaChar', ',') and not 'audio-' in root.line[1].replace(
                        'commaChar', ','):
                tWidget.configure(text=root.line[1].replace("commaChar", ","),
                                  image=None)
                tWidget.unbind('<Button-1>')
            elif 'img-' in root.line[1].replace('commaChar', ','):
                imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format(
                    consts.cwd(), consts.fname(), root.line[11], root.line[12],
                    consts.images(), root.line[1].replace('img-', ''))
                im = Image.open(imgFile)
                #im = im.resize(size=(50,50))
                img = ImageTk.PhotoImage(im)
                tWidget.img = img
                tWidget.configure(image=img, text='')
                tWidget.unbind('<Button-1>')
            elif 'audio-' in root.line[1].replace('commaChar', ','):
                img = ImageTk.PhotoImage(audLight)
                tWidget.img = img
                tWidget.configure(image=img, text='')

                def audPlay():
                    img = ImageTk.PhotoImage(audDark)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')
                    audio.play(root.line, a=True)
                    img = ImageTk.PhotoImage(audLight)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')

                tWidget.bind(
                    '<Button-1>', lambda x: threading.Thread(
                        target=audPlay, daemon=True).start())

            tagsWidget.configure(
                text=root.line[2].replace("commaChar", ",")
            ) if not root.line[2] == "none" else tagsWidget.configure(text="")

            if root.line[3] == 'no':
                cAnswerEntry = tk.Label(
                    root,
                    text=root.line[0].replace("commaChar",
                                              ",").replace(".", ""),
                    font=(lambda x: cAnswerEntry.cget('font'), 32),
                    width=50,
                    wraplength=1255)
                cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1)
                cWidget.set(0)
                root.update()
                if not 'audio-' in root.line[1].replace('commaChar', ','):
                    audio.preload(root.line)
                    audio.play(root.line)
                else:
                    img = ImageTk.PhotoImage(audDark)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')
                    root.update()
                    audio.play(root.line, a=True)
                    img = ImageTk.PhotoImage(audLight)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')
                root.line[3] = 'step0'
            else:
                cWidget.set(int(root.line[3].split("step")[1]))

            eWidget.focus()
            gotAnswer = False
            root.lineEdited = False
            userinput, time = waitForAnswer(gotAnswer, root, eWidget,
                                            root.line)
            try:
                root.editEntrytl.destroy()
            except:
                pass

            if userinput == root.line[0].lower().replace(".", ""):
                eWidget["bg"] = "lime green"
                eWidget["fg"] = "white"
                root.line[3] = "step{}".format(
                    int(root.line[3].split("step")[1]) + 1)
                cWidget.set(int(root.line[3].split("step")[1]))
                root.update()
                root.line = ','.join(root.line)
                sentences[n] = root.line
            else:
                eWidget["bg"] = "red"
                eWidget["fg"] = "white"
                root.line[3] = "no-step{}".format(
                    int(root.line[3].split("step")[1]))
                root.update()
                root.line = ','.join(root.line)
                sentences[n] = root.line

            cAnswerEntry.destroy()
            afterAnswer(eWidget, root.line.split(","), root)

            if not 'no' in root.line.split(",")[3]:
                if int(root.line.split(",")[3].split('step')[1]) == 6:
                    root.line = root.line.split(",")
                    root.line[3] = 'yes'
                    root.line[6] = curdate
                    root.line[8] = addDays(root.line)
                    root.line = ','.join(root.line)
                    completed.append(root.line)
                    del sentences[n]
            else:
                root.line = root.line.split(",")
                root.line[3] = root.line[3].split("no-")[1]
                root.line = ','.join(root.line)
                sentences[n] = root.line

    root.update()
    for widget in root.winfo_children():
        widget.destroy()
        root.update()
    text = tk.Label(root,
                    font=(lambda x: Label.cget('font'), 32),
                    text="lesson Done!")
    text.grid()
    root.update()

    mycsv.write(consts.workdoc(),
                mstr=completed,
                lesson=True,
                review=False,
                learn=True)
Example #7
0
def doReviewLesson(sentences, root, tWidget, eWidget, tagsWidget, cWidget):
    curdate = "{}/{}/{}".format(datetime.now().day,
                                datetime.now().month,
                                datetime.now().year)
    completed = []
    uncompleted = []
    redo = []
    hissentences = []
    gotAnswer = False

    while len(sentences) > 0:
        for n, i in enumerate(sentences):
            cWidget.configure(text="{}/{}".format(
                len(completed) + 1,
                len(sentences) + len(completed) + len(uncompleted) +
                len(redo)))
            # if len(uncompleted) > 0:
            # 	if random.randint(0,4) == 1:
            # 		i = uncompleted[len(uncompleted) - 1]
            # 		n = len(uncompleted) - 1
            # 		fromUncomplete = True
            root.line = i.split(",")

            eWidget.delete(0, len(eWidget.get()))
            if not 'img-' in root.line[1].replace(
                    'commaChar', ',') and not 'audio-' in root.line[1].replace(
                        'commaChar', ','):
                tWidget.configure(text=root.line[1].replace("commaChar", ","),
                                  image=None)
                tWidget.unbind('<Button-1>')
            elif 'img-' in root.line[1].replace('commaChar', ','):
                imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format(
                    consts.cwd(), consts.fname(), root.line[11], root.line[12],
                    consts.images(), root.line[1].replace('img-', ''))
                im = Image.open(imgFile)
                img = ImageTk.PhotoImage(im)
                tWidget.img = img
                tWidget.configure(image=img, text='')
                tWidget.unbind('<Button-1>')
            elif 'audio-' in root.line[1].replace('commaChar', ','):
                img = ImageTk.PhotoImage(audLight)
                tWidget.img = img
                tWidget.configure(image=img, text='')

                def audPlay():
                    img = ImageTk.PhotoImage(audDark)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')
                    audio.play(root.line, a=True)
                    img = ImageTk.PhotoImage(audLight)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')

                tWidget.bind(
                    '<Button-1>', lambda x: threading.Thread(
                        target=audPlay, daemon=True).start())
            tagsWidget.configure(
                text=root.line[2].replace("commaChar", ",")
            ) if not root.line[2] == "none" else tagsWidget.configure(text="")
            eWidget.focus()
            gotAnswer = False
            root.lineEdited = False

            res = waitForAnswer(gotAnswer, root, eWidget, root.line)
            userinput = res[0]
            wait = res[1]

            try:
                root.editEntrytl.destroy()
            except:
                pass

            if root.lineEdited == False:
                if userinput == root.line[0].lower().replace(".", ""):
                    eWidget["bg"] = "lime green"
                    eWidget["fg"] = "white"
                    root.update()
                    root.line[4] = str(int(root.line[4]) + 1)
                    root.line[5] = str(int(root.line[5]) + 1)
                    root.line[6] = curdate
                    root.line[7] = 'success'
                    root.line[9] = str(int(root.line[9]) + 1)
                    root.line[8] = addDays(root.line)
                    nhisline = root.line[:]
                    nhisline.append('none')
                    nhisline.append("-1")
                    nhisline.append(str(datetime.now().strftime('%H:%M:%S')))
                    nhisline.append(str(wait))
                    hissentences.append(nhisline)
                    root.line = ','.join(root.line)
                    completed.append(root.line)
                    del sentences[n]
                else:
                    eWidget["bg"] = "red"
                    eWidget["fg"] = "white"
                    root.update()
                    root.line[4] = str(int(root.line[4]) + 1)
                    root.line[6] = curdate
                    root.line[7] = 'fail'
                    root.line[8] = addDays(root.line)
                    root.line = ','.join(root.line)
                    redo.append(root.line)
                    del sentences[n]
            else:
                if root.line[13] == "no":
                    del sentences[n]
                    root.line = ','.join(root.line)
                    sentences.append(root.line)
                elif root.line[13] == "yes":
                    del sentences[n]
                    nhisline = root.line[:]
                    nhisline.append('none')
                    nhisline.append("-1")
                    nhisline.append(str(datetime.now().strftime('%H:%M:%S')))
                    nhisline.append('-1')
                    hissentences.append(nhisline)
                    root.line = ','.join(root.line)
                    completed.append(root.line)

            afterAnswer(eWidget, root.line.split(","), root)
            root.lineEdited = False

            while len(redo) > 0:
                for n, i in enumerate(redo):
                    cWidget.configure(text="{}/{}".format(
                        len(completed) + 1,
                        len(sentences) + len(completed) + len(uncompleted) +
                        len(redo)))
                    root.line = i.split(",")
                    if not 'img-' in root.line[1].replace(
                            'commaChar',
                            ',') and not 'audio-' in root.line[1].replace(
                                'commaChar', ','):
                        tWidget.configure(text=root.line[1].replace(
                            "commaChar", ","),
                                          image=None)
                        tWidget.unbind('<Button-1>')
                    elif 'img-' in root.line[1].replace('commaChar', ','):
                        imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format(
                            consts.cwd(),
                            consts.fname(), root.line[11], root.line[12],
                            consts.images(), root.line[1].replace('img-', ''))
                        im = Image.open(imgFile)
                        #im = im.resize(size=(50,50))
                        img = ImageTk.PhotoImage(im)
                        tWidget.img = img
                        tWidget.configure(image=img, text='')
                        tWidget.unbind('<Button-1>')
                    elif 'audio-' in root.line[1].replace('commaChar', ','):
                        img = ImageTk.PhotoImage(audLight)
                        tWidget.img = img
                        tWidget.configure(image=img, text='')

                        def audPlay():
                            img = ImageTk.PhotoImage(audDark)
                            tWidget.img = img
                            tWidget.configure(image=img, text='')
                            audio.play(root.line, a=True)
                            img = ImageTk.PhotoImage(audLight)
                            tWidget.img = img
                            tWidget.configure(image=img, text='')

                        tWidget.bind(
                            '<Button-1>',
                            lambda x: threading.Thread(target=audPlay,
                                                       daemon=True).start())
                    gotAnswer = False

                    root.lineEdited = False
                    cAnswerEntry = tk.Label(
                        root,
                        text=root.line[0].lower().replace(".", ""),
                        font=(lambda x: cAnswerEntry.cget('font'), 32),
                        width=50,
                        wraplength=1255)
                    cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1)

                    res = waitForAnswer(gotAnswer, root, eWidget, root.line)
                    userinput = res[0]
                    wait = res[1] + wait

                    try:
                        root.editEntrytl.destroy()
                    except:
                        pass

                    if root.lineEdited == False:
                        if userinput == root.line[0].lower().replace(".", ""):
                            eWidget["bg"] = "lime green"
                            eWidget["fg"] = "white"
                            root.update()
                            root.line[9] = str(1)
                            root.line[8] = addDays(root.line)
                            root.line.append(str(wait))
                            root.line = ','.join(root.line)
                            uncompleted.append(root.line)
                            del redo[n]
                        else:
                            eWidget["bg"] = "red"
                            eWidget["fg"] = "white"
                            root.line = ','.join(root.line)
                            redo.append(root.line)
                            del redo[n]
                            root.update()
                    else:
                        if root.line[13] == "no":
                            del redo[n]
                            root.line = ','.join(root.line)
                            redo.append(root.line)
                        elif root.line[13] == "yes":
                            del redo[n]
                            nhisline = root.line[:]
                            nhisline.append('none')
                            nhisline.append("-1")
                            nhisline.append(
                                str(datetime.now().strftime('%H:%M:%S')))
                            nhisline.append('-1')
                            hissentences.append(nhisline)
                            root.line = ','.join(root.line)
                            completed.append(root.line)

                    afterAnswer(eWidget, root.line.split(","), root)
                    root.lineEdited = False
                    cAnswerEntry.destroy()

    while len(uncompleted) > 0:
        for n, i in enumerate(uncompleted):
            cWidget.configure(text="{}/{}".format(
                len(completed) + 1,
                len(sentences) + len(completed) + len(uncompleted)))
            root.line = i.split(",")
            if not 'img-' in root.line[1].replace(
                    'commaChar', ',') and not 'audio-' in root.line[1].replace(
                        'commaChar', ','):
                tWidget.configure(text=root.line[1].replace("commaChar", ","),
                                  image=None)
                tWidget.unbind('<Button-1>')
            elif 'img-' in root.line[1].replace('commaChar', ','):
                imgFile = "{}\\{}\\{}\\{}\\{}\\{}".format(
                    consts.cwd(), consts.fname(), root.line[11], root.line[12],
                    consts.images(), root.line[1].replace('img-', ''))
                im = Image.open(imgFile)
                #im = im.resize(size=(50,50))
                img = ImageTk.PhotoImage(im)
                tWidget.img = img
                tWidget.configure(image=img, text='')
                tWidget.unbind('<Button-1>')
            elif 'audio-' in root.line[1].replace('commaChar', ','):
                img = ImageTk.PhotoImage(audLight)
                tWidget.img = img
                tWidget.configure(image=img, text='')

                def audPlay():
                    img = ImageTk.PhotoImage(audDark)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')
                    audio.play(root.line, a=True)
                    img = ImageTk.PhotoImage(audLight)
                    tWidget.img = img
                    tWidget.configure(image=img, text='')

                tWidget.bind(
                    '<Button-1>', lambda x: threading.Thread(
                        target=audPlay, daemon=True).start())
            gotAnswer = False

            root.lineEdited = False
            cAnswerEntry = tk.Label(root,
                                    text=root.line[0].lower().replace(".", ""),
                                    font=(lambda x: cAnswerEntry.cget('font'),
                                          32),
                                    width=50,
                                    wraplength=1255)
            cAnswerEntry.grid(row=4, column=0, columnspan=2, rowspan=1)

            res = waitForAnswer(gotAnswer, root, eWidget, root.line)
            userinput = res[0]
            wait = res[1]

            try:
                root.editEntrytl.destroy()
            except:
                pass

            if root.lineEdited == False:
                if userinput == root.line[0].lower().replace(".", ""):
                    eWidget["bg"] = "lime green"
                    eWidget["fg"] = "white"
                    root.update()
                    root.line[9] = str(1)
                    root.line[8] = addDays(root.line)
                    nhisline = root.line[:-1]
                    nhisline.append('none')
                    nhisline.append("-1")
                    nhisline.append(str(datetime.now().strftime('%H:%M:%S')))
                    nhisline.append(str(float(root.line[15]) + wait))
                    del root.line[15]
                    hissentences.append(nhisline)
                    root.line = ','.join(root.line)
                    completed.append(root.line)
                    del uncompleted[n]
                else:
                    eWidget["bg"] = "red"
                    eWidget["fg"] = "white"
                    root.update()
                    root.line = ','.join(root.line)
                    uncompleted.append(root.line)
                    del uncompleted[n]
            else:
                if root.line[13] == "no":
                    del uncompleted[n]
                    root.line = ','.join(root.line[:-1])
                    uncompleted.append(root.line)
                elif root.line[13] == "yes":
                    del uncompleted[n]
                    nhisline = root.line[:-1]
                    nhisline.append('none')
                    nhisline.append("-1")
                    nhisline.append(str(datetime.now().strftime('%H:%M:%S')))
                    nhisline.append('-1')
                    hissentences.append(nhisline)
                    root.line = ','.join(root.line[:-1])
                    completed.append(root.line)

            afterAnswer(eWidget, root.line.split(","), root)
            root.lineEdited = False

    root.update()
    for widget in root.winfo_children():
        widget.destroy()
        root.update()
    text = tk.Label(root,
                    font=(lambda x: Label.cget('font'), 32),
                    text="Review Done!")
    text.grid()
    root.update()

    mycsv.write(consts.workdoc(), mstr=completed, lesson=True, review=True)
    mycsv.writeHistory(hissentences, tag='review')