public static Imageset FromXMLNode(XmlNode node) { try { ImageSetType type = ImageSetType.Sky; ProjectionType projection = ProjectionType.Tangent; if (node.Attributes.GetNamedItem("DataSetType") != null) { type = (ImageSetType)Enums.Parse("ImageSetType", node.Attributes.GetNamedItem("DataSetType").Value); } BandPass bandPass = BandPass.Visible; bandPass = (BandPass)Enums.Parse("BandPass", node.Attributes.GetNamedItem("BandPass").Value); int wf = 1; if (node.Attributes.GetNamedItem("WidthFactor") != null) { wf = int.Parse(node.Attributes.GetNamedItem("WidthFactor").Value); } if (node.Attributes.GetNamedItem("Generic") == null || !bool.Parse(node.Attributes.GetNamedItem("Generic").Value.ToString())) { projection = (ProjectionType)Enums.Parse("ProjectionType", node.Attributes.GetNamedItem("Projection").Value); string fileType = node.Attributes.GetNamedItem("FileType").Value.ToString(); if (!fileType.StartsWith(".")) { fileType = "." + fileType; } string thumbnailUrl = ""; XmlNode thumbUrl = Util.SelectSingleNode(node, "ThumbnailUrl"); if (thumbUrl != null) { if (string.IsNullOrEmpty(thumbUrl.InnerText)) { ChromeNode cn = (ChromeNode)(object)thumbUrl; thumbnailUrl = cn.TextContent; } else { thumbnailUrl = thumbUrl.InnerText; } } bool stockSet = false; bool elevationModel = false; if (node.Attributes.GetNamedItem("StockSet") != null) { stockSet = bool.Parse(node.Attributes.GetNamedItem("StockSet").Value.ToString()); } if (node.Attributes.GetNamedItem("ElevationModel") != null) { elevationModel = bool.Parse(node.Attributes.GetNamedItem("ElevationModel").Value.ToString()); } string demUrl = ""; if (node.Attributes.GetNamedItem("DemUrl") != null) { demUrl = node.Attributes.GetNamedItem("DemUrl").Value.ToString(); } string alturl = ""; if (node.Attributes.GetNamedItem("AltUrl") != null) { alturl = node.Attributes.GetNamedItem("AltUrl").Value.ToString(); } double offsetX = 0; if (node.Attributes.GetNamedItem("OffsetX") != null) { offsetX = double.Parse(node.Attributes.GetNamedItem("OffsetX").Value.ToString()); } double offsetY = 0; if (node.Attributes.GetNamedItem("OffsetY") != null) { offsetY = double.Parse(node.Attributes.GetNamedItem("OffsetY").Value.ToString()); } string creditText = ""; XmlNode credits = Util.SelectSingleNode(node, "Credits"); if (credits != null) { creditText = Util.GetInnerText(credits); } string creditsUrl = ""; credits = Util.SelectSingleNode(node, "CreditsUrl"); if (credits != null) { creditsUrl = Util.GetInnerText(credits); } double meanRadius = 0; if (node.Attributes.GetNamedItem("MeanRadius") != null) { meanRadius = double.Parse(node.Attributes.GetNamedItem("MeanRadius").Value.ToString()); } string referenceFrame = null; if (node.Attributes.GetNamedItem("ReferenceFrame") != null) { referenceFrame = node.Attributes.GetNamedItem("ReferenceFrame").Value; } string name = ""; if (node.Attributes.GetNamedItem("Name") != null) { name = node.Attributes.GetNamedItem("Name").Value.ToString(); } string url = ""; if (node.Attributes.GetNamedItem("Url") != null) { url = node.Attributes.GetNamedItem("Url").Value.ToString(); } int baseTileLevel = 0; if (node.Attributes.GetNamedItem("BaseTileLevel") != null) { baseTileLevel = int.Parse(node.Attributes.GetNamedItem("BaseTileLevel").Value.ToString()); } int tileLevels = 0; if (node.Attributes.GetNamedItem("TileLevels") != null) { tileLevels = int.Parse(node.Attributes.GetNamedItem("TileLevels").Value.ToString()); } double baseDegreesPerTile = 0; if (node.Attributes.GetNamedItem("BaseDegreesPerTile") != null) { baseDegreesPerTile = double.Parse(node.Attributes.GetNamedItem("BaseDegreesPerTile").Value.ToString()); } bool bottomsUp = false; if (node.Attributes.GetNamedItem("BottomsUp") != null) { bottomsUp = bool.Parse(node.Attributes.GetNamedItem("BottomsUp").Value.ToString()); } string quadTreeMap = ""; if (node.Attributes.GetNamedItem("QuadTreeMap") != null) { quadTreeMap = node.Attributes.GetNamedItem("QuadTreeMap").Value.ToString(); } double centerX = 0; if (node.Attributes.GetNamedItem("CenterX") != null) { centerX = double.Parse(node.Attributes.GetNamedItem("CenterX").Value.ToString()); } double centerY = 0; if (node.Attributes.GetNamedItem("CenterY") != null) { centerY = double.Parse(node.Attributes.GetNamedItem("CenterY").Value.ToString()); } double rotation = 0; if (node.Attributes.GetNamedItem("Rotation") != null) { rotation = double.Parse(node.Attributes.GetNamedItem("Rotation").Value.ToString()); } bool sparse = false; if (node.Attributes.GetNamedItem("Sparse") != null) { sparse = bool.Parse(node.Attributes.GetNamedItem("Sparse").Value.ToString()); } return(Imageset.Create(name, url, type, bandPass, projection, Math.Abs(Util.GetHashCode(url)), baseTileLevel, tileLevels, 256, baseDegreesPerTile, fileType, bottomsUp, quadTreeMap, centerX, centerY, rotation, sparse, thumbnailUrl, stockSet, elevationModel, wf, offsetX, offsetY, creditText, creditsUrl, demUrl, alturl, meanRadius, referenceFrame)); } else { return(Imageset.CreateGeneric(type, bandPass)); } } catch { return(null); } }
public string GetTourXML() { XmlTextWriter xmlWriter = new XmlTextWriter(); xmlWriter.Formatting = Formatting.Indented; xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); xmlWriter.WriteStartElement("Tour"); xmlWriter.WriteAttributeString("ID", this.id); xmlWriter.WriteAttributeString("Title", this.title); xmlWriter.WriteAttributeString("Descirption", this.Description); xmlWriter.WriteAttributeString("Description", this.Description); xmlWriter.WriteAttributeString("RunTime", ((double)this.RunTime / 1000.0).ToString()); xmlWriter.WriteAttributeString("Author", this.author); xmlWriter.WriteAttributeString("AuthorEmail", this.authorEmail); xmlWriter.WriteAttributeString("OrganizationUrl", this.organizationUrl); xmlWriter.WriteAttributeString("OrganizationName", this.OrgName); xmlWriter.WriteAttributeString("Keywords", this.Keywords); xmlWriter.WriteAttributeString("UserLevel", Enums.ToXml("UserLevel", (int)level)); xmlWriter.WriteAttributeString("Classification", Enums.ToXml("Classification", (int)type)); xmlWriter.WriteAttributeString("Taxonomy", taxonomy.ToString()); // xmlWriter.WriteAttributeString("DomeMode", DomeMode.ToString()); bool timeLineTour = IsTimelineTour(); xmlWriter.WriteAttributeString("TimeLineTour", timeLineTour.ToString()); xmlWriter.WriteStartElement("TourStops"); foreach (TourStop stop in TourStops) { stop.SaveToXml(xmlWriter, true); } xmlWriter.WriteEndElement(); List <Guid> masterList = CreateLayerMasterList(); // This will now save and sync emtpy frames... List <ReferenceFrame> referencedFrames = GetReferenceFrameList(); xmlWriter.WriteStartElement("ReferenceFrames"); foreach (ReferenceFrame item in referencedFrames) { item.SaveToXml(xmlWriter); } xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("Layers"); foreach (Guid id in masterList) { if (LayerManager.LayerList.ContainsKey(id)) { LayerManager.LayerList[id].SaveToXml(xmlWriter); } } xmlWriter.WriteEndElement(); xmlWriter.WriteFullEndElement(); xmlWriter.Close(); return(xmlWriter.Body); }
internal static Place FromXml(XmlNode place) { Place newPlace = new Place(); newPlace.name = place.Attributes.GetNamedItem("Name").Value; if (place.Attributes.GetNamedItem("MSRComponentId") != null && place.Attributes.GetNamedItem("Permission") != null && place.Attributes.GetNamedItem("Url") != null) { //communities item newPlace.Url = place.Attributes.GetNamedItem("Url").Value; newPlace.ThumbnailUrl = place.Attributes.GetNamedItem("Thumbnail").Value; return(newPlace); } if (place.Attributes.GetNamedItem("DataSetType") != null) { newPlace.type = (ImageSetType)Enums.Parse("ImageSetType", place.Attributes.GetNamedItem("DataSetType").Value); } if (newPlace.Type == ImageSetType.Sky) { newPlace.camParams.RA = double.Parse(place.Attributes.GetNamedItem("RA").Value); newPlace.camParams.Dec = double.Parse(place.Attributes.GetNamedItem("Dec").Value); } else { newPlace.Lat = double.Parse(place.Attributes.GetNamedItem("Lat").Value); newPlace.Lng = double.Parse(place.Attributes.GetNamedItem("Lng").Value); } if (place.Attributes.GetNamedItem("Constellation") != null) { newPlace.constellation = place.Attributes.GetNamedItem("Constellation").Value; } if (place.Attributes.GetNamedItem("Classification") != null) { newPlace.classification = (Classification)Enums.Parse("Classification", place.Attributes.GetNamedItem("Classification").Value); } if (place.Attributes.GetNamedItem("Magnitude") != null) { newPlace.magnitude = double.Parse(place.Attributes.GetNamedItem("Magnitude").Value); } if (place.Attributes.GetNamedItem("AngularSize") != null) { newPlace.AngularSize = double.Parse(place.Attributes.GetNamedItem("AngularSize").Value); } if (place.Attributes.GetNamedItem("ZoomLevel") != null) { newPlace.ZoomLevel = double.Parse(place.Attributes.GetNamedItem("ZoomLevel").Value); } if (place.Attributes.GetNamedItem("Rotation") != null) { newPlace.camParams.Rotation = double.Parse(place.Attributes.GetNamedItem("Rotation").Value); } if (place.Attributes.GetNamedItem("Annotation") != null) { newPlace.annotation = place.Attributes.GetNamedItem("Annotation").Value; } if (place.Attributes.GetNamedItem("Angle") != null) { newPlace.camParams.Angle = double.Parse(place.Attributes.GetNamedItem("Angle").Value); } if (place.Attributes.GetNamedItem("Opacity") != null) { newPlace.camParams.Opacity = Single.Parse(place.Attributes.GetNamedItem("Opacity").Value); } else { newPlace.camParams.Opacity = 100; } newPlace.Target = SolarSystemObjects.Undefined; if (place.Attributes.GetNamedItem("Target") != null) { newPlace.Target = (SolarSystemObjects)Enums.Parse("SolarSystemObjects", place.Attributes.GetNamedItem("Target").Value); } if (place.Attributes.GetNamedItem("ViewTarget") != null) { newPlace.camParams.ViewTarget = Vector3d.Parse(place.Attributes.GetNamedItem("ViewTarget").Value); } if (place.Attributes.GetNamedItem("TargetReferenceFrame") != null) { newPlace.camParams.TargetReferenceFrame = place.Attributes.GetNamedItem("TargetReferenceFrame").Value; } XmlNode descriptionNode = Util.SelectSingleNode(place, "Description"); if (descriptionNode != null) { newPlace.HtmlDescription = Util.GetInnerText(descriptionNode); } XmlNode backgroundImageSet = Util.SelectSingleNode(place, "BackgroundImageSet"); if (backgroundImageSet != null) { XmlNode imageSet = Util.SelectSingleNode(backgroundImageSet, "ImageSet"); newPlace.backgroundImageSet = Imageset.FromXMLNode(imageSet); } XmlNode study = Util.SelectSingleNode(place, "ForegroundImageSet"); if (study != null) { XmlNode imageSet = Util.SelectSingleNode(study, "ImageSet"); newPlace.studyImageset = Imageset.FromXMLNode(imageSet); } study = Util.SelectSingleNode(place, "ImageSet"); if (study != null) { newPlace.studyImageset = Imageset.FromXMLNode(study); } return(newPlace); }
//public static TourDocument FromUrl(string url, Action callMe) //{ // TourDocument temp = new TourDocument(); // temp.Url = url; // temp.callMe = callMe; // temp.webFile = new WebFile(Util.GetTourComponent(url, "master")); // temp.webFile.OnStateChange = temp.LoadXmlDocument; // temp.webFile.Send(); // return temp; //} //private void LoadXmlDocument() //{ // if (webFile.State == StateType.Error) // { // Script.Literal("alert({0})", webFile.Message); // } // else if (webFile.State == StateType.Received) // { // FromXml(webFile.GetXml()); // callMe(); // } //} public void FromXml(XmlDocument doc) { XmlNode root = Util.SelectSingleNode(doc, "Tour"); id = root.Attributes.GetNamedItem("ID").Value.ToString(); Title = root.Attributes.GetNamedItem("Title").Value.ToString(); Author = root.Attributes.GetNamedItem("Author").Value.ToString(); if (root.Attributes.GetNamedItem("Descirption") != null) { Description = root.Attributes.GetNamedItem("Descirption").Value; } if (root.Attributes.GetNamedItem("AuthorEmail") != null) { authorEmail = root.Attributes.GetNamedItem("AuthorEmail").Value; } if (root.Attributes.GetNamedItem("Keywords") != null) { Keywords = root.Attributes.GetNamedItem("Keywords").Value; } if (root.Attributes.GetNamedItem("OrganizationName") != null) { OrgName = root.Attributes.GetNamedItem("OrganizationName").Value; } organizationUrl = root.Attributes.GetNamedItem("OrganizationUrl").Value; level = (UserLevel)Enums.Parse("UserLevel", root.Attributes.GetNamedItem("UserLevel").Value); type = (Classification)Enums.Parse("Classification", root.Attributes.GetNamedItem("Classification").Value); taxonomy = root.Attributes.GetNamedItem("Taxonomy").Value.ToString(); XmlNode TourStops = Util.SelectSingleNode(root, "TourStops"); foreach (XmlNode tourStop in TourStops.ChildNodes) { if (tourStop.Name == "TourStop") { AddTourStop(TourStop.FromXml(this, tourStop)); } } XmlNode Frames = Util.SelectSingleNode(root, "ReferenceFrames"); if (Frames != null) { foreach (XmlNode frame in Frames.ChildNodes) { if (frame.Name == "ReferenceFrame") { ReferenceFrame newFrame = new ReferenceFrame(); newFrame.InitializeFromXml(frame); if (!LayerManager.AllMaps.ContainsKey(newFrame.Name)) { LayerMap map = new LayerMap(newFrame.Name, ReferenceFrames.Custom); map.Frame = newFrame; map.LoadedFromTour = true; LayerManager.AllMaps[newFrame.Name] = map; } } } LayerManager.ConnectAllChildren(); LayerManager.LoadTree(); } XmlNode Layers = Util.SelectSingleNode(root, "Layers"); if (Layers != null) { foreach (XmlNode layer in Layers.ChildNodes) { if (layer.Name == "Layer") { Layer newLayer = Layer.FromXml(layer, true);//.Layer.FromXml(layer, true); if (newLayer != null) { string fileName = string.Format("{0}.txt", newLayer.ID.ToString()); if (LayerManager.LayerList.ContainsKey(newLayer.ID)) // && newLayer.ID != ISSLayer.ISSGuid) { //if (!CollisionChecked) //{ // if (UiTools.ShowMessageBox(Language.GetLocalizedText(958, "There are layers with the same name. Overwrite existing layers?"), Language.GetLocalizedText(3, "Microsoft WorldWide Telescope"), System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes) // { // OverWrite = true; // } // else // { // OverWrite = false; // } // CollisionChecked = true; //} //if (OverWrite) //{ LayerManager.DeleteLayerByID(newLayer.ID, true, false); //} } try { newLayer.LoadedFromTour = true; newLayer.LoadData(this, fileName); LayerManager.Add(newLayer, false); } catch { } } } } LayerManager.LoadTree(); } //todo author //if (File.Exists(WorkingDirectory + "Author.png")) //{ // authorImage = UiTools.LoadBitmap(WorkingDirectory + "Author.png"); //} tourDirty = 0; }
public override void InitializeFromXml(XmlNode node) { TimeSeries = bool.Parse(node.Attributes.GetNamedItem("TimeSeries").Value); BeginRange = new Date(node.Attributes.GetNamedItem("BeginRange").Value); EndRange = new Date(node.Attributes.GetNamedItem("EndRange").Value); Decay = Single.Parse(node.Attributes.GetNamedItem("Decay").Value); CoordinatesType = (CoordinatesTypes)Enums.Parse("CoordinatesTypes", node.Attributes.GetNamedItem("CoordinatesType").Value); if ((int)CoordinatesType < 0) { CoordinatesType = CoordinatesTypes.Spherical; } LatColumn = int.Parse(node.Attributes.GetNamedItem("LatColumn").Value); LngColumn = int.Parse(node.Attributes.GetNamedItem("LngColumn").Value); if (node.Attributes.GetNamedItem("GeometryColumn") != null) { GeometryColumn = int.Parse(node.Attributes.GetNamedItem("GeometryColumn").Value); } switch (node.Attributes.GetNamedItem("AltType").Value) { case "Depth": AltType = AltTypes.Depth; break; case "Altitude": AltType = AltTypes.Altitude; break; case "Distance": AltType = AltTypes.Distance; break; case "SeaLevel": AltType = AltTypes.SeaLevel; break; case "Terrain": AltType = AltTypes.Terrain; break; default: break; } MarkerMix = MarkerMixes.Same_For_All; switch (node.Attributes.GetNamedItem("ColorMap").Value) { case "Same_For_All": ColorMap = ColorMaps.Same_For_All; break; case "Group_by_Values": ColorMap = ColorMaps.Group_by_Values; break; case "Per_Column_Literal": ColorMap = ColorMaps.Per_Column_Literal; break; default: break; } MarkerColumn = int.Parse(node.Attributes.GetNamedItem("MarkerColumn").Value); ColorMapColumn = int.Parse(node.Attributes.GetNamedItem("ColorMapColumn").Value); switch (node.Attributes.GetNamedItem("PlotType").Value) { case "Gaussian": PlotType = PlotTypes.Gaussian; break; case "Point": PlotType = PlotTypes.Point; break; case "Circle": PlotType = PlotTypes.Circle; break; case "PushPin": PlotType = PlotTypes.PushPin; break; default: break; } MarkerIndex = int.Parse(node.Attributes.GetNamedItem("MarkerIndex").Value); switch (node.Attributes.GetNamedItem("MarkerScale").Value) { case "Screen": MarkerScale = MarkerScales.Screen; break; case "World": MarkerScale = MarkerScales.World; break; default: break; } switch (node.Attributes.GetNamedItem("AltUnit").Value) { case "Meters": AltUnit = AltUnits.Meters; break; case "Feet": AltUnit = AltUnits.Feet; break; case "Inches": AltUnit = AltUnits.Inches; break; case "Miles": AltUnit = AltUnits.Miles; break; case "Kilometers": AltUnit = AltUnits.Kilometers; break; case "AstronomicalUnits": AltUnit = AltUnits.AstronomicalUnits; break; case "LightYears": AltUnit = AltUnits.LightYears; break; case "Parsecs": AltUnit = AltUnits.Parsecs; break; case "MegaParsecs": AltUnit = AltUnits.MegaParsecs; break; case "Custom": AltUnit = AltUnits.Custom; break; default: break; } AltColumn = int.Parse(node.Attributes.GetNamedItem("AltColumn").Value); StartDateColumn = int.Parse(node.Attributes.GetNamedItem("StartDateColumn").Value); EndDateColumn = int.Parse(node.Attributes.GetNamedItem("EndDateColumn").Value); SizeColumn = int.Parse(node.Attributes.GetNamedItem("SizeColumn").Value); HyperlinkFormat = node.Attributes.GetNamedItem("HyperlinkFormat").Value; HyperlinkColumn = int.Parse(node.Attributes.GetNamedItem("HyperlinkColumn").Value); ScaleFactor = Single.Parse(node.Attributes.GetNamedItem("ScaleFactor").Value); switch (node.Attributes.GetNamedItem("PointScaleType").Value) { case "Linear": PointScaleType = PointScaleTypes.Linear; break; case "Power": PointScaleType = PointScaleTypes.Power; break; case "Log": PointScaleType = PointScaleTypes.Log; break; case "Constant": PointScaleType = PointScaleTypes.Constant; break; case "StellarMagnitude": PointScaleType = PointScaleTypes.StellarMagnitude; break; default: break; } if (node.Attributes.GetNamedItem("ShowFarSide") != null) { ShowFarSide = Boolean.Parse(node.Attributes.GetNamedItem("ShowFarSide").Value); } if (node.Attributes.GetNamedItem("RaUnits") != null) { // RaUnits = (RAUnits)Enum.Parse(typeof(RAUnits), node.Attributes["RaUnits"].Value); switch (node.Attributes.GetNamedItem("RaUnits").Value) { case "Hours": RaUnits = RAUnits.Hours; break; case "Degrees": RaUnits = RAUnits.Degrees; break; } } if (node.Attributes.GetNamedItem("HoverTextColumn") != null) { NameColumn = int.Parse(node.Attributes.GetNamedItem("HoverTextColumn").Value); } if (node.Attributes.GetNamedItem("XAxisColumn") != null) { XAxisColumn = int.Parse(node.Attributes.GetNamedItem("XAxisColumn").Value); XAxisReverse = bool.Parse(node.Attributes.GetNamedItem("XAxisReverse").Value); YAxisColumn = int.Parse(node.Attributes.GetNamedItem("YAxisColumn").Value); YAxisReverse = bool.Parse(node.Attributes.GetNamedItem("YAxisReverse").Value); ZAxisColumn = int.Parse(node.Attributes.GetNamedItem("ZAxisColumn").Value); ZAxisReverse = bool.Parse(node.Attributes.GetNamedItem("ZAxisReverse").Value); switch (node.Attributes.GetNamedItem("CartesianScale").Value) { case "Meters": CartesianScale = AltUnits.Meters; break; case "Feet": CartesianScale = AltUnits.Feet; break; case "Inches": CartesianScale = AltUnits.Inches; break; case "Miles": CartesianScale = AltUnits.Miles; break; case "Kilometers": CartesianScale = AltUnits.Kilometers; break; case "AstronomicalUnits": CartesianScale = AltUnits.AstronomicalUnits; break; case "LightYears": CartesianScale = AltUnits.LightYears; break; case "Parsecs": CartesianScale = AltUnits.Parsecs; break; case "MegaParsecs": CartesianScale = AltUnits.MegaParsecs; break; case "Custom": CartesianScale = AltUnits.Custom; break; default: break; } CartesianCustomScale = double.Parse(node.Attributes.GetNamedItem("CartesianCustomScale").Value); } if (node.Attributes.GetNamedItem("DynamicData") != null) { DynamicData = bool.Parse(node.Attributes.GetNamedItem("DynamicData").Value); AutoUpdate = bool.Parse(node.Attributes.GetNamedItem("AutoUpdate").Value); DataSourceUrl = node.Attributes.GetNamedItem("DataSourceUrl").Value; } }