本文整理汇总了C++中QgsDebugMsg函数的典型用法代码示例。如果您正苦于以下问题:C++ QgsDebugMsg函数的具体用法?C++ QgsDebugMsg怎么用?C++ QgsDebugMsg使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了QgsDebugMsg函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: QDialog
QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *parent, Qt::WFlags fl )
: QDialog( parent, fl )
, mMapCanvas( mapCanvas )
{
setupUi( this );
connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
connect( buttonBox->button( QDialogButtonBox::Apply ), SIGNAL( clicked() ), this, SLOT( apply() ) );
connect( this, SIGNAL( accepted() ), this, SLOT( apply() ) );
connect( projectionSelector, SIGNAL( sridSelected( QString ) ), this, SLOT( setMapUnitsToCurrentProjection() ) );
///////////////////////////////////////////////////////////
// Properties stored in map canvas's QgsMapRenderer
// these ones are propagated to QgsProject by a signal
QgsMapRenderer* myRenderer = mMapCanvas->mapRenderer();
QGis::UnitType myUnit = myRenderer->mapUnits();
setMapUnits( myUnit );
//see if the user wants on the fly projection enabled
bool myProjectionEnabled = myRenderer->hasCrsTransformEnabled();
cbxProjectionEnabled->setChecked( myProjectionEnabled );
btnGrpMapUnits->setEnabled( !myProjectionEnabled );
mProjectSrsId = myRenderer->destinationCrs().srsid();
QgsDebugMsg( "Read project CRSID: " + QString::number( mProjectSrsId ) );
projectionSelector->setSelectedCrsId( mProjectSrsId );
///////////////////////////////////////////////////////////
// Properties stored in QgsProject
title( QgsProject::instance()->title() );
// get the manner in which the number of decimal places in the mouse
// position display is set (manual or automatic)
bool automaticPrecision = QgsProject::instance()->readBoolEntry( "PositionPrecision", "/Automatic" );
if ( automaticPrecision )
{
radAutomatic->setChecked( true );
spinBoxDP->setDisabled( true );
labelDP->setDisabled( true );
}
else
{
radManual->setChecked( true );
}
cbxAbsolutePath->setCurrentIndex( QgsProject::instance()->readBoolEntry( "Paths", "/Absolute", true ) ? 0 : 1 );
int dp = QgsProject::instance()->readNumEntry( "PositionPrecision", "/DecimalPlaces" );
spinBoxDP->setValue( dp );
//get the color selections and set the button color accordingly
int myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorRedPart", 255 );
int myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorGreenPart", 255 );
int myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorBluePart", 0 );
int myAlphaInt = QgsProject::instance()->readNumEntry( "Gui", "/SelectionColorAlphaPart", 255 );
QColor myColor = QColor( myRedInt, myGreenInt, myBlueInt, myAlphaInt );
pbnSelectionColor->setColor( myColor );
//get the color for map canvas background and set button color accordingly (default white)
myRedInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorRedPart", 255 );
myGreenInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorGreenPart", 255 );
myBlueInt = QgsProject::instance()->readNumEntry( "Gui", "/CanvasColorBluePart", 255 );
myColor = QColor( myRedInt, myGreenInt, myBlueInt );
pbnCanvasColor->setColor( myColor );
QgsMapLayer* currentLayer = 0;
QStringList noIdentifyLayerIdList = QgsProject::instance()->readListEntry( "Identify", "/disabledLayers" );
const QMap<QString, QgsMapLayer*> &mapLayers = QgsMapLayerRegistry::instance()->mapLayers();
if ( mMapCanvas->currentLayer() )
{
mLayerSrsId = mMapCanvas->currentLayer()->crs().srsid();
}
else if ( mapLayers.size() > 0 )
{
mLayerSrsId = mapLayers.begin().value()->crs().srsid();
}
else
{
mLayerSrsId = mProjectSrsId;
}
twIdentifyLayers->setColumnCount( 3 );
twIdentifyLayers->horizontalHeader()->setVisible( true );
twIdentifyLayers->setHorizontalHeaderItem( 0, new QTableWidgetItem( tr( "Layer" ) ) );
twIdentifyLayers->setHorizontalHeaderItem( 1, new QTableWidgetItem( tr( "Type" ) ) );
twIdentifyLayers->setHorizontalHeaderItem( 2, new QTableWidgetItem( tr( "Identifiable" ) ) );
twIdentifyLayers->setRowCount( mapLayers.size() );
twIdentifyLayers->verticalHeader()->setResizeMode( QHeaderView::ResizeToContents );
int i = 0;
for ( QMap<QString, QgsMapLayer*>::const_iterator it = mapLayers.constBegin(); it != mapLayers.constEnd(); it++, i++ )
{
currentLayer = it.value();
QTableWidgetItem *twi = new QTableWidgetItem( QString::number( i ) );
//.........这里部分代码省略.........
开发者ID:afrigeo,项目名称:Quantum-GIS,代码行数:101,代码来源:qgsprojectproperties.cpp
示例2: QgsDebugMsg
QgsGrassRasterProvider::~QgsGrassRasterProvider()
{
QgsDebugMsg( "QgsGrassRasterProvider: deconstructing." );
}
开发者ID:3liz,项目名称:Quantum-GIS,代码行数:4,代码来源:qgsgrassrasterprovider.cpp
示例3: QLatin1String
bool QgsDb2GeometryColumns::populateLayerProperty( QgsDb2LayerProperty &layer )
{
if ( !mQuery.isActive() || !mQuery.next() )
{
return false;
}
layer.schemaName = mQuery.value( 0 ).toString().trimmed();
layer.tableName = mQuery.value( 1 ).toString().trimmed();
layer.geometryColName = mQuery.value( 2 ).toString().trimmed();
layer.type = mQuery.value( 3 ).toString();
if ( mQuery.value( 4 ).isNull() )
{
layer.srid = QLatin1String( "" );
layer.srsName = QLatin1String( "" );
}
else
{
layer.srid = mQuery.value( 4 ).toString();
layer.srsName = mQuery.value( 5 ).toString();
}
layer.extents = QStringLiteral( "0 0 0 0" ); // no extents
if ( ENV_LUW == mEnvironment )
{
if ( !mQuery.value( 6 ).isNull() ) // Don't get values if null
{
layer.extents = QString(
mQuery.value( 6 ).toString() + ' ' +
mQuery.value( 7 ).toString() + ' ' +
mQuery.value( 8 ).toString() + ' ' +
mQuery.value( 9 ).toString() ).trimmed();
}
}
QgsDebugMsg( QString( "layer: %1.%2(%3) type='%4' srid='%5' srsName='%6'" )
.arg( layer.schemaName, layer.tableName, layer.geometryColName,
layer.type, layer.srid, layer.srsName ) );
QgsDebugMsg( "Extents: '" + layer.extents + "'" );
layer.pkCols = QStringList();
// Use the Qt functionality to get the primary key information
// to set the FID column.
// We can only use the primary key if it only has one column and
// the type is Integer or BigInt.
QString table = QStringLiteral( "%1.%2" ).arg( layer.schemaName, layer.tableName );
QSqlIndex pk = mDatabase.primaryIndex( table );
if ( pk.count() == 1 )
{
QSqlField pkFld = pk.field( 0 );
QVariant::Type pkType = pkFld.type();
if ( ( pkType == QVariant::Int || pkType == QVariant::LongLong ) )
{
QString fidColName = pk.fieldName( 0 );
layer.pkCols.append( fidColName );
QgsDebugMsg( "pk is: " + fidColName );
}
}
else
{
QgsDebugMsg( "Warning: table primary key count is " + QString::number( pk.count() ) );
}
layer.pkColumnName = layer.pkCols.size() > 0 ? layer.pkCols.at( 0 ) : QString();
return true;
}
开发者ID:ndavid,项目名称:QGIS,代码行数:64,代码来源:qgsdb2geometrycolumns.cpp
示例4: resetSelection
void QgsGrassFeatureIterator::setSelectionRect( const QgsRectangle& rect, bool useIntersect )
{
//apply selection rectangle
resetSelection( 0 );
if ( !useIntersect )
{ // select by bounding boxes only
BOUND_BOX box;
box.N = rect.yMaximum(); box.S = rect.yMinimum();
box.E = rect.xMaximum(); box.W = rect.xMinimum();
box.T = PORT_DOUBLE_MAX; box.B = -PORT_DOUBLE_MAX;
if ( P->mLayerType == QgsGrassProvider::POINT || P->mLayerType == QgsGrassProvider::CENTROID ||
P->mLayerType == QgsGrassProvider::LINE || P->mLayerType == QgsGrassProvider::FACE ||
P->mLayerType == QgsGrassProvider::BOUNDARY )
{
Vect_select_lines_by_box( P->mMap, &box, P->mGrassType, mList );
}
else if ( P->mLayerType == QgsGrassProvider::POLYGON )
{
Vect_select_areas_by_box( P->mMap, &box, mList );
}
}
else
{ // check intersection
struct line_pnts *Polygon;
Polygon = Vect_new_line_struct();
// Using z coor -PORT_DOUBLE_MAX/PORT_DOUBLE_MAX we cover 3D, Vect_select_lines_by_polygon is
// using dig_line_box to get the box, it is not perfect, Vect_select_lines_by_polygon
// should clarify better how 2D/3D is treated
Vect_append_point( Polygon, rect.xMinimum(), rect.yMinimum(), -PORT_DOUBLE_MAX );
Vect_append_point( Polygon, rect.xMaximum(), rect.yMinimum(), PORT_DOUBLE_MAX );
Vect_append_point( Polygon, rect.xMaximum(), rect.yMaximum(), 0 );
Vect_append_point( Polygon, rect.xMinimum(), rect.yMaximum(), 0 );
Vect_append_point( Polygon, rect.xMinimum(), rect.yMinimum(), 0 );
if ( P->mLayerType == QgsGrassProvider::POINT || P->mLayerType == QgsGrassProvider::CENTROID ||
P->mLayerType == QgsGrassProvider::LINE || P->mLayerType == QgsGrassProvider::FACE ||
P->mLayerType == QgsGrassProvider::BOUNDARY )
{
Vect_select_lines_by_polygon( P->mMap, Polygon, 0, NULL, P->mGrassType, mList );
}
else if ( P->mLayerType == QgsGrassProvider::POLYGON )
{
Vect_select_areas_by_polygon( P->mMap, Polygon, 0, NULL, mList );
}
Vect_destroy_line_struct( Polygon );
}
for ( int i = 0; i < mList->n_values; i++ )
{
if ( mList->value[i] <= mSelectionSize )
{
mSelection[mList->value[i]] = 1;
}
else
{
QgsDebugMsg( "Selected element out of range" );
}
}
}
开发者ID:innotechsoftware,项目名称:Quantum-GIS,代码行数:64,代码来源:qgsgrassfeatureiterator.cpp
示例5: QgsDebugMsg
void QgsLabelDialog::apply()
{
QgsDebugMsg( "entering." );
//set the label props that are NOT bound to a field in the attributes tbl
//All of these are set in the labelAttributes member of the layer
QgsLabelAttributes * myLabelAttributes = mLabel->labelAttributes();
myLabelAttributes->setText( leDefaultLabel->text() );
myLabelAttributes->setFamily( mFont.family() );
int myTypeInt = cboFontSizeUnits->currentIndex() == 0 ? QgsLabelAttributes::PointUnits : QgsLabelAttributes::MapUnits;
myLabelAttributes->setSize( mFont.pointSizeF(), myTypeInt );
myLabelAttributes->setBold( mFont.bold() );
myLabelAttributes->setItalic( mFont.italic() );
myLabelAttributes->setUnderline( mFont.underline() );
myLabelAttributes->setStrikeOut( mFont.strikeOut() );
myLabelAttributes->setColor( mFontColor );
myTypeInt = cboOffsetUnits->currentIndex() == 0 ? QgsLabelAttributes::PointUnits : QgsLabelAttributes::MapUnits;
myLabelAttributes->setOffset( spinXOffset->value(), spinYOffset->value(), myTypeInt );
myLabelAttributes->setAutoAngle( spinAngle->value() == -1 );
myLabelAttributes->setAngle( spinAngle->value() );
//the values here may seem a bit counterintuitive - basically everything
//is the reverse of the way you think it should be...
//TODO investigate in QgsLabel why this needs to be the case
if ( radioAboveLeft->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignRight | Qt::AlignBottom );
if ( radioBelowLeft->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignRight | Qt::AlignTop );
if ( radioAboveRight->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignLeft | Qt::AlignBottom );
if ( radioBelowRight->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignLeft | Qt::AlignTop );
if ( radioLeft->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
if ( radioRight->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
if ( radioAbove->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignBottom | Qt::AlignHCenter );
if ( radioBelow->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignTop | Qt::AlignHCenter );
if ( radioOver->isChecked() ) myLabelAttributes->setAlignment( Qt::AlignCenter );
myLabelAttributes->setMultilineEnabled( chkUseMultiline->isChecked() );
myLabelAttributes->setSelectedOnly( chkSelectedOnly->isChecked() );
myLabelAttributes->setBufferEnabled( chkUseBuffer->isChecked() );
myLabelAttributes->setBufferColor( mBufferColor );
myTypeInt = cboBufferSizeUnits->currentIndex() == 0 ? QgsLabelAttributes::PointUnits : QgsLabelAttributes::MapUnits;
myLabelAttributes->setBufferSize( spinBufferSize->value(), myTypeInt );
//TODO - transparency attributes for buffers
//set the label props that are data bound to a field in the attributes tbl
mLabel->setLabelField( QgsLabel::Text, fieldIndexFromName( cboLabelField->currentText() ) );
mLabel->setLabelField( QgsLabel::Family, fieldIndexFromName( cboFontField->currentText() ) );
mLabel->setLabelField( QgsLabel::Bold, fieldIndexFromName( cboBoldField->currentText() ) );
mLabel->setLabelField( QgsLabel::Italic, fieldIndexFromName( cboItalicField->currentText() ) );
mLabel->setLabelField( QgsLabel::Underline, fieldIndexFromName( cboUnderlineField->currentText() ) );
mLabel->setLabelField( QgsLabel::StrikeOut, fieldIndexFromName( cboStrikeOutField->currentText() ) );
mLabel->setLabelField( QgsLabel::Size, fieldIndexFromName( cboFontSizeField->currentText() ) );
mLabel->setLabelField( QgsLabel::SizeType, fieldIndexFromName( cboFontSizeTypeField->currentText() ) );
mLabel->setLabelField( QgsLabel::Color, fieldIndexFromName( cboFontColorField->currentText() ) );
mLabel->setLabelField( QgsLabel::BufferSize, fieldIndexFromName( cboBufferSizeField->currentText() ) );
//mLabel->setLabelField( QgsLabel::BufferTransparency, cboBufferTransparencyField->currentText() );
mLabel->setLabelField( QgsLabel::XCoordinate, fieldIndexFromName( cboXCoordinateField->currentText() ) );
mLabel->setLabelField( QgsLabel::YCoordinate, fieldIndexFromName( cboYCoordinateField->currentText() ) );
mLabel->setLabelField( QgsLabel::XOffset, fieldIndexFromName( cboXOffsetField->currentText() ) );
mLabel->setLabelField( QgsLabel::YOffset, fieldIndexFromName( cboYOffsetField->currentText() ) );
mLabel->setLabelField( QgsLabel::Alignment, fieldIndexFromName( cboAlignmentField->currentText() ) );
mLabel->setLabelField( QgsLabel::Angle, fieldIndexFromName( cboAngleField->currentText() ) );
// set up the scale based layer visibility stuff....
mLabel->setScaleBasedVisibility( chkUseScaleDependentRendering->isChecked() );
mLabel->setMinScale( leMinimumScale->text().toFloat() );
mLabel->setMaxScale( leMaximumScale->text().toFloat() );
}
开发者ID:AaronGaim,项目名称:QGIS,代码行数:66,代码来源:qgslabeldialog.cpp
示例6: clearInvalidLines
void QgsDelimitedTextProvider::scanFile( bool buildIndexes )
{
QStringList messages;
// assume the layer is invalid until proven otherwise
mLayerValid = false;
mValid = false;
mRescanRequired = false;
clearInvalidLines();
// Initiallize indexes
resetIndexes();
bool buildSpatialIndex = buildIndexes && mSpatialIndex != 0;
// No point building a subset index if there is no geometry, as all
// records will be included.
bool buildSubsetIndex = buildIndexes && mBuildSubsetIndex && mGeomRep != GeomNone;
if ( ! mFile->isValid() )
{
// uri is invalid so the layer must be too...
messages.append( tr( "File cannot be opened or delimiter parameters are not valid" ) );
reportErrors( messages );
QgsDebugMsg( "Delimited text source invalid - filename or delimiter parameters" );
return;
}
// Open the file and get number of rows, etc. We assume that the
// file has a header row and process accordingly. Caller should make
// sure that the delimited file is properly formed.
if ( mGeomRep == GeomAsWkt )
{
mWktFieldIndex = mFile->fieldIndex( mWktFieldName );
if ( mWktFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "Wkt" ).arg( mWktFieldName ) );
}
}
else if ( mGeomRep == GeomAsXy )
{
mXFieldIndex = mFile->fieldIndex( mXFieldName );
mYFieldIndex = mFile->fieldIndex( mYFieldName );
if ( mXFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "X" ).arg( mWktFieldName ) );
}
if ( mYFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "Y" ).arg( mWktFieldName ) );
}
}
if ( messages.size() > 0 )
{
reportErrors( messages );
QgsDebugMsg( "Delimited text source invalid - missing geometry fields" );
return;
}
// Scan the entire file to determine
// 1) the number of fields (this is handled by QgsDelimitedTextFile mFile
// 2) the number of valid features. Note that the selection of valid features
// should match the code in QgsDelimitedTextFeatureIterator
// 3) the geometric extents of the layer
// 4) the type of each field
//
// Also build subset and spatial indexes.
QStringList parts;
long nEmptyRecords = 0;
long nBadFormatRecords = 0;
long nIncompatibleGeometry = 0;
long nInvalidGeometry = 0;
long nEmptyGeometry = 0;
mNumberFeatures = 0;
mExtent = QgsRectangle();
QList<bool> isEmpty;
QList<bool> couldBeInt;
QList<bool> couldBeDouble;
while ( true )
{
QgsDelimitedTextFile::Status status = mFile->nextRecord( parts );
if ( status == QgsDelimitedTextFile::RecordEOF ) break;
if ( status != QgsDelimitedTextFile::RecordOk )
{
nBadFormatRecords++;
recordInvalidLine( tr( "Invalid record format at line %1" ) );
continue;
}
// Skip over empty records
if ( recordIsEmpty( parts ) )
{
nEmptyRecords++;
//.........这里部分代码省略.........
开发者ID:sourcepole,项目名称:kadas-albireo,代码行数:101,代码来源:qgsdelimitedtextprovider.cpp
示例7: QgsVectorDataProvider
QgsDelimitedTextProvider::QgsDelimitedTextProvider( QString uri )
: QgsVectorDataProvider( uri )
, mLayerValid( false )
, mValid( false )
, mFile( 0 )
, mGeomRep( GeomNone )
, mFieldCount( 0 )
, mXFieldIndex( -1 )
, mYFieldIndex( -1 )
, mWktFieldIndex( -1 )
, mWktHasZM( false )
, mWktHasPrefix( false )
, mXyDms( false )
, mSubsetString( "" )
, mSubsetExpression( 0 )
, mBuildSubsetIndex( true )
, mUseSubsetIndex( false )
, mMaxInvalidLines( 50 )
, mShowInvalidLines( true )
, mRescanRequired( false )
, mCrs()
, mWkbType( QGis::WKBNoGeometry )
, mGeometryType( QGis::UnknownGeometry )
, mBuildSpatialIndex( false )
, mSpatialIndex( 0 )
{
mNativeTypes
<< QgsVectorDataProvider::NativeType( tr( "Whole number (integer)" ), "integer", QVariant::Int, 0, 10 )
<< QgsVectorDataProvider::NativeType( tr( "Decimal number (double)" ), "double precision", QVariant::Double, -1, -1, -1, -1 )
<< QgsVectorDataProvider::NativeType( tr( "Text, unlimited length (text)" ), "text", QVariant::String, -1, -1, -1, -1 )
;
QgsDebugMsg( "Delimited text file uri is " + uri );
QUrl url = QUrl::fromEncoded( uri.toAscii() );
mFile = new QgsDelimitedTextFile();
mFile->setFromUrl( url );
QString subset;
if ( url.hasQueryItem( "geomType" ) )
{
QString gtype = url.queryItemValue( "geomType" ).toLower();
if ( gtype == "point" ) mGeometryType = QGis::Point;
else if ( gtype == "line" ) mGeometryType = QGis::Line;
else if ( gtype == "polygon" ) mGeometryType = QGis::Polygon;
else if ( gtype == "none " ) mGeometryType = QGis::NoGeometry;
}
if ( mGeometryType != QGis::NoGeometry )
{
if ( url.hasQueryItem( "wktField" ) )
{
mWktFieldName = url.queryItemValue( "wktField" );
mGeomRep = GeomAsWkt;
QgsDebugMsg( "wktField is: " + mWktFieldName );
}
else if ( url.hasQueryItem( "xField" ) && url.hasQueryItem( "yField" ) )
{
mGeomRep = GeomAsXy;
mGeometryType = QGis::Point;
mXFieldName = url.queryItemValue( "xField" );
mYFieldName = url.queryItemValue( "yField" );
QgsDebugMsg( "xField is: " + mXFieldName );
QgsDebugMsg( "yField is: " + mYFieldName );
if ( url.hasQueryItem( "xyDms" ) )
{
mXyDms = ! url.queryItemValue( "xyDms" ).toLower().startsWith( "n" );
}
}
else
{
mGeometryType = QGis::NoGeometry;
}
}
if ( url.hasQueryItem( "decimalPoint" ) )
mDecimalPoint = url.queryItemValue( "decimalPoint" );
if ( url.hasQueryItem( "crs" ) )
mCrs.createFromString( url.queryItemValue( "crs" ) );
if ( url.hasQueryItem( "subsetIndex" ) )
{
mBuildSubsetIndex = ! url.queryItemValue( "subsetIndex" ).toLower().startsWith( "n" );
}
if ( url.hasQueryItem( "spatialIndex" ) )
{
mBuildSpatialIndex = ! url.queryItemValue( "spatialIndex" ).toLower().startsWith( "n" );
}
if ( url.hasQueryItem( "subset" ) )
{
subset = url.queryItemValue( "subset" );
QgsDebugMsg( "subset is: " + subset );
}
if ( url.hasQueryItem( "quiet" ) ) mShowInvalidLines = false;
//.........这里部分代码省略.........
开发者ID:sourcepole,项目名称:kadas-albireo,代码行数:101,代码来源:qgsdelimitedtextprovider.cpp
示例8: main
int main( int argc, char * argv[] )
{
#ifndef _MSC_VER
qInstallMsgHandler( dummyMessageHandler );
#endif
QgsApplication qgsapp( argc, argv, getenv( "DISPLAY" ) );
//Default prefix path may be altered by environment variable
char* prefixPath = getenv( "QGIS_PREFIX_PATH" );
if ( prefixPath )
{
QgsApplication::setPrefixPath( prefixPath, TRUE );
}
#if !defined(Q_OS_WIN)
else
{
// init QGIS's paths - true means that all path will be inited from prefix
QgsApplication::setPrefixPath( CMAKE_INSTALL_PREFIX, TRUE );
}
#endif
// Instantiate the plugin directory so that providers are loaded
QgsProviderRegistry::instance( QgsApplication::pluginPath() );
QgsDebugMsg( "Prefix PATH: " + QgsApplication::prefixPath() );
QgsDebugMsg( "Plugin PATH: " + QgsApplication::pluginPath() );
QgsDebugMsg( "PkgData PATH: " + QgsApplication::pkgDataPath() );
QgsDebugMsg( "User DB PATH: " + QgsApplication::qgisUserDbFilePath() );
QgsDebugMsg( qgsapp.applicationDirPath() + "/qgis_wms_server.log" );
//create config cache and search for config files in the current directory.
//These configurations are used if no mapfile parameter is present in the request
QString defaultConfigFilePath;
QFileInfo projectFileInfo = defaultProjectFile(); //try to find a .qgs file in the server directory
if ( projectFileInfo.exists() )
{
defaultConfigFilePath = projectFileInfo.absoluteFilePath();
}
else
{
QFileInfo adminSLDFileInfo = defaultAdminSLD();
if ( adminSLDFileInfo.exists() )
{
defaultConfigFilePath = adminSLDFileInfo.absoluteFilePath();
}
}
//create cache for capabilities XML
QgsCapabilitiesCache capabilitiesCache;
//creating QgsMapRenderer is expensive (access to srs.db), so we do it here before the fcgi loop
QgsMapRenderer* theMapRenderer = new QgsMapRenderer();
while ( fcgi_accept() >= 0 )
{
printRequestInfos(); //print request infos if in debug mode
//use QgsGetRequestHandler in case of HTTP GET and QgsSOAPRequestHandler in case of HTTP POST
QgsRequestHandler* theRequestHandler = 0;
char* requestMethod = getenv( "REQUEST_METHOD" );
if ( requestMethod != NULL )
{
if ( strcmp( requestMethod, "POST" ) == 0 )
{
//QgsDebugMsg( "Creating QgsSOAPRequestHandler" );
//theRequestHandler = new QgsSOAPRequestHandler();
theRequestHandler = new QgsPostRequestHandler();
}
else
{
QgsDebugMsg( "Creating QgsGetRequestHandler" );
theRequestHandler = new QgsGetRequestHandler();
}
}
else
{
QgsDebugMsg( "Creating QgsGetRequestHandler" );
theRequestHandler = new QgsGetRequestHandler();
}
QMap<QString, QString> parameterMap;
try
{
parameterMap = theRequestHandler->parseInput();
}
catch ( QgsMapServiceException& e )
{
QgsDebugMsg( "An exception was thrown during input parsing" );
theRequestHandler->sendServiceException( e );
continue;
}
QMap<QString, QString>::const_iterator paramIt;
//set admin config file to wms server object
QString configFilePath( defaultConfigFilePath );
paramIt = parameterMap.find( "MAP" );
//.........这里部分代码省略.........
开发者ID:coyotte508,项目名称:Quantum-GIS,代码行数:101,代码来源:qgis_map_serv.cpp
示例9: csvtInfo
QStringList QgsDelimitedTextProvider::readCsvtFieldTypes( QString filename, QString *message )
{
// Look for a file with the same name as the data file, but an extra 't' or 'T' at the end
QStringList types;
QFileInfo csvtInfo( filename + 't' );
if ( ! csvtInfo.exists() ) csvtInfo.setFile( filename + 'T' );
if ( ! csvtInfo.exists() ) return types;
QFile csvtFile( csvtInfo.filePath() );
if ( ! csvtFile.open( QIODevice::ReadOnly ) ) return types;
// If anything goes wrong here, just ignore it, as the file
// is not valid, so just ignore any exceptions.
// For it to be valid, there must be just one non blank line at the beginning of the
// file.
QString strTypeList;
try
{
QTextStream csvtStream( &csvtFile );
strTypeList = csvtStream.readLine();
if ( strTypeList.isEmpty() ) return types;
QString extra = csvtStream.readLine();
while ( ! extra.isNull() )
{
if ( ! extra.isEmpty() ) return types;
extra = csvtStream.readLine();
}
}
catch ( ... )
{
return types;
}
csvtFile.close();
// Is the type string valid?
// This is a slightly generous regular expression in that it allows spaces and unquoted field types
// not allowed in OGR CSVT files. Also doesn't care if int and string fields have
strTypeList = strTypeList.toLower();
QRegExp reTypeList( "^(?:\\s*(\\\"?)(?:integer|real|string|date|datetime|time)(?:\\(\\d+(?:\\.\\d+)?\\))?\\1\\s*(?:,|$))+" );
if ( ! reTypeList.exactMatch( strTypeList ) )
{
// Looks like this was supposed to be a CSVT file, so report bad formatted string
if ( message ) { *message = tr( "File type string in %1 is not correctly formatted" ).arg( csvtInfo.fileName() ); }
return types;
}
// All good, so pull out the types from the string. Currently only returning integer, real, and string types
QgsDebugMsg( QString( "Reading field types from %1" ).arg( csvtInfo.fileName() ) );
QgsDebugMsg( QString( "Field type string: %1" ).arg( strTypeList ) );
int pos = 0;
QRegExp reType( "(integer|real|string|date|datetime|time)" );
while (( pos = reType.indexIn( strTypeList, pos ) ) != -1 )
{
QgsDebugMsg( QString( "Found type: %1" ).arg( reType.cap( 1 ) ) );
types << reType.cap( 1 );
pos += reType.matchedLength();
}
if ( message )
{
// Would be a useful info message, but don't want dialog to pop up every time...
// *message=tr("Reading field types from %1").arg(csvtInfo.fileName());
}
return types;
}
开发者ID:sourcepole,项目名称:kadas-albireo,代码行数:75,代码来源:qgsdelimitedtextprovider.cpp
示例10: QProgressDialog
bool QgsSLConnectionItem::handleDrop( const QMimeData * data, Qt::DropAction )
{
if ( !QgsMimeDataUtils::isUriList( data ) )
return false;
// TODO: probably should show a GUI with settings etc
QgsDataSourceURI destUri;
destUri.setDatabase( mDbPath );
qApp->setOverrideCursor( Qt::WaitCursor );
QProgressDialog *progress = new QProgressDialog( tr( "Copying features..." ), tr( "Abort" ), 0, 0, nullptr );
progress->setWindowTitle( tr( "Import layer" ) );
progress->setWindowModality( Qt::WindowModal );
progress->show();
QStringList importResults;
bool hasError = false;
bool cancelled = false;
QgsMimeDataUtils::UriList lst = QgsMimeDataUtils::decodeUriList( data );
Q_FOREACH ( const QgsMimeDataUtils::Uri& u, lst )
{
if ( u.layerType != "vector" )
{
importResults.append( tr( "%1: Not a vector layer!" ).arg( u.name ) );
hasError = true; // only vectors can be imported
continue;
}
// open the source layer
QgsVectorLayer* srcLayer = new QgsVectorLayer( u.uri, u.name, u.providerKey );
if ( srcLayer->isValid() )
{
destUri.setDataSource( QString(), u.name, srcLayer->geometryType() != QGis::NoGeometry ? "geom" : QString() );
QgsDebugMsg( "URI " + destUri.uri() );
QgsVectorLayerImport::ImportError err;
QString importError;
err = QgsVectorLayerImport::importLayer( srcLayer, destUri.uri(), "spatialite", &srcLayer->crs(), false, &importError, false, nullptr, progress );
if ( err == QgsVectorLayerImport::NoError )
importResults.append( tr( "%1: OK!" ).arg( u.name ) );
else if ( err == QgsVectorLayerImport::ErrUserCancelled )
cancelled = true;
else
{
importResults.append( QString( "%1: %2" ).arg( u.name, importError ) );
hasError = true;
}
}
else
{
importResults.append( tr( "%1: OK!" ).arg( u.name ) );
hasError = true;
}
delete srcLayer;
}
delete progress;
qApp->restoreOverrideCursor();
if ( cancelled )
{
QMessageBox::information( nullptr, tr( "Import to SpatiaLite database" ), tr( "Import cancelled." ) );
refresh();
}
else if ( hasError )
{
QgsMessageOutput *output = QgsMessageOutput::createMessageOutput();
output->setTitle( tr( "Import to SpatiaLite database" ) );
output->setMessage( tr( "Failed to import some layers!\n\n" ) + importResults.join( "\n" ), QgsMessageOutput::MessageText );
output->showMessage();
}
else
{
QMessageBox::information( nullptr, tr( "Import to SpatiaLite database" ), tr( "Import was successful." ) );
refresh();
}
return true;
}
开发者ID:ReKungPaw,项目名称:QGIS,代码行数:84,代码来源:qgsspatialitedataitems.cpp
示例11: QgsDebugMsg
void QgsVectorLayerEditBuffer::undoIndexChanged( int index )
{
QgsDebugMsg( QString( "undo index changed %1" ).arg( index ) );
Q_UNUSED( index );
emit layerModified();
}
开发者ID:AM7000000,项目名称:QGIS,代码行数:6,代码来源:qgsvectorlayereditbuffer.cpp
示例12: setCaretWidth
void QgsCodeEditorPython::setSciLexerPython()
{
// current line
setCaretWidth( 2 );
setEdgeMode( QsciScintilla::EdgeLine );
setEdgeColumn( 80 );
setEdgeColor( QColor( "#FF0000" ) );
setWhitespaceVisibility( QsciScintilla::WsVisibleAfterIndent );
QFont font = getMonospaceFont();
QsciLexerPython* pyLexer = new QsciLexerPython( this );
pyLexer->setDefaultFont( font );
pyLexer->setFont( font, 1 ); // comment
pyLexer->setFont( font, 3 ); // singlequotes
pyLexer->setFont( font, 4 ); // doublequotes
pyLexer->setFont( font, 6 ); // triplequotes
pyLexer->setColor( Qt::red, 1 ); // comment color
pyLexer->setColor( Qt::darkGreen, 5 ); // keyword color
pyLexer->setColor( Qt::darkBlue, 15 ); // decorator color
QsciAPIs* apis = new QsciAPIs( pyLexer );
// check if the file is a prepared apis file.
//QString mPapFileName = QFileInfo( mAPISFilesList[0] ).fileName();
//QString isPapFile = mPapFileName.right( 3 );
//QgsDebugMsg( QString( "file extension: %1" ).arg( isPapFile ) );
if ( mAPISFilesList.isEmpty() )
{
mPapFile = QgsApplication::pkgDataPath() + "/python/qsci_apis/pyqgis.pap";
apis->loadPrepared( mPapFile );
}
else if ( mAPISFilesList.length() == 1 && mAPISFilesList[0].right( 3 ) == "pap" )
{
if ( !QFileInfo( mAPISFilesList[0] ).exists() )
{
QgsDebugMsg( QString( "The apis file %1 not found" ).arg( mAPISFilesList[0] ) );
return;
}
mPapFile = mAPISFilesList[0];
apis->loadPrepared( mPapFile );
}
else
{
for ( int i = 0; i < mAPISFilesList.size(); i++ )
{
if ( !QFileInfo( mAPISFilesList[i] ).exists() )
{
QgsDebugMsg( QString( "The apis file %1 was not found" ).arg( mAPISFilesList[i] ) );
return;
}
else
{
apis->load( mAPISFilesList[i] );
}
}
apis->prepare();
pyLexer->setAPIs( apis );
}
setLexer( pyLexer );
setMarginVisible( true );
setFoldingVisible( true );
}
开发者ID:nicanor-b,项目名称:QGIS,代码行数:67,代码来源:qgscodeeditorpython.cpp
示例13: QgsDebugMsg
void QgsGrassFeatureIterator::resetSelection( bool sel )
{
QgsDebugMsg( "entered." );
memset( mSelection, ( int ) sel, mSelectionSize );
mNextCidx = 0;
}
开发者ID:innotechsoftware,项目名称:Quantum-GIS,代码行数:6,代码来源:qgsgrassfeatureiterator.cpp
示例14: resetIndexes
void QgsDelimitedTextProvider::rescanFile()
{
mRescanRequired = false;
resetIndexes();
bool buildSpatialIndex = mSpatialIndex != 0;
bool buildSubsetIndex = mBuildSubsetIndex && ( mSubsetExpression || mGeomRep != GeomNone );
// In case file has been rewritten check that it is still valid
mValid = mLayerValid && mFile->isValid();
if ( ! mValid ) return;
// Open the file and get number of rows, etc. We assume that the
// file has a header row and process accordingly. Caller should make
// sure that the delimited file is properly formed.
QStringList messages;
if ( mGeomRep == GeomAsWkt )
{
mWktFieldIndex = mFile->fieldIndex( mWktFieldName );
if ( mWktFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "Wkt" ).arg( mWktFieldName ) );
}
}
else if ( mGeomRep == GeomAsXy )
{
mXFieldIndex = mFile->fieldIndex( mXFieldName );
mYFieldIndex = mFile->fieldIndex( mYFieldName );
if ( mXFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "X" ).arg( mWktFieldName ) );
}
if ( mYFieldIndex < 0 )
{
messages.append( tr( "%0 field %1 is not defined in delimited text file" ).arg( "Y" ).arg( mWktFieldName ) );
}
}
if ( messages.size() > 0 )
{
reportErrors( messages, false );
QgsDebugMsg( "Delimited text source invalid on rescan - missing geometry fields" );
mValid = false;
return;
}
// Reset the field columns
for ( int i = 0; i < attributeFields.size(); i++ )
{
attributeColumns[i] = mFile->fieldIndex( attributeFields[i].name() );
}
// Scan through the features in the file
mSubsetIndex.clear();
mUseSubsetIndex = false;
QgsFeatureIterator fi = getFeatures( QgsFeatureRequest() );
mNumberFeatures = 0;
mExtent = QgsRectangle();
QgsFeature f;
while ( fi.nextFeature( f ) )
{
if ( mGeometryType != QGis::NoGeometry )
{
if ( mNumberFeatures == 0 )
{
mExtent = f.geometry()->boundingBox();
}
else
{
QgsRectangle bbox( f.geometry()->boundingBox() );
mExtent.combineExtentWith( &bbox );
}
if ( buildSpatialIndex ) mSpatialIndex->insertFeature( f );
}
if ( buildSubsetIndex ) mSubsetIndex.append(( quintptr ) f.id() );
mNumberFeatures++;
}
if ( buildSubsetIndex )
{
long recordCount = mFile->recordCount();
recordCount -= recordCount / SUBSET_ID_THRESHOLD_FACTOR;
mUseSubsetIndex = recordCount < mSubsetIndex.size();
if ( ! mUseSubsetIndex ) mSubsetIndex.clear();
}
mUseSpatialIndex = buildSpatialIndex;
}
开发者ID:sourcepole,项目名称:kadas-albireo,代码行数:91,代码来源:qgsdelimitedtextprovider.cpp
示例15: Vect_read_line
void QgsGrassFeatureIterator::setFeatureGeometry( QgsFeature& feature, int id, int type )
{
unsigned char *wkb;
int wkbsize;
// TODO int may be 64 bits (memcpy)
if ( type & ( GV_POINTS | GV_LINES | GV_FACE ) ) /* points or lines */
{
Vect_read_line( P->mMap, mPoints, mCats, id );
int npoints = mPoints->n_points;
if ( type & GV_POINTS )
{
wkbsize = 1 + 4 + 2 * 8;
}
else if ( type & GV_LINES )
{
wkbsize = 1 + 4 + 4 + npoints * 2 * 8;
}
else // GV_FACE
{
wkbsize = 1 + 4 + 4 + 4 + npoints * 2 * 8;
}
wkb = new unsigned char[wkbsize];
unsigned char *wkbp = wkb;
wkbp[0] = ( unsigned char ) QgsApplication::endian();
wkbp += 1;
/* WKB type */
memcpy( wkbp, &P->mQgisType, 4 );
wkbp += 4;
/* Number of rings */
if ( type & GV_FACE )
{
int nrings = 1;
memcpy( wkbp, &nrings, 4 );
wkbp += 4;
}
/* number of points */
if ( type & ( GV_LINES | GV_FACE ) )
{
QgsDebugMsg( QString( "set npoints = %1" ).arg( npoints ) );
memcpy( wkbp, &npoints, 4 );
wkbp += 4;
}
for ( int i = 0; i < npoints; i++ )
{
memcpy( wkbp, &( mPoints->x[i] ), 8 );
memcpy( wkbp + 8, &( mPoints->y[i] ), 8 );
wkbp += 16;
}
}
else // GV_AREA
{
Vect_get_area_points( P->mMap, id, mPoints );
int npoints = mPoints->n_points;
wkbsize = 1 + 4 + 4 + 4 + npoints * 2 * 8; // size without islands
wkb = new unsigned char[wkbsize];
wkb[0] = ( unsigned char ) QgsApplication::endian();
int offset = 1;
/* WKB type */
memcpy( wkb + offset, &P->mQgisType, 4 );
offset += 4;
/* Number of rings */
int nisles = Vect_get_area_num_isles( P->mMap, id );
int nrings = 1 + nisles;
memcpy( wkb + offset, &nrings, 4 );
offset += 4;
/* Outer ring */
memcpy( wkb + offset, &npoints, 4 );
offset += 4;
for ( int i = 0; i < npoints; i++ )
{
memcpy( wkb + offset, &( mPoints->x[i] ), 8 );
memcpy( wkb + offset + 8, &( mPoints->y[i] ), 8 );
offset += 16;
}
/* Isles */
for ( int i = 0; i < nisles; i++ )
{
Vect_get_isle_points( P->mMap, Vect_get_area_isle( P->mMap, id, i ), mPoints );
npoints = mPoints->n_points;
// add space
wkbsize += 4 + npoints * 2 * 8;
wkb = ( unsigned char * ) realloc( wkb, wkbsize );
memcpy( wkb + offset, &npoints, 4 );
offset += 4;
for ( int i = 0; i < npoints; i++ )
{
memcpy( wkb + offset, &( mPoints->x[i] ), 8 );
//.........这里部分代码省略.........
开发者ID:innotechsoftware,项目名称:Quantum-GIS,代码行数:101,代码来源:qgsgrassfeatureiterator.cpp
示例16: Q_UNUSED
bool QgsCustomizationDialog::switchWidget( QWidget *widget, QMouseEvent *e )
{
Q_UNUSED( e );
QgsDebugMsg( "Entered" );
if ( !actionCatch->isChecked() )
return false;
QString path = widgetPath( widget );
QgsDebugMsg( "path = " + path );
if ( path.startsWith( "/QgsCustomizationDialogBase" ) )
{
// do not allow modification of this dialog
return false;
}
else if ( path.startsWith( "/QgisApp" ) )
{
// changes to main window
// (work with toolbars, tool buttons)
if ( widget->inherits( "QToolBar" ) )
{
path = "/Toolbars/" + widget->objectName();
}
else if ( widget->inherits( "QToolButton" ) )
{
QToolButton* toolbutton = qobject_cast<QToolButton*>( widget );
QAction* action = toolbutton->defaultAction();
if ( !action )
return false;
QString toolbarName = widget->parent()->objectName();
QString actionName = action->objectName();
path = "/Toolbars/" + toolbarName + "/" + actionName;
}
else
{
// unsupported widget in main window
return false;
}
}
else
{
// ordinary widget in a dialog
path = "/Widgets" + path;
}
QgsDebugMsg( "path final = " + path );
bool on = !itemChecked( path );
QgsDebugMsg( QString( "on = %1" ).arg( on ) );
setItemChecked( path, on );
QTreeWidgetItem *myItem = item( path );
if ( myItem )
{
treeWidget->scrollToItem( myItem, QAbstractItemView::PositionAtCenter );
treeWidget->clearSelection();
myItem->setSelected( true );
QString style;
if ( !on )
{
style = "background-color: #FFCCCC;";
}
widget->setStyleSheet( style );
}
return true;
}
开发者ID:dionhouston,项目名称:QGIS,代码行数:67,代码来源:qgscustomization.cpp
示例17: QMainWindow
QgsCustomizationDialog::QgsCustomizationDialog( QWidget *parent, QSettings* settings )
: QMainWindow( parent, Qt::WindowS
|
请发表评论