Hi Chris,
This is a complete shot in the dark:
what happens if instead of referencing 'toObject:patchController'
you reference: 'toObject:YourQCView'
I've been troubled by some code that tries to set a value [an image]
to a published image port - when it address the QCcontroller it fails
- but when I address the QCview - it works.
[myQCController setValue: image forInputKey:
@"patch.myQCImage.value"]; -- fails
[myQCController setValue: image forInputKey: @"myQCImage"]; -- fails
[myQCView setValue: image forInputKey: @"myQCImage"]; -- works
I note that myQCView is not an outlet in my application controller
implementation (myController) but myQCController is:
IBOutlet id myQCController;
I can send you my demo code if you need it: it uses webkit to load a
URL, get an image of the webpage, and sends the NSimage to a
NSImageView then sends the image into a QC composition.
Regards, Ian
*******************************
Ian Grant
Senior Lecturer in Digital Art
Faculty of the Arts
Thames Valley University
Ealing, UK
W5 5DX
<[EMAIL PROTECTED]>
*******************************
On 16 Jan 2008, at 19:11, Chris Adamson wrote:
I'm working through an experiment, and I think I'm close, but I'm
not quite lining things up. I've Googled old list entries and
haven't found an answer yet.
In a nutshell, I want to bind the return value of a method in my
main window's controller to an input on Quartz Composer
composition. Ultimately, the demo will use QC to render the audio
level of a QuickTime movie, which will satisfy my curiosity about
using QC as a nifty way to render application data.
The trick is getting the bindings worked out. I've been working
from the Quartz Composer Programming Guide and the Cocoa Bindings
Programming Topics docs, as well as various tech notes and blogs
I've found by way of Google.
The first thing I wanted to convince myself of is that it would work
to bind a method's return value to a GUI component (this is implicit
in KVC looking for methods or variables that match the bound key; I
just wanted to see it for myself). I created an Object Controller,
connected it to MyController in IB, and used IB to bind an
NSTextField to Object Controller.selection.movieLevel. Works fine,
returns my current dummy value.
So next, I started working on the QC side of the equation. I added
a QCView and a QCPatchController, loaded the the composition into
the controller, and connected the view to the controller with IB.
Simulating this from IB worked: I saw my composition in the window.
Now, here's what I think is the hard part: binding the method in
MyController to the input in the QC composition. It occurs to me
that IB doesn't know about my controller's method name, or about the
inputs to the composition. If I understand the situation, this
means I need to establish the binding programmatically.
To do that, I add variables for the NSObjectController (still
connected to MyController from before), and the QCPatchController to
MyController.h:
IBOutlet id patchController;
IBOutlet NSObjectController *objController;
Note that I used a plain id because QCPatchController doesn't have a
public header. OK, so I connected MyController to these respective
objects, so now I think I have what I need for MyController to
programmatically bind its own movieLevel method (by way of the
objController) to the input on the QC composition. So I try the
following in awakeFromNib:
- (void)awakeFromNib {
NSLog(@"awakeFromNib!");
[objController bind:@"selection.movieLevel"
toObject:patchController
withKeyPath:@"patch.MyText.value"
options:nil];
NSLog (@"Called bind");
}
And... it doesn't work. The runtime tells me that something here
isn't KVC compliant:
2008-01-16 14:06:19.797 QCLevelMeterExperiment1[2244:10b]
awakeFromNib!
2008-01-16 14:06:19.819 QCLevelMeterExperiment1[2244:10b] An
uncaught exception was raised
2008-01-16 14:06:19.821 QCLevelMeterExperiment1[2244:10b]
[<NSObjectController 0x18dd60> setValue:forUndefinedKey:]: this
class is not key value coding-compliant for the key
selection.movieLevel.
So, that's the situation. I can't tell if I'm on the right track
and just haven't provided appropriate paths for the binding, or if
I'm really going off in the wrong direction.
Thanks in advance for any advice. If it turns out that someone's
already written this up or blogged it, then apologies for not
managing to find it.
--Chris
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected]
)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/ian.grant%40mac.com
This email sent to [EMAIL PROTECTED]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]