@@ -200,6 +200,9 @@ void QgsVectorFileWriter::init( QString vectorFileName,
200
200
return ;
201
201
}
202
202
203
+ MetaData metadata;
204
+ bool metadataFound = driverMetadata ( driverName, metadata );
205
+
203
206
if ( mOgrDriverName == " ESRI Shapefile" )
204
207
{
205
208
if ( layerOptions.join ( " " ).toUpper ().indexOf ( " ENCODING=" ) == -1 )
@@ -252,13 +255,9 @@ void QgsVectorFileWriter::init( QString vectorFileName,
252
255
}
253
256
else
254
257
{
255
- QString longName;
256
- QString trLongName;
257
- QString glob;
258
- QString exts;
259
- if ( QgsVectorFileWriter::driverMetadata ( driverName, longName, trLongName, glob, exts ) )
258
+ if ( metadataFound )
260
259
{
261
- QStringList allExts = exts .split ( ' ' , QString::SkipEmptyParts );
260
+ QStringList allExts = metadata. ext .split ( ' ' , QString::SkipEmptyParts );
262
261
bool found = false ;
263
262
Q_FOREACH ( const QString& ext, allExts )
264
263
{
@@ -2543,13 +2542,10 @@ QMap<QString, QString> QgsVectorFileWriter::ogrDriverList()
2543
2542
2544
2543
Q_FOREACH ( const QString& drvName, writableDrivers )
2545
2544
{
2546
- QString longName;
2547
- QString trLongName;
2548
- QString glob;
2549
- QString exts;
2550
- if ( QgsVectorFileWriter::driverMetadata ( drvName, longName, trLongName, glob, exts ) && !trLongName.isEmpty () )
2545
+ MetaData metadata;
2546
+ if ( driverMetadata ( drvName, metadata ) && !metadata.trLongName .isEmpty () )
2551
2547
{
2552
- resultMap.insert ( trLongName, drvName );
2548
+ resultMap.insert ( metadata. trLongName , drvName );
2553
2549
}
2554
2550
}
2555
2551
@@ -2573,14 +2569,11 @@ QString QgsVectorFileWriter::fileFilterString()
2573
2569
2574
2570
QString QgsVectorFileWriter::filterForDriver ( const QString& driverName )
2575
2571
{
2576
- QString longName;
2577
- QString trLongName;
2578
- QString glob;
2579
- QString exts;
2580
- if ( !driverMetadata ( driverName, longName, trLongName, glob, exts ) || trLongName.isEmpty () || glob.isEmpty () )
2572
+ MetaData metadata;
2573
+ if ( !driverMetadata ( driverName, metadata ) || metadata.trLongName .isEmpty () || metadata.glob .isEmpty () )
2581
2574
return " " ;
2582
2575
2583
- return trLongName + " [OGR] (" + glob.toLower () + ' ' + glob.toUpper () + ' )' ;
2576
+ return metadata. trLongName + " [OGR] (" + metadata. glob .toLower () + ' ' + metadata. glob .toUpper () + ' )' ;
2584
2577
}
2585
2578
2586
2579
QString QgsVectorFileWriter::convertCodecNameForEncodingOption ( const QString &codecName )
@@ -2600,207 +2593,6 @@ QString QgsVectorFileWriter::convertCodecNameForEncodingOption( const QString &c
2600
2593
return codecName;
2601
2594
}
2602
2595
2603
- bool QgsVectorFileWriter::driverMetadata ( const QString& driverName, QString &longName, QString &trLongName, QString &glob, QString &ext )
2604
- {
2605
- if ( driverName.startsWith ( " AVCE00" ) )
2606
- {
2607
- longName = " Arc/Info ASCII Coverage" ;
2608
- trLongName = QObject::tr ( " Arc/Info ASCII Coverage" );
2609
- glob = " *.e00" ;
2610
- ext = " e00" ;
2611
- }
2612
- else if ( driverName.startsWith ( " BNA" ) )
2613
- {
2614
- longName = " Atlas BNA" ;
2615
- trLongName = QObject::tr ( " Atlas BNA" );
2616
- glob = " *.bna" ;
2617
- ext = " bna" ;
2618
- }
2619
- else if ( driverName.startsWith ( " CSV" ) )
2620
- {
2621
- longName = " Comma Separated Value [CSV]" ;
2622
- trLongName = QObject::tr ( " Comma Separated Value [CSV]" );
2623
- glob = " *.csv" ;
2624
- ext = " csv" ;
2625
- }
2626
- else if ( driverName.startsWith ( " ESRI" ) )
2627
- {
2628
- longName = " ESRI Shapefile" ;
2629
- trLongName = QObject::tr ( " ESRI Shapefile" );
2630
- glob = " *.shp" ;
2631
- ext = " shp" ;
2632
- }
2633
- else if ( driverName.startsWith ( " DBF file" ) )
2634
- {
2635
- longName = " DBF File" ;
2636
- trLongName = QObject::tr ( " DBF file" );
2637
- glob = " *.dbf" ;
2638
- ext = " dbf" ;
2639
- }
2640
- else if ( driverName.startsWith ( " FMEObjects Gateway" ) )
2641
- {
2642
- longName = " FMEObjects Gateway" ;
2643
- trLongName = QObject::tr ( " FMEObjects Gateway" );
2644
- glob = " *.fdd" ;
2645
- ext = " fdd" ;
2646
- }
2647
- else if ( driverName.startsWith ( " GeoJSON" ) )
2648
- {
2649
- longName = " GeoJSON" ;
2650
- trLongName = QObject::tr ( " GeoJSON" );
2651
- glob = " *.geojson" ;
2652
- ext = " geojson" ;
2653
- }
2654
- else if ( driverName.startsWith ( " GPKG" ) )
2655
- {
2656
- longName = " GeoPackage" ;
2657
- trLongName = QObject::tr ( " GeoPackage" );
2658
- glob = " *.gpkg" ;
2659
- ext = " gpkg" ;
2660
- }
2661
- else if ( driverName.startsWith ( " GeoRSS" ) )
2662
- {
2663
- longName = " GeoRSS" ;
2664
- trLongName = QObject::tr ( " GeoRSS" );
2665
- glob = " *.xml" ;
2666
- ext = " xml" ;
2667
- }
2668
- else if ( driverName.startsWith ( " GML" ) )
2669
- {
2670
- longName = " Geography Markup Language [GML]" ;
2671
- trLongName = QObject::tr ( " Geography Markup Language [GML]" );
2672
- glob = " *.gml" ;
2673
- ext = " gml" ;
2674
- }
2675
- else if ( driverName.startsWith ( " GMT" ) )
2676
- {
2677
- longName = " Generic Mapping Tools [GMT]" ;
2678
- trLongName = QObject::tr ( " Generic Mapping Tools [GMT]" );
2679
- glob = " *.gmt" ;
2680
- ext = " gmt" ;
2681
- }
2682
- else if ( driverName.startsWith ( " GPX" ) )
2683
- {
2684
- longName = " GPS eXchange Format [GPX]" ;
2685
- trLongName = QObject::tr ( " GPS eXchange Format [GPX]" );
2686
- glob = " *.gpx" ;
2687
- ext = " gpx" ;
2688
- }
2689
- else if ( driverName.startsWith ( " Interlis 1" ) )
2690
- {
2691
- longName = " INTERLIS 1" ;
2692
- trLongName = QObject::tr ( " INTERLIS 1" );
2693
- glob = " *.itf *.xml *.ili" ;
2694
- ext = " ili" ;
2695
- }
2696
- else if ( driverName.startsWith ( " Interlis 2" ) )
2697
- {
2698
- longName = " INTERLIS 2" ;
2699
- trLongName = QObject::tr ( " INTERLIS 2" );
2700
- glob = " *.itf *.xml *.ili" ;
2701
- ext = " ili" ;
2702
- }
2703
- else if ( driverName.startsWith ( " KML" ) )
2704
- {
2705
- longName = " Keyhole Markup Language [KML]" ;
2706
- trLongName = QObject::tr ( " Keyhole Markup Language [KML]" );
2707
- glob = " *.kml" ;
2708
- ext = " kml" ;
2709
- }
2710
- else if ( driverName.startsWith ( " MapInfo File" ) )
2711
- {
2712
- longName = " Mapinfo TAB" ;
2713
- trLongName = QObject::tr ( " Mapinfo TAB" );
2714
- glob = " *.tab" ;
2715
- ext = " tab" ;
2716
- }
2717
- // 'MapInfo MIF' is internal QGIS addition to distinguish between MITAB and MIF
2718
- else if ( driverName.startsWith ( " MapInfo MIF" ) )
2719
- {
2720
- longName = " Mapinfo MIF" ;
2721
- trLongName = QObject::tr ( " Mapinfo MIF" );
2722
- glob = " *.mif" ;
2723
- ext = " mif" ;
2724
- }
2725
- else if ( driverName.startsWith ( " DGN" ) )
2726
- {
2727
- longName = " Microstation DGN" ;
2728
- trLongName = QObject::tr ( " Microstation DGN" );
2729
- glob = " *.dgn" ;
2730
- ext = " dgn" ;
2731
- }
2732
- else if ( driverName.startsWith ( " S57" ) )
2733
- {
2734
- longName = " S-57 Base file" ;
2735
- trLongName = QObject::tr ( " S-57 Base file" );
2736
- glob = " *.000" ;
2737
- ext = " 000" ;
2738
- }
2739
- else if ( driverName.startsWith ( " SDTS" ) )
2740
- {
2741
- longName = " Spatial Data Transfer Standard [SDTS]" ;
2742
- trLongName = QObject::tr ( " Spatial Data Transfer Standard [SDTS]" );
2743
- glob = " *catd.ddf" ;
2744
- ext = " ddf" ;
2745
- }
2746
- else if ( driverName.startsWith ( " SQLite" ) )
2747
- {
2748
- longName = " SQLite" ;
2749
- trLongName = QObject::tr ( " SQLite" );
2750
- glob = " *.sqlite" ;
2751
- ext = " sqlite" ;
2752
- }
2753
- // QGIS internal addition for SpatialLite
2754
- else if ( driverName.startsWith ( " SpatiaLite" ) )
2755
- {
2756
- longName = " SpatiaLite" ;
2757
- trLongName = QObject::tr ( " SpatiaLite" );
2758
- glob = " *.sqlite" ;
2759
- ext = " sqlite" ;
2760
- }
2761
- else if ( driverName.startsWith ( " DXF" ) )
2762
- {
2763
- longName = " AutoCAD DXF" ;
2764
- trLongName = QObject::tr ( " AutoCAD DXF" );
2765
- glob = " *.dxf" ;
2766
- ext = " dxf" ;
2767
- }
2768
- else if ( driverName.startsWith ( " Geoconcept" ) )
2769
- {
2770
- longName = " Geoconcept" ;
2771
- trLongName = QObject::tr ( " Geoconcept" );
2772
- glob = " *.gxt *.txt" ;
2773
- ext = " gxt" ;
2774
- }
2775
- else if ( driverName.startsWith ( " FileGDB" ) )
2776
- {
2777
- longName = " ESRI FileGDB" ;
2778
- trLongName = QObject::tr ( " ESRI FileGDB" );
2779
- glob = " *.gdb" ;
2780
- ext = " gdb" ;
2781
- }
2782
- else if ( driverName.startsWith ( " XLSX" ) )
2783
- {
2784
- longName = " MS Office Open XML spreadsheet [XLSX]" ;
2785
- trLongName = QObject::tr ( " MS Office Open XML spreadsheet [XLSX]" );
2786
- glob = " *.xlsx" ;
2787
- ext = " xlsx" ;
2788
- }
2789
- else if ( driverName.startsWith ( " ODS" ) )
2790
- {
2791
- longName = " Open Document Spreadsheet" ;
2792
- trLongName = QObject::tr ( " Open Document Spreadsheet [ODS]" );
2793
- glob = " *.ods" ;
2794
- ext = " ods" ;
2795
- }
2796
- else
2797
- {
2798
- return false ;
2799
- }
2800
-
2801
- return true ;
2802
- }
2803
-
2804
2596
void QgsVectorFileWriter::createSymbolLayerTable ( QgsVectorLayer* vl, const QgsCoordinateTransform* ct, OGRDataSourceH ds )
2805
2597
{
2806
2598
if ( !vl || !ds )
0 commit comments