def add_blend_mode_combobox(self):
        """Add blend mode combobox."""
        self.blend_mode_combo_box = QgsBlendModeComboBox()
        # Default value
        self.blend_mode = QPainter.CompositionMode_Multiply
        self.blend_mode_combo_box.setBlendMode(self.blend_mode)
        blend_mode_combo_box = self.blend_mode_combo_box

        # Signal inherited from QComboBox
        blend_mode_combo_box.currentIndexChanged.connect(
            self.assign_blend_mode)
        # Dirty insertion in the existing Qt Designer generated UI
        self.dockwidget.children()[-1].children()[0].layout().insertWidget(
            1, self.blend_mode_combo_box)
Example #2
0
    def __init__(self, parent, composerObject):
        QtGui.QWidget.__init__(self, parent)
        self.mComposerObject = composerObject
        self.setObjectName(_fromUtf8("QgsComposerItemWidgetBase"))
        self.resize(290, 847)
        self.verticalLayout_2 = QtGui.QVBoxLayout(self)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.mGeneralOptionsGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mGeneralOptionsGroupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.mGeneralOptionsGroupBox.setProperty("syncGroup",
                                                 _fromUtf8("composeritem"))
        self.mGeneralOptionsGroupBox.setProperty("collapsed", True)
        self.mGeneralOptionsGroupBox.setObjectName(
            _fromUtf8("mGeneralOptionsGroupBox"))
        self.verticalLayout = QtGui.QVBoxLayout(self.mGeneralOptionsGroupBox)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.gridLayout_3 = QtGui.QGridLayout()
        self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
        self.mWidthLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mWidthLabel.setObjectName(_fromUtf8("mWidthLabel"))
        self.gridLayout_3.addWidget(self.mWidthLabel, 3, 0, 1, 1)
        self.mXLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mXLabel.setObjectName(_fromUtf8("mXLabel"))
        self.gridLayout_3.addWidget(self.mXLabel, 1, 0, 1, 1)
        self.mHeightLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mHeightLabel.setObjectName(_fromUtf8("mHeightLabel"))
        self.gridLayout_3.addWidget(self.mHeightLabel, 4, 0, 1, 1)
        self.mYLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mYLabel.setObjectName(_fromUtf8("mYLabel"))
        self.gridLayout_3.addWidget(self.mYLabel, 2, 0, 1, 1)
        self.mPageLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mPageLabel.setObjectName(_fromUtf8("mPageLabel"))
        self.gridLayout_3.addWidget(self.mPageLabel, 0, 0, 1, 1)
        self.mXPositionDDBtn = QgsDataDefinedButton(
            self.mGeneralOptionsGroupBox)
        self.mXPositionDDBtn.setObjectName(_fromUtf8("mXPositionDDBtn"))
        self.gridLayout_3.addWidget(self.mXPositionDDBtn, 1, 3, 1, 1)
        self.mYPositionDDBtn = QgsDataDefinedButton(
            self.mGeneralOptionsGroupBox)
        self.mYPositionDDBtn.setObjectName(_fromUtf8("mYPositionDDBtn"))
        self.gridLayout_3.addWidget(self.mYPositionDDBtn, 2, 3, 1, 1)
        self.mWidthDDBtn = QgsDataDefinedButton(self.mGeneralOptionsGroupBox)
        self.mWidthDDBtn.setObjectName(_fromUtf8("mWidthDDBtn"))
        self.gridLayout_3.addWidget(self.mWidthDDBtn, 3, 3, 1, 1)
        self.mHeightDDBtn = QgsDataDefinedButton(self.mGeneralOptionsGroupBox)
        self.mHeightDDBtn.setObjectName(_fromUtf8("mHeightDDBtn"))
        self.gridLayout_3.addWidget(self.mHeightDDBtn, 4, 3, 1, 1)
        self.mPageSpinBox = QgsSpinBox(self.mGeneralOptionsGroupBox)
        self.mPageSpinBox.setMinimum(1)
        self.mPageSpinBox.setProperty("showClearButton", False)
        self.mPageSpinBox.setObjectName(_fromUtf8("mPageSpinBox"))
        self.gridLayout_3.addWidget(self.mPageSpinBox, 0, 1, 1, 3)
        self.mWidthSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mWidthSpin.setDecimals(3)
        self.mWidthSpin.setMaximum(9999999.0)
        self.mWidthSpin.setProperty("showClearButton", False)
        self.mWidthSpin.setObjectName(_fromUtf8("mWidthSpin"))
        self.gridLayout_3.addWidget(self.mWidthSpin, 3, 1, 1, 2)
        self.mHeightSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mHeightSpin.setDecimals(3)
        self.mHeightSpin.setMaximum(9999999.0)
        self.mHeightSpin.setProperty("showClearButton", False)
        self.mHeightSpin.setObjectName(_fromUtf8("mHeightSpin"))
        self.gridLayout_3.addWidget(self.mHeightSpin, 4, 1, 1, 2)
        self.mYPosSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mYPosSpin.setDecimals(3)
        self.mYPosSpin.setMinimum(-9999999.0)
        self.mYPosSpin.setMaximum(9999999.0)
        self.mYPosSpin.setProperty("showClearButton", False)
        self.mYPosSpin.setObjectName(_fromUtf8("mYPosSpin"))
        self.gridLayout_3.addWidget(self.mYPosSpin, 2, 1, 1, 2)
        self.mXPosSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mXPosSpin.setDecimals(3)
        self.mXPosSpin.setMinimum(-9999999.0)
        self.mXPosSpin.setMaximum(9999999.0)
        self.mXPosSpin.setProperty("showClearButton", False)
        self.mXPosSpin.setObjectName(_fromUtf8("mXPosSpin"))
        self.gridLayout_3.addWidget(self.mXPosSpin, 1, 1, 1, 2)
        self.gridLayout_3.setColumnStretch(1, 1)
        self.gridLayout_3.setColumnStretch(2, 1)
        self.gridLayout_3.setColumnStretch(3, 1)
        self.verticalLayout.addLayout(self.gridLayout_3)
        self.horizontalLayout_7 = QtGui.QHBoxLayout()
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.label_2 = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.label_2.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft
                                  | QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.horizontalLayout_7.addWidget(self.label_2)
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.mUpperMiddleCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mUpperMiddleCheckBox.setText(_fromUtf8(""))
        self.mUpperMiddleCheckBox.setObjectName(
            _fromUtf8("mUpperMiddleCheckBox"))
        self.gridLayout.addWidget(self.mUpperMiddleCheckBox, 0, 1, 1, 1)
        self.mMiddleRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleRightCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleRightCheckBox.setText(_fromUtf8(""))
        self.mMiddleRightCheckBox.setObjectName(
            _fromUtf8("mMiddleRightCheckBox"))
        self.gridLayout.addWidget(self.mMiddleRightCheckBox, 1, 2, 1, 1)
        self.mMiddleCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleCheckBox.setText(_fromUtf8(""))
        self.mMiddleCheckBox.setObjectName(_fromUtf8("mMiddleCheckBox"))
        self.gridLayout.addWidget(self.mMiddleCheckBox, 1, 1, 1, 1)
        self.mUpperRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperRightCheckBox.setSizePolicy(sizePolicy)
        self.mUpperRightCheckBox.setText(_fromUtf8(""))
        self.mUpperRightCheckBox.setObjectName(
            _fromUtf8("mUpperRightCheckBox"))
        self.gridLayout.addWidget(self.mUpperRightCheckBox, 0, 2, 1, 1)
        self.mLowerMiddleCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mLowerMiddleCheckBox.setText(_fromUtf8(""))
        self.mLowerMiddleCheckBox.setObjectName(
            _fromUtf8("mLowerMiddleCheckBox"))
        self.gridLayout.addWidget(self.mLowerMiddleCheckBox, 2, 1, 1, 1)
        self.mLowerRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerRightCheckBox.setSizePolicy(sizePolicy)
        self.mLowerRightCheckBox.setText(_fromUtf8(""))
        self.mLowerRightCheckBox.setObjectName(
            _fromUtf8("mLowerRightCheckBox"))
        self.gridLayout.addWidget(self.mLowerRightCheckBox, 2, 2, 1, 1)
        self.mUpperLeftCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperLeftCheckBox.setSizePolicy(sizePolicy)
        self.mUpperLeftCheckBox.setText(_fromUtf8(""))
        self.mUpperLeftCheckBox.setObjectName(_fromUtf8("mUpperLeftCheckBox"))
        self.gridLayout.addWidget(self.mUpperLeftCheckBox, 0, 0, 1, 1)
        self.mLowerLeftCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerLeftCheckBox.setSizePolicy(sizePolicy)
        self.mLowerLeftCheckBox.setText(_fromUtf8(""))
        self.mLowerLeftCheckBox.setObjectName(_fromUtf8("mLowerLeftCheckBox"))
        self.gridLayout.addWidget(self.mLowerLeftCheckBox, 2, 0, 1, 1)
        self.mMiddleLeftCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleLeftCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleLeftCheckBox.setText(_fromUtf8(""))
        self.mMiddleLeftCheckBox.setObjectName(
            _fromUtf8("mMiddleLeftCheckBox"))
        self.gridLayout.addWidget(self.mMiddleLeftCheckBox, 1, 0, 1, 1)
        self.horizontalLayout_7.addLayout(self.gridLayout)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.verticalLayout.addLayout(self.horizontalLayout_7)
        self.verticalLayout_2.addWidget(self.mGeneralOptionsGroupBox)
        self.mTransformsGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mTransformsGroupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.mTransformsGroupBox.setProperty("syncGroup",
                                             _fromUtf8("composeritem"))
        self.mTransformsGroupBox.setProperty("collapsed", True)
        self.mTransformsGroupBox.setObjectName(
            _fromUtf8("mTransformsGroupBox"))
        self.gridLayout_5 = QtGui.QGridLayout(self.mTransformsGroupBox)
        self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
        self.label = QtGui.QLabel(self.mTransformsGroupBox)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout_5.addWidget(self.label, 0, 0, 1, 1)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.mItemRotationSpinBox = QgsDoubleSpinBox(self.mTransformsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mItemRotationSpinBox.sizePolicy().hasHeightForWidth())
        self.mItemRotationSpinBox.setSizePolicy(sizePolicy)
        self.mItemRotationSpinBox.setMaximum(360.0)
        self.mItemRotationSpinBox.setObjectName(
            _fromUtf8("mItemRotationSpinBox"))
        self.horizontalLayout_4.addWidget(self.mItemRotationSpinBox)
        self.mItemRotationDDBtn = QgsDataDefinedButton(
            self.mTransformsGroupBox)
        self.mItemRotationDDBtn.setObjectName(_fromUtf8("mItemRotationDDBtn"))
        self.horizontalLayout_4.addWidget(self.mItemRotationDDBtn)
        self.gridLayout_5.addLayout(self.horizontalLayout_4, 0, 1, 1, 1)
        self.gridLayout_5.setColumnStretch(1, 1)
        self.verticalLayout_2.addWidget(self.mTransformsGroupBox)
        self.mFrameGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mFrameGroupBox.setCheckable(True)
        self.mFrameGroupBox.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.mFrameGroupBox.setProperty("collapsed", True)
        self.mFrameGroupBox.setObjectName(_fromUtf8("mFrameGroupBox"))
        self.gridLayout_6 = QtGui.QGridLayout(self.mFrameGroupBox)
        self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
        self.label_3 = QtGui.QLabel(self.mFrameGroupBox)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout_6.addWidget(self.label_3, 0, 0, 1, 1)
        self.horizontalLayout_6 = QtGui.QHBoxLayout()
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.mFrameColorButton = QgsColorButtonV2(self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mFrameColorButton.sizePolicy().hasHeightForWidth())
        self.mFrameColorButton.setSizePolicy(sizePolicy)
        self.mFrameColorButton.setMinimumSize(QtCore.QSize(120, 0))
        self.mFrameColorButton.setMaximumSize(QtCore.QSize(120, 16777215))
        self.mFrameColorButton.setText(_fromUtf8(""))
        self.mFrameColorButton.setObjectName(_fromUtf8("mFrameColorButton"))
        self.horizontalLayout_6.addWidget(self.mFrameColorButton)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem1)
        self.gridLayout_6.addLayout(self.horizontalLayout_6, 0, 1, 1, 1)
        self.mOutlineWidthLabel = QtGui.QLabel(self.mFrameGroupBox)
        self.mOutlineWidthLabel.setWordWrap(True)
        self.mOutlineWidthLabel.setObjectName(_fromUtf8("mOutlineWidthLabel"))
        self.gridLayout_6.addWidget(self.mOutlineWidthLabel, 1, 0, 1, 1)
        self.mOutlineWidthSpinBox = QgsDoubleSpinBox(self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mOutlineWidthSpinBox.sizePolicy().hasHeightForWidth())
        self.mOutlineWidthSpinBox.setSizePolicy(sizePolicy)
        self.mOutlineWidthSpinBox.setSingleStep(0.1)
        self.mOutlineWidthSpinBox.setProperty("showClearButton", False)
        self.mOutlineWidthSpinBox.setObjectName(
            _fromUtf8("mOutlineWidthSpinBox"))
        self.gridLayout_6.addWidget(self.mOutlineWidthSpinBox, 1, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.mFrameGroupBox)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.gridLayout_6.addWidget(self.label_8, 2, 0, 1, 1)
        self.mFrameJoinStyleCombo = QgsPenJoinStyleComboBox(
            self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mFrameJoinStyleCombo.sizePolicy().hasHeightForWidth())
        self.mFrameJoinStyleCombo.setSizePolicy(sizePolicy)
        self.mFrameJoinStyleCombo.setObjectName(
            _fromUtf8("mFrameJoinStyleCombo"))
        self.gridLayout_6.addWidget(self.mFrameJoinStyleCombo, 2, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.mFrameGroupBox)
        self.mBackgroundGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mBackgroundGroupBox.setCheckable(True)
        self.mBackgroundGroupBox.setChecked(True)
        self.mBackgroundGroupBox.setProperty("syncGroup",
                                             _fromUtf8("composeritem"))
        self.mBackgroundGroupBox.setProperty("collapsed", True)
        self.mBackgroundGroupBox.setObjectName(
            _fromUtf8("mBackgroundGroupBox"))
        self.gridLayout_7 = QtGui.QGridLayout(self.mBackgroundGroupBox)
        self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
        self.label_4 = QtGui.QLabel(self.mBackgroundGroupBox)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.gridLayout_7.addWidget(self.label_4, 0, 0, 1, 1)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.mBackgroundColorButton = QgsColorButtonV2(
            self.mBackgroundGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mBackgroundColorButton.sizePolicy().hasHeightForWidth())
        self.mBackgroundColorButton.setSizePolicy(sizePolicy)
        self.mBackgroundColorButton.setMinimumSize(QtCore.QSize(120, 0))
        self.mBackgroundColorButton.setMaximumSize(QtCore.QSize(120, 16777215))
        self.mBackgroundColorButton.setText(_fromUtf8(""))
        self.mBackgroundColorButton.setObjectName(
            _fromUtf8("mBackgroundColorButton"))
        self.horizontalLayout_5.addWidget(self.mBackgroundColorButton)
        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem2)
        self.gridLayout_7.addLayout(self.horizontalLayout_5, 0, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.mBackgroundGroupBox)
        self.groupBox = QgsCollapsibleGroupBoxBasic(self)
        self.groupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.groupBox.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.groupBox.setProperty("collapsed", True)
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.gridLayout_8 = QtGui.QGridLayout(self.groupBox)
        self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
        self.mItemIdLabel = QtGui.QLabel(self.groupBox)
        self.mItemIdLabel.setObjectName(_fromUtf8("mItemIdLabel"))
        self.gridLayout_8.addWidget(self.mItemIdLabel, 0, 0, 1, 1)
        self.mItemIdLineEdit = QtGui.QLineEdit(self.groupBox)
        self.mItemIdLineEdit.setObjectName(_fromUtf8("mItemIdLineEdit"))
        self.gridLayout_8.addWidget(self.mItemIdLineEdit, 0, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.groupBox)
        self.groupRendering = QgsCollapsibleGroupBoxBasic(self)
        self.groupRendering.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.groupRendering.setProperty("collapsed", True)
        self.groupRendering.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.groupRendering.setObjectName(_fromUtf8("groupRendering"))
        self.gridLayout_4 = QtGui.QGridLayout(self.groupRendering)
        self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
        self.labelBlendMode = QtGui.QLabel(self.groupRendering)
        self.labelBlendMode.setObjectName(_fromUtf8("labelBlendMode"))
        self.gridLayout_4.addWidget(self.labelBlendMode, 0, 0, 1, 1)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.mBlendModeCombo = QgsBlendModeComboBox(self.groupRendering)
        self.mBlendModeCombo.setObjectName(_fromUtf8("mBlendModeCombo"))
        self.horizontalLayout_3.addWidget(self.mBlendModeCombo)
        self.mBlendModeDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mBlendModeDDBtn.setObjectName(_fromUtf8("mBlendModeDDBtn"))
        self.horizontalLayout_3.addWidget(self.mBlendModeDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout_3, 0, 1, 1, 1)
        self.labelTransparency = QtGui.QLabel(self.groupRendering)
        self.labelTransparency.setObjectName(_fromUtf8("labelTransparency"))
        self.gridLayout_4.addWidget(self.labelTransparency, 1, 0, 1, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.mTransparencySlider = QtGui.QSlider(self.groupRendering)
        self.mTransparencySlider.setMaximum(100)
        self.mTransparencySlider.setOrientation(QtCore.Qt.Horizontal)
        self.mTransparencySlider.setObjectName(
            _fromUtf8("mTransparencySlider"))
        self.horizontalLayout_2.addWidget(self.mTransparencySlider)
        self.mTransparencySpnBx = QgsSpinBox(self.groupRendering)
        self.mTransparencySpnBx.setMinimumSize(QtCore.QSize(80, 25))
        self.mTransparencySpnBx.setMaximum(100)
        self.mTransparencySpnBx.setObjectName(_fromUtf8("mTransparencySpnBx"))
        self.horizontalLayout_2.addWidget(self.mTransparencySpnBx)
        self.mTransparencyDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mTransparencyDDBtn.setObjectName(_fromUtf8("mTransparencyDDBtn"))
        self.horizontalLayout_2.addWidget(self.mTransparencyDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout_2, 1, 1, 1, 1)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.mExcludeFromPrintsCheckBox = QtGui.QCheckBox(self.groupRendering)
        self.mExcludeFromPrintsCheckBox.setObjectName(
            _fromUtf8("mExcludeFromPrintsCheckBox"))
        self.horizontalLayout.addWidget(self.mExcludeFromPrintsCheckBox)
        self.mExcludePrintsDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mExcludePrintsDDBtn.setObjectName(
            _fromUtf8("mExcludePrintsDDBtn"))
        self.horizontalLayout.addWidget(self.mExcludePrintsDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout, 2, 0, 1, 2)
        self.verticalLayout_2.addWidget(self.groupRendering)
        self.groupBox_3 = QgsCollapsibleGroupBox(self)
        self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
        self.verticalLayout_4 = QtGui.QVBoxLayout(self.groupBox_3)
        self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
        self.mVariableEditor = QgsVariableEditorWidget(self.groupBox_3)
        self.mVariableEditor.setMinimumSize(QtCore.QSize(0, 200))
        self.mVariableEditor.setObjectName(_fromUtf8("mVariableEditor"))
        self.verticalLayout_4.addWidget(self.mVariableEditor)
        self.verticalLayout_2.addWidget(self.groupBox_3)
        spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
                                        QtGui.QSizePolicy.MinimumExpanding)
        self.verticalLayout_2.addItem(spacerItem3)
        self.mOutlineWidthLabel.setBuddy(self.mOutlineWidthSpinBox)

        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setTabOrder(self.mGeneralOptionsGroupBox, self.mPageSpinBox)
        self.setTabOrder(self.mPageSpinBox, self.mXPosSpin)
        self.setTabOrder(self.mXPosSpin, self.mXPositionDDBtn)
        self.setTabOrder(self.mXPositionDDBtn, self.mYPosSpin)
        self.setTabOrder(self.mYPosSpin, self.mYPositionDDBtn)
        self.setTabOrder(self.mYPositionDDBtn, self.mWidthSpin)
        self.setTabOrder(self.mWidthSpin, self.mWidthDDBtn)
        self.setTabOrder(self.mWidthDDBtn, self.mHeightSpin)
        self.setTabOrder(self.mHeightSpin, self.mHeightDDBtn)
        self.setTabOrder(self.mHeightDDBtn, self.mUpperLeftCheckBox)
        self.setTabOrder(self.mUpperLeftCheckBox, self.mUpperMiddleCheckBox)
        self.setTabOrder(self.mUpperMiddleCheckBox, self.mUpperRightCheckBox)
        self.setTabOrder(self.mUpperRightCheckBox, self.mMiddleLeftCheckBox)
        self.setTabOrder(self.mMiddleLeftCheckBox, self.mMiddleCheckBox)
        self.setTabOrder(self.mMiddleCheckBox, self.mMiddleRightCheckBox)
        self.setTabOrder(self.mMiddleRightCheckBox, self.mLowerLeftCheckBox)
        self.setTabOrder(self.mLowerLeftCheckBox, self.mLowerMiddleCheckBox)
        self.setTabOrder(self.mLowerMiddleCheckBox, self.mLowerRightCheckBox)
        self.setTabOrder(self.mLowerRightCheckBox, self.mTransformsGroupBox)
        self.setTabOrder(self.mTransformsGroupBox, self.mItemRotationSpinBox)
        self.setTabOrder(self.mItemRotationSpinBox, self.mItemRotationDDBtn)
        self.setTabOrder(self.mItemRotationDDBtn, self.mFrameGroupBox)
        self.setTabOrder(self.mFrameGroupBox, self.mFrameColorButton)
        self.setTabOrder(self.mFrameColorButton, self.mOutlineWidthSpinBox)
        self.setTabOrder(self.mOutlineWidthSpinBox, self.mFrameJoinStyleCombo)
        self.setTabOrder(self.mFrameJoinStyleCombo, self.mBackgroundGroupBox)
        self.setTabOrder(self.mBackgroundGroupBox, self.mBackgroundColorButton)
        self.setTabOrder(self.mBackgroundColorButton, self.groupBox)
        self.setTabOrder(self.groupBox, self.mItemIdLineEdit)
        self.setTabOrder(self.mItemIdLineEdit, self.groupRendering)
        self.setTabOrder(self.groupRendering, self.mBlendModeCombo)
        self.setTabOrder(self.mBlendModeCombo, self.mBlendModeDDBtn)
        self.setTabOrder(self.mBlendModeDDBtn, self.mTransparencySlider)
        self.setTabOrder(self.mTransparencySlider, self.mTransparencySpnBx)
        self.setTabOrder(self.mTransparencySpnBx, self.mTransparencyDDBtn)
        self.setTabOrder(self.mTransparencyDDBtn,
                         self.mExcludeFromPrintsCheckBox)
        self.setTabOrder(self.mExcludeFromPrintsCheckBox,
                         self.mExcludePrintsDDBtn)
        # self.mComposerObject = None
        self.groupBox_3.setVisible(False)
Example #3
0
class Ui_QgsComposerItemWidgetBase(QtGui.QWidget):
    def __init__(self, parent, composerObject):
        QtGui.QWidget.__init__(self, parent)
        self.mComposerObject = composerObject
        self.setObjectName(_fromUtf8("QgsComposerItemWidgetBase"))
        self.resize(290, 847)
        self.verticalLayout_2 = QtGui.QVBoxLayout(self)
        self.verticalLayout_2.setMargin(0)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.mGeneralOptionsGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mGeneralOptionsGroupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.mGeneralOptionsGroupBox.setProperty("syncGroup",
                                                 _fromUtf8("composeritem"))
        self.mGeneralOptionsGroupBox.setProperty("collapsed", True)
        self.mGeneralOptionsGroupBox.setObjectName(
            _fromUtf8("mGeneralOptionsGroupBox"))
        self.verticalLayout = QtGui.QVBoxLayout(self.mGeneralOptionsGroupBox)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.gridLayout_3 = QtGui.QGridLayout()
        self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
        self.mWidthLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mWidthLabel.setObjectName(_fromUtf8("mWidthLabel"))
        self.gridLayout_3.addWidget(self.mWidthLabel, 3, 0, 1, 1)
        self.mXLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mXLabel.setObjectName(_fromUtf8("mXLabel"))
        self.gridLayout_3.addWidget(self.mXLabel, 1, 0, 1, 1)
        self.mHeightLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mHeightLabel.setObjectName(_fromUtf8("mHeightLabel"))
        self.gridLayout_3.addWidget(self.mHeightLabel, 4, 0, 1, 1)
        self.mYLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mYLabel.setObjectName(_fromUtf8("mYLabel"))
        self.gridLayout_3.addWidget(self.mYLabel, 2, 0, 1, 1)
        self.mPageLabel = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.mPageLabel.setObjectName(_fromUtf8("mPageLabel"))
        self.gridLayout_3.addWidget(self.mPageLabel, 0, 0, 1, 1)
        self.mXPositionDDBtn = QgsDataDefinedButton(
            self.mGeneralOptionsGroupBox)
        self.mXPositionDDBtn.setObjectName(_fromUtf8("mXPositionDDBtn"))
        self.gridLayout_3.addWidget(self.mXPositionDDBtn, 1, 3, 1, 1)
        self.mYPositionDDBtn = QgsDataDefinedButton(
            self.mGeneralOptionsGroupBox)
        self.mYPositionDDBtn.setObjectName(_fromUtf8("mYPositionDDBtn"))
        self.gridLayout_3.addWidget(self.mYPositionDDBtn, 2, 3, 1, 1)
        self.mWidthDDBtn = QgsDataDefinedButton(self.mGeneralOptionsGroupBox)
        self.mWidthDDBtn.setObjectName(_fromUtf8("mWidthDDBtn"))
        self.gridLayout_3.addWidget(self.mWidthDDBtn, 3, 3, 1, 1)
        self.mHeightDDBtn = QgsDataDefinedButton(self.mGeneralOptionsGroupBox)
        self.mHeightDDBtn.setObjectName(_fromUtf8("mHeightDDBtn"))
        self.gridLayout_3.addWidget(self.mHeightDDBtn, 4, 3, 1, 1)
        self.mPageSpinBox = QgsSpinBox(self.mGeneralOptionsGroupBox)
        self.mPageSpinBox.setMinimum(1)
        self.mPageSpinBox.setProperty("showClearButton", False)
        self.mPageSpinBox.setObjectName(_fromUtf8("mPageSpinBox"))
        self.gridLayout_3.addWidget(self.mPageSpinBox, 0, 1, 1, 3)
        self.mWidthSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mWidthSpin.setDecimals(3)
        self.mWidthSpin.setMaximum(9999999.0)
        self.mWidthSpin.setProperty("showClearButton", False)
        self.mWidthSpin.setObjectName(_fromUtf8("mWidthSpin"))
        self.gridLayout_3.addWidget(self.mWidthSpin, 3, 1, 1, 2)
        self.mHeightSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mHeightSpin.setDecimals(3)
        self.mHeightSpin.setMaximum(9999999.0)
        self.mHeightSpin.setProperty("showClearButton", False)
        self.mHeightSpin.setObjectName(_fromUtf8("mHeightSpin"))
        self.gridLayout_3.addWidget(self.mHeightSpin, 4, 1, 1, 2)
        self.mYPosSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mYPosSpin.setDecimals(3)
        self.mYPosSpin.setMinimum(-9999999.0)
        self.mYPosSpin.setMaximum(9999999.0)
        self.mYPosSpin.setProperty("showClearButton", False)
        self.mYPosSpin.setObjectName(_fromUtf8("mYPosSpin"))
        self.gridLayout_3.addWidget(self.mYPosSpin, 2, 1, 1, 2)
        self.mXPosSpin = QgsDoubleSpinBox(self.mGeneralOptionsGroupBox)
        self.mXPosSpin.setDecimals(3)
        self.mXPosSpin.setMinimum(-9999999.0)
        self.mXPosSpin.setMaximum(9999999.0)
        self.mXPosSpin.setProperty("showClearButton", False)
        self.mXPosSpin.setObjectName(_fromUtf8("mXPosSpin"))
        self.gridLayout_3.addWidget(self.mXPosSpin, 1, 1, 1, 2)
        self.gridLayout_3.setColumnStretch(1, 1)
        self.gridLayout_3.setColumnStretch(2, 1)
        self.gridLayout_3.setColumnStretch(3, 1)
        self.verticalLayout.addLayout(self.gridLayout_3)
        self.horizontalLayout_7 = QtGui.QHBoxLayout()
        self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7"))
        self.label_2 = QtGui.QLabel(self.mGeneralOptionsGroupBox)
        self.label_2.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft
                                  | QtCore.Qt.AlignVCenter)
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.horizontalLayout_7.addWidget(self.label_2)
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.mUpperMiddleCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mUpperMiddleCheckBox.setText(_fromUtf8(""))
        self.mUpperMiddleCheckBox.setObjectName(
            _fromUtf8("mUpperMiddleCheckBox"))
        self.gridLayout.addWidget(self.mUpperMiddleCheckBox, 0, 1, 1, 1)
        self.mMiddleRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleRightCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleRightCheckBox.setText(_fromUtf8(""))
        self.mMiddleRightCheckBox.setObjectName(
            _fromUtf8("mMiddleRightCheckBox"))
        self.gridLayout.addWidget(self.mMiddleRightCheckBox, 1, 2, 1, 1)
        self.mMiddleCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleCheckBox.setText(_fromUtf8(""))
        self.mMiddleCheckBox.setObjectName(_fromUtf8("mMiddleCheckBox"))
        self.gridLayout.addWidget(self.mMiddleCheckBox, 1, 1, 1, 1)
        self.mUpperRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperRightCheckBox.setSizePolicy(sizePolicy)
        self.mUpperRightCheckBox.setText(_fromUtf8(""))
        self.mUpperRightCheckBox.setObjectName(
            _fromUtf8("mUpperRightCheckBox"))
        self.gridLayout.addWidget(self.mUpperRightCheckBox, 0, 2, 1, 1)
        self.mLowerMiddleCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerMiddleCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerMiddleCheckBox.setSizePolicy(sizePolicy)
        self.mLowerMiddleCheckBox.setText(_fromUtf8(""))
        self.mLowerMiddleCheckBox.setObjectName(
            _fromUtf8("mLowerMiddleCheckBox"))
        self.gridLayout.addWidget(self.mLowerMiddleCheckBox, 2, 1, 1, 1)
        self.mLowerRightCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerRightCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerRightCheckBox.setSizePolicy(sizePolicy)
        self.mLowerRightCheckBox.setText(_fromUtf8(""))
        self.mLowerRightCheckBox.setObjectName(
            _fromUtf8("mLowerRightCheckBox"))
        self.gridLayout.addWidget(self.mLowerRightCheckBox, 2, 2, 1, 1)
        self.mUpperLeftCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mUpperLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mUpperLeftCheckBox.setSizePolicy(sizePolicy)
        self.mUpperLeftCheckBox.setText(_fromUtf8(""))
        self.mUpperLeftCheckBox.setObjectName(_fromUtf8("mUpperLeftCheckBox"))
        self.gridLayout.addWidget(self.mUpperLeftCheckBox, 0, 0, 1, 1)
        self.mLowerLeftCheckBox = QtGui.QCheckBox(self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mLowerLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mLowerLeftCheckBox.setSizePolicy(sizePolicy)
        self.mLowerLeftCheckBox.setText(_fromUtf8(""))
        self.mLowerLeftCheckBox.setObjectName(_fromUtf8("mLowerLeftCheckBox"))
        self.gridLayout.addWidget(self.mLowerLeftCheckBox, 2, 0, 1, 1)
        self.mMiddleLeftCheckBox = QtGui.QCheckBox(
            self.mGeneralOptionsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mMiddleLeftCheckBox.sizePolicy().hasHeightForWidth())
        self.mMiddleLeftCheckBox.setSizePolicy(sizePolicy)
        self.mMiddleLeftCheckBox.setText(_fromUtf8(""))
        self.mMiddleLeftCheckBox.setObjectName(
            _fromUtf8("mMiddleLeftCheckBox"))
        self.gridLayout.addWidget(self.mMiddleLeftCheckBox, 1, 0, 1, 1)
        self.horizontalLayout_7.addLayout(self.gridLayout)
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.verticalLayout.addLayout(self.horizontalLayout_7)
        self.verticalLayout_2.addWidget(self.mGeneralOptionsGroupBox)
        self.mTransformsGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mTransformsGroupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.mTransformsGroupBox.setProperty("syncGroup",
                                             _fromUtf8("composeritem"))
        self.mTransformsGroupBox.setProperty("collapsed", True)
        self.mTransformsGroupBox.setObjectName(
            _fromUtf8("mTransformsGroupBox"))
        self.gridLayout_5 = QtGui.QGridLayout(self.mTransformsGroupBox)
        self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
        self.label = QtGui.QLabel(self.mTransformsGroupBox)
        self.label.setObjectName(_fromUtf8("label"))
        self.gridLayout_5.addWidget(self.label, 0, 0, 1, 1)
        self.horizontalLayout_4 = QtGui.QHBoxLayout()
        self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
        self.mItemRotationSpinBox = QgsDoubleSpinBox(self.mTransformsGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mItemRotationSpinBox.sizePolicy().hasHeightForWidth())
        self.mItemRotationSpinBox.setSizePolicy(sizePolicy)
        self.mItemRotationSpinBox.setMaximum(360.0)
        self.mItemRotationSpinBox.setObjectName(
            _fromUtf8("mItemRotationSpinBox"))
        self.horizontalLayout_4.addWidget(self.mItemRotationSpinBox)
        self.mItemRotationDDBtn = QgsDataDefinedButton(
            self.mTransformsGroupBox)
        self.mItemRotationDDBtn.setObjectName(_fromUtf8("mItemRotationDDBtn"))
        self.horizontalLayout_4.addWidget(self.mItemRotationDDBtn)
        self.gridLayout_5.addLayout(self.horizontalLayout_4, 0, 1, 1, 1)
        self.gridLayout_5.setColumnStretch(1, 1)
        self.verticalLayout_2.addWidget(self.mTransformsGroupBox)
        self.mFrameGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mFrameGroupBox.setCheckable(True)
        self.mFrameGroupBox.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.mFrameGroupBox.setProperty("collapsed", True)
        self.mFrameGroupBox.setObjectName(_fromUtf8("mFrameGroupBox"))
        self.gridLayout_6 = QtGui.QGridLayout(self.mFrameGroupBox)
        self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
        self.label_3 = QtGui.QLabel(self.mFrameGroupBox)
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.gridLayout_6.addWidget(self.label_3, 0, 0, 1, 1)
        self.horizontalLayout_6 = QtGui.QHBoxLayout()
        self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6"))
        self.mFrameColorButton = QgsColorButtonV2(self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mFrameColorButton.sizePolicy().hasHeightForWidth())
        self.mFrameColorButton.setSizePolicy(sizePolicy)
        self.mFrameColorButton.setMinimumSize(QtCore.QSize(120, 0))
        self.mFrameColorButton.setMaximumSize(QtCore.QSize(120, 16777215))
        self.mFrameColorButton.setText(_fromUtf8(""))
        self.mFrameColorButton.setObjectName(_fromUtf8("mFrameColorButton"))
        self.horizontalLayout_6.addWidget(self.mFrameColorButton)
        spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_6.addItem(spacerItem1)
        self.gridLayout_6.addLayout(self.horizontalLayout_6, 0, 1, 1, 1)
        self.mOutlineWidthLabel = QtGui.QLabel(self.mFrameGroupBox)
        self.mOutlineWidthLabel.setWordWrap(True)
        self.mOutlineWidthLabel.setObjectName(_fromUtf8("mOutlineWidthLabel"))
        self.gridLayout_6.addWidget(self.mOutlineWidthLabel, 1, 0, 1, 1)
        self.mOutlineWidthSpinBox = QgsDoubleSpinBox(self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mOutlineWidthSpinBox.sizePolicy().hasHeightForWidth())
        self.mOutlineWidthSpinBox.setSizePolicy(sizePolicy)
        self.mOutlineWidthSpinBox.setSingleStep(0.1)
        self.mOutlineWidthSpinBox.setProperty("showClearButton", False)
        self.mOutlineWidthSpinBox.setObjectName(
            _fromUtf8("mOutlineWidthSpinBox"))
        self.gridLayout_6.addWidget(self.mOutlineWidthSpinBox, 1, 1, 1, 1)
        self.label_8 = QtGui.QLabel(self.mFrameGroupBox)
        self.label_8.setObjectName(_fromUtf8("label_8"))
        self.gridLayout_6.addWidget(self.label_8, 2, 0, 1, 1)
        self.mFrameJoinStyleCombo = QgsPenJoinStyleComboBox(
            self.mFrameGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mFrameJoinStyleCombo.sizePolicy().hasHeightForWidth())
        self.mFrameJoinStyleCombo.setSizePolicy(sizePolicy)
        self.mFrameJoinStyleCombo.setObjectName(
            _fromUtf8("mFrameJoinStyleCombo"))
        self.gridLayout_6.addWidget(self.mFrameJoinStyleCombo, 2, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.mFrameGroupBox)
        self.mBackgroundGroupBox = QgsCollapsibleGroupBoxBasic(self)
        self.mBackgroundGroupBox.setCheckable(True)
        self.mBackgroundGroupBox.setChecked(True)
        self.mBackgroundGroupBox.setProperty("syncGroup",
                                             _fromUtf8("composeritem"))
        self.mBackgroundGroupBox.setProperty("collapsed", True)
        self.mBackgroundGroupBox.setObjectName(
            _fromUtf8("mBackgroundGroupBox"))
        self.gridLayout_7 = QtGui.QGridLayout(self.mBackgroundGroupBox)
        self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
        self.label_4 = QtGui.QLabel(self.mBackgroundGroupBox)
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.gridLayout_7.addWidget(self.label_4, 0, 0, 1, 1)
        self.horizontalLayout_5 = QtGui.QHBoxLayout()
        self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5"))
        self.mBackgroundColorButton = QgsColorButtonV2(
            self.mBackgroundGroupBox)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,
                                       QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.mBackgroundColorButton.sizePolicy().hasHeightForWidth())
        self.mBackgroundColorButton.setSizePolicy(sizePolicy)
        self.mBackgroundColorButton.setMinimumSize(QtCore.QSize(120, 0))
        self.mBackgroundColorButton.setMaximumSize(QtCore.QSize(120, 16777215))
        self.mBackgroundColorButton.setText(_fromUtf8(""))
        self.mBackgroundColorButton.setObjectName(
            _fromUtf8("mBackgroundColorButton"))
        self.horizontalLayout_5.addWidget(self.mBackgroundColorButton)
        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_5.addItem(spacerItem2)
        self.gridLayout_7.addLayout(self.horizontalLayout_5, 0, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.mBackgroundGroupBox)
        self.groupBox = QgsCollapsibleGroupBoxBasic(self)
        self.groupBox.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.groupBox.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.groupBox.setProperty("collapsed", True)
        self.groupBox.setObjectName(_fromUtf8("groupBox"))
        self.gridLayout_8 = QtGui.QGridLayout(self.groupBox)
        self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
        self.mItemIdLabel = QtGui.QLabel(self.groupBox)
        self.mItemIdLabel.setObjectName(_fromUtf8("mItemIdLabel"))
        self.gridLayout_8.addWidget(self.mItemIdLabel, 0, 0, 1, 1)
        self.mItemIdLineEdit = QtGui.QLineEdit(self.groupBox)
        self.mItemIdLineEdit.setObjectName(_fromUtf8("mItemIdLineEdit"))
        self.gridLayout_8.addWidget(self.mItemIdLineEdit, 0, 1, 1, 1)
        self.verticalLayout_2.addWidget(self.groupBox)
        self.groupRendering = QgsCollapsibleGroupBoxBasic(self)
        self.groupRendering.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.groupRendering.setProperty("collapsed", True)
        self.groupRendering.setProperty("syncGroup", _fromUtf8("composeritem"))
        self.groupRendering.setObjectName(_fromUtf8("groupRendering"))
        self.gridLayout_4 = QtGui.QGridLayout(self.groupRendering)
        self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
        self.labelBlendMode = QtGui.QLabel(self.groupRendering)
        self.labelBlendMode.setObjectName(_fromUtf8("labelBlendMode"))
        self.gridLayout_4.addWidget(self.labelBlendMode, 0, 0, 1, 1)
        self.horizontalLayout_3 = QtGui.QHBoxLayout()
        self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
        self.mBlendModeCombo = QgsBlendModeComboBox(self.groupRendering)
        self.mBlendModeCombo.setObjectName(_fromUtf8("mBlendModeCombo"))
        self.horizontalLayout_3.addWidget(self.mBlendModeCombo)
        self.mBlendModeDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mBlendModeDDBtn.setObjectName(_fromUtf8("mBlendModeDDBtn"))
        self.horizontalLayout_3.addWidget(self.mBlendModeDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout_3, 0, 1, 1, 1)
        self.labelTransparency = QtGui.QLabel(self.groupRendering)
        self.labelTransparency.setObjectName(_fromUtf8("labelTransparency"))
        self.gridLayout_4.addWidget(self.labelTransparency, 1, 0, 1, 1)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.mTransparencySlider = QtGui.QSlider(self.groupRendering)
        self.mTransparencySlider.setMaximum(100)
        self.mTransparencySlider.setOrientation(QtCore.Qt.Horizontal)
        self.mTransparencySlider.setObjectName(
            _fromUtf8("mTransparencySlider"))
        self.horizontalLayout_2.addWidget(self.mTransparencySlider)
        self.mTransparencySpnBx = QgsSpinBox(self.groupRendering)
        self.mTransparencySpnBx.setMinimumSize(QtCore.QSize(80, 25))
        self.mTransparencySpnBx.setMaximum(100)
        self.mTransparencySpnBx.setObjectName(_fromUtf8("mTransparencySpnBx"))
        self.horizontalLayout_2.addWidget(self.mTransparencySpnBx)
        self.mTransparencyDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mTransparencyDDBtn.setObjectName(_fromUtf8("mTransparencyDDBtn"))
        self.horizontalLayout_2.addWidget(self.mTransparencyDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout_2, 1, 1, 1, 1)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.mExcludeFromPrintsCheckBox = QtGui.QCheckBox(self.groupRendering)
        self.mExcludeFromPrintsCheckBox.setObjectName(
            _fromUtf8("mExcludeFromPrintsCheckBox"))
        self.horizontalLayout.addWidget(self.mExcludeFromPrintsCheckBox)
        self.mExcludePrintsDDBtn = QgsDataDefinedButton(self.groupRendering)
        self.mExcludePrintsDDBtn.setObjectName(
            _fromUtf8("mExcludePrintsDDBtn"))
        self.horizontalLayout.addWidget(self.mExcludePrintsDDBtn)
        self.gridLayout_4.addLayout(self.horizontalLayout, 2, 0, 1, 2)
        self.verticalLayout_2.addWidget(self.groupRendering)
        self.groupBox_3 = QgsCollapsibleGroupBox(self)
        self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
        self.verticalLayout_4 = QtGui.QVBoxLayout(self.groupBox_3)
        self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
        self.mVariableEditor = QgsVariableEditorWidget(self.groupBox_3)
        self.mVariableEditor.setMinimumSize(QtCore.QSize(0, 200))
        self.mVariableEditor.setObjectName(_fromUtf8("mVariableEditor"))
        self.verticalLayout_4.addWidget(self.mVariableEditor)
        self.verticalLayout_2.addWidget(self.groupBox_3)
        spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
                                        QtGui.QSizePolicy.MinimumExpanding)
        self.verticalLayout_2.addItem(spacerItem3)
        self.mOutlineWidthLabel.setBuddy(self.mOutlineWidthSpinBox)

        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
        self.setTabOrder(self.mGeneralOptionsGroupBox, self.mPageSpinBox)
        self.setTabOrder(self.mPageSpinBox, self.mXPosSpin)
        self.setTabOrder(self.mXPosSpin, self.mXPositionDDBtn)
        self.setTabOrder(self.mXPositionDDBtn, self.mYPosSpin)
        self.setTabOrder(self.mYPosSpin, self.mYPositionDDBtn)
        self.setTabOrder(self.mYPositionDDBtn, self.mWidthSpin)
        self.setTabOrder(self.mWidthSpin, self.mWidthDDBtn)
        self.setTabOrder(self.mWidthDDBtn, self.mHeightSpin)
        self.setTabOrder(self.mHeightSpin, self.mHeightDDBtn)
        self.setTabOrder(self.mHeightDDBtn, self.mUpperLeftCheckBox)
        self.setTabOrder(self.mUpperLeftCheckBox, self.mUpperMiddleCheckBox)
        self.setTabOrder(self.mUpperMiddleCheckBox, self.mUpperRightCheckBox)
        self.setTabOrder(self.mUpperRightCheckBox, self.mMiddleLeftCheckBox)
        self.setTabOrder(self.mMiddleLeftCheckBox, self.mMiddleCheckBox)
        self.setTabOrder(self.mMiddleCheckBox, self.mMiddleRightCheckBox)
        self.setTabOrder(self.mMiddleRightCheckBox, self.mLowerLeftCheckBox)
        self.setTabOrder(self.mLowerLeftCheckBox, self.mLowerMiddleCheckBox)
        self.setTabOrder(self.mLowerMiddleCheckBox, self.mLowerRightCheckBox)
        self.setTabOrder(self.mLowerRightCheckBox, self.mTransformsGroupBox)
        self.setTabOrder(self.mTransformsGroupBox, self.mItemRotationSpinBox)
        self.setTabOrder(self.mItemRotationSpinBox, self.mItemRotationDDBtn)
        self.setTabOrder(self.mItemRotationDDBtn, self.mFrameGroupBox)
        self.setTabOrder(self.mFrameGroupBox, self.mFrameColorButton)
        self.setTabOrder(self.mFrameColorButton, self.mOutlineWidthSpinBox)
        self.setTabOrder(self.mOutlineWidthSpinBox, self.mFrameJoinStyleCombo)
        self.setTabOrder(self.mFrameJoinStyleCombo, self.mBackgroundGroupBox)
        self.setTabOrder(self.mBackgroundGroupBox, self.mBackgroundColorButton)
        self.setTabOrder(self.mBackgroundColorButton, self.groupBox)
        self.setTabOrder(self.groupBox, self.mItemIdLineEdit)
        self.setTabOrder(self.mItemIdLineEdit, self.groupRendering)
        self.setTabOrder(self.groupRendering, self.mBlendModeCombo)
        self.setTabOrder(self.mBlendModeCombo, self.mBlendModeDDBtn)
        self.setTabOrder(self.mBlendModeDDBtn, self.mTransparencySlider)
        self.setTabOrder(self.mTransparencySlider, self.mTransparencySpnBx)
        self.setTabOrder(self.mTransparencySpnBx, self.mTransparencyDDBtn)
        self.setTabOrder(self.mTransparencyDDBtn,
                         self.mExcludeFromPrintsCheckBox)
        self.setTabOrder(self.mExcludeFromPrintsCheckBox,
                         self.mExcludePrintsDDBtn)
        # self.mComposerObject = None
        self.groupBox_3.setVisible(False)

    def retranslateUi(self):
        self.setWindowTitle(
            _translate("QgsComposerItemWidgetBase", "Global Options", None))
        self.mGeneralOptionsGroupBox.setTitle(
            _translate("QgsComposerItemWidgetBase", "Position and size", None))
        self.mWidthLabel.setText(
            _translate("QgsComposerItemWidgetBase", "Width", None))
        self.mXLabel.setText(_translate("QgsComposerItemWidgetBase", "X",
                                        None))
        self.mHeightLabel.setText(
            _translate("QgsComposerItemWidgetBase", "Height", None))
        self.mYLabel.setText(_translate("QgsComposerItemWidgetBase", "Y",
                                        None))
        self.mPageLabel.setText(
            _translate("QgsComposerItemWidgetBase", "Page", None))
        self.mXPositionDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mYPositionDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mWidthDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mHeightDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mWidthSpin.setSuffix(
            _translate("QgsComposerItemWidgetBase", " mm", None))
        self.mHeightSpin.setSuffix(
            _translate("QgsComposerItemWidgetBase", " mm", None))
        self.mYPosSpin.setSuffix(
            _translate("QgsComposerItemWidgetBase", " mm", None))
        self.mXPosSpin.setSuffix(
            _translate("QgsComposerItemWidgetBase", " mm", None))
        self.label_2.setText(
            _translate("QgsComposerItemWidgetBase", "Reference point", None))
        self.mTransformsGroupBox.setTitle(
            _translate("QgsComposerItemWidgetBase", "Rotation", None))
        self.label.setText(
            _translate("QgsComposerItemWidgetBase", "Rotation", None))
        self.mItemRotationSpinBox.setSuffix(
            _translate("QgsComposerItemWidgetBase", " °", None))
        self.mItemRotationDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mFrameGroupBox.setTitle(
            _translate("QgsComposerItemWidgetBase", "Frame", None))
        self.label_3.setText(
            _translate("QgsComposerItemWidgetBase", "Frame color", None))
        self.mOutlineWidthLabel.setText(
            _translate("QgsComposerItemWidgetBase", "Thickness", None))
        self.mOutlineWidthSpinBox.setSuffix(
            _translate("QgsComposerItemWidgetBase", " mm", None))
        self.label_8.setText(
            _translate("QgsComposerItemWidgetBase", "Join style", None))
        self.mBackgroundGroupBox.setTitle(
            _translate("QgsComposerItemWidgetBase", "Background", None))
        self.label_4.setText(
            _translate("QgsComposerItemWidgetBase", "Background color", None))
        self.groupBox.setTitle(
            _translate("QgsComposerItemWidgetBase", "Item ID", None))
        self.mItemIdLabel.setText(
            _translate("QgsComposerItemWidgetBase", "Id", None))
        self.groupRendering.setTitle(
            _translate("QgsComposerItemWidgetBase", "Rendering", None))
        self.labelBlendMode.setText(
            _translate("QgsComposerItemWidgetBase", "Blending mode", None))
        self.mBlendModeDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.labelTransparency.setText(
            _translate("QgsComposerItemWidgetBase", "Transparency", None))
        self.mTransparencyDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.mExcludeFromPrintsCheckBox.setText(
            _translate("QgsComposerItemWidgetBase",
                       "Exclude item from exports", None))
        self.mExcludePrintsDDBtn.setText(
            _translate("QgsComposerItemWidgetBase", "...", None))
        self.groupBox_3.setTitle(
            _translate("QgsComposerItemWidgetBase", "Variables", None))

    def ddPropertyForWidget(self, widget):
        # Q_UNUSED( widget );

        # //base implementation, return no property
        return QgsComposerObject.NoProperty

    def updateDataDefinedProperty(self):
        #match data defined button to item's data defined property

        ddButton = self.sender()
        ddButton._class_ = QgsDataDefinedButton
        if (not isinstance(ddButton, QgsDataDefinedButton)):
            return
        property = self.ddPropertyForWidget(ddButton)
        if (property == QgsComposerObject.NoProperty):
            return

        #set the data defined property and refresh the item
        self.setDataDefinedProperty(ddButton, property)
        self.mComposerObject.refreshDataDefinedProperty(property)

    def setDataDefinedProperty(self, ddBtn, p):
        if (not self.mComposerObject):
            return

        map = ddBtn.definedProperty()
        self.mComposerObject.setDataDefinedProperty(
            p,
            map.value("active").toInt(),
            map.value("useexpr").toInt(), map.value("expression"),
            map.value("field"))

    def atlasComposition(self):
        if (not self.mComposerObject):
            return None
        composition = self.mComposerObject.composition()

        if (not composition):
            return None

        return composition.atlasComposition()

    def atlasCoverageLayer(self):
        atlasMap = self.atlasComposition()

        if (atlasMap and atlasMap.enabled()):
            return atlasMap.coverageLayer()

        return None
# coding: utf-8
from PyQt4.QtGui import QDialog
from qgis.gui import QgsBlendModeComboBox

new_dialog = QDialog()
new_dialog.resize(200, 200)

blend_mode_combo_box = QgsBlendModeComboBox(new_dialog)

enum_composition_mode = [
    'CompositionMode_SourceOver', 'CompositionMode_DestinationOver',
    'CompositionMode_Clear', 'CompositionMode_Source',
    'CompositionMode_Destination', 'CompositionMode_SourceIn',
    'CompositionMode_DestinationIn', 'CompositionMode_SourceOut',
    'CompositionMode_DestinationOut', 'CompositionMode_SourceAtop',
    'CompositionMode_DestinationAtop', 'CompositionMode_Xor',
    'CompositionMode_Plus', 'CompositionMode_Multiply',
    'CompositionMode_Screen', 'CompositionMode_Overlay',
    'CompositionMode_Darken', 'CompositionMode_Lighten',
    'CompositionMode_ColorDodge', 'CompositionMode_ColorBurn',
    'CompositionMode_HardLight', 'CompositionMode_SoftLight',
    'CompositionMode_Difference', 'CompositionMode_Exclusion',
    'RasterOp_SourceOrDestination', 'RasterOp_SourceAndDestination',
    'RasterOp_SourceXorDestination', 'RasterOp_NotSourceAndNotDestination',
    'RasterOp_NotSourceOrNotDestination', 'RasterOp_NotSourceXorDestination',
    'RasterOp_NotSource', 'RasterOp_NotSourceAndDestination',
    'RasterOp_SourceAndNotDestination'
]


def on_blend_mode_changed(index):
class BivariateLegend(object):
    """QGIS Plugin Implementation."""
    def __init__(self, iface):
        """Constructor.

        :param iface: An interface instance that will be passed to this class
            which provides the hook by which you can manipulate the QGIS
            application at run time.
        :type iface: QgsInterface
        """
        # Save reference to the QGIS interface
        self.iface = iface

        # initialize plugin directory
        self.plugin_dir = os.path.dirname(__file__)

        # initialize locale
        locale = QSettings().value('locale/userLocale')[0:2]
        locale_path = os.path.join(self.plugin_dir, 'i18n',
                                   'BivariateLegend_{}.qm'.format(locale))

        if os.path.exists(locale_path):
            self.translator = QTranslator()
            self.translator.load(locale_path)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)

        # Declare instance attributes
        self.actions = []
        self.menu = self.tr(u'&Bivariate legend')
        # TODO: We are going to let the user set this up in a future iteration
        self.toolbar = self.iface.addToolBar(u'BivariateLegend')
        self.toolbar.setObjectName(u'BivariateLegend')

        # print "** INITIALIZING BivariateLegend"

        self.pluginIsActive = False
        self.dockwidget = None

    # noinspection PyMethodMayBeStatic
    def tr(self, message):
        """Get the translation for a string using Qt translation API.

        We implement this ourselves since we do not inherit QObject.

        :param message: String for translation.
        :type message: str, QString

        :returns: Translated version of message.
        :rtype: QString
        """
        # noinspection PyTypeChecker,PyArgumentList,PyCallByClass
        return QCoreApplication.translate('BivariateLegend', message)

    def initGui(self):  # noqa
        """Create the menu entries and toolbar icons inside the QGIS GUI."""
        icon_path = ':/plugins/BivariateLegend/icon.png'
        text = self.tr(u'&Bivariate legend')
        self.action = QAction(QIcon(icon_path), text, self.iface.mainWindow())
        # connect the action to the run method
        self.action.triggered.connect(self.run)
        # Add toolbar button and menu item
        self.iface.addPluginToMenu(text, self.action)
        self.iface.addToolBarIcon(self.action)

    def onClosePlugin(self):  # noqa
        """Cleanup necessary items here when plugin dockwidget is closed."""
        # disconnects
        self.dockwidget.closingPlugin.disconnect(self.onClosePlugin)

        # remove this statement if dockwidget is to remain
        # for reuse if plugin is reopened
        # Commented next statement since it causes QGIS crashe
        # when closing the docked window:
        # self.dockwidget = None

        self.pluginIsActive = False

    def unload(self):
        """Remove the plugin menu item and icon from QGIS GUI."""
        self.iface.removePluginMenu(self.tr(u'&Bivariate legend'), self.action)
        self.iface.removeToolBarIcon(self.action)
        # remove the toolbar
        del self.toolbar

    @staticmethod
    def generate_image_for_colors(colors,
                                  width,
                                  height,
                                  square_size,
                                  reverse=False):
        """
        Generate intermediate legend image for one layer.

        The input are a list of QColor, the height, the width
        and reverse for color ordering (x or y)
        """
        origin_x = 0
        origin_y = 0
        w, h = width * square_size, height * square_size
        img = QImage(w + 1, h + 1, QImage.Format_ARGB32)
        # TODO: Manage border when pen color
        # img = QImage(w + 1, h + 1, QImage.Format_ARGB32)

        qp = QPainter()
        qp.begin(img)

        for index1, val1 in enumerate(colors):
            for index in range(h):

                qp.setBrush(QColor(*val1))
                qp.setPen(Qt.NoPen)

                if reverse:
                    qp.drawRect(origin_x + index1 * square_size,
                                origin_y + index * square_size,
                                origin_x + (index1 + 1) * square_size,
                                origin_y + (index + 1) * square_size)
                else:
                    qp.drawRect(origin_x + index * square_size,
                                origin_y + index1 * square_size,
                                origin_x + (index + 1) * square_size,
                                origin_y + (index1 + 1) * square_size)

        qp.end()
        return img

    @staticmethod
    def generate_border(width, height, square_size):
        """
        Generate intermediate legend image for one layer.

        The input are a list of QColor, the height, the width
        and reverse for color ordering (x or y)
        """
        origin_x = 0
        origin_y = 0
        w1, h1 = width * square_size, height * square_size
        img = QImage(w1 + 1, h1 + 1, QImage.Format_ARGB32)

        qp1 = QPainter()
        qp1.begin(img)

        for index1 in range(w1):
            for index in range(h1):
                qp1.setBrush(Qt.NoBrush)
                qp1.setPen(Qt.red)
                qp1.drawRect(origin_x + index * square_size,
                             origin_y + index1 * square_size,
                             origin_x + (index + 1) * square_size,
                             origin_y + (index1 + 1) * square_size)

        qp1.end()
        return img

    @staticmethod
    def get_colors_from_layer(layer, reverse=False):
        """Extract colors from vector layer styles."""
        colors_layer = []
        symbols_layer = layer.renderer().symbols(renderContext)
        if reverse:
            symbols_layer = reversed(symbols_layer)
        for sym in symbols_layer:
            colors_layer.append(
                [sym.color().red(),
                 sym.color().green(),
                 sym.color().blue()])
        return colors_layer

    def export_legend(self):
        """Export legend to image."""
        if (self.image_output is not None):
            filename = QFileDialog(
                filter='JPG and PNG files (*.jpeg *.jpg *.png)'
            ).getSaveFileName()
            if filename and isinstance(filename, tuple):
                self.image_output.save(filename[0], 'PNG')

    def square_width_changed(self, int_val):
        """Change square size for a cell."""
        self.square_width_cell = int_val

    def update_reverse_layer_top_colors(self, state):
        """Reverse color ordering for top layer."""
        if (state == Qt.Unchecked):
            self.reverse_layer_top_colors = False
        else:
            self.reverse_layer_top_colors = True

    def update_reverse_layer_bottom_colors(self, state):
        """Reverse color ordering for bottom layer."""
        if (state == Qt.Unchecked):
            self.reverse_layer_bottom_colors = False
        else:
            self.reverse_layer_bottom_colors = True

    def update_invert_axis(self, state):
        """Update if you want to rotate axis x and y."""
        if (state == Qt.Unchecked):
            self.invert_axis = False
        else:
            self.invert_axis = True

    def assign_blend_mode(self, index):
        """Assign blend mode."""
        # See enum QPainter.CompositionMode for correspondance
        enum_composition_mode = [
            'CompositionMode_SourceOver', 'CompositionMode_DestinationOver',
            'CompositionMode_Clear', 'CompositionMode_Source',
            'CompositionMode_Destination', 'CompositionMode_SourceIn',
            'CompositionMode_DestinationIn', 'CompositionMode_SourceOut',
            'CompositionMode_DestinationOut', 'CompositionMode_SourceAtop',
            'CompositionMode_DestinationAtop', 'CompositionMode_Xor',
            'CompositionMode_Plus', 'CompositionMode_Multiply',
            'CompositionMode_Screen', 'CompositionMode_Overlay',
            'CompositionMode_Darken', 'CompositionMode_Lighten',
            'CompositionMode_ColorDodge', 'CompositionMode_ColorBurn',
            'CompositionMode_HardLight', 'CompositionMode_SoftLight',
            'CompositionMode_Difference', 'CompositionMode_Exclusion',
            'RasterOp_SourceOrDestination', 'RasterOp_SourceAndDestination',
            'RasterOp_SourceXorDestination',
            'RasterOp_NotSourceAndNotDestination',
            'RasterOp_NotSourceOrNotDestination',
            'RasterOp_NotSourceXorDestination', 'RasterOp_NotSource',
            'RasterOp_NotSourceAndDestination',
            'RasterOp_SourceAndNotDestination'
        ]
        self.blend_mode = getattr(
            QPainter,
            enum_composition_mode[self.blend_mode_combo_box.blendMode()])
        # fix_print_with_import
        print(enum_composition_mode[self.blend_mode_combo_box.blendMode()])

    def add_blend_mode_combobox(self):
        """Add blend mode combobox."""
        self.blend_mode_combo_box = QgsBlendModeComboBox()
        # Default value
        self.blend_mode = QPainter.CompositionMode_Multiply
        self.blend_mode_combo_box.setBlendMode(self.blend_mode)
        blend_mode_combo_box = self.blend_mode_combo_box

        # Signal inherited from QComboBox
        blend_mode_combo_box.currentIndexChanged.connect(
            self.assign_blend_mode)
        # Dirty insertion in the existing Qt Designer generated UI
        self.dockwidget.children()[-1].children()[0].layout().insertWidget(
            1, self.blend_mode_combo_box)

    def generate_image(self):
        """Generate image."""
        l_top = self.dockwidget.map_layer_combobox_1.currentLayer()
        l_bottom = self.dockwidget.map_layer_combobox_2.currentLayer()

        # TODO: QgsRuleBasedRenderer to manage later
        # TODO: Filter based on renderer type
        if (l_top.id() != l_bottom.id()):

            colors_layer_top = self.get_colors_from_layer(
                l_top, self.reverse_layer_top_colors)
            colors_layer_bottom = self.get_colors_from_layer(
                l_bottom, self.reverse_layer_bottom_colors)

            # Set default values
            len_color_layer_top = len(colors_layer_top)
            len_color_layer_bottom = len(colors_layer_bottom)

            # Draw image on top
            img_top = self.generate_image_for_colors(colors_layer_top,
                                                     len_color_layer_bottom,
                                                     len_color_layer_top,
                                                     self.square_width_cell,
                                                     reverse=False)
            img_bottom = self.generate_image_for_colors(colors_layer_bottom,
                                                        len_color_layer_bottom,
                                                        len_color_layer_top,
                                                        self.square_width_cell,
                                                        reverse=True)

            # Create a new painter to merge images
            painter = QPainter()
            # Declare transform function to rotate axis to switch x and y
            trans = QTransform()

            # Start from first image
            painter.begin(img_top)
            # Apply blending/composition
            painter.setCompositionMode(self.blend_mode)
            # TODO: Manage border when pen color
            painter.drawImage(0, 0, img_bottom)
            painter.end()

            # Rotate if necessary
            if self.invert_axis:
                trans = QTransform()
                trans.rotate(90)
                img_top = img_top.transformed(trans)

            # Reuse end image and display it in an UI overview
            item = QPixmap.fromImage(img_top)
            scene = QGraphicsScene()
            scene.addPixmap(item)
            self.dockwidget.graphic_preview.setScene(scene)
            # Keep reference to image to ease image export
            self.image_output = img_top
        else:
            self.iface.messageBar().pushMessage("Information",
                                                """Choose two different layers.
                Otherwise, no image overview will be generated.
                """,
                                                level=Qgis.Info)

    def run(self):
        """Run method that loads and starts the plugin."""
        if not self.pluginIsActive:
            self.pluginIsActive = True
            # dockwidget may not exist if:
            #    first run of plugin
            #    removed on close (see self.onClosePlugin method)
            if self.dockwidget is None:
                # Create the dockwidget (after translation) and keep reference
                self.dockwidget = BivariateLegendDockWidget()

            # Set default square cell
            self.square_width_cell = 20
            self.dockwidget.square_width_cell.setValue(self.square_width_cell)
            # Connect to listen to square cell value from SpinBox changed
            self.dockwidget.square_width_cell.valueChanged.connect(
                self.square_width_changed)

            # Set default value for color ordering
            self.reverse_layer_top_colors = False
            self.reverse_layer_bottom_colors = False

            # Reverse colors order for each layer
            self.dockwidget.checkbox_layer_1.stateChanged.connect(
                self.update_reverse_layer_top_colors)
            self.dockwidget.checkbox_layer_2.stateChanged.connect(
                self.update_reverse_layer_bottom_colors)

            # Rotate to invert X and Y axis
            self.invert_axis = False
            self.dockwidget.invert_axis.stateChanged.connect(
                self.update_invert_axis)

            self.dockwidget.graphic_preview.setStyleSheet(
                "background-color: transparent;")

            # Restrict available layers to Polygon in layers combobox
            self.dockwidget.map_layer_combobox_1.setFilters(
                QgsMapLayerProxyModel.PolygonLayer)
            self.dockwidget.map_layer_combobox_2.setFilters(
                QgsMapLayerProxyModel.PolygonLayer)

            # Add blend combobox and listen to event
            if not hasattr(self, 'blend_mode_combo_box'):
                self.add_blend_mode_combobox()

            # Connect to_generate_image
            self.dockwidget.generate_legend.clicked.connect(
                self.generate_image)
            # Connect to export image
            self.dockwidget.export_legend.clicked.connect(self.export_legend)

            # connect to provide cleanup on closing of dockwidget
            self.dockwidget.closingPlugin.connect(self.onClosePlugin)

            # show the dockwidget
            # TODO: fix to allow choice of dock location
            self.iface.addDockWidget(Qt.RightDockWidgetArea, self.dockwidget)
            self.dockwidget.show()
 def __init__(self, parent=None):
     # Initialize the QgsBlendModeComboBoxWithCustomSignal as a QgsBlendModeComboBox
     QgsBlendModeComboBox.__init__(self, parent)
     self.currentIndexChanged.connect(self._onBlendChanged)