Start work on porting grid ui

This commit is contained in:
Nyall Dawson 2017-10-23 12:45:42 +10:00
parent 835653bf1b
commit ab4606db25
7 changed files with 2288 additions and 3 deletions

View File

@ -68,6 +68,11 @@ class QgsLayoutItem : QgsLayoutObject, QGraphicsRectItem, QgsLayoutUndoObjectInt
UndoMapRotation,
UndoZoomContent,
UndoOverviewStyle,
UndoGridFramePenColor,
UndoMapGridFrameFill1Color,
UndoMapGridFrameFill2Color,
UndoMapAnnotationDistance,
UndoMapGridAnnotationFontColor,
};
explicit QgsLayoutItem( QgsLayout *layout, bool manageZValue = true );

View File

@ -180,6 +180,7 @@ SET(QGIS_APP_SRCS
layout/qgslayoutitemslistview.cpp
layout/qgslayoutappmenuprovider.cpp
layout/qgslayoutmapwidget.cpp
layout/qgslayoutmapgridwidget.cpp
layout/qgslayoutpagepropertieswidget.cpp
layout/qgslayoutpolygonwidget.cpp
layout/qgslayoutpolylinewidget.cpp
@ -380,6 +381,7 @@ SET (QGIS_APP_MOC_HDRS
layout/qgslayoutguidewidget.h
layout/qgslayoutitemslistview.h
layout/qgslayoutmapwidget.h
layout/qgslayoutmapgridwidget.h
layout/qgslayoutpagepropertieswidget.h
layout/qgslayoutpolygonwidget.h
layout/qgslayoutpolylinewidget.h

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
/***************************************************************************
qgslayoutmapgridwidget.h
----------------------
begin : October 2017
copyright : (C) 2017 by Nyall Dawson
email : nyall dot dawson at gmail dot com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSLAYOUTMAPGRIDWIDGET_H
#define QGSLAYOUTMAPGRIDWIDGET_H
#include "ui_qgslayoutmapgridwidgetbase.h"
#include "qgslayoutitemwidget.h"
#include "qgslayoutitemmapgrid.h"
/**
* \ingroup app
* Input widget for the configuration of QgsLayoutItemMapGrids
* */
class QgsLayoutMapGridWidget: public QgsLayoutItemBaseWidget, private Ui::QgsLayoutMapGridWidgetBase
{
Q_OBJECT
public:
explicit QgsLayoutMapGridWidget( QgsLayoutItemMapGrid *mapGrid, QgsLayoutItemMap *map );
public slots:
void setGridItems();
void mGridLineStyleButton_clicked();
void mGridMarkerStyleButton_clicked();
void mIntervalXSpinBox_editingFinished();
void mIntervalYSpinBox_editingFinished();
void mOffsetXSpinBox_valueChanged( double value );
void mOffsetYSpinBox_valueChanged( double value );
void mCrossWidthSpinBox_valueChanged( double val );
void mFrameWidthSpinBox_valueChanged( double val );
void mFrameStyleComboBox_currentIndexChanged( const QString &text );
void mGridFramePenSizeSpinBox_valueChanged( double d );
void mGridFramePenColorButton_colorChanged( const QColor &newColor );
void mGridFrameFill1ColorButton_colorChanged( const QColor &newColor );
void mGridFrameFill2ColorButton_colorChanged( const QColor &newColor );
void mGridTypeComboBox_currentIndexChanged( const QString &text );
void mMapGridCRSButton_clicked();
void mMapGridUnitComboBox_currentIndexChanged( const QString &text );
void mGridBlendComboBox_currentIndexChanged( int index );
void mCheckGridLeftSide_toggled( bool checked );
void mCheckGridRightSide_toggled( bool checked );
void mCheckGridTopSide_toggled( bool checked );
void mCheckGridBottomSide_toggled( bool checked );
//frame divisions display
void mFrameDivisionsLeftComboBox_currentIndexChanged( int index );
void mFrameDivisionsRightComboBox_currentIndexChanged( int index );
void mFrameDivisionsTopComboBox_currentIndexChanged( int index );
void mFrameDivisionsBottomComboBox_currentIndexChanged( int index );
void mDrawAnnotationGroupBox_toggled( bool state );
void mAnnotationFormatButton_clicked();
//annotation display
void mAnnotationDisplayLeftComboBox_currentIndexChanged( const QString &text );
void mAnnotationDisplayRightComboBox_currentIndexChanged( const QString &text );
void mAnnotationDisplayTopComboBox_currentIndexChanged( const QString &text );
void mAnnotationDisplayBottomComboBox_currentIndexChanged( const QString &text );
//annotation position
void mAnnotationPositionLeftComboBox_currentIndexChanged( const QString &text );
void mAnnotationPositionRightComboBox_currentIndexChanged( const QString &text );
void mAnnotationPositionTopComboBox_currentIndexChanged( const QString &text );
void mAnnotationPositionBottomComboBox_currentIndexChanged( const QString &text );
//annotation direction
void mAnnotationDirectionComboBoxLeft_currentIndexChanged( int index );
void mAnnotationDirectionComboBoxRight_currentIndexChanged( int index );
void mAnnotationDirectionComboBoxTop_currentIndexChanged( int index );
void mAnnotationDirectionComboBoxBottom_currentIndexChanged( int index );
void mAnnotationFormatComboBox_currentIndexChanged( int index );
void mCoordinatePrecisionSpinBox_valueChanged( int value );
void mDistanceToMapFrameSpinBox_valueChanged( double d );
void mAnnotationFontColorButton_colorChanged( const QColor &color );
protected:
//! Sets the current composer map values to the GUI elements
virtual void updateGuiElements();
protected slots:
//! Initializes data defined buttons to current atlas coverage layer
void populateDataDefinedButtons();
private slots:
//! Sets the GUI elements to the values of mPicture
void setGuiElementValues();
void updateGridLineStyleFromWidget();
void cleanUpGridLineStyleSelector( QgsPanelWidget *container );
void updateGridMarkerStyleFromWidget();
void cleanUpGridMarkerStyleSelector( QgsPanelWidget *container );
void annotationFontChanged();
private:
QgsLayoutItemMap *mMap = nullptr;
QgsLayoutItemMapGrid *mMapGrid = nullptr;
//! Blocks / unblocks the signals of all GUI elements
void blockAllSignals( bool b );
void handleChangedFrameDisplay( QgsLayoutItemMapGrid::BorderSide border, const QgsLayoutItemMapGrid::DisplayMode mode );
void handleChangedAnnotationDisplay( QgsLayoutItemMapGrid::BorderSide border, const QString &text );
void handleChangedAnnotationPosition( QgsLayoutItemMapGrid::BorderSide border, const QString &text );
void handleChangedAnnotationDirection( QgsLayoutItemMapGrid::BorderSide border, QgsLayoutItemMapGrid::AnnotationDirection direction );
void insertFrameDisplayEntries( QComboBox *c );
void insertAnnotationDisplayEntries( QComboBox *c );
void insertAnnotationPositionEntries( QComboBox *c );
void insertAnnotationDirectionEntries( QComboBox *c );
void initFrameDisplayBox( QComboBox *c, QgsLayoutItemMapGrid::DisplayMode display );
void initAnnotationDisplayBox( QComboBox *c, QgsLayoutItemMapGrid::DisplayMode display );
void initAnnotationPositionBox( QComboBox *c, QgsLayoutItemMapGrid::AnnotationPosition pos );
void initAnnotationDirectionBox( QComboBox *c, QgsLayoutItemMapGrid::AnnotationDirection dir );
void updateGridLineSymbolMarker();
void updateGridMarkerSymbolMarker();
//! Enables/disables grid frame related controls
void toggleFrameControls( bool frameEnabled, bool frameFillEnabled, bool frameSizeEnabled );
//! Is there some predefined scales, globally or as project's options ?
bool hasPredefinedScales() const;
};
#endif //QGSLAYOUTMAPGRIDWIDGET_H

View File

@ -26,6 +26,7 @@
#include "qgsmapcanvas.h"
#include "qgssymbolselectordialog.h"
#include "qgssymbollayerutils.h"
#include "qgslayoutmapgridwidget.h"
#include "qgsstyle.h"
#include <QMenu>
#include <QMessageBox>
@ -1244,10 +1245,8 @@ void QgsLayoutMapWidget::mGridPropertiesButton_clicked()
return;
}
#if 0 //TODO
QgsLayoutItemMapGridWidget *w = new QgsLayoutItemMapGridWidget( grid, mMapItem );
QgsLayoutMapGridWidget *w = new QgsLayoutMapGridWidget( grid, mMapItem );
openPanel( w );
#endif
}
QListWidgetItem *QgsLayoutMapWidget::addGridListItem( const QString &id, const QString &name )

View File

@ -101,6 +101,11 @@ class CORE_EXPORT QgsLayoutItem : public QgsLayoutObject, public QGraphicsRectIt
UndoMapRotation, //!< Map rotation changed
UndoZoomContent, //!< Item content zoomed
UndoOverviewStyle, //!< Map overview style
UndoGridFramePenColor, //!< Map grid frame pen color
UndoMapGridFrameFill1Color, //!< Map grid frame fill color 1
UndoMapGridFrameFill2Color, //!< Map grid frame fill color 2
UndoMapAnnotationDistance, //!< Map frame annotation distance
UndoMapGridAnnotationFontColor, //!< Map frame annotation color
};
/**

View File

@ -0,0 +1,863 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QgsLayoutMapGridWidgetBase</class>
<widget class="QWidget" name="QgsLayoutMapGridWidgetBase">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>403</width>
<height>734</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Map Options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QgsScrollArea" name="scrollArea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>389</width>
<height>1419</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="mainLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QgsCollapsibleGroupBoxBasic" name="mGridCheckBox">
<property name="title">
<string>Appearance</string>
</property>
<layout class="QGridLayout" name="gridLayout_6" columnstretch="0,0">
<item row="0" column="0">
<widget class="QLabel" name="mGridTypeLabel_2">
<property name="accessibleName">
<string extracomment="Hello translotor"/>
</property>
<property name="text">
<string>Grid type</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="mGridTypeComboBox"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mMapGridCRSLabel">
<property name="text">
<string>CRS</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="mMapGridCRSButton">
<property name="text">
<string>change...</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mMapGridUnitLabel">
<property name="text">
<string>Interval units</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="mMapGridUnitComboBox">
<item>
<property name="text">
<string>Map unit</string>
</property>
</item>
<item>
<property name="text">
<string>Millimeter</string>
</property>
</item>
<item>
<property name="text">
<string>Centimeter</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="mIntervalXLabel_2">
<property name="text">
<string>Interval</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QgsDoubleSpinBox" name="mIntervalXSpinBox">
<property name="prefix">
<string>X </string>
</property>
<property name="decimals">
<number>12</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="QgsDoubleSpinBox" name="mIntervalYSpinBox">
<property name="prefix">
<string>Y </string>
</property>
<property name="decimals">
<number>12</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mOffsetXLabel_2">
<property name="text">
<string>Offset</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<layout class="QVBoxLayout" name="verticalLayout_10">
<item>
<widget class="QgsDoubleSpinBox" name="mOffsetXSpinBox">
<property name="prefix">
<string>X </string>
</property>
<property name="decimals">
<number>12</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="QgsDoubleSpinBox" name="mOffsetYSpinBox">
<property name="prefix">
<string>Y </string>
</property>
<property name="decimals">
<number>12</number>
</property>
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mCrossWidthLabel">
<property name="text">
<string>Cross width</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QgsDoubleSpinBox" name="mCrossWidthSpinBox">
<property name="suffix">
<string> mm</string>
</property>
<property name="decimals">
<number>2</number>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="mLineStyleLabel">
<property name="text">
<string>Line style</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="mGridLineStyleButton">
<property name="text">
<string>change...</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mMarkerStyleLabel">
<property name="text">
<string>Marker style</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="mGridMarkerStyleButton">
<property name="text">
<string>change...</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="mGridBlendLabel">
<property name="text">
<string>Blend mode</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QgsBlendModeComboBox" name="mGridBlendComboBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBoxBasic" name="mGridFrameGroupBox">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="title">
<string>Frame</string>
</property>
<property name="syncGroup" stdset="0">
<string notr="true">composermapgrid</string>
</property>
<layout class="QGridLayout" name="gridLayout_3" columnstretch="0,1,1">
<item row="0" column="0">
<widget class="QLabel" name="mFrameStyleLabel_2">
<property name="text">
<string>Frame style</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mFrameWidthLabel">
<property name="text">
<string>Frame size</string>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mFramePenLabel">
<property name="text">
<string>Frame line thickness</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QgsDoubleSpinBox" name="mGridFramePenSizeSpinBox">
<property name="suffix">
<string> mm</string>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QgsColorButton" name="mGridFramePenColorButton">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="mFrameFillLabel">
<property name="text">
<string>Frame fill colors</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QgsColorButton" name="mGridFrameFill1ColorButton">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QgsColorButton" name="mGridFrameFill2ColorButton">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="8" column="0" colspan="3">
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QCheckBox" name="mCheckGridLeftSide">
<property name="text">
<string>Left side</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="mCheckGridRightSide">
<property name="text">
<string>Right side</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="mCheckGridTopSide">
<property name="text">
<string>Top side</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="mCheckGridBottomSide">
<property name="text">
<string>Bottom side</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="mFrameStyleComboBox">
<item>
<property name="text">
<string>No frame</string>
</property>
</item>
<item>
<property name="text">
<string>Zebra</string>
</property>
</item>
<item>
<property name="text">
<string>Interior ticks</string>
</property>
</item>
<item>
<property name="text">
<string>Exterior ticks</string>
</property>
</item>
<item>
<property name="text">
<string>Interior and exterior ticks</string>
</property>
</item>
<item>
<property name="text">
<string>Line border</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QgsDoubleSpinBox" name="mFrameWidthSpinBox">
<property name="suffix">
<string> mm</string>
</property>
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mRightDivisionsLabel">
<property name="text">
<string>Right divisions</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mLeftDivisionsLabel">
<property name="text">
<string>Left divisions</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="mTopDivisionsLabel">
<property name="text">
<string>Top divisions</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mBottomDivisionsLabel">
<property name="text">
<string>Bottom divisions</string>
</property>
</widget>
</item>
<item row="4" column="1" colspan="2">
<widget class="QComboBox" name="mFrameDivisionsLeftComboBox"/>
</item>
<item row="5" column="1" colspan="2">
<widget class="QComboBox" name="mFrameDivisionsRightComboBox"/>
</item>
<item row="6" column="1" colspan="2">
<widget class="QComboBox" name="mFrameDivisionsTopComboBox"/>
</item>
<item row="7" column="1" colspan="2">
<widget class="QComboBox" name="mFrameDivisionsBottomComboBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBoxBasic" name="mDrawAnnotationGroupBox">
<property name="enabled">
<bool>true</bool>
</property>
<property name="title">
<string>Draw coordinates</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="syncGroup" stdset="0">
<string notr="true">composermapgrid</string>
</property>
<property name="collapsed" stdset="0">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="mAnnotationFormatLabel">
<property name="text">
<string>Format</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_13">
<item>
<widget class="QComboBox" name="mAnnotationFormatComboBox"/>
</item>
<item>
<widget class="QToolButton" name="mAnnotationFormatButton">
<property name="text">
<string>…</string>
</property>
<property name="icon">
<iconset resource="../../../images/images.qrc">
<normaloff>:/images/themes/default/mIconExpression.svg</normaloff>:/images/themes/default/mIconExpression.svg</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="mAnnotationPositionLabelLeft">
<property name="text">
<string>Left</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="mAnnotationDisplayLeftComboBox"/>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="mAnnotationPositionLeftComboBox"/>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="mAnnotationDirectionComboBoxLeft"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mAnnotationPositionLabelRight">
<property name="text">
<string>Right</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="mAnnotationDisplayRightComboBox"/>
</item>
<item row="5" column="1">
<widget class="QComboBox" name="mAnnotationPositionRightComboBox"/>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="mAnnotationDirectionComboBoxRight"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="mAnnotationPositionLabelTop">
<property name="text">
<string>Top</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="mAnnotationDisplayTopComboBox"/>
</item>
<item row="8" column="1">
<widget class="QComboBox" name="mAnnotationPositionTopComboBox"/>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="mAnnotationDirectionComboBoxTop"/>
</item>
<item row="10" column="0">
<widget class="QLabel" name="mAnnotationPositionLabelBottom">
<property name="text">
<string>Bottom</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QComboBox" name="mAnnotationDisplayBottomComboBox"/>
</item>
<item row="11" column="1">
<widget class="QComboBox" name="mAnnotationPositionBottomComboBox"/>
</item>
<item row="12" column="1">
<widget class="QComboBox" name="mAnnotationDirectionComboBoxBottom"/>
</item>
<item row="13" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Font</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="mFontColorLabel">
<property name="text">
<string>Font color</string>
</property>
</widget>
</item>
<item row="15" column="0">
<widget class="QLabel" name="mDistanceToFrameLabel">
<property name="text">
<string>Distance to map frame</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QgsDoubleSpinBox" name="mDistanceToMapFrameSpinBox">
<property name="suffix">
<string> mm</string>
</property>
</widget>
</item>
<item row="16" column="0">
<widget class="QLabel" name="mCoordinatePrecisionLabel">
<property name="text">
<string>Coordinate precision</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QgsSpinBox" name="mCoordinatePrecisionSpinBox">
<property name="showClearButton" stdset="0">
<bool>false</bool>
</property>
</widget>
</item>
<item row="14" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QgsColorButton" name="mAnnotationFontColorButton">
<property name="minimumSize">
<size>
<width>120</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="13" column="1">
<widget class="QgsFontButton" name="mAnnotationFontButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Font</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>QgsScrollArea</class>
<extends>QScrollArea</extends>
<header>qgsscrollarea.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsColorButton</class>
<extends>QToolButton</extends>
<header>qgscolorbutton.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsCollapsibleGroupBoxBasic</class>
<extends>QGroupBox</extends>
<header>qgscollapsiblegroupbox.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsDoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>qgsdoublespinbox.h</header>
</customwidget>
<customwidget>
<class>QgsFontButton</class>
<extends>QToolButton</extends>
<header>qgsfontbutton.h</header>
</customwidget>
<customwidget>
<class>QgsSpinBox</class>
<extends>QSpinBox</extends>
<header>qgsspinbox.h</header>
</customwidget>
<customwidget>
<class>QgsBlendModeComboBox</class>
<extends>QComboBox</extends>
<header>qgsblendmodecombobox.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>scrollArea</tabstop>
<tabstop>mGridTypeComboBox</tabstop>
<tabstop>mMapGridCRSButton</tabstop>
<tabstop>mMapGridUnitComboBox</tabstop>
<tabstop>mIntervalXSpinBox</tabstop>
<tabstop>mIntervalYSpinBox</tabstop>
<tabstop>mOffsetXSpinBox</tabstop>
<tabstop>mOffsetYSpinBox</tabstop>
<tabstop>mCrossWidthSpinBox</tabstop>
<tabstop>mGridLineStyleButton</tabstop>
<tabstop>mGridMarkerStyleButton</tabstop>
<tabstop>mGridBlendComboBox</tabstop>
<tabstop>mGridFrameGroupBox</tabstop>
<tabstop>mFrameStyleComboBox</tabstop>
<tabstop>mFrameWidthSpinBox</tabstop>
<tabstop>mGridFramePenSizeSpinBox</tabstop>
<tabstop>mGridFramePenColorButton</tabstop>
<tabstop>mGridFrameFill1ColorButton</tabstop>
<tabstop>mGridFrameFill2ColorButton</tabstop>
<tabstop>mFrameDivisionsLeftComboBox</tabstop>
<tabstop>mFrameDivisionsRightComboBox</tabstop>
<tabstop>mFrameDivisionsTopComboBox</tabstop>
<tabstop>mFrameDivisionsBottomComboBox</tabstop>
<tabstop>mCheckGridLeftSide</tabstop>
<tabstop>mCheckGridRightSide</tabstop>
<tabstop>mCheckGridTopSide</tabstop>
<tabstop>mCheckGridBottomSide</tabstop>
<tabstop>mDrawAnnotationGroupBox</tabstop>
<tabstop>mAnnotationFormatComboBox</tabstop>
<tabstop>mAnnotationFormatButton</tabstop>
<tabstop>mAnnotationDisplayLeftComboBox</tabstop>
<tabstop>mAnnotationPositionLeftComboBox</tabstop>
<tabstop>mAnnotationDirectionComboBoxLeft</tabstop>
<tabstop>mAnnotationDisplayRightComboBox</tabstop>
<tabstop>mAnnotationPositionRightComboBox</tabstop>
<tabstop>mAnnotationDirectionComboBoxRight</tabstop>
<tabstop>mAnnotationDisplayTopComboBox</tabstop>
<tabstop>mAnnotationPositionTopComboBox</tabstop>
<tabstop>mAnnotationDirectionComboBoxTop</tabstop>
<tabstop>mAnnotationDisplayBottomComboBox</tabstop>
<tabstop>mAnnotationPositionBottomComboBox</tabstop>
<tabstop>mAnnotationDirectionComboBoxBottom</tabstop>
<tabstop>mAnnotationFontButton</tabstop>
<tabstop>mAnnotationFontColorButton</tabstop>
<tabstop>mDistanceToMapFrameSpinBox</tabstop>
<tabstop>mCoordinatePrecisionSpinBox</tabstop>
</tabstops>
<resources>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
<include location="../../../images/images.qrc"/>
</resources>
<connections/>
</ui>