Esempio n. 1
0
 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)
Esempio n. 2
0
    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