internal void SaveToView(Dapple.DappleView oView) { m_oRootNode.SaveToView(oView); if (m_oFavouriteServer != null) { oView.View.Addfavouriteserverurl(new Altova.Types.SchemaString(m_oFavouriteServer.Uri.ToString())); } }
internal void LoadFromView(Dapple.DappleView oSource) { lock (m_oLock) { ClearModel(); ServerModelNode oFavouriteServer = null; // --- Create favourite server Uri --- Uri oFavouriteServerUri = null; if (oSource.View.Hasfavouriteserverurl() && !String.IsNullOrEmpty(oSource.View.favouriteserverurl.Value)) { try { oFavouriteServerUri = new Uri(oSource.View.favouriteserverurl.Value); } catch (UriFormatException) { // --- The favourite server is invalid. Default to no favourite server --- } } // --- Load the servers --- if (oSource.View.Hasservers()) { for (int i = 0; i < oSource.View.servers.builderentryCount; i++) { dappleview.builderentryType entry = oSource.View.servers.GetbuilderentryAt(i); ServerModelNode temp = LoadBuilderEntryType(entry, oFavouriteServerUri); if (temp != null) { oFavouriteServer = temp; } } } if (oFavouriteServer != null) { SetFavouriteServer(oFavouriteServer, false); } else if (oSource.View.Hasfavouriteserverurl() && PersonalDapServerModelNode.PersonalDapRunning && oSource.View.favouriteserverurl.Value.Equals(Geosoft.GX.DAPGetData.Server.PERSONAL_DAP_URI)) { SetFavouriteServer(PersonalDapServer, false); } OnLoaded(EventArgs.Empty); } }
private void ValidateView(string strView) { try { DappleView view = new DappleView(strView); if (view.View.Haspreview()) { // dont use the property from Altova it validates the bytes one by one and takes forever MemoryStream ms = new MemoryStream(Convert.FromBase64String(view.View.GetStartingpreviewCursor().InnerText)); m_viewImage = Image.FromStream(ms); } else { m_viewImage = null; } if (view.View.Hasnotes()) { this.c_lNotes.Text = view.View.notes.Value; } else { this.c_lNotes.Text = ""; } m_strViewFile = strView; this.c_bOK.Enabled = true; } catch { this.c_bOK.Enabled = false; m_strViewFile = null; m_viewImage = null; this.c_lNotes.Text = ""; } }
/// <summary> /// Saves the current view to an xml file, /// this requires that worldWindow was created in the same thread as the caller /// </summary> /// <param name="fileName"></param> /// <param name="notes"></param> private void SaveCurrentView(string fileName, string picFileName, string notes) { DappleView view = new DappleView(); // blue marble RenderableObject roBMNG = GetBMNG(); if (roBMNG != null) view.View.Addshowbluemarble(new SchemaBoolean(roBMNG.IsOn)); WorldWind.Camera.MomentumCamera camera = c_oWorldWindow.DrawArgs.WorldCamera as WorldWind.Camera.MomentumCamera; //stop the camera camera.SetPosition(camera.Latitude.Degrees, camera.Longitude.Degrees, camera.Heading.Degrees, camera.Altitude, camera.Tilt.Degrees); //store the servers m_oModel.SaveToView(view); // store the current layers if (c_oLayerList.AllLayers.Count > 0) { activelayersType lyrs = view.View.Newactivelayers(); foreach (LayerBuilder container in c_oLayerList.AllLayers) { if (!container.Temporary) { datasetType dataset = lyrs.Newdataset(); dataset.Addname(new SchemaString(container.Title)); opacityType op = dataset.Newopacity(); op.Value = container.Opacity; dataset.Addopacity(op); dataset.Adduri(new SchemaString(container.GetURI())); dataset.Addinvisible(new SchemaBoolean(!container.Visible)); lyrs.Adddataset(dataset); } } view.View.Addactivelayers(lyrs); } // store the camera information cameraorientationType cameraorient = view.View.Newcameraorientation(); cameraorient.Addlat(new SchemaDouble(camera.Latitude.Degrees)); cameraorient.Addlon(new SchemaDouble(camera.Longitude.Degrees)); cameraorient.Addaltitude(new SchemaDouble(camera.Altitude)); cameraorient.Addheading(new SchemaDouble(camera.Heading.Degrees)); cameraorient.Addtilt(new SchemaDouble(camera.Tilt.Degrees)); view.View.Addcameraorientation(cameraorient); if (notes.Length > 0) view.View.Addnotes(new SchemaString(notes)); // Save screen capture (The regular WorldWind method crashes some systems, use interop) //this.worldWindow.SaveScreenshot(picFileName); //this.worldWindow.Render(); using (Image img = TakeSnapshot(c_oWorldWindow.Handle)) img.Save(picFileName, System.Drawing.Imaging.ImageFormat.Jpeg); FileStream fs = new FileStream(picFileName, FileMode.Open); BinaryReader br = new BinaryReader(fs); byte[] buffer = new byte[fs.Length]; br.Read(buffer, 0, Convert.ToInt32(fs.Length)); br.Close(); fs.Close(); view.View.Addpreview(new SchemaBase64Binary(buffer)); view.Save(fileName); }
private bool OpenView(string filename, bool bGoto, bool bLoadLayers) { bool bOldView = false; if (File.Exists(filename)) { DappleView view = new DappleView(filename); if (bGoto && view.View.Hascameraorientation()) { cameraorientationType orient = view.View.cameraorientation; c_oWorldWindow.DrawArgs.WorldCamera.SetPosition(orient.lat.Value, orient.lon.Value, orient.heading.Value, orient.altitude.Value, orient.tilt.Value); } m_oModel.LoadFromView(view); if (bLoadLayers && view.View.Hasactivelayers()) { c_oLayerList.CmdLoadFromView(view, m_oModel); } } if (bOldView) MessageBox.Show(this, "The view " + filename + " contained some layers from an earlier version\nwhich could not be retrieved. We apologize for the inconvenience.", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return true; }
/// <summary> /// Set the active layers from a saved view. /// </summary> /// <param name="view">The view to load from.</param> /// <returns>True if one or more of the layers is in an old/improper format.</returns> internal bool CmdLoadFromView(DappleView view, NewServerTree.DappleModel oModel) { bool blIncompleteLoad = false; c_lvLayers.BeginUpdate(); m_blSupressSelectedChanged = true; m_blLoadingFromView = true; c_lvLayers.Items.Clear(); foreach (LayerBuilder oBuilder in m_oLayers) oBuilder.RemoveLayer(); m_oLayers.Clear(); int iInsertIndex = 0; for (int i = 0; i < view.View.activelayers.datasetCount; i++) { datasetType dataset = view.View.activelayers.GetdatasetAt(i); LayerUri oUri = LayerUri.create(dataset.uri.Value); if (!oUri.IsValid) { blIncompleteLoad = true; continue; } LayerBuilder oBuilder; try { oBuilder = oUri.getBuilder(oModel); } catch (Exception ex) { Program.ShowMessageBox(ex.Message, "Dataset Could Not Be Added", MessageBoxButtons.OK, MessageBoxDefaultButton.Button1, MessageBoxIcon.Error); continue; } if (oBuilder != null) { oBuilder.Visible = dataset.Hasinvisible() ? !dataset.invisible.Value : true; oBuilder.Opacity = (byte)dataset.opacity.Value; if (AddLayer(oBuilder, iInsertIndex)) { iInsertIndex++; } } } m_blLoadingFromView = false; m_blSupressSelectedChanged = false; c_lvLayers.EndUpdate(); CheckIsValid(); return blIncompleteLoad; }
private void ValidateView(string strView) { try { DappleView view = new DappleView(strView); if (view.View.Haspreview()) { // dont use the property from Altova it validates the bytes one by one and takes forever MemoryStream ms = new MemoryStream(Convert.FromBase64String(view.View.GetStartingpreviewCursor().InnerText)); m_viewImage = Image.FromStream(ms); } else m_viewImage = null; if (view.View.Hasnotes()) this.c_lNotes.Text = view.View.notes.Value; else this.c_lNotes.Text = ""; m_strViewFile = strView; this.c_bOK.Enabled = true; } catch { this.c_bOK.Enabled = false; m_strViewFile = null; m_viewImage = null; this.c_lNotes.Text = ""; } }