You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.4 KiB
230 lines
6.4 KiB
/*
|
|
**************************************************************************
|
|
description
|
|
--------------------
|
|
copyright : (C) 2000-2001 by Andreas Zehender
|
|
email : zehender@kde.org
|
|
**************************************************************************
|
|
|
|
**************************************************************************
|
|
* *
|
|
* 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 "pmlineedits.h"
|
|
#include <kmessagebox.h>
|
|
#include <klocale.h>
|
|
|
|
PMFloatEdit::PMFloatEdit( TQWidget* parent, const char* name /*= 0*/ )
|
|
: TQLineEdit( parent, name )
|
|
{
|
|
m_bCheckLower = false;
|
|
m_bCheckUpper = false;
|
|
m_lowerValue = 0;
|
|
m_upperValue = 0;
|
|
m_lowerOp = OpGreaterEqual;
|
|
m_upperOp = OpLessEqual;
|
|
|
|
connect( this, TQT_SIGNAL( textChanged( const TQString& ) ),
|
|
TQT_SLOT( slotEditTextChanged( const TQString& ) ) );
|
|
}
|
|
|
|
void PMFloatEdit::setValidation( bool checkLower, double lowerValue,
|
|
bool checkUpper, double upperValue )
|
|
{
|
|
m_bCheckLower = checkLower;
|
|
m_bCheckUpper = checkUpper;
|
|
m_lowerValue = lowerValue;
|
|
m_upperValue = upperValue;
|
|
}
|
|
|
|
void PMFloatEdit::setValidationOperator( ValidationOp l, ValidationOp u )
|
|
{
|
|
m_lowerOp = l;
|
|
m_upperOp = u;
|
|
}
|
|
|
|
bool PMFloatEdit::isDataValid( )
|
|
{
|
|
bool ok = true;
|
|
double d;
|
|
d = text( ).toDouble( &ok );
|
|
|
|
if( ok )
|
|
{
|
|
if( m_bCheckLower )
|
|
ok = ok && ( m_lowerOp == OpGreaterEqual ?
|
|
d >= m_lowerValue : d > m_lowerValue );
|
|
if( m_bCheckUpper )
|
|
ok = ok && ( m_upperOp == OpLessEqual ?
|
|
d <= m_upperValue : d < m_upperValue );
|
|
if( !ok )
|
|
{
|
|
if( m_bCheckLower && m_bCheckUpper )
|
|
KMessageBox::error( this, i18n( "Please enter a float value "
|
|
"between %1 and %2" )
|
|
.arg( m_lowerValue ).arg( m_upperValue ),
|
|
i18n( "Error" ) );
|
|
else if( m_bCheckLower )
|
|
{
|
|
if( m_lowerOp == OpGreaterEqual )
|
|
KMessageBox::error( this, i18n( "Please enter a float value "
|
|
">= %1" ).arg( m_lowerValue ),
|
|
i18n( "Error" ) );
|
|
else
|
|
KMessageBox::error( this, i18n( "Please enter a float value "
|
|
"> %1" ).arg( m_lowerValue ),
|
|
i18n( "Error" ) );
|
|
}
|
|
else
|
|
{
|
|
if( m_upperOp == OpLessEqual )
|
|
KMessageBox::error( this, i18n( "Please enter a float value "
|
|
"<= %1" ).arg( m_upperValue ),
|
|
i18n( "Error" ) );
|
|
else
|
|
KMessageBox::error( this, i18n( "Please enter a float value "
|
|
"< %1" ).arg( m_upperValue ),
|
|
i18n( "Error" ) );
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
KMessageBox::error( this, i18n( "Please enter a valid float value!" ),
|
|
i18n( "Error" ) );
|
|
}
|
|
|
|
if( !ok )
|
|
{
|
|
setFocus( );
|
|
selectAll( );
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
double PMFloatEdit::value( ) const
|
|
{
|
|
return text( ).toDouble( );
|
|
}
|
|
|
|
void PMFloatEdit::setValue( double d, int precision )
|
|
{
|
|
TQString str;
|
|
|
|
str.setNum( d, 'g', precision );
|
|
setText( str );
|
|
}
|
|
|
|
void PMFloatEdit::slotEditTextChanged( const TQString& /*t*/ )
|
|
{
|
|
emit dataChanged( );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PMIntEdit::PMIntEdit( TQWidget* parent, const char* name /*= 0*/ )
|
|
: TQLineEdit( parent, name )
|
|
{
|
|
m_bCheckLower = false;
|
|
m_bCheckUpper = false;
|
|
m_lowerValue = 0;
|
|
m_upperValue = 0;
|
|
|
|
connect( this, TQT_SIGNAL( textChanged( const TQString& ) ),
|
|
TQT_SLOT( slotEditTextChanged( const TQString& ) ) );
|
|
}
|
|
|
|
void PMIntEdit::setValidation( bool checkLower, int lowerValue,
|
|
bool checkUpper, int upperValue )
|
|
{
|
|
m_bCheckLower = checkLower;
|
|
m_bCheckUpper = checkUpper;
|
|
m_lowerValue = lowerValue;
|
|
m_upperValue = upperValue;
|
|
}
|
|
|
|
bool PMIntEdit::isDataValid( )
|
|
{
|
|
bool ok = true;
|
|
int i;
|
|
double d;
|
|
|
|
i = text( ).toInt( &ok );
|
|
if( !ok )
|
|
{
|
|
d = text( ).toDouble( &ok );
|
|
if( ok )
|
|
{
|
|
i = ( int ) d;
|
|
TQString str;
|
|
bool b = signalsBlocked( );
|
|
blockSignals( true );
|
|
str.setNum( i );
|
|
setText( str );
|
|
blockSignals( b );
|
|
}
|
|
}
|
|
|
|
if( ok )
|
|
{
|
|
if( m_bCheckLower )
|
|
ok = ok && ( i >= m_lowerValue );
|
|
if( m_bCheckUpper )
|
|
ok = ok && ( i <= m_upperValue );
|
|
if( !ok )
|
|
{
|
|
if( m_bCheckLower && m_bCheckUpper )
|
|
KMessageBox::error( this, i18n( "Please enter an integer value "
|
|
"between %1 and %2" )
|
|
.arg( m_lowerValue ).arg( m_upperValue ),
|
|
i18n( "Error" ) );
|
|
else if( m_bCheckLower )
|
|
KMessageBox::error( this, i18n( "Please enter an integer value "
|
|
">= %1" ).arg( m_lowerValue ),
|
|
i18n( "Error" ) );
|
|
else
|
|
KMessageBox::error( this, i18n( "Please enter an integer value "
|
|
"<= %1" ).arg( m_upperValue ),
|
|
i18n( "Error" ) );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
KMessageBox::error( this, i18n( "Please enter a valid integer value!" ),
|
|
i18n( "Error" ) );
|
|
}
|
|
|
|
if( !ok )
|
|
{
|
|
setFocus( );
|
|
selectAll( );
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
int PMIntEdit::value( ) const
|
|
{
|
|
return text( ).toInt( );
|
|
}
|
|
|
|
void PMIntEdit::setValue( int i )
|
|
{
|
|
TQString str;
|
|
|
|
str.setNum( i );
|
|
setText( str );
|
|
}
|
|
|
|
void PMIntEdit::slotEditTextChanged( const TQString& /*t*/ )
|
|
{
|
|
emit dataChanged( );
|
|
}
|
|
#include "pmlineedits.moc"
|