public static Layer FromXml(XmlNode layerNode, bool someFlag) { string layerClassName = layerNode.Attributes.GetNamedItem("Type").Value.ToString(); string overLayType = layerClassName.Replace("TerraViewer.", ""); if (overLayType == null) { return(null); } Layer newLayer = null; switch (overLayType) { case "SpreadSheetLayer": newLayer = new SpreadSheetLayer(); break; case "GreatCirlceRouteLayer": newLayer = new GreatCirlceRouteLayer(); break; case "GridLayer": newLayer = new GridLayer(); break; case "ImageSetLayer": newLayer = new ImageSetLayer(); break; case "Object3dLayer": newLayer = new Object3dLayer(); break; case "OrbitLayer": newLayer = new OrbitLayer(); break; case "VoTableLayer": newLayer = new VoTableLayer(); break; default: return(null); } //Force inheritance. // TODO: Understand why this breaks in SS .8 //Script.Literal("for(var method in this){\n /*if (({}).toString.call(this[method]).match(/\\s([a-zA-Z]+)/)[1].toLowerCase() == 'function'){\n*/ newLayer[method] = this[method];/*\n}*/\n}"); newLayer.InitFromXml(layerNode); return(newLayer); }
void IScriptable.SetProperty(string name, string value) { try { if (LayerManager.CurrentSelection is LayerMap) { LayerMap map = LayerManager.CurrentSelection as LayerMap; if (map.Frame.reference == ReferenceFrames.Custom) { ReferenceFrame frame = map.Frame; double val; if (name.ToLower() == "scale") { val = double.Parse(value); frame.Scale = val; return; } if (name.ToLower().StartsWith("translate.")) { val = double.Parse(value); Vector3d translate = frame.translation; switch (name.ToLower()) { case "translate.x": translate.X = val; break; case "translate.y": translate.Y = val; break; case "translate.z": translate.Z = val; break; } frame.translation = translate; return; } frame.SetProp(name, value); } } if (LayerManager.CurrentSelection is Layer) { //MethodInvoker doIt = delegate //{ // Earth3d.MainWindow.Text = value; //}; //Earth3d.MainWindow.Invoke(doIt); Layer layer = LayerManager.CurrentSelection as Layer; if (layer is Object3dLayer) { Object3dLayer object3d = layer as Object3dLayer; double val; if (name.ToLower() == "scale") { val = double.Parse(value); object3d.Scale = new Vector3d(val, val, val); return; } if (name.ToLower().StartsWith("translate.")) { val = double.Parse(value); Vector3d translate = object3d.Translate; switch (name.ToLower()) { case "translate.x": translate.X = val; break; case "translate.y": translate.Y = val; break; case "translate.z": translate.Z = val; break; } object3d.Translate = translate; } layer.SetProp(name, value); } } } catch { } }