widget.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #if defined(Hiro_Widget)
  2. auto mWidget::allocate() -> pObject* {
  3. return new pWidget(*this);
  4. }
  5. //
  6. auto mWidget::doDrop(vector<string> names) const -> void {
  7. if(state.onDrop) return state.onDrop(names);
  8. }
  9. auto mWidget::doMouseEnter() const -> void {
  10. if(state.onMouseEnter) return state.onMouseEnter();
  11. }
  12. auto mWidget::doMouseLeave() const -> void {
  13. if(state.onMouseLeave) return state.onMouseLeave();
  14. }
  15. auto mWidget::doMouseMove(Position position) const -> void {
  16. if(state.onMouseMove) return state.onMouseMove(position);
  17. }
  18. auto mWidget::doMousePress(Mouse::Button button) const -> void {
  19. if(state.onMousePress) return state.onMousePress(button);
  20. }
  21. auto mWidget::doMouseRelease(Mouse::Button button) const -> void {
  22. if(state.onMouseRelease) return state.onMouseRelease(button);
  23. }
  24. auto mWidget::droppable() const -> bool {
  25. return state.droppable;
  26. }
  27. auto mWidget::focusable() const -> bool {
  28. return state.focusable;
  29. }
  30. auto mWidget::mouseCursor() const -> MouseCursor {
  31. return state.mouseCursor;
  32. }
  33. auto mWidget::onDrop(const function<void (vector<string>)>& callback) -> type& {
  34. state.onDrop = callback;
  35. return *this;
  36. }
  37. auto mWidget::onMouseEnter(const function<void ()>& callback) -> type& {
  38. state.onMouseEnter = callback;
  39. return *this;
  40. }
  41. auto mWidget::onMouseLeave(const function<void ()>& callback) -> type& {
  42. state.onMouseLeave = callback;
  43. return *this;
  44. }
  45. auto mWidget::onMouseMove(const function<void (Position)>& callback) -> type& {
  46. state.onMouseMove = callback;
  47. return *this;
  48. }
  49. auto mWidget::onMousePress(const function<void (Mouse::Button)>& callback) -> type& {
  50. state.onMousePress = callback;
  51. return *this;
  52. }
  53. auto mWidget::onMouseRelease(const function<void (Mouse::Button)>& callback) -> type& {
  54. state.onMouseRelease = callback;
  55. return *this;
  56. }
  57. auto mWidget::remove() -> type& {
  58. //TODO: how to implement this after removing mLayout?
  59. //if(auto layout = parentLayout()) layout->remove(layout->sizable(offset()));
  60. setParent();
  61. return *this;
  62. }
  63. auto mWidget::setDroppable(bool droppable) -> type& {
  64. state.droppable = droppable;
  65. signal(setDroppable, droppable);
  66. return *this;
  67. }
  68. auto mWidget::setFocusable(bool focusable) -> type& {
  69. state.focusable = focusable;
  70. signal(setFocusable, focusable);
  71. return *this;
  72. }
  73. auto mWidget::setMouseCursor(const MouseCursor& mouseCursor) -> type& {
  74. state.mouseCursor = mouseCursor;
  75. signal(setMouseCursor, mouseCursor);
  76. return *this;
  77. }
  78. auto mWidget::setToolTip(const string& toolTip) -> type& {
  79. state.toolTip = toolTip;
  80. //TODO: allow this option to dynamically control tool tips
  81. if(!Application::state().toolTips) return *this;
  82. signal(setToolTip, toolTip);
  83. return *this;
  84. }
  85. auto mWidget::toolTip() const -> string {
  86. return state.toolTip;
  87. }
  88. #endif