from PyQt5 import QtWidgets, QtCore import db.tasks import gui.tasks.signal import gui.tasks.table.main import gui.icons from model.task import TaskForm 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.main.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 taskForm: on_add(database, taskForm, add_task_signal)) dialog.exec_() def on_add(database, taskForm: TaskForm, add_task_signal): task = db.tasks.insert(database.cursor(), taskForm) database.commit() add_task_signal.emit(task)