Pregunta

El cacao utilizado para trabajar en CS3 con el truco de poner un paquete de Cacao dentro de la principal de Carbono plugin bundle, la carga de Carbono y la emisión de un NSApplicationLoad().Eso es porque Photoshop CS3 fue de Carbono-y sólo se utiliza para descargar el plugin de paquetes.

Photoshop CS4 usos del Cacao y tiene su propio NSAutorelease piscina en el lugar en el subproceso principal.

En Photoshop CS4 muy simple ventana basada en xibs/puntas cargado por un NSWindowController trabajar fuera de la caja.

Pero acaba de agregar un enlace a un control en la ventana y tendrás divertido accidentes, opcionalmente al cerrar la ventana, o la segunda vez que uso el plugin, o incluso al cierre de Photoshop en sí.

Por qué todo parece funcionar bien hasta que yo uso algunos de los más avanzados de Cacao características?Estoy atascado.

EDITAR:Realmente he encontré la solución para el problema más amplio "Cómo utilizar Cacao en Photoshop CS3/CS4 plugin?".Ver a continuación.

¿Fue útil?

Solución

Usted tendrá que crear una nueva Cargable Paquete de destino que contiene sus puntas y su Cacao código.Agregar el paquete de productos para la Copia Paquete De Recursos fase de tu plugin.A continuación, el código de un plugin de filtro que se carga una ventana Cocoa con algunos controles sería:

Boolean DoUI (void) {

    // Create the CF Cocoa bundle
    CFBundleRef pluginBundle;
    CFURLRef cocoaBundleURL;
    pluginBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.example.plugin"));
    cocoaBundleURL = CFBundleCopyResourceURL(pluginBundle, 
                                             CFSTR("Cocoa_bundle"), 
                                             CFSTR("bundle"), 
                                             NULL);
    CFBundleRef cocoaBundleRef;
    cocoaBundleRef = CFBundleCreate(kCFAllocatorDefault, cocoaBundleURL);
    CFRelease(cocoaBundleURL);

    // start Cocoa (for CS3)
    NSApplicationLoad(); 

    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

    // load the cocoa bundle by identifier
    NSBundle* cocoaBundle;
    cocoaBundle = [NSBundle bundleWithIdentifier:@"com.example.plugin.cocoa"];

    // load the window controller from the bundle
    Class testControllerClass;
    testControllerClass = [cocoaBundle classNamed:@"MyWindowController"];

    MyWindowController* winController = [[testControllerClass alloc] init];
    [NSApp runModalForWindow:[winController window]];
    [[winController window] performClose:nil];
    [winController release];

    // release the bundle
    CFRelease(cocoaBundleRef);

    [pool release];

    return 1;
}

Esto se basa en el Craig Hockenberry paquete truco.Todavía estoy probando pero se debe trabajar tanto en CS3 y CS4.

Otros consejos

Acabo de comenzar a trabajar en la escritura de un Cacao basada en plug-in para CS4.En realidad, casi no hay información que hay sobre este tema, y he estado pensando que como me vaya.

  • Inicio de esta Manzana ejemplo, y asegúrese de descargar todo el proyecto, porque hay un par de pequeños detalles que faltan en el texto:

Carbono/Cacao

  • Elige una de las Photoshop SDK de ejemplos (yo usé ColorMunger), y mantenerlo simple para empezar, así que trate de reemplazar el "Acerca de" del cuadro de diálogo, el uso de la Manzana de ejemplo como la plantilla.Una vez que usted tiene que trabajar sin problemas de memoria, usted debe estar en su camino.

He sido un Java y Ruby programador de 10 años, así que mi C/C++ foo es malo, y yo soy sólo el aprendizaje de Objective C como voy.Dos de las "trampas" que me encontré, por si acaso....

  • NO se crea un objeto de controlador en su PUNTA/archivo XIB.Porque, basándose en que Apple ejemplo, el controlador abre el archivo NIB en su método init, y se obtiene una interesante bucle recursivo
  • El Apple ejemplo es la incrustación de Cacao cosas en una base de Carbón C aplicación.El Adobe ejemplos son todos los de C++.No se olvide de su extern "C" {} en el archivo de encabezado.

CS2 se carga PowerPC Mach-O código tan fácilmente como CS3/CS4.Alguien ha probado esta Cacao enfoque en CS2?

Actualmente yo uso Carbono para CS2/CS3/CS4 como esto está garantizado para trabajar en todas partes el plugin de carga;y el Cacao para CS5 de curso, ya sea de 32 o 64 bits.

Chris Cox no es optimista acerca de Cacao de trabajo en otra cosa que en CS5:http://forums.adobe.com/message/3256555#3256555

Así que ¿cuál es el verdadero problema aquí?Es bastante difícil de ignorar los consejos de la boca del caballo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top