NSColorWellCell

RocouRocou Membre
17:42 modifié dans API AppKit #1
Bonjour,

Y-a-t-il quelqu'un qui a écrit une classe NSColorWellCell?
Ma recherche sur le net n'a rien donné et pourtant je constate que c'est une demande récurrente. J'imagine que cela doit exister.

Réponses

  • Nebuchad34Nebuchad34 Membre
    janvier 2010 modifié #2
    Yep !

    pour la ColorCell, c'est tout bête :

    <br />//<br />//&nbsp; ColorCell.h<br />//&nbsp; Poker Manager 3<br />//<br />//&nbsp; Created by Romain Cosentino on 25/08/09.<br />//&nbsp; Copyright 2009 CocoaTree. All rights reserved.<br />//<br /><br />#import &lt;Cocoa/Cocoa.h&gt;<br /><br /><br />@interface ColorCell : NSActionCell {<br /><br />}<br /><br />@end<br />
    


    <br />//<br />//&nbsp; ColorCell.m<br />//&nbsp; Poker Manager 3<br />//<br />//&nbsp; Created by Romain Cosentino on 25/08/09.<br />//&nbsp; Copyright 2009 CocoaTree. All rights reserved.<br />//<br /><br />#import &quot;ColorCell.h&quot;<br /><br />@implementation ColorCell<br /><br />- (void) drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView<br />{<br />	NSRect container = NSInsetRect(cellFrame, 6, 6);<br />	NSBezierPath *roundedRect = [NSBezierPath bezierPathWithRoundedRect:container xRadius:3 yRadius:3];<br />	[[NSColor whiteColor] set];<br />	[roundedRect setLineWidth:4];<br />	[roundedRect stroke];<br />	[(NSColor*) [self objectValue] set];<br />	[roundedRect fill];<br />	<br />}<br /><br />@end<br />
    


    Ensuite, dans le delegate de ta tableView, il faut que tu récupère la bonne NSTableColomn afin d'y attribuer la ColorCell comme dataCell :
    <br />- (void)awakeFromNib<br />{<br />NSTableColomn *column;<br />ColorCell* colorCell;	<br />	column = [[tableView tableColumns] objectAtIndex: 0];<br />	colorCell = [[[ColorCell alloc] init] autorelease];<br />	[colorCell setEditable: YES];<br />	[colorCell setTarget: self];<br />	[colorCell setAction: @selector (colorCellClicked:)];<br />	[column setDataCell: colorCell];<br />}<br />
    

    Et enfin, il faut définir la méthode qui va ouvrir le panneau de couleur quand tu cliques sur la cell :

    <br />- (void)colorCellClicked:(id)sender // sender is the NSTableView<br />{	<br />	rowToEdit = [tableView selectedRow]; //rowToEdit est un int d&#39;instance<br /><br />		<br />		colorPanel = [NSColorPanel sharedColorPanel]; //colorPanel est un NSColorPanel d&#39;instance<br />		[colorPanel setTarget: self];<br />		[colorPanel setAction: @selector(colorChanged:)];<br />		[colorPanel setColor:LACOULEURISSUEDETONMODELE];<br />		[colorPanel makeKeyAndOrderFront: self];<br />	<br />}<br /><br />- (void)colorChanged:(id)sender // sender is the NSColorPanel<br />{	<br />	MACOULEURÀMODIFIER = [sender color];<br />	[tableView reloadData];<br />}<br /><br />
    

  • RocouRocou Membre
    17:42 modifié #3
    :o

    Un grand merci pour ce "machage" de travail. J'avais commencé à  écrire une usine à  gaz pour réaliser la même chose...
Connectez-vous ou Inscrivez-vous pour répondre.