[QGIS Commit] r13283 - trunk/qgis/src/app/composer
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Apr 8 08:55:52 EDT 2010
Author: mhugent
Date: 2010-04-08 08:55:51 -0400 (Thu, 08 Apr 2010)
New Revision: 13283
Modified:
trunk/qgis/src/app/composer/qgscomposermanager.cpp
trunk/qgis/src/app/composer/qgscomposermanager.h
Log:
Ask user what template to use if default composer templates are found
Modified: trunk/qgis/src/app/composer/qgscomposermanager.cpp
===================================================================
--- trunk/qgis/src/app/composer/qgscomposermanager.cpp 2010-04-08 11:07:04 UTC (rev 13282)
+++ trunk/qgis/src/app/composer/qgscomposermanager.cpp 2010-04-08 12:55:51 UTC (rev 13283)
@@ -51,26 +51,26 @@
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable );
mItemComposerMap.insert( item, *it );
}
+}
+QMap<QString, QString> QgsComposerManager::defaultTemplates() const
+{
+ QMap<QString, QString> templateMap;
+
//search for default templates in $pkgDataPath/composer_templates
QDir defaultTemplateDir( QgsApplication::pkgDataPath() + "/composer_templates" );
if ( !defaultTemplateDir.exists() )
{
- return;
+ return templateMap;
}
- QFileInfoList defaultTemplateFiles = defaultTemplateDir.entryInfoList( QDir::Files );
- QFileInfoList::const_iterator fileIt = defaultTemplateFiles.constBegin();
-
- for ( ; fileIt != defaultTemplateFiles.constEnd(); ++fileIt )
+ QFileInfoList fileInfoList = defaultTemplateDir.entryInfoList( QDir::Files );
+ QFileInfoList::const_iterator infoIt = fileInfoList.constBegin();
+ for ( ; infoIt != fileInfoList.constEnd(); ++infoIt )
{
- mDefaultTemplateMap.insert( fileIt->baseName(), fileIt->absoluteFilePath() );
- if ( mComposerListWidget->findItems( fileIt->baseName(), Qt::MatchExactly ).size() < 1 )
- {
- QListWidgetItem* item = new QListWidgetItem( fileIt->baseName(), mComposerListWidget );
- mItemComposerMap.insert( item, 0 );
- }
+ templateMap.insert( infoIt->baseName(), infoIt->absoluteFilePath() );
}
+ return templateMap;
}
void QgsComposerManager::on_mAddButton_clicked()
@@ -79,11 +79,56 @@
{
return;
}
- QgsComposer* newComposer = mQgisApp->createNewComposer();
+
+ QMap<QString, QString> templateMap = defaultTemplates();
+ QString composerTemplate;
+ QgsComposer* newComposer = 0;
+
+ if ( templateMap.size() > 0 )
+ {
+ //show template dialog
+ QStringList templateNameList;
+ templateNameList.append( tr( "Empty composer" ) );
+ QMap<QString, QString>::const_iterator templateIt = templateMap.constBegin();
+ for ( ; templateIt != templateMap.constEnd(); ++templateIt )
+ {
+ templateNameList.append( templateIt.key() );
+ }
+
+ QInputDialog templateDialog;
+ templateDialog.setLabelText( tr( "Select a composer template" ) );
+ templateDialog.setComboBoxItems( templateNameList );
+ if ( templateDialog.exec() == QDialog::Rejected )
+ {
+ return;
+ }
+
+ QMap<QString, QString>::const_iterator selectedTemplate = templateMap.find( templateDialog.textValue() );
+ if ( selectedTemplate != templateMap.constEnd() )
+ {
+ composerTemplate = selectedTemplate.value();
+ }
+ }
+
+ newComposer = mQgisApp->createNewComposer();
if ( !newComposer )
{
return;
}
+
+ if ( !composerTemplate.isEmpty() ) //create composer from template
+ {
+ QDomDocument templateDoc;
+ QFile templateFile( composerTemplate );
+ if ( templateFile.open( QIODevice::ReadOnly ) )
+ {
+ if ( templateDoc.setContent( &templateFile, false ) )
+ {
+ newComposer->readXML( templateDoc );
+ }
+ }
+ }
+
QListWidgetItem* item = new QListWidgetItem( newComposer->title(), mComposerListWidget );
item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable );
mItemComposerMap.insert( item, newComposer );
@@ -140,46 +185,56 @@
if ( it.value() ) //a normal composer
{
c = it.value();
- it.value()->show();
+ if ( c )
+ {
+ c->show();
+ c->activate();
+ c->stackUnder( this );
+ raise();
+ activateWindow();
+ }
}
- else //create composer from default template
+ }
+#if 0
+ else //create composer from default template
+ {
+ QMap<QString, QString>::const_iterator templateIt = mDefaultTemplateMap.find( it.key()->text() );
+ if ( templateIt == mDefaultTemplateMap.constEnd() )
{
- QMap<QString, QString>::const_iterator templateIt = mDefaultTemplateMap.find( it.key()->text() );
- if ( templateIt == mDefaultTemplateMap.constEnd() )
- {
- return;
- }
+ return;
+ }
- QDomDocument templateDoc;
- QFile templateFile( templateIt.value() );
- if ( !templateFile.open( QIODevice::ReadOnly ) )
- {
- return;
- }
+ QDomDocument templateDoc;
+ QFile templateFile( templateIt.value() );
+ if ( !templateFile.open( QIODevice::ReadOnly ) )
+ {
+ return;
+ }
- if ( !templateDoc.setContent( &templateFile, false ) )
- {
- return;
- }
- c = mQgisApp->createNewComposer();
- c->setTitle( it.key()->text() );
- if ( c )
- {
- c->readXML( templateDoc );
- mItemComposerMap.insert( it.key(), c );
- }
+ if ( !templateDoc.setContent( &templateFile, false ) )
+ {
+ return;
}
-
+ c = mQgisApp->createNewComposer();
+ c->setTitle( it.key()->text() );
if ( c )
{
- c->show();
- c->activate();
- c->stackUnder( this );
- raise();
- activateWindow();
+ c->readXML( templateDoc );
+ mItemComposerMap.insert( it.key(), c );
}
}
+
+ if ( c )
+ {
+ c->show();
+ c->activate();
+ c->stackUnder( this );
+ raise();
+ activateWindow();
+ }
}
+#endif //0
+}
void QgsComposerManager::on_mRenamePushButton_clicked()
{
@@ -218,21 +273,3 @@
it.value()->setTitle( item->text() );
}
}
-
-void QgsComposerManager::on_mComposerListWidget_currentItemChanged( QListWidgetItem* current, QListWidgetItem* previous )
-{
- if ( !current )
- {
- return;
- }
- if ( mDefaultTemplateMap.contains( current->text() ) )
- {
- mRenamePushButton->setEnabled( false );
- mRemoveButton->setEnabled( false );
- }
- else
- {
- mRenamePushButton->setEnabled( true );
- mRemoveButton->setEnabled( true );
- }
-}
Modified: trunk/qgis/src/app/composer/qgscomposermanager.h
===================================================================
--- trunk/qgis/src/app/composer/qgscomposermanager.h 2010-04-08 11:07:04 UTC (rev 13282)
+++ trunk/qgis/src/app/composer/qgscomposermanager.h 2010-04-08 12:55:51 UTC (rev 13283)
@@ -38,19 +38,19 @@
/**Stores the relation between items and composer pointers. A 0 pointer for the composer means that
this composer needs to be created from a default template*/
QMap<QListWidgetItem*, QgsComposer*> mItemComposerMap;
- /**Key: name of the default template (=filename without suffix). Value: absolute path of the template*/
- QMap<QString, QString > mDefaultTemplateMap;
/**Enters the composer instances and created the item-composer map*/
void initialize();
+ /**Returns the default templates (key: template name, value: absolute path to template file)*/
+ QMap<QString, QString> defaultTemplates() const;
+
private slots:
void on_mAddButton_clicked();
void on_mRemoveButton_clicked();
void on_mShowPushButton_clicked();
void on_mRenamePushButton_clicked();
void on_mComposerListWidget_itemChanged( QListWidgetItem * item );
- void on_mComposerListWidget_currentItemChanged( QListWidgetItem* current, QListWidgetItem* previous );
};
#endif // QGSCOMPOSERMANAGER_H
More information about the QGIS-commit
mailing list