diff options
Diffstat (limited to 'src/gui/tags/panel/table/menu.py')
-rw-r--r-- | src/gui/tags/panel/table/menu.py | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/gui/tags/panel/table/menu.py b/src/gui/tags/panel/table/menu.py index 2238444..6bf812e 100644 --- a/src/gui/tags/panel/table/menu.py +++ b/src/gui/tags/panel/table/menu.py @@ -1,25 +1,36 @@ from PyQt5 import QtWidgets, QtCore +from model.tag import Tag, ValidTagForm +import database import db.tags +import db.task_tags import gui.tags.panel.dialog -from model.tag import Tag, ValidTagForm def open(table, update_tag_signal, position): rows = set([index.row() for index in table.selectedIndexes()]) menu = QtWidgets.QMenu(table) + actions = 0 + if len(rows) == 1: modify_action = menu.addAction(gui.icon.dialog_open(menu.style()), 'modify') + actions += 1 else: modify_action = QtWidgets.QAction(menu) - delete_action = menu.addAction(gui.icon.trash(menu.style()), 'delete') + tags = table.model().row_ids(rows) + if not db.task_tags.one_is_used(database.cursor(), tags): + delete_action = menu.addAction(gui.icon.trash(menu.style()), 'delete') + actions += 1 + else: + delete_action = QtWidgets.QAction(menu) - action = menu.exec_(table.mapToGlobal(position + QtCore.QPoint(15, 20))) - if action == modify_action and len(rows) == 1: - row = list(rows)[0] - tag = table.model().get_at(row) - gui.tags.panel.dialog.update(table, update_tag_signal, row, tag).exec_() - elif action == delete_action: - gui.tags.panel.dialog.show_delete(table, rows) + if actions > 0: + action = menu.exec_(table.mapToGlobal(position + QtCore.QPoint(15, 20))) + if action == modify_action and len(rows) == 1: + row = list(rows)[0] + tag = table.model().get_at(row) + gui.tags.panel.dialog.update(table, update_tag_signal, row, tag).exec_() + elif action == delete_action: + gui.tags.panel.dialog.show_delete(table, rows) |