summaryrefslogtreecommitdiff
path: root/src/main/python/utils/streamTable.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/python/utils/streamTable.py')
-rw-r--r--src/main/python/utils/streamTable.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/python/utils/streamTable.py b/src/main/python/utils/streamTable.py
new file mode 100644
index 0000000..708a303
--- /dev/null
+++ b/src/main/python/utils/streamTable.py
@@ -0,0 +1,70 @@
+from PyQt5.QtCore import Qt, QSize, QRectF, QPoint
+from PyQt5.QtGui import QBrush, QColor
+from PyQt5.QtWidgets import QTableWidget, QMenu, QGraphicsRectItem
+
+class streamTable(QTableWidget):
+
+ def __init__(self, int, int_, canvas=None, parent=None):
+ super(streamTable, self).__init__(int, int_, parent=parent)
+ self.canvas = canvas
+
+ def mousePressEvent(self, event):
+ if event.button() == Qt.RightButton:
+ point = event.pos()
+ menu = QMenu("Context Menu", self)
+ menu.addAction("Insert Column to right", lambda x=point: self.insertColRight(x.x()))
+ menu.addAction("Insert Row to bottom", lambda x=point: self.insertRowBottom(x.y()))
+ menu.exec_(self.mapToGlobal(point)+ QPoint(20, 25))
+ event.accept()
+ return super(streamTable, self).mousePressEvent(event)
+
+ # def mouseDoubleClickEvent(self):
+ # return super(streamTable, self).mouseDoubleClickEvent()
+
+ def insertRowBottom(self, point):
+ h = self.horizontalHeader().height()
+ i = 0
+ while (h < point):
+ h += self.rowHeight(i)
+ i += 1
+ self.insertRow(i + 1)
+ self.resize(self.sizeHint())
+
+ def insertColRight(self, point):
+ w = self.verticalHeader().width()
+ i = 0
+ while (w < point):
+ w += self.columnWidth(i)
+ i += 1
+ self.insertColumn(i + 1)
+ self.resize(self.sizeHint())
+
+ def resizeHandler(self):
+ self.resize(self.sizeHint())
+ # self.canvas.streamTableRect.setRect(streamTable.rect().adjusted(-10, -10, 10, 10))
+
+ def sizeHint(self):
+ w = self.verticalHeader().width() + 4
+ for i in range(self.columnCount()):
+ w += self.columnWidth(i)
+ h = self.horizontalHeader().height() + 4
+ for i in range(self.rowCount()):
+ h += self.rowHeight(i)
+ return QSize(w, h)
+
+ def rect(self):
+ w = self.verticalHeader().width() + 4
+ for i in range(self.columnCount()):
+ w += self.columnWidth(i)
+ h = self.horizontalHeader().height() + 4
+ for i in range(self.rowCount()):
+ h += self.rowHeight(i)
+ return QRectF(0, 0, w, h)
+
+ def cellEntered(self, row, column):
+ print(row, column)
+
+class moveRect(QGraphicsRectItem):
+ def __init__(self, *args):
+ super(moveRect, self).__init__(*args)
+ self.setBrush(QBrush(QColor(0, 0, 0, 120))) \ No newline at end of file