> I need a new type of NSButton/NSButtonCell that I am calling an
> NSLatchButton.
> Once it is pushed it stays pushed - pushing it again does not revert it back
> to unpushed state.
> (Of course there would be a method to set it to it's unlatched state but
> pushing the button would not
> invoke that action)
>
> However I'm not sure how to approach this. Should I use categories,
> extensions, or subclass or what?

  Why do you need a new button type? No matter how you want it to
look, the behavior should be dictated by the controller layer. When
its action is fired, simply force its state to be NSOnState. Depending
on how you  want it to appear, the existing NSButton/Cell should be
configurable to taste. If you want a custom appearance, just use
custom images (still, the standard button will work fine).

> If I were dealing with the source code I would add to the button types enums
> and add a method or case to deal with that type.

  Yes, and I would snarf the freezlehopper until it is within one
tenth of a hoptzit of the specified framulator.  But that's also
unnecessary. ;-) Yes, of course you can subclass NSButton/Cell and add
a new type, then override all the drawing routines, etc. to handle
that case, but you *still* shouldn't force the button to take on the
responsibility of application-specific logic (see "MVC design
pattern"). It's your application's idea that a button can't be
"unpushed" once it's pushed; it's your application's responsibility to
enforce such a state once set.

> But what suggestions do you have?

  Read the NSButton documentation *and* the target/action mechanism
documentation (both easily searchable in Apple's reference library).
You're making a mountain out of a mole hill.

--
I.S.
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to