void wxGxPostGISFeatureDatasetUI::EditProperties(wxWindow *parent) { wxPropertySheetDialog PropertySheetDialog; if (!PropertySheetDialog.Create(parent, wxID_ANY, _("Properties"), wxDefaultPosition, wxSize( 480,640 ), wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)) return; PropertySheetDialog.SetIcon(properties_xpm); PropertySheetDialog.CreateButtons(wxOK); wxWindow* pParentWnd = static_cast<wxWindow*>(PropertySheetDialog.GetBookCtrl()); wxGISVectorPropertyPage* VectorPropertyPage = new wxGISVectorPropertyPage(this, pParentWnd); PropertySheetDialog.GetBookCtrl()->AddPage(VectorPropertyPage, VectorPropertyPage->GetPageName()); wxGISDataset* pDset = GetDataset(); if(pDset) { wxGISSpatialReferencePropertyPage* SpatialReferencePropertyPage = new wxGISSpatialReferencePropertyPage(pDset->GetSpatialReference(), pParentWnd); PropertySheetDialog.GetBookCtrl()->AddPage(SpatialReferencePropertyPage, SpatialReferencePropertyPage->GetPageName()); wsDELETE(pDset); } //PropertySheetDialog.LayoutDialog(); PropertySheetDialog.SetSize(480,640); PropertySheetDialog.Center(); PropertySheetDialog.ShowModal(); }
wxThread::ExitCode wxGxMLDatasetUI::Entry() { //ITrackCancel trackcancel; wxGISDataset* pDSet = GetDataset(false); wxGxCatalogUI* pCat = wxDynamicCast(GetGxCatalog(), wxGxCatalogUI); if(pDSet) { for(size_t i = 0; i < pDSet->GetSubsetsCount(); ++i) { wxGISDataset* pwxGISFeatureSuDataset = m_pwxGISDataset->GetSubset(i); wxString sSubsetName = pwxGISFeatureSuDataset->GetName(); wxGxMLSubDatasetUI* pGxMLSubDatasetUI = new wxGxMLSubDatasetUI((wxGISEnumVectorDatasetType)GetSubType(), pwxGISFeatureSuDataset, wxStaticCast(this, wxGxObject), sSubsetName, wxGxObjectContainer::GetPath(), m_LargeSubIcon, m_SmallSubIcon); wxGIS_GXCATALOG_EVENT_ID(ObjectAdded, pGxMLSubDatasetUI->GetId()); } wsDELETE(pDSet); } if(m_nPendUId != wxNOT_FOUND && pCat) { pCat->RemovePending(m_nPendUId); m_nPendUId = wxNOT_FOUND; } //wxGIS_GXCATALOG_EVENT(ObjectChanged); return (wxThread::ExitCode)wxTHREAD_NO_ERROR; }
bool wxGxOpenFileGDB::Move(const CPLString &szDestPath, ITrackCancel* const pTrackCancel) { wxGISDataset* pDSet = GetDatasetFast(); if (NULL != pDSet) { pDSet->Close(); wsDELETE(pDSet); } if (pTrackCancel) pTrackCancel->PutMessage(wxString::Format(_("%s %s %s"), _("Move"), GetCategory().c_str(), m_sName.c_str()), wxNOT_FOUND, enumGISMessageInfo); //CPLString szFullDestPath = CPLFormFilename(szDestPath, CPLGetFilename(m_sPath), NULL); CPLString szFullDestPath = CheckUniqPath(szDestPath, CPLGetFilename(m_sPath), true, " "); bool bRet = MoveDir(m_sPath, szFullDestPath, 777, pTrackCancel); if (!bRet) { const char* err = CPLGetLastErrorMsg(); wxString sErr = wxString::Format(_("Operation '%s' failed! GDAL error: %s, %s '%s'"), _("Move"), GetCategory().c_str(), wxString(err, wxConvUTF8).c_str(), wxString(m_sPath, wxConvUTF8).c_str()); wxLogError(sErr); if (pTrackCancel) pTrackCancel->PutMessage(sErr, wxNOT_FOUND, enumGISMessageErr); return false; } return true; }
bool wxGxOpenFileGDB::Rename(const wxString &sNewName) { wxGISDataset* pDSet = GetDatasetFast(); if (NULL != pDSet) { pDSet->Close(); wsDELETE(pDSet); } wxFileName PathName(wxString(m_sPath, wxConvUTF8)); PathName.SetName(ClearExt(sNewName)); wxString sNewPath = PathName.GetFullPath(); CPLString szNewPath(sNewPath.mb_str(wxConvUTF8)); if (RenameFile(m_sPath, szNewPath)) { if (m_bIsChildrenLoaded) Refresh(); return true; } else { const char* err = CPLGetLastErrorMsg(); wxLogError(_("Operation '%s' failed! GDAL error: %s, file '%s'"), _("Rename"), wxString(err, wxConvUTF8).c_str(), wxString(m_sPath, wxConvUTF8).c_str()); return false; } return false; }
wxGISMenu::~wxGISMenu(void) { for(size_t i = 0; i < m_SubmenuArray.size(); i++) { Delete(m_SubmenuArray[i].pItem); wsDELETE(m_SubmenuArray[i].pBar); } }
void wxGxMapView::OnSelectionChanged(IGxSelection* Selection, long nInitiator) { if(nInitiator == GetId()) return; GxObjectArray* pGxObjectArray = m_pSelection->GetSelectedObjects(); if(pGxObjectArray == NULL || pGxObjectArray->size() == 0) return; IGxObject* pGxObj = pGxObjectArray->at(pGxObjectArray->size() - 1); if(m_pParentGxObject == pGxObj) return; IGxDataset* pGxDataset = dynamic_cast<IGxDataset*>(pGxObj); if(pGxDataset == NULL) return; wxGISDataset* pwxGISDataset = pGxDataset->GetDataset(); if(pwxGISDataset == NULL) return; wxGISEnumDatasetType type = pwxGISDataset->GetType(); wxGISLayer* pwxGISLayer = NULL; switch(type) { case enumGISFeatureDataset: pwxGISLayer = new wxGISFeatureLayer(pwxGISDataset); break; case enumGISRasterDataset: pwxGISLayer = new wxGISRasterLayer(pwxGISDataset); break; default: break; } if(pwxGISLayer) pwxGISLayer->SetName(pGxObj->GetName()); //the pOGRLayer will live while IGxObject live. IGxObject( from IGxSelection ) store IwxGISDataset, and destroy it then catalog destroyed wsDELETE(pwxGISDataset); //OGRLayer* pOGRLayer = pwxGISDataset->GetDataset(); //if(pOGRLayer == NULL) //{ // return; //} ClearLayers(); if(pwxGISLayer && pwxGISLayer->IsValid()) AddLayer(pwxGISLayer);//m_GISMap. m_pParentGxObject = pGxObj; wxGISMapView::Refresh(); }
void ExportSingleTableDataset(wxWindow* pWnd, const CPLString &sPath, const wxString &sName, wxGxObjectFilter* const pFilter, IGxDataset* const pGxDataset) { wxCHECK_RET(pFilter && pGxDataset, wxT("The input pointer is NULL")); wxGISProgressDlg ProgressDlg(_("Exporting..."), _("Begin operation..."), 100, pWnd); ProgressDlg.SetAddPercentToMessage(false); ProgressDlg.ShowProgress(true); wxGISDataset* pDataset = pGxDataset->GetDataset(false, &ProgressDlg); wxGISTable* pTable = wxDynamicCast(pDataset, wxGISTable); if (NULL == pTable) { wxMessageBox(_("The table is empty"), _("Error"), wxCENTRE | wxICON_ERROR | wxOK, pWnd); wxLogError(_("wxGISFeatureDataset pointer is null returned")); return; } //create progress dialog if (!pTable->IsOpened()) { if (!pTable->Open(0, 0, false, &ProgressDlg)) { wxMessageBox(ProgressDlg.GetLastMessage(), _("Error"), wxCENTRE | wxICON_ERROR | wxOK, pWnd); wxLogError(ProgressDlg.GetLastMessage()); wsDELETE(pTable); return; } } if (!ExportFormat(pTable, sPath, sName, pFilter, wxGISNullSpatialFilter, NULL, NULL, static_cast<ITrackCancel*>(&ProgressDlg))) { ShowMessageDialog(pWnd, ProgressDlg.GetWarnings()); } else if (ProgressDlg.GetWarningCount() > 0) { ShowMessageDialog(pWnd, ProgressDlg.GetWarnings()); } wsDELETE(pTable); }
void wxGxOpenFileGDB::FillMetadata(bool bForce) { if (m_bIsMetadataFilled && !bForce) return; m_bIsMetadataFilled = true; wxGISDataset* pDSet = GetDatasetFast(); if (NULL == pDSet) { return; } VSIStatBufL BufL; wxULongLong nSize(0); wxDateTime dt(1,wxDateTime::Jan, 1900); int ret = VSIStatL(m_sPath, &BufL); if (ret == 0) { //nSize += BufL.st_size; //dt = wxDateTime(BufL.st_mtime); if (VSI_ISDIR(BufL.st_mode)) { char **papszItems = CPLReadDir(wxGxObjectContainer::GetPath()); if (papszItems && CSLCount(papszItems) > 0) { for (int i = 0; papszItems[i] != NULL; ++i) { if (wxGISEQUAL(papszItems[i], ".") || wxGISEQUAL(papszItems[i], "..")) continue; CPLString szFullPathFrom = CPLFormFilename(wxGxObjectContainer::GetPath(), papszItems[i], NULL); ret = VSIStatL(szFullPathFrom, &BufL); if (ret == 0) { nSize += BufL.st_size; wxDateTime dtt(BufL.st_mtime); if (dtt > dt) dt = dtt; } } } CSLDestroy(papszItems); } } m_nSize = nSize; m_dtMod = dt; wsDELETE(pDSet); }
wxGISDataset* const wxGxOpenFileGDB::GetDataset(bool bCached, ITrackCancel* const pTrackCancel) { wxGISDataSource* pwxGISDataSource = wxDynamicCast(GetDatasetFast(), wxGISDataSource); if (NULL != pwxGISDataSource && !pwxGISDataSource->IsOpened()) { if (!pwxGISDataSource->Open(TRUE)) { wsDELETE(pwxGISDataSource); const char* err = CPLGetLastErrorMsg(); wxString sErr = wxString::Format(_("Operation '%s' failed! GDAL error: %s"), _("Open"), wxString(err, wxConvUTF8).c_str()); wxLogError(sErr); if (pTrackCancel) pTrackCancel->PutMessage(sErr, wxNOT_FOUND, enumGISMessageErr); return NULL; } wxGIS_GXCATALOG_EVENT(ObjectChanged); wsDELETE(pwxGISDataSource); } wsGET(m_pwxGISDataset); }
wxGISApplicationBase::~wxGISApplicationBase() { //delete oposite direction to prevent delete sub menues // refcount! for(size_t i = 0; i < m_CommandBarArray.size(); ++i) wsDELETE(m_CommandBarArray[i]); for(size_t i = 0; i < m_CommandArray.size(); ++i) { wxGISPointer* pPointer = dynamic_cast<wxGISPointer*>(m_CommandArray[i]); if(pPointer) { pPointer->Release(); m_CommandArray[i] = NULL; //wsDELETE(m_CommandArray[i]); } else wxDELETE(m_CommandArray[i]); } }
bool wxGxOpenFileGDB::Delete(void) { wxGISDataset* pDSet = GetDatasetFast(); if (NULL != pDSet) { pDSet->Close(); wsDELETE(pDSet); } if (DeleteDir(m_sPath)) { return true; } else { const char* err = CPLGetLastErrorMsg(); wxLogError(_("Operation '%s' failed! GDAL error: %s, file '%s'"), _("Delete"), wxString(err, wxConvUTF8).c_str(), wxString(m_sPath, wxConvUTF8).c_str()); return false; } return false; }
void wxGxOpenFileGDB::LoadChildren(void) { if(m_bIsChildrenLoaded) return; wxGISDataSource* pDSource = wxDynamicCast(GetDatasetFast(), wxGISDataSource); if (NULL == pDSource) { return; } pDSource->Open(); for (size_t i = 0; i < pDSource->GetSubsetsCount(); ++i) { wxGISDataset* pDSet = pDSource->GetSubset(i); if (NULL == pDSet) continue; switch (pDSet->GetType()) { case enumGISFeatureDataset: new wxGxInitedFeatureDataset(pDSet, wxStaticCast(this, wxGxObject), pDSet->GetName(), wxGxObjectContainer::GetPath()); break; case enumGISTableDataset: new wxGxInitedTableDataset(pDSet, wxStaticCast(this, wxGxObject), pDSet->GetName(), wxGxObjectContainer::GetPath()); break; case enumGISRasterDataset: //TODO: break; default: break; } } wsDELETE(pDSource); m_bIsChildrenLoaded = true; }
wxGISDataset* const wxGxMLDatasetUI::GetDataset(bool bCache, ITrackCancel* const pTrackCancel) { wxGISFeatureDataset* pwxGISFeatureDataset = wxDynamicCast(GetDatasetFast(), wxGISFeatureDataset); if(pwxGISFeatureDataset && !pwxGISFeatureDataset->IsOpened()) { if (!pwxGISFeatureDataset->Open(0, TRUE, bCache, pTrackCancel)) { const char* err = CPLGetLastErrorMsg(); wxString sErr = wxString::Format(_("Operation '%s' failed! GDAL error: %s"), _("Open"), wxString(err, wxConvUTF8).c_str()); wxLogError(sErr); if (pTrackCancel) { pTrackCancel->PutMessage(sErr, wxNOT_FOUND, enumGISMessageErr); } wsDELETE(pwxGISFeatureDataset); return NULL; } wxGIS_GXCATALOG_EVENT(ObjectChanged); } wsGET( m_pwxGISDataset ); }
void wxGISApplicationBase::RemoveCommandBar(wxGISCommandBar* pBar) { for(size_t i = 0; i < m_CommandBarArray.GetCount(); ++i) { if(m_CommandBarArray[i] == pBar) { switch(m_CommandBarArray[i]->GetType()) { case enumGISCBMenubar: if(m_pMenuBar) m_pMenuBar->RemoveMenu(pBar); break; case enumGISCBToolbar: case enumGISCBContextmenu: case enumGISCBSubMenu: case enumGISCBNone: break; } wsDELETE(pBar); m_CommandBarArray.RemoveAt(i); break; } } }
void ExportMultipleVectorDatasets(wxWindow* pWnd, const CPLString &sPath, wxGxObjectFilter* const pFilter, wxVector<EXPORTED_DATASET> &paDatasets) { wxCHECK_RET(pWnd && pFilter && paDatasets.size() > 1, wxT("The input pointer is NULL or datasets array is empty")); wxGISProgressDlg ProgressDlg(_("Exporting..."), _("Begin operation..."), 100, pWnd); ProgressDlg.SetAddPercentToMessage(false); ProgressDlg.ShowProgress(true); for (size_t i = 0; i < paDatasets.size(); ++i) { ProgressDlg.SetTitle(wxString::Format(_("Proceed %ld of %ld..."), i + 1, paDatasets.size())); wxGISDataset* pDataset = paDatasets[i].pDSet->GetDataset(false, &ProgressDlg); wxVector<wxGISFeatureDataset*> apFeatureDatasets; if (pDataset->GetSubsetsCount() == 0) { wxGISFeatureDataset* pFeatureDataset = wxDynamicCast(pDataset, wxGISFeatureDataset); if (NULL != pFeatureDataset) { pFeatureDataset->Reference(); apFeatureDatasets.push_back(pFeatureDataset); } } else { for (size_t j = 0; j < pDataset->GetSubsetsCount(); ++j) { wxGISFeatureDataset* pFeatureDataset = wxDynamicCast(pDataset->GetSubset(j), wxGISFeatureDataset); if (NULL != pFeatureDataset) { pFeatureDataset->Reference(); apFeatureDatasets.push_back(pFeatureDataset); } } } if (apFeatureDatasets.size() == 0) { wxMessageBox(_("The dataset is empty"), _("Error"), wxCENTRE | wxICON_ERROR | wxOK, pWnd); wxLogError(_("wxGISFeatureDataset pointer is null returned")); return; } for (size_t j = 0; j < apFeatureDatasets.size(); ++j) { if(!ProgressDlg.Continue()) break; if (!apFeatureDatasets[j]->IsOpened()) { if (!apFeatureDatasets[j]->Open(0, TRUE, false, &ProgressDlg)) { wxMessageBox(ProgressDlg.GetLastMessage(), _("Error"), wxCENTRE | wxICON_ERROR | wxOK, pWnd); wxLogError(ProgressDlg.GetLastMessage()); wsDELETE(apFeatureDatasets[j]); continue; } } if (!ExportFormat(apFeatureDatasets[j], sPath, paDatasets[i].sName, pFilter, wxGISNullSpatialFilter, NULL, NULL, true, static_cast<ITrackCancel*>(&ProgressDlg))) { wxMessageBox(ProgressDlg.GetLastMessage(), _("Error"), wxCENTRE | wxICON_ERROR | wxOK, pWnd); wxLogError(ProgressDlg.GetLastMessage()); wsDELETE(apFeatureDatasets[j]); continue; } wsDELETE(apFeatureDatasets[j]); } } if (ProgressDlg.GetWarningCount() > 0 && ProgressDlg.Continue()) { ShowMessageDialog(pWnd, ProgressDlg.GetWarnings()); } }
wxFeatureCursorRefData::~wxFeatureCursorRefData() { m_olFeatures.clear(); wsDELETE(m_pFeatureDataSet); }
wxGxInitedTableDataset::~wxGxInitedTableDataset(void) { wsDELETE(m_pwxGISDataset); }
wxGxInitedFeatureDataset::~wxGxInitedFeatureDataset(void) { wsDELETE(m_pwxGISDataset); }
wxGxDataset::~wxGxDataset(void) { wsDELETE(m_pwxGISDataset); }
wxGISSimpleFillSymbol::~wxGISSimpleFillSymbol() { wsDELETE(m_pLineSymbol); }
wxGxShapefileDataset::~wxGxShapefileDataset(void) { wsDELETE(m_pwxGISDataset); }
wxGISTable::~wxGISTable() { wsDELETE(m_pwxGISDataset); }