static int qtuiloader_setWorkingDirectory(lua_State *L) { QUiLoader *loader = luaQ_checkqobject<QUiLoader>(L, 1); const char *dir = luaL_checkstring(L, 2); loader->setWorkingDirectory(QDir(QFile::decodeName(dir))); return 0; }
void QgisAppInterface::cacheloadForm( QString uifile ) { QFile file( uifile ); if ( file.open( QFile::ReadOnly ) ) { QUiLoader loader; QFileInfo fi( uifile ); loader.setWorkingDirectory( fi.dir() ); QWidget *myWidget = loader.load( &file ); file.close(); delete myWidget; } }
QWidget *QgsFormAnnotation::createDesignerWidget( const QString &filePath ) { QFile file( filePath ); if ( !file.open( QFile::ReadOnly ) ) { return nullptr; } QUiLoader loader; QFileInfo fi( file ); loader.setWorkingDirectory( fi.dir() ); QWidget *widget = loader.load( &file, nullptr ); file.close(); //get feature and set attribute information QgsAttributeEditorContext context; QgsVectorLayer *vectorLayer = qobject_cast< QgsVectorLayer * >( mapLayer() ); if ( vectorLayer && associatedFeature().isValid() ) { QgsFields fields = vectorLayer->fields(); QgsAttributes attrs = associatedFeature().attributes(); for ( int i = 0; i < attrs.count(); ++i ) { if ( i < fields.count() ) { QWidget *attWidget = widget->findChild<QWidget *>( fields.at( i ).name() ); if ( attWidget ) { QgsEditorWidgetWrapper *eww = QgsGui::editorWidgetRegistry()->create( vectorLayer, i, attWidget, widget, context ); if ( eww ) { eww->setValue( attrs.at( i ) ); } } } } } return widget; }
QgsAttributeDialog::QgsAttributeDialog( QgsVectorLayer *vl, QgsFeature *thepFeature, bool featureOwner, QgsDistanceArea myDa, QWidget* parent, bool showDialogButtons ) : mDialog( 0 ) , mSettingsPath( "/Windows/AttributeDialog/" ) , mLayer( vl ) , mFeature( thepFeature ) , mFeatureOwner( featureOwner ) , mHighlight( 0 ) , mFormNr( -1 ) , mShowDialogButtons( showDialogButtons ) { if ( !mFeature || !vl->dataProvider() ) return; const QgsFields &theFields = vl->pendingFields(); if ( theFields.isEmpty() ) return; QgsAttributes myAttributes = mFeature->attributes(); QDialogButtonBox *buttonBox = NULL; if ( vl->editorLayout() == QgsVectorLayer::UiFileLayout && !vl->editForm().isEmpty() ) { // UI-File defined layout QFile file( vl->editForm() ); if ( file.open( QFile::ReadOnly ) ) { QUiLoader loader; QFileInfo fi( vl->editForm() ); loader.setWorkingDirectory( fi.dir() ); QWidget *myWidget = loader.load( &file, parent ); file.close(); mDialog = qobject_cast<QDialog*>( myWidget ); buttonBox = myWidget->findChild<QDialogButtonBox*>(); } } else if ( vl->editorLayout() == QgsVectorLayer::TabLayout ) { // Tab display mDialog = new QDialog( parent ); QGridLayout *gridLayout; QTabWidget *tabWidget; mDialog->resize( 447, 343 ); gridLayout = new QGridLayout( mDialog ); gridLayout->setObjectName( QString::fromUtf8( "gridLayout" ) ); tabWidget = new QTabWidget( mDialog ); gridLayout->addWidget( tabWidget ); foreach ( const QgsAttributeEditorElement *widgDef, vl->attributeEditorElements() ) { QWidget* tabPage = new QWidget( tabWidget ); tabWidget->addTab( tabPage, widgDef->name() ); QGridLayout *tabPageLayout = new QGridLayout( tabPage ); if ( widgDef->type() == QgsAttributeEditorElement::AeTypeContainer ) { tabPageLayout->addWidget( QgsAttributeEditor::createWidgetFromDef( widgDef, tabPage, vl, myAttributes, mProxyWidgets, false ) ); } else { QgsDebugMsg( "No support for fields in attribute editor on top level" ); } } buttonBox = new QDialogButtonBox( mDialog ); buttonBox->setObjectName( QString::fromUtf8( "buttonBox" ) ); gridLayout->addWidget( buttonBox ); }
void QgsAttributeDialog::init() { if ( !mFeature || !mLayer->dataProvider() ) return; const QgsFields &theFields = mLayer->pendingFields(); if ( theFields.isEmpty() ) return; QDialogButtonBox *buttonBox = NULL; if ( mLayer->editorLayout() == QgsVectorLayer::UiFileLayout && !mLayer->editForm().isEmpty() ) { // UI-File defined layout QFile file( mLayer->editForm() ); if ( file.open( QFile::ReadOnly ) ) { QUiLoader loader; QFileInfo fi( mLayer->editForm() ); loader.setWorkingDirectory( fi.dir() ); QWidget *myWidget = loader.load( &file, qobject_cast<QWidget*>( parent() ) ); file.close(); mDialog = qobject_cast<QDialog*>( myWidget ); buttonBox = myWidget->findChild<QDialogButtonBox*>(); } } else if ( mLayer->editorLayout() == QgsVectorLayer::TabLayout ) { // Tab display mDialog = new QDialog( qobject_cast<QWidget*>( parent() ) ); QGridLayout *gridLayout; QTabWidget *tabWidget; mDialog->resize( 447, 343 ); gridLayout = new QGridLayout( mDialog ); gridLayout->setObjectName( QString::fromUtf8( "gridLayout" ) ); tabWidget = new QTabWidget( mDialog ); gridLayout->addWidget( tabWidget ); foreach ( const QgsAttributeEditorElement *widgDef, mLayer->attributeEditorElements() ) { QWidget* tabPage = new QWidget( tabWidget ); tabWidget->addTab( tabPage, widgDef->name() ); QGridLayout *tabPageLayout = new QGridLayout( tabPage ); if ( widgDef->type() == QgsAttributeEditorElement::AeTypeContainer ) { QString dummy1; bool dummy2; tabPageLayout->addWidget( QgsAttributeEditor::createWidgetFromDef( widgDef, tabPage, mLayer, *mFeature, mContext, dummy1, dummy2 ) ); } else { QgsDebugMsg( "No support for fields in attribute editor on top level" ); } } buttonBox = new QDialogButtonBox( mDialog ); buttonBox->setObjectName( QString::fromUtf8( "buttonBox" ) ); gridLayout->addWidget( buttonBox ); }