#pragma once #include #include "gtkmm/box.h" #include "gtkmm/button.h" #include "gtkmm/overlay.h" class WorkspaceIndicator : public Gtk::Box { public: enum InidicatorState { EMPTY, ALIVE, FOCUSED, PRESENTING, URGENT, }; // meh, Maybe try WorkspaceState struct later WorkspaceIndicator(int id, std::string label, sigc::slot onClick); void setIndicatorState(InidicatorState state); private: void clearCssClass(); InidicatorState currentState = EMPTY; std::shared_ptr overlay; std::map stateToCssClass = { {FOCUSED, "workspace-pill-focused"}, {URGENT, "workspace-pill-urgent"}, {ALIVE, "workspace-pill-alive"}, {PRESENTING, "workspace-pill-presenting"}, {EMPTY, "workspace-pill-empty"}, // Default class }; };