@@ -413,7 +413,18 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
413
413
414
414
chbAskToSaveProjectChanges->setChecked ( settings.value ( " qgis/askToSaveProjectChanges" , QVariant ( true ) ).toBool () );
415
415
chbWarnOldProjectVersion->setChecked ( settings.value ( " /qgis/warnOldProjectVersion" , QVariant ( true ) ).toBool () );
416
- cbxNewProjectTemplate->setChecked ( settings.value ( " /qgis/newProjectTemplate" , QVariant ( false ) ).toBool () );
416
+
417
+ // templates
418
+ cbxProjectDefaultNew->setChecked ( settings.value ( " /qgis/newProjectDefault" , QVariant ( false ) ).toBool () );
419
+ QString templateDirName = settings.value ( " /qgis/projectTemplateDir" ,
420
+ QgsApplication::qgisSettingsDirPath () + " project_templates" ).toString ();
421
+ // make dir if it doesn't exists - should just be called once
422
+ QDir templateDir;
423
+ if ( ! templateDir.exists ( templateDirName ) )
424
+ {
425
+ templateDir.mkdir ( templateDirName );
426
+ }
427
+ leTemplateFolder->setText ( templateDirName );
417
428
418
429
cmbWheelAction->setCurrentIndex ( settings.value ( " /qgis/wheel_action" , 2 ).toInt () );
419
430
spinZoomFactor->setValue ( settings.value ( " /qgis/zoom_factor" , 2 ).toDouble () );
@@ -578,43 +589,22 @@ QgsOptions::~QgsOptions()
578
589
settings.setValue ( " /Windows/Options/row" , tabWidget->currentIndex () );
579
590
}
580
591
581
- #if 0
582
- void QgsOptions::on_pbtnNewProjectTemplate_pressed( )
583
- {
584
- QString lastUsedDir = QFileInfo( leNewProjectTemplate->text() ).canonicalFilePath();
585
- if ( lastUsedDir == "" )
586
- {
587
- QSettings settings;
588
- lastUsedDir = settings.value( "/UI/lastProjectDir", "." ).toString();
589
- }
590
-
591
- QString fullPath = QFileDialog::getOpenFileName( this,
592
- tr( "Choose a QGIS project file to open" ),
593
- lastUsedDir,
594
- tr( "QGis files" ) + " (*.qgs *.QGS)" );
595
- if ( ! fullPath.isNull() )
596
- {
597
- leNewProjectTemplate->setText( fullPath );
598
- }
599
- }
600
- #endif
601
-
602
- void QgsOptions::on_cbxNewProjectTemplate_toggled ( bool checked )
592
+ void QgsOptions::on_cbxProjectDefaultNew_toggled ( bool checked )
603
593
{
604
594
if ( checked )
605
595
{
606
- QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " default .qgs" );
596
+ QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " project_default .qgs" );
607
597
if ( ! QFile::exists ( fileName ) )
608
598
{
609
599
QMessageBox::information ( 0 , tr ( " Save default project" ), tr ( " You must set a default project" ) );
610
- cbxNewProjectTemplate ->setChecked ( false );
600
+ cbxProjectDefaultNew ->setChecked ( false );
611
601
}
612
602
}
613
603
}
614
604
615
- void QgsOptions::on_pbnSetCurrentProjectDefault_clicked ( )
605
+ void QgsOptions::on_pbnProjectDefaultSetCurrent_clicked ( )
616
606
{
617
- QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " default .qgs" );
607
+ QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " project_default .qgs" );
618
608
if ( QgsProject::instance ()->write ( QFileInfo ( fileName ) ) )
619
609
{
620
610
QMessageBox::information ( 0 , tr ( " Save default project" ), tr ( " Current project saved as default" ) );
@@ -625,16 +615,32 @@ void QgsOptions::on_pbnSetCurrentProjectDefault_clicked( )
625
615
}
626
616
}
627
617
628
- void QgsOptions::on_pbnResetCurrentProjectDefault_clicked ( )
618
+ void QgsOptions::on_pbnProjectDefaultReset_clicked ( )
629
619
{
630
- QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " default .qgs" );
620
+ QString fileName = QgsApplication::qgisSettingsDirPath () + QString ( " project_default .qgs" );
631
621
if ( QFile::exists ( fileName ) )
632
622
{
633
623
QFile::remove ( fileName );
634
624
}
635
- cbxNewProjectTemplate ->setChecked ( false );
625
+ cbxProjectDefaultNew ->setChecked ( false );
636
626
}
637
627
628
+ void QgsOptions::on_pbnTemplateFolderBrowse_pressed ( )
629
+ {
630
+ QString newDir = QFileDialog::getExistingDirectory ( 0 , tr ( " Choose a directory to store project template files" ),
631
+ leTemplateFolder->text () );
632
+ if ( ! newDir.isNull () )
633
+ {
634
+ leTemplateFolder->setText ( newDir );
635
+ }
636
+ }
637
+
638
+ void QgsOptions::on_pbnTemplateFolderReset_pressed ( )
639
+ {
640
+ leTemplateFolder->setText ( QgsApplication::qgisSettingsDirPath () + QString ( " project_templates" ) );
641
+ }
642
+
643
+
638
644
void QgsOptions::on_pbnSelectionColor_clicked ()
639
645
{
640
646
#if QT_VERSION >= 0x040500
@@ -797,9 +803,18 @@ void QgsOptions::saveOptions()
797
803
settings.setValue ( " /qgis/use_symbology_ng" , chkUseSymbologyNG->isChecked () );
798
804
settings.setValue ( " /qgis/legendDoubleClickAction" , cmbLegendDoubleClickAction->currentIndex () );
799
805
settings.setValue ( " /qgis/capitaliseLayerName" , capitaliseCheckBox->isChecked () );
806
+
807
+ // project
800
808
settings.setValue ( " /qgis/askToSaveProjectChanges" , chbAskToSaveProjectChanges->isChecked () );
801
809
settings.setValue ( " /qgis/warnOldProjectVersion" , chbWarnOldProjectVersion->isChecked () );
802
- settings.setValue ( " /qgis/newProjectTemplate" , cbxNewProjectTemplate->isChecked () );
810
+ if (( settings.value ( " /qgis/projectTemplateDir" ).toString () != leTemplateFolder->text () ) ||
811
+ ( settings.value ( " /qgis/newProjectDefault" ).toBool () != cbxProjectDefaultNew->isChecked () ) )
812
+ {
813
+ settings.setValue ( " /qgis/newProjectDefault" , cbxProjectDefaultNew->isChecked () );
814
+ settings.setValue ( " /qgis/projectTemplateDir" , leTemplateFolder->text () );
815
+ QgisApp::instance ()->updateProjectFromTemplates ();
816
+ }
817
+
803
818
settings.setValue ( " /qgis/nullValue" , leNullValue->text () );
804
819
settings.setValue ( " /qgis/style" , cmbStyle->currentText () );
805
820
0 commit comments