Correction problème bouton d'objets

This commit is contained in:
Mattéo Delabre 2016-04-29 02:45:32 +02:00
parent bc8baf0b82
commit 8684953938
5 changed files with 28 additions and 27 deletions

View File

@ -1,5 +1,5 @@
#ifndef __SKIZZLE_OBJECT_BUTTON_HPP__
#define __SKIZZLE_OBJECT_BUTTON_HPP__
#ifndef __SKIZZLE_ICON_RADIO_BUTTON_HPP__
#define __SKIZZLE_ICON_RADIO_BUTTON_HPP__
#include <SFGUI/Image.hpp>
#include <SFGUI/RadioButton.hpp>
@ -16,10 +16,10 @@
* (note: cette classe suit les conventions de nommage de SFGUI, pas
* celles de Skizzle, pour plus de cohérence)
*/
class ObjectButton : public sfg::RadioButton {
class IconRadioButton : public sfg::RadioButton {
public:
typedef std::shared_ptr<ObjectButton> Ptr;
typedef std::shared_ptr<const ObjectButton> PtrConst;
typedef std::shared_ptr<IconRadioButton> Ptr;
typedef std::shared_ptr<const IconRadioButton> PtrConst;
/**
* Crée un nouveau bouton d'objet. La convention pour les widgets
@ -42,7 +42,7 @@ protected:
* On utilise le constructeur par défaut, mais on est obligés de le
* déclarer explicitement pour qu'il soit protégé
*/
ObjectButton() = default;
IconRadioButton() = default;
/**
* Recalcule la géométrie du widget

View File

@ -7,7 +7,7 @@
#include <functional>
#include "../objects/object.hpp"
#include "../utility.hpp"
#include "object_button.hpp"
#include "icon_radio_button.hpp"
/**
* Barre d'outils qui affiche une liste d'objets à choisir
@ -21,7 +21,7 @@ private:
// types d'objets de la barre d'outils
sfg::RadioButtonGroup::Ptr creators_group;
sfg::Table::Ptr creators_table;
std::map<ObjectButton::Ptr, std::function<Object::Ptr()>> creators;
std::map<IconRadioButton::Ptr, std::function<Object::Ptr()>> creators;
int creators_table_pos_x, creators_table_pos_y;

View File

@ -60,7 +60,8 @@ Button.icon {
BackgroundColor: #00000000;
}
Entry {
Entry, IconRadioButton {
BorderWidth: 0;
BackgroundColor: #D2D2D2ff;
}
@ -69,12 +70,7 @@ ComboBox {
HighlightedColor: #B4B4B4ff;
}
ObjectButton {
BorderColor: #B4B4B4ff;
BackgroundColor: #D2D2D2ff;
}
ObjectButton:PRELIGHT {
IconRadioButton:PRELIGHT {
BackgroundColor: #E6E6E6ff;
}

View File

@ -3,13 +3,13 @@
#include <SFGUI/Renderer.hpp>
#include <SFGUI/RenderQueue.hpp>
#include <cmath>
#include "gui/object_button.hpp"
#include "gui/icon_radio_button.hpp"
ObjectButton::Ptr ObjectButton::Create(
IconRadioButton::Ptr IconRadioButton::Create(
sfg::Image::Ptr image,
std::shared_ptr<sfg::RadioButtonGroup> group
) {
auto ptr = Ptr(new ObjectButton);
auto ptr = Ptr(new IconRadioButton);
ptr->SetImage(image);
ptr->SetLabel(L"");
@ -24,12 +24,12 @@ ObjectButton::Ptr ObjectButton::Create(
return ptr;
}
const std::string& ObjectButton::GetName() const {
static const std::string name = "ObjectButton";
const std::string& IconRadioButton::GetName() const {
static const std::string name = "IconRadioButton";
return name;
}
sf::Vector2f ObjectButton::CalculateRequisition() {
sf::Vector2f IconRadioButton::CalculateRequisition() {
float padding = sfg::Context::Get().GetEngine().GetProperty<float>(
"Padding", shared_from_this()
);
@ -44,9 +44,13 @@ sf::Vector2f ObjectButton::CalculateRequisition() {
return child_req;
}
std::unique_ptr<sfg::RenderQueue> ObjectButton::InvalidateImpl() const {
std::unique_ptr<sfg::RenderQueue> IconRadioButton::InvalidateImpl() const {
auto queue = std::unique_ptr<sfg::RenderQueue>(new sfg::RenderQueue);
auto border_width = sfg::Context::Get().GetEngine().GetProperty<float>(
"BorderWidth", shared_from_this()
);
auto border_color = sfg::Context::Get().GetEngine().GetProperty<sf::Color>(
"BorderColor", shared_from_this()
);
@ -76,7 +80,7 @@ std::unique_ptr<sfg::RenderQueue> ObjectButton::InvalidateImpl() const {
}
queue->Add(sfg::Renderer::Get().CreatePane(
position, size, 1.f,
position, size, border_width,
background_color, border_color, 0
));
}
@ -98,6 +102,6 @@ std::unique_ptr<sfg::RenderQueue> ObjectButton::InvalidateImpl() const {
return queue;
}
void ObjectButton::HandleStateChange(sfg::Widget::State old_state) {
void IconRadioButton::HandleStateChange(sfg::Widget::State old_state) {
Invalidate();
}

View File

@ -68,9 +68,10 @@ ObjectToolbar::ObjectToolbar() {
void ObjectToolbar::addCreator(std::string path, std::function<Object::Ptr()> creator) {
// on crée un bouton d'objet correspondant au créateur donné
ObjectButton::Ptr button = ObjectButton::Create(sfg::Image::Create(
*ResourceManager::get().getImage(path + ".tga")
));
IconRadioButton::Ptr button = IconRadioButton::Create(
sfg::Image::Create(*ResourceManager::get().getImage(path + ".tga")),
creators_group
);
creators[button] = creator;