private void RestorePlugins(XmlProject project) { foreach (var p in project.Plugins) { _context.PluginManager.LoadPlugin(p.Guid, _context); } }
private bool ValidateLayers(XmlProject project) { var missingLayers = new List <MissingLayer>(); TryFindLayers(project, missingLayers); // if it didn't help, let's offer the user to find them if (missingLayers.Any()) { var p = _context.Container.GetInstance <MissingLayersPresenter>(); if (!p.Run(missingLayers)) { return(false); } foreach (var layer in missingLayers) { var xmlLayer = layer.Tag as XmlLayer; if (xmlLayer != null) { if (File.Exists(layer.Filename)) { xmlLayer.Identity.Filename = layer.Filename; } else { xmlLayer.SkipLoading = true; } } } } return(true); }
private void TryFindLayers(XmlProject project, List <MissingLayer> missingLayers) { // in case project has moved, let's try to use relative filename foreach (var xmlLayer in project.Layers) { if (xmlLayer.Identity.IdentityType == Api.Enums.LayerIdentityType.File) { if (!File.Exists(xmlLayer.Identity.Filename)) { string filename = project.Settings.UpdateLayerPath(xmlLayer.Identity.Filename); if (!File.Exists(filename)) { var ml = new MissingLayer(xmlLayer.Name, xmlLayer.Identity.Filename, xmlLayer.LayerType, xmlLayer); missingLayers.Add(ml); continue; } // substitute with relative one xmlLayer.Identity.Filename = filename; } } } }
public static XmlProject CreateReProject(IAppContext context, string name, string parentPath, int epsgCode) { ProjectLoadingView _loadingForm; _loadingForm = new ProjectLoadingView(name); context.View.ShowChildView(_loadingForm, false); Application.DoEvents(); context.View.Lock(); _loadingForm.ShowProgress(10, "创建项目目录"); DirectoryInfo info = new DirectoryInfo(parentPath + "\\" + name); if (info.Exists == false) { info.Create(); } info.CreateSubdirectory("Database"); info.CreateSubdirectory("Attachments"); _loadingForm.ShowProgress(30, "创建项目数据库"); IREDatabase reDatabase = new ReDatabase(Path.Combine(info.FullName, "Database\\redatabase.db")); string errMsg = ""; _loadingForm.ShowProgress(50, "初始化项目数据库,数据较多,请耐心等待"); reDatabase.InitREDatabase(epsgCode, _loadingForm, out errMsg); string projectFile = Path.Combine(info.FullName, name + ".vgproj"); XmlProject project = new XmlProject(context as ISecureContext, projectFile); project.ProjectName = name; project.Database = "Database\\redatabase.db"; project.AttachmentPath = "Attachments"; _loadingForm.Close(); _loadingForm.Dispose(); context.View.Unlock(); _loadingForm = null; return(project); }
private void RestoreGroups(XmlProject project) { if (project.Groups == null) { return; } foreach (var g in project.Groups) { var group = _context.Legend.Groups.Add(g.Name); group.Expanded = g.Expanded; foreach (var guid in g.Layers) { var layer = _context.Legend.Layers.FirstOrDefault(l => l.Guid == guid); if (layer != null) { _context.Layers.MoveLayer(layer.Handle, group.Handle); } } } // first group was generated automatically if (_context.Legend.Groups.Any()) { _context.Legend.Groups.Remove(_context.Legend.Groups[0].Handle); } }
/// <summary> /// Restores the state of application by populating application _context after project file was deserialized. /// </summary> public bool Restore(XmlProject project, ProjectLoadingView loadingForm) { _context.MainView.Lock(); System.IO.FileInfo fileInfo = new FileInfo(project.Settings.LoadAsFilename); _basePath = fileInfo.DirectoryName; try { //因为插件引导的时候需要读取项目文档里面的配置,因此,这个参数必须在插件引导前赋值 loadingForm.ShowProgress(30, "正在加载地图"); _context.YutaiProject = project; RestoreMxdDocument(project); // RestoreSxdDocument(project); loadingForm.ShowProgress(100, "正在加载插件"); RestorePlugins(project); //loadingForm.ShowProgress(100, "正在设置视图范围"); //RestoreExtents(project); return(true); } finally { _context.YutaiProject = project; _context.MainView.Unlock(); //_broadcaster.BroadcastEvent(p => p.ProjectOpened_, this, null); } }
public static XmlProjectDataAccess From(AbsoluteFilePath projectFilePath, XmlProject deserializeProjectFile) { var xmlProjectDataAccess = new XmlProjectDataAccess(deserializeProjectFile); xmlProjectDataAccess.SetAbsolutePath(projectFilePath); xmlProjectDataAccess.NormalizeProjectDependencyPaths(projectFilePath); return(xmlProjectDataAccess); }
private void RestoreMapProjection(XmlProject project) { var sr = new SpatialReference(); sr.ImportFromAutoDetect(project.Map.Projection); _context.SetMapProjection(sr); }
private static XmlProject DeserializeProjectFile(AbsoluteFilePath projectFilePath) { var serializer = CreateXmlSerializer(); using var fileStream = new FileStream(projectFilePath.ToString(), FileMode.Open); XmlProject result = (XmlProject)serializer.Deserialize(fileStream); return(result); }
private void RestoreLocator(XmlProject project) { //var locator = project.Locator; //if (locator != null) //{ // var bitmap = _imageSerializationService.ConvertStringToImage(locator.Image, locator.Type); // _context.Locator.RestorePicture(bitmap as System.Drawing.Image, locator.Dx, locator.Dy, locator.XllCenter, locator.YllCenter); //} }
private void RestoreExtents(XmlProject project) { var e = project.Map.Envelope; if (e != null) { _context.Map.ZoomToExtents(new Envelope(e.MinX, e.MaxX, e.MinY, e.MaxY)); } }
private void RestorePlugins(XmlProject project) { if (project.Plugins == null) { return; } foreach (var p in project.Plugins) { _context.PluginManager.LoadPlugin(p.Guid, _context); } }
private static XmlProject ToXmlProject(Project project) { ArgumentChecks.AssertNotNull(project, nameof(project)); // Create XML project. var xmlProject = new XmlProject { Id = project.Id, Title = project.Title, }; // Create XML items. foreach (var item in project.Items) { var xmlItem = new XmlItem { Id = item.Id, PublicIdentifier = item.PublicIdentifier, Summary = item.Summary, Description = item.Description, EstimatedCostOfDelayPerDay = item.EstimatedCostOfDelayPerDay, EstimatedDevelopmentDurationInDays = item.EstimatedDevelopmentDurationInDays, }; xmlProject.Items.Add(xmlItem); } // Create XML backlogs. foreach (var backlog in project.Backlogs) { var xmlBacklog = new XmlBacklog { Id = backlog.Id, Name = backlog.Name, }; // Create XML backlog items. foreach (var backlogItem in backlog.BacklogItems) { var xmlBacklogItem = new XmlBacklogItem { ItemId = backlogItem.Item.Id, Rank = backlogItem.Rank, }; xmlBacklog.BacklogItems.Add(xmlBacklogItem); } xmlProject.Backlogs.Add(xmlBacklog); } return(xmlProject); }
private void RestoreExtents(XmlProject project) { if (project.Envelope != null) { IEnvelope env = new Envelope() as IEnvelope; env.XMin = project.Envelope.XMin; env.XMax = project.Envelope.XMax; env.YMin = project.Envelope.YMin; env.YMax = project.Envelope.YMax; _context.MapControl.ActiveView.Extent = env; } }
/// <summary> /// Restores the state of application by populating application _context after project file was deserialized. /// </summary> public bool Restore(XmlProject project, ProjectLoadingView loadingForm) { _context.View.Lock(); try { loadingForm.ShowProgress(30, "正在加载数据库"); //((ISecureContext) _context).VastProject = project; loadingForm.ShowProgress(100, "正在加载插件"); RestorePlugins(project); return(true); } finally { _context.VastProject = project; _context.View.Unlock(); } }
private static Project ToProject(XmlProject xmlProject) { ArgumentChecks.AssertNotNull(xmlProject, nameof(xmlProject)); var project = new Project(xmlProject.Id) { Title = xmlProject.Title }; foreach (var xmlItem in xmlProject.Items) { var item = new Item(xmlItem.Id) { PublicIdentifier = xmlItem.PublicIdentifier, Summary = xmlItem.Summary, Description = xmlItem.Description, EstimatedCostOfDelayPerDay = xmlItem.EstimatedCostOfDelayPerDay, EstimatedDevelopmentDurationInDays = xmlItem.EstimatedDevelopmentDurationInDays }; project.Items.Add(item); } foreach (var xmlBacklog in xmlProject.Backlogs) { var backlog = new Backlog(xmlBacklog.Id) { Name = xmlBacklog.Name }; foreach (var xmlBacklogItem in xmlBacklog.BacklogItems) { var referencedItem = project.Items.Single(i => i.Id == xmlBacklogItem.ItemId); var backlogItem = new BacklogItem(referencedItem) { Rank = xmlBacklogItem.Rank }; backlog.BacklogItems.Add(backlogItem); } project.Backlogs.Add(backlog); } return(project); }
private void RestoreMxdDocument(XmlProject project) { if (string.IsNullOrEmpty(project.MapDocumentName)) { return; } string mxdPath = _basePath + "\\" + project.MapDocumentName; if (File.Exists(mxdPath)) { _context.MapControl.LoadMxFile(mxdPath, null, null); } else { MessageService.Current.Warn("二维文档不存在," + mxdPath); } }
private void RestoreSxdDocument(XmlProject project) { if (string.IsNullOrEmpty(project.MapDocumentName)) { return; } string sxdPath = _basePath + "\\" + project.SceneDocumentName; if (File.Exists(sxdPath)) { _context.SceneControl.LoadSxFile(sxdPath); } else { MessageService.Current.Warn("三维文档不存在," + sxdPath); } }
public void InitOverview() { XmlProject project = ((ISecureContext)_context).YutaiProject; if (project.Overview != null) { string oType = project.Overview.OverviewType.ToUpper().Trim(); if (oType == "MXD") { string mxdName = project.Overview.ObjectName; FileInfo fileInfo = new FileInfo(FileHelper.GetRelativePath(project.Settings.LoadAsFilename, mxdName)); if (fileInfo.Exists) { axMapControl1.LoadMxFile(fileInfo.FullName); } else { CopyLastLayerToOverview(); } } else { string layerName = project.Overview.ObjectName.Trim(); if (string.IsNullOrEmpty(layerName)) { CopyLastLayerToOverview(); } else { CopyLayerToOverview(layerName); } } } else { CopyLastLayerToOverview(); } this.axMapControl1.ActiveView.Refresh(); this.ClipBounds = _mainMapControl.Map.ClipGeometry; this.axMapControl1.Map.ClearSelection(); }
private bool RestoreLayers(XmlProject project, out int selectedLayerHandle) { selectedLayerHandle = -1; if (!ValidateLayers(project)) { return(false); } var layers = _context.Map.Layers; int step = 0; int count = project.Layers.Count; foreach (var xmlLayer in project.Layers) { step++; FireProgressChanged(step, count, "Loading layer: " + xmlLayer.Name); if (xmlLayer.SkipLoading) { Logger.Current.Info("Layer loading was skipped: " + xmlLayer.Identity); continue; } if (_layerService.AddLayerIdentity(xmlLayer.Identity)) { int handle = _layerService.LastLayerHandle; var layer = layers.ItemByHandle(handle) as ILegendLayer; xmlLayer.RestoreLayer(layer, _broadcaster); if (xmlLayer.Selected) { selectedLayerHandle = handle; } } else if (_layerService.Aborted) { return(false); } } return(true); }
/// <summary> /// Restores the state of application by populating application _context after project file was deserialized. /// </summary> public bool Restore(XmlProject project) { _context.Map.Lock(); _context.Legend.Lock(); RestoreTmsProvider(project.Map.TileProviderId); try { _layerService.BeginBatch(); RestoreMapProjection(project); RestorePlugins(project); int selectedLayerHandle; if (!RestoreLayers(project, out selectedLayerHandle)) { return(false); } RestoreGroups(project); RestoreExtents(project); RestoreLocator(project); if (selectedLayerHandle != -1) { _context.Legend.SelectedLayerHandle = selectedLayerHandle; } return(true); } finally { _layerService.EndBatch(); _context.Map.Unlock(); _context.Legend.Unlock(); _context.Legend.Redraw(LegendRedraw.LegendAndMap); } }
public override void OnClick() { //IProjectService projectService = _context.Container.GetSingleton<IProjectService>(); //projectService.TryClose(); frmCreateDB frm = new frmCreateDB(); if (_context.View.ShowChildView(frm, true)) { string projectFile = Path.Combine(frm.ProjectFile, frm.ProjectName, frm.ProjectName + ".vgproj"); XmlProject project = ReProjectHelper.CreateReProject(_context, frm.ProjectName, frm.ProjectFile, frm.EpsGCode); using (var writer = new StreamWriter(projectFile)) { writer.Write(project.Serialize()); writer.Flush(); } //((ISecureContext) _context).VastProject = project; IProjectService projectService = _context.Container.GetSingleton <IProjectService>(); projectService.Open(projectFile, false); } }
public XmlProjectDataAccess(XmlProject xmlProject) { _xmlProject = xmlProject; }
private string SerializeMapState(string filename) { var project = new XmlProject(_context as ISecureContext, filename); return(project.Serialize(false)); }
public void SetAbsolutePath(AbsoluteFilePath projectFilePath) { _xmlProject = _xmlProject with { AbsolutePath = projectFilePath }; }