mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
create scale widget (scale combo box + button to set scale from map canvas)
This commit is contained in:
parent
8f70664472
commit
127c882e98
@ -100,6 +100,7 @@
|
||||
%Include qgsrubberband.sip
|
||||
%Include qgsscalecombobox.sip
|
||||
%Include qgsscalerangewidget.sip
|
||||
%Include qgsscalewidget.sip
|
||||
%Include qgsscalevisibilitydialog.sip
|
||||
%Include qgssearchquerybuilder.sip
|
||||
%Include qgstextannotationitem.sip
|
||||
|
47
python/gui/qgsscalewidget.sip
Normal file
47
python/gui/qgsscalewidget.sip
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
/** A combobox which lets the user select map scale from predefined list
|
||||
* and highlights nearest to current scale value
|
||||
*/
|
||||
class QgsScaleWidget : QWidget
|
||||
{
|
||||
%TypeHeaderCode
|
||||
#include <qgsscalewidget.h>
|
||||
%End
|
||||
|
||||
public:
|
||||
QgsScaleWidget( QWidget* parent = 0 );
|
||||
~QgsScaleWidget();
|
||||
|
||||
//! shows a button to set the scale to the current scale of the map canvas next to the combobox
|
||||
//! @note the map canvas must be defined to show the button
|
||||
void setShowCurrentScaleButton( bool showCurrentScaleButton );
|
||||
bool showCurrentScaleButton();
|
||||
|
||||
//! set the map canvas associated to the current button
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
//! Function to read the selected scale as text
|
||||
QString scaleString();
|
||||
//! Function to set the selected scale from text
|
||||
bool setScaleString( QString scaleTxt );
|
||||
//! Function to read the selected scale as double
|
||||
double scale();
|
||||
//! Function to set the selected scale from double
|
||||
void setScale( double scale );
|
||||
|
||||
//! Helper function to convert a double to scale string
|
||||
// Performs rounding, so an exact representation is not to
|
||||
// be expected.
|
||||
static QString toString( double scale );
|
||||
//! Helper function to convert a scale string to double
|
||||
static double toDouble( QString scaleString, bool *ok = NULL );
|
||||
|
||||
signals:
|
||||
//! Signal is emitted when *user* has finished editing/selecting a new scale.
|
||||
void scaleChanged();
|
||||
|
||||
public slots:
|
||||
void updateScales( const QStringList &scales = QStringList() );
|
||||
|
||||
};
|
||||
|
@ -215,6 +215,7 @@ qgsrubberband.cpp
|
||||
qgsscalecombobox.cpp
|
||||
qgsscalerangewidget.cpp
|
||||
qgsscalevisibilitydialog.cpp
|
||||
qgsscalewidget.cpp
|
||||
qgssearchquerybuilder.cpp
|
||||
qgsslider.cpp
|
||||
qgssublayersdialog.cpp
|
||||
@ -412,6 +413,7 @@ qgsrelationmanagerdialog.h
|
||||
qgsscalecombobox.h
|
||||
qgsscalerangewidget.h
|
||||
qgsscalevisibilitydialog.h
|
||||
qgsscalewidget.h
|
||||
qgssearchquerybuilder.h
|
||||
qgsslider.h
|
||||
qgssublayersdialog.h
|
||||
@ -491,6 +493,7 @@ qgsrubberband.h
|
||||
qgsscalecombobox.h
|
||||
qgsscalerangewidget.h
|
||||
qgsscalevisibilitydialog.h
|
||||
qgsscalewidget.h
|
||||
qgssearchquerybuilder.h
|
||||
qgsslider.h
|
||||
qgssublayersdialog.h
|
||||
|
69
src/gui/qgsscalewidget.cpp
Normal file
69
src/gui/qgsscalewidget.cpp
Normal file
@ -0,0 +1,69 @@
|
||||
/***************************************************************************
|
||||
qgsscalewidget.cpp
|
||||
--------------------------------------
|
||||
Date : 08.01.2015
|
||||
Copyright : (C) 2014 Denis Rouzaud
|
||||
Email : denis.rouzaud@gmail.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. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include <QHBoxLayout>
|
||||
|
||||
#include "qgsapplication.h"
|
||||
#include "qgsscalewidget.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
|
||||
QgsScaleWidget::QgsScaleWidget( QWidget *parent )
|
||||
: QWidget( parent )
|
||||
, mShowCurrentScaleButton( false )
|
||||
, mCanvas( NULL )
|
||||
{
|
||||
QHBoxLayout* layout = new QHBoxLayout( this );
|
||||
layout->setContentsMargins( 0, 0, 0, 0 );
|
||||
layout->setSpacing( 2 );
|
||||
|
||||
mScaleComboBox = new QgsScaleComboBox( this );
|
||||
layout->addWidget( mScaleComboBox );
|
||||
|
||||
mCurrentScaleButton = new QToolButton( this );
|
||||
mCurrentScaleButton->setIcon( QgsApplication::getThemeIcon( "/mActionMapIdentification.svg" ) );
|
||||
layout->addWidget( mCurrentScaleButton );
|
||||
mCurrentScaleButton->hide();
|
||||
|
||||
connect( mScaleComboBox, SIGNAL( scaleChanged() ), this, SIGNAL( scaleChanged() ) );
|
||||
connect( mCurrentScaleButton, SIGNAL( clicked() ), this, SLOT( setScaleFromCanvas() ) );
|
||||
}
|
||||
|
||||
|
||||
QgsScaleWidget::~QgsScaleWidget()
|
||||
{
|
||||
}
|
||||
|
||||
void QgsScaleWidget::setShowCurrentScaleButton( bool showCurrentScaleButton )
|
||||
{
|
||||
mShowCurrentScaleButton = showCurrentScaleButton;
|
||||
mCurrentScaleButton->setVisible( mShowCurrentScaleButton && mCanvas );
|
||||
}
|
||||
|
||||
void QgsScaleWidget::setMapCanvas( QgsMapCanvas* canvas )
|
||||
{
|
||||
mCanvas = canvas;
|
||||
mCurrentScaleButton->setVisible( mShowCurrentScaleButton && mCanvas );
|
||||
}
|
||||
|
||||
void QgsScaleWidget::setScaleFromCanvas()
|
||||
{
|
||||
if ( !mCanvas )
|
||||
return;
|
||||
|
||||
setScale( mCanvas->scale() );
|
||||
}
|
||||
|
||||
|
||||
|
82
src/gui/qgsscalewidget.h
Normal file
82
src/gui/qgsscalewidget.h
Normal file
@ -0,0 +1,82 @@
|
||||
/***************************************************************************
|
||||
qgsscalewidget.h
|
||||
--------------------------------------
|
||||
Date : 08.01.2015
|
||||
Copyright : (C) 2014 Denis Rouzaud
|
||||
Email : denis.rouzaud@gmail.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 QGSSCALEWIDGET_H
|
||||
#define QGSSCALEWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QToolButton>
|
||||
|
||||
|
||||
#include "qgsscalecombobox.h"
|
||||
|
||||
class QgsMapCanvas;
|
||||
|
||||
/** \ingroup gui
|
||||
* A combobox which lets the user select map scale from predefined list
|
||||
* and highlights nearest to current scale value
|
||||
**/
|
||||
class GUI_EXPORT QgsScaleWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY( bool showCurrentScaleButton READ showCurrentScaleButton WRITE setShowCurrentScaleButton )
|
||||
|
||||
public:
|
||||
explicit QgsScaleWidget(QWidget *parent = 0);
|
||||
|
||||
virtual ~QgsScaleWidget();
|
||||
|
||||
//! shows a button to set the scale to the current scale of the map canvas next to the combobox
|
||||
//! @note the map canvas must be defined to show the button
|
||||
void setShowCurrentScaleButton( bool showCurrentScaleButton );
|
||||
bool showCurrentScaleButton(){ return mShowCurrentScaleButton;}
|
||||
|
||||
//! set the map canvas associated to the current button
|
||||
void setMapCanvas( QgsMapCanvas* canvas );
|
||||
|
||||
//! Function to read the selected scale as text
|
||||
QString scaleString(){return mScaleComboBox->scaleString();}
|
||||
//! Function to set the selected scale from text
|
||||
bool setScaleString( QString scaleTxt ){return mScaleComboBox->setScaleString(scaleTxt);}
|
||||
//! Function to read the selected scale as double
|
||||
double scale(){return mScaleComboBox->scale();}
|
||||
//! Function to set the selected scale from double
|
||||
void setScale( double scale ){return mScaleComboBox->setScale(scale);}
|
||||
|
||||
//! Helper function to convert a double to scale string
|
||||
// Performs rounding, so an exact representation is not to
|
||||
// be expected.
|
||||
static QString toString( double scale ){return QgsScaleComboBox::toString(scale);}
|
||||
//! Helper function to convert a scale string to double
|
||||
static double toDouble( QString scaleString, bool *ok = NULL ){return QgsScaleComboBox::toDouble(scaleString, ok);}
|
||||
|
||||
public slots:
|
||||
void updateScales( const QStringList &scales = QStringList() ){return mScaleComboBox->updateScales(scales);}
|
||||
|
||||
//! assign the current scale from the map canvas
|
||||
void setScaleFromCanvas();
|
||||
|
||||
signals:
|
||||
//! Signal is emitted when *user* has finished editing/selecting a new scale.
|
||||
void scaleChanged();
|
||||
|
||||
private:
|
||||
QgsScaleComboBox* mScaleComboBox;
|
||||
QToolButton* mCurrentScaleButton;
|
||||
QgsMapCanvas* mCanvas;
|
||||
bool mShowCurrentScaleButton;
|
||||
};
|
||||
|
||||
#endif // QGSSCALEWIDGET_H
|
Loading…
x
Reference in New Issue
Block a user