#ifndef ABSTRACT_GUI_MANAGER_H #define ABSTRACT_GUI_MANAGER_H #include #include namespace vb01{ class Node; class Text; } namespace vb01Gui{ class Button; class Listbox; class Checkbox; class Slider; class Textbox; class AbstractGuiManager{ public: void update(); std::vector findClickedButtons(); void updateGui(); void addButton(Button *b){buttons.push_back(b);} Button* getButton(std::string); void removeButton(Button*); void removeButton(std::string); void addListbox(Listbox*); void removeListbox(Listbox*); void addCheckbox(Checkbox*); void removeCheckbox(Checkbox*); void addTextbox(Textbox*); void removeTextbox(Textbox*); void addSlider(Slider*); void addGuiRectangle(vb01::Node *r){guiRectangles.push_back(r);} void removeGuiRectangle(vb01::Node*); void addText(vb01::Text *t){texts.push_back(t);} void removeText(vb01::Text*); vb01::Text* getText(std::string); vb01::Node* getGuiRectangle(std::string); void removeSlider(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 removeAllGuiRectangles(std::vector = std::vector{}); void removeAllTexts(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{}, std::vector = std::vector{}, std::vector = std::vector{} ); inline std::vector getButtons(){return buttons;} inline std::vector getListboxes(){return listboxes;} inline std::vector getCheckboxes(){return checkboxes;} inline std::vector getSliders(){return sliders;} inline std::vector getTextboxes(){return textboxes;} inline std::vector getGuiRectangles(){return guiRectangles;} inline std::vector getTexts(){return texts;} private: void updateCurrentListbox(Button*, bool&); void updateCurrentSlider(Button*); void updateCurrentTextbox(Button*, bool&); std::vector buttons; std::vector listboxes; std::vector checkboxes; std::vector sliders; std::vector textboxes; std::vector guiRectangles; std::vector texts; Slider *currentSlider = nullptr; Textbox *currentTextbox = nullptr; Listbox *currentListbox = nullptr; protected: AbstractGuiManager(){} }; } #endif