• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSToolbar Problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSToolbar Problem


  • Subject: Re: NSToolbar Problem
  • From: Julian Cain <email@hidden>
  • Date: Fri, 1 Apr 2005 12:52:54 -0500

Well, the thing is in my custom cell I am doing all this...

static id _imageLeft = nil;
static id _imageMiddle = nil;
static id _imageRight = nil;

static id _imageLeftPress = nil;
static id _imageMiddlePress = nil;
static id _imageRightPress = nil;

static id _imageLeftRoll = nil;
static id _imageMiddleRoll = nil;
static id _imageRightRoll = nil;

static id _badge = nil;

static BOOL _mouseIsOver = NO;

@implementation SSTBButtonCell
/* don't have a clue */
- (id)initWithCoder:(NSCoder *)coder {
NSLog(@"Initing custom cell");
[super initWithCoder:coder];
_imageLeft = [coder decodeObjectForKey:@"kLeftImage"];
_imageLeftPress = [coder decodeObjectForKey:@"kLeftImagePress"];
_imageLeftRoll = [coder decodeObjectForKey:@"kLeftImageRoll"];
return self;
}
/* don't have a clue */
- (void)encodeWithCoder:(NSCoder *)coder {
NSLog(@"Encoding custom cell");
[super encodeWithCoder:coder];
[coder encodeObject:_imageLeft forKey:@"kLeftImage"];
[coder encodeObject:_imageLeftPress forKey:@"kLeftImagePress"];
[coder encodeObject:_imageLeftRoll forKey:@"kLeftImageRoll"];
}

+ (void)initialize {
static BOOL initialized = NO;
if(!initialized ) {
initialized = YES;
[super initialize];
/* Normal */
_imageLeft = [[[NSImage imageNamed:@"TB_Segment_LeftCap"] setFlipped:YES] retain];
_imageMiddle = [[[NSImage imageNamed:@"TB_Single_Middle"] setFlipped:YES] retain];
_imageRight = [[[NSImage imageNamed:@"TB_Segment_RightCap"] setFlipped:YES] retain];
/* Press */
_imageLeftPress = [[[NSImage imageNamed:@"TB_Segment_LeftCapPress"] setFlipped:YES] retain];
_imageMiddlePress = [[[NSImage imageNamed:@"TB_Single_MiddlePress"] setFlipped:YES] retain];
_imageRightPress = [[[NSImage imageNamed:@"TB_Segment_RightCapPress"] setFlipped:YES] retain];
/* Roll */
_imageLeftRoll = [[[NSImage imageNamed:@"TB_Segment_LeftCapRoll"] setFlipped:YES] retain];
_imageMiddleRoll = [[[NSImage imageNamed:@"TB_Single_MiddleRoll"] setFlipped:YES] retain];
_imageRightRoll = [[[NSImage imageNamed:@"TB_Segment_RightCapRoll"] setFlipped:YES] retain];


_badge = [[[NSImage imageNamed:@"TB_CustomizeToolbar"] setFlipped:YES] retain];
}
}

- (void)dealloc {
delete(_imageLeft);
delete(_imageMiddle);
delete(_imageRight);
delete(_imageLeftPress);
delete(_imageMiddlePress);
delete(_imageRightPress);
delete(_imageLeftRoll);
delete(_imageMiddleRoll);
delete(_imageRightRoll);
delete(_badge);
[super dealloc];
}

/*
* TODO: add "Inactive"
*/

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)view {
[super drawWithFrame:cellFrame inView:view];


[[NSColor controlBackgroundColor] set];
NSRectFill(cellFrame);


NSImage * buttonImageLeft;
NSImage * buttonImageMiddle;
NSImage * buttonImageRight;


self isHighlighted]) {
buttonImageLeft = _imageLeftPress;
buttonImageMiddle = _imageMiddlePress;
buttonImageRight = _imageRightPress;
} else if(_mouseIsOver) {
buttonImageLeft = _imageLeftRoll;
buttonImageMiddle = _imageMiddleRoll;
buttonImageRight = _imageRightRoll;;
} else {
buttonImageLeft = _imageLeft;
buttonImageMiddle = _imageMiddle;
buttonImageRight = _imageRight;
}


[buttonImageLeft
drawAtPoint:NSMakePoint(0, 0)
fromRect:NSMakeRect(0, 0, 15, 23)
operation:NSCompositeSourceOver fraction:1.0];

[buttonImageMiddle
drawInRect:NSMakeRect(11, 0, 15, 23)
fromRect:NSMakeRect(0, 0, 0, 23)
operation:NSCompositeSourceOver fraction:1.0];


[buttonImageRight
drawAtPoint:NSMakePoint(26, 0)
fromRect:NSMakeRect(0, 0, 15, 23)
operation:NSCompositeSourceOver fraction:1.0];

[_badge drawAtPoint:NSMakePoint(5, 1) fromRect:NSMakeRect(0, 0, 0, 23)
operation:NSCompositeSourceOver fraction:1.0];
}


~Julian

On Apr 1, 2005, at 11:52 AM, daniel wrote:

Since the image is associated with the cell, and not with the button itself, you have to copy over the image from the old cell, too.  I assume the title is carrying over OK? 

It looks like your custom cell is available in time to receive the image during the toolbar's initial creation of the toolbar items, but when it gets "packed up and moved", you are not replacing the image in the new cell you create.

Daniel

On Apr 1, 2005, at 8:25 AM, Julian Cain wrote:

I have also changed "initWithCoder" to no avail...

- (id)initWithCoder:(NSCoder *)coder {
    if( ( self = [super initWithCoder:coder] ) ) {
        NSButtonCell *oldCell = [self cell];
    NSLog(@"initWithCoder:");
    SSTBButtonCell *cell = [[SSTBButtonCell alloc] init];
    //[cell setImage[self cell] image]];
    [cell setAttributedStringValue:[oldCell attributedStringValue]];
    [cell setTarget:[oldCell target]];
    [cell setAction:[oldCell action]];
    [cell setAlignment:[oldCell alignment]];
    [cell setTitle:[oldCell title]];
    [cell setBordered:YES];
    [self setCell:cell];
    [cell release];
    }
    return self;
}

-Julian
On Apr 1, 2005, at 10:06 AM, j o a r wrote:



On 2005-04-01, at 15.30, Julian Cain wrote:


I have created a subclassed NSButton which I have in an NSToolbar, however when I run the customization palette the button image goes blank on the palette and toolbar. My Button code looks like so:


It seems to me that you have an incorrect implementation of NSCoding. You only set the custom button cell type when you "-initWithFrame:", not when you "-initWithCoder:".

j o a r


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: NSToolbar Problem
      • From: Will Mason <email@hidden>
    • Re: NSToolbar Problem
      • From: Shaun Wexler <email@hidden>
    • Re: NSToolbar Problem
      • From: j o a r <email@hidden>
References: 
 >NSToolbar Problem (From: Julian Cain <email@hidden>)
 >Re: NSToolbar Problem (From: j o a r <email@hidden>)
 >Re: NSToolbar Problem (From: Julian Cain <email@hidden>)
 >Re: NSToolbar Problem (From: daniel <email@hidden>)

  • Prev by Date: Scaling Fonts;
  • Next by Date: Re: Scaling Fonts;
  • Previous by thread: Re: NSToolbar Problem
  • Next by thread: Re: NSToolbar Problem
  • Index(es):
    • Date
    • Thread