Redimensionnement correct de la toolbar

This commit is contained in:
Mattéo Delabre 2016-04-20 00:05:21 +02:00
parent 2426addc11
commit 6c6411f34a
3 changed files with 17 additions and 7 deletions

View File

@ -49,6 +49,11 @@ public:
* Récupère la fenêtre de la barre d'outils * Récupère la fenêtre de la barre d'outils
*/ */
sfg::Window::Ptr getWindow(); sfg::Window::Ptr getWindow();
/**
* Récupère la taille désirée par la barre d'outils
*/
float getWidth();
}; };
#endif #endif

View File

@ -330,10 +330,9 @@ void Editor::draw() {
widget_timer.draw(sf::Vector2f(window_size.x / 2 - 50, 0)); widget_timer.draw(sf::Vector2f(window_size.x / 2 - 50, 0));
// on redimensionne la toolbar pour qu'elle occupe l'espace droite // on redimensionne la toolbar pour qu'elle occupe l'espace droite
const sfg::Window::Ptr& toolbar_window = toolbar.getWindow(); toolbar.getWindow()->SetAllocation(sf::FloatRect(
toolbar_window->SetAllocation(sf::FloatRect( window_size.x - toolbar.getWidth(), 0,
window_size.x - 200, 0, toolbar.getWidth(), window_size.y
200, window_size.y
)); ));
} }

View File

@ -29,6 +29,9 @@ Toolbar::Toolbar(Editor& editor) : editor(editor) {
toolbar_box->PackEnd(save_button); toolbar_box->PackEnd(save_button);
// ajout des créateurs de blocs // ajout des créateurs de blocs
toolbar_box->PackEnd(sfg::Separator::Create());
toolbar_box->PackEnd(sfg::Label::Create(L"Type d'objet à placer"));
addCreator(L"Bloc normal", std::bind(&Toolbar::createBlock, this)); addCreator(L"Bloc normal", std::bind(&Toolbar::createBlock, this));
addCreator(L"Caisse", std::bind(&Toolbar::createMovableBlock, this)); addCreator(L"Caisse", std::bind(&Toolbar::createMovableBlock, this));
addCreator(L"Joueur", std::bind(&Toolbar::createPlayer, this)); addCreator(L"Joueur", std::bind(&Toolbar::createPlayer, this));
@ -54,16 +57,15 @@ Toolbar::Toolbar(Editor& editor) : editor(editor) {
// création de la fenêtre de la barre d'outils // création de la fenêtre de la barre d'outils
scrolled_zone = sfg::ScrolledWindow::Create(); scrolled_zone = sfg::ScrolledWindow::Create();
toolbar_window = sfg::Window::Create(sfg::Window::Style::BACKGROUND);
scrolled_zone->SetScrollbarPolicy( scrolled_zone->SetScrollbarPolicy(
sfg::ScrolledWindow::ScrollbarPolicy::VERTICAL_AUTOMATIC | sfg::ScrolledWindow::ScrollbarPolicy::VERTICAL_AUTOMATIC |
sfg::ScrolledWindow::ScrollbarPolicy::HORIZONTAL_NEVER sfg::ScrolledWindow::ScrollbarPolicy::HORIZONTAL_NEVER
); );
scrolled_zone->AddWithViewport(toolbar_box); scrolled_zone->AddWithViewport(toolbar_box);
toolbar_window = sfg::Window::Create(sfg::Window::Style::BACKGROUND);
toolbar_window->Add(scrolled_zone); toolbar_window->Add(scrolled_zone);
toolbar_window->SetPosition(sf::Vector2f(0, 0));
} }
void Toolbar::addCreator(sf::String label, std::function<Object::Ptr()> creator) { void Toolbar::addCreator(sf::String label, std::function<Object::Ptr()> creator) {
@ -122,3 +124,7 @@ Object::Ptr Toolbar::createObject() {
sfg::Window::Ptr Toolbar::getWindow() { sfg::Window::Ptr Toolbar::getWindow() {
return toolbar_window; return toolbar_window;
} }
float Toolbar::getWidth() {
return scrolled_zone->GetRequisition().x;
}