Skip to content

Commit 53e5de7

Browse files
committedDec 19, 2011
[FEATURE] use combobox to display scale. Also add predefined values for
quick scale select
1 parent 08293fd commit 53e5de7

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,22 +1274,37 @@ void QgisApp::createStatusBar()
12741274
mScaleLabel->setToolTip( tr( "Current map scale" ) );
12751275
statusBar()->addPermanentWidget( mScaleLabel, 0 );
12761276

1277-
mScaleEdit = new QLineEdit( QString(), statusBar() );
1277+
mScaleEdit = new QComboBox( statusBar() );
12781278
mScaleEdit->setObjectName( "mScaleEdit" );
12791279
mScaleEdit->setFont( myFont );
12801280
mScaleEdit->setMinimumWidth( 10 );
12811281
mScaleEdit->setMaximumWidth( 100 );
12821282
mScaleEdit->setMaximumHeight( 20 );
12831283
mScaleEdit->setContentsMargins( 0, 0, 0, 0 );
1284-
mScaleEdit->setAlignment( Qt::AlignLeft );
12851284
// QRegExp validator( "\\d+\\.?\\d*:\\d+\\.?\\d*" );
12861285
QRegExp validator( "\\d+\\.?\\d*:\\d+\\.?\\d*|\\d+\\.?\\d*" );
12871286
mScaleEditValidator = new QRegExpValidator( validator, mScaleEdit );
12881287
mScaleEdit->setValidator( mScaleEditValidator );
12891288
mScaleEdit->setWhatsThis( tr( "Displays the current map scale" ) );
12901289
mScaleEdit->setToolTip( tr( "Current map scale (formatted as x:y)" ) );
1290+
1291+
// make editable and populate with predefined scales
1292+
mScaleEdit->setEditable( true );
1293+
mScaleEdit->addItem( "1:1000000" );
1294+
mScaleEdit->addItem( "1:500000" );
1295+
mScaleEdit->addItem( "1:250000" );
1296+
mScaleEdit->addItem( "1:100000" );
1297+
mScaleEdit->addItem( "1:50000" );
1298+
mScaleEdit->addItem( "1:25000" );
1299+
mScaleEdit->addItem( "1:10000" );
1300+
mScaleEdit->addItem( "1:5000" );
1301+
mScaleEdit->addItem( "1:2500" );
1302+
mScaleEdit->addItem( "1:1000" );
1303+
mScaleEdit->addItem( "1:500" );
1304+
12911305
statusBar()->addPermanentWidget( mScaleEdit, 0 );
1292-
connect( mScaleEdit, SIGNAL( editingFinished() ), this, SLOT( userScale() ) );
1306+
connect( mScaleEdit, SIGNAL( currentIndexChanged( const QString & ) ), this, SLOT( userScale() ) );
1307+
connect( mScaleEdit->lineEdit(), SIGNAL( editingFinished() ), this, SLOT( userScale() ) );
12931308

12941309
//stop rendering status bar widget
12951310
mStopRenderButton = new QToolButton( statusBar() );
@@ -4347,13 +4362,12 @@ void QgisApp::showMouseCoordinate( const QgsPoint & p )
43474362
void QgisApp::showScale( double theScale )
43484363
{
43494364
if ( theScale >= 1.0 )
4350-
mScaleEdit->setText( "1:" + QString::number( theScale, 'f', 0 ) );
4365+
mScaleEdit->setEditText( "1:" + QString::number( theScale, 'f', 0 ) );
43514366
else if ( theScale > 0.0 )
4352-
mScaleEdit->setText( QString::number( 1.0 / theScale, 'f', 0 ) + ":1" );
4367+
mScaleEdit->setEditText( QString::number( 1.0 / theScale, 'f', 0 ) + ":1" );
43534368
else
4354-
mScaleEdit->setText( tr( "Invalid scale" ) );
4369+
mScaleEdit->setEditText( tr( "Invalid scale" ) );
43554370

4356-
// Set minimum necessary width
43574371
if ( mScaleEdit->width() > mScaleEdit->minimumWidth() )
43584372
{
43594373
mScaleEdit->setMinimumWidth( mScaleEdit->width() );
@@ -4362,7 +4376,7 @@ void QgisApp::showScale( double theScale )
43624376

43634377
void QgisApp::userScale()
43644378
{
4365-
QStringList parts = mScaleEdit->text().split( ':' );
4379+
QStringList parts = mScaleEdit->currentText().split( ':' );
43664380
if ( parts.size() == 2 )
43674381
{
43684382
bool leftOk, rightOk;

‎src/app/qgisapp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class QCursor;
2424
class QFileInfo;
2525
class QKeyEvent;
2626
class QLabel;
27-
class QLineEdit;
27+
class QComboBox;
2828
class QMenu;
2929
class QPixmap;
3030
class QProgressBar;
@@ -960,7 +960,7 @@ class QgisApp : public QMainWindow, private Ui::MainWindow
960960
//! Widget that will live on the statusbar to display "scale 1:"
961961
QLabel * mScaleLabel;
962962
//! Widget that will live on the statusbar to display scale value
963-
QLineEdit * mScaleEdit;
963+
QComboBox * mScaleEdit;
964964
//! The validator for the mScaleEdit
965965
QValidator * mScaleEditValidator;
966966
//! Widget that will live on the statusbar to display "Coordinate / Extent"

0 commit comments

Comments
 (0)
Please sign in to comment.