libs-gui/ColorPickers/GSNamedColorPicker.m
David Ayers 66fd293df6 * ColorPickers/GSNamedColorPicker.m ([-browser:selectRow:inColumn:]):
Return NO as default value.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@22839 72102866-910b-0410-8b05-ffd578937521
2006-04-30 08:29:58 +00:00

235 lines
5.3 KiB
Objective-C

/* GSNamedColorPicker.m
Copyright (C) 2001 Free Software Foundation, Inc.
Author: Fred Kiefer <FredKiefer@gmx.de>
Date: January 2001
This file is part of GNUstep.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>
@interface GSNamedColorPicker: NSColorPicker <NSColorPickingCustom>
{
NSView *baseView;
NSComboBox *cb;
NSBrowser *browser;
NSColorList *currentList;
NSMutableArray *lists;
}
- (void) loadViews;
- (void) listSelected: (int)index;
- (void) colorSelected: (id)sender;
@end
@implementation GSNamedColorPicker
- (id) initWithPickerMask: (int)aMask
colorPanel: (NSColorPanel *)colorPanel
{
if (aMask & NSColorPanelColorListModeMask)
{
lists = [[NSColorList availableColorLists] mutableCopy];
return [super initWithPickerMask: aMask
colorPanel: colorPanel];
}
RELEASE(self);
return nil;
}
- (void) dealloc
{
RELEASE(cb);
RELEASE(browser);
RELEASE(baseView);
RELEASE(lists);
[super dealloc];
}
- (void) finishInstantiate
{
}
- (void) attachColorList: (NSColorList *)colorList
{
[lists addObject: colorList];
[cb noteNumberOfItemsChanged];
}
- (void) detachColorList: (NSColorList *)colorList
{
[lists removeObjectIdenticalTo: colorList];
[cb noteNumberOfItemsChanged];
}
- (int) currentMode
{
return NSColorListModeColorPanel;
}
- (BOOL) supportsMode: (int)mode
{
return mode == NSColorListModeColorPanel;
}
- (NSView *) provideNewView: (BOOL)initialRequest
{
if (initialRequest)
{
[self loadViews];
}
return baseView;
}
- (void) setColor: (NSColor *)color
{
NSColor *c = [color colorUsingColorSpaceName: NSNamedColorSpace];
NSString *list;
NSString *name;
if (c == nil)
return;
list = [c catalogNameComponent];
name = [c colorNameComponent];
}
- (void) loadViews
{
baseView = [[NSView alloc] initWithFrame: NSMakeRect(0, 0, 200, 110)];
[baseView setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];
cb = [[NSComboBox alloc] initWithFrame: NSMakeRect(0, 85, 196, 20)];
[cb setAutoresizingMask: (NSViewWidthSizable | NSViewMinYMargin)];
[cb setUsesDataSource: YES];
[cb setDataSource: self];
[cb setDelegate: self];
[cb setEditable: NO];
[baseView addSubview: cb];
browser = [[NSBrowser alloc] initWithFrame: NSMakeRect(0, 5, 196, 75)];
[browser setDelegate: self];
[browser setMaxVisibleColumns: 1];
[browser setAllowsMultipleSelection: NO];
[browser setAllowsEmptySelection: NO];
[browser setHasHorizontalScroller: NO];
[browser setTitled: NO];
[browser setTakesTitleFromPreviousColumn: NO];
[browser setPath: @"/"];
[browser setTarget: self];
[browser setDoubleAction: @selector(colorSelected:)];
[browser setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];
[baseView addSubview: browser];
}
- (void) listSelected: (int)index
{
currentList = [lists objectAtIndex: index];
[browser loadColumnZero];
}
- (void) colorSelected: (id)sender
{
NSCell *aCell;
NSColor *col;
aCell = [sender selectedCell];
col = [aCell representedObject];
[_colorPanel setColor: col];
}
-(NSString *) browser: (NSBrowser *)sender
titleOfColumn: (int)column
{
return nil;
}
-(void) browser: (NSBrowser *)sender
createRowsForColumn: (int)column
inMatrix: (NSMatrix *)matrix
{
int i;
int count;
NSBrowserCell *cell;
NSColor *cl;
NSArray *keys = [currentList allKeys];
NSString *name;
count = [keys count];
//NSLog(@"In create with %@ %d", currentList, count);
if (count)
{
[matrix addColumn];
for (i = 0; i < count; i++)
{
if (i > 0)
[matrix addRow];
name = [keys objectAtIndex: i];
//cl = [currentList colorWithKey: name];
cl = [NSColor colorWithCatalogName: [currentList name]
colorName: name];
cell = [matrix cellAtRow: i
column: 0];
[cell setStringValue: name];
[cell setRepresentedObject: cl];
[cell setLeaf: YES];
}
}
}
- (BOOL) browser: (NSBrowser*)sender
selectRow: (int)row
inColumn: (int)column
{
return NO;
}
- (void) browser: (NSBrowser *)sender
willDisplayCell: (id)cell
atRow: (int)row
column: (int)column
{
}
- (int) numberOfItemsInComboBox: (NSComboBox *)aComboBox
{
return [lists count];
}
- (id) comboBox: (NSComboBox *)aComboBox
objectValueForItemAtIndex: (int)index
{
return [(NSColorList*)[lists objectAtIndex: index] name];
}
- (unsigned int) comboBox: (NSComboBox *)aComboBox
indexOfItemWithStringValue: (NSString *)string
{
return [lists indexOfObject: [NSColorList colorListNamed: string]];
}
- (void) comboBoxSelectionDidChange: (NSNotification *)notification
{
[self listSelected: [cb indexOfSelectedItem]];
}
@end