Hi,

I am trying to bind a DataSource to a TableView, but when trying to get the objectValueForTableColumn, I get an error :
""""
 item added
numberOfRows call
reloaded
get Object
Stacktrace:

at (wrapper managed-to-native) Monobjc.Dynamic.Messaging.OBJC_MSGSEND [System_Void]().objc_msgSend (intptr,intptr) <0x00004> at (wrapper managed-to-native) Monobjc.Dynamic.Messaging.OBJC_MSGSEND [System_Void]().objc_msgSend (intptr,intptr) <0xffffffff> at (wrapper runtime-invoke) Monobjc.Dynamic.Messaging.OBJC_MSGSEND [System_Void]().runtime_invoke_void_intptr_intptr (object,intptr,intptr,intptr) <0xffffffff> at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (object,object[],System.Exception&) <0x00004> at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (object,object[],System.Exception&) <0xffffffff> at System.Reflection.MonoMethod.Invoke (object ,System .Reflection .BindingFlags ,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x000b5>
  at System.Reflection.MethodBase.Invoke (object,object[]) <0x00020>
at Monobjc.Generation.MessagingGenerator.SendMessage (string,intptr,intptr,object[]) <0x0010b> at Monobjc.ObjectiveCRuntime.SendMessage (Monobjc.IManagedWrapper,string,object[]) <0x00070>
  at Monobjc.Cocoa.NSApplication.Run () <0x0002b>
  at Monobjc.Cocoa.NSApplication.RunApplication () <0x0004b>
  at TestCocoaGui.Program.Main (string[]) <0x00034>
at (wrapper runtime-invoke) TestCocoaGui.Program.runtime_invoke_void_string[] (object,intptr,intptr,intptr) <0xffffffff>
Abort trap
"""

What causes this ? The object i am returning is a string...

Thx,

Mario


From: Duane Wandless [mailto:[EMAIL PROTECTED]
Sent: vrijdag 21 november 2008 16:51
To: users@lists.monobjc.net
Subject: Re: [EMAIL PROTECTED] Data binding

Not knowing what you have accomplished already I will briefly describe what I have done. When I find time I'll post something with pictures. My main application is a Cocoa ObjC app that controls the GUI. When the app starts the very first thing I do is load my C# EXE, note not a DLL. A bug/issue exists that loading a DLL does not completely init the mono environment.

Using Monobjc I export my C# classes to the Cocoa world. This is why the mono executable must be properly initialized first, so that when the NIB files are loaded by Cocoa it will find my registered mono classes.

In the NIB file I add an NSObject and set the class to be the name of my C# class, say MonoObject. Add some class outlets to the MonoObject in the NIB file that point to array/tree controllers within that NIB file. The tree controller's mode should be class and the class name most likely will be NSMutableDictionary, though it can be a class defined in mono as well. You can add keys to these controllers to make binding easier on the table views. Speaking of the table views, you simply point them to the tree controller and bind as usual.

Back in your C# class you will have a NSTreeController variable that is hooked up by monobjc to the tree controller in the NIB file. Whenver appropriate you can, from within C#, clear the tree controller data, add data, remove data etc. I call something like treeController.addObject(<myobject>) where myobject is an instance of a C# class. That class then must register the methods to expose the keys you have setup in the tree controller.

You most likely will need to send a reload data notification to the views that use these tree controllers. So you should also set class outlets that point to these views so that you can send them reload data messages. PostNotification is a nice way to send messages to your mono class so that it can load the data as needed.

Another solution is to set your table view's/outline view's datasource to be MonoObject. Just provide the datasource methods in your C# class. I have not implemented this way but I think I'm leaning toward switching.

Not a lot of detail here but hopefully it helps.
Duane

On Fri, Nov 21, 2008 at 9:44 AM, Mario De Clippeleir <[EMAIL PROTECTED]> wrote:
Hi,



I am trying monobjc to port an existing .NET application to the Mac. I would like to use a DLL in which an object model resides. When loading a file, the object model is being filled. This logic is all in the library.

Now, my question is : if I want to use binding for the Mac gui, do I need the "wrap" the object classes from the library into Managed object classes ? What would be the best way to handle this ?



On another note : In the latest monobjc distribution, I can't seem to get the TwoManyControllers project working. "The document TwoManyControllers.exe could not be opened. TwoManyControllers cannot open files in the EXE File format."

I mean, it loads up, but you can't do anything…

Does anyone else has this problem ?



Thanks,



Mario

 

Reply via email to