Пример #1
0
    def from_json(data: dict):
        name = data['name']
        bg_colour = Colour.from_json(data['bg_colour'])
        text_colour = Colour.from_json(data['text_colour'])
        hover_colour = Colour.from_json(data['hover_colour'])

        return ColourStyle(name, bg_colour, text_colour, hover_colour)
Пример #2
0
 def _add_all_widgets(self) -> None:
     widgets = self.model.view_data.tools
     for widget in widgets:
         seperator = FixedSizeLabel(self.width - 12, 1)
         seperator.set_colours(Colour(240, 240, 240), Colour(240, 240, 240))
         self.layout.addWidget(widget, alignment=Qt.AlignHCenter)
         self.layout.addWidget(seperator, alignment=Qt.AlignHCenter)
    def test_set_data(self):
        style = ColourStyle('name', Colour(1, 2, 3), Colour(4, 5, 6),
                            Colour(7, 8, 9))
        self.parser.set_data(style)
        setting = self.parser.get_data()
        colour = setting.get_bg_colour('name')

        self.assertEqual(colour, Colour(1, 2, 3))
Пример #4
0
    def from_json(self, data: dict) -> GradeStyle:
        grade = Grade.from_json(data['grade'])
        row = int(data['row'])
        aim = int(data['aim'])
        bg_colour = Colour.from_json(data['bg_colour'])
        text_colour = Colour.from_json(data['text_colour'])
        hover_colour = Colour.from_json(data['hover_colour'])

        return GradeStyle(grade, row, aim, bg_colour, text_colour,
                          hover_colour)
    def test_set_single_data(self):
        # When set_data, it is expected to check for duplicates, and get rid of them.
        # Then set the new data, and lastly check if data.keys() is a list from 0 to n.
        # In this scenario:
        #  - style saved to row "6"
        #  - style to row "0" is deleted due to duplication
        #  - => raise ValueError

        style = GradeStyle(Grade('yellow', 'mid'), 6, 3, Colour(0, 1, 2),
                           Colour(3, 4, 5), Colour(6, 7, 8))
        with self.assertRaises(ValueError):
            self.parser.set_data(style)
Пример #6
0
    def _init_UI(self):
        data = self.model.static_data
        self.title = data.title
        self.width = data.width
        self.height = data.height
        self.setWindowTitle(self.title)
        self.setMinimumSize(self.width, self.height)

        self.window = QLabel()
        self.setCentralWidget(self.window)
        self.set_colours(Colour(45, 45, 45), Colour(240, 240, 240))
        self.layout = QGridLayout()
        self.layout.setSpacing(4)
        self.window.setLayout(self.layout)
Пример #7
0
    def test_build_empty_cell(self):
        model = self.builder.empty_cell(1, 2)

        self.assertEqual(model.row, 1)
        self.assertEqual(model.col, 2)
        self.assertEqual(model.bg_colour.to_tuple(),
                         Colour(30, 30, 30).to_tuple())
        self.assertEqual(model.text_colour.to_tuple(),
                         Colour(240, 240, 240).to_tuple())
        self.assertEqual(model.hover_colour.to_tuple(),
                         Colour(60, 60, 60).to_tuple())
        self.assertEqual(model.text, '')
        self.assertEqual(model.RIC, '')
        self.assertEqual(model.id, 0)
Пример #8
0
    def test_build_from_problem(self):
        model = self.builder.build_from_problem(self.problem)

        self.assertEqual(model.row, 6)
        self.assertEqual(model.col, 3)
        self.assertEqual(model.bg_colour.to_tuple(),
                         Colour(131, 113, 187).to_tuple())
        self.assertEqual(model.text_colour.to_tuple(),
                         Colour(0, 0, 0).to_tuple())
        self.assertEqual(model.hover_colour.to_tuple(),
                         Colour(171, 157, 208).to_tuple())
        self.assertEqual(model.text, 'pop')
        self.assertEqual(model.RIC, '1 2 3')
        self.assertEqual(model.id, 2)
Пример #9
0
class ProblemListData(NamedTuple):
    bg_colour   : Colour = Colour(45,45,45)
    text_colour : Colour = Colour(240,240,240)
    header   : ProblemListCellData = ProblemListCellData(0, Colour(45,45,45), Colour(240,240,240), Colour(60,60,60), header=True)
    even_row : ProblemListCellData = ProblemListCellData(0, Colour(30,30,30), Colour(240,240,240), Colour(60,60,60))
    odd_row  : ProblemListCellData = ProblemListCellData(1, Colour(45,45,45), Colour(240,240,240), Colour(60,60,60))
    problems : list = list()
    def test_get_data(self):
        result = self.parser.get_data()
        colour = result.get_bg_colour('alert')

        self.assertEqual(type(result), ColourSetting)
        self.assertEqual(type(colour), Colour)
        self.assertEqual(colour, Colour(255, 0, 0))
Пример #11
0
    def _init__UI(self):
        self.layout = QVBoxLayout()
        self.layout.setSpacing(8)
        self.layout.setContentsMargins(0, 0, 0, 0)

        self.label_title = FixedSizeLabel(self.width - 6, 40, 'File Viewer')
        self.label_title.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
        self.label_title.set_colours(Colour(30, 30, 30), Colour(240, 240, 240))

        self.viewer = QListWidget()
        self.viewer.setFixedWidth(self.width - 6)
        self.viewer.itemClicked.connect(self._item_clicked)

        self.layout.addWidget(self.label_title, alignment=Qt.AlignHCenter)
        self.layout.addWidget(self.viewer, alignment=Qt.AlignHCenter)
        self.setLayout(self.layout)
    def test_swap_row(self):
        style0 = GradeStyle(Grade('yellow', 'mid'), 1, 4,
                            Colour(142, 255, 255), Colour(0, 0, 0),
                            Colour(197, 240, 255))
        style1 = GradeStyle(Grade('yellow', 'hard'), 0, 1,
                            Colour(91, 212, 255), Colour(0, 0, 0),
                            Colour(142, 225, 255))
        styles = (style0, style1)
        self.parser.set_data(styles)
        setting = self.parser.get_data()
        grade0 = setting.get_grade(0)
        grade1 = setting.get_grade(1)

        self.assertEqual(grade0, Grade('yellow', 'hard'))
        self.assertEqual(grade1, Grade('yellow', 'mid'))
Пример #13
0
    def _init__UI(self):
        label_title = FixedSizeLabel(self.width - 6, 40, 'Problem Editor')
        label_title.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
        label_title.set_colours(Colour(30, 30, 30), Colour(240, 240, 240))

        label_id = FixedSizeLabel(80, 28, 'Id:')
        label_id.setAlignment(Qt.AlignRight | Qt.AlignVCenter)

        # buttons
        self.button_update = QPushButton('Update')
        self.button_update.clicked.connect(self._update_problem)

        self.button_delete = QPushButton('&Delete')
        self.button_delete.clicked.connect(self._delete_problem)
        self.button_delete.setShortcut('Ctrl+D')

        self.button_strip = QPushButton('Strip')
        self.button_strip.clicked.connect(self._strip_problem)
        self.button_strip.setShortcut('Ctrl+Shift+D')

        self.layout_button = QGridLayout()
        self.layout_button.addWidget(self.button_update, 0, 1)
        self.layout_button.addWidget(self.button_delete, 0, 0)
        self.layout_button.addWidget(self.button_strip, 0, 0)

        # editing side
        self.text_id = FixedSizeLabel(190, 28)
        self.text_id.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

        self.dropdown_r = QComboBox()
        self.dropdown_r.addItems(['1', '2', '3', '4', '5'])

        self.dropdown_i = QComboBox()
        self.dropdown_i.addItems(['1', '2', '3', '4', '5'])

        self.dropdown_c = QComboBox()
        self.dropdown_c.addItems(['1', '2', '3', '4', '5'])
        self.layout_combo = QHBoxLayout()
        self.layout_combo.setContentsMargins(2, 2, 2, 2)
        self.layout_combo.addWidget(self.dropdown_r)
        self.layout_combo.addWidget(self.dropdown_i)
        self.layout_combo.addWidget(self.dropdown_c)

        self.text_grade = FixedSizeLabel(190, 28)
        self.text_grade.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

        self.text_sector = FixedSizeLabel(190, 28)
        self.text_sector.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)

        self.dropdown_hold = QComboBox()

        self.lineedit_styles_0 = QLineEdit()
        self.lineedit_styles_1 = QLineEdit()
        self.lineedit_styles_2 = QLineEdit()
        self.lineedit_set_by = QLineEdit()
        self.lineedit_set_date = QLineEdit()
        self.lineedit_set_date.setPlaceholderText('YYYY-MM-DD')
        self.lineedit_strip_date = QLineEdit()
        self.lineedit_strip_date.setPlaceholderText('YYYY-MM-DD')
        self.label_strip_date = FixedSizeLabel(80, 28, 'Strip Date:')
        self.label_strip_date.setAlignment(Qt.AlignRight | Qt.AlignVCenter)

        # layout
        self.layout = QFormLayout()
        self.layout.setFormAlignment(Qt.AlignTop)
        self.layout.setLabelAlignment(Qt.AlignRight)
        self.layout.setContentsMargins(2, 2, 2, 2)
        self.layout.setSpacing(4)

        self.layout.addRow(label_title)
        self.layout.addRow(label_id, self.text_id)
        self.layout.addRow('RIC:', self.layout_combo)
        self.layout.addRow('Grade:', self.text_grade)
        self.layout.addRow('Hold Colour:', self.dropdown_hold)
        self.layout.addRow('Sector:', self.text_sector)
        self.layout.addRow('Styles:', self.lineedit_styles_0)
        self.layout.addRow('', self.lineedit_styles_1)
        self.layout.addRow('', self.lineedit_styles_2)
        self.layout.addRow('Set by:', self.lineedit_set_by)
        self.layout.addRow('Set Date:', self.lineedit_set_date)
        self.layout.addRow(self.label_strip_date, self.lineedit_strip_date)
        self.layout.addRow(self.layout_button)
        self.setLayout(self.layout)
Пример #14
0
class ProblemListStaticData(NamedTuple):

    bg_colour   : Colour = Colour(45,45,45)
    text_colour : Colour = Colour(240,240,240)