/// <summary> /// Persists the settings to the specified filename /// </summary> /// <param name="file">The filename to use for saving</param> /// <param name="settings">The instance of the Settings class to persist</param> public static void SaveSettingsToFile(string file, VESettings settings) { FileStream fs = null; XmlSerializer xs = new XmlSerializer(typeof(VESettings)); fs = File.Open(file, FileMode.Create, FileAccess.Write); try { xs.Serialize(fs, settings); } finally { fs.Close(); } }
public VirtualEarthForm(MainApplication parentApplication) { // // Required for Windows Form Designer support // InitializeComponent(); try { m_WorldWindow = parentApplication.WorldWindow; veLayer = new VeReprojectTilesLayer("VirtualEarth Tiles", parentApplication, this); lock (m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects.SyncRoot) { foreach (WorldWind.Renderable.RenderableObject ro in m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects) { if (ro is WorldWind.Renderable.RenderableObjectList && ro.Name.IndexOf("Images") >= 0) { WorldWind.Renderable.RenderableObjectList imagesList = ro as WorldWind.Renderable.RenderableObjectList; //imagesList.ChildObjects.Insert(0, m_RenderableList); //insert it at the end of the list imagesList.ChildObjects.Insert(imagesList.ChildObjects.Count - 1, veLayer); break; } } } cacheDirectory = String.Format("{0}\\Virtual Earth", m_WorldWindow.Cache.CacheDirectory); if (Directory.Exists(cacheDirectory) == true) { DirectoryInfo diCache = new DirectoryInfo(cacheDirectory); //for debug, delete the entire cache //diCache.Delete(true); } //#if DEBUG pushPinTexture = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\Plugins\\VirtualEarth\\VirtualEarthPushPin.png"; //#else // pushPinTexture = VirtualEarthPlugin.PluginDir + @"\VirtualEarthPushPin.png"; //#endif if (File.Exists(pushPinTexture) == false) { Utility.Log.Write(new Exception("pushPinTexture not found " + pushPinTexture)); } //check that proj.dll is installed correctly, else set plugin to off string projDllPath = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\proj.dll"; if (File.Exists(projDllPath) == false) { //TODO turned off for debugging veLayer.IsOn = false; throw new Exception("'proj.dll' needs to be in the same directory where WorldWind.exe is installed"); } //Load up settings if they exist string settingspath = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\Plugins\\VirtualEarth\\Settings.xml"; if (File.Exists(settingspath)) settings = VESettings.LoadSettingsFromFile(settingspath); else VESettings.SaveSettingsToFile(settingspath, settings); //Apply loaded settings tbZoomLevel.Value = settings.ZoomLevel; cbLayerIsOn.Checked = settings.LayerOn; //cbTerrain.Checked = settings.Terrain; rbRoad.Checked = settings.Road; rbAerial.Checked = settings.Aerial; rbHybrid.Checked = settings.Hybrid; rbDebug.Checked = settings.Debug; } catch (Exception ex) { Utility.Log.Write(ex); throw; } }
/// <summary> /// Loads a serialized instance of the settings from the specified file /// returns default values if the file doesn't exist or an error occurs /// </summary> /// <returns>The persisted settings from the file</returns> public static VESettings LoadSettingsFromFile(string filename) { VESettings settings; XmlSerializer xs = new XmlSerializer(typeof(VESettings)); if (File.Exists(filename)) { FileStream fs = null; try { fs = File.Open(filename, FileMode.Open, FileAccess.Read); } catch { return new VESettings(); } try { settings = (VESettings)xs.Deserialize(fs); } catch { settings = new VESettings(); } finally { fs.Close(); } } else { settings = new VESettings(); } return settings; }