Ejemplo n.º 1
0
        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()));
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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 = "";
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        /// <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;
        }
Ejemplo n.º 7
0
        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 = "";
             }
        }