shared.hpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. #if defined(Hiro_FixedLayout)
  2. struct FixedLayoutCell : sFixedLayoutCell {
  3. DeclareSharedObject(FixedLayoutCell)
  4. auto geometry() const { return self().geometry(); }
  5. auto setGeometry(Geometry geometry) { return self().setGeometry(geometry), *this; }
  6. auto setSizable(sSizable sizable) { return self().setSizable(sizable), *this; }
  7. auto sizable() const { return self().sizable(); }
  8. };
  9. struct FixedLayout : sFixedLayout {
  10. DeclareSharedSizable(FixedLayout)
  11. auto append(sSizable sizable, Geometry geometry) { return self().append(sizable, geometry), *this; }
  12. auto cell(uint position) const { return self().cell(position); }
  13. auto cell(sSizable sizable) const { return self().cell(sizable); }
  14. auto cells() const { return self().cells(); }
  15. auto cellCount() const { return self().cellCount(); }
  16. auto remove(sSizable sizable) { return self().remove(sizable), *this; }
  17. auto remove(sFixedLayoutCell cell) { return self().remove(cell), *this; }
  18. auto reset() { return self().reset(), *this; }
  19. auto resize() { return self().resize(), *this; }
  20. };
  21. #endif
  22. #if defined(Hiro_HorizontalLayout)
  23. struct HorizontalLayoutCell : sHorizontalLayoutCell {
  24. DeclareSharedObject(HorizontalLayoutCell)
  25. auto alignment() const { return self().alignment(); }
  26. auto collapsible() const { return self().collapsible(); }
  27. auto setAlignment(maybe<float> alignment = {}) { return self().setAlignment(alignment), *this; }
  28. auto setSizable(sSizable sizable) { return self().setSizable(sizable), *this; }
  29. auto setSize(Size size) { return self().setSize(size), *this; }
  30. auto setSpacing(float spacing = 5_sx) { return self().setSpacing(spacing), *this; }
  31. auto sizable() const { return self().sizable(); }
  32. auto size() const { return self().size(); }
  33. auto spacing() const { return self().spacing(); }
  34. };
  35. struct HorizontalLayout : sHorizontalLayout {
  36. DeclareSharedSizable(HorizontalLayout)
  37. auto alignment() const { return self().alignment(); }
  38. auto append(sSizable sizable, Size size, float spacing = 5_sx) { return self().append(sizable, size, spacing), *this; }
  39. auto cell(uint position) const { return self().cell(position); }
  40. auto cell(sSizable sizable) const { return self().cell(sizable); }
  41. auto cells() const { return self().cells(); }
  42. auto cellCount() const { return self().cellCount(); }
  43. auto remove(sSizable sizable) { return self().remove(sizable), *this; }
  44. auto remove(sHorizontalLayoutCell cell) { return self().remove(cell), *this; }
  45. auto reset() { return self().reset(), *this; }
  46. auto resize() { return self().resize(), *this; }
  47. auto setAlignment(maybe<float> alignment = {}) { return self().setAlignment(alignment), *this; }
  48. auto setPadding(float padding) { return self().setPadding({padding, padding, padding, padding}), *this; }
  49. auto setPadding(float x, float y) { return self().setPadding({x, y, x, y}), *this; }
  50. auto setPadding(Geometry padding = {}) { return self().setPadding(padding), *this; }
  51. auto setSpacing(float spacing = 5_sx) { return self().setSpacing(spacing), *this; }
  52. };
  53. #endif
  54. #if defined(Hiro_VerticalLayout)
  55. struct VerticalLayoutCell : sVerticalLayoutCell {
  56. DeclareSharedObject(VerticalLayoutCell)
  57. auto alignment() const { return self().alignment(); }
  58. auto collapsible() const { return self().collapsible(); }
  59. auto setAlignment(maybe<float> alignment = {}) { return self().setAlignment(alignment), *this; }
  60. auto setSizable(sSizable sizable) { return self().setSizable(sizable), *this; }
  61. auto setSize(Size size) { return self().setSize(size), *this; }
  62. auto setSpacing(float spacing = 5_sy) { return self().setSpacing(spacing), *this; }
  63. auto sizable() const { return self().sizable(); }
  64. auto size() const { return self().size(); }
  65. auto spacing() const { return self().spacing(); }
  66. };
  67. struct VerticalLayout : sVerticalLayout {
  68. DeclareSharedSizable(VerticalLayout)
  69. auto alignment() const { return self().alignment(); }
  70. auto append(sSizable sizable, Size size, float spacing = 5_sy) { return self().append(sizable, size, spacing), *this; }
  71. auto cell(uint position) const { return self().cell(position); }
  72. auto cell(sSizable sizable) const { return self().cell(sizable); }
  73. auto cells() const { return self().cells(); }
  74. auto cellCount() const { return self().cellCount(); }
  75. auto remove(sSizable sizable) { return self().remove(sizable), *this; }
  76. auto remove(sVerticalLayoutCell cell) { return self().remove(cell), *this; }
  77. auto reset() { return self().reset(), *this; }
  78. auto resize() { return self().resize(), *this; }
  79. auto setAlignment(maybe<float> alignment = {}) { return self().setAlignment(alignment), *this; }
  80. auto setPadding(float padding) { return self().setPadding({padding, padding, padding, padding}), *this; }
  81. auto setPadding(float x, float y) { return self().setPadding({x, y, x, y}), *this; }
  82. auto setPadding(Geometry padding = {}) { return self().setPadding(padding), *this; }
  83. auto setSpacing(float spacing = 5_sy) { return self().setSpacing(spacing), *this; }
  84. };
  85. #endif
  86. #if defined(Hiro_TableLayout)
  87. struct TableLayoutCell : sTableLayoutCell {
  88. DeclareSharedObject(TableLayoutCell)
  89. auto alignment() const { return self().alignment(); }
  90. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  91. auto setSizable(sSizable sizable) { return self().setSizable(sizable), *this; }
  92. auto setSize(Size size) { return self().setSize(size), *this; }
  93. auto sizable() const { return self().sizable(); }
  94. auto size() const { return self().size(); }
  95. };
  96. struct TableLayoutColumn : sTableLayoutColumn {
  97. DeclareSharedObject(TableLayoutColumn)
  98. auto alignment() const { return self().alignment(); }
  99. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  100. auto setSpacing(float spacing = 5_sx) { return self().setSpacing(spacing), *this; }
  101. auto spacing() const { return self().spacing(); }
  102. };
  103. struct TableLayoutRow : sTableLayoutRow {
  104. DeclareSharedObject(TableLayoutRow)
  105. auto alignment() const { return self().alignment(); }
  106. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  107. auto setSpacing(float spacing = 5_sy) { return self().setSpacing(spacing), *this; }
  108. auto spacing() const { return self().spacing(); }
  109. };
  110. struct TableLayout : sTableLayout {
  111. DeclareSharedSizable(TableLayout)
  112. auto alignment() const { return self().alignment(); }
  113. auto append(sSizable sizable, Size size) { return self().append(sizable, size), *this; }
  114. auto cell(uint position) const { return self().cell(position); }
  115. auto cell(uint x, uint y) const { return self().cell(x, y); }
  116. auto cell(sSizable sizable) const { return self().cell(sizable); }
  117. auto cells() const { return self().cells(); }
  118. auto cellCount() const { return self().cellCount(); }
  119. auto column(uint position) const { return self().column(position); }
  120. auto columns() const { return self().columns(); }
  121. auto columnCount() const { return self().columnCount(); }
  122. auto padding() const { return self().padding(); }
  123. auto remove(sSizable sizable) { return self().remove(sizable), *this; }
  124. auto remove(sTableLayoutCell cell) { return self().remove(cell), *this; }
  125. auto reset() { return self().reset(), *this; }
  126. auto resize() { return self().resize(), *this; }
  127. auto row(uint position) const { return self().row(position); }
  128. auto rows() const { return self().rows(); }
  129. auto rowCount() const { return self().rowCount(); }
  130. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  131. auto setPadding(float padding) { return self().setPadding({padding, padding, padding, padding}), *this; }
  132. auto setPadding(float x, float y) { return self().setPadding({x, y, x, y}), *this; }
  133. auto setPadding(Geometry padding = {}) { return self().setPadding(padding), *this; }
  134. auto setSize(Size size) { return self().setSize(size), *this; }
  135. auto size() const { return self().size(); }
  136. };
  137. #endif
  138. #if defined(Hiro_HorizontalResizeGrip)
  139. struct HorizontalResizeGrip : sHorizontalResizeGrip {
  140. DeclareSharedWidget(HorizontalResizeGrip)
  141. auto doActivate() const { return self().doActivate(); }
  142. auto doResize(int offset) const { return self().doResize(offset); }
  143. auto onActivate(const function<void ()>& callback) { return self().onActivate(callback), *this; }
  144. auto onResize(const function<void (int)>& callback) { return self().onResize(callback), *this; }
  145. };
  146. #endif
  147. #if defined(Hiro_VerticalResizeGrip)
  148. struct VerticalResizeGrip : sVerticalResizeGrip {
  149. DeclareSharedWidget(VerticalResizeGrip)
  150. auto doActivate() const { return self().doActivate(); }
  151. auto doResize(int offset) const { return self().doResize(offset); }
  152. auto onActivate(const function<void ()>& callback) { return self().onActivate(callback), *this; }
  153. auto onResize(const function<void (int)>& callback) { return self().onResize(callback), *this; }
  154. };
  155. #endif
  156. #if defined(Hiro_ListView)
  157. struct ListViewItem : sListViewItem {
  158. DeclareSharedObject(ListViewItem)
  159. auto alignment() const { return self().alignment(); }
  160. auto backgroundColor() const { return self().backgroundColor(); }
  161. auto checkable() const { return self().checkable(); }
  162. auto checked() const { return self().checked(); }
  163. auto foregroundColor() const { return self().foregroundColor(); }
  164. auto icon() const { return self().icon(); }
  165. auto reset() { return self().reset(), *this; }
  166. auto selected() const { return self().selected(); }
  167. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  168. auto setBackgroundColor(Color color = {}) { return self().setBackgroundColor(color), *this; }
  169. auto setCheckable(bool checkable = true) { return self().setCheckable(checkable), *this; }
  170. auto setChecked(bool checked = true) { return self().setChecked(checked), *this; }
  171. auto setForegroundColor(Color color = {}) { return self().setForegroundColor(color), *this; }
  172. auto setIcon(const image& icon = {}) { return self().setIcon(icon), *this; }
  173. auto setSelected(bool selected = true) { return self().setSelected(selected), *this; }
  174. auto setText(const string& text = "") { return self().setText(text), *this; }
  175. auto text() const { return self().text(); }
  176. };
  177. struct ListView : sListView {
  178. DeclareSharedWidget(ListView)
  179. auto alignment() const { return self().alignment(); }
  180. auto append(sListViewItem item) { return self().append(item), *this; }
  181. auto backgroundColor() const { return self().backgroundColor(); }
  182. auto batchable() const { return self().batchable(); }
  183. auto batched() const { return self().batched(); }
  184. auto doActivate() const { return self().doActivate(); }
  185. auto doChange() const { return self().doChange(); }
  186. auto doContext() const { return self().doContext(); }
  187. auto doToggle(ListViewItem item) const { return self().doToggle(item); }
  188. auto foregroundColor() const { return self().foregroundColor(); }
  189. auto item(uint position) const { return self().item(position); }
  190. auto itemCount() const { return self().itemCount(); }
  191. auto items() const { return self().items(); }
  192. auto onActivate(const function<void ()>& callback = {}) { return self().onActivate(callback), *this; }
  193. auto onChange(const function<void ()>& callback = {}) { return self().onChange(callback), *this; }
  194. auto onContext(const function<void ()>& callback = {}) { return self().onContext(callback), *this; }
  195. auto onToggle(const function<void (ListViewItem)>& callback = {}) { return self().onToggle(callback), *this; }
  196. auto remove(sListViewItem item) { return self().remove(item), *this; }
  197. auto reset() { return self().reset(), *this; }
  198. auto resizeColumn() { return self().resizeColumn(), *this; }
  199. auto selectNone() { return self().selectNone(), *this; }
  200. auto selected() { return self().selected(); }
  201. auto setAlignment(Alignment alignment = {}) { return self().setAlignment(alignment), *this; }
  202. auto setBackgroundColor(Color color = {}) { return self().setBackgroundColor(color), *this; }
  203. auto setBatchable(bool batchable = true) { return self().setBatchable(batchable), *this; }
  204. auto setForegroundColor(Color color = {}) { return self().setForegroundColor(color), *this; }
  205. };
  206. #endif