diff --git a/test/gridwidgets.py b/test/gridwidgets.py new file mode 100644 index 0000000000000000000000000000000000000000..3bb3c24567782319ee1823f547366265216ed471 --- /dev/null +++ b/test/gridwidgets.py @@ -0,0 +1,116 @@ + +from qgis.gui import * +from qgis.PyQt.QtCore import * +from qgis.PyQt.QtGui import * +from qgis.PyQt.QtWidgets import * + +from timeseriesviewer.utils import * + + +class MapViewGridLayout(QGridLayout): + + def __init__(self): + pass + +class GridWidgetModel(QAbstractTableModel): + def __init__(self): + + super(GridWidgetModel, self).__init__() + def columnNames(self)->list: + """ + Returns the column names + :return: [list-of-str] + """ + return [self.mColLabel, self.mColName, self.mColColor] + + def rowCount(self, parent:QModelIndex=None): + """ + Returns the number of row / ClassInfos + :param parent: QModelIndex + :return: int + """ + return len(self.mClasses) + + def columnCount(self, parent: QModelIndex=None): + return len(self.columnNames()) + + + def index2ClassInfo(self, index)->ClassInfo: + if isinstance(index, QModelIndex): + index = index.row() + return self.mClasses[index] + + def classInfo2index(self, classInfo:ClassInfo)->QModelIndex: + row = self.mClasses.index(classInfo) + return self.createIndex(row, 0) + + + def data(self, index: QModelIndex, role: int = Qt.DisplayRole): + if not index.isValid(): + return None + + value = None + col = index.column() + row = index.row() + classInfo = self.index2ClassInfo(row) + + if role == Qt.DisplayRole: + if col == 0: + return classInfo.label() + if col == 1: + return classInfo.name() + if col == 2: + return classInfo.color().name() + + if role == Qt.ForegroundRole: + if col == self.mColColor: + return QBrush(getTextColorWithContrast(classInfo.color())) + + + if role == Qt.BackgroundColorRole: + if col == 2: + return QBrush(classInfo.color()) + + if role == Qt.AccessibleTextRole: + if col == 0: + return str(classInfo.label()) + if col == 1: + return classInfo.name() + if col == 2: + return classInfo.color().name() + + if role == Qt.ToolTipRole: + if col == 0: + return 'Class label "{}"'.format(classInfo.label()) + if col == 1: + return 'Class name "{}"'.format(classInfo.name()) + if col == 2: + return 'Class color "{}"'.format(classInfo.color().name()) + + if role == Qt.EditRole: + if col == 1: + return classInfo.name() + if col == 2: + return classInfo.color() + + if role == Qt.UserRole: + return classInfo + + return None + + + + + + +if __name__ == '__main__': + + app = initQgisApplication() + + view = QTableView() + + + view.resize(QSize(300,200)) + view.show() + + app.exec_() \ No newline at end of file