@@ -534,37 +534,27 @@ class QgsPaintEngineHack : public QPaintEngine
534
534
void QgsComposer::on_mActionExportAsPDF_triggered ()
535
535
{
536
536
QSettings myQSettings; // where we keep last used filter in persistent state
537
- QString myLastUsedFile = myQSettings.value ( " /UI/lastSaveAsPdfFile" , " qgis.pdf" ).toString ();
538
- QFileInfo file ( myLastUsedFile );
539
- QFileDialog *myQFileDialog = new QFileDialog ( this , tr ( " Choose a file name to save the map as" ),
540
- file.path (), tr ( " PDF Format" ) + " (*.pdf *PDF)" );
541
- myQFileDialog->selectFile ( file.fileName () );
542
- myQFileDialog->setFileMode ( QFileDialog::AnyFile );
543
- myQFileDialog->setConfirmOverwrite ( true );
544
- myQFileDialog->setAcceptMode ( QFileDialog::AcceptSave );
545
-
546
- int result = myQFileDialog->exec ();
547
- raise ();
548
- if ( result != QDialog::Accepted )
537
+ QString lastUsedFile = myQSettings.value ( " /UI/lastSaveAsPdfFile" , " qgis.pdf" ).toString ();
538
+ QFileInfo file ( lastUsedFile );
539
+
540
+ QString outputFileName = QFileDialog::getSaveFileName (
541
+ this ,
542
+ tr ( " Choose a file name to save the map as" ),
543
+ file.path (),
544
+ tr ( " PDF Format" ) + " (*.pdf *.PDF)" );
545
+ if ( outputFileName.isEmpty () )
549
546
return ;
550
547
551
- QString myOutputFileNameQString = myQFileDialog->selectedFiles ().first ();
552
- if ( myOutputFileNameQString == " " )
553
- {
554
- return ;
555
- }
556
-
557
- if ( !myOutputFileNameQString.endsWith ( " .pdf" , Qt::CaseInsensitive ) )
548
+ if ( !outputFileName.endsWith ( " .pdf" , Qt::CaseInsensitive ) )
558
549
{
559
- myOutputFileNameQString. append ( " .pdf" ) ;
550
+ outputFileName += " .pdf" ;
560
551
}
561
552
562
- myQSettings.setValue ( " /UI/lastSaveAsPdfFile" , myOutputFileNameQString );
553
+ myQSettings.setValue ( " /UI/lastSaveAsPdfFile" , outputFileName );
563
554
564
555
QPrinter printer;
565
-
566
556
printer.setOutputFormat ( QPrinter::PdfFormat );
567
- printer.setOutputFileName ( myOutputFileNameQString );
557
+ printer.setOutputFileName ( outputFileName );
568
558
printer.setPaperSize ( QSizeF ( mComposition ->paperWidth (), mComposition ->paperHeight () ), QPrinter::Millimeter );
569
559
570
560
QPaintEngine *engine = printer.paintEngine ();
@@ -697,93 +687,12 @@ void QgsComposer::on_mActionExportAsImage_triggered()
697
687
return ;
698
688
}
699
689
700
- // Get file and format (stolen from qgisapp.cpp but modified significantely)
701
-
702
- // create a map to hold the QImageIO names and the filter names
703
- // the QImageIO name must be passed to the mapcanvas saveas image function
704
- typedef QMap<QString, QString> FilterMap;
705
- FilterMap myFilterMap;
706
-
707
- // find out the last used filter
708
- QSettings myQSettings; // where we keep last used filter in persistent state
709
- QString myLastUsedFormat = myQSettings.value ( " /UI/lastSaveAsImageFormat" , " png" ).toString ();
710
- QString myLastUsedFile = myQSettings.value ( " /UI/lastSaveAsImageFile" , " qgis.png" ).toString ();
711
- QFileInfo file ( myLastUsedFile );
712
-
713
- // get a list of supported output image types
714
- int myCounterInt = 0 ;
715
- QString myFilters;
716
- QString myLastUsedFilter;
717
- for ( ; myCounterInt < QImageWriter::supportedImageFormats ().count (); myCounterInt++ )
718
- {
719
- QString myFormat = QString ( QImageWriter::supportedImageFormats ().at ( myCounterInt ) );
720
- QString myFilter = tr ( " %1 format (*.%2 *.%3)" )
721
- .arg ( myFormat ).arg ( myFormat.toLower () ).arg ( myFormat.toUpper () );
722
-
723
- if ( myCounterInt > 0 )
724
- myFilters += " ;;" ;
725
- myFilters += myFilter;
726
- myFilterMap[myFilter] = myFormat;
727
- if ( myFormat == myLastUsedFormat )
728
- {
729
- myLastUsedFilter = myFilter;
730
- }
731
- }
732
- #ifdef QGISDEBUG
733
- QgsDebugMsg ( " Available Filters Map: " );
734
- FilterMap::Iterator myIterator;
735
- for ( myIterator = myFilterMap.begin (); myIterator != myFilterMap.end (); ++myIterator )
736
- {
737
- QgsDebugMsg ( QString ( " %1 : %2" ).arg ( myIterator.key () ).arg ( myIterator.value () ) );
738
- }
739
- #endif
740
-
741
- // create a file dialog using the the filter list generated above
742
- std::auto_ptr < QFileDialog > myQFileDialog (
743
- new QFileDialog (
744
- this ,
745
- tr ( " Choose a file name to save the map image as" ),
746
- file.path (),
747
- myFilters
748
- )
749
- );
750
-
751
- myQFileDialog->setFileMode ( QFileDialog::AnyFile );
752
- myQFileDialog->setConfirmOverwrite ( true );
753
-
754
- // set the filter to the last one used
755
- myQFileDialog->selectFilter ( myLastUsedFilter );
756
-
757
- // set the 'Open' button to something that makes more sense
758
- myQFileDialog->setAcceptMode ( QFileDialog::AcceptSave );
759
-
760
- // prompt the user for a file name
761
- QString myOutputFileNameQString;
762
-
763
- int result = myQFileDialog->exec ();
764
- // raise();
765
-
766
- if ( result != QDialog::Accepted )
767
- {
768
- return ;
769
- }
770
-
771
- myOutputFileNameQString = myQFileDialog->selectedFiles ().last ();
772
- QgsDebugMsg ( myOutputFileNameQString );
773
- QString myFilterString = myQFileDialog->selectedFilter ();
774
- QgsDebugMsg ( QString ( " Selected filter: %1" ).arg ( myFilterString ) );
775
- QgsDebugMsg ( QString ( " Image type: %1" ).arg ( myFilterMap[myFilterString] ) );
776
-
777
- // Add the file type suffix to the fileName if required
778
- if ( !myOutputFileNameQString.endsWith ( myFilterMap[myFilterString] ) )
779
- {
780
- myOutputFileNameQString += " ." + myFilterMap[myFilterString];
781
- }
690
+ QPair<QString, QString> fileNExt = QgisGui::getSaveAsImageName ( this , tr ( " Choose a file name to save the map image as" ) );
782
691
783
- myQSettings. setValue ( " /UI/lastSaveAsImageFormat " , myFilterMap[myFilterString] );
784
- myQSettings. setValue ( " /UI/lastSaveAsImageFile " , myOutputFileNameQString );
692
+ QgsDebugMsg ( QString ( " Selected filter: %1 " ). arg ( fileNExt. first ) );
693
+ QgsDebugMsg ( QString ( " Image type: %1 " ). arg ( fileNExt. second ) );
785
694
786
- if ( myOutputFileNameQString == " " )
695
+ if ( fileNExt. first . isEmpty () )
787
696
return ;
788
697
789
698
QImage image ( QSize ( width, height ), QImage::Format_ARGB32 );
@@ -809,7 +718,7 @@ void QgsComposer::on_mActionExportAsImage_triggered()
809
718
p.end ();
810
719
mComposition ->setPlotStyle ( QgsComposition::Preview );
811
720
mView ->setPaintingEnabled ( true );
812
- image.save ( myOutputFileNameQString, myFilterMap[myFilterString]. toLocal8Bit ().data () );
721
+ image.save ( fileNExt. first , fileNExt. second . toLocal8Bit ().constData () );
813
722
}
814
723
815
724
@@ -820,10 +729,10 @@ void QgsComposer::on_mActionExportAsSVG_triggered()
820
729
showWMSPrintingWarning ();
821
730
}
822
731
823
- QString myQSettingsLabel = " /UI/displaySVGWarning" ;
824
- QSettings myQSettings ;
732
+ QString settingsLabel = " /UI/displaySVGWarning" ;
733
+ QSettings settings ;
825
734
826
- bool displaySVGWarning = myQSettings .value ( myQSettingsLabel , true ).toBool ();
735
+ bool displaySVGWarning = settings .value ( settingsLabel , true ).toBool ();
827
736
828
737
if ( displaySVGWarning )
829
738
{
@@ -832,7 +741,7 @@ void QgsComposer::on_mActionExportAsSVG_triggered()
832
741
m->setCheckBoxText ( tr ( " Don't show this message again" ) );
833
742
m->setCheckBoxState ( Qt::Unchecked );
834
743
m->setCheckBoxVisible ( true );
835
- m->setCheckBoxQSettingsLabel ( myQSettingsLabel );
744
+ m->setCheckBoxQSettingsLabel ( settingsLabel );
836
745
m->setMessageAsHtml ( tr ( " <p>The SVG export function in Qgis has several "
837
746
" problems due to bugs and deficiencies in the " )
838
747
+ tr ( " Qt4 svg code. In particular, there are problems "
@@ -845,39 +754,31 @@ void QgsComposer::on_mActionExportAsSVG_triggered()
845
754
" </p>" ) );
846
755
m->exec ();
847
756
}
848
- QString myLastUsedFile = myQSettings.value ( " /UI/lastSaveAsSvgFile" , " qgis.svg" ).toString ();
849
- QFileInfo file ( myLastUsedFile );
850
- QFileDialog *myQFileDialog = new QFileDialog ( this , tr ( " Choose a file name to save the map as" ),
851
- file.path (), tr ( " SVG Format" ) + " (*.svg *SVG)" );
852
- myQFileDialog->selectFile ( file.fileName () );
853
- myQFileDialog->setFileMode ( QFileDialog::AnyFile );
854
- myQFileDialog->setConfirmOverwrite ( true );
855
- myQFileDialog->setAcceptMode ( QFileDialog::AcceptSave );
856
757
857
- int result = myQFileDialog->exec ();
858
- raise ();
859
- if ( result != QDialog::Accepted )
860
- return ;
758
+ QString lastUsedFile = settings.value ( " /UI/lastSaveAsSvgFile" , " qgis.svg" ).toString ();
759
+ QFileInfo file ( lastUsedFile );
861
760
862
- QString myOutputFileNameQString = myQFileDialog->selectedFiles ().first ();
863
- if ( myOutputFileNameQString == " " )
864
- {
761
+ QString outputFileName = QFileDialog::getSaveFileName (
762
+ this ,
763
+ tr ( " Choose a file name to save the map as" ),
764
+ file.path (),
765
+ tr ( " SVG Format" ) + " (*.svg *.SVG)" );
766
+ if ( outputFileName.isEmpty () )
865
767
return ;
866
- }
867
768
868
- if ( !myOutputFileNameQString .endsWith ( " .svg" , Qt::CaseInsensitive ) )
769
+ if ( !outputFileName .endsWith ( " .svg" , Qt::CaseInsensitive ) )
869
770
{
870
- myOutputFileNameQString. append ( " .svg" ) ;
771
+ outputFileName += " .svg" ;
871
772
}
872
773
873
- myQSettings .setValue ( " /UI/lastSaveAsSvgFile" , myOutputFileNameQString );
774
+ settings .setValue ( " /UI/lastSaveAsSvgFile" , outputFileName );
874
775
mComposition ->setPlotStyle ( QgsComposition::Print );
875
776
876
777
QSvgGenerator generator;
877
778
#if QT_VERSION >= 0x040500
878
779
generator.setTitle ( QgsProject::instance ()->title () );
879
780
#endif
880
- generator.setFileName ( myOutputFileNameQString );
781
+ generator.setFileName ( outputFileName );
881
782
// width in pixel
882
783
int width = ( int )( mComposition ->paperWidth () * mComposition ->printResolution () / 25.4 );
883
784
// height in pixel
@@ -976,11 +877,13 @@ void QgsComposer::on_mActionSaveAsTemplate_triggered()
976
877
// show file dialog
977
878
QSettings settings;
978
879
QString lastSaveDir = settings.value ( " UI/lastComposerTemplateDir" , " " ).toString ();
979
- QString saveFileName = QFileDialog::getSaveFileName ( 0 , tr ( " save template" ), lastSaveDir, " *.qpt" );
880
+ QString saveFileName = QFileDialog::getSaveFileName (
881
+ this ,
882
+ tr ( " Save template" ),
883
+ lastSaveDir,
884
+ tr ( " Composer templates" ) + " (*.qpt *.QPT)" );
980
885
if ( saveFileName.isEmpty () )
981
- {
982
886
return ;
983
- }
984
887
985
888
QFileInfo saveFileInfo ( saveFileName );
986
889
// check if suffix has been added
0 commit comments