当前位置: 首页>>代码示例>>C++>>正文


C++ Statement::SetSelected方法代码示例

本文整理汇总了C++中Statement::SetSelected方法的典型用法代码示例。如果您正苦于以下问题:C++ Statement::SetSelected方法的具体用法?C++ Statement::SetSelected怎么用?C++ Statement::SetSelected使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Statement的用法示例。


在下文中一共展示了Statement::SetSelected方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Execute

void Select::Execute()
{
	Input *pIn = pManager->GetInput();
	Output *pOut = pManager->GetOutput();
	Statement *SelectedStatement;
	Connector* SelectedConnector;
	int Type;
	SelectedStatement = pManager->GetStatement(this->Position, Type);
	SelectedConnector = pManager->GetConnector(this->Position);
	if (SelectedStatement != NULL || SelectedConnector != NULL)
	{
		if (SelectedStatement)
		{
			SelectedStatement->SetSelected(!SelectedStatement->IsSelected());
			pManager->UpdateSelectedStatements(SelectedStatement);
		}
		else
		{
			SelectedConnector->SetSelected(!SelectedConnector->IsSelected());
			pManager->UpdateSelectedConnectors(SelectedConnector);
		}
	}
	if (pManager->GetSelectedStatements().size() == 1)
		pManager->GetOutput()->PrintMessage(pManager->GetSelectedStatements().front()->GetComment());
	else
		pManager->GetOutput()->PrintMessage("");
	pManager->UpdateInterface();
}
开发者ID:Ahmkel,项目名称:Flowchart-Creator,代码行数:28,代码来源:Select.cpp

示例2: Execute

void Paste::Execute()
{
	Input *pIn = pManager->GetInput();
	Output *pOut = pManager->GetOutput();

	ReadActionParameters();

	if (FlagToPaste == true) //Check that the user had already chosen Copy Or Cut to execute Paste action
	{
		//Get the List of Copied or Cut Statements
		list<Statement*> CopiedOrCutStatements = pManager->GetCopiedOrCutStatements();
		
		//If they are Copied
		if (CopiedOrCutStatements.front()->GetCopiedOrCut() == 1) //Copy Action
		{
			Point LeftCornerUp, LeftCornerDown, RightCornerUp, RightCornerDown;
			//Get First Copied statement type to help in calculating dx & dy
			int Type = CopiedOrCutStatements.front()->GetStatementType();
			//Get 4 corners of the point based on its type;
			pManager->GetCorners(P, Type, LeftCornerUp, LeftCornerDown, RightCornerUp, RightCornerDown);
			int dx, dy;

			//Calculate dx and dy due to the first selectes statement
			dx = LeftCornerUp.x - CopiedOrCutStatements.front()->GetLeftCorner().x;
			dy = LeftCornerUp.y - CopiedOrCutStatements.front()->GetLeftCorner().y;

			//Add New Statements to this list
			list<Statement*> NewStatements;

			for (list<Statement*>::iterator it = CopiedOrCutStatements.begin(); it != CopiedOrCutStatements.end(); it++)
			{
				Statement* NewStatement;

				//Get Type of each statement
				Type = (*it)->GetStatementType();
				Point NewStatementPoint = (*it)->GetLeftCorner();

				//This should be the new point for the current statement after copying
				NewStatementPoint.x += dx;
				NewStatementPoint.y += dy;

				//Create New statement of the same type
				//Types:
				// 0 StartEnd
				// 1 SMPLAssignment
				// 2 VARAssignment
				// 3 Conditional
				// 4 Read Write
				switch (Type)
				{
					//No case 0 because we will never have 0 type statements (Start End)
					//"Start and End" are not copied
				case 1:
					NewStatement = new SmplAssign(*((SmplAssign*)(*it)));
					break;
				case 2:
					NewStatement = new VariableAssign(*((VariableAssign*)(*it)));
					break;
				case 3:
					NewStatement = new Conditional(*((Conditional*)(*it)));
					((Conditional*)(NewStatement))->SetpConnL(NULL);
					break;
				case 4:
					NewStatement = new ReadWrite(*((ReadWrite*)(*it)));
					break;
				}

				Statement::IncrementIDCounter();
				NewStatement->SetID(Statement::GetIDCounter());
				NewStatement->SetLeftCorner(NewStatementPoint);
				NewStatement->SetSelected(false);
				NewStatement->SetCopiedOrCut(0);
				NewStatement->UpdatePoints();
				NewStatement->SetpConn(NULL);
				//Dummy variable
				bool tt;
				//Check validity of point
				if (pManager->IsOutOfBounds(NewStatement, tt, tt, tt, tt) || pManager->IsOverlapping(NewStatement))
				{
					//Print Error Message
					pOut->PrintMessage("Unsuitable point for copying. Action terminated! Press any key to continue");
					
					//Remove all new statements
					for (list<Statement*>::iterator it2 = NewStatements.begin(); it2 != NewStatements.end(); it2++)
					{
						delete (*it2);
					}
					NewStatements.clear();

					//Wait for key press
					pIn->GetPointClicked(P);
					pOut->PrintMessage("");
					return;
				}

				//Statement position is okay, add it
				NewStatements.push_back(NewStatement);
			}

			//All statements don't overlap, add them to Statements list
//.........这里部分代码省略.........
开发者ID:Ahmkel,项目名称:Flowchart-Creator,代码行数:101,代码来源:Paste.cpp


注:本文中的Statement::SetSelected方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。