/Tools/nib2cib/NSSegmentedControl.j

http://github.com/cacaodev/cappuccino · Unknown · 159 lines · 121 code · 38 blank · 0 comment · 0 complexity · 23d68ec901a823d99d8a4a54cd0ad86e MD5 · raw file

  1. /*
  2. * NSSegmentedControl.j
  3. * nib2cib
  4. *
  5. * Created by Thomas Robinson.
  6. * Copyright 2008, 280 North, Inc.
  7. *
  8. * This library is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU Lesser General Public
  10. * License as published by the Free Software Foundation; either
  11. * version 2.1 of the License, or (at your option) any later version.
  12. *
  13. * This library is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Lesser General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with this library; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21. */
  22. @import <AppKit/CPSegmentedControl.j>
  23. @import "NSCell.j"
  24. @class Nib2Cib
  25. @implementation CPSegmentedControl (CPCoding)
  26. - (id)NS_initWithCoder:(CPCoder)aCoder
  27. {
  28. _segments = [];
  29. _themeStates = [];
  30. return [super NS_initWithCoder:aCoder];
  31. }
  32. - (void)NS_initWithCell:(NSCell)cell
  33. {
  34. [super NS_initWithCell:cell];
  35. _segments = [cell segments];
  36. _selectedSegment = [cell selectedSegment];
  37. _segmentStyle = [cell segmentStyle];
  38. _trackingMode = [cell trackingMode];
  39. [self setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"];
  40. // HACK
  41. for (var i = 0; i < _segments.length; i++)
  42. {
  43. _themeStates[i] = _segments[i].selected ? CPThemeStateSelected : CPThemeStateNormal;
  44. [self tileWithChangedSegment:i];
  45. }
  46. [self setEnabled:[cell isEnabled]];
  47. }
  48. @end
  49. @implementation NSSegmentedControl : CPSegmentedControl
  50. {
  51. }
  52. - (id)initWithCoder:(CPCoder)aCoder
  53. {
  54. self = [self NS_initWithCoder:aCoder];
  55. if (self)
  56. {
  57. var cell = [aCoder decodeObjectForKey:@"NSCell"];
  58. [self NS_initWithCell:cell];
  59. [self _adjustNib2CibSize];
  60. }
  61. return self;
  62. }
  63. - (Class)classForKeyedArchiver
  64. {
  65. return [CPSegmentedControl class];
  66. }
  67. @end
  68. @implementation NSSegmentedCell : NSActionCell
  69. {
  70. CPArray _segments @accessors(readonly, getter=segments);
  71. int _selectedSegment @accessors(readonly, getter=selectedSegment);
  72. int _segmentStyle @accessors(readonly, getter=segmentStyle);
  73. CPSegmentSwitchTracking _trackingMode @accessors(readonly, getter=trackingMode);
  74. }
  75. - (id)initWithCoder:(CPCoder)aCoder
  76. {
  77. if (self = [super initWithCoder:aCoder])
  78. {
  79. _segments = [aCoder decodeObjectForKey:"NSSegmentImages"];
  80. _selectedSegment = [aCoder decodeObjectForKey:"NSSelectedSegment"];
  81. if (_selectedSegment === nil)
  82. _selectedSegment = -1;
  83. _segmentStyle = [aCoder decodeIntForKey:"NSSegmentStyle"];
  84. _trackingMode = [aCoder decodeIntForKey:"NSTrackingMode"];
  85. if (_trackingMode == CPSegmentSwitchTrackingSelectOne && _selectedSegment == -1)
  86. _selectedSegment = 0;
  87. }
  88. return self;
  89. }
  90. @end
  91. @implementation _CPSegmentItem (CPCoding)
  92. - (id)NS_initWithCoder:(CPCoder)aCoder
  93. {
  94. if (self = [super init])
  95. {
  96. image = [aCoder decodeObjectForKey:"NSSegmentItemImage"];
  97. label = [aCoder decodeObjectForKey:"NSSegmentItemLabel"];
  98. menu = [aCoder decodeObjectForKey:"NSSegmentItemMenu"];
  99. selected = [aCoder decodeBoolForKey:"NSSegmentItemSelected"];
  100. enabled = ![aCoder decodeBoolForKey:"NSSegmentItemDisabled"];
  101. tag = [aCoder decodeIntForKey:"NSSegmentItemTag"];
  102. width = [aCoder decodeIntForKey:"NSSegmentItemWidth"];
  103. frame = CGRectMakeZero();
  104. // NSSegmentItemImageScaling
  105. // NSSegmentItemTooltip
  106. }
  107. return self;
  108. }
  109. @end
  110. @implementation NSSegmentItem : _CPSegmentItem
  111. {
  112. }
  113. - (id)initWithCoder:(CPCoder)aCoder
  114. {
  115. return [self NS_initWithCoder:aCoder];
  116. }
  117. - (Class)classForKeyedArchiver
  118. {
  119. return [_CPSegmentItem class];
  120. }
  121. @end