#ifndef slic3r_GUI_TabCtrl_hpp_ #define slic3r_GUI_TabCtrl_hpp_ #include "Button.hpp" wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGING, wxCommandEvent); wxDECLARE_EVENT(wxEVT_TAB_SEL_CHANGED, wxCommandEvent); class TabCtrl : public StaticBox { std::vector btns; wxImageList* images = nullptr; wxBoxSizer* sizer = nullptr; int sel = -1; wxFont bold; public: TabCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); ~TabCtrl(); public: virtual bool SetFont(wxFont const& font) override; public: int AppendItem(const wxString& item, int image = -1, int selImage = -1, void* clientData = nullptr); int AppendItem(const wxString& item, const wxBitmap& bitmap, void* clientData = nullptr); bool DeleteItem(int item); void DeleteAllItems(); unsigned int GetCount() const; int GetSelection() const; void SelectItem(int item); void Unselect(); virtual void Rescale(); wxString GetItemText(unsigned int item) const; void SetItemText(unsigned int item, wxString const& value); void SetItemBitmap(unsigned int item, const wxBitmap& bitmap); // Show/hide the small "has selection" dot next to a tab's text. void SetItemIndicator(unsigned int item, bool on); bool GetItemBold(unsigned int item) const; void SetItemBold(unsigned int item, bool bold); void* GetItemData(unsigned int item) const; void SetItemData(unsigned int item, void* clientData); void AssignImageList(wxImageList* imageList); void SetItemTextColour(unsigned int item, const StateColor& col); /* fakes */ int GetFirstVisibleItem() const; int GetNextVisible(int item) const; bool IsVisible(unsigned int item) const; int GetFullSize() const; private: virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO) override; #ifdef __WIN32__ WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) override; #endif void relayout(); void buttonClicked(wxCommandEvent& event); void keyDown(wxKeyEvent& event); void doRender(wxDC& dc) override; // some useful events bool sendTabCtrlEvent(bool changing = false); DECLARE_EVENT_TABLE() }; #endif // !slic3r_GUI_TabCtrl_hpp_