كيفية تنفيذ البرنامج المساعد Adobe Photoshop القائم على الكاكاو

StackOverflow https://stackoverflow.com/questions/1108550

  •  12-09-2019
  •  | 
  •  

سؤال

الكاكاو تستخدم للعمل على CS3 مع خدعة من وضع حزمة الكاكاو داخل حزمة البرنامج المساعد الكربون الرئيسي, ، قم بتحميله من الكربون وإصدار تنزيل NSapplication (). ذلك لأن Photoshop CS3 كان الكربون فقط ويستخدم لتفريغ حزم البرنامج المساعد.

يستخدم Photoshop CS4 الكاكاو ولديه تجمع NSAutorelease الخاص به في مكانه الرئيسي.

على Photoshop CS4 XIBS / NIBS بسيطة جدا من النافذة المحملة من قبل NSWindowController يعمل خارج الصندوق.

ولكن فقط أضف ملزمة للتحكم في النافذة وستحصل على تعطل مضحك، اختياريا عند إغلاق النافذة، أو المرة الثانية التي تستخدم فيها البرنامج المساعد، أو حتى عند إغلاق فوتوشوب نفسه.

لماذا يبدو أن كل شيء يعمل بشكل جيد حتى أستخدم بعض ميزات الكاكاو المتقدمة؟ انا عالق.

تعديل: لقد وجدت نفسي حقا الحل للمشكلة الأوسع "كيفية استخدام Cocoa في البرنامج المساعد Photoshop CS3 / CS4؟". انظر أدناه.

هل كانت مفيدة؟

المحلول

عليك إنشاء جديد حزمة تحميل الهدف الذي يحتوي على NIBS الخاص بك ورمز الكاكاو. أضف المنتج حزمة إلى نسخ رزمة الموارد مرحلة من البرنامج المساعد الخاص بك. ثم الرمز للحصول على برنامج تشغيل مرشح يقوم بتحميل نافذة الكاكاو مع بعض عناصر التحكم سيكون:

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;
}

هذا يعتمد على كريج هوكر حزمة خدعة. وبعد ما زلت لاختبارها ولكن يجب أن تعمل على حد سواء على CS3 و CS4.

نصائح أخرى

لقد بدأت للتو العمل على كتابة مكون إضافي قائم على الكاكاو ل CS4. في الحقيقة، لا يوجد أي معلومات تقريبا هناك على هذا الموضوع، ولقد أعتبرها كما أذهب.

  • ابدأ من مثال Apple هذا، وتأكد من تنزيل المشروع بأكمله، لأن هناك بعض التفاصيل الصغيرة المفقودة من النص:

الكربون / الكاكاو

  • اختر أحد أمثلة Photoshop SDK (استخدمت Colormunger)، واستمر في البدء بسهولة، لذلك حاول فقط استبدال مربع الحوار "حول"، باستخدام مثال Apple كقالب الخاص بك. بمجرد أن يكون لديك هذا العمل مع عدم وجود مشاكل الذاكرة، يجب أن تكون في طريقك.

لقد كنت مبرمج Java و Ruby لمدة 10 سنوات، لذلك فو C / C ++ الخاص بي صدئ، وأنا فقط أتعلم الهدف C كما أذهب. اثنين من "gotchas" ركضت، فقط في حالة ....

  • لا تقم بإنشاء كائن وحدة تحكم في ملف NIB / XIB الخاص بك. نظرا، بناء على ذلك على سبيل المثال Apple، يفتح جهاز التحكم في ملف NIB في طريقة IT الخاصة به، وحصلت على حلقة متكررة مثيرة للاهتمام حقا
  • يضم مثال التفاح الأشياء الكاكاو في تطبيق C على أساس الكربون. أمثلة Adobe هي جميع C ++. لا تنسى خارجية "C" {} في ملف رأسك.

سيتم تحميل CS2 كود PowerPC Mach-o بسهولة كما CS3 / CS4. هل اختبر أي شخص نهج الكاكاو هذا في CS2؟

حاليا أستخدم الكربون ل CS2 / CS3 / CS4 لأن هذا مضمون للعمل في كل مكان تحميل البرنامج المساعد؛ والكاكاو ل CS5 بالطبع، سواء 32 أو 64 بت.

كريس كوكس غير متفائل بشأن كاكاو يعمل في أي شيء آخر غير CS5:http://forums.adobe.com/message/325655993256555.

إذن ما هي الصفقة الحقيقية هنا؟ من الصعب جدا تجاهل المشورة من فم الحصان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top