void TMyApp::handleEvent(TEvent& event) { TApplication::handleEvent(event); if( event.what == evCommand ) { switch( event.message.command ) { case cmMyNewWin: newWindow(); break; case cmNewDialog: newDialog(); break; default: return; } clearEvent( event ); // clear event after handling } }
bool QgsFeatureAction::editFeature() { bool res = false; if ( !mLayer ) return res; QgsAttributeDialog *dialog = newDialog( false ); if ( !mLayer->isEditable() ) { res = dialog->exec(); } else { QgsAttributeMap src = mFeature.attributeMap(); if ( dialog->exec() ) { mLayer->beginEditCommand( text() ); const QgsAttributeMap &dst = mFeature.attributeMap(); for ( QgsAttributeMap::const_iterator it = dst.begin(); it != dst.end(); it++ ) { if ( !src.contains( it.key() ) || it.value() != src[it.key()] ) { mLayer->changeAttributeValue( mFeature.id(), it.key(), it.value() ); } } mLayer->endEditCommand(); res = true; } else { res = false; } } delete dialog; return res; }
bool QgsFeatureAction::editFeature() { bool res = false; if ( !mLayer ) return res; QgsAttributeDialog *dialog = newDialog( false ); if ( !mLayer->isEditable() ) { res = dialog->exec(); } else { QgsAttributes src = mFeature.attributes(); if ( dialog->exec() ) { mLayer->beginEditCommand( text() ); const QgsAttributes &dst = mFeature.attributes(); for ( int i = 0; i < dst.count(); ++i ) { if ( dst[i] != src[i] ) { mLayer->changeAttributeValue( mFeature.id(), i, dst[i], src[i] ); } } mLayer->endEditCommand(); res = true; } else { res = false; } } delete dialog; return res; }
void KonqNewSessionDlg::slotAddSession() { QString dirpath = KStandardDirs::locateLocal("appdata", "sessions/" + KIO::encodeFileName(d->m_pSessionName->text())); QDir dir(dirpath); if(dir.exists()) { if(KMessageBox::questionYesNo(this, i18n("A session with the name '%1' already exists, do you want to overwrite it?", d->m_pSessionName->text()), i18nc("@title:window", "Session exists. Overwrite?")) == KMessageBox::Yes) { KTempDir::removeDir(dirpath); } else { KonqNewSessionDlg newDialog(d->m_pParent, d->m_pSessionName->text()); newDialog.exec(); } } KonqSessionManager::self()->saveCurrentSessions(dirpath); }
void KonqSessionDlg::slotNew() { KonqNewSessionDlg newDialog(this); newDialog.exec(); }
bool QgsFeatureAction::addFeature() { if ( !mLayer || !mLayer->isEditable() ) return false; QgsVectorDataProvider *provider = mLayer->dataProvider(); QSettings settings; bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); QgsDebugMsg( QString( "reuseLastValues: %1" ).arg( reuseLastValues ) ); // add the fields to the QgsFeature const QgsFieldMap fields = mLayer->pendingFields(); for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it ) { if ( reuseLastValues && mLastUsedValues.contains( mLayer ) && mLastUsedValues[ mLayer ].contains( it.key() ) ) { QgsDebugMsg( QString( "reusing %1 for %2" ).arg( mLastUsedValues[ mLayer ][ it.key()].toString() ).arg( it.key() ) ); mFeature.addAttribute( it.key(), mLastUsedValues[ mLayer ][ it.key()] ); } else { mFeature.addAttribute( it.key(), provider->defaultValue( it.key() ) ); } } bool res = false; mLayer->beginEditCommand( text() ); // show the dialog to enter attribute values bool isDisabledAttributeValuesDlg = settings.value( "/qgis/digitizing/disable_enter_attribute_values_dialog", false ).toBool(); if ( isDisabledAttributeValuesDlg ) { res = mLayer->addFeature( mFeature ); } else { QgsAttributeMap origValues; if ( reuseLastValues ) origValues = mFeature.attributeMap(); QgsAttributeDialog *dialog = newDialog( false ); if ( dialog->exec() ) { if ( reuseLastValues ) { for ( QgsFieldMap::const_iterator it = fields.constBegin(); it != fields.constEnd(); ++it ) { const QgsAttributeMap &newValues = mFeature.attributeMap(); if ( newValues.contains( it.key() ) && origValues.contains( it.key() ) && origValues[ it.key()] != newValues[ it.key()] ) { QgsDebugMsg( QString( "saving %1 for %2" ).arg( mLastUsedValues[ mLayer ][ it.key()].toString() ).arg( it.key() ) ); mLastUsedValues[ mLayer ][ it.key()] = newValues[ it.key()]; } } } res = mLayer->addFeature( mFeature ); } else { QgsDebugMsg( "Adding feature to layer failed" ); res = false; } } if ( res ) mLayer->endEditCommand(); else mLayer->destroyEditCommand(); return res; }
bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes, bool showModal ) { if ( !mLayer || !mLayer->isEditable() ) return false; QgsVectorDataProvider *provider = mLayer->dataProvider(); QSettings settings; bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); QgsDebugMsg( QString( "reuseLastValues: %1" ).arg( reuseLastValues ) ); // add the fields to the QgsFeature const QgsFields& fields = mLayer->fields(); mFeature->initAttributes( fields.count() ); for ( int idx = 0; idx < fields.count(); ++idx ) { QVariant v; if ( defaultAttributes.contains( idx ) ) { v = defaultAttributes.value( idx ); } else if ( reuseLastValues && sLastUsedValues.contains( mLayer ) && sLastUsedValues[ mLayer ].contains( idx ) ) { v = sLastUsedValues[ mLayer ][idx]; } else { v = provider->defaultValue( idx ); } mFeature->setAttribute( idx, v ); } //show the dialog to enter attribute values //only show if enabled in settings and layer has fields bool isDisabledAttributeValuesDlg = ( fields.count() == 0 ) || settings.value( "/qgis/digitizing/disable_enter_attribute_values_dialog", false ).toBool(); // override application-wide setting with any layer setting switch ( mLayer->editFormConfig()->suppress() ) { case QgsEditFormConfig::SuppressOn: isDisabledAttributeValuesDlg = true; break; case QgsEditFormConfig::SuppressOff: isDisabledAttributeValuesDlg = false; break; case QgsEditFormConfig::SuppressDefault: break; } if ( isDisabledAttributeValuesDlg ) { mLayer->beginEditCommand( text() ); mFeatureSaved = mLayer->addFeature( *mFeature ); if ( mFeatureSaved ) mLayer->endEditCommand(); else mLayer->destroyEditCommand(); } else { QgsAttributeDialog *dialog = newDialog( false ); dialog->setIsAddDialog( true ); dialog->setEditCommandMessage( text() ); connect( dialog->attributeForm(), SIGNAL( featureSaved( const QgsFeature & ) ), this, SLOT( onFeatureSaved( const QgsFeature & ) ) ); if ( !showModal ) { setParent( dialog ); // keep dialog until the dialog is closed and destructed dialog->show(); // will also delete the dialog on close (show() is overridden) mFeature = 0; return true; } dialog->setAttribute( Qt::WA_DeleteOnClose ); dialog->exec(); } // Will be set in the onFeatureSaved SLOT return mFeatureSaved; }
void on_windowModalPrintDialogButton_clicked() { newDialog(PrintDialogType, Qt::WindowModal); }
void on_applicationModalColorDialogButton_clicked() { newDialog(ColorDialogType, Qt::ApplicationModal); }
void on_windowModalColorDialogButton_clicked() { newDialog(ColorDialogType, Qt::WindowModal); }
void on_windowModalCustomDialogButton_clicked() { newDialog(CustomDialogType, Qt::WindowModal); }
void on_modelessFontDialogButton_clicked() { newDialog(FontDialogType, Qt::NonModal); }
void on_modelessColorDialogButton_clicked() { newDialog(ColorDialogType, Qt::NonModal); }
void on_applicationModalPrintDialogButton_clicked() { newDialog(PrintDialogType, Qt::ApplicationModal); }
void on_applicationModalPageSetupDialogButton_clicked() { newDialog(PageSetupDialogType, Qt::ApplicationModal); }
void on_applicationModalFileDialogButton_clicked() { newDialog(FileDialogType, Qt::ApplicationModal); }
void on_windowModalFileDialogButton_clicked() { newDialog(FileDialogType, Qt::WindowModal); }
void on_windowModalPageSetupDialogButton_clicked() { newDialog(PageSetupDialogType, Qt::WindowModal); }
bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes ) { if ( !mLayer || !mLayer->isEditable() ) return false; QgsVectorDataProvider *provider = mLayer->dataProvider(); QSettings settings; bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); QgsDebugMsg( QString( "reuseLastValues: %1" ).arg( reuseLastValues ) ); // add the fields to the QgsFeature const QgsFields& fields = mLayer->pendingFields(); mFeature.initAttributes( fields.count() ); for ( int idx = 0; idx < fields.count(); ++idx ) { if ( defaultAttributes.contains( idx ) ) { QgsDebugMsg( QString( "Using specified default %1 for %2" ).arg( defaultAttributes.value( idx ).toString() ).arg( idx ) ); mFeature.setAttribute( idx, defaultAttributes.value( idx ) ); } else if ( reuseLastValues && mLastUsedValues.contains( mLayer ) && mLastUsedValues[ mLayer ].contains( idx ) ) { QgsDebugMsg( QString( "reusing %1 for %2" ).arg( mLastUsedValues[ mLayer ][idx].toString() ).arg( idx ) ); mFeature.setAttribute( idx, mLastUsedValues[ mLayer ][idx] ); } else { mFeature.setAttribute( idx, provider->defaultValue( idx ) ); } } bool res = false; mLayer->beginEditCommand( text() ); // show the dialog to enter attribute values bool isDisabledAttributeValuesDlg = settings.value( "/qgis/digitizing/disable_enter_attribute_values_dialog", false ).toBool(); // override application-wide setting with any layer setting switch ( mLayer->featureFormSuppress() ) { case QgsVectorLayer::SuppressOn: isDisabledAttributeValuesDlg = true; break; case QgsVectorLayer::SuppressOff: isDisabledAttributeValuesDlg = false; break; case QgsVectorLayer::SuppressDefault: break; } if ( isDisabledAttributeValuesDlg ) { res = mLayer->addFeature( mFeature ); } else { QgsAttributes origValues; if ( reuseLastValues ) origValues = mFeature.attributes(); QgsAttributeDialog *dialog = newDialog( false ); if ( dialog->exec() ) { if ( reuseLastValues ) { for ( int idx = 0; idx < fields.count(); ++idx ) { const QgsAttributes &newValues = mFeature.attributes(); if ( origValues[idx] != newValues[idx] ) { QgsDebugMsg( QString( "saving %1 for %2" ).arg( mLastUsedValues[ mLayer ][idx].toString() ).arg( idx ) ); mLastUsedValues[ mLayer ][idx] = newValues[idx]; } } } res = mLayer->addFeature( mFeature ); } else { QgsDebugMsg( "Adding feature to layer failed" ); res = false; } } if ( res ) mLayer->endEditCommand(); else mLayer->destroyEditCommand(); return res; }
bool QgsFeatureAction::addFeature( const QgsAttributeMap& defaultAttributes ) { if ( !mLayer || !mLayer->isEditable() ) return false; QgsVectorDataProvider *provider = mLayer->dataProvider(); QSettings settings; bool reuseLastValues = settings.value( "/qgis/digitizing/reuseLastValues", false ).toBool(); QgsDebugMsg( QString( "reuseLastValues: %1" ).arg( reuseLastValues ) ); // add the fields to the QgsFeature const QgsFields& fields = mLayer->pendingFields(); mFeature.initAttributes( fields.count() ); for ( int idx = 0; idx < fields.count(); ++idx ) { QVariant v; if ( defaultAttributes.contains( idx ) ) { v = defaultAttributes.value( idx ); } else if ( reuseLastValues && sLastUsedValues.contains( mLayer ) && sLastUsedValues[ mLayer ].contains( idx ) ) { v = sLastUsedValues[ mLayer ][idx]; } else { v = provider->defaultValue( idx ); } mFeature.setAttribute( idx, v ); } // show the dialog to enter attribute values bool isDisabledAttributeValuesDlg = settings.value( "/qgis/digitizing/disable_enter_attribute_values_dialog", false ).toBool(); // override application-wide setting with any layer setting switch ( mLayer->featureFormSuppress() ) { case QgsVectorLayer::SuppressOn: isDisabledAttributeValuesDlg = true; break; case QgsVectorLayer::SuppressOff: isDisabledAttributeValuesDlg = false; break; case QgsVectorLayer::SuppressDefault: break; } if ( isDisabledAttributeValuesDlg ) { mLayer->beginEditCommand( text() ); mFeatureSaved = mLayer->addFeature( mFeature ); if ( mFeatureSaved ) mLayer->endEditCommand(); else mLayer->destroyEditCommand(); } else { QgsAttributeDialog *dialog = newDialog( false ); dialog->setIsAddDialog( true ); dialog->setEditCommandMessage( text() ); connect( dialog->attributeForm(), SIGNAL( featureSaved( QgsFeature ) ), this, SLOT( onFeatureSaved( QgsFeature ) ) ); dialog->exec(); } // Will be set in the onFeatureSaved SLOT return mFeatureSaved; }