[QGIS Commit] r13938 - in trunk/qgis/src: app/composer core/composer ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Jul 19 15:11:34 EDT 2010


Author: mhugent
Date: 2010-07-19 19:11:34 +0000 (Mon, 19 Jul 2010)
New Revision: 13938

Modified:
   trunk/qgis/src/app/composer/qgscomposerlabelwidget.cpp
   trunk/qgis/src/app/composer/qgscomposerlabelwidget.h
   trunk/qgis/src/core/composer/qgscomposeritem.cpp
   trunk/qgis/src/core/composer/qgscomposeritem.h
   trunk/qgis/src/core/composer/qgscomposerlabel.cpp
   trunk/qgis/src/core/composer/qgscomposerlabel.h
   trunk/qgis/src/ui/qgscomposerlabelwidgetbase.ui
Log:
Apply patch #2868 (adds label alignment) with modifications. Thanks medspx

Modified: trunk/qgis/src/app/composer/qgscomposerlabelwidget.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposerlabelwidget.cpp	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/app/composer/qgscomposerlabelwidget.cpp	2010-07-19 19:11:34 UTC (rev 13938)
@@ -34,6 +34,12 @@
   {
     mTextEdit->setText( mComposerLabel->text() );
     mMarginDoubleSpinBox->setValue( mComposerLabel->margin() );
+    mTopRadioButton->setChecked( mComposerLabel->vAlign() == Qt::AlignTop );
+    mMiddleRadioButton->setChecked( mComposerLabel->vAlign() == Qt::AlignVCenter );
+    mBottomRadioButton->setChecked( mComposerLabel->vAlign() == Qt::AlignBottom );
+    mLeftRadioButton->setChecked( mComposerLabel->hAlign() == Qt::AlignLeft );
+    mCenterRadioButton->setChecked( mComposerLabel->hAlign() == Qt::AlignHCenter );
+    mRightRadioButton->setChecked( mComposerLabel->hAlign() == Qt::AlignRight );
   }
 }
 
@@ -88,3 +94,56 @@
   mComposerLabel->setFontColor( newColor );
 }
 
+void QgsComposerLabelWidget::on_mCenterRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setHAlign( Qt::AlignHCenter );
+    mComposerLabel->update();
+  }
+}
+
+void QgsComposerLabelWidget::on_mRightRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setHAlign( Qt::AlignRight );
+    mComposerLabel->update();
+  }
+}
+
+void QgsComposerLabelWidget::on_mLeftRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setHAlign( Qt::AlignLeft );
+    mComposerLabel->update();
+  }
+}
+
+void QgsComposerLabelWidget::on_mTopRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setVAlign( Qt::AlignTop );
+    mComposerLabel->update();
+  }
+}
+
+void QgsComposerLabelWidget::on_mBottomRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setVAlign( Qt::AlignBottom );
+    mComposerLabel->update();
+  }
+}
+
+void QgsComposerLabelWidget::on_mMiddleRadioButton_clicked()
+{
+  if ( mComposerLabel )
+  {
+    mComposerLabel->setVAlign( Qt::AlignVCenter );
+    mComposerLabel->update();
+  }
+}

Modified: trunk/qgis/src/app/composer/qgscomposerlabelwidget.h
===================================================================
--- trunk/qgis/src/app/composer/qgscomposerlabelwidget.h	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/app/composer/qgscomposerlabelwidget.h	2010-07-19 19:11:34 UTC (rev 13938)
@@ -36,6 +36,12 @@
     void on_mFontButton_clicked();
     void on_mMarginDoubleSpinBox_valueChanged( double d );
     void on_mFontColorButton_clicked();
+    void on_mCenterRadioButton_clicked();
+    void on_mLeftRadioButton_clicked();
+    void on_mRightRadioButton_clicked();
+    void on_mTopRadioButton_clicked();
+    void on_mBottomRadioButton_clicked();
+    void on_mMiddleRadioButton_clicked();
 
   private:
     QgsComposerLabel* mComposerLabel;

Modified: trunk/qgis/src/core/composer/qgscomposeritem.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgscomposeritem.cpp	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/core/composer/qgscomposeritem.cpp	2010-07-19 19:11:34 UTC (rev 13938)
@@ -706,7 +706,7 @@
   p->restore();
 }
 
-void QgsComposerItem::drawText( QPainter* p, const QRectF& rect, const QString& text, const QFont& font ) const
+void QgsComposerItem::drawText( QPainter* p, const QRectF& rect, const QString& text, const QFont& font, Qt::AlignmentFlag halignement, Qt::AlignmentFlag valignment ) const
 {
   QFont textFont = scaledFontPixelSize( font );
 
@@ -717,10 +717,9 @@
   p->setFont( textFont );
   double scaleFactor = 1.0 / FONT_WORKAROUND_SCALE;
   p->scale( scaleFactor, scaleFactor );
-  p->drawText( scaledRect, Qt::AlignLeft | Qt::AlignTop | Qt::TextWordWrap, text );
+  p->drawText( scaledRect, halignement | valignment | Qt::TextWordWrap, text );
   p->restore();
 }
-
 void QgsComposerItem::drawArrowHead( QPainter* p, double x, double y, double angle, double arrowHeadWidth ) const
 {
   if ( !p )

Modified: trunk/qgis/src/core/composer/qgscomposeritem.h
===================================================================
--- trunk/qgis/src/core/composer/qgscomposeritem.h	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/core/composer/qgscomposeritem.h	2010-07-19 19:11:34 UTC (rev 13938)
@@ -143,7 +143,7 @@
     void drawText( QPainter* p, double x, double y, const QString& text, const QFont& font ) const;
 
     /**Like the above, but with a rectangle for multiline text*/
-    void drawText( QPainter* p, const QRectF& rect, const QString& text, const QFont& font ) const;
+    void drawText( QPainter* p, const QRectF& rect, const QString& text, const QFont& font, Qt::AlignmentFlag halignement = Qt::AlignLeft, Qt::AlignmentFlag valignement = Qt::AlignTop ) const;
 
     /**Returns the font width in Millimeters (considers upscaling and downscaling with FONT_WORKAROUND_SCALE*/
     double textWidthMillimeters( const QFont& font, const QString& text ) const;

Modified: trunk/qgis/src/core/composer/qgscomposerlabel.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgscomposerlabel.cpp	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/core/composer/qgscomposerlabel.cpp	2010-07-19 19:11:34 UTC (rev 13938)
@@ -20,7 +20,8 @@
 #include <QDomElement>
 #include <QPainter>
 
-QgsComposerLabel::QgsComposerLabel( QgsComposition *composition ): QgsComposerItem( composition ), mMargin( 1.0 ), mFontColor( QColor( 0, 0, 0 ) )
+QgsComposerLabel::QgsComposerLabel( QgsComposition *composition ): QgsComposerItem( composition ), mMargin( 1.0 ), mFontColor( QColor( 0, 0, 0 ) ), \
+    mHAlignment( Qt::AlignLeft ), mVAlignment( Qt::AlignTop )
 {
   //default font size is 10 point
   mFont.setPointSizeF( 10 );
@@ -49,7 +50,7 @@
                       rect().height() - 2 * penWidth - 2 * mMargin );
 
 
-  drawText( painter, painterRect, displayText(), mFont );
+  drawText( painter, painterRect, displayText(), mFont, mHAlignment, mVAlignment );
 
   drawFrame( painter );
   if ( isSelected() )
@@ -112,6 +113,8 @@
 
 bool QgsComposerLabel::writeXML( QDomElement& elem, QDomDocument & doc ) const
 {
+  QString alignment;
+
   if ( elem.isNull() )
   {
     return false;
@@ -122,7 +125,10 @@
   composerLabelElem.setAttribute( "labelText", mText );
   composerLabelElem.setAttribute( "margin", QString::number( mMargin ) );
 
+  composerLabelElem.setAttribute( "halign", mHAlignment );
+  composerLabelElem.setAttribute( "valign", mVAlignment );
 
+
   //font
   QDomElement labelFontElem = doc.createElement( "LabelFont" );
   labelFontElem.setAttribute( "description", mFont.toString() );
@@ -141,6 +147,8 @@
 
 bool QgsComposerLabel::readXML( const QDomElement& itemElem, const QDomDocument& doc )
 {
+  QString alignment;
+
   if ( itemElem.isNull() )
   {
     return false;
@@ -154,6 +162,12 @@
   //margin
   mMargin = itemElem.attribute( "margin" ).toDouble();
 
+  //Horizontal alignment
+  mHAlignment = ( Qt::AlignmentFlag )( itemElem.attribute( "halign" ).toInt() );
+
+  //Vertical alignment
+  mVAlignment = ( Qt::AlignmentFlag )( itemElem.attribute( "valign" ).toInt() );
+
   //font
   QDomNodeList labelFontList = itemElem.elementsByTagName( "LabelFont" );
   if ( labelFontList.size() > 0 )

Modified: trunk/qgis/src/core/composer/qgscomposerlabel.h
===================================================================
--- trunk/qgis/src/core/composer/qgscomposerlabel.h	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/core/composer/qgscomposerlabel.h	2010-07-19 19:11:34 UTC (rev 13938)
@@ -43,6 +43,10 @@
 
     QFont font() const;
     void setFont( const QFont& f );
+    Qt::AlignmentFlag vAlign() const { return mVAlignment; }
+    Qt::AlignmentFlag hAlign() const { return mHAlignment; }
+    void setHAlign( Qt::AlignmentFlag a ) {mHAlignment = a;}
+    void setVAlign( Qt::AlignmentFlag a ) {mVAlignment = a;}
     double margin() {return mMargin;}
     void setMargin( double m ) {mMargin = m;}
 
@@ -77,6 +81,12 @@
     // Font color
     QColor mFontColor;
 
+    // Horizontal Alignment
+    Qt::AlignmentFlag mHAlignment;
+
+    // Vertical Alignment
+    Qt::AlignmentFlag mVAlignment;
+
     /**Replaces replace '$CURRENT_DATE<(FORMAT)>' with the current date (e.g. $CURRENT_DATE(d 'June' yyyy)*/
     void replaceDateText( QString& text ) const;
 };

Modified: trunk/qgis/src/ui/qgscomposerlabelwidgetbase.ui
===================================================================
--- trunk/qgis/src/ui/qgscomposerlabelwidgetbase.ui	2010-07-19 15:28:46 UTC (rev 13937)
+++ trunk/qgis/src/ui/qgscomposerlabelwidgetbase.ui	2010-07-19 19:11:34 UTC (rev 13938)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>203</width>
+    <width>519</width>
     <height>362</height>
    </rect>
   </property>
@@ -30,8 +30,8 @@
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>185</width>
-        <height>317</height>
+        <width>486</width>
+        <height>320</height>
        </rect>
       </property>
       <attribute name="label">
@@ -65,7 +65,7 @@
          </property>
         </widget>
        </item>
-       <item row="3" column="0">
+       <item row="5" column="0">
         <widget class="QLabel" name="mMarginTextLabel">
          <property name="text">
           <string>Margin (mm)</string>
@@ -75,9 +75,72 @@
          </property>
         </widget>
        </item>
-       <item row="4" column="0">
+       <item row="6" column="0">
         <widget class="QDoubleSpinBox" name="mMarginDoubleSpinBox"/>
        </item>
+       <item row="3" column="0">
+        <widget class="QGroupBox" name="buttonGroup1">
+         <property name="title">
+          <string>Horizontal Alignment:</string>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout">
+          <property name="sizeConstraint">
+           <enum>QLayout::SetMinimumSize</enum>
+          </property>
+          <item>
+           <widget class="QRadioButton" name="mLeftRadioButton">
+            <property name="text">
+             <string>Left</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="mCenterRadioButton">
+            <property name="text">
+             <string>Center</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="mRightRadioButton">
+            <property name="text">
+             <string>Right</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item row="4" column="0">
+        <widget class="QGroupBox" name="buttonGroup2">
+         <property name="title">
+          <string>Vertical Alignment:</string>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout_2">
+          <item>
+           <widget class="QRadioButton" name="mTopRadioButton">
+            <property name="text">
+             <string>Top</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="mMiddleRadioButton">
+            <property name="text">
+             <string>Middle</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="mBottomRadioButton">
+            <property name="text">
+             <string>Bottom</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>



More information about the QGIS-commit mailing list