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

View File

@ -7,7 +7,7 @@
#include <functional> #include <functional>
#include "../objects/object.hpp" #include "../objects/object.hpp"
#include "../utility.hpp" #include "../utility.hpp"
#include "object_button.hpp" #include "icon_radio_button.hpp"
/** /**
* Barre d'outils qui affiche une liste d'objets à choisir * Barre d'outils qui affiche une liste d'objets à choisir
@ -21,7 +21,7 @@ private:
// types d'objets de la barre d'outils // types d'objets de la barre d'outils
sfg::RadioButtonGroup::Ptr creators_group; sfg::RadioButtonGroup::Ptr creators_group;
sfg::Table::Ptr creators_table; 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; int creators_table_pos_x, creators_table_pos_y;

View File

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

View File

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

View File

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