<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Solved the problem I was having.<div><br></div><div>In order to make my bindings work with the XCode xib editor, I extended and exported the bmac bindings from within the MonoMac project.  Vespertilio.Mac is my MonoMac solution, and Vespertilio.Presentation was generated by bmac.</div><div><div><div><div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" color="#063ff4"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span style="color: #063ff4">namespace</span> Vespertilio.Mac.Views</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">   </span>[Register (<span style="color: #b62522">"TextView"</span>)]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">  </span><span style="color: #063ff4">partial</span> <span style="color: #063ff4">class</span> <span style="color: #2ea3ba">TextView</span> : Vespertilio.Presentation.TextView</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">     </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">            </span><span style="color: #063ff4">public</span> TextView(<span style="color: #2ea3ba">IntPtr</span> handle) : <span style="color: #063ff4">base</span>(handle)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">          </span>{</div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.5px Helvetica; min-height: 11.0px"><span class="Apple-tab-span" style="white-space:pre">                 </span><br class="webkit-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">          </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-tab-span" style="white-space:pre">    </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; ">}</div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-style-span" style="font-size: medium; ">Now I can drag a custom view into the xib editor, change the class from NSView to TextView and bind it to my controller. However I'm still wondering why it won't work without this solution. </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-style-span" style="font-size: medium; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><span class="Apple-style-span" style="font-size: medium; ">Hope this helps anyone having similar problems.</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3">I'm really starting to like MonoMac, a thank you to all the contributors!</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3">Cheers,</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 9.5px/normal Helvetica; "><font class="Apple-style-span" size="3">Raymond</font></div><div><div><div><div><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>From: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Raymond Reggers <<a href="mailto:raymond@adaptiv.nl">raymond@adaptiv.nl</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Subject: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><b>Re: [Mono-osx] MonoMac bindings trouble</b><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Date: </b></span><span style="font-family:'Helvetica'; font-size:medium;">February 14, 2012 11:20:56 PM GMT+01:00<br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>To: </b></span><span style="font-family:'Helvetica'; font-size:medium;">Duane Wandless <<a href="mailto:duane@wandless.net">duane@wandless.net</a>><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;"><span style="font-family:'Helvetica'; font-size:medium; color:rgba(0, 0, 0, 1.0);"><b>Cc: </b></span><span style="font-family:'Helvetica'; font-size:medium;"><a href="mailto:mono-osx@lists.ximian.com">mono-osx@lists.ximian.com</a><br></span></div><br><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Ok I created the bindings by running this command on the file below:</div><div><br></div><div>mono bmac.exe ${ProjectDir}/Bindings/Vespertilio.Presentation.cs -r System.Drawing</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span style="color: #063ff4">using</span> MonoMac.Foundation;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span style="color: #063ff4">using</span> MonoMac.AppKit;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span style="color: #063ff4">namespace</span> Vespertilio.Presentation {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><span class="Apple-tab-span" style="white-space:pre">    </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">    </span>[BaseType(<span style="color: #063ff4">typeof</span>(NSView))]</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">     </span><span style="color: #063ff4">interface</span> TextView</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">     </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; min-height: 16px; "><span class="Apple-tab-span" style="white-space:pre">              </span><br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">    </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">}</div></div><div><br></div><div>And dlopen() is called before anything else, first line in Main(). The library gets loaded because I can see my custom view being displayed.</div><div><br></div><div>For example, I can do this (MainWindowController.cs):</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span style="color: #063ff4">public</span> <span style="color: #063ff4">override</span> <span style="color: #063ff4">void</span> WindowDidLoad ()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre"> </span><span style="color: #063ff4">base</span>.WindowDidLoad();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">  </span>Vespertilio.Presentation.TextView t = <span style="color: #063ff4">new</span> Vespertilio.Presentation.TextView();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre"> </span><span style="color: #063ff4">this</span>.root.AddSubView(t);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">       </span>t.setFrame(...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">}</div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; ">In this case root is simply a NSView with an outlet to MainWindowController.root.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">BUT if I use interfacebuilder (well XCode now) and replace NSView with TextView and bind an outlet to MainWindowController.root. Then I get an InvalidCastException. If I remove the outlet, everything works and my custom view also shows. </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">Hope this helps.</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; "><br></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Monaco; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; ">Thanks!</span></div><div><br></div><br><div><div>On Feb 14, 2012, at 8:26 PM, Duane Wandless wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">It might help if you show your bindings... and when did you call dlopen on the framework?<div><br></div><div>dlopen(...</div><div>NSApplication.Init()</div><div>NSApplication.Main()<br><br><div class="gmail_quote">On Mon, Feb 13, 2012 at 9:14 PM, Raymond Reggers <span dir="ltr"><<a href="mailto:raymond@adaptiv.nl">raymond@adaptiv.nl</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
Got another question regarding bindings to my own obj-c classes, my situation and problem is like this:<br>
<br>
- I got an obj-c class named TextView which extends NSView, that I compiled into a Cocoa Framework.<br>
- Loaded this Framework with Dlcfn.dlopen<br>
- Created the bindings using bmac.<br>
<br>
Now from c# I can create an instance from my TextView class, add it to an existing view. Works fine.<br>
<br>
But it seems my bindings do not work in a reverse manner. For example if I:<br>
<br>
- Add my TextView to MainWindow.xib using XCode.<br>
- Create an outlet to MainWindowController.<br>
<br>
When launching the application, the TextView shows up correctly, but upon resolving the outlet I get a InvalidCastException (stacktrace below). So I tried something else:<br>
<br>
- Add my TextView into a NSView<br>
- Create an outlet for the NSView (named it root)<br>
- Access MainWindowController.root.Subviews[0]<br>
<br>
In the debugger this shows up as a NSView. And casting to TextView results in the same InvalidCastException. I must be doing something wrong with my bindings? Hope someone can help.<br>
<br>
Kind regards,<br>
<br>
Raymond<br>
<br>
Stacktrace:<br>
<br>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_castclass (object,intptr) <0x00003><br>
at MonoMac.ObjCRuntime.NSObjectMarshaler`1<Vespertilio.Presentation.TextView>.MarshalNativeToManaged (intptr) <0x0004b><br>
at (wrapper native-to-managed) object.[Vespertilio.Mac.MainWindowController.Void set_root(Vespertilio.Presentation.TextView)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,Vespertilio.Presentation.TextView) <IL 0x0004a, 0x001a0><br>

at (wrapper managed-to-native) MonoMac.ObjCRuntime.Messaging.IntPtr_objc_msgSendSuper (intptr,intptr) <0x00003><br>
at MonoMac.AppKit.NSWindowController.get_Window () [0x0002b] in /Users/raymond/Documents/git/monomac/src/AppKit/NSWindowController.g.cs:371<br>
at Vespertilio.Mac.MainWindowController.get_Window () [0x00000] in /Volumes/DATA/vespertilio/Vespertilio/Vespertilio.Mac/MainWindowController.cs:49<br>
at Vespertilio.Mac.AppDelegate.FinishedLaunching (MonoMac.Foundation.NSObject) [0x0000b] in /Volumes/DATA/vespertilio/Vespertilio/Vespertilio.Mac/AppDelegate.cs:20<br>
at (wrapper dynamic-method) object.[Vespertilio.Mac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.Foundation.NSObject) <IL 0x00011, 0x00050><br>

at (wrapper native-to-managed) object.[Vespertilio.Mac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.Foundation.NSObject) <IL 0x0006a, 0x001fb><br>

at (wrapper managed-to-native) MonoMac.AppKit.NSApplication.NSApplicationMain (int,string[]) <0x00003><br>
at MonoMac.AppKit.NSApplication.Main (string[]) [0x00000] in /Users/raymond/Documents/git/monomac/src/AppKit/NSApplication.cs:74<br>
at Vespertilio.Mac.MainClass.Main (string[]) [0x0000f] in /Volumes/DATA/vespertilio/Vespertilio/Vespertilio.Mac/Main.cs:21<br>
_______________________________________________<br>
Mono-osx mailing list<br>
<a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-osx" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-osx</a><br>
</blockquote></div><br></div>
</blockquote></div><br></div></blockquote></div><br></div></div></div></div></div></div></div></div></body></html>