| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #import "SkOptionsTableView.h" | 9 #import "SkOptionsTableView.h" |
| 10 #import "SkTextFieldCell.h" | 10 #import "SkTextFieldCell.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 } | 49 } |
| 50 | 50 |
| 51 - (void)registerMenus:(const SkTDArray<SkOSMenu*>*)menus { | 51 - (void)registerMenus:(const SkTDArray<SkOSMenu*>*)menus { |
| 52 fMenus = menus; | 52 fMenus = menus; |
| 53 for (int i = 0; i < fMenus->count(); ++i) { | 53 for (int i = 0; i < fMenus->count(); ++i) { |
| 54 [self loadMenu:(*fMenus)[i]]; | 54 [self loadMenu:(*fMenus)[i]]; |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 - (void)updateMenu:(const SkOSMenu*)menu { | 58 - (void)updateMenu:(const SkOSMenu*)menu { |
| 59 // the first menu is always assumed to be the static, the second is | 59 // the first menu is always assumed to be the static, the second is |
| 60 // repopulated every time over and over again | 60 // repopulated every time over and over again |
| 61 | 61 |
| 62 // seems pretty weird that we have to get rid of the const'ness here, | 62 // seems pretty weird that we have to get rid of the const'ness here, |
| 63 // but trying to propagate the const'ness through all the way to the fMenus | 63 // but trying to propagate the const'ness through all the way to the fMenus |
| 64 // vector was a non-starter. | 64 // vector was a non-starter. |
| 65 | 65 |
| 66 int menuIndex = fMenus->find(const_cast<SkOSMenu *>(menu)); | 66 int menuIndex = fMenus->find(const_cast<SkOSMenu *>(menu)); |
| 67 if (menuIndex >= 0 && menuIndex < fMenus->count()) { | 67 if (menuIndex >= 0 && menuIndex < fMenus->count()) { |
| 68 NSUInteger first = 0; | 68 NSUInteger first = 0; |
| 69 for (NSInteger i = 0; i < menuIndex; ++i) { | 69 for (NSInteger i = 0; i < menuIndex; ++i) { |
| 70 first += (*fMenus)[i]->getCount(); | 70 first += (*fMenus)[i]->getCount(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 84 return NSMixedState; | 84 return NSMixedState; |
| 85 } | 85 } |
| 86 | 86 |
| 87 - (void)loadMenu:(const SkOSMenu*)menu { | 87 - (void)loadMenu:(const SkOSMenu*)menu { |
| 88 const SkOSMenu::Item* menuitems[menu->getCount()]; | 88 const SkOSMenu::Item* menuitems[menu->getCount()]; |
| 89 menu->getItems(menuitems); | 89 menu->getItems(menuitems); |
| 90 for (int i = 0; i < menu->getCount(); ++i) { | 90 for (int i = 0; i < menu->getCount(); ++i) { |
| 91 const SkOSMenu::Item* item = menuitems[i]; | 91 const SkOSMenu::Item* item = menuitems[i]; |
| 92 SkOptionItem* option = [[SkOptionItem alloc] init]; | 92 SkOptionItem* option = [[SkOptionItem alloc] init]; |
| 93 option.fItem = item; | 93 option.fItem = item; |
| 94 | 94 |
| 95 if (SkOSMenu::kList_Type == item->getType()) { | 95 if (SkOSMenu::kList_Type == item->getType()) { |
| 96 int index = 0, count = 0; | 96 int index = 0, count = 0; |
| 97 SkOSMenu::FindListItemCount(*item->getEvent(), &count); | 97 SkOSMenu::FindListItemCount(*item->getEvent(), &count); |
| 98 NSMutableArray* optionstrs = [[NSMutableArray alloc] initWithCapacit
y:count]; | 98 NSMutableArray* optionstrs = [[NSMutableArray alloc] initWithCapacit
y:count]; |
| 99 SkAutoTDeleteArray<SkString> ada(new SkString[count]); | 99 SkAutoTDeleteArray<SkString> ada(new SkString[count]); |
| 100 SkString* options = ada.get(); | 100 SkString* options = ada.get(); |
| 101 SkOSMenu::FindListItems(*item->getEvent(), options); | 101 SkOSMenu::FindListItems(*item->getEvent(), options); |
| 102 for (int i = 0; i < count; ++i) | 102 for (int i = 0; i < count; ++i) |
| 103 [optionstrs addObject:[NSString stringWithUTF8String:options[i].
c_str()]]; | 103 [optionstrs addObject:[NSString stringWithUTF8String:options[i].
c_str()]]; |
| 104 SkOSMenu::FindListIndex(*item->getEvent(), item->getSlotName(), &ind
ex); | 104 SkOSMenu::FindListIndex(*item->getEvent(), item->getSlotName(), &ind
ex); |
| 105 option.fCell = [self createList:optionstrs current:index]; | 105 option.fCell = [self createList:optionstrs current:index]; |
| 106 [optionstrs release]; | 106 [optionstrs release]; |
| 107 } | 107 } |
| 108 else { | 108 else { |
| 109 bool state = false; | 109 bool state = false; |
| 110 SkString str; | 110 SkString str; |
| 111 SkOSMenu::TriState tristate; | 111 SkOSMenu::TriState tristate; |
| 112 switch (item->getType()) { | 112 switch (item->getType()) { |
| 113 case SkOSMenu::kAction_Type: | 113 case SkOSMenu::kAction_Type: |
| 114 option.fCell = [self createAction]; | 114 option.fCell = [self createAction]; |
| 115 break; | 115 break; |
| 116 case SkOSMenu::kSlider_Type: | 116 case SkOSMenu::kSlider_Type: |
| 117 SkScalar min, max, value; | 117 SkScalar min, max, value; |
| 118 SkOSMenu::FindSliderValue(*item->getEvent(), item->getSlotNa
me(), &value); | 118 SkOSMenu::FindSliderValue(*item->getEvent(), item->getSlotNa
me(), &value); |
| 119 SkOSMenu::FindSliderMin(*item->getEvent(), &min); | 119 SkOSMenu::FindSliderMin(*item->getEvent(), &min); |
| 120 SkOSMenu::FindSliderMax(*item->getEvent(), &max); | 120 SkOSMenu::FindSliderMax(*item->getEvent(), &max); |
| 121 option.fCell = [self createSlider:value | 121 option.fCell = [self createSlider:value |
| 122 min:min | 122 min:min |
| 123 max:max]; | 123 max:max]; |
| 124 break; | 124 break; |
| 125 case SkOSMenu::kSwitch_Type: | 125 case SkOSMenu::kSwitch_Type: |
| 126 SkOSMenu::FindSwitchState(*item->getEvent(), item->getSlotNa
me(), &state); | 126 SkOSMenu::FindSwitchState(*item->getEvent(), item->getSlotNa
me(), &state); |
| 127 option.fCell = [self createSwitch:(BOOL)state]; | 127 option.fCell = [self createSwitch:(BOOL)state]; |
| 128 break; | 128 break; |
| 129 case SkOSMenu::kTriState_Type: | 129 case SkOSMenu::kTriState_Type: |
| 130 SkOSMenu::FindTriState(*item->getEvent(), item->getSlotName(
), &tristate); | 130 SkOSMenu::FindTriState(*item->getEvent(), item->getSlotName(
), &tristate); |
| 131 option.fCell = [self createTriState:[self triStateToNSState:
tristate]]; | 131 option.fCell = [self createTriState:[self triStateToNSState:
tristate]]; |
| 132 break; | 132 break; |
| 133 case SkOSMenu::kTextField_Type: | 133 case SkOSMenu::kTextField_Type: |
| 134 SkOSMenu::FindText(*item->getEvent(),item->getSlotName(), &s
tr); | 134 SkOSMenu::FindText(*item->getEvent(),item->getSlotName(), &s
tr); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 145 | 145 |
| 146 - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { | 146 - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { |
| 147 return [self.fItems count]; | 147 return [self.fItems count]; |
| 148 } | 148 } |
| 149 | 149 |
| 150 - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColum
n *)tableColumn row:(NSInteger)row { | 150 - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColum
n *)tableColumn row:(NSInteger)row { |
| 151 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifier]]; | 151 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifier]]; |
| 152 if (columnIndex == 0) { | 152 if (columnIndex == 0) { |
| 153 const SkOSMenu::Item* item = ((SkOptionItem*)[fItems objectAtIndex:row])
.fItem; | 153 const SkOSMenu::Item* item = ((SkOptionItem*)[fItems objectAtIndex:row])
.fItem; |
| 154 NSString* label = [NSString stringWithUTF8String:item->getLabel()]; | 154 NSString* label = [NSString stringWithUTF8String:item->getLabel()]; |
| 155 if (fShowKeys) | 155 if (fShowKeys) |
| 156 return [NSString stringWithFormat:@"%@ (%c)", label, item->getKeyEqu
ivalent()]; | 156 return [NSString stringWithFormat:@"%@ (%c)", label, item->getKeyEqu
ivalent()]; |
| 157 else | 157 else |
| 158 return label; | 158 return label; |
| 159 } | 159 } |
| 160 else | 160 else |
| 161 return nil; | 161 return nil; |
| 162 } | 162 } |
| 163 | 163 |
| 164 - (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableCo
lumn *)tableColumn row:(NSInteger)row { | 164 - (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableCo
lumn *)tableColumn row:(NSInteger)row { |
| 165 if (tableColumn) { | 165 if (tableColumn) { |
| 166 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifie
r]]; | 166 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifie
r]]; |
| 167 if (columnIndex == 1) | 167 if (columnIndex == 1) |
| 168 return [((SkOptionItem*)[fItems objectAtIndex:row]).fCell copy]; | 168 return [((SkOptionItem*)[fItems objectAtIndex:row]).fCell copy]; |
| 169 else | 169 else |
| 170 return [[[SkTextFieldCell alloc] init] autorelease]; | 170 return [[[SkTextFieldCell alloc] init] autorelease]; |
| 171 } | 171 } |
| 172 return nil; | 172 return nil; |
| 173 } | 173 } |
| 174 | 174 |
| 175 - (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColu
mn:(NSTableColumn *)tableColumn row:(NSInteger)row { | 175 - (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColu
mn:(NSTableColumn *)tableColumn row:(NSInteger)row { |
| 176 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifier]]; | 176 int columnIndex = [tableView columnWithIdentifier:[tableColumn identifier]]; |
| 177 if (columnIndex == 1) { | 177 if (columnIndex == 1) { |
| 178 SkOptionItem* option = (SkOptionItem*)[self.fItems objectAtIndex:row]; | 178 SkOptionItem* option = (SkOptionItem*)[self.fItems objectAtIndex:row]; |
| 179 NSCell* storedCell = option.fCell; | 179 NSCell* storedCell = option.fCell; |
| 180 const SkOSMenu::Item* item = option.fItem; | 180 const SkOSMenu::Item* item = option.fItem; |
| 181 switch (item->getType()) { | 181 switch (item->getType()) { |
| 182 case SkOSMenu::kAction_Type: | 182 case SkOSMenu::kAction_Type: |
| 183 break; | 183 break; |
| 184 case SkOSMenu::kList_Type: | 184 case SkOSMenu::kList_Type: |
| 185 [cell selectItemAtIndex:[(NSPopUpButtonCell*)storedCell indexOfS
electedItem]]; | 185 [cell selectItemAtIndex:[(NSPopUpButtonCell*)storedCell indexOfS
electedItem]]; |
| 186 break; | 186 break; |
| 187 case SkOSMenu::kSlider_Type: | 187 case SkOSMenu::kSlider_Type: |
| 188 [cell setFloatValue:[storedCell floatValue]]; | 188 [cell setFloatValue:[storedCell floatValue]]; |
| 189 break; | 189 break; |
| 190 case SkOSMenu::kSwitch_Type: | 190 case SkOSMenu::kSwitch_Type: |
| 191 [cell setState:[(NSButtonCell*)storedCell state]]; | 191 [cell setState:[(NSButtonCell*)storedCell state]]; |
| 192 break; | 192 break; |
| 193 case SkOSMenu::kTextField_Type: | 193 case SkOSMenu::kTextField_Type: |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 [cell setBezelStyle:NSSmallSquareBezelStyle]; | 252 [cell setBezelStyle:NSSmallSquareBezelStyle]; |
| 253 return cell; | 253 return cell; |
| 254 } | 254 } |
| 255 | 255 |
| 256 - (NSCell*)createList:(NSArray*)items current:(int)index { | 256 - (NSCell*)createList:(NSArray*)items current:(int)index { |
| 257 NSPopUpButtonCell* cell = [[[NSPopUpButtonCell alloc] init] autorelease]; | 257 NSPopUpButtonCell* cell = [[[NSPopUpButtonCell alloc] init] autorelease]; |
| 258 [cell addItemsWithTitles:items]; | 258 [cell addItemsWithTitles:items]; |
| 259 [cell selectItemAtIndex:index]; | 259 [cell selectItemAtIndex:index]; |
| 260 [cell setArrowPosition:NSPopUpArrowAtBottom]; | 260 [cell setArrowPosition:NSPopUpArrowAtBottom]; |
| 261 [cell setBezelStyle:NSSmallSquareBezelStyle]; | 261 [cell setBezelStyle:NSSmallSquareBezelStyle]; |
| 262 return cell; | 262 return cell; |
| 263 } | 263 } |
| 264 | 264 |
| 265 - (NSCell*)createSlider:(float)value min:(float)min max:(float)max { | 265 - (NSCell*)createSlider:(float)value min:(float)min max:(float)max { |
| 266 NSSliderCell* cell = [[[NSSliderCell alloc] init] autorelease]; | 266 NSSliderCell* cell = [[[NSSliderCell alloc] init] autorelease]; |
| 267 [cell setFloatValue:value]; | 267 [cell setFloatValue:value]; |
| 268 [cell setMinValue:min]; | 268 [cell setMinValue:min]; |
| 269 [cell setMaxValue:max]; | 269 [cell setMaxValue:max]; |
| 270 return cell; | 270 return cell; |
| 271 } | 271 } |
| 272 | 272 |
| 273 - (NSCell*)createSwitch:(BOOL)state { | 273 - (NSCell*)createSwitch:(BOOL)state { |
| 274 NSButtonCell* cell = [[[NSButtonCell alloc] init] autorelease]; | 274 NSButtonCell* cell = [[[NSButtonCell alloc] init] autorelease]; |
| 275 [cell setState:state]; | 275 [cell setState:state]; |
| 276 [cell setTitle:@""]; | 276 [cell setTitle:@""]; |
| 277 [cell setButtonType:NSSwitchButton]; | 277 [cell setButtonType:NSSwitchButton]; |
| 278 return cell; | 278 return cell; |
| 279 } | 279 } |
| 280 | 280 |
| 281 - (NSCell*)createTextField:(NSString*)placeHolder; { | 281 - (NSCell*)createTextField:(NSString*)placeHolder { |
| 282 SkTextFieldCell* cell = [[[SkTextFieldCell alloc] init] autorelease]; | 282 SkTextFieldCell* cell = [[[SkTextFieldCell alloc] init] autorelease]; |
| 283 [cell setEditable:YES]; | 283 [cell setEditable:YES]; |
| 284 [cell setStringValue:@""]; | 284 [cell setStringValue:@""]; |
| 285 [cell setPlaceholderString:placeHolder]; | 285 [cell setPlaceholderString:placeHolder]; |
| 286 return cell; | 286 return cell; |
| 287 } | 287 } |
| 288 | 288 |
| 289 - (NSCell*)createTriState:(NSCellStateValue)state { | 289 - (NSCell*)createTriState:(NSCellStateValue)state { |
| 290 NSButtonCell* cell = [[[NSButtonCell alloc] init] autorelease]; | 290 NSButtonCell* cell = [[[NSButtonCell alloc] init] autorelease]; |
| 291 [cell setAllowsMixedState:TRUE]; | 291 [cell setAllowsMixedState:TRUE]; |
| 292 [cell setTitle:@""]; | 292 [cell setTitle:@""]; |
| 293 [cell setState:(NSInteger)state]; | 293 [cell setState:(NSInteger)state]; |
| 294 [cell setButtonType:NSSwitchButton]; | 294 [cell setButtonType:NSSwitchButton]; |
| 295 return cell; | 295 return cell; |
| 296 } | 296 } |
| 297 @end | 297 @end |
| OLD | NEW |