Index: trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 1518)
+++ trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 1519)
@@ -117,5 +117,5 @@
             r = new GpxReader(is,file.getAbsoluteFile().getParentFile());
             r.data.storageFile = file;
-            GpxLayer gpxLayer = new GpxLayer(r.data, fn);
+            GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
             Main.main.addLayer(gpxLayer);
             if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
@@ -155,5 +155,5 @@
             if(r.getNumberOfCoordinates()>0) {
                 r.data.storageFile = file;
-                GpxLayer gpxLayer = new GpxLayer(r.data, fn);
+                GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
                 Main.main.addLayer(gpxLayer);
                 if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 1518)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 1519)
@@ -84,4 +84,5 @@
     private colorModes computeCacheColored;
     private int computeCacheColorTracksTune;
+    private boolean isLocalFile;
 
     public GpxLayer(GpxData d) {
@@ -95,4 +96,10 @@
         this(d);
         this.name = name;
+    }
+
+    public GpxLayer(GpxData d, String name, boolean isLocal) {
+        this(d);
+        this.name = name;
+        this.isLocalFile = isLocal;
     }
 
@@ -204,12 +211,12 @@
                     File sel[] = fc.getSelectedFiles();
                     if(sel != null) {
-                    	// sort files in increasing order of timestamp (this is the end time, but so long as they don't overlap, that's fine)
-                    	if (sel.length > 1) {
-                    		Arrays.sort(sel, new Comparator<File>() {
-                    			public int compare(File a, File b) {
-                    				return a.lastModified() <= b.lastModified() ? -1 : 1;
-                    			}
-                    		});
-                    	}
+                        // sort files in increasing order of timestamp (this is the end time, but so long as they don't overlap, that's fine)
+                        if (sel.length > 1) {
+                            Arrays.sort(sel, new Comparator<File>() {
+                                public int compare(File a, File b) {
+                                    return a.lastModified() <= b.lastModified() ? -1 : 1;
+                                }
+                            });
+                        }
                         double firstStartTime = sel[0].lastModified()/1000.0 /* ms -> seconds */ - AudioUtil.getCalibratedDuration(sel[0]);
                         for (int i = 0; i < sel.length; i++) {
@@ -391,5 +398,5 @@
         int maxLineLength = Main.pref.getInteger("draw.rawgps.max-line-length", -1);
         // draw line between points, global setting
-        boolean lines = Main.pref.getBoolean("draw.rawgps.lines");
+        boolean lines = (Main.pref.getBoolean("draw.rawgps.lines") || (Main.pref.getBoolean("draw.rawgps.lines.localfiles") && this.isLocalFile));
         String linesKey = "draw.rawgps.lines.layer "+name;
         // draw lines, per-layer setting
@@ -923,12 +930,12 @@
             double startTime = lastModified - duration;
             startTime = firstStartTime + (startTime - firstStartTime) /  
-            	Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
+                Main.pref.getDouble("audio.calibration", "1.0" /* default, ratio */);
             WayPoint w1 = null;
             WayPoint w2 = null;
 
-        	for (GpxTrack track : data.tracks) {
-        		if (track.trackSegs == null) continue;
-        		for (Collection<WayPoint> seg : track.trackSegs) {
-        			for (WayPoint w : seg) {
+            for (GpxTrack track : data.tracks) {
+                if (track.trackSegs == null) continue;
+                for (Collection<WayPoint> seg : track.trackSegs) {
+                    for (WayPoint w : seg) {
                         if (startTime < w.time) {
                             w2 = w;
@@ -939,12 +946,12 @@
                     if (w2 != null) break;
                 }
-            }	
+            }    
 
             if (w1 == null || w2 == null) {
-            	timedMarkersOmitted = true;
+                timedMarkersOmitted = true;
             } else {
-            	EastNorth eastNorth = w1.eastNorth.interpolate(
-            				w2.eastNorth,
-            				(startTime - w1.time)/(w2.time - w1.time));
+                EastNorth eastNorth = w1.eastNorth.interpolate(
+                            w2.eastNorth,
+                            (startTime - w1.time)/(w2.time - w1.time));
                 wayPointFromTimeStamp = new WayPoint(Main.proj.eastNorth2latlon(eastNorth));
                 wayPointFromTimeStamp.time = startTime;
@@ -954,5 +961,5 @@
                 wayPointFromTimeStamp.attr.put("name", name);
                 waypoints.add(wayPointFromTimeStamp);
-            }        	
+            }            
         }
         
@@ -1004,5 +1011,5 @@
             /* timeFromAudio intended for future use to shift markers of this type on synchronization */
             if (w == wayPointFromTimeStamp) { 
-            	am.timeFromAudio = true; 
+                am.timeFromAudio = true; 
             }
             ml.data.add(am);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 1518)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(revision 1519)
@@ -27,5 +27,9 @@
 public class DrawingPreference implements PreferenceSetting {
 
-    private JCheckBox drawRawGpsLines = new JCheckBox(tr("Draw lines between raw gps points."));
+    private ButtonGroup gpsLinesGroup;
+    private JRadioButton drawRawGpsLinesAll = new JRadioButton(tr("All"));
+    private JRadioButton drawRawGpsLinesLocal = new JRadioButton(tr("Local files"));
+    private JRadioButton drawRawGpsLinesNone = new JRadioButton(tr("None"));
+    private ActionListener drawRawGpsLinesActionListener;
     private JTextField drawRawGpsMaxLineLength = new JTextField(8);
     private JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no segments imported."));
@@ -54,21 +58,40 @@
 
         // drawRawGpsLines
-        drawRawGpsLines.addActionListener(new ActionListener(){
+        gpsLinesGroup = new ButtonGroup();
+        gpsLinesGroup.add(drawRawGpsLinesNone);
+        gpsLinesGroup.add(drawRawGpsLinesLocal);
+        gpsLinesGroup.add(drawRawGpsLinesAll);
+
+        if(Main.pref.getBoolean("draw.rawgps.lines")) {
+            drawRawGpsLinesAll.setSelected(true);
+        } else if (Main.pref.getBoolean("draw.rawgps.lines.localfiles")) {
+            drawRawGpsLinesLocal.setSelected(true);
+        } else {
+            drawRawGpsLinesNone.setSelected(true);
+        }
+
+        panel.add(new JLabel(tr("Draw lines between raw GPS points")), GBC.eol().insets(20,0,0,0));
+        panel.add(drawRawGpsLinesNone, GBC.eol().insets(40,0,0,0));
+        panel.add(drawRawGpsLinesLocal, GBC.eol().insets(40,0,0,0));
+        panel.add(drawRawGpsLinesAll, GBC.eol().insets(40,0,0,0));
+
+        drawRawGpsLinesActionListener = new ActionListener(){
             public void actionPerformed(ActionEvent e) {
-                forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
-                drawRawGpsMaxLineLength.setEnabled(drawRawGpsLines.isSelected());
-                drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
+                forceRawGpsLines.setEnabled(!drawRawGpsLinesNone.isSelected());
+                drawRawGpsMaxLineLength.setEnabled(!drawRawGpsLinesNone.isSelected());
+                drawGpsArrows.setEnabled(!drawRawGpsLinesNone.isSelected() );
                 drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
                 drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
             }
-        });
-        drawRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines"));
-        drawRawGpsLines.setToolTipText(tr("If your gps device draws too few lines, select this to draw lines along your way."));
-        panel.add(drawRawGpsLines, GBC.eol().insets(20,0,0,0));
+        };
+
+        drawRawGpsLinesNone.addActionListener(drawRawGpsLinesActionListener);
+        drawRawGpsLinesLocal.addActionListener(drawRawGpsLinesActionListener);
+        drawRawGpsLinesAll.addActionListener(drawRawGpsLinesActionListener);
 
         // drawRawGpsMaxLineLength
         drawRawGpsMaxLineLength.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length", -1)));
         drawRawGpsMaxLineLength.setToolTipText(tr("Maximum length (in meters) to draw lines. Set to '-1' to draw all lines."));
-        drawRawGpsMaxLineLength.setEnabled(drawRawGpsLines.isSelected());
+        drawRawGpsMaxLineLength.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(new JLabel(tr("Maximum length (meters)")), GBC.std().insets(40,0,0,0));
         panel.add(drawRawGpsMaxLineLength, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
@@ -77,5 +100,5 @@
         forceRawGpsLines.setToolTipText(tr("Force drawing of lines if the imported data contain no line information."));
         forceRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines.force"));
-        forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
+        forceRawGpsLines.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(forceRawGpsLines, GBC.eop().insets(40,0,0,0));
 
@@ -89,5 +112,5 @@
         drawGpsArrows.setToolTipText(tr("Draw direction arrows for lines, connecting GPS points."));
         drawGpsArrows.setSelected(Main.pref.getBoolean("draw.rawgps.direction"));
-        drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
+        drawGpsArrows.setEnabled(!drawRawGpsLinesNone.isSelected());
         panel.add(drawGpsArrows, GBC.eop().insets(40,0,0,0));
 
@@ -221,5 +244,6 @@
 
     public boolean ok() {
-        Main.pref.put("draw.rawgps.lines", drawRawGpsLines.isSelected());
+        Main.pref.put("draw.rawgps.lines", drawRawGpsLinesAll.isSelected());
+        Main.pref.put("draw.rawgps.lines.localfiles", drawRawGpsLinesLocal.isSelected());
         Main.pref.put("draw.rawgps.max-line-length", drawRawGpsMaxLineLength.getText());
         Main.pref.put("draw.rawgps.lines.force", forceRawGpsLines.isSelected());
