skizzle/include/gui/modal.hpp

61 lines
1.2 KiB
C++

#ifndef __SKIZZLE_MODAL_HPP__
#define __SKIZZLE_MODAL_HPP__
#include <SFGUI/Widgets.hpp>
#include <SFML/Graphics.hpp>
#include <functional>
/**
* Classe de base pour les fenêtres modales
* qui bloquent l'accès aux autres éléments du jeu
*/
class Modal {
protected:
sfg::Window::Ptr modal_main_window;
sfg::Window::Ptr modal_inner_window;
sfg::Box::Ptr layout_box;
sfg::Box::Ptr buttons_box;
sfg::Label::Ptr title_label;
sfg::Label::Ptr subtitle_label;
public:
Modal();
/**
* Récupère la fenêtre de la modale
*/
sfg::Window::Ptr getWindow();
/**
* Récupère la boîte de layout interne de la modale
*/
sfg::Box::Ptr getLayoutBox();
/**
* Ajoute un nouveau bouton à la modale
*/
sfg::Button::Ptr addButton(
sf::String label,
std::function<void()> callback = std::function<void()>()
);
/**
* Modifie le titre de la modale
*/
void setTitle(sf::String label);
/**
* Modifie le sous-titre de la modale
*/
void setSubtitle(sf::String label);
/**
* Redimensionne la modale pour qu'elle prenne tout l'espace donné
*/
void resize(sf::Vector2u size);
};
#endif