Esempio n. 1
0
        /// <summary>
        /// imageFileProcessor can be null - the default one will be used, same with insertWaypointHandler and insertEarthquakeHandler
        /// 
        /// for a .jpg file just calls image file processor.
        /// for .gpx, .loc, .zip, .gpz and .wpt files calls BaseFormat.processor() and adds to foldersToProcess
        /// 
        /// returns true on success
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="insertWaypointHandler"></param>
        /// <param name="insertEarthquakeHandler"></param>
        /// <param name="imageFileProcessor"></param>
        /// <param name="foldersToProcess"></param>
        /// <returns></returns>
        public static bool readFile(string fileName, InsertWaypoint insertWaypointHandler, InsertEarthquake insertEarthquakeHandler,
                                        ProcessFile imageFileProcessor, SortedList foldersToProcess, bool addToRecent)
        {
            bool isSuccess = false;

            fileName = Project.GetLongPathName(new FileInfo(fileName).FullName);	// make sure we are not dealing with 8.3 notation here

            if (insertWaypointHandler == null)
            {
                insertWaypointHandler = new InsertWaypoint(WaypointsCache.insertWaypoint);
            }

            if (insertEarthquakeHandler == null)
            {
                insertEarthquakeHandler = new InsertEarthquake(EarthquakesCache.insertEarthquake);
            }

            if (imageFileProcessor == null)
            {
                imageFileProcessor = new ProcessFile(FileAndZipIO.processImageFile);
            }

            if (AllFormats.isTiffFile(fileName))
            {
                #region  Handle a GeoTiff file

                GeoTiff geoTiff = new GeoTiff(fileName);
                try
                {
                    geoTiff.init();
                }
                catch { }

                if (geoTiff.isValid)
                {
                    CustomMapsCache.RemoveCustomMapsBySource(fileName);

                    CustomMap cm = new CustomMapGeotiff(geoTiff);
                    Project.customMapId++;
                    cm.Id = Project.customMapId;
                    CustomMapsCache.AddCustomMap(cm);

                    WaypointsCache.pushBoundaries(cm.Location);
                    WaypointsCache.pushBoundaries(new GeoCoord(geoTiff.BottomLeftLng, geoTiff.BottomLeftLat));
                    WaypointsCache.pushBoundaries(new GeoCoord(geoTiff.TopRightLng, geoTiff.TopRightLat));
                    WaypointsCache.pushBoundaries(new GeoCoord(geoTiff.BottomRightLng, geoTiff.BottomRightLat));

                    // success, worth adding to imported list, if not repeat read:
                    bool repeatRead = isRepeatRead(fileName);
                    if (!repeatRead)
                    {
                        FormattedFileDescr ffd = new FormattedFileDescr(fileName, FileGeoTIFF.FormatName, false);
                        Project.FileDescrList.Add(ffd);
                    }
                    string msg = "OK: read file " + fileName + (repeatRead ? " (repeat read)" : "");
                    LibSys.StatusBar.Trace(msg);
                    LibSys.StatusBar.Trace("* " + msg);

                    isSuccess = true;	// will ensure refresh is called
                }
                else
                {
                    LibSys.StatusBar.Error("readFile - not a GeoTIFF file: " + fileName);
                }
                #endregion  // Handle a GeoTiff file
            }
            else if (fileName.ToLower().EndsWith(".jpg"))
            {
                #region Single JPEG image probably dropped

                PhotoWaypoints.cleanPhotoTrackpoints(fileName);
                try
                {
                    LibSys.StatusBar.Trace("   ...readFile - processing image file: " + fileName);
                    if (imageFileProcessor(null, null, fileName, fileName) > 0)
                    {
                        Project.photoFileName = fileName;
                        isSuccess = true;	// will ensure refresh is called
                    }
                }
                catch (Exception exc)
                {
                    LibSys.StatusBar.Error("Exception: " + exc.Message);
                }
                #endregion // Single JPEG image probably dropped
            }
            else
            {
                LibSys.StatusBar.Trace("   ...readFile - processing formatted file: " + fileName);

                #region Processing formatted file - zip, gpx

                BaseFormat format = AllFormats.formatByFileName(fileName);
                if (format != null)
                {
                    string formatName = AllFormats.formatNameByFileName(fileName);
                    format.InsertWaypoint = insertWaypointHandler;
                    format.InsertEarthquake = insertEarthquakeHandler;
                    FileListStruct fls = new FileListStruct(fileName, formatName, new FormatProcessor(format.process), false);
                    WaypointsCache.RemoveWaypointsBySource(fls.filename);
                    // actually read the file. If ZIP processor is there, it will read all enclosed .GPX files.
                    if (fls.processor("", fls.filename, fls.filename))		// boundaries pushed in WaypointsCache.insertWaypoint()
                    {
                        // knows about .gpx files and Project.photoAnalyzeOnLoad:
                        enlistPhotoFolder(fls.filename, foldersToProcess, imageFileProcessor);

                        // success, worth adding to imported list, if not repeat read:
                        bool repeatRead = isRepeatRead(fileName);
                        if (!repeatRead)
                        {
                            FormattedFileDescr ffd = new FormattedFileDescr(fileName, formatName, false);
                            Project.FileDescrList.Add(ffd);
                        }
                        string msg = "OK: read file " + fileName + (repeatRead ? " (repeat read)" : "");
                        LibSys.StatusBar.Trace(msg);
                        LibSys.StatusBar.Trace("* " + msg);
                        isSuccess = true;
                    }
                    else
                    {
                        LibSys.StatusBar.Trace("* Error: while processing file " + fileName);
                        Project.ErrorBox(Project.mainForm, "Error processing file:\n\n" + fls.filename);
                    }
                }
                else
                {
                    LibSys.StatusBar.Trace("* Error: unrecognized format " + fileName);
                    Project.ErrorBox(Project.mainForm, "Unrecognized format:\n\n" + fileName);
                }
                #endregion // Processing formatted file - zip, gpx

            }
            if (addToRecent && isSuccess)
            {
                Project.insertRecentFile(fileName);
            }
            return isSuccess;
        }
Esempio n. 2
0
        /// <summary>
        /// used in initial load processing; returns number of processed files:
        /// loads all files marked for persistent loading, and then those which were dropped on us (or supplied as cmd line args)
        /// </summary>
        /// <returns></returns>
        public static int readPersistentAndDroppedFiles(bool doZoom, Label messageLabel)
        {
            int ret = 0;

            LibSys.StatusBar.Trace("Read persistent and dropped files - " + doZoom);
            bool boundariesReset = false;		// also will cause zoom to corners, if true - a sign that dropped files are processed
            SortedList foldersToProcess = new SortedList();

            // actually load all files marked for persistent loading, and then those which were dropped on us (or supplied as cmd line args):
            foreach (FileListStruct fls in Project.FileList)
            {
                string fileName = fls.filename;
                try
                {
                    FileInfo fi = new FileInfo(Project.GetLongPathName(fls.filename));
                    fileName = fi.FullName;

                    messageLabel.Text = "...reading files...\n" + fileName;

                    if (!fls.persistent)
                    {
                        warnPhotoAnalyzeOnLoad(fileName);	// can turn Project.photoAnalyzeOnLoad off
                    }

                    if (!boundariesReset && !fls.persistent)	// first non-persistent file, the rest will be also the dropped ones
                    {
                        WaypointsCache.resetBoundaries();
                        boundariesReset = true;
                    }

                    WaypointsCache.RemoveWaypointsBySource(fileName);
                    CustomMapsCache.RemoveCustomMapsBySource(fileName);

                    // actually read the file. If ZIP processor is there, it will read all enclosed .GPX files.
                    if (fls.formatName.Equals(FileGeoTIFF.FormatName))
                    {
                        string[] fileNames = new string[] { fileName };

                        bool anySuccess = FileAndZipIO.readFiles(fileNames);
                    }
                    else
                    {
                        if (fls.processor("", fileName, fileName))		// boundaries pushed in WaypointsCache.insertWaypoint()
                        {
                            // knows about .gpx files and Project.photoAnalyzeOnLoad:
                            enlistPhotoFolder(fileName, foldersToProcess, null);

                            if (!fls.persistent)
                            {
                                // success, worth adding to imported list, if not repeat read:
                                bool repeatRead = isRepeatRead(fileName);
                                if (!repeatRead)
                                {
                                    FormattedFileDescr ffd = new FormattedFileDescr(fileName, fls.formatName, false);
                                    Project.FileDescrList.Add(ffd);
                                }
                            }
                            ret++;
                        }
                        else
                        {
                            Project.ErrorBox(Project.mainForm, "Error processing file:\n\n" + fileName);
                            boundariesReset = false;	// no zoom to corners
                        }
                    }
                }
                catch
                {
                    Project.ErrorBox(Project.mainForm, "Error processing file:\n\n" + fileName);
                    boundariesReset = false;	// no zoom to corners
                }
            }

            postProcessFolders(foldersToProcess, true);

            if (doZoom && boundariesReset)	// we need to zoom into whole set of dropped files
            {
                //				LibSys.StatusBar.Trace("zooming into set");
                Project.mainCommand.wptEnabled(true);
                PictureManager.This.CameraManager.zoomToCorners();
            }
            else
            {
                //				LibSys.StatusBar.Trace("just ProcessCameraMove()");
                PictureManager.This.CameraManager.ProcessCameraMove();
            }

            if (ret > 0)
            {
                string msg = "OK: done reading files... (" + ret + " total)";
                messageLabel.Text = msg;
                LibSys.StatusBar.Trace(msg);
            }
            LibSys.StatusBar.Trace("Read persistent and dropped files finished");
            return ret;
        }
Esempio n. 3
0
 public static void FileDescrListAdd(FormattedFileDescr ffd)
 {
     // do not add duplicate files here:
     foreach(FormattedFileDescr tmp in FileDescrList)
     {
         if(tmp.filename.Equals(ffd.filename))
         {
             FileDescrList.Remove(tmp);
             break;
         }
     }
     FileDescrList.Add(ffd);
 }
Esempio n. 4
0
 private static void AddFfdOption(XmlDocument xmlDoc, XmlNode ffdNode, FormattedFileDescr ffd)
 {
     XmlNode node = xmlDoc.CreateElement("file");
     XmlAttribute attr = xmlDoc.CreateAttribute("path");
     attr.InnerText = "" + ffd.filename;
     node.Attributes.Append(attr);
     attr = xmlDoc.CreateAttribute("format");
     attr.InnerText = "" + ffd.formatName;
     node.Attributes.Append(attr);
     ffdNode.AppendChild(node);
 }
Esempio n. 5
0
        public static void ReadOptions()
        {
            bool favoritesDirty = false;

            string optionsFilePath = GetMiscPath(OPTIONS_FILE_NAME);
            #if DEBUG
            LibSys.StatusBar.Trace("IP: Project:ReadOptions() path=" + optionsFilePath);
            #endif
            DateTime startedRead = DateTime.Now;
            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(optionsFilePath);

                // we want to traverse XmlDocument fast, as tile load operations can be numerous
                // and come in pack. So we avoid using XPath and rely mostly on "foreach child":
                foreach(XmlNode nnode in xmlDoc.ChildNodes)
                {
                    if(nnode.Name.Equals("options"))
                    {
                        foreach(XmlNode node in nnode.ChildNodes)
                        {
                            string nodeName = node.Name;
                            try
                            {
                                if(nodeName.Equals("cameraLat"))
                                {
                                    cameraLat = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("cameraLng"))
                                {
                                    cameraLng = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("cameraElev"))
                                {
                                    cameraElev = Convert.ToDouble(node.InnerText);
                                }
            #if DEBUG
                                else if(nodeName.Equals("enableTrace"))
                                {
                                    enableTrace = node.InnerText.ToLower().Equals("true");
                                }
            #endif
                                else if(nodeName.Equals("mappingCacheLocation"))
                                {
                                    mappingCacheLocation = node.InnerText;
                                }
                                else if(nodeName.Equals("gpsMakeIndex"))
                                {
                                    gpsMakeIndex = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("gpsModelIndex"))
                                {
                                    gpsModelIndex = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("gpsInterfaceIndex"))
                                {
                                    gpsInterfaceIndex = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("gpsRtToleranceIndex"))
                                {
                                    gpsRtToleranceIndex = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("gpsMaxPointsPerRoute"))
                                {
                                    gpsMaxPointsPerRoute = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("gpsMagellanRouteNameConversionMethod"))
                                {
                                    gpsMagellanRouteNameConversionMethod = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mainFormWidth"))
                                {
                                    mainFormWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mainFormHeight"))
                                {
                                    mainFormHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mainFormX"))
                                {
                                    mainFormX = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mainFormY"))
                                {
                                    mainFormY = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mainFormMaximized"))
                                {
                                    mainFormMaximized = "true".Equals(node.InnerText.ToLower());
                                }
                                else if(nodeName.Equals("wptManagerWidth"))
                                {
                                    wptManagerWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("wptManagerHeight"))
                                {
                                    wptManagerHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("cmManagerWidth"))
                                {
                                    cmManagerWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("cmManagerHeight"))
                                {
                                    cmManagerHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("symbolColWidth"))
                                {
                                    symbolColWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("nameColWidth"))
                                {
                                    nameColWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("nameColWidthCm"))
                                {
                                    nameColWidthCm = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("urlNameColWidth"))
                                {
                                    urlNameColWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("descColWidth"))
                                {
                                    descColWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("descColWidthCm"))
                                {
                                    descColWidthCm = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("sourceColWidthCm"))
                                {
                                    sourceColWidthCm = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("commentColWidth"))
                                {
                                    commentColWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("eqManagerWidth"))
                                {
                                    eqManagerWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("eqManagerHeight"))
                                {
                                    eqManagerHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoFullSizeWidth"))
                                {
                                    photoFullSizeWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoFullSizeHeight"))
                                {
                                    photoFullSizeHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoFullSizeX"))
                                {
                                    photoFullSizeX = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoFullSizeY"))
                                {
                                    photoFullSizeY = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoManagerDlgWidth"))
                                {
                                    photoManagerWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoManagerDlgHeight"))
                                {
                                    photoManagerHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoManagerDlgX"))
                                {
                                    photoManagerX = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoManagerDlgY"))
                                {
                                    photoManagerY = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("pmLastTabMode"))
                                {
                                    pmLastTabMode = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("preloadDoProgress"))
                                {
                                    preloadDoProgress = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("preloadScale1"))
                                {
                                    preloadScale1 = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("preloadScale2"))
                                {
                                    preloadScale2 = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("pdaExportDoAerial"))
                                {
                                    pdaExportDoAerial = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("pdaExportDoTopo"))
                                {
                                    pdaExportDoTopo = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("pdaExportDoColor"))
                                {
                                    pdaExportDoColor = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("kmlShowInPopup"))
                                {
                                    kmlOptions.kmlShowInPopup = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("kmlWptsClampToGround"))
                                {
                                    kmlOptions.kmlWptsClampToGround = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("kmlTrksClampToGround"))
                                {
                                    kmlOptions.kmlTrksClampToGround = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("fileInitialDirectory"))
                                {
                                    fileInitialDirectory = node.InnerText;
                                }
                                else if(nodeName.Equals("imageInitialDirectory"))
                                {
                                    imageInitialDirectory = node.InnerText;
                                }
                                else if(nodeName.Equals("photoSaveInitialDirectory"))
                                {
                                    photoSaveInitialDirectory = node.InnerText;
                                }
                                else if(nodeName.Equals("pdaInitialDirectory"))
                                {
                                    pdaInitialDirectory = node.InnerText;
                                }
                                else if(nodeName.Equals("exportDestFolder"))
                                {
                                    exportDestFolder = node.InnerText;
                                }
                                else if(nodeName.Equals("pdaWellDiagonale"))
                                {
                                    pdaWellDiagonale = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("pdaExportImageFormat"))
                                {
                                    pdaExportImageFormat = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("pdaExportUseWebsafeGrayscalePalette"))
                                {
                                    pdaExportUseWebsafeGrayscalePalette = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("pdaExportWrapPdb"))
                                {
                                    pdaExportWrapPdb = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("findKeyword"))
                                {
                                    findKeyword = node.InnerText;
                                }
                                else if (nodeName.Equals("zipcode"))
                                {
                                    zipcode = node.InnerText;
                                }
                                else if (nodeName.Equals("waypointNameStyle"))
                                {
                                    waypointNameStyle = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("trackNameStyle"))
                                {
                                    trackNameStyle = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("earthquakeStyle"))
                                {
                                    earthquakeStyle = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("printTextFont"))
                                {
                                    printTextFont = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("mouseWheelAction"))
                                {
                                    mouseWheelAction = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("distortionFactor"))
                                {
                                    distortionFactor = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("cameraHeightMin"))
                                {
                                    cameraHeightMin = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("coordStyle"))
                                {
                                    coordStyle = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("unitsDistance"))
                                {
                                    unitsDistance = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("earthquakeStyleFillHowRecentIndex"))
                                {
                                    earthquakeStyleFillHowRecentIndex = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("allowMapPopups"))
                                {
                                    allowMapPopups = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawRelief"))
                                {
                                    drawRelief = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("serverMessageLast"))
                                {
                                    serverMessageLast = node.InnerText;
                                }
                                else if(nodeName.Equals("drawGrid"))
                                {
                                    drawGrid = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawCentralPoint"))
                                {
                                    drawCentralPoint = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawCornerArrows"))
                                {
                                    drawCornerArrows = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawCities"))
                                {
                                    drawCities = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawLandmarks"))
                                {
                                    drawLandmarks = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawEarthquakes"))
                                {
                                    drawEarthquakes = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawWaypoints"))
                                {
                                    drawWaypoints = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawTrackpoints"))
                                {
                                    drawTrackpoints = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("useWaypointIcons"))
                                {
                                    useWaypointIcons = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("showHelpAtStart"))
                                {
                                    showHelpAtStart = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsWptDescrAsName"))
                                {
                                    gpsWptDescrAsName = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsVehicleIcon"))
                                {
                                    gpsVehicleIcon = node.InnerText;
                                }
                                else if(nodeName.Equals("showTrackpointNumbers"))
                                {
                                    showTrackpointNumbers = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawVehicles"))
                                {
                                    drawVehicles = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("eqUseOldData"))
                                {
                                    eqUseOldData = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("eqFetchOnStart"))
                                {
                                    eqFetchOnStart = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("earthquakeStyleFillRecent"))
                                {
                                    earthquakeStyleFillRecent = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("terraserverUseServices"))
                                {
                                    terraserverUseServices = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("sanityFilter"))
                                {
                                    sanityFilter = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsRtTrackOnMap"))
                                {
                                    gpsRtTrackOnMap = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsZoomIntoTracks"))
                                {
                                    gpsZoomIntoTracks = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsRtTrackLog"))
                                {
                                    gpsRtTrackLog = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsRtKeepInView"))
                                {
                                    gpsRtKeepInView = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("gpsMagellanHandshake"))
                                {
                                    gpsMagellanHandshake = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("terraLayerOpacity"))
                                {
                                    terraLayerOpacity = Convert.ToDouble(node.InnerText);
                                    // protect from "disappearing aerial", when transparency goes to 0:
                                    if(terraLayerOpacity < 0.5d || terraLayerOpacity > 1.0d)
                                    {
                                        terraLayerOpacity = 0.5d;
                                    }
                                }
                                else if(nodeName.Equals("terraLayerOpacity2"))
                                {
                                    terraLayerOpacity2 = Convert.ToDouble(node.InnerText);
                                    // protect from "disappearing aerial", when transparency goes to 0:
                                    if(terraLayerOpacity2 < 0.15d || terraLayerOpacity2 > 1.0d)
                                    {
                                        terraLayerOpacity2 = 0.5d;
                                    }
                                }
                                else if(nodeName.Equals("terraLayerOpacity3"))
                                {
                                    terraLayerOpacity3 = Convert.ToDouble(node.InnerText);
                                    // protect from "disappearing aerial", when transparency goes to 0:
                                    if(terraLayerOpacity3 < 0.25d || terraLayerOpacity3 > 1.0d)
                                    {
                                        terraLayerOpacity3 = 1.0d;
                                    }
                                }
                                else if(nodeName.Equals("terraUseOverlay"))
                                {
                                    //terraUseOverlay = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("breakTimeMinutes"))
                                {
                                    breakTimeMinutes = Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("drawTerraserver"))
                                {
                                    drawTerraserver = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("makeWhitishTransparent"))
                                {
                                    makeWhitishTransparent = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("drawTerraserverMode"))
                                {
                                    drawTerraserverMode = node.InnerText;
                                }
                                else if(nodeName.Equals("photoGalleryPictureSize"))
                                {
                                    photoGalleryPictureSize = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoFolderPath"))
                                {
                                    photoFolderPath = node.InnerText;
                                }
                                else if(nodeName.Equals("photoTimeShiftYourCamera"))
                                {
                                    long ticks = Convert.ToInt64(node.InnerText);
                                    photoTimeShiftYourCamera = new TimeSpan(ticks);
                                }
                                else if(nodeName.Equals("photoTimeZoneIdYourCamera"))
                                {
                                    photoTimeZoneIdYourCamera = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoTimeZoneIdFile"))
                                {
                                    photoTimeZoneIdFile = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoTimeZoneIdTemp"))
                                {
                                    photoTimeZoneIdTemp = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("togeotiffFolderPath"))
                                {
                                    togeotiffFolderPath = node.InnerText;
                                }
                                else if(nodeName.Equals("togeotiffFileName"))
                                {
                                    togeotiffFileName = node.InnerText;
                                }
                                else if(nodeName.Equals("photoFileName"))
                                {
                                    photoFileName = node.InnerText;
                                }
                                else if(nodeName.Equals("photoAnalyzeOnLoad"))
                                {
                                    photoAnalyzeOnLoad = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("photoAnalyzeOnLoadReminder"))
                                {
                                    photoAnalyzeOnLoadReminder = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("photoDoPreview"))
                                {
                                    photoDoPreview = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("thumbDoDisplay"))
                                {
                                    thumbDoDisplay = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("thumbWidth"))
                                {
                                    thumbWidth = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("thumbHeight"))
                                {
                                    thumbHeight = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("thumbPosition"))
                                {
                                    thumbPosition = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("photoPreserveSize"))
                                {
                                    photoPreserveSize = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("photoFitToSize"))
                                {
                                    photoFitToSize = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("photoSaveQuality"))
                                {
                                    photoSaveQuality = Convert.ToInt64(node.InnerText.Trim());
                                }
                                else if(nodeName.Equals("useProxy"))
                                {
                                    useProxy = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("suspendKeepAlive"))
                                {
                                    suspendKeepAlive = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("forceEmptyProxy"))
                                {
                                    forceEmptyProxy = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("proxyServer"))
                                {
                                    proxyServer = node.InnerText;
                                }
                                else if(nodeName.Equals("proxyPort"))
                                {
                                    proxyPort = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("webTimeoutMs"))
                                {
                                    webTimeoutMs = Convert.ToInt32(node.InnerText);
                                }
                                else if(nodeName.Equals("geocachingLogin"))
                                {
                                    geocachingLogin = node.InnerText;
                                }
                                else if(nodeName.Equals("penTrackThickness"))
                                {
                                    TrackPalette.penTrackThickness = (float)Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("penRouteThickness"))
                                {
                                    TrackPalette.penRouteThickness = (float)Convert.ToDouble(node.InnerText);
                                }
                                else if(nodeName.Equals("webPageTemplate"))
                                {
                                    webPageTemplate = node.InnerText;
                                }
                                else if(nodeName.Equals("webPageDestinationFolder"))
                                {
                                    webPageDestinationFolder = node.InnerText;
                                }
                                else if(nodeName.Equals("webPagePhotoStorageUrlBase"))
                                {
                                    webPagePhotoStorageUrlBase = node.InnerText;
                                }
                                else if(nodeName.Equals("webPageLinksUsePopup"))
                                {
                                    webPageLinksUsePopup = node.InnerText.ToLower().Equals("true");
                                }
                                else if(nodeName.Equals("trackPalette"))
                                {
                                    int i = 0;
                                    foreach(XmlNode nnnode in node.ChildNodes)
                                    {
                                        try
                                        {
                                            string sRGB = nnnode.InnerText;
                                            string[] split = sRGB.Split(new Char[] {','});
                                            int r = Convert.ToInt32(split[0]);
                                            int g = Convert.ToInt32(split[1]);
                                            int b = Convert.ToInt32(split[2]);
                                            Color color = Color.FromArgb(r, g, b);

                                            TrackPalette.setColor(i, color);
                                        }
                                        catch {}
                                        i++;
                                    }
                                }
                                else if(nodeName.Equals("fileDescrList"))
                                {
                                    foreach(XmlNode nnnode in node.ChildNodes)
                                    {
                                        string filename = nnnode.Attributes.GetNamedItem("path").InnerText.Trim();
                                        string formatName = nnnode.Attributes.GetNamedItem("format").InnerText;
                                        FormattedFileDescr ffd = new FormattedFileDescr(filename, formatName, true);
                                        Project.FileDescrList.Add(ffd);
                                    }
                                }
                                else if(nodeName.Equals("favorites"))
                                {
                                    // this is here only for backwards compatibility. It takes favorites from options.xml
                                    // there is no save block back to options.xml, favorites go into favorites.xml now

                                    foreach(XmlNode nnnode in node.ChildNodes)
                                    {
                                        string name = nnnode.InnerText;
                                        string sLng = nnnode.Attributes.GetNamedItem("lon").InnerText;
                                        string sLat = nnnode.Attributes.GetNamedItem("lat").InnerText;
                                        string sElev = nnnode.Attributes.GetNamedItem("elev").InnerText;
                                        XmlNode tNode = nnnode.Attributes.GetNamedItem("type");
                                        string type = tNode == null ? "aerial" : tNode.InnerText.Trim();
                                        double lng = Convert.ToDouble(sLng);
                                        double lat = Convert.ToDouble(sLat);
                                        double elev = Convert.ToDouble(sElev);
                                        CamPos camPos = new CamPos(lng, lat, elev, name, type);
                                        Project.favorites.Add(camPos);
                                        favoritesDirty = true;	// provoke SaveFavorites into favorites.xml
                                    }
                                }
                                else if(nodeName.Equals("recentFiles"))
                                {
                                    foreach(XmlNode nnnode in node.ChildNodes)
                                    {
                                        string filename = nnnode.Attributes.GetNamedItem("path").InnerText.Trim();
                                        filename = Project.GetLongPathName(filename);
                                        FileInfo fi = new FileInfo(filename);
                                        if(fi.Exists)
                                        {
                                            Project.recentFiles.Add(filename);
                                        }
                                        else
                                        {
                                            DirectoryInfo di = new DirectoryInfo(filename);
                                            if(di.Exists)
                                            {
                                                Project.recentFiles.Add(filename);
                                            }
                                        }
                                    }
                                }
                            }
                            catch (Exception ee)
                            {
                                // bad node - not a big deal...
                                LibSys.StatusBar.Error("Project:ReadOptions() node=" + nodeName + " " + ee.Message);
                            }
                        }
                    }
                }

            }
            catch (Exception e)
            {
                LibSys.StatusBar.Error("Project:ReadOptions() " + e.Message);
            }

            LibSys.StatusBar.Trace("ReadOptions: " + Math.Round((DateTime.Now - startedRead).TotalMilliseconds) + " ms");

            // restore gpsPortSettings from the file or fill it with default values:
            restoreOrDefaultGpsSettings();

            if(cameraHeightMin < 0.04d || cameraHeightMin > CAMERA_HEIGHT_MIN_DEFAULT)
            {
                cameraHeightMin = CAMERA_HEIGHT_MIN_DEFAULT;
            }

            if(cameraElev < cameraHeightMin * 1000.0d || cameraElev > CAMERA_HEIGHT_MAX * 1000.0d)
            {
                cameraElev = CAMERA_HEIGHT_SAFE * 1000.0d;
            }

            // restore Tools from the file or fill it with default values:
            string toolsFilePath = GetMiscPath(TOOLS_FILE_NAME);
            Project.tools.Restore(toolsFilePath);

            if(favoritesDirty)
            {
                LibSys.StatusBar.Trace("ReadOptions: saving favorites");
                SaveFavorites();	// in case the old format was read in
                SaveOptions();		// without the favorites part
            }
            else
            {
                ReadFavorites();
            }
            LibSys.StatusBar.Trace("ReadOptions: finished in " + Math.Round((DateTime.Now - startedRead).TotalMilliseconds) + " ms");
        }
Esempio n. 6
0
        /*
         * see http://www.topografix.com/GPX/1/0 for more info
         *
         * Validating your GPX document
                Validation is done using the Xerces XML parser. Download the latest Xerces distribution from the Apache website.
                 Windows users should download the "Latest Xerces-C++ Binary Package for Windows". Unzip the files, and locate the
                 SAXCount.exe program in the bin folder. This is a command-line utility that will validate your GPX file.

            Assuming your GPX file is named my_gpx_file.gpx, and is located in the same folder as SaxCount.exe, use the following
             command line to validate your file:

                    SaxCount.exe -v=always -n -s -f test.gpx

            If your file validates successfully, SAXCount will display a count of the elements in your file, like the following:

                    test.gpx: 1012 ms (4025 elems, 1916 attrs, 8048 spaces, 36109 chars)

            Any other output from SAXCount.exe indicates that your GPX file is incorrect. It is your responsibility to ensure that any GPX files you create validate successfully against the GPX schema.
         */
        public void doWrite()
        {
            string diag = "Selected format: " + m_selectedFormat + "\r\n\r\n";
            trkpointCount = 0;
            waypointCount = 0;
            // could be "new DateTimeFormatInfo().UniversalSortableDateTimePattern;" - but it has space instead of 'T'

            messageBoxDirty = true;
            messageTextBox.Text = diag;

            try
            {
                if(m_selectedFormat.Equals(FileStreetsTripsCsv.FormatName))
                {
                    hasSaved = FileAndZipIO.saveCsv(m_selectedFileName, m_tracks, m_saveTracks,
                        m_waypoints, m_saveWaypoints, out waypointCount, out trkpointCount);
                }
                else if(m_selectedFormat.Equals(FileEasyGps.FormatName))
                {
                    int tracksCount;
                    hasSaved = FileAndZipIO.saveGpx(m_selectedFileName, m_tracks, m_saveTracks,
                        m_waypoints, m_saveWaypoints, out waypointCount, out trkpointCount, out tracksCount);

                    // try suggesting JPEG correlation here, if the folder has any .JPG files
                    if(tracksCount > 0)
                    {
                        bool hasJpegs = false;
                        try
                        {
                            FileInfo fi = new FileInfo(m_selectedFileName);
                            DirectoryInfo di = fi.Directory;
                            foreach(FileInfo fii in di.GetFiles())
                            {
                                if(fii.Name.ToLower().EndsWith(".jpg"))
                                {
                                    hasJpegs = true;
                                    break;
                                }
                            }
                        }
                        catch
                        {
                        }
                        if(hasJpegs)
                        {
                            string message = "The folder you selected contains images\r\n\r\nDo you want to relate them to trackpoints?";
                            if(Project.YesNoBox(this, message))
                            {
                                Project.photoFileName = m_selectedFileName;
                                Project.pmLastTabMode = 0;
                                DlgPhotoManager dlg = new DlgPhotoManager(0);
                                dlg.setImportButtonsAgitated();
                                dlg.ShowDialog();
                            }
                        }
                    }
                }
                else if(m_selectedFormat.Equals(FileKml.FormatName))
                {
                    string name = new FileInfo(m_selectedFileName).Name;

                    name = name.Substring(0, name.Length - FileKml.FileExtension.Length);

                    GoogleEarthManager.saveTracksWaypoints(
                        m_selectedFileName, name, m_tracks, m_saveTracks,
                        m_waypoints, m_saveWaypoints, out waypointCount, out trkpointCount
                    );
                }
                else
                {
                    messageTextBox.Text = "Error: format " + m_selectedFormat + " not supported for writing.";
                    LibSys.StatusBar.Error("FileExportForm:doWrite() format " + m_selectedFormat + " not supported for writing.");
                    return;
                }

                WaypointsCache.isDirty = false;

                if(waypointCount > 0 || trkpointCount > 0)
                {
                    diag += "OK: " + waypointCount + " waypoints and " + trkpointCount + " legs saved to file.";
                    messageTextBox.ForeColor = Color.Black;

                    FileInfo fi = new FileInfo(Project.GetLongPathName(m_selectedFileName));
                    FormattedFileDescr fd = new FormattedFileDescr(fi.FullName, m_selectedFormat, persistCheckBox.Checked);
                    Project.FileDescrListAdd(fd);

                    if(!m_selectedFormat.Equals(FileKml.FormatName))	// can't read back kmz
                    {
                        Project.insertRecentFile(fi.FullName);
                    }
                }
                else
                {
                    diag += "Error: failed to save to file (0 waypoints, 0 legs).";
                    messageTextBox.ForeColor = Color.Red;
                }

                messageTextBox.Text = diag;
            }
            catch (Exception e)
            {
                LibSys.StatusBar.Error("FileExportForm:doWrite() " + e); //.Message);
                messageTextBox.Text = diag + e.Message;
                messageTextBox.ForeColor = Color.Red;
            }
        }
Esempio n. 7
0
            /// <summary>
            /// Calls format.process() and then FileAndZipIO.processPhotoFolderByFile(...true), (true for reading photoParameters file) 
            /// </summary>
            public void doRead(int mode)
            {
                Cursor.Current = Cursors.WaitCursor;
                string filename = m_fileImportForm.m_selectedFileName;

                bool repeatRead = false;
                string sRepeatRead = "";
                FormattedFileDescr ffdRepeat = null;
                foreach(FormattedFileDescr ffd in Project.FileDescrList)
                {
                    if(ffd.filename.Equals(filename))
                    {
                        repeatRead = true;
                        ffdRepeat = ffd;
                        sRepeatRead = " (repeat read)";
                        switch(mode)
                        {
                            case MODE_GPS:
                                WaypointsCache.RemoveWaypointsBySource(filename);
                                CustomMapsCache.RemoveCustomMapsBySource(filename);
                                break;
                            case MODE_EQ:
                                EarthquakesCache.RemoveEarthquakesBySource(filename);
                                break;
                        }
                        LayerWaypoints.This.init();		// provoke PutOnMap on layer's Paint()
                        m_pictureManager.Refresh();
                        break;
                    }
                }

                // actually read the file. If ZIP processor is there, it will read all enclosed .GPX files.
                WaypointsCache.resetBoundaries();

                string formatName = FileImportForm.m_selectedFormat; //m_fileImportForm.detailComboBox.Text;

                string diag = "Selected format: " + formatName + sRepeatRead + "\n\n";

                if(AllFormats.isTiffFile(filename))
                {
                    string[] fileNames = new string[] { filename };

                    bool anySuccess = FileAndZipIO.readFiles(fileNames);

                    if(anySuccess)
                    {
                        elementCount = 1;
                        elementName = "GeoTIFF image";
                    }
                }
                else
                {
                    elementCount = 0;
                    m_fileProcessor("", filename, filename);

                    switch(mode)
                    {
                        case MODE_GPS:
                            FileAndZipIO.processPhotoFolderByFile(filename, null);	// use default photo files processor and read in parameters file
                            break;
                    }
                }

                if(elementCount > 0)
                {
                    diag += "OK: read " + elementCount + " " + elementName + "."
                        + "\n\nClick \"Next>>\" to see list of imported files";
                    m_fileImportForm.nextButton.Enabled = true;
                    LibSys.StatusBar.Trace("OK: read file " + filename + " containing " + elementCount + " " + elementName + (repeatRead ? " (repeat read)" : ""));

                    if(repeatRead)
                    {
                        ffdRepeat.isPersistent = m_fileImportForm.persistCheckBox.Checked;
                    }
                    else
                    {
                        FileInfo fi = new FileInfo(Project.GetLongPathName(m_fileImportForm.m_selectedFileName));
                        FormattedFileDescr fd = new FormattedFileDescr(fi.FullName, formatName, m_fileImportForm.persistCheckBox.Checked);
                        Project.FileDescrListAdd(fd);
                    }
                    m_fileImportForm.diagLabel.ForeColor = Color.Black;

                    switch(mode)
                    {
                        case MODE_GPS:
                            Project.mainCommand.wptEnabled(true);
                            WaypointsCache.RefreshWaypointsDisplayed();
                            if(doZoomIn)
                            {
                                m_pictureManager.CameraManager.zoomToCorners();
                            }
                            Project.insertRecentFile(filename);
                            break;
                        case MODE_EQ:
                            Project.mainCommand.eqEnabled(true);
                            EarthquakesCache.RefreshEarthquakesDisplayed();
                            break;
                    }
                    LayerWaypoints.This.init();		// provoke PutOnMap on layer's Paint()
                    m_pictureManager.Refresh();
                }
                else
                {
                    diag += "Error: the file seems to contain no " + elementName + ".\nIt is probably in other format than you have selected."
                        + "\n\nClick \"<<Back\" to select another format";
                    m_fileImportForm.nextButton.Enabled = false;
                    m_fileImportForm.diagLabel.ForeColor = Color.Red;
                    LibSys.StatusBar.Error("the file " + filename + " seems to contain no " + elementName);
                }

                m_fileImportForm.diagLabel.Text = diag;
                Cursor.Current = Cursors.Default;
            }