Hooked up rect size controls in object editor.

This commit is contained in:
Jim Evins
2015-08-19 14:49:02 -04:00
parent c4ceb8c14d
commit 0834d158ed
4 changed files with 78 additions and 37 deletions
+6 -15
View File
@@ -23,6 +23,7 @@
#include <QTransform>
#include <QFont>
#include <algorithm>
#include <cmath>
#include <QtDebug>
#include "ColorNode.h"
@@ -171,7 +172,7 @@ namespace glabels
if ( mW != value )
{
mW = value;
emit moved();
emit changed();
}
}
@@ -193,7 +194,7 @@ namespace glabels
if ( mH != value )
{
mH = value;
emit moved();
emit changed();
}
}
@@ -778,23 +779,13 @@ namespace glabels
///
void LabelModelObject::setSizeHonorAspect( double w, double h )
{
double aspectRatio = mH / mW;
if ( h > (w * aspectRatio) )
if ( fabs(w - mW) > fabs(h - mH) )
{
h = w * aspectRatio;
setWHonorAspect( w );
}
else
{
w = h / aspectRatio;
}
if ( ( mW != w ) || ( mH != h ) )
{
mW = w;
mH = h;
emit changed();
setHHonorAspect( h );
}
}
+53 -2
View File
@@ -25,6 +25,7 @@
#include "LabelModelObject.h"
#include "LabelModelBoxObject.h"
#include <cmath>
#include <QtDebug>
@@ -99,14 +100,32 @@ namespace glabels
}
void ObjectEditor::loadRectSizePage()
{
if ( mObject )
{
mBlocked = true;
sizeWSpin->setValue( mObject->w() );
sizeHSpin->setValue( mObject->h() );
mBlocked = false;
}
}
void ObjectEditor::onLabelSizeChanged()
{
if ( mModel )
{
mBlocked = true;
posXSpin->setRange( -mModel->w(), 2*mModel->w() );
posYSpin->setRange( -mModel->h(), 2*mModel->h() );
double whMax = std::max( mModel->w(), mModel->h() );
posXSpin->setRange( -whMax, 2*whMax );
posYSpin->setRange( -whMax, 2*whMax );
sizeWSpin->setRange( 0, 2*whMax );
sizeHSpin->setRange( 0, 2*whMax );
mBlocked = false;
}
@@ -141,6 +160,7 @@ namespace glabels
loadLineFillPage();
loadPositionPage();
loadRectSizePage();
setEnabled( true );
}
@@ -167,6 +187,8 @@ namespace glabels
{
if ( !mBlocked )
{
loadLineFillPage();
loadRectSizePage();
}
}
@@ -220,9 +242,38 @@ namespace glabels
}
void ObjectEditor::onRectSizeControlsChanged()
{
if ( !mBlocked )
{
mBlocked = true;
if ( sizeAspectCheck->isChecked() )
{
mObject->setSizeHonorAspect( sizeWSpin->value(), sizeHSpin->value() );
sizeWSpin->setValue( mObject->w() );
sizeHSpin->setValue( mObject->h() );
}
else
{
mObject->setSize( sizeWSpin->value(), sizeHSpin->value() );
}
mBlocked = false;
}
}
void ObjectEditor::onChanged()
{
if ( !mBlocked )
{
mBlocked = true;
qDebug() << "Form changed.";
mBlocked = false;
}
}
}
+2
View File
@@ -58,6 +58,7 @@ namespace glabels
void hidePages();
void loadLineFillPage();
void loadPositionPage();
void loadRectSizePage();
/////////////////////////////////
@@ -71,6 +72,7 @@ namespace glabels
void onLineControlsChanged();
void onFillControlsChanged();
void onPositionControlsChanged();
void onRectSizeControlsChanged();
void onChanged();
+15 -18
View File
@@ -1100,6 +1100,18 @@
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QCheckBox" name="sizeAspectCheck">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>132</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Lock aspect ratio</string>
</property>
@@ -1887,7 +1899,7 @@
<sender>sizeWSpin</sender>
<signal>valueChanged(double)</signal>
<receiver>ObjectEditor</receiver>
<slot>onChanged()</slot>
<slot>onRectSizeControlsChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>135</x>
@@ -1903,7 +1915,7 @@
<sender>sizeHSpin</sender>
<signal>valueChanged(double)</signal>
<receiver>ObjectEditor</receiver>
<slot>onChanged()</slot>
<slot>onRectSizeControlsChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>98</x>
@@ -1915,22 +1927,6 @@
</hint>
</hints>
</connection>
<connection>
<sender>sizeAspectCheck</sender>
<signal>toggled(bool)</signal>
<receiver>ObjectEditor</receiver>
<slot>onChanged()</slot>
<hints>
<hint type="sourcelabel">
<x>191</x>
<y>293</y>
</hint>
<hint type="destinationlabel">
<x>395</x>
<y>275</y>
</hint>
</hints>
</connection>
<connection>
<sender>sizeResetImageButton</sender>
<signal>clicked()</signal>
@@ -2066,5 +2062,6 @@
<slot>onLineControlsChanged()</slot>
<slot>onFillControlsChanged()</slot>
<slot>onPositionControlsChanged()</slot>
<slot>onRectSizeControlsChanged()</slot>
</slots>
</ui>