On 12 Dec 2016, at 07:22, David M. Cotter <m...@davecotter.com> 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 (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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to