Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.06 KB | None | 0 0
  1. from PySide2 import (QtCore, QtGui, QtWidgets)
  2. from table_model import CustomTableModel
  3.  
  4.  
  5. class CustomTextEdit(QtWidgets.QPlainTextEdit):
  6.     def __init__(self,parent):
  7.         QtWidgets.QPlainTextEdit.__init__(self, parent)
  8.  
  9.         self.previous_position = 0 # needed to let the cursor to stand on the end of the string without moving to the next cell.
  10.  
  11.     def keyPressEvent(self, event):
  12.         #print(event.key)
  13.        
  14.         QtWidgets.QPlainTextEdit.keyPressEvent(self, event)
  15.         # Check if we are at the end of the text in the current cell.
  16.         if event.key() == QtCore.Qt.Key_Right and self.textCursor().position() == (self.document().characterCount() - 1 ) and self.textCursor().position() == self.previous_position:
  17.             print("Goto next Cell")
  18.             ``
  19.  
  20.         #print("current row: %s " % self.tableView.selectionModel().currentIndex().row())
  21.         #print("current column: %s " % self.tableView.selectionModel().currentIndex().column())
  22.        
  23.    
  24.         self.previous_position = self.textCursor().position()
  25.  
  26.  
  27.         #self.msgtext = QtWidgets.QTextEdit(self)
  28.         #self.msgtext.setObjectName('msgtext')
  29.         #self.msgtextplain = self.msgtext.toPlainText()
  30.         #print("CustomTextEdit: ", event.key())
  31.         #print("\t Current Character: ", self.textCursor().position())
  32.         #print("\t Previous Character: ", self.previous_position)
  33.         print(" Total lines: ", self.document().lineCount())
  34.        
  35.    
  36.  
  37. class TextBoxDelegate(QtWidgets.QItemDelegate):
  38.     def __init__(self):
  39.         QtWidgets.QItemDelegate.__init__(self)
  40.    
  41.  
  42.     def sizeHint(self, option, index):
  43.         ''' Adds QSize(0, x) pixels to the bottom of QTextEdit '''
  44.         return (QtWidgets.QItemDelegate.sizeHint(self, option, index) + QtCore.QSize(0, 8))
  45.         #return (QtWidgets.QItemDelegate.sizeHint(self, option, index))
  46.    
  47.     def createEditor(self, parent, option, index):
  48.        
  49.         editor = CustomTextEdit(parent)
  50.         #editor = QtWidgets.QTextEdit(parent)
  51.         editor.setVerticalScrollBarPolicy(QtGui.Qt.ScrollBarAlwaysOff)
  52.         editor.setContentsMargins(0, 0, 0, 0)
  53.         #editor.setMinimum(0)
  54.         #editor.setMaximum(100)
  55.         return editor
  56.  
  57.     def setEditorData(self, textEdit, index):
  58.         value = index.model().data(index, QtCore.Qt.EditRole)
  59.         textEdit.document().setPlainText(value)
  60.        
  61.  
  62.  
  63.     def setModelData(self, textEdit, model, index):
  64.         ''' Placing a paragraph of a text to a cell. If rich text layouyt is needed
  65.            then tetEdit.toHTML should be used '''
  66.         value = textEdit.toPlainText()
  67.         model.setData(index, value, QtCore.Qt.EditRole)
  68.  
  69.     def updateEditorGeometry(self, editor, option, index):
  70.         editor.setGeometry(option.rect)
  71.    
  72.  
  73. class EditorView(QtWidgets.QTableView):
  74.     ''' Subclassing QTableview for reimplementing keyPressEvent '''
  75.  
  76.     def keyPressEvent(self, event):
  77.         print(event.key())
  78.  
  79.         if event.modifiers() == QtCore.Qt.ControlModifier and (event.key() == QtCore.Qt.Key_Return or event.key() == QtCore.Qt.Key_Enter) :
  80.             print('Ctrl+Enter pressed')
  81.             print(self.editor.document().lineCount())
  82.            
  83.         if event.key() == QtCore.Qt.Key_F1:
  84.             print("Setting forcus to the next cell")
  85.             id = self.model.index(self.selectionModel().currentIndex().row() + 1, self.selectionModel().currentIndex().column())
  86.             self.setCurrentIndex(id)
  87.  
  88.         if event.modifiers() == QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_Down:
  89.             print("Ctrl + Down pressed")
  90.             # get current row and column:
  91.             print("current row: %s " % self.selectionModel().currentIndex().row())
  92.             print("current column: %s " % self.selectionModel().currentIndex().column())
  93.  
  94.         if event.modifiers() == QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_Up:
  95.             print("Ctrl + Up pressed")
  96.  
  97.     def __init__(self, source_data = None, translated_data = None):
  98.         QtWidgets.QTableView.__init__(self)
  99.         self.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
  100.         self.setEditTriggers(QtWidgets.QAbstractItemView.AllEditTriggers)
  101.  
  102.         # CustomTableModel
  103.         self.model = CustomTableModel(source_data, translated_data)
  104.         self.setModel(self.model)
  105.         self.setEditTriggers(QtWidgets.QAbstractItemView.AllEditTriggers)
  106.  
  107.    
  108. class Widget(QtWidgets.QWidget):
  109.  
  110.     def __init__(self, source_data = None, translated_data = None):
  111.         QtWidgets.QWidget.__init__(self)
  112.  
  113.  
  114.         # Creating QTableView
  115.         self.tableView = EditorView(source_data, translated_data)
  116.        
  117.         #print(self.tableView.contentsMargins())
  118.         #self.tableView.setModel(self.model)
  119.         #self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.AllEditTriggers)
  120.         delegate = TextBoxDelegate()
  121.         self.tableView.setItemDelegate(delegate)
  122.  
  123.  
  124.         self.size()
  125.  
  126.         # QTableHeaders
  127.         self.horizontal_header = self.tableView.horizontalHeader()
  128.         self.horizontal_header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
  129.         self.horizontal_header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
  130.  
  131.        
  132.         self.vertical_header = self.tableView.verticalHeader()
  133.         #self.horizontal_header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
  134.         self.vertical_header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
  135.         #self.horizontal_header.setStretchLastSection(True)
  136.         self.horizontal_header.setVisible(False)
  137.         self.tableView.resizeRowsToContents()
  138.        
  139.  
  140.         # QWidget Layout
  141.         self.main_layout = QtWidgets.QHBoxLayout()        
  142.         size = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
  143.  
  144.        
  145.         size.setHorizontalStretch(1)
  146.         self.tableView.setSizePolicy(size)
  147.        
  148.         self.main_layout.addWidget(self.tableView)
  149.        
  150.         # Set Layout to the QWidget
  151.         self.setLayout(self.main_layout)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement