//--------------------------------------------------------- bool CSG_Translator::Create(class CSG_Table *pTranslations, int iText, int iTranslation, bool bCmpNoCase) { SG_UI_Msg_Lock(true); Destroy(); if( iText != iTranslation && pTranslations && pTranslations->Get_Field_Count() > iText && pTranslations->Get_Field_Count() > iTranslation && pTranslations->Get_Record_Count() > 0 ) { int i; m_bCmpNoCase = bCmpNoCase; if( m_bCmpNoCase ) { for(i=0; i<pTranslations->Get_Record_Count(); i++) { CSG_Table_Record *pRecord = pTranslations->Get_Record(i); CSG_String s = pRecord->asString(iText); pRecord->Set_Value(iText, s.Make_Lower().c_str()); } } pTranslations->Set_Index(iText, TABLE_INDEX_Ascending); m_Translations = (CSG_Translation **)SG_Malloc(pTranslations->Get_Record_Count() * sizeof(CSG_Translation *)); for(i=0; i<pTranslations->Get_Record_Count(); i++) { CSG_Table_Record *pRecord = pTranslations->Get_Record_byIndex(i); if( *pRecord->asString(iText) && *pRecord->asString(iTranslation) ) { m_Translations[m_nTranslations++] = new CSG_Translation(pRecord->asString(iText), pRecord->asString(iTranslation)); } } if( m_nTranslations < pTranslations->Get_Record_Count() ) { m_Translations = (CSG_Translation **)SG_Realloc(m_Translations, m_nTranslations * sizeof(CSG_Translation *)); } } SG_UI_Msg_Lock(false); return( m_nTranslations > 0 ); }
//--------------------------------------------------------- bool CSG_Translator::Create(const CSG_String &File_Name, bool bSetExtension, int iText, int iTranslation, bool bCmpNoCase) { CSG_Table Translations; CSG_String fName(bSetExtension ? SG_File_Make_Path(NULL, File_Name, SG_T("lng")) : File_Name); SG_UI_Msg_Lock(true); Destroy(); if( SG_File_Exists(fName) && Translations.Create(fName) ) { Create(&Translations, iText, iTranslation, bCmpNoCase); } SG_UI_Msg_Lock(false); return( m_nTranslations > 0 ); }
//--------------------------------------------------------- CData_Source_PgSQL::CData_Source_PgSQL(wxWindow *pParent) : wxTreeCtrl(pParent, ID_WND_DATA_SOURCE_DATABASE) { AssignImageList(new wxImageList(IMG_SIZE_TREECTRL, IMG_SIZE_TREECTRL, true, 0)); IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_DB_SOURCES ); // IMG_ROOT IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_DB_SOURCES ); // IMG_SERVER IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_DB_SOURCE_OFF ); // IMG_SRC_CLOSED IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_DB_SOURCE_ON ); // IMG_SRC_OPENED IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_DB_TABLE ); // IMG_TABLE IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_POINT ); // IMG_POINT IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_POINTS ); // IMG_POINTS IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_LINE ); // IMG_LINE IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_SHAPES_POLYGON); // IMG_POLYGON IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_GRID_MANAGER ); // IMG_GRIDS IMG_ADD_TO_TREECTRL(ID_IMG_WKSP_GRID ); // IMG_GRID AddRoot(_TL("PostgreSQL Sources"), IMG_ROOT, IMG_ROOT, new CData_Source_PgSQL_Data(TYPE_ROOT)); //----------------------------------------------------- SG_UI_Msg_Lock(true); wxString Server; for(int i=0; CONFIG_Read(CFG_PGSQL_DIR, wxString::Format(CFG_PGSQL_SRC, i), Server); i++) { wxString User, Password; if( Server.Find("|") > 0 ) { User = Server.AfterFirst ('|').BeforeFirst('|'); Password = Server.AfterLast ('|'); Server = Server.BeforeFirst('|'); } CData_Source_PgSQL_Data *pData = new CData_Source_PgSQL_Data(TYPE_SOURCE, &Server, &Server, &User, &Password); Update_Source(AppendItem(Get_Server_Item(Server, true), pData->Get_DBName().c_str(), IMG_SRC_CLOSED, IMG_SRC_CLOSED, pData)); } Update_Sources(); SG_UI_Msg_Lock(false); }
//--------------------------------------------------------- bool CWKSP_Map_Graticule::Get_Graticule(const CSG_Rect &Extent) { bool bResult = false; m_Graticule .Create(SHAPE_TYPE_Line ); m_Coordinates.Create(SHAPE_TYPE_Point); CSG_Tool *pTool = SG_Get_Tool_Library_Manager().Get_Tool("pj_proj4", 14); if( pTool && Get_Map()->Get_Projection().is_Okay() ) { SG_UI_Msg_Lock (true); SG_UI_Progress_Lock(true); pTool->Settings_Push(); if( pTool->Set_Parameter("XMIN" , Extent.Get_XMin()) && pTool->Set_Parameter("XMAX" , Extent.Get_XMax()) && pTool->Set_Parameter("YMIN" , Extent.Get_YMin()) && pTool->Set_Parameter("YMAX" , Extent.Get_YMax()) && pTool->Set_Parameter("INTERVAL" , m_Parameters("INTERVAL")) && pTool->Set_Parameter("FIXED" , m_Parameters("FIXED")) && pTool->Set_Parameter("FITTED" , m_Parameters("FITTED")) && pTool->Set_Parameter("RESOLUTION", m_Parameters("RESOLUTION")) && pTool->Set_Parameter("GRATICULE" , &m_Graticule) && pTool->Set_Parameter("COORDS" , &m_Coordinates) && pTool->Set_Parameter("CRS_PROJ4" , Get_Map()->Get_Projection().Get_Proj4()) && pTool->On_Before_Execution() && pTool->Execute() ) { bResult = true; } pTool->Settings_Pop(); SG_UI_Msg_Lock (false); SG_UI_Progress_Lock(false); } return( bResult ); }
//--------------------------------------------------------- inline void CVIEW_Map_Control::_Set_StatusBar(CSG_Point ptWorld) { static bool bBuisy = false; if( bBuisy == false ) { bBuisy = true; CSG_Tool *pProjector = NULL; if( m_pMap->Get_Parameter("GCS_POSITION")->asBool() && m_pMap->Get_Projection().is_Okay() && (pProjector = SG_Get_Tool_Library_Manager().Get_Tool("pj_proj4", 2)) != NULL ) // Coordinate Transformation (Shapes) { if( pProjector->is_Executing() ) { pProjector = NULL; } else { SG_UI_Progress_Lock(true); SG_UI_Msg_Lock (true); CSG_Shapes prj(SHAPE_TYPE_Point), gcs(SHAPE_TYPE_Point); prj.Add_Shape()->Add_Point(ptWorld); prj.Get_Projection().Assign(m_pMap->Get_Projection()); pProjector->Settings_Push(NULL); if( pProjector->Set_Parameter("CRS_PROJ4", SG_T("+proj=longlat +ellps=WGS84 +datum=WGS84")) && pProjector->Set_Parameter("SOURCE" , &prj) && pProjector->Set_Parameter("TARGET" , &gcs) && pProjector->Execute() ) { CSG_Point ptWorld_gcs = gcs.Get_Shape(0)->Get_Point(0); STATUSBAR_Set_Text(wxString::Format("X %s", SG_Double_To_Degree(ptWorld_gcs.Get_X()).c_str()), STATUSBAR_VIEW_X); STATUSBAR_Set_Text(wxString::Format("Y %s", SG_Double_To_Degree(ptWorld_gcs.Get_Y()).c_str()), STATUSBAR_VIEW_Y); pProjector->Settings_Pop(); } else { pProjector->Settings_Pop(); pProjector = NULL; } SG_UI_Progress_Lock(false); SG_UI_Msg_Lock (false); } } if( !pProjector ) { STATUSBAR_Set_Text(wxString::Format("X %f", ptWorld.Get_X()), STATUSBAR_VIEW_X); STATUSBAR_Set_Text(wxString::Format("Y %f", ptWorld.Get_Y()), STATUSBAR_VIEW_Y); } if( m_Mode == MAP_MODE_DISTANCE ) { STATUSBAR_Set_Text(wxString::Format("D %f", m_Distance + m_Distance_Move), STATUSBAR_VIEW_Z); } else if( Get_Active_Layer() ) { STATUSBAR_Set_Text(wxString::Format("Z %s", Get_Active_Layer()->Get_Value(ptWorld, _Get_World(2.0)).c_str()), STATUSBAR_VIEW_Z); } else { STATUSBAR_Set_Text("Z", STATUSBAR_VIEW_Z); } bBuisy = false; } }