Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFGUI/SFGUI.hpp>
- #include <SFGUI/Widgets.hpp>
- #include <SFML/Graphics.hpp>
- const int SCREEN_WIDTH = 800;
- const int SCREEN_HEIGHT = 600;
- class Example {
- public:
- void OnButtonClick();
- void OnWindow2Close();
- void Run();
- private:
- sfg::SFGUI m_sfgui;
- sfg::Window::Ptr window2;
- };
- void Example::OnButtonClick()
- {
- window2->Show( true );
- }
- void Example::OnWindow2Close()
- {
- window2->Show( false );
- }
- void Example::Run() {
- sf::RenderWindow render_window( sf::VideoMode( 800, 600 ), "SFML" );
- auto button = sfg::Button::Create( "Open Window" );
- button->GetSignal( sfg::Widget::OnLeftClick ).Connect( std::bind( &Example::OnButtonClick, this ) );
- auto box = sfg::Box::Create( sfg::Box::Orientation::VERTICAL, 5.0f );
- box->Pack( button, false );
- auto window = sfg::Window::Create();
- window->Add( box );
- window2 = sfg::Window::Create();
- window2->SetTitle( "Close me" );
- window2->SetStyle( window2->GetStyle() | sfg::Window::CLOSE );
- window2->GetSignal( sfg::Window::OnCloseButton ).Connect( std::bind( &Example::OnWindow2Close, this ) );
- window2->SetRequisition( sf::Vector2f( 200, 200 ) );
- window2->SetPosition( sf::Vector2f( 200, 200 ) );
- window2->Show( false );
- // Create a desktop and add the window to it.
- sfg::Desktop desktop;
- desktop.Add( window );
- desktop.Add( window2 );
- // We're not using SFML to render anything in this program, so reset OpenGL
- // states. Otherwise we wouldn't see anything.
- render_window.resetGLStates();
- // Main loop!
- sf::Event event;
- sf::Clock clock;
- while( render_window.isOpen() ) {
- // Event processing.
- while( render_window.pollEvent( event ) ) {
- desktop.HandleEvent( event );
- // If window is about to be closed, leave program.
- if( event.type == sf::Event::Closed ) {
- render_window.close();
- }
- }
- // Update SFGUI with elapsed seconds since last call.
- desktop.Update( clock.restart().asSeconds() );
- // Rendering.
- render_window.clear();
- m_sfgui.Display( render_window );
- render_window.display();
- }
- }
- int main() {
- Example example;
- example.Run();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement