@@ -117,6 +117,18 @@ QgsVectorFileWriter::QgsVectorFileWriter(
117
117
}
118
118
else
119
119
{
120
+ QString longName;
121
+ QString trLongName;
122
+ QString glob;
123
+ QString ext;
124
+ if ( QgsVectorFileWriter::driverMetadata ( driverName, longName, trLongName, glob, ext ) )
125
+ {
126
+ if ( !vectorFileName.endsWith ( " ." + ext, Qt::CaseInsensitive ) )
127
+ {
128
+ vectorFileName += " ." + ext;
129
+ }
130
+ }
131
+
120
132
QFile::remove ( vectorFileName );
121
133
}
122
134
@@ -730,11 +742,14 @@ QMap<QString, QString> QgsVectorFileWriter::ogrDriverList()
730
742
QString drvName = OGR_Dr_GetName ( drv );
731
743
if ( OGR_Dr_TestCapability ( drv, " CreateDataSource" ) != 0 )
732
744
{
733
- QPair<QString, QString> p = nameAndGlob ( drvName );
734
- if ( p.first .isEmpty () )
735
- continue ;
736
-
737
- resultMap.insert ( p.first , drvName );
745
+ QString longName;
746
+ QString trLongName;
747
+ QString glob;
748
+ QString ext;
749
+ if ( QgsVectorFileWriter::driverMetadata ( drvName, longName, trLongName, glob, ext ) && !trLongName.isEmpty () )
750
+ {
751
+ resultMap.insert ( trLongName, drvName );
752
+ }
738
753
}
739
754
}
740
755
}
@@ -759,119 +774,165 @@ QString QgsVectorFileWriter::fileFilterString()
759
774
760
775
QString QgsVectorFileWriter::filterForDriver ( const QString& driverName )
761
776
{
762
- QPair<QString, QString> p = nameAndGlob ( driverName );
763
-
764
- if ( p.first .isEmpty () || p.second .isEmpty () )
777
+ QString longName;
778
+ QString trLongName;
779
+ QString glob;
780
+ QString ext;
781
+ if ( !QgsVectorFileWriter::driverMetadata ( driverName, longName, trLongName, glob, ext )
782
+ || trLongName.isEmpty ()
783
+ || glob.isEmpty ()
784
+ )
765
785
return " " ;
766
786
767
- return " [OGR] " + p. first + " (" + p. second . toLower () + " " + p. second .toUpper () + " )" ;
787
+ return trLongName + " [OGR] (" + glob. toLower () + " " + glob .toUpper () + " )" ;
768
788
}
769
789
770
- QPair<QString, QString> QgsVectorFileWriter::nameAndGlob ( QString driverName )
790
+ bool QgsVectorFileWriter::driverMetadata ( QString driverName, QString &longName, QString &trLongName, QString &glob, QString &ext )
771
791
{
772
- QString longName;
773
- QString glob;
774
-
775
792
if ( driverName.startsWith ( " AVCE00" ) )
776
793
{
777
794
longName = " Arc/Info ASCII Coverage" ;
795
+ trLongName = QObject::tr ( " Arc/Info ASCII Coverage" );
778
796
glob = " *.e00" ;
797
+ ext = " e00" ;
779
798
}
780
799
else if ( driverName.startsWith ( " BNA" ) )
781
800
{
782
801
longName = " Atlas BNA" ;
802
+ trLongName = QObject::tr ( " Atlas BNA" );
783
803
glob = " *.bna" ;
804
+ ext = " bna" ;
784
805
}
785
806
else if ( driverName.startsWith ( " CSV" ) )
786
807
{
787
808
longName = " Comma Separated Value" ;
809
+ trLongName = QObject::tr ( " Comma Separated Value" );
788
810
glob = " *.csv" ;
811
+ ext = " *.bna" ;
789
812
}
790
813
else if ( driverName.startsWith ( " ESRI" ) )
791
814
{
792
815
longName = " ESRI Shapefile" ;
816
+ trLongName = QObject::tr ( " ESRI Shapefile" );
793
817
glob = " *.shp" ;
818
+ ext = " shp" ;
794
819
}
795
820
else if ( driverName.startsWith ( " FMEObjects Gateway" ) )
796
821
{
797
822
longName = " FMEObjects Gateway" ;
823
+ trLongName = QObject::tr ( " FMEObjects Gateway" );
798
824
glob = " *.fdd" ;
825
+ ext = " fdd" ;
799
826
}
800
827
else if ( driverName.startsWith ( " GeoJSON" ) )
801
828
{
802
829
longName = " GeoJSON" ;
830
+ trLongName = QObject::tr ( " GeoJSON" );
803
831
glob = " *.geojson" ;
832
+ ext = " geojson" ;
804
833
}
805
834
else if ( driverName.startsWith ( " GeoRSS" ) )
806
835
{
807
836
longName = " GeoRSS" ;
837
+ trLongName = QObject::tr ( " GeoRSS" );
808
838
glob = " *.xml" ;
839
+ ext = " xml" ;
809
840
}
810
841
else if ( driverName.startsWith ( " GML" ) )
811
842
{
812
843
longName = " Geography Markup Language (GML)" ;
844
+ trLongName = QObject::tr ( " Geography Markup Language (GML)" );
813
845
glob = " *.gml" ;
846
+ ext = " gml" ;
814
847
}
815
848
else if ( driverName.startsWith ( " GMT" ) )
816
849
{
817
850
longName = " Generic Mapping Tools (GMT)" ;
851
+ trLongName = QObject::tr ( " Generic Mapping Tools (GMT)" );
818
852
glob = " *.gmt" ;
853
+ ext = " gmt" ;
819
854
}
820
855
else if ( driverName.startsWith ( " GPX" ) )
821
856
{
822
857
longName = " GPS eXchange Format" ;
858
+ trLongName = QObject::tr ( " GPS eXchange Format" );
823
859
glob = " *.gpx" ;
860
+ ext = " gpx" ;
824
861
}
825
862
else if ( driverName.startsWith ( " Interlis 1" ) )
826
863
{
827
864
longName = " INTERLIS 1" ;
865
+ trLongName = QObject::tr ( " INTERLIS 1" );
828
866
glob = " *.itf *.xml *.ili" ;
867
+ ext = " ili" ;
829
868
}
830
869
else if ( driverName.startsWith ( " Interlis 2" ) )
831
870
{
832
871
longName = " INTERLIS 2" ;
872
+ trLongName = QObject::tr ( " INTERLIS 2" );
833
873
glob = " *.itf *.xml *.ili" ;
874
+ ext = " ili" ;
834
875
}
835
876
else if ( driverName.startsWith ( " KML" ) )
836
877
{
837
878
longName = " Keyhole Markup Language (KML)" ;
879
+ trLongName = QObject::tr ( " Keyhole Markup Language (KML)" );
838
880
glob = " *.kml" ;
881
+ ext = " kml" ;
839
882
}
840
883
else if ( driverName.startsWith ( " MapInfo File" ) )
841
884
{
842
885
longName = " Mapinfo File" ;
886
+ trLongName = QObject::tr ( " Mapinfo File" );
843
887
glob = " *.mif *.tab" ;
888
+ ext = " mif" ;
844
889
}
845
890
else if ( driverName.startsWith ( " DGN" ) )
846
891
{
847
892
longName = " Microstation DGN" ;
893
+ trLongName = QObject::tr ( " Microstation DGN" );
848
894
glob = " *.dgn" ;
895
+ ext = " dgn" ;
849
896
}
850
897
else if ( driverName.startsWith ( " S57" ) )
851
898
{
852
899
longName = " S-57 Base file" ;
900
+ trLongName = QObject::tr ( " S-57 Base file" );
853
901
glob = " *.000" ;
902
+ ext = " 000" ;
854
903
}
855
904
else if ( driverName.startsWith ( " SDTS" ) )
856
905
{
857
906
longName = " Spatial Data Transfer Standard (SDTS)" ;
907
+ trLongName = QObject::tr ( " Spatial Data Transfer Standard (SDTS)" );
858
908
glob = " *catd.ddf" ;
909
+ ext = " ddf" ;
859
910
}
860
911
else if ( driverName.startsWith ( " SQLite" ) )
861
912
{
862
913
longName = " SQLite" ;
914
+ trLongName = QObject::tr ( " SQLite" );
863
915
glob = " *.sqlite" ;
916
+ ext = " sqlite" ;
864
917
}
865
918
else if ( driverName.startsWith ( " DXF" ) )
866
919
{
867
920
longName = " AutoCAD DXF" ;
921
+ trLongName = QObject::tr ( " AutoCAD DXF" );
868
922
glob = " *.dxf" ;
923
+ ext = " dxf" ;
869
924
}
870
925
else if ( driverName.startsWith ( " Geoconcept" ) )
871
926
{
872
927
longName = " Geoconcept" ;
928
+ trLongName = QObject::tr ( " Geoconcept" );
873
929
glob = " *.gxt *.txt" ;
930
+ ext = " gxt" ;
931
+ }
932
+ else
933
+ {
934
+ return false ;
874
935
}
875
936
876
- return QPair<QString, QString>( longName, glob ) ;
937
+ return true ;
877
938
}
0 commit comments