//--------------------------------------------------------- inline void CVIEW_Map_Control::_Set_StatusBar(const TSG_Point &Point) { static bool bBuisy = false; if( bBuisy == false ) { bBuisy = true; if( m_pMap->Get_Parameter("GCS_POSITION")->asBool() && m_pMap->Get_Projection().is_Okay() ) { CSG_Projection GCS; GCS.Set_GCS_WGS84(); TSG_Point Position = Point; if( SG_Get_Projected(m_pMap->Get_Projection(), GCS, Position) ) { STATUSBAR_Set_Text(wxString::Format("X %s", SG_Double_To_Degree(Position.x).c_str()), STATUSBAR_VIEW_X); STATUSBAR_Set_Text(wxString::Format("Y %s", SG_Double_To_Degree(Position.y).c_str()), STATUSBAR_VIEW_Y); } } else { STATUSBAR_Set_Text(wxString::Format("X %f", Point.x), STATUSBAR_VIEW_X); STATUSBAR_Set_Text(wxString::Format("Y %f", Point.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(Point, _Get_Client2World(2.0)).c_str()), STATUSBAR_VIEW_Z); } else { STATUSBAR_Set_Text("Z", STATUSBAR_VIEW_Z); } bBuisy = false; } }
//--------------------------------------------------------- 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; } }
//--------------------------------------------------------- int Callback(TSG_UI_Callback_ID ID, CSG_UI_Parameter &Param_1, CSG_UI_Parameter &Param_2) { int Result, *iArray; Result = 1; //----------------------------------------------------- switch( ID ) { default: Result = 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_PROCESS_GET_OKAY: Result = PROCESS_Get_Okay(Param_1.True); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_OKAY: Result = PROCESS_Set_Okay(Param_1.True); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_PROGRESS: Result = PROGRESSBAR_Set_Position(Param_1.Number, Param_2.Number); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_READY: STATUSBAR_Set_Text(_TL("ready")); Result = PROGRESSBAR_Set_Position(0); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_TEXT: STATUSBAR_Set_Text(Param_1.String.c_str()); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_STOP_EXECUTION: if( g_pModule && g_pModule->is_Executing() ) { Result = g_pModule->Execute(Param_1.True) ? 1 : 0; } else if( g_pModule && g_pModule->is_Interactive() ) { Result = g_pModule->Execute(Param_1.True) ? 1 : 0; } break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_MESSAGE_ADD: iArray = (int *)Param_2.Pointer; MSG_General_Add (Param_1.String.c_str(), iArray[0] != 0, iArray[0] != 0, (TSG_UI_MSG_STYLE)iArray[1]); break; //----------------------------------------------------- case CALLBACK_MESSAGE_ADD_ERROR: MSG_Error_Add (Param_1.String.c_str(), true); break; //----------------------------------------------------- case CALLBACK_MESSAGE_ADD_EXECUTION: iArray = (int *)Param_2.Pointer; MSG_Execution_Add (Param_1.String.c_str(), iArray[0] != 0, iArray[0] != 0, (TSG_UI_MSG_STYLE)iArray[1]); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DLG_MESSAGE: DLG_Message_Show(Param_1.String.c_str(), Param_2.String.c_str()); break; //----------------------------------------------------- case CALLBACK_DLG_CONTINUE: Result = DLG_Message_Confirm(Param_1.String.c_str(), Param_2.String.c_str()); break; //----------------------------------------------------- case CALLBACK_DLG_ERROR: Result = DLG_Message_Show_Error(Param_1.String.c_str(), Param_2.String.c_str()); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DLG_PARAMETERS: Result = DLG_Parameters((CSG_Parameters *)Param_1.Pointer, Param_2.String.c_str()) ? 1 : 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DATAOBJECT_ADD: Result = g_pData->Add((CSG_Data_Object *)Param_1.Pointer) ? 1 : 0; if( Result && Param_2.True ) { g_pData->Show((CSG_Data_Object *)Param_1.Pointer, false); } break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_UPDATE: Result = g_pData->Update((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_SHOW: Result = g_pData->Show((CSG_Data_Object *)Param_1.Pointer, (int)Param_2.Number) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_ASIMAGE: Result = g_pData->asImage((CSG_Data_Object *)Param_1.Pointer, (CSG_Grid *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_COLORS_GET: Result = g_pData->Get_Colors((CSG_Data_Object *)Param_1.Pointer, (CSG_Colors *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_COLORS_SET: Result = g_pData->Set_Colors((CSG_Data_Object *)Param_1.Pointer, (CSG_Colors *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_PARAMS_GET: Result = g_pData->Get_Parameters((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_PARAMS_SET: Result = g_pData->Set_Parameters((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_ODBC_UPDATE: Result = g_pData_Source->Update_ODBC_Source(Param_1.String.c_str()) ? 1 : 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_GUI_GET_WINDOW: Param_1.Pointer = MDI_Get_Frame(); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- } return( Result ); }
//--------------------------------------------------------- bool CACTIVE::Set_Active(CWKSP_Base_Item *pItem) { if( pItem == m_pItem ) { return( true ); } //----------------------------------------------------- m_pItem = pItem; if( m_pParameters ) m_pParameters->Set_Parameters(m_pItem); Update_Description(); STATUSBAR_Set_Text(SG_T(""), STATUSBAR_VIEW_X); STATUSBAR_Set_Text(SG_T(""), STATUSBAR_VIEW_Y); STATUSBAR_Set_Text(SG_T(""), STATUSBAR_VIEW_Z); //----------------------------------------------------- if( m_pItem == NULL ) { if( g_pSAGA_Frame ) g_pSAGA_Frame->Set_Pane_Caption(this, _TL("Properties")); if( g_pData_Buttons ) g_pData_Buttons->Refresh(); if( g_pMap_Buttons ) g_pMap_Buttons ->Refresh(); _Hide_Page(m_pHistory); _Hide_Page(m_pLegend); _Hide_Page(m_pAttributes); SendSizeEvent(); return( true ); } //----------------------------------------------------- if( g_pSAGA_Frame ) g_pSAGA_Frame->Set_Pane_Caption(this, wxString(_TL("Properties")) + ": " + m_pItem->Get_Name()); //----------------------------------------------------- if( Get_Active_Data_Item() ) { _Show_Page(m_pHistory ); } else { _Hide_Page(m_pHistory ); } if( Get_Active_Layer() || Get_Active_Map() ) { _Show_Page(m_pLegend ); } else { _Hide_Page(m_pLegend ); } if( Get_Active_Layer() ) { _Show_Page(m_pAttributes); } else { _Hide_Page(m_pAttributes); } //----------------------------------------------------- if( g_pData_Buttons ) g_pData_Buttons->Refresh(false); if( g_pMap_Buttons ) g_pMap_Buttons ->Refresh(false); if( g_pData_Source ) g_pData_Source->Set_Data_Source(m_pItem); //----------------------------------------------------- CSG_Data_Object *pObject = Get_Active_Data_Item() ? Get_Active_Data_Item()->Get_Object() : NULL; if( SG_Get_Data_Manager().Exists(pObject) && ( (pObject->Get_ObjectType() == DATAOBJECT_TYPE_Table && ((CSG_Table *)pObject)->Get_Selection_Count() > 0) || (pObject->Get_ObjectType() == DATAOBJECT_TYPE_TIN && ((CSG_Shapes *)pObject)->Get_Selection_Count() > 0) || (pObject->Get_ObjectType() == DATAOBJECT_TYPE_PointCloud && ((CSG_PointCloud *)pObject)->Get_Selection_Count() > 0) || (pObject->Get_ObjectType() == DATAOBJECT_TYPE_Shapes && ((CSG_Shapes *)pObject)->Get_Selection_Count() > 0)) ) { g_pData->Update_Views(pObject); } SendSizeEvent(); return( true ); }