Exemplo n.º 1
0
    def runTest(self):
        printable = ascii_letters + digits + ' '

        def comp_lessons(actual, expected):
            return actual.lesson_title == expected.lesson_title and actual.lesson_prompt == expected.lesson_prompt and actual.lesson_hint == expected.lesson_hint and actual.code_base == expected.code_base and actual.lesson_reference == expected.lesson_reference

        test_lessons = [
            initialize_workbook(
                filename='/lesson_files/(Testing)0' + str(_),
                lesson_title=''.join(choice(printable) for _ in range(50)),
                lesson_prompt=''.join(choice(printable) for _ in range(50)),
                lesson_hint=''.join(choice(printable) for _ in range(50)),
                lesson_filepath=''.join(choice(printable) for _ in range(50)),
                registers={
                    j: ''.join(choice(digits) for _ in range(10))
                    for j in range(32)
                },
                references=[]) for _ in range(5)
        ]

        d = {lesson.lesson_title: lesson for lesson in load_lessons()}
        for i in range(len(test_lessons)):
            self.assertTrue(
                comp_lessons(d[test_lessons[i].lesson_title], test_lessons[i]))

        from os import remove
        from gui.Utilities import get_path
        for i in range(len(test_lessons)):
            remove(get_path('/lesson_files/(Testing)0' + str(i)) + '.xlsx')
Exemplo n.º 2
0
def draw_reference_path(file_path):
    filename = get_path(file_path)

    if sys.platform == "win32":
        os.startfile(filename)
    else:
        opener = "open" if sys.platform == "darwin" else "xdg-open"
        subprocess.call([opener, filename])

    pass
Exemplo n.º 3
0
def get_text(lesson=None, is_practice=False):
    if is_practice:
        try:
            f = open(practice_filename)
        except FileNotFoundError:
            return '# Welcome to Practice! Write some code!!'
    else:
        try:
            filename = get_submission_file(lesson)
            f = open(filename, 'r')
        except FileNotFoundError:
            try:
                f = open(get_path(lesson.code_base), 'r')
            except FileNotFoundError:
                return "# No base code"
    output = ''.join(line for line in f.readlines())
    f.close()
    return output
Exemplo n.º 4
0
def initialize_workbook(filename, **kwargs):
    filename = get_path(filename)
    book = Workbook()
    sheet = book.active

    sheet.column_dimensions['A'].width = 50
    sheet.column_dimensions['B'].width = 50
    sheet.column_dimensions['G'].width = 50
    sheet.column_dimensions['H'].width = 50
    sheet.column_dimensions['I'].width = 50

    greenFill = PatternFill(start_color='00FF00',
                            end_color='00FF00',
                            fill_type='solid')
    cyanFill = PatternFill(start_color='00FFFF',
                           end_color='00FFFF',
                           fill_type='solid')
    labelFont = Font(name='Calibri', size=14, bold=True)
    valueFont = Font(name='Calibri', size=14)

    sheet['A1'] = 'Lesson Title'
    sheet['A2'] = 'Lesson Prompt'
    sheet['A3'] = 'Lesson Hint'
    sheet['A4'] = 'Base Code Relative File Path'
    sheet['B1'] = kwargs['lesson_title']
    sheet['B2'] = kwargs['lesson_prompt']
    sheet['B3'] = kwargs['lesson_hint']
    sheet['B4'] = kwargs['lesson_filepath']

    sheet['A1'].fill = greenFill
    sheet['A2'].fill = greenFill
    sheet['A3'].fill = greenFill
    sheet['A4'].fill = greenFill
    sheet['A1'].font = labelFont
    sheet['A2'].font = labelFont
    sheet['A3'].font = labelFont
    sheet['A4'].font = labelFont

    sheet['B1'].fill = cyanFill
    sheet['B2'].fill = cyanFill
    sheet['B3'].fill = cyanFill
    sheet['B4'].fill = cyanFill
    sheet['B1'].font = valueFont
    sheet['B2'].font = valueFont
    sheet['B3'].font = valueFont
    sheet['B4'].font = valueFont

    for i in range(32):
        sheet[get_register_index(i, False)] = '$r' + str(i)
        sheet[get_register_index(i, False)].fill = greenFill
        sheet[get_register_index(i, False)].font = labelFont

        sheet[get_register_index(i)] = kwargs['registers'][i]
        sheet[get_register_index(i)].fill = cyanFill
        sheet[get_register_index(i)].font = valueFont

    sheet['G1'] = 'Reference Name'
    sheet['H1'] = 'Reference Type'
    sheet['I1'] = 'Reference Path'

    sheet['G1'].fill = greenFill
    sheet['H1'].fill = greenFill
    sheet['I1'].fill = greenFill
    sheet['G1'].font = labelFont
    sheet['H1'].font = labelFont
    sheet['I1'].font = labelFont

    index = 2
    for reference in kwargs.get('references', []):
        sheet['G' + str(index)] = reference['Name']
        sheet['H' + str(index)] = reference['Type']
        sheet['I' + str(index)] = reference['Path']
        if reference['Type'] == 'web_link':
            sheet['I' + str(index)].style = 'Hyperlink'

        sheet['G' + str(index)].fill = cyanFill
        sheet['H' + str(index)].fill = cyanFill
        sheet['I' + str(index)].fill = cyanFill
        sheet['G' + str(index)].font = valueFont
        sheet['H' + str(index)].font = valueFont
        sheet['I' + str(index)].font = valueFont
        index += 1

    book.save(filename + '.xlsx')
    return load_lesson_from_workbook(filename + '.xlsx')
Exemplo n.º 5
0
def load_lessons():
    lesson_path = get_path('/lesson_files/')
    return [
        load_lesson_from_workbook(lesson_path + file)
        for file in os.listdir(lesson_path) if file.endswith('.xlsx')
    ]
Exemplo n.º 6
0
def get_submission_file(lesson):
    return get_path('/lesson_files/Submissions/' + lesson.lesson_title +
                    '(Submission).s')
Exemplo n.º 7
0
import tkinter as tk
from lessons.Submission import run_MIPS
from lessons.Lesson_Transition import write_completed
from gui.Utilities import get_path
"""
Draws a lesson to the frame
root: tkinter root to draw to 
ttk: tkinter ttk used for styling
lesson: the lesson to be drawn to the screen
"""

practice_filename = get_path('/lesson_files/Submissions/(Practice).s')


def get_submission_file(lesson):
    return get_path('/lesson_files/Submissions/' + lesson.lesson_title +
                    '(Submission).s')


def submit_code(user_input, register_labels, lesson=None, is_practice=False):
    if is_practice:
        filename = practice_filename
    else:
        filename = get_submission_file(lesson)

    f = open(filename, 'w')
    f.write(user_input.get("1.0", tk.END))
    f.close()

    results = run_MIPS(filename)
    update_registers(results, register_labels)