diff options
author | Joris | 2020-05-31 13:59:35 +0200 |
---|---|---|
committer | Joris | 2020-05-31 13:59:35 +0200 |
commit | 0f1610333324d58acafee8c0fa9d9c9bc293b219 (patch) | |
tree | 302c37dd3751e9fe2e50ab656d56253bfd2d55fc /src/gui/tags/panel/dialog.py | |
parent | 8a6e10d401eea8db0947f8c4b309b8a6256f9748 (diff) | |
download | todo-0f1610333324d58acafee8c0fa9d9c9bc293b219.tar.gz todo-0f1610333324d58acafee8c0fa9d9c9bc293b219.tar.bz2 todo-0f1610333324d58acafee8c0fa9d9c9bc293b219.zip |
Use defined tags for tasks
Diffstat (limited to 'src/gui/tags/panel/dialog.py')
-rw-r--r-- | src/gui/tags/panel/dialog.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/gui/tags/panel/dialog.py b/src/gui/tags/panel/dialog.py new file mode 100644 index 0000000..7a6d3bc --- /dev/null +++ b/src/gui/tags/panel/dialog.py @@ -0,0 +1,65 @@ +from PyQt5 import QtCore, QtWidgets + +from model.tag import Tag, ValidTagForm + +import db.tags +import gui.tags.panel.form.widget +import database + +def add(parent_widget, add_tag_signal): + + def on_add(form: ValidTagForm): + tag = db.tags.insert(database.cursor(), form) + database.commit() + add_tag_signal.emit(tag) + + return widget(parent_widget, 'Add a tag', 'add', None, on_add) + +def update(parent_widget, update_tag_signal, row, tag): + + def on_update(form: ValidTagForm): + updated_tag = db.tags.update(database.cursor(), tag, form) + update_tag_signal.emit(row, updated_tag) + database.commit() + + return widget(parent_widget, 'Modify a tag', 'modify', tag, on_update) + +def show_delete(table, rows): + confirm = QtWidgets.QMessageBox.question( + table, + 'Tag deletion', + 'Do you really want to delete the selected tags ?', + QtWidgets.QMessageBox.No | QtWidgets.QMessageBox.Yes, + QtWidgets.QMessageBox.Yes) + + if confirm == QtWidgets.QMessageBox.Yes: + db.tags.delete(database.cursor(), table.model().row_ids(rows)) + database.commit() + table.model().delete_tags(rows) + +def widget( + parent: QtWidgets.QWidget, + title: str, + action_title: str, + tag: Tag, + on_validated): + + dialog = QtWidgets.QDialog(parent) + dialog.setWindowTitle(title) + dialog.setMinimumSize(QtCore.QSize(320, 240)) + + layout = QtWidgets.QVBoxLayout(dialog) + dialog.setLayout(layout) + + def on_dialog_validated(form): + dialog.accept() + on_validated(form) + + layout.addWidget(gui.tags.panel.form.widget.widget( + parent = dialog, + action_title = action_title, + tag = tag, + on_validated = on_dialog_validated, + on_cancel = lambda: dialog.reject())) + + return dialog |