2007-12-06 17:21:42 +00:00
|
|
|
/******************************************************************************
|
2012-01-14 17:12:04 +00:00
|
|
|
* Copyright (c) 2007-2012 Transmission authors and contributors
|
2007-12-06 17:21:42 +00:00
|
|
|
*
|
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
|
|
* to deal in the Software without restriction, including without limitation
|
|
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
|
|
*
|
|
|
|
* The above copyright notice and this permission notice shall be included in
|
|
|
|
* all copies or substantial portions of the Software.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
* DEALINGS IN THE SOFTWARE.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
2007-12-07 06:27:42 +00:00
|
|
|
#import "GroupToolbarItem.h"
|
2007-12-06 17:21:42 +00:00
|
|
|
|
2007-12-07 06:27:42 +00:00
|
|
|
@implementation GroupToolbarItem
|
2007-12-06 17:21:42 +00:00
|
|
|
|
2012-03-13 02:52:11 +00:00
|
|
|
- (void) dealloc
|
|
|
|
{
|
|
|
|
[fIdentifiers release];
|
|
|
|
[super dealloc];
|
|
|
|
}
|
2007-12-06 17:21:42 +00:00
|
|
|
|
|
|
|
- (void) setIdentifiers: (NSArray *) identifiers
|
|
|
|
{
|
2012-03-13 02:52:11 +00:00
|
|
|
[fIdentifiers release];
|
|
|
|
fIdentifiers = [identifiers retain];
|
2007-12-06 17:21:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void) validate
|
|
|
|
{
|
|
|
|
NSSegmentedControl * control = (NSSegmentedControl *)[self view];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2008-10-12 21:38:13 +00:00
|
|
|
for (NSInteger i = 0; i < [control segmentCount]; i++)
|
2007-12-06 17:21:42 +00:00
|
|
|
[control setEnabled: [[self target] validateToolbarItem:
|
2012-03-13 02:52:11 +00:00
|
|
|
[[[NSToolbarItem alloc] initWithItemIdentifier: [fIdentifiers objectAtIndex: i]] autorelease]] forSegment: i];
|
2007-12-06 17:21:42 +00:00
|
|
|
}
|
|
|
|
|
2007-12-06 20:46:58 +00:00
|
|
|
- (void) createMenu: (NSArray *) labels
|
2007-12-06 17:21:42 +00:00
|
|
|
{
|
2007-12-06 20:46:58 +00:00
|
|
|
NSMenuItem * menuItem = [[NSMenuItem alloc] initWithTitle: [self label] action: NULL keyEquivalent: @""];
|
|
|
|
NSMenu * menu = [[NSMenu alloc] initWithTitle: [self label]];
|
|
|
|
[menuItem setSubmenu: menu];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2007-12-06 20:46:58 +00:00
|
|
|
[menu setAutoenablesItems: NO];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2008-10-12 21:38:13 +00:00
|
|
|
const NSInteger count = [(NSSegmentedControl *)[self view] segmentCount];
|
|
|
|
for (NSInteger i = 0; i < count; i++)
|
2007-12-06 20:25:38 +00:00
|
|
|
{
|
2008-10-12 21:38:13 +00:00
|
|
|
NSMenuItem * addItem = [[NSMenuItem alloc] initWithTitle: [labels objectAtIndex: i] action: [self action] keyEquivalent: @""];
|
2007-12-06 20:46:58 +00:00
|
|
|
[addItem setTarget: [self target]];
|
|
|
|
[addItem setTag: i];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2007-12-06 20:46:58 +00:00
|
|
|
[menu addItem: addItem];
|
2012-03-13 02:52:11 +00:00
|
|
|
[addItem release];
|
2007-12-06 20:25:38 +00:00
|
|
|
}
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2012-03-13 02:52:11 +00:00
|
|
|
[menu release];
|
2007-12-06 20:46:58 +00:00
|
|
|
[self setMenuFormRepresentation: menuItem];
|
2012-03-13 02:52:11 +00:00
|
|
|
[menuItem release];
|
2007-12-06 20:46:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (NSMenuItem *) menuFormRepresentation
|
|
|
|
{
|
|
|
|
NSMenuItem * menuItem = [super menuFormRepresentation];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2008-10-12 21:38:13 +00:00
|
|
|
const NSInteger count = [(NSSegmentedControl *)[self view] segmentCount];
|
|
|
|
for (NSInteger i = 0; i < count; i++)
|
2007-12-06 20:25:38 +00:00
|
|
|
[[[menuItem submenu] itemAtIndex: i] setEnabled: [[self target] validateToolbarItem:
|
2012-03-13 02:52:11 +00:00
|
|
|
[[[NSToolbarItem alloc] initWithItemIdentifier: [fIdentifiers objectAtIndex: i]] autorelease]]];
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2007-12-06 20:25:38 +00:00
|
|
|
return menuItem;
|
2007-12-06 20:09:45 +00:00
|
|
|
}
|
2007-12-06 17:21:42 +00:00
|
|
|
|
|
|
|
@end
|