Re: NSTouchBar in Carbon
Re: NSTouchBar in Carbon
- Subject: Re: NSTouchBar in Carbon
- From: Uli Kusterer <email@hidden>
- Date: Fri, 30 Dec 2016 14:30:14 +0100
On 12 Dec 2016, at 07:22, David M. Cotter <email@hidden> wrote:
> My app is mostly C++ (because it’s cross platform) with Carbon on the UI edges, and the absolute minimum required ObjectiveC++ to make it work. (please no discussion about why this is stupid / i should write a modern app etc)
>
> So I need to programmatically instantiate an NSTouchBar, somehow
>
> i do have a “MainController” which is just an NSObject, and a literally empty nib i COULD put something into.
>
> but i do NOT have an NSView or NSViewController to connect the touch bar to, and i’d prefer not to have to use any storyboard if i can avoid it (of course i will if it can’t be avoided)
>
> how do i go about just creating an NSTouchBar in objC and having it show up and respond to taps?
From a casual look at the comments in the NSTouchBar.h header, it seems as if you only need an application delegate (which I assume you mean by your MainController NSObject?) that implements NSTouchBarProvider to return an NSTouchBar object. Of course, if you implement it all there, you'll have to come up with your own way to determine from the frontmost window etc. which items to show.
As to implementing the actual items, it seems like, lacking an NSCarbonView, you need to use an NSView to provide those (and if you're using some standard view, that will in turn need to either be subclassed or need another object to talk to that knows how to dispatch messages to your Carbon code.
FWIW, in our Cocoa port, we tried just funneling everything through the app delegate as fake Carbon events (and all our existing code needed minimal changes to handle fake instead of real events because the structure stayed the same). We eventually gave up on that as it just invites impedance mismatches about who gets what message. So in the end, we changed all our C++ classes to create Cocoa NSWindowController objects and load the actual windows from Cocoa (but still use our fake Carbon Events to dispatch stuff under the hood).
That meant all windows converted worked as part of the responder chain. It's been too long for me to remember what we actually did in what order. I think we first converted the menu bar to Cocoa alone, then slowly migrated windows bit by bit, starting with modal windows first. Maybe that info helps you some in deciding what to do.
Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden