from PyQt5.QtWidgets import QHBoxLayout, QCheckBox, QSplitter, QComboBox, QLabel from PyQt5.QtCore import Qt from visma.gui.steps import stepsPref from visma.gui.plotter import plotPref ####### # GUI # ####### def preferenceLayout(workspace): """GUI layout for preferences Arguments: workspace {QtWidgets.QWidget} -- main layout Returns: hbox {QtWidgets.QHBoxLayout} -- preferences layout """ hbox = QHBoxLayout() workspace.QSCheckBox = QCheckBox("Quick Simplifier") workspace.QSCheckBox.setChecked(True) workspace.QSCheckBox.toggled.connect(lambda: buttonState(workspace.QSCheckBox, workspace)) workspace.SSSCheckBox = QCheckBox("Step-by-step Solution") workspace.SSSCheckBox.setFixedSize(200, 30) workspace.SSSCheckBox.setChecked(True) workspace.SSSCheckBox.toggled.connect(lambda: buttonState(workspace.SSSCheckBox, workspace)) workspace.GPCheckBox = QCheckBox("Graph Plotter") workspace.GPCheckBox.setChecked(False) workspace.GPCheckBox.toggled.connect(lambda: buttonState(workspace.GPCheckBox, workspace)) splitter1 = QSplitter(Qt.Vertical) splitter1.addWidget(workspace.QSCheckBox) # Quick Simplifier splitter1.addWidget(workspace.SSSCheckBox) # Step-by-step Solution splitter1.addWidget(workspace.GPCheckBox) # Graph Plotter # Input Type Box comboLabel = QLabel() comboLabel.setText("Input Type:") combo = QComboBox(workspace) combo.setFixedSize(200, 30) combo.addItem("Greek") combo.addItem("LaTeX") combo.activated[str].connect(workspace.onActivated) stepspref1, stepspref2 = stepsPref(workspace) inputTypeSplitter = QSplitter(Qt.Vertical) inputTypeSplitter.addWidget(stepspref1) inputTypeSplitter.addWidget(stepspref2) inputTypeSplitter.addWidget(comboLabel) inputTypeSplitter.addWidget(combo) splitter = QSplitter(Qt.Horizontal) splitter.addWidget(splitter1) splitter.addWidget(inputTypeSplitter) splitter.addWidget(plotPref(workspace)) hbox.addWidget(splitter) return hbox def buttonState(button, workspace): """Takes action according to button and its state change trigger Arguments: button {QtWidgets.QCheckBox} -- preference checkbox workspace {QtWidgets.QWidget} -- main layout """ workspace.clearAll() if button.text() == "Quick Simplifier": if button.isChecked() is True: workspace.showQSolver = True else: workspace.showQSolver = False elif button.text() == "Step-by-step Solution": if button.isChecked() is True: workspace.showStepByStep = True else: workspace.showStepByStep = False elif button.text() == "Graph Plotter": if button.isChecked() is True: workspace.showPlotter = True else: workspace.showPlotter = False