#ifndef ABSTRACT_GUI_MANAGER_H #define ABSTRACT_GUI_MANAGER_H #include #include namespace vb01Gui{ class Button; class Listbox; class Checkbox; class Slider; class Textbox; class AbstractGuiManager{ public: void update(); void findClickedButton(); void addButton(vb01Gui::Button*); void removeButton(vb01Gui::Button*); void removeButton(std::string); void addListbox(vb01Gui::Listbox*); void removeListbox(vb01Gui::Listbox*); void addCheckbox(vb01Gui::Checkbox*); void removeCheckbox(vb01Gui::Checkbox*); void addTextbox(vb01Gui::Textbox*); void removeTextbox(vb01Gui::Textbox*); void addSlider(vb01Gui::Slider*); void removeSlider(vb01Gui::Slider*); void removeAllButtons(std::vector = std::vector{}); void removeAllListboxes(std::vector = std::vector{}); void removeAllCheckboxes(std::vector = std::vector{}); void removeAllSliders(std::vector = std::vector{}); void removeAllTextboxes(std::vector = std::vector{}); void removeAllGuiElements( std::vector = std::vector{}, std::vector = std::vector{}, std::vector = std::vector{}, std::vector = std::vector{}, std::vector = std::vector{} ); inline std::vector getButtons(){return buttons;} inline std::vector getListboxes(){return listboxes;} inline std::vector getTextboxes(){return textboxes;} private: void updateCurrentListbox(vb01Gui::Button*, bool&); void updateCurrentSlider(vb01Gui::Button*); void updateCurrentTextbox(vb01Gui::Button*, bool&); std::vector buttons; std::vector listboxes; std::vector checkboxes; std::vector sliders; std::vector textboxes; vb01Gui::Slider *currentSlider = nullptr; vb01Gui::Textbox *currentTextbox = nullptr; vb01Gui::Listbox *currentListbox = nullptr; protected: AbstractGuiManager(){} }; } #endif