from PyQt5 import QtWidgets, QtCore import db.tasks import gui.tasks.signal import gui.tasks.table.widget import gui.icons from model.task import ValidTaskForm def widget(database, parent): widget = QtWidgets.QWidget(parent) layout = QtWidgets.QVBoxLayout(widget) widget.setLayout(layout) add_task_signal = gui.tasks.signal.AddTask() add_task_button = QtWidgets.QPushButton('Add a task', widget) add_task_button.setIcon(gui.icons.new_folder(widget.style())) add_task_button.clicked.connect(lambda: show_add_dialog(database, widget, add_task_signal)) layout.addWidget(add_task_button) table = gui.tasks.table.widget.widget(database, widget, add_task_signal) layout.addWidget(table) return widget def show_add_dialog(database, parent_widget, add_task_signal): dialog = gui.tasks.modal.dialog( parent_widget, 'Add a task', 'add', None, lambda form: on_add(database, form, add_task_signal)) dialog.exec_() def on_add(database, form: ValidTaskForm, add_task_signal): task = db.tasks.insert(database.cursor(), form) database.commit() add_task_signal.emit(task)