Skip to content

Commit

Permalink
Added SIP, fixed qgisapp to use new setter and optimized a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
homann committed Sep 21, 2012
1 parent 01c4ac7 commit d1c8884
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 26 deletions.
22 changes: 22 additions & 0 deletions python/gui/qgsscalecombobox.sip
Expand Up @@ -12,6 +12,28 @@ class QgsScaleComboBox : QComboBox
QgsScaleComboBox(QWidget * parent = 0); QgsScaleComboBox(QWidget * parent = 0);
~QgsScaleComboBox(); ~QgsScaleComboBox();


//! Function to read the selected scale as text
// @note added in 2.0
QString scaleString();
//! Function to set the selected scale from text
// @note added in 2.0
bool setScaleString( QString scaleTxt );
//! Function to read the selected scale as double
// @note added in 2.0
double scale();
//! Function to set the selected scale from double
// @note added in 2.0
void setScale( double scale );

//! Helper function to convert a double to scale string
// Performs rounding, so an exact representation is not to
// be expected.
// @note added in 2.0
static QString toString( double scale );
//! Helper function to convert a scale string to double
// @note added in 2.0
static double toDouble( QString scaleString, bool *ok = NULL );

public slots: public slots:
void updateScales( const QStringList &scales = QStringList() ); void updateScales( const QStringList &scales = QStringList() );
}; };
Expand Down
19 changes: 4 additions & 15 deletions src/app/qgisapp.cpp
Expand Up @@ -1467,16 +1467,10 @@ void QgisApp::createStatusBar()
mScaleEdit->setMaximumWidth( 100 ); mScaleEdit->setMaximumWidth( 100 );
mScaleEdit->setMaximumHeight( 20 ); mScaleEdit->setMaximumHeight( 20 );
mScaleEdit->setContentsMargins( 0, 0, 0, 0 ); mScaleEdit->setContentsMargins( 0, 0, 0, 0 );
// QRegExp validator( "\\d+\\.?\\d*:\\d+\\.?\\d*" );
// QRegExp validator( "\\d+\\.?\\d*:\\d+\\.?\\d*|\\d+\\.?\\d*" );
// mScaleEditValidator = new QRegExpValidator( validator, mScaleEdit );
// mScaleEdit->setValidator( mScaleEditValidator );
mScaleEdit->setWhatsThis( tr( "Displays the current map scale" ) ); mScaleEdit->setWhatsThis( tr( "Displays the current map scale" ) );
mScaleEdit->setToolTip( tr( "Current map scale (formatted as x:y)" ) ); mScaleEdit->setToolTip( tr( "Current map scale (formatted as x:y)" ) );


statusBar()->addPermanentWidget( mScaleEdit, 0 ); statusBar()->addPermanentWidget( mScaleEdit, 0 );
//connect( mScaleEdit, SIGNAL( currentIndexChanged( const QString & ) ), this, SLOT( userScale() ) );
//connect( mScaleEdit->lineEdit(), SIGNAL( editingFinished() ), this, SLOT( userScale() ) );
connect( mScaleEdit, SIGNAL( scaleChanged() ), this, SLOT( userScale() ) ); connect( mScaleEdit, SIGNAL( scaleChanged() ), this, SLOT( userScale() ) );


//stop rendering status bar widget //stop rendering status bar widget
Expand Down Expand Up @@ -5250,15 +5244,10 @@ void QgisApp::showMouseCoordinate( const QgsPoint & p )


void QgisApp::showScale( double theScale ) void QgisApp::showScale( double theScale )
{ {
if ( theScale >= 1.0 ) // Why has MapCanvas the scale inverted?
mScaleEdit->setEditText( "1:" + QString::number( theScale, 'f', 0 ) ); mScaleEdit->setScale( 1.0 / theScale );
else if ( theScale > 0.0 )
mScaleEdit->setEditText( QString::number( 1.0 / theScale, 'f', 0 ) + ":1" );
else
mScaleEdit->setEditText( tr( "Invalid scale" ) );

mOldScale = mScaleEdit->currentText();


// Not sure if the lines below do anything meaningful /Homann
if ( mScaleEdit->width() > mScaleEdit->minimumWidth() ) if ( mScaleEdit->width() > mScaleEdit->minimumWidth() )
{ {
mScaleEdit->setMinimumWidth( mScaleEdit->width() ); mScaleEdit->setMinimumWidth( mScaleEdit->width() );
Expand All @@ -5267,7 +5256,7 @@ void QgisApp::showScale( double theScale )


void QgisApp::userScale() void QgisApp::userScale()
{ {
// Why has MapCanvas the scale inversed? // Why has MapCanvas the scale inverted?
mMapCanvas->zoomScale( 1.0 / mScaleEdit->scale() ); mMapCanvas->zoomScale( 1.0 / mScaleEdit->scale() );
} }


Expand Down
2 changes: 0 additions & 2 deletions src/app/qgisapp.h
Expand Up @@ -1236,8 +1236,6 @@ class QgisApp : public QMainWindow, private Ui::MainWindow


bool cmpByText( QAction* a, QAction* b ); bool cmpByText( QAction* a, QAction* b );


QString mOldScale;

//! the user has trusted the project macros //! the user has trusted the project macros
bool mTrustedMacros; bool mTrustedMacros;


Expand Down
26 changes: 17 additions & 9 deletions src/gui/qgsscalecombobox.cpp
Expand Up @@ -16,6 +16,7 @@
***************************************************************************/ ***************************************************************************/


#include "qgis.h" #include "qgis.h"
#include "qgslogger.h"
#include "qgsscalecombobox.h" #include "qgsscalecombobox.h"


#include <QAbstractItemView> #include <QAbstractItemView>
Expand All @@ -30,7 +31,7 @@ QgsScaleComboBox::QgsScaleComboBox( QWidget* parent ) : QComboBox( parent )
setEditable( true ); setEditable( true );
setInsertPolicy( QComboBox::NoInsert ); setInsertPolicy( QComboBox::NoInsert );
setCompleter( 0 ); setCompleter( 0 );
connect( this, SIGNAL( currentIndexChanged( const QString & ) ), this, SLOT( fixupScale() ) ); connect( this, SIGNAL( activated( const QString & ) ), this, SLOT( fixupScale() ) );
connect( lineEdit(), SIGNAL( editingFinished() ), this, SLOT( fixupScale() ) ); connect( lineEdit(), SIGNAL( editingFinished() ), this, SLOT( fixupScale() ) );
fixupScale(); fixupScale();
} }
Expand Down Expand Up @@ -65,7 +66,7 @@ void QgsScaleComboBox::updateScales( const QStringList &scales )
blockSignals( true ); blockSignals( true );
clear(); clear();
addItems( myScalesList ); addItems( myScalesList );
setEditText( oldScale ); setScaleString( oldScale );
blockSignals( false ); blockSignals( false );
} }


Expand Down Expand Up @@ -148,18 +149,25 @@ void QgsScaleComboBox::fixupScale()
bool ok; bool ok;
QStringList txtList; QStringList txtList;


// QgsDebugMsg( QString( "entered with oldScale: %1" ).arg( oldScale ) );
newScale = toDouble( currentText(), &ok ); newScale = toDouble( currentText(), &ok );
if ( ok ) if ( ok )
{ {
mScale = newScale; // Valid string representation
if ( newScale != oldScale )
{
// Scale has change, update.
// QgsDebugMsg( QString( "New scale OK!: %1" ).arg( newScale ) );
mScale = newScale;
setScale( mScale );
emit scaleChanged();
}
} }
// We set to the new string representation else
// or reset to the old
setScale( mScale );

if ( oldScale != mScale )
{ {
emit scaleChanged(); // Invalid string representation
// Reset to the old
setScale( mScale );
} }
} }


Expand Down

0 comments on commit d1c8884

Please sign in to comment.