-
Notifications
You must be signed in to change notification settings - Fork 0
/
FrameSetPlanTableModel.py
86 lines (74 loc) · 3.47 KB
/
FrameSetPlanTableModel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from PyQt5.QtCore import QAbstractTableModel, QModelIndex, QVariant, Qt, QSettings
from PyQt5.QtGui import QFont
from FrameSet import FrameSet
from MultiOsUtil import MultiOsUtil
from tracelog import *
class FrameSetPlanTableModel (QAbstractTableModel):
_columnHeaders = (" # Frames ", " Type ", " Exposure ", " Binning ", " Complete ")
# Constructor takes and keeps a pointer to the data model
def __init__(self, the_data_model):
QAbstractTableModel.__init__(self)
self._dataModel = the_data_model
# Methods required by the parent data model
#tracelog
def rowCount(self, parent_model_index: QModelIndex) -> int:
# print(f"rowCount({parent_model_index}")
return len(self._dataModel.get_saved_frame_sets())
#tracelog
def columnCount(self, parent_model_index) -> int:
return FrameSet.NUMBER_OF_DISPLAY_FIELDS
#tracelog
def data(self, index: QModelIndex, role: Qt.DisplayRole):
row_num: int = index.row()
column_num: int = index.column()
# print(f"data(({row_num},{column_num}),{role})")
if role == Qt.DisplayRole:
assert((row_num >= 0) & (row_num < len(self._dataModel.get_saved_frame_sets())))
the_frame_set: FrameSet = self._dataModel.get_frame_set(row_num)
result: QVariant = QVariant(the_frame_set.fieldNumberAsString(column_num))
elif role == Qt.FontRole:
settings = QSettings()
standard_font_size = settings.value(MultiOsUtil.STANDARD_FONT_SIZE_SETTING)
font = QFont()
font.setPointSize(standard_font_size)
result = font
else:
result = QVariant()
return result
#tracelog
def headerData(self, column_number, orientation, role):
# print(f"headerData({column_number}, {orientation}, {role})")
result = QVariant()
if orientation == Qt.Horizontal:
if role == Qt.DisplayRole:
assert((column_number >= 0) & (column_number < len(self._columnHeaders)))
result = self._columnHeaders[column_number]
elif role == Qt.FontRole:
settings = QSettings()
standard_font_size = settings.value(MultiOsUtil.STANDARD_FONT_SIZE_SETTING)
font = QFont()
font.setPointSize(standard_font_size)
font.setBold(True)
result = font
return result
# Add a frameset to the end of the list in this model
@tracelog
def addFrameSet(self, new_frame_set: FrameSet):
frame_sets: [FrameSet] = self._dataModel.get_saved_frame_sets()
self.beginInsertRows(QModelIndex(), len(frame_sets), len(frame_sets))
self._dataModel.add_frame_set(new_frame_set)
self.endInsertRows()
# Insert a frameset into the list at the given index position
@tracelog
def insertFrameSet(self, new_frame_set: FrameSet, at_index: int):
self.beginInsertRows(QModelIndex(), at_index, at_index)
self._dataModel.insert_frame_set(new_frame_set, at_index)
self.endInsertRows()
# Delete the frameSet at the given index
@tracelog
def deleteRow(self, index_to_delete: int):
num_frame_sets: int = len(self._dataModel.get_saved_frame_sets())
assert ((index_to_delete >= 0) and (index_to_delete < num_frame_sets))
self.beginRemoveRows(QModelIndex(), index_to_delete, index_to_delete)
self._dataModel.delete_frame_set(index_to_delete)
self.endRemoveRows()