/*! * @file gui_saveable.h * @brief Definition of ... */ #ifndef _GUI_SAVEABLE_H #define _GUI_SAVEABLE_H #include "base_object.h" #include "multi_type.h" #include // FORWARD DECLARATION namespace OrxGui { //! A class for ... class GuiSaveable { public: virtual ~GuiSaveable(); void makeSaveable(); virtual void load(const MultiType& value) = 0; virtual const MultiType& save() = 0; MultiType& getValue() { return this->value; }; const MultiType& getValue() const { return this->value; }; bool isSaveable() const { return this->bSaveable; }; protected: GuiSaveable(const std::string& optionName); virtual void makingElementSaveable() {}; private: MultiType value; bool bSaveable; }; class GuiSaveableGroup : public GuiSaveable { public: virtual ~GuiSaveableGroup(); void addSaveable(GuiSaveable* saveable); void removeSaveable(GuiSaveable* saveable); protected: GuiSaveableGroup(const std::string& name); virtual void makingElementSaveable(); private: std::vector saveables; static std::vector saveableGroups; }; } #endif /* _GUI_SAVEABLE_H */