|
|
@@ -5,67 +5,226 @@
|
|
|
|
|
|
namespace BansheeEngine
|
|
|
{
|
|
|
+ /**
|
|
|
+ * @brief GUI object that displays a field in which a Resource can be dragged and dropped.
|
|
|
+ * The field accepts a Resource of a specific type and displays an optional label.
|
|
|
+ */
|
|
|
class BS_SCR_BED_EXPORT GUIResourceField : public GUIElementContainer
|
|
|
{
|
|
|
struct PrivatelyConstruct {};
|
|
|
|
|
|
public:
|
|
|
+ /**
|
|
|
+ * Returns type name of the GUI element used for finding GUI element styles.
|
|
|
+ */
|
|
|
static const String& getGUITypeName();
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelContent Content to display in the editor field label.
|
|
|
+ * @param labelWidth Width of the label in pixels.
|
|
|
+ * @param options Options that allow you to control how is the element positioned and sized.
|
|
|
+ * This will override any similar options set by style.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const GUIContent& labelContent, UINT32 labelWidth, const GUIOptions& options,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelContent Content to display in the editor field label.
|
|
|
+ * @param options Options that allow you to control how is the element positioned and sized.
|
|
|
+ * This will override any similar options set by style.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const GUIContent& labelContent, const GUIOptions& options,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelText Text to display in the editor field label.
|
|
|
+ * @param labelWidth Width of the label in pixels.
|
|
|
+ * @param options Options that allow you to control how is the element positioned and sized.
|
|
|
+ * This will override any similar options set by style.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const HString& labelText, UINT32 labelWidth, const GUIOptions& options,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelText Text to display in the editor field label.
|
|
|
+ * @param options Options that allow you to control how is the element positioned and sized.
|
|
|
+ * This will override any similar options set by style.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const HString& labelText, const GUIOptions& options,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field without a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param options Options that allow you to control how is the element positioned and sized.
|
|
|
+ * This will override any similar options set by style.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const GUIOptions& options, const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelContent Content to display in the editor field label.
|
|
|
+ * @param labelWidth Width of the label in pixels.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const GUIContent& labelContent, UINT32 labelWidth,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelContent Content to display in the editor field label.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const GUIContent& labelContent,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelText Text to display in the editor field label.
|
|
|
+ * @param labelWidth Width of the label in pixels.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const HString& labelText, UINT32 labelWidth,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field with a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param labelText Text to display in the editor field label.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const HString& labelText,
|
|
|
const String& style = StringUtil::BLANK);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Creates a new resource GUI editor field without a label.
|
|
|
+ *
|
|
|
+ * @param typeNamespace Namespace of the type this field accepts.
|
|
|
+ * @param type Type name of the type this field accepts. Must derive from Resource.
|
|
|
+ * @param style Optional style to use for the element. Style will be retrieved
|
|
|
+ * from GUISkin of the GUIWidget the element is used on. If not specified
|
|
|
+ * default style is used.
|
|
|
+ */
|
|
|
static GUIResourceField* create(const String& typeNamespace, const String& type, const String& style = StringUtil::BLANK);
|
|
|
|
|
|
GUIResourceField(const PrivatelyConstruct& dummy, const String& typeNamespace, const String& type, const GUIContent& labelContent,
|
|
|
UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Returns the resource referenced by the field, if any.
|
|
|
+ */
|
|
|
HResource getValue() const;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @brief Sets the resource referenced by the field.
|
|
|
+ */
|
|
|
void setValue(const HResource& value);
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Returns the resource referenced by the field. Returns
|
|
|
+ * empty string with no resource is referenced.
|
|
|
+ */
|
|
|
String getUUID() const { return mUUID; }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @brief Sets the resource referenced by the field by finding
|
|
|
+ * the resource with the provided UUID.
|
|
|
+ */
|
|
|
void setUUID(const String& uuid);
|
|
|
|
|
|
/**
|
|
|
* @copydoc GUIElement::setTint
|
|
|
*/
|
|
|
- virtual void setTint(const Color& color);
|
|
|
+ virtual void setTint(const Color& color) override;
|
|
|
|
|
|
- void _updateLayoutInternal(const GUILayoutData& data);
|
|
|
+ /**
|
|
|
+ * @copydoc GUIElement::_updateLayoutInternal
|
|
|
+ */
|
|
|
+ void _updateLayoutInternal(const GUILayoutData& data) override;
|
|
|
|
|
|
- Vector2I _getOptimalSize() const;
|
|
|
+ /**
|
|
|
+ * @copydoc GUIElement::_getOptimalSize
|
|
|
+ */
|
|
|
+ Vector2I _getOptimalSize() const override;
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Triggered whenever the referenced resource changes. Provides
|
|
|
+ * the UUID of the resource, or empty string if no resource is referenced.
|
|
|
+ */
|
|
|
Event<void(const String&)> onValueChanged;
|
|
|
private:
|
|
|
virtual ~GUIResourceField();
|
|
|
|
|
|
- void styleUpdated();
|
|
|
+ /**
|
|
|
+ * @copydoc GUIElement::styleUpdated
|
|
|
+ */
|
|
|
+ void styleUpdated() override;
|
|
|
|
|
|
+ /**
|
|
|
+ * @brief Triggered when a drag and drop operation finishes over this element.
|
|
|
+ */
|
|
|
void dataDropped(void* data);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @brief Triggered when the drop button that displays the game object label is clicked.
|
|
|
+ */
|
|
|
void onDropButtonClicked();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @brief Triggered when the clear button is clicked.
|
|
|
+ */
|
|
|
void onClearButtonClicked();
|
|
|
|
|
|
private:
|