📄 wksp_data_manager.cpp
字号:
{
default:
return( CWKSP_Base_Manager::On_Command(Cmd_ID) );
//-----------------------------------------------------
case ID_CMD_DATA_PROJECT_OPEN: m_pProject->Load(false); break;
case ID_CMD_DATA_PROJECT_OPEN_ADD: m_pProject->Load(true); break;
case ID_CMD_DATA_PROJECT_SAVE: m_pProject->Save(true); break;
case ID_CMD_DATA_PROJECT_SAVE_AS: m_pProject->Save(); break;
//-----------------------------------------------------
case ID_CMD_TABLES_OPEN: Open(DATAOBJECT_TYPE_Table); break;
case ID_CMD_SHAPES_OPEN: Open(DATAOBJECT_TYPE_Shapes); break;
case ID_CMD_TIN_OPEN: Open(DATAOBJECT_TYPE_TIN); break;
case ID_CMD_GRIDS_OPEN: Open(DATAOBJECT_TYPE_Grid); break;
//-----------------------------------------------------
case ID_CMD_WKSP_ITEM_RETURN:
break;
case ID_CMD_WKSP_ITEM_CLOSE:
Close(false);
break;
}
//-----------------------------------------------------
return( true );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::On_Command_UI(wxUpdateUIEvent &event)
{
switch( event.GetId() )
{
default:
return( CWKSP_Base_Manager::On_Command_UI(event) );
case ID_CMD_WKSP_ITEM_CLOSE:
event.Enable(Get_Count() > 0);
break;
case ID_CMD_DATA_PROJECT_SAVE:
event.Enable(Get_Count() > 0 && m_pProject->Has_File_Name() );
break;
case ID_CMD_DATA_PROJECT_SAVE_AS:
event.Enable(Get_Count() > 0);
break;
}
return( true );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
void CWKSP_Data_Manager::Parameters_Changed(void)
{
SG_Grid_Cache_Set_Automatic (m_Parameters("GRID_MEM_CACHE_AUTO") ->asBool());
SG_Grid_Cache_Set_Threshold_MB (m_Parameters("GRID_MEM_CACHE_THRSHLD") ->asDouble());
SG_Grid_Cache_Set_Confirm (m_Parameters("GRID_MEM_CACHE_CONFIRM") ->asInt());
SG_Grid_Cache_Set_Directory (m_Parameters("GRID_MEM_CACHE_TMPDIR") ->asString());
CWKSP_Base_Manager::Parameters_Changed();
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CWKSP_Data_Manager::Check_Parameters(CSG_Parameters *pParameters)
{
if( pParameters )
{
for(int i=0; i<pParameters->Get_Count(); i++)
{
Check_Parameter(pParameters->Get_Parameter(i));
}
return( true );
}
return( false );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::Check_Parameter(CSG_Parameter *pParameter)
{
bool bResult = true;
int i, DataObject_Type;
if( pParameter )
{
switch( pParameter->Get_Type() )
{
default: DataObject_Type = -1; break;
case PARAMETER_TYPE_Grid:
case PARAMETER_TYPE_Grid_List: DataObject_Type = DATAOBJECT_TYPE_Grid; break;
case PARAMETER_TYPE_Table:
case PARAMETER_TYPE_Table_List: DataObject_Type = DATAOBJECT_TYPE_Table; break;
case PARAMETER_TYPE_Shapes:
case PARAMETER_TYPE_Shapes_List: DataObject_Type = DATAOBJECT_TYPE_Shapes; break;
case PARAMETER_TYPE_TIN:
case PARAMETER_TYPE_TIN_List: DataObject_Type = DATAOBJECT_TYPE_TIN; break;
}
//-------------------------------------------------
switch( pParameter->Get_Type() )
{
default:
break;
case PARAMETER_TYPE_Grid_System:
if( !Exists(pParameter->asGrid_System()) )
{
bResult = false;
pParameter->Set_Value((void *)NULL);
}
break;
case PARAMETER_TYPE_Grid:
case PARAMETER_TYPE_Table:
case PARAMETER_TYPE_Shapes:
case PARAMETER_TYPE_TIN:
if( pParameter->asDataObject() != DATAOBJECT_NOTSET
&& pParameter->asDataObject() != DATAOBJECT_CREATE
&& !Exists(pParameter->asDataObject(), DataObject_Type) )
{
bResult = false;
pParameter->Set_Value(DATAOBJECT_NOTSET);
}
break;
case PARAMETER_TYPE_Grid_List:
case PARAMETER_TYPE_Table_List:
case PARAMETER_TYPE_Shapes_List:
case PARAMETER_TYPE_TIN_List:
for(i=pParameter->asList()->Get_Count()-1; i>=0; i--)
{
if( !Exists(pParameter->asList()->asDataObject(i), DataObject_Type) )
{
bResult = false;
pParameter->asList()->Del_Item(i);
}
}
break;
}
}
return( bResult );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CWKSP_Data_Manager::Open_CMD(int Cmd_ID)
{
return( m_pMenu_Files->Recent_Open(Cmd_ID) );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::Open(const wxChar *File_Name)
{
if( SG_File_Cmp_Extension(File_Name, wxT("txt"))
|| SG_File_Cmp_Extension(File_Name, wxT("dbf")) )
{
return( Open(DATAOBJECT_TYPE_Table , File_Name) != NULL );
}
if( SG_File_Cmp_Extension(File_Name, wxT("shp")) )
{
return( Open(DATAOBJECT_TYPE_Shapes, File_Name) != NULL );
}
if( SG_File_Cmp_Extension(File_Name, wxT("sgrd"))
|| SG_File_Cmp_Extension(File_Name, wxT("dgm"))
|| SG_File_Cmp_Extension(File_Name, wxT("grd")) )
{
return( Open(DATAOBJECT_TYPE_Grid , File_Name) != NULL );
}
if( SG_File_Cmp_Extension(File_Name, wxT("sprj")) )
{
return( m_pProject->Load(File_Name, false, true) );
}
return( false );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::Open(int DataType)
{
int ID;
wxArrayString File_Paths;
switch( DataType )
{
default: return( false );
case DATAOBJECT_TYPE_Table: ID = ID_DLG_TABLES_OPEN; break;
case DATAOBJECT_TYPE_Shapes: ID = ID_DLG_SHAPES_OPEN; break;
case DATAOBJECT_TYPE_TIN: ID = ID_DLG_TIN_OPEN; break;
case DATAOBJECT_TYPE_Grid: ID = ID_DLG_GRIDS_OPEN; break;
}
if( DLG_Open(File_Paths, ID) )
{
MSG_General_Add_Line();
for(size_t i=0; i<File_Paths.GetCount(); i++)
{
Open(DataType, File_Paths[i]);
}
return( true );
}
return( false );
}
//---------------------------------------------------------
CWKSP_Base_Item * CWKSP_Data_Manager::Open(int DataType, const wxChar *FileName)
{
CSG_Data_Object *pObject;
CWKSP_Base_Item *pItem;
switch( DataType )
{
default:
pObject = NULL;
break;
case DATAOBJECT_TYPE_Table:
pObject = new CSG_Table (FileName);
break;
case DATAOBJECT_TYPE_Shapes:
pObject = new CSG_Shapes(FileName);
break;
case DATAOBJECT_TYPE_TIN:
pObject = new CSG_TIN (FileName);
break;
case DATAOBJECT_TYPE_Grid:
pObject = new CSG_Grid (FileName);
break;
}
PROCESS_Set_Okay();
if( pObject )
{
if( pObject->is_Valid() && (pItem = Add(pObject)) != NULL )
{
m_pMenu_Files->Recent_Add(DataType, FileName);
return( pItem );
}
delete(pObject);
}
m_pMenu_Files->Recent_Del(DataType, FileName);
return( NULL );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CWKSP_Data_Manager::Exists(CSG_Grid_System *pSystem)
{
return( m_pGrids && m_pGrids->Exists(pSystem) );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::Exists(CSG_Data_Object *pObject, int Type)
{
switch( Type )
{
case DATAOBJECT_TYPE_Grid:
return( m_pGrids && m_pGrids ->Exists((CSG_Grid *)pObject) );
case DATAOBJECT_TYPE_Table:
return( m_pTables && m_pTables->Exists((CSG_Table *)pObject) );
case DATAOBJECT_TYPE_Shapes:
return( m_pShapes && m_pShapes->Exists((CSG_Shapes *)pObject) );
case DATAOBJECT_TYPE_TIN:
return( m_pTINs && m_pTINs ->Exists((CSG_TIN *)pObject) );
}
return( Exists(pObject, DATAOBJECT_TYPE_Table)
|| Exists(pObject, DATAOBJECT_TYPE_Shapes)
|| Exists(pObject, DATAOBJECT_TYPE_TIN)
|| Exists(pObject, DATAOBJECT_TYPE_Grid)
);
}
//---------------------------------------------------------
CSG_Data_Object * CWKSP_Data_Manager::Get_byFileName(const wxChar *File_Name, int Type)
{
switch( Type )
{
case DATAOBJECT_TYPE_Grid:
return( !m_pGrids ? NULL : m_pGrids ->Get_byFileName(File_Name) );
case DATAOBJECT_TYPE_Table:
return( !m_pTables ? NULL : m_pTables->Get_byFileName(File_Name) );
case DATAOBJECT_TYPE_Shapes:
return( !m_pShapes ? NULL : m_pShapes->Get_byFileName(File_Name) );
case DATAOBJECT_TYPE_TIN:
return( !m_pTINs ? NULL : m_pTINs ->Get_byFileName(File_Name) );
}
CSG_Data_Object *pObject;
if( (pObject = Get_byFileName(File_Name, DATAOBJECT_TYPE_Table)) != NULL ) return( pObject );
if( (pObject = Get_byFileName(File_Name, DATAOBJECT_TYPE_Shapes)) != NULL ) return( pObject );
if( (pObject = Get_byFileName(File_Name, DATAOBJECT_TYPE_TIN)) != NULL ) return( pObject );
if( (pObject = Get_byFileName(File_Name, DATAOBJECT_TYPE_Grid)) != NULL ) return( pObject );
return( NULL );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
bool CWKSP_Data_Manager::Save_Modified(CWKSP_Base_Item *pItem)
{
return( m_pProject->Save_Modified(pItem) );
}
//---------------------------------------------------------
bool CWKSP_Data_Manager::Close(bool bSilent)
{
if( Get_Count() == 0 )
{
Finalise();
return( true );
}
else if( (bSilent || DLG_Message_Confirm(LNG("[TXT] Close all data sets"), LNG("[CAP] Close"))) && Save_Modified(this) )
{
Finalise();
g_pACTIVE->Get_Parameters()->Restore_Parameters();
g_pMaps->Close(true);
return( g_pData_Ctrl->Close(true) );
}
return( false );
}
///////////////////////////////////////////////////////////
// //
// //
// //
///////////////////////////////////////////////////////////
//---------------------------------------------------------
CWKSP_Base_Item * CWKSP_Data_Manager::Add(CSG_Data_Object *pObject)
{
if( pObject && _Get_Manager(pObject->Get_ObjectType()) )
{
switch( pObject->Get_ObjectType() )
{
case DATAOBJECT_TYPE_Grid:
return( (CWKSP_Base_Item *)m_pGrids ->Add((CSG_Grid *)pObject) );
case DATAOBJECT_TYPE_Table:
return( (CWKSP_Base_Item *)m_pTables->Add((CSG_Table *)pObject) );
case DATAOBJECT_TYPE_Shapes:
return( (CWKSP_Base_Item *)m_pShapes->Add((CSG_Shapes *)pObject) );
case DATAOBJECT_TYPE_TIN:
return( (CWKSP_Base_Item *)m_pTINs ->Add((CSG_TIN *)pObject) );
default:
return( NULL );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -