⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wksp_data_manager.cpp

📁 这是一个GPS相关的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	{
	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 + -