def __init__(self, parent=None): super(XCommentEdit, self).__init__(parent) # define custom properties self._attachments = {} self._showAttachments = True # create toolbar self._toolbar = QToolBar(self) self._toolbar.setMovable(False) self._toolbar.setFixedHeight(30) self._toolbar.setAutoFillBackground(True) self._toolbar.setFocusProxy(self) self._toolbar.hide() # create toolbar buttons self._attachButton = QToolButton(self) self._attachButton.setIcon(QIcon(resources.find('img/attach.png'))) self._attachButton.setToolTip('Add Attachment') self._attachButton.setAutoRaise(True) self._attachButton.setIconSize(QSize(24, 24)) self._attachButton.setFixedSize(26, 26) self._submitButton = QPushButton(self) self._submitButton.setText('Submit') self._submitButton.setFocusProxy(self) # create attachments widget self._attachmentsEdit = XMultiTagEdit(self) self._attachmentsEdit.setAutoResizeToContents(True) self._attachmentsEdit.setFrameShape(XMultiTagEdit.NoFrame) self._attachmentsEdit.setViewMode(XMultiTagEdit.ListMode) self._attachmentsEdit.setEditable(False) self._attachmentsEdit.setFocusProxy(self) self._attachmentsEdit.hide() # define toolbar layout spacer = QWidget(self) spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self._attachAction = self._toolbar.addWidget(self._attachButton) self._toolbar.addWidget(spacer) self._toolbar.addWidget(self._submitButton) # set standard properties self.setAutoResizeToContents(True) self.setHint('add comment') self.setFocusPolicy(Qt.StrongFocus) self.setRequireShiftForNewLine(True) # create connections self._attachButton.clicked.connect(self.attachmentRequested) self._submitButton.clicked.connect(self.acceptText) self._attachmentsEdit.tagRemoved.connect(self.removeAttachment) self.focusChanged.connect(self.setToolbarVisible)
def createEditor(self, parent, schema, columnName, operatorType): """ Returns an editor for the inputed table type, based on the column and operator types. :param schema | <orb.TableSchema> columnName | <str> operatorType | <orb.Query.Op> :return <QWidget> """ column = schema.column(columnName) if (not column): return None ctype = column.columnType() # based on the column and operator type, the editor may change if (ctype == ColumnType.String): if (operatorType in (Q.Op.IsIn, Q.Op.IsNotIn)): widget = XMultiTagEdit(parent) else: widget = QLineEdit(parent) elif (ctype == ColumnType.Bool): widget = QComboBox(parent) widget.addItems(['True', 'False']) widget.setEditable(True) widget.setInsertPolicy(QComboBox.NoInsert) elif (ctype == ColumnType.ForeignKey): widget = XOrbRecordBox(parent) widget.setRecords(self.collectRecords(column)) else: widget = None return widget