static public IProgressTaskDialog CreateProgressDialogInstance() { Assembly uiAssembly = Assembly.LoadFrom(SystemVariables.ApplicationDirectory + @"/gView.Win.Explorer.UI.dll"); IProgressTaskDialog p = uiAssembly.CreateInstance("gView.Framework.UI.Dialogs.FormTaskProgress") as IProgressTaskDialog; return(p); }
async public Task <IDatasetElement> Element(string title) { foreach (IDatasetElement element in _elements) { if (element == null) { continue; } if (element.Title == title) { return(element); } } try { if (title.ToLower().EndsWith(".shp")) { title = title.Substring(0, title.Length - 4); } DirectoryInfo di = new DirectoryInfo(_connectionString); FileInfo[] fi = di.GetFiles(title + ".shp"); if (fi.Length == 0) { _errMsg = "Can't find shapefile..."; return(null); } SHPFile shpFile = new SHPFile(fi[0].FullName); FileInfo idx = new FileInfo(shpFile.IDX_Filename); if (!idx.Exists || idx.LastWriteTime < shpFile.LastWriteTime) { DualTree tree = new DualTree(500); CreateSpatialIndexTree creator = new CreateSpatialIndexTree(shpFile, tree, (IEnvelope)(new Envelope(shpFile.Header.Xmin, shpFile.Header.Ymin, shpFile.Header.Xmax, shpFile.Header.Ymax))); if (_useGUI) { IProgressTaskDialog progress = ProgressDialog.CreateProgressDialogInstance(); if (progress != null && progress.UserInteractive) { progress.Text = "Create Spatial Index..."; progress.ShowProgressDialog(tree, creator.Create()); } else { await creator.Create(); } } else { await creator.Create(); } } gView.Framework.FDB.IIndexTree iTree = null; if (shpFile.IDX_Exists) { iTree = new IDXIndexTree(shpFile.IDX_Filename); } ShapeDatasetElement element = new ShapeDatasetElement(shpFile, this, iTree); _elements.Add(element); return(element); } catch (Exception ex) { _errMsg = ex.Message; } return(null); }