aboutsummaryrefslogtreecommitdiff
path: root/src/gui/tasks/table/widget.py
diff options
context:
space:
mode:
authorJoris2020-05-08 14:33:15 +0200
committerJoris2020-05-08 14:33:15 +0200
commitbff2dfd96169f595510b16980a4cb2f3d4548029 (patch)
tree716d09dc4b2b20be565188539883853601fa32ca /src/gui/tasks/table/widget.py
parentdf828c4b141f84f731afffbe17c80618cacf9480 (diff)
downloadtodo-bff2dfd96169f595510b16980a4cb2f3d4548029.tar.gz
todo-bff2dfd96169f595510b16980a4cb2f3d4548029.tar.bz2
todo-bff2dfd96169f595510b16980a4cb2f3d4548029.zip
Extract task form code from the dialog file
Diffstat (limited to 'src/gui/tasks/table/widget.py')
-rw-r--r--src/gui/tasks/table/widget.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/gui/tasks/table/widget.py b/src/gui/tasks/table/widget.py
new file mode 100644
index 0000000..a990c0e
--- /dev/null
+++ b/src/gui/tasks/table/widget.py
@@ -0,0 +1,46 @@
+from PyQt5 import QtWidgets
+from PyQt5.QtCore import Qt
+
+import db.tasks
+import gui.tasks.signal
+import gui.tasks.table.menu
+import gui.tasks.table.model
+
+def widget(database, parent, add_task_signal):
+ table = QtWidgets.QTableView(parent)
+
+ tasks = db.tasks.get(database.cursor())
+ table_model = gui.tasks.table.model.TableModel(tasks)
+
+ table.setModel(table_model)
+ table.sortByColumn(
+ gui.tasks.table.model.default_sort[0],
+ gui.tasks.table.model.default_sort[1])
+ table.setSortingEnabled(True)
+ table.setSelectionBehavior(QtWidgets.QTableView.SelectRows)
+ table.horizontalHeader().setStretchLastSection(True)
+ resizeColumns(table)
+
+ update_task_signal = gui.tasks.signal.UpdateTask()
+
+ # Menu
+ table.setContextMenuPolicy(Qt.CustomContextMenu)
+ table.customContextMenuRequested.connect(lambda position: gui.tasks.table.menu.open(database, table, update_task_signal, position))
+
+ add_task_signal.get().connect(lambda task: insert(table, task))
+ update_task_signal.get().connect(lambda row, task: update(table, row, task))
+
+ return table
+
+def insert(table, task):
+ table.model().insert_task(table.horizontalHeader(), task)
+ resizeColumns(table)
+
+def update(table, row, task):
+ row = table.model().update_task(table.horizontalHeader(), row, task)
+ table.selectRow(row)
+ resizeColumns(table)
+
+def resizeColumns(table):
+ for column in range(gui.tasks.table.model.columns):
+ table.resizeColumnToContents(column)