Correction problème bouton d'objets
This commit is contained in:
parent
bc8baf0b82
commit
8684953938
|
@ -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
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue