#include "pbd/convert.h"
#include "pbd/error.h"
+
#include "ardour/audio_unit.h"
+#include "ardour/debug.h"
#include "ardour/plugin_insert.h"
#undef check // stupid gtk, stupid apple
smaller_hbox->set_spacing (6);
smaller_hbox->pack_start (preset_label, false, false, 4);
- smaller_hbox->pack_start (_preset_box, false, false);
+ smaller_hbox->pack_start (_preset_combo, false, false);
smaller_hbox->pack_start (save_button, false, false);
#if 0
/* one day these might be useful with an AU plugin, but not yet */
cocoa_parent = 0;
_notify = 0;
cocoa_window = 0;
+ carbon_window = 0;
au_view = 0;
editView = 0;
if (test_cocoa_view_support()) {
create_cocoa_view ();
+#ifdef WITH_CARBON
} else if (test_carbon_view_support()) {
create_carbon_view ();
+#endif
} else {
create_cocoa_view ();
}
}
+#ifdef WITH_CARBON
if (carbon_window) {
/* not parented, just overlaid on top of our window */
DisposeWindow (carbon_window);
}
+#endif
if (editView) {
CloseComponent (editView);
&isWritable );
numberOfClasses = (dataSize - sizeof(CFURLRef)) / sizeof(CFStringRef);
-
+
// Does view have custom Cocoa UI?
if ((result == noErr) && (numberOfClasses > 0) ) {
+
+ DEBUG_TRACE(DEBUG::AudioUnits,
+ string_compose ( "based on %1, there are %2 cocoa UI classes\n", dataSize, numberOfClasses));
+
cocoaViewInfo = (AudioUnitCocoaViewInfo *)malloc(dataSize);
if(AudioUnitGetProperty(*au->get_au(),
kAudioUnitProperty_CocoaUI,
&dataSize) == noErr) {
CocoaViewBundlePath = (NSURL *)cocoaViewInfo->mCocoaAUViewBundleLocation;
-
+
// we only take the first view in this example.
factoryClassName = (NSString *)cocoaViewInfo->mCocoaAUViewClass[0];
+
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("the factory name is %1 bundle is %2\n",
+ factoryClassName, CocoaViewBundlePath));
} else {
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("No cocoaUI property cocoaViewInfo = %1\n", cocoaViewInfo));
+
if (cocoaViewInfo != NULL) {
free (cocoaViewInfo);
cocoaViewInfo = NULL;
if (CocoaViewBundlePath && factoryClassName) {
NSBundle *viewBundle = [NSBundle bundleWithPath:[CocoaViewBundlePath path]];
+
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("tried to create bundle, result = %1\n", viewBundle));
+
if (viewBundle == nil) {
error << _("AUPluginUI: error loading AU view's bundle") << endmsg;
return -1;
} else {
Class factoryClass = [viewBundle classNamed:factoryClassName];
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("tried to create factory class, result = %1\n", factoryClass));
if (!factoryClass) {
error << _("AUPluginUI: error getting AU view's factory class from bundle") << endmsg;
return -1;
return -1;
}
+ DEBUG_TRACE (DEBUG::AudioUnits, "got a factory instance\n");
+
// make a view
au_view = [factoryInstance uiViewForAudioUnit:*au->get_au() withSize:crect.size];
+
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("view created @ %1\n", au_view));
// cleanup
[CocoaViewBundlePath release];
if (!wasAbleToLoadCustomView) {
// load generic Cocoa view
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("Loading generic view using %1 -> %2\n", au,
+ au->get_au()));
au_view = [[AUGenericView alloc] initWithAudioUnit:*au->get_au()];
+ DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("view created @ %1\n", au_view));
[(AUGenericView *)au_view setShowsExpertParameters:YES];
}
int
AUPluginUI::create_carbon_view ()
{
+#ifdef WITH_CARBON
OSStatus err;
ControlRef root_control;
low_box.set_size_request (prefwidth, prefheight);
return 0;
+#else
+ error << _("AU Carbon GUI is not supported.") << endmsg;
+ return -1;
+#endif
}
NSWindow*
void
AUPluginUI::activate ()
{
+#ifdef WITH_CARBON
ActivateWindow (carbon_window, TRUE);
+#endif
// [cocoa_parent makeKeyAndOrderFront:nil];
}
void
AUPluginUI::deactivate ()
{
+#ifdef WITH_CARBON
ActivateWindow (carbon_window, FALSE);
+#endif
}
int
AUPluginUI::parent_carbon_window ()
{
+#ifdef WITH_CARBON
NSWindow* win = get_nswindow ();
int x, y;
[win addChildWindow:cocoa_parent ordered:NSWindowAbove];
return 0;
+#else
+ return -1;
+#endif
}
int
void
AUPluginUI::on_window_hide ()
{
+#ifdef WITH_CARBON
if (carbon_window) {
HideWindow (carbon_window);
ActivateWindow (carbon_window, FALSE);
}
+#endif
hide_all ();
}
show_all ();
+#ifdef WITH_CARBON
if (carbon_window) {
ShowWindow (carbon_window);
ActivateWindow (carbon_window, TRUE);
}
+#endif
return true;
}