From 17ea0eba180766d684b83b7e27a427d79b25d237 Mon Sep 17 00:00:00 2001 From: Artem30801 Date: Mon, 30 Dec 2019 10:36:08 +0300 Subject: [PATCH] WIP copter table context menus --- Server/copter_table.py | 73 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/Server/copter_table.py b/Server/copter_table.py index f4b7876..db9b427 100644 --- a/Server/copter_table.py +++ b/Server/copter_table.py @@ -1,8 +1,11 @@ import logging -from PyQt5 import QtWidgets, QtCore +from PyQt5 import QtWidgets, QtCore, QtGui +from PyQt5.QtCore import Qt as Qt from PyQt5.QtCore import pyqtSlot -from PyQt5.QtWidgets import QTableView, QMessageBox +from PyQt5.QtGui import QCursor, QStandardItem +from PyQt5.QtWidgets import QTableView, QMessageBox, QMenu, QAction, QCheckBox, QWidgetAction, QListView, QListWidget, \ + QAbstractItemView, QListWidgetItem from server import Client import copter_table_models as table @@ -24,6 +27,14 @@ class CopterTableWidget(QTableView): # Initiate table and table self.model self.setModel(self.proxy_model) + self.horizontalHeader().setSectionsMovable(True) + header = self.horizontalHeader() + header.setContextMenuPolicy(Qt.CustomContextMenu) + #header.setContextMenuPolicy(CustomContextMenu) + header.customContextMenuRequested.connect(self.showHeaderMenu) + + # self.horizontalHeader().contextMenuEvent = self.headercontextMenuEvent + # Adjust properties self.resizeColumnsToContents() self.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) @@ -57,6 +68,64 @@ class CopterTableWidget(QTableView): dialog.setDetailedText("\n".join(data)) dialog.exec() + # action = QAction(name, menu, checkable=True, checked=True) + def showHeaderMenu1(self, event): + menu = QMenu(self) + names = [] + for column in range(self.proxy_model.columnCount()): + name = self.proxy_model.headerData(column, Qt.Horizontal).strip() + names.append(name) + #l = max(map(len, names)) + for name in names: + # name = "{0:<{1}}|".format(name, l) + box = QCheckBox(menu) + action = QWidgetAction(menu) + box.setText(name) + action.setDefaultWidget(box) + menu.addAction(action) + #act = menu.addAction(name.strip()) + menu.exec_(QCursor.pos()) + + def showHeaderMenu(self, event): + menu = QMenu(self) + names = [] + for column in range(self.proxy_model.columnCount()): + name = self.proxy_model.headerData(column, Qt.Horizontal).strip() + names.append(name) + #l = max(map(len, names)) + + box = QListWidget(menu) + action = QWidgetAction(menu) + #box.setText(name) + # model = QtGui.QStandardItemModel() + # box.setModel(model) + box.setDragDropMode(QAbstractItemView.InternalMove) + box.setDefaultDropAction(Qt.MoveAction) + # #box.setMovement(QListView.Snap) + # box.setDragDropOverwriteMode(False) + + for name in names: + item = QListWidgetItem(name, box) + item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled | Qt.ItemIsSelectable) + item.setCheckState(Qt.Checked) + #item = box.addItem(name)#, checkable=True, checked=True) + print(item) + #item.setCheckable(True) + #box.model().appendRow(item) + + box.setFixedHeight((box.geometry().height()-6)*len(names)) + #box.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + action.setDefaultWidget(box) + menu.addAction(action) + #act = menu.addAction(name.strip()) + menu.exec_(QCursor.pos()) + + def contextMenuEvent(self, event): + menu = QMenu(self) + + menu.addAction("LOl") + menu.exec_(QCursor.pos()) + # def _selfcheck_shortener(self, data): # TODO!!! # shortened = [] # for line in data: