예제 #1
0
 def create_status_color_line(self):
     self.process_color_line = QtGui.QFrame(self)
     self.process_color_line.setMaximumSize(QtCore.QSize(2, 32))
     self.process_color_line.setStyleSheet(
         'QFrame { border: 0px; background-color: grey;}')
     self.process_color_line.setFrameShadow(QtGui.QFrame.Plain)
     self.process_color_line.setFrameShape(QtGui.QFrame.VLine)
     self.process_color_line.setLineWidth(2)
     self.process_color_line.setObjectName('status_color_line')
     self.main_layout.addWidget(self.process_color_line, 0, 0, 1, 1)
예제 #2
0
    def create_projects_chooser(self):

        self.projects_chooser_widget_bg = QtGui.QFrame(self)
        self.projects_chooser_widget_bg.setStyleSheet("QFrame { border: 0px; background-color: black;}")
        self.projects_chooser_widget_bg.setHidden(True)
        effect = QtGui.QGraphicsDropShadowEffect(self)
        effect.setOffset(0, 0)
        effect.setColor(Qt4Gui.QColor(0, 0, 0, 128))
        effect.setBlurRadius(64)
        self.projects_chooser_widget_bg.setGraphicsEffect(effect)

        self.projects_chooser_widget = Ui_projectsChooserWidget(self)
        self.projects_chooser_widget.set_bg_widget(self.projects_chooser_widget_bg)

        self.projects_chooser_widget.setMinimumWidth(800)
        self.projects_chooser_widget.setMaximumWidth(800)
        self.projects_chooser_widget.setMinimumHeight(400)
        self.projects_chooser_widget.setMaximumHeight(1600)

        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
        self.projects_chooser_widget.setSizePolicy(sizePolicy)

        grid_layout = QtGui.QGridLayout()
        grid_layout.setContentsMargins(0, 0, 0, 0)

        grid_layout.addWidget(self.projects_chooser_widget, 1, 1, 1, 1)

        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Minimum)
        grid_layout.addItem(spacerItem, 1, 0, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Minimum)
        grid_layout.addItem(spacerItem1, 1, 2, 1, 1)
        spacerItem2 = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Ignored)
        grid_layout.addItem(spacerItem2, 0, 0, 1, 3)
        spacerItem3 = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Ignored)
        grid_layout.addItem(spacerItem3, 2, 0, 1, 3)

        self.main_layout.addLayout(grid_layout)
예제 #3
0
    def __init__(self):
        super(self.__class__, self).__init__()
        self.setMinimumSize(400, 300)
        self.setWindowTitle('QtAwesome Icon Browser')

        qtawesome._instance()
        fontMaps = qtawesome._resource['iconic'].charmap

        iconNames = []
        for fontCollection, fontData in fontMaps.items():
            for iconName in fontData:
                iconNames.append('%s.%s' % (fontCollection, iconName))

        self._filterTimer = QtCore.QTimer(self)
        self._filterTimer.setSingleShot(True)
        self._filterTimer.setInterval(AUTO_SEARCH_TIMEOUT)
        self._filterTimer.timeout.connect(self._updateFilter)

        model = IconModel(self.palette().color(QtGui.QPalette.Text))
        model.setStringList(sorted(iconNames))

        self._proxyModel = QtCore.QSortFilterProxyModel()
        self._proxyModel.setSourceModel(model)
        self._proxyModel.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive)

        self._listView = IconListView(self)
        self._listView.setUniformItemSizes(True)
        self._listView.setViewMode(QtWidgets.QListView.IconMode)
        self._listView.setModel(self._proxyModel)
        self._listView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self._listView.doubleClicked.connect(self._copyIconText)

        self._lineEdit = QtWidgets.QLineEdit(self)
        self._lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        self._lineEdit.textChanged.connect(self._triggerDelayedUpdate)
        self._lineEdit.returnPressed.connect(self._triggerImmediateUpdate)

        self._comboBox = QtWidgets.QComboBox(self)
        self._comboBox.setMinimumWidth(75)
        self._comboBox.currentIndexChanged.connect(self._triggerImmediateUpdate)
        self._comboBox.addItems([ALL_COLLECTIONS] + sorted(fontMaps.keys()))

        lyt = QtWidgets.QHBoxLayout()
        lyt.setContentsMargins(0, 0, 0, 0)
        lyt.addWidget(self._comboBox)
        lyt.addWidget(self._lineEdit)

        searchBarFrame = QtWidgets.QFrame(self)
        searchBarFrame.setLayout(lyt)

        self._copyButton = QtWidgets.QPushButton('Copy Name', self)
        self._copyButton.clicked.connect(self._copyIconText)

        lyt = QtWidgets.QVBoxLayout()
        lyt.addWidget(searchBarFrame)
        lyt.addWidget(self._listView)
        lyt.addWidget(self._copyButton)

        frame = QtWidgets.QFrame(self)
        frame.setLayout(lyt)

        self.setCentralWidget(frame)

        QtWidgets.QShortcut(
            QtGui.QKeySequence(QtCore.Qt.Key_Return),
            self,
            self._copyIconText,
        )

        self._lineEdit.setFocus()

        geo = self.geometry()
        desktop = QtWidgets.QApplication.desktop()
        screen = desktop.screenNumber(desktop.cursor().pos())
        centerPoint = desktop.screenGeometry(screen).center()
        geo.moveCenter(centerPoint)
        self.setGeometry(geo)
예제 #4
0
    def setupUi(self, item):
        item.setObjectName("item")
        self.gridLayout = QtGui.QGridLayout(item)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")
        self.itemColorLine = QtGui.QFrame(item)
        self.itemColorLine.setMaximumSize(QtCore.QSize(4, 16777215))
        self.itemColorLine.setStyleSheet(
            "QFrame { border: 0px; background-color: black;}")
        self.itemColorLine.setFrameShadow(QtGui.QFrame.Plain)
        self.itemColorLine.setLineWidth(4)
        self.itemColorLine.setFrameShape(QtGui.QFrame.VLine)
        self.itemColorLine.setFrameShadow(QtGui.QFrame.Sunken)
        self.itemColorLine.setObjectName("itemColorLine")
        self.gridLayout.addWidget(self.itemColorLine, 0, 0, 3, 1)
        self.previewVerticalLayout = QtGui.QVBoxLayout()
        self.previewVerticalLayout.setSpacing(0)
        self.previewVerticalLayout.setContentsMargins(4, 4, 4, 4)
        self.previewVerticalLayout.setObjectName("previewVerticalLayout")
        self.previewLabel = QtGui.QLabel(item)
        self.previewLabel.setMinimumSize(QtCore.QSize(64, 64))
        self.previewLabel.setMaximumSize(QtCore.QSize(64, 64))
        self.previewLabel.setStyleSheet(
            "QLabel {\n"
            "    background: rgba(175, 175, 175, 16);\n"
            "    border: 0px;\n"
            "    border-radius: 3px;\n"
            "    padding: 0px 0px;\n"
            "}")
        self.previewLabel.setTextFormat(QtCore.Qt.RichText)
        self.previewLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.previewLabel.setObjectName("previewLabel")
        self.previewVerticalLayout.addWidget(self.previewLabel)
        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Ignored)
        self.previewVerticalLayout.addItem(spacerItem)
        self.previewVerticalLayout.setStretch(1, 1)
        self.gridLayout.addLayout(self.previewVerticalLayout, 0, 1, 3, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setSpacing(0)
        self.horizontalLayout_2.setContentsMargins(-1, -1, -1, 3)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.fileNameLabel = QtGui.QLabel(item)
        self.fileNameLabel.setMinimumSize(QtCore.QSize(0, 20))
        self.fileNameLabel.setMaximumSize(QtCore.QSize(16777215, 24))
        font = Qt4Gui.QFont()
        font.setWeight(75)
        font.setBold(True)
        self.fileNameLabel.setFont(font)
        self.fileNameLabel.setStyleSheet("QLabel {\n"
                                         "    background-color: transparent;\n"
                                         "}")
        self.fileNameLabel.setTextFormat(QtCore.Qt.PlainText)
        self.fileNameLabel.setObjectName("fileNameLabel")
        self.horizontalLayout_2.addWidget(self.fileNameLabel)
        self.syncWithRepoToolButton = QtGui.QToolButton(item)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.syncWithRepoToolButton.sizePolicy().hasHeightForWidth())
        self.syncWithRepoToolButton.setSizePolicy(sizePolicy)
        self.syncWithRepoToolButton.setAutoRaise(True)
        self.syncWithRepoToolButton.setObjectName("syncWithRepoToolButton")
        self.horizontalLayout_2.addWidget(self.syncWithRepoToolButton)
        self.watchFolderToolButton = QtGui.QToolButton(item)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.watchFolderToolButton.sizePolicy().hasHeightForWidth())
        self.watchFolderToolButton.setSizePolicy(sizePolicy)
        self.watchFolderToolButton.setText("")
        self.watchFolderToolButton.setCheckable(True)
        self.watchFolderToolButton.setAutoRaise(True)
        self.watchFolderToolButton.setObjectName("watchFolderToolButton")
        self.horizontalLayout_2.addWidget(self.watchFolderToolButton)
        self.horizontalLayout_2.setStretch(0, 1)
        self.gridLayout.addLayout(self.horizontalLayout_2, 0, 2, 1, 2)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.tasksToolButton = QtGui.QToolButton(item)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tasksToolButton.sizePolicy().hasHeightForWidth())
        self.tasksToolButton.setSizePolicy(sizePolicy)
        self.tasksToolButton.setToolButtonStyle(
            QtCore.Qt.ToolButtonTextBesideIcon)
        self.tasksToolButton.setAutoRaise(True)
        self.tasksToolButton.setObjectName("tasksToolButton")
        self.horizontalLayout.addWidget(self.tasksToolButton)
        self.notesToolButton = QtGui.QToolButton(item)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.notesToolButton.sizePolicy().hasHeightForWidth())
        self.notesToolButton.setSizePolicy(sizePolicy)
        self.notesToolButton.setText("")
        self.notesToolButton.setToolButtonStyle(
            QtCore.Qt.ToolButtonTextBesideIcon)
        self.notesToolButton.setAutoRaise(True)
        self.notesToolButton.setObjectName("notesToolButton")
        self.horizontalLayout.addWidget(self.notesToolButton)
        self.relationsToolButton = QtGui.QToolButton(item)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.relationsToolButton.sizePolicy().hasHeightForWidth())
        self.relationsToolButton.setSizePolicy(sizePolicy)
        self.relationsToolButton.setPopupMode(
            QtGui.QToolButton.MenuButtonPopup)
        self.relationsToolButton.setToolButtonStyle(
            QtCore.Qt.ToolButtonTextBesideIcon)
        self.relationsToolButton.setAutoRaise(True)
        self.relationsToolButton.setArrowType(QtCore.Qt.NoArrow)
        self.relationsToolButton.setObjectName("relationsToolButton")
        self.horizontalLayout.addWidget(self.relationsToolButton)
        self.gridLayout.addLayout(self.horizontalLayout, 1, 3, 2, 1)
        self.descriptionLerticalLayout = QtGui.QVBoxLayout()
        self.descriptionLerticalLayout.setSpacing(0)
        self.descriptionLerticalLayout.setObjectName(
            "descriptionLerticalLayout")
        self.commentLabel = QtGui.QLabel(item)
        self.commentLabel.setMinimumSize(QtCore.QSize(0, 25))
        self.commentLabel.setTextFormat(QtCore.Qt.PlainText)
        self.commentLabel.setAlignment(QtCore.Qt.AlignLeading
                                       | QtCore.Qt.AlignLeft
                                       | QtCore.Qt.AlignTop)
        self.commentLabel.setWordWrap(True)
        self.commentLabel.setMargin(2)
        self.commentLabel.setObjectName("commentLabel")
        self.descriptionLerticalLayout.addWidget(self.commentLabel)
        self.gridLayout.addLayout(self.descriptionLerticalLayout, 2, 2, 1, 1)
        self.infoHorizontalLayout = QtGui.QHBoxLayout()
        self.infoHorizontalLayout.setSpacing(0)
        self.infoHorizontalLayout.setObjectName("infoHorizontalLayout")
        self.gridLayout.addLayout(self.infoHorizontalLayout, 1, 2, 1, 1)
        self.gridLayout.setColumnStretch(2, 1)
        self.gridLayout.setRowStretch(2, 1)

        self.retranslateUi(item)
        QtCore.QMetaObject.connectSlotsByName(item)
예제 #5
0
    def setupUi(self, snapshotItem):
        snapshotItem.setObjectName("snapshotItem")
        self.gridLayout = QtGui.QGridLayout(snapshotItem)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")
        self.previewVerticalLayout = QtGui.QVBoxLayout()
        self.previewVerticalLayout.setSpacing(0)
        self.previewVerticalLayout.setContentsMargins(4, 4, 4, 4)
        self.previewVerticalLayout.setObjectName("previewVerticalLayout")
        self.previewLabel = QtGui.QLabel(snapshotItem)
        self.previewLabel.setMinimumSize(QtCore.QSize(64, 64))
        self.previewLabel.setMaximumSize(QtCore.QSize(64, 64))
        self.previewLabel.setStyleSheet(
            "QLabel {\n"
            "    background: rgba(175, 175, 175, 16);\n"
            "    border: 0px;\n"
            "    border-radius: 3px;\n"
            "    padding: 0px 0px;\n"
            "}")
        self.previewLabel.setTextFormat(QtCore.Qt.RichText)
        self.previewLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.previewLabel.setObjectName("previewLabel")
        self.previewVerticalLayout.addWidget(self.previewLabel)
        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Ignored)
        self.previewVerticalLayout.addItem(spacerItem)
        self.previewVerticalLayout.setStretch(1, 1)
        self.gridLayout.addLayout(self.previewVerticalLayout, 0, 1, 3, 1)
        self.nameVerticalLayout = QtGui.QHBoxLayout()
        self.nameVerticalLayout.setSpacing(0)
        self.nameVerticalLayout.setContentsMargins(-1, -1, -1, 3)
        self.nameVerticalLayout.setObjectName("nameVerticalLayout")
        self.fileNameLabel = QtGui.QLabel(snapshotItem)
        self.fileNameLabel.setMinimumSize(QtCore.QSize(0, 20))
        self.fileNameLabel.setMaximumSize(QtCore.QSize(16777215, 20))
        font = Qt4Gui.QFont()
        font.setWeight(75)
        font.setBold(True)
        self.fileNameLabel.setFont(font)
        self.fileNameLabel.setStyleSheet("QLabel {\n"
                                         "    background-color: transparent;\n"
                                         "}")
        self.fileNameLabel.setTextFormat(QtCore.Qt.PlainText)
        self.fileNameLabel.setWordWrap(True)
        self.fileNameLabel.setObjectName("fileNameLabel")
        self.nameVerticalLayout.addWidget(self.fileNameLabel)
        self.sizeLabel = QtGui.QLabel(snapshotItem)
        self.sizeLabel.setMinimumSize(QtCore.QSize(0, 20))
        self.sizeLabel.setMaximumSize(QtCore.QSize(16777215, 20))
        self.sizeLabel.setToolTip("")
        self.sizeLabel.setStyleSheet(
            "QLabel {\n"
            "    background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 255, 255, 0), stop:1 rgba(64, 64, 64, 175));\n"
            "}")
        self.sizeLabel.setTextFormat(QtCore.Qt.PlainText)
        self.sizeLabel.setAlignment(QtCore.Qt.AlignRight
                                    | QtCore.Qt.AlignTrailing
                                    | QtCore.Qt.AlignVCenter)
        self.sizeLabel.setMargin(2)
        self.sizeLabel.setObjectName("sizeLabel")
        self.nameVerticalLayout.addWidget(self.sizeLabel)
        self.nameVerticalLayout.setStretch(0, 1)
        self.gridLayout.addLayout(self.nameVerticalLayout, 0, 2, 1, 2)
        self.infoHorizontalLayout = QtGui.QHBoxLayout()
        self.infoHorizontalLayout.setSpacing(0)
        self.infoHorizontalLayout.setObjectName("infoHorizontalLayout")
        self.gridLayout.addLayout(self.infoHorizontalLayout, 1, 2, 1, 1)
        self.descriptionLorizontalLayout = QtGui.QHBoxLayout()
        self.descriptionLorizontalLayout.setSpacing(0)
        self.descriptionLorizontalLayout.setObjectName(
            "descriptionLorizontalLayout")
        self.authorLabel = QtGui.QLabel(snapshotItem)
        self.authorLabel.setMinimumSize(QtCore.QSize(0, 25))
        font = Qt4Gui.QFont()
        font.setItalic(True)
        self.authorLabel.setFont(font)
        self.authorLabel.setStyleSheet("color:grey;")
        self.authorLabel.setTextFormat(QtCore.Qt.PlainText)
        self.authorLabel.setAlignment(QtCore.Qt.AlignLeading
                                      | QtCore.Qt.AlignLeft
                                      | QtCore.Qt.AlignTop)
        self.authorLabel.setMargin(2)
        self.authorLabel.setObjectName("authorLabel")
        self.descriptionLorizontalLayout.addWidget(self.authorLabel)
        self.commentLabel = QtGui.QLabel(snapshotItem)
        self.commentLabel.setMinimumSize(QtCore.QSize(0, 25))
        self.commentLabel.setTextFormat(QtCore.Qt.PlainText)
        self.commentLabel.setAlignment(QtCore.Qt.AlignLeading
                                       | QtCore.Qt.AlignLeft
                                       | QtCore.Qt.AlignTop)
        self.commentLabel.setWordWrap(True)
        self.commentLabel.setMargin(2)
        self.commentLabel.setObjectName("commentLabel")
        self.descriptionLorizontalLayout.addWidget(self.commentLabel)
        self.descriptionLorizontalLayout.setStretch(1, 1)
        self.gridLayout.addLayout(self.descriptionLorizontalLayout, 2, 2, 1, 2)
        self.itemColorLine = QtGui.QFrame(snapshotItem)
        self.itemColorLine.setMaximumSize(QtCore.QSize(4, 16777215))
        self.itemColorLine.setStyleSheet(
            "QFrame { border: 0px; background-color: green;}\n"
            "")
        self.itemColorLine.setFrameShadow(QtGui.QFrame.Plain)
        self.itemColorLine.setLineWidth(4)
        self.itemColorLine.setFrameShape(QtGui.QFrame.VLine)
        self.itemColorLine.setFrameShadow(QtGui.QFrame.Sunken)
        self.itemColorLine.setObjectName("itemColorLine")
        self.gridLayout.addWidget(self.itemColorLine, 0, 0, 3, 1)
        self.gridLayout.setColumnStretch(2, 1)
        self.gridLayout.setRowStretch(2, 1)

        self.retranslateUi(snapshotItem)
        QtCore.QMetaObject.connectSlotsByName(snapshotItem)
예제 #6
0
    def create_ui_raw(self):

        self.setObjectName('messageWidget')
        self.setMinimumWidth(300)
        self.setMinimumHeight(40)

        self.main_layout = QtGui.QHBoxLayout(self)
        self.main_layout.setContentsMargins(0, 0, 0, 0)
        self.main_layout.setSpacing(0)

        self.message_layout = QtGui.QVBoxLayout()
        self.message_layout.setContentsMargins(0, 0, 0, 0)
        self.message_layout.setSpacing(0)

        self.attachments_layout = QtGui.QVBoxLayout()
        self.attachments_layout.setAlignment(QtCore.Qt.AlignLeft)
        self.attachments_layout.setContentsMargins(9, 0, 9, 10)
        self.attachments_layout.setSpacing(10)

        self.message_frame = QtGui.QFrame()
        self.message_frame.setLayout(self.message_layout)
        self.message_frame.setObjectName('message_frame')
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Preferred)
        self.message_frame.setSizePolicy(sizePolicy)

        self.text_area = QtGui.QTextBrowser()
        self.text_area.setMinimumWidth(300)
        self.text_area.setOpenExternalLinks(True)
        self.text_area.setFrameShape(QtGui.QFrame.NoFrame)
        self.text_area.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.text_area.setTextInteractionFlags(
            QtCore.Qt.LinksAccessibleByMouse
            | QtCore.Qt.TextSelectableByKeyboard
            | QtCore.Qt.TextSelectableByMouse
            | QtCore.Qt.LinksAccessibleByMouse
            | QtCore.Qt.LinksAccessibleByKeyboard)

        self.message_layout.addWidget(self.text_area)
        self.message_layout.addLayout(self.attachments_layout)

        self.user_icon_widget = Ui_userIconWidget(self.login)

        self.user_icon_layout = QtGui.QVBoxLayout()
        self.user_icon_layout.setContentsMargins(0, 0, 0, 0)
        self.user_icon_layout.setSpacing(0)
        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Expanding)
        self.user_icon_layout.addItem(spacerItem)
        self.user_icon_layout.addWidget(self.user_icon_widget)

        if self.message_type == 'in':
            self.main_layout.addLayout(self.user_icon_layout)
            self.main_layout.addWidget(self.message_frame)
            spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Expanding,
                                           QtGui.QSizePolicy.Minimum)
            self.main_layout.addItem(spacerItem)

            self.main_layout.setStretch(0, 0)
            self.main_layout.setStretch(1, 0)
            self.main_layout.setStretch(2, 1)

        if self.message_type == 'out':
            spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Expanding,
                                           QtGui.QSizePolicy.Minimum)
            self.main_layout.addItem(spacerItem)
            self.main_layout.addWidget(self.message_frame)
            self.main_layout.addLayout(self.user_icon_layout)
            self.main_layout.setStretch(0, 1)
            self.main_layout.setStretch(1, 0)
            self.main_layout.setStretch(2, 0)

        self.overlay_widget = QtGui.QWidget(self.message_frame)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Preferred)
        self.overlay_widget.setSizePolicy(sizePolicy)

        self.overlay_layout = QtGui.QGridLayout(self.overlay_widget)
        self.overlay_layout.setSpacing(0)
        self.overlay_layout.setContentsMargins(0, 0, 0, 0)

        self.overlay_widget.setLayout(self.overlay_layout)

        self.user_label = QtGui.QLabel()
        self.user_label.setStyleSheet(
            'QLabel {padding-left: 8px; font-size: 10pt; color: grey;}')

        self.overlay_layout.addWidget(self.user_label, 0, 0, 1, 1)
        self.message_options_button = StyledToolButton(size='small')
        self.message_options_button.setParent(self.message_frame)
        self.message_options_button.setIcon(
            gf.get_icon('dots-vertical', icons_set='mdi', scale_factor=1.2))
        self.overlay_layout.addWidget(self.message_options_button, 0, 1, 1, 1)

        spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum,
                                       QtGui.QSizePolicy.Expanding)
        self.overlay_layout.addItem(spacerItem, 1, 0, 1, 2)

        self.date_label = QtGui.QLabel()
        self.date_label.enterEvent = self.date_label_enter_event
        self.date_label.leaveEvent = self.date_label_leave_event
        self.date_label.setAlignment(QtCore.Qt.AlignRight
                                     | QtCore.Qt.AlignTrailing
                                     | QtCore.Qt.AlignVCenter)
        self.date_label.setStyleSheet(
            'QLabel {padding-right: 8px; padding-bottom: 8px; font-size: 10pt; color: grey;}'
        )
        self.overlay_layout.addWidget(self.date_label, 2, 0, 1, 2)

        self.overlay_widget.raise_()