tab-frame.hpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #if defined(Hiro_TabFrame)
  2. struct mTabFrame : mWidget {
  3. Declare(TabFrame)
  4. using mObject::remove;
  5. friend class mTabFrameItem;
  6. auto append(sTabFrameItem item) -> type&;
  7. auto doChange() const -> void;
  8. auto doClose(sTabFrameItem item) const -> void;
  9. auto doMove(sTabFrameItem from, sTabFrameItem to) const -> void;
  10. auto item(uint position) const -> TabFrameItem;
  11. auto itemCount() const -> uint;
  12. auto items() const -> vector<TabFrameItem>;
  13. auto navigation() const -> Navigation;
  14. auto onChange(const function<void ()>& callback = {}) -> type&;
  15. auto onClose(const function<void (TabFrameItem)>& callback = {}) -> type&;
  16. auto onMove(const function<void (TabFrameItem, TabFrameItem)>& callback = {}) -> type&;
  17. auto remove(sTabFrameItem item) -> type&;
  18. auto reset() -> type&;
  19. auto selected() const -> TabFrameItem;
  20. auto setEnabled(bool enabled = true) -> type& override;
  21. auto setFont(const Font& font = {}) -> type& override;
  22. auto setNavigation(Navigation navigation = Navigation::Top) -> type&;
  23. auto setParent(mObject* object = nullptr, int offset = -1) -> type& override;
  24. auto setVisible(bool visible = true) -> type& override;
  25. //private:
  26. struct State {
  27. vector<sTabFrameItem> items;
  28. Navigation navigation = Navigation::Top;
  29. function<void ()> onChange;
  30. function<void (TabFrameItem)> onClose;
  31. function<void (TabFrameItem, TabFrameItem)> onMove;
  32. } state;
  33. auto destruct() -> void override;
  34. };
  35. #endif