Пример #1
0
//[-------------------------------------------------------]
//[ Protected virtual PLGui::GuiApplication functions     ]
//[-------------------------------------------------------]
void Application::OnCreateMainWindow()
{
	// [sbusch]
//	String sDir = Url(sFilename).CutFilename();
//	System::GetInstance()->SetCurrentDir(sDir);
//	LoadableManager::GetInstance()->AddBaseDir(sDir);

	// Get GUI
	Gui *pGui = Gui::GetSystemGui();

	// List screens
	System::GetInstance()->GetConsole().Print("Screens:\n");
	for (uint32 i=0; i<pGui->GetScreens().GetNumOfElements(); i++) {
		Screen *pScreen = pGui->GetScreens().Get(i);
		String sName	= pScreen->GetName();
		Vector2i vSize	= pScreen->GetSize();
		Vector2i vPos	= pScreen->GetPos();
		bool bDefault	= pScreen->IsDefault();
		System::GetInstance()->GetConsole().Print(
			String("- ") + sName +
			" [" + vSize.x + 'x' + vSize.y +']' +
			" (" + vPos .x + ',' + vPos .y + ')' +
			(bDefault ? " (*)" : "") +
			'\n');
	}

	// Create window
	TestWindow *pWindow = new TestWindow();
//	pWindow->SetFullscreenEnabled(true);
	pWindow->SetPos(Vector2i(0, 0));
	pWindow->SetSize(Vector2i(640, 480));
	pWindow->Center(CenterScreen);
	pWindow->SetVisible(true);

	// Add modifiers
	pWindow->AddModifier("PLGui::ModClose", "ExitApplication=1");
//	pWindow->AddModifier("PLGui::ModBlend", "");

	// Set main window
	SetMainWindow(pWindow);
}
Пример #2
0
/**
*  @brief
*    Center widget relative to the screen
*/
void Widget::CenterOnScreen(Screen &cScreen)
{
	// Widget and screen must belong to the same GUI
	if (GetGui() == cScreen.GetGui()) {
		// Get sizes
		Vector2i vSize	 = GetSize();
		Vector2i vScreen = cScreen.GetSize();

		// Get relative position
		Vector2i vRelative = GetAbsPos() - cScreen.GetPos();

		// Get desired relative position
		Vector2i vDesired;
		vDesired.x = (vScreen.width  - vSize.width)  / 2;
		vDesired.y = (vScreen.height - vSize.height) / 2;

		// Set new position
		Vector2i vPos = GetPos() + vDesired - vRelative;
		SetPos(vPos);
	}
}
Пример #3
0
/**
*  @brief
*    Get screen the widget is on
*/
Screen *Widget::GetScreen() const
{
	// Get current position
	Vector2i vPos = GetAbsPos();

	// Check all screens
	for (uint32 i=0; i<GetGui()->GetScreens().GetNumOfElements(); i++) {
		// Get screen, position and size
		Screen *pScreen = GetGui()->GetScreens().Get(i);
		Vector2i vScreenPos  = pScreen->GetPos();
		Vector2i vScreenSize = pScreen->GetSize();

		// Check if widget is inside that screen
		if (vPos.x >= vScreenPos.x && vPos.x < vScreenPos.x + vScreenSize.x &&
			vPos.y >= vScreenPos.y && vPos.y < vScreenPos.y + vScreenSize.y)
		{
			// Screen found
			return pScreen;
		}
	}

	// ERROR, no screen found
	return nullptr;
}