vertical-slider.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #if defined(Hiro_VerticalSlider)
  2. @implementation CocoaVerticalSlider : NSSlider
  3. -(id) initWith:(hiro::mVerticalSlider&)verticalSliderReference {
  4. if(self = [super initWithFrame:NSMakeRect(0, 0, 0, 1)]) {
  5. verticalSlider = &verticalSliderReference;
  6. [self setTarget:self];
  7. [self setAction:@selector(activate:)];
  8. [self setMinValue:0];
  9. }
  10. return self;
  11. }
  12. -(IBAction) activate:(id)sender {
  13. verticalSlider->state.position = [self doubleValue];
  14. verticalSlider->doChange();
  15. }
  16. @end
  17. namespace hiro {
  18. auto pVerticalSlider::construct() -> void {
  19. @autoreleasepool {
  20. cocoaView = cocoaVerticalSlider = [[CocoaVerticalSlider alloc] initWith:self()];
  21. pWidget::construct();
  22. setLength(state().length);
  23. setPosition(state().position);
  24. }
  25. }
  26. auto pVerticalSlider::destruct() -> void {
  27. @autoreleasepool {
  28. [cocoaView removeFromSuperview];
  29. [cocoaView release];
  30. }
  31. }
  32. auto pVerticalSlider::minimumSize() const -> Size {
  33. return {20, 48};
  34. }
  35. auto pVerticalSlider::setGeometry(Geometry geometry) -> void {
  36. pWidget::setGeometry({
  37. geometry.x(), geometry.y() - 2,
  38. geometry.width(), geometry.height() + 4
  39. });
  40. }
  41. auto pVerticalSlider::setLength(uint length) -> void {
  42. @autoreleasepool {
  43. [cocoaView setMaxValue:length];
  44. }
  45. }
  46. auto pVerticalSlider::setPosition(uint position) -> void {
  47. @autoreleasepool {
  48. [cocoaView setDoubleValue:position];
  49. }
  50. }
  51. }
  52. #endif