Skip to content

Commit

Permalink
Handle position and size with units and ratio lock in item properties
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 7, 2017
1 parent aebe5a4 commit 1c735d5
Show file tree
Hide file tree
Showing 7 changed files with 420 additions and 393 deletions.
1 change: 1 addition & 0 deletions python/core/layout/qgslayoutitem.sip
Expand Up @@ -53,6 +53,7 @@ class QgsLayoutItem : QgsLayoutObject, QGraphicsRectItem, QgsLayoutUndoObjectInt
enum UndoCommand enum UndoCommand
{ {
UndoIncrementalMove, UndoIncrementalMove,
UndoIncrementalResize,
UndoStrokeColor, UndoStrokeColor,
UndoStrokeWidth, UndoStrokeWidth,
UndoBackgroundColor, UndoBackgroundColor,
Expand Down
1 change: 1 addition & 0 deletions src/core/layout/qgslayoutitem.h
Expand Up @@ -84,6 +84,7 @@ class CORE_EXPORT QgsLayoutItem : public QgsLayoutObject, public QGraphicsRectIt
enum UndoCommand enum UndoCommand
{ {
UndoIncrementalMove = 1, //!< Layout item incremental movement, e.g. as a result of a keypress UndoIncrementalMove = 1, //!< Layout item incremental movement, e.g. as a result of a keypress
UndoIncrementalResize, //!< Incremental resize
UndoStrokeColor, //!< Stroke color adjustment UndoStrokeColor, //!< Stroke color adjustment
UndoStrokeWidth, //!< Stroke width adjustment UndoStrokeWidth, //!< Stroke width adjustment
UndoBackgroundColor, //!< Background color adjustment UndoBackgroundColor, //!< Background color adjustment
Expand Down
367 changes: 172 additions & 195 deletions src/gui/layout/qgslayoutitemwidget.cpp

Large diffs are not rendered by default.

24 changes: 14 additions & 10 deletions src/gui/layout/qgslayoutitemwidget.h
Expand Up @@ -206,18 +206,20 @@ class GUI_EXPORT QgsLayoutItemPropertiesWidget: public QWidget, private Ui::QgsL
void mPageSpinBox_valueChanged( int ); void mPageSpinBox_valueChanged( int );
void mXPosSpin_valueChanged( double ); void mXPosSpin_valueChanged( double );
void mYPosSpin_valueChanged( double ); void mYPosSpin_valueChanged( double );
void positionUnitsChanged( QgsUnitTypes::LayoutUnit unit );
void mWidthSpin_valueChanged( double ); void mWidthSpin_valueChanged( double );
void mHeightSpin_valueChanged( double ); void mHeightSpin_valueChanged( double );

void sizeUnitsChanged( QgsUnitTypes::LayoutUnit unit );
void mUpperLeftCheckBox_stateChanged( int state );
void mUpperMiddleCheckBox_stateChanged( int state ); void mUpperLeftCheckBox_stateChanged( bool state );
void mUpperRightCheckBox_stateChanged( int state ); void mUpperMiddleCheckBox_stateChanged( bool state );
void mMiddleLeftCheckBox_stateChanged( int state ); void mUpperRightCheckBox_stateChanged( bool state );
void mMiddleCheckBox_stateChanged( int state ); void mMiddleLeftCheckBox_stateChanged( bool state );
void mMiddleRightCheckBox_stateChanged( int state ); void mMiddleCheckBox_stateChanged( bool state );
void mLowerLeftCheckBox_stateChanged( int state ); void mMiddleRightCheckBox_stateChanged( bool state );
void mLowerMiddleCheckBox_stateChanged( int state ); void mLowerLeftCheckBox_stateChanged( bool state );
void mLowerRightCheckBox_stateChanged( int state ); void mLowerMiddleCheckBox_stateChanged( bool state );
void mLowerRightCheckBox_stateChanged( bool state );


void mBlendModeCombo_currentIndexChanged( int index ); void mBlendModeCombo_currentIndexChanged( int index );
void opacityChanged( double value ); void opacityChanged( double value );
Expand Down Expand Up @@ -247,6 +249,8 @@ class GUI_EXPORT QgsLayoutItemPropertiesWidget: public QWidget, private Ui::QgsL


// void changeItemTransparency( int value ); // void changeItemTransparency( int value );
void changeItemPosition(); void changeItemPosition();
void changeItemReference( QgsLayoutItem::ReferencePoint point );
void changeItemSize();


}; };


Expand Down
54 changes: 27 additions & 27 deletions src/gui/layout/qgslayoutnewitempropertiesdialog.cpp
Expand Up @@ -25,15 +25,15 @@ QgsLayoutItemPropertiesDialog::QgsLayoutItemPropertiesDialog( QWidget *parent, Q


//make button exclusive //make button exclusive
QButtonGroup *buttonGroup = new QButtonGroup( this ); QButtonGroup *buttonGroup = new QButtonGroup( this );
buttonGroup->addButton( mUpperLeftCheckBox ); buttonGroup->addButton( mUpperLeftRadioButton );
buttonGroup->addButton( mUpperMiddleCheckBox ); buttonGroup->addButton( mUpperMiddleRadioButton );
buttonGroup->addButton( mUpperRightCheckBox ); buttonGroup->addButton( mUpperRightRadioButton );
buttonGroup->addButton( mMiddleLeftCheckBox ); buttonGroup->addButton( mMiddleLeftRadioButton );
buttonGroup->addButton( mMiddleCheckBox ); buttonGroup->addButton( mMiddleRadioButton );
buttonGroup->addButton( mMiddleRightCheckBox ); buttonGroup->addButton( mMiddleRightRadioButton );
buttonGroup->addButton( mLowerLeftCheckBox ); buttonGroup->addButton( mLowerLeftRadioButton );
buttonGroup->addButton( mLowerMiddleCheckBox ); buttonGroup->addButton( mLowerMiddleRadioButton );
buttonGroup->addButton( mLowerRightCheckBox ); buttonGroup->addButton( mLowerRightRadioButton );
buttonGroup->setExclusive( true ); buttonGroup->setExclusive( true );


QgsSettings settings; QgsSettings settings;
Expand Down Expand Up @@ -77,39 +77,39 @@ QgsLayoutSize QgsLayoutItemPropertiesDialog::itemSize() const


QgsLayoutItem::ReferencePoint QgsLayoutItemPropertiesDialog::referencePoint() const QgsLayoutItem::ReferencePoint QgsLayoutItemPropertiesDialog::referencePoint() const
{ {
if ( mUpperLeftCheckBox->checkState() == Qt::Checked ) if ( mUpperLeftRadioButton->isChecked() )
{ {
return QgsLayoutItem::UpperLeft; return QgsLayoutItem::UpperLeft;
} }
else if ( mUpperMiddleCheckBox->checkState() == Qt::Checked ) else if ( mUpperMiddleRadioButton->isChecked() )
{ {
return QgsLayoutItem::UpperMiddle; return QgsLayoutItem::UpperMiddle;
} }
else if ( mUpperRightCheckBox->checkState() == Qt::Checked ) else if ( mUpperRightRadioButton->isChecked() )
{ {
return QgsLayoutItem::UpperRight; return QgsLayoutItem::UpperRight;
} }
else if ( mMiddleLeftCheckBox->checkState() == Qt::Checked ) else if ( mMiddleLeftRadioButton->isChecked() )
{ {
return QgsLayoutItem::MiddleLeft; return QgsLayoutItem::MiddleLeft;
} }
else if ( mMiddleCheckBox->checkState() == Qt::Checked ) else if ( mMiddleRadioButton->isChecked() )
{ {
return QgsLayoutItem::Middle; return QgsLayoutItem::Middle;
} }
else if ( mMiddleRightCheckBox->checkState() == Qt::Checked ) else if ( mMiddleRightRadioButton->isChecked() )
{ {
return QgsLayoutItem::MiddleRight; return QgsLayoutItem::MiddleRight;
} }
else if ( mLowerLeftCheckBox->checkState() == Qt::Checked ) else if ( mLowerLeftRadioButton->isChecked() )
{ {
return QgsLayoutItem::LowerLeft; return QgsLayoutItem::LowerLeft;
} }
else if ( mLowerMiddleCheckBox->checkState() == Qt::Checked ) else if ( mLowerMiddleRadioButton->isChecked() )
{ {
return QgsLayoutItem::LowerMiddle; return QgsLayoutItem::LowerMiddle;
} }
else if ( mLowerRightCheckBox->checkState() == Qt::Checked ) else if ( mLowerRightRadioButton->isChecked() )
{ {
return QgsLayoutItem::LowerRight; return QgsLayoutItem::LowerRight;
} }
Expand All @@ -121,39 +121,39 @@ void QgsLayoutItemPropertiesDialog::setReferencePoint( QgsLayoutItem::ReferenceP
switch ( point ) switch ( point )
{ {
case QgsLayoutItem::UpperLeft: case QgsLayoutItem::UpperLeft:
mUpperLeftCheckBox->setChecked( true ); mUpperLeftRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::UpperMiddle: case QgsLayoutItem::UpperMiddle:
mUpperMiddleCheckBox->setChecked( true ); mUpperMiddleRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::UpperRight: case QgsLayoutItem::UpperRight:
mUpperRightCheckBox->setChecked( true ); mUpperRightRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::MiddleLeft: case QgsLayoutItem::MiddleLeft:
mMiddleLeftCheckBox->setChecked( true ); mMiddleLeftRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::Middle: case QgsLayoutItem::Middle:
mMiddleCheckBox->setChecked( true ); mMiddleRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::MiddleRight: case QgsLayoutItem::MiddleRight:
mMiddleRightCheckBox->setChecked( true ); mMiddleRightRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::LowerLeft: case QgsLayoutItem::LowerLeft:
mLowerLeftCheckBox->setChecked( true ); mLowerLeftRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::LowerMiddle: case QgsLayoutItem::LowerMiddle:
mLowerMiddleCheckBox->setChecked( true ); mLowerMiddleRadioButton->setChecked( true );
break; break;


case QgsLayoutItem::LowerRight: case QgsLayoutItem::LowerRight:
mLowerRightCheckBox->setChecked( true ); mLowerRightRadioButton->setChecked( true );
break; break;
} }
} }
Expand Down

0 comments on commit 1c735d5

Please sign in to comment.