Porting a cocoa app to carbon?

I have a few cocoa apps that i would like to port to carbon because cocoa views are just not widely supported enough yet for that I am doing. I know this question is vague, but is this a "do it in a weekend" feat, or am I just going to end up beating my head against a wall? I just want general responses/tips/warning from anyone who has been in this same predicament. Also... if by some feat of magic there is a plugin or some way to automate or simplify this process... I am ALL ears!
Thank you.

etresoft wrote:
You are worrying about serving an existing customer base that already has a set of legacy tools and is reluctant to change. Are they really your market?
How long is it going to take you to develop your software? When your software is ready (using Carbon or Cocoa), what is your market going to look like then?
It seems to me that the Carbon market is already established and reluctant to change. It is currently the largest market in this industry, but it is still the market of the past. It is only going to get smaller. All those tools aren't even sold anymore. You need to work on a product targeted at what the market is going to look like in the future.
I understand. Thank you for listening to my ramblings and offering advice. I am not producing any product at the moment... just getting a feel for the market and the current and possible future stumbling blocks. I am trying to allow for backward compatibility without having to code everything twice (but it looks like that is unavoidable), like back in the pre OSX days of the 90's where you had to code a carbonized plugin, a legacy plugin and a 68k plugin because studios clung tenatiously to the $10,000 Mac Quadras they had purchased just a few years before (understandably so at that price). Apple sees things this way as well as is evidenced by Rosetta (currently) and the 68k emulator back in the MacOS days.
As of right now, the way the market looks is that it is a carbon market since none of the major players like MOTU, Digidesign, Steinberg support/adequately-support cocoa views, and Digidesign's Pro Tools (which holds the lion's share of the market) is not even ported to Leopard yet... and I anticipate from experience issues and bugs with their cocoa implementation when it does happen, so i don't expect bug-free compliance immediately or even for a period after they are forced into cocoa when they all eventually go 64-bit native... which is likely a period of a year or more.
That sort of compatibility would sidestep stigma as well. Many users don't care about cocoa/carbon, SSE/SSE3, or Aqua from their left foot. They just know that if they attempt to load up a plug in their DAW and the UI does nothing that obviously tour product is "broken".... and will slag you off online as such. I have seen it repeatedly in comments on various press releases: "don't buy this, I loaded it up and it didn't do anything". I lament the slow change in this particular nitch, but that is the way of it. I would love if overnight I could optimize for Intel/Leopard/64-bit/Cocoa, but as it is, we are in 10.5.2 and plugins have to be built against older SDKs and optimized for 10.3 deployment, PowerPC and Carbon to be completely compatible across the board.
So maybe I am barking up the wrong tree. Instead of backporting my tools, maybe I should be focusing on a compatibility translator of sorts... maybe a carbon wrapper or something like that.
Thank you for your help.

Similar Messages

  • Porting an iPhone app to a desktop app

    I am new to objective C and Cocoa, and yet have managed to develop a pretty complex app for the iPhone.
    Being lazy, I would like to also run this on a Mac Pro for instance, or other Mac computers/laptops.
    Is there a simple way for me to "port" my iPhone app to the desktop?
    Thanks.

    Well its not necessarily easy, and you also have to think about rewriting your views for Mac OS X, and not the iPhone, and also keep in mind you have to have a completely different interface in Mac OS X compared to the iPhone. Note that something complex in a mobile device might not be complex at all on a full desktop environment. But considering you have already created the application for the iPhone, you know where your headed and have your objects planned out, and also saying that you can program Mac in the same coding language, it should be easier than scratch right?

  • Display a modal window in a single cocoa app

    Hi,
    I have a single cocoa app(non document base), I need to display another window modally, any hint how to do this? thanks,
    Angelo

    xcode960,
    my friend, you are using outdated terminology. this is probably causing you no end of challenges.
    the concept of a modal window has been laid to rest. why? well OS X is a true multi-tasking OS. so there are no windows That will grab the whole screen and not let it go. You can hack one up, but it is simply bad UI design, and leads to a poor user experience.
    so lets talk about options:
    1. Sheets. Apple developed the sheet concept to replace modal dialogs. it requires user input JUST LIKE modal windows, but sheets are Application specific and do not upset the multitasking nature of OS X.
    2. tabs. you can make a hidden tabview with 2 views in your main window. the first one contains your application's ui, the second has your modal content. The tabs are hidden, which allows you to programatically switch them. This lets you take the UI away from the user and require them to deal with your modal content before you allow them to continue.
    I'm sure there are many other ways of going about this, but the most important thing to be aware of is that Modal windows are highly discouraged these days, so support for them is NOT available.

  • Display a simple image in a cocoa app

    Hi,
    Many of you were really nice helping me figure out my past battles (Basic math/text)
    Now, I am writing a cocoa app where I'd click a button and an image would pop up
    in a designated area (like a display).  Mainly whenever something happens in the app,
    the image would change to a specific jpeg to match the text info.
    What is the easiest/simplest way to get this done?
    Thanks.

    I simply use ImageIcon object to display the image (*.gif,*.jpg)
    JLabel l=new JLabel(new ImageIcon("file path"));
    add the label to a panel or frame or dialog
    this object no need to use the ImageBuffered Object
    It can display any animate gif whether the background is transparent or not.

  • Python and PyObjC, developing native Cocoa apps rapidly!

    Python is all grown up it seems for developing native OS X applications. For those who want to check out how to rapidly put together native Cocoa apps in less than half the lines of code and none of the manual memory management of the C derivative languages, Apple now has some articles on the developer site to inspire and to help point the way.
    Although my personal preference is wxPython for making GUI's that will look like native Windows/OSX/Unix applications no matter what platform the python app is run on I still will give PyObjC a go.
    wxPython - http://www.wxpython.org/
    MacPython - http://wiki.python.org/moin/MacPython/
    Using PyObjC - http://developer.apple.com/cocoa/pyobjc.html
    Python/PyObjC Inspiration - http://developer.apple.com/business/macmarket/checkout.html
    Mac Mini (Home), Dell Laptop [removed Windows, installed Ubuntu Linux] (Work)   Mac OS X (10.4.10)   badvista.fsf.org

    Note: Fixed omission of link to checkout
    Quicktime Tour of the Python/PyObjC Application in action:
    http://www.checkoutapp.com/show/quicktours#

  • How to run the cocoa app directly after completion of downloading ?

    Hi ,
    How to run the cocoa app directly on mac after completion of downloading ? I have a .app at server , I want to run the .app automatically after download and the .app should not save at download directories .
    Thanks

    hi,
    There is no need to burn on Disk..instead run the runInstaller file fiom Disk1/install..please read the readme.txt file before installation..
    check the kernel parameter and Even set the DISPLAY before installtion,in order to get proper GUI
    Regards
    Fabian

  • Porting a Workshop app to another J2EE server?

    Hello all. I'm new to WL Workshop and have been reading abou the required Workshop
    Runtime. Is this something that could be ported to another J2EE compliant server?
    I noticed the PageFlow Portability Kit for the page flows... but what about the
    Runtime engine itself?
    Also, does anyone know what is contained in it or how it is deployed. If its as
    simple as a jar that could be moved over that would be nice... but I doubt its
    as simple as that. thanks!

    Blake--
    The "Runtime Engine" that you mention is the Workshop controls
    runtime. Carl Sjogreen addresses portability in a post in this
    newsgroup from 9/24/2003. Instead of rephrasing his comments, I've
    pasted them below and suggest the "Application portability" thread as
    good reading.
    Controls fall into the class of artifacts that can be built using
    Workshop but which are not 100% portable today. This includes controls
    like the Database Control and EJB Control. Remember, though, that
    controls are often abstractions over standard J2EE technologies; in the
    case of these controls for example, the underlying technologies are just
    JDBC Prepared / Callable Statements and existing EJBs.
    The portable version of Page Flows does not support controls, but it
    does support all of the J2EE technologies such as JDBC, JNDI, EJB, and
    so on.
    Hope that helps...
    Eddie
    ::::: Application Portability from 9/24/2003 by Carl Sjogreen
    John --
    Good question. We're constantly pulled between delivering innovation
    and value to our customers and ensuring that the applications we build
    are standards based and portable. Here's what we are doing to address this:
    1) You can always build 100% standard based applications in Workshop
    that are as portable as any other J2EE application. Write Java files,
    use EJBgen to create EJBs, etc.
    2) Where we innovate, we innovate on top of existing standards. Witness
    what we are doing with Pageflows, which is built on top of Struts. As
    Web Services standards mature (JSR 109 in particular) we'll move JWS
    files to support 109 deployment artifacts.
    3) We are aggressively pursuing standardization, portability, and open
    source for innovations we introduce. A few proof points:
    * The key innovations behind JWS files are being standardized as part of
    the Java Community Process in JSR 181. When this standard goes final
    (early next year hopefully) you'll be able to take your JWS files to
    other platforms.
    * We will provide "portability kits". In SP2 (due later this year)
    we'll provide a portability kit so you can take any pageflow file and
    run it on other J2EE containers. This basically includes a set of stand
    alone build tools and the few runtime classes we've added on top of struts.
    * We've open sourced key technologies like XMLBeans. XMLBeans is now
    being incubated as part of the Apache Software Foundation
    (http://xml.apache.org/xmlbeans).
    So I think you'll find that while not everything you build in Workshop
    is 100% portable today, a lot is, and more will be down the road.
    Any questions, please let me know.
    Best,
    -Carl
    Carl Sjogreen
    Group Product Manager
    WebLogic Workshop
    "John Reynolds" <[email protected]> wrote in message
    news:[email protected]...
    Raj,
    Thanks for forwarding this on to your Product Managers.
    Application portability is one of the big selling points for Java, so
    it would be a shame if Bea did not have runtime licenses for deploying
    the workshop runtimes on any J2EE certified app-server. I don't think
    my company has any problems in paying for quality software, but they do
    have problems when the "Write once, run anywhere" Java pledge is broken
    (since that's what sold them on Java vs. .Net in the first place).
    Having said that, I really applaud what Bea has done so far. For
    example, Bea's donation of XmlBeans to Apache was a truly great thing.
    Blake wrote:
    Eddie,
    The "Weblogic Workshop Internals" document also talks about the "Runtime Engine".
    Here is a blurb from the top of the doc: "<contains> a runtime infrastructure
    that supports application features; the runtime consists of J2EE components deployed
    on WebLogic Server "
    Later in the doc they mention some EJB's such as the SynchBean and AsyncBean which
    utilize JMS. This is the info I need to provide my client if they decide to port
    to another app server. We now know that the webapp is portable... its the J2EE
    components that is the final piece of the puzzle. thanks!
    -Blake

  • Speed Issue (when AS is used in a Cocoa app)

    Folks;
    First I have posted this on the Cocoa list!
    I am also posting this here because I believe the underlying issue is somewhere between Cocoa and AppleScript and I am not certain where I will find useful advice...
    I have a Cocoa app that has some iPhoto integration.
    Since there is no Cocoa API for iPhoto, like there is for AddressBook, the only way I know to do this is through AppleScript.
    Any other ideas here would be appreciated....
    BTW: This is OS 10.4.10; Xcode 2.4.1; iPhoto 6.0.6; 2 GHz C2D
    The Cocoa app has a compiled AppleScript which I call into for the various handlers with the parameters I need.
    This is working well in every other case.
    For the record it looks like this:
    thisResult = [[[NSApp delegate] asEngine] executeAppleEvent:[ASCode callSub:@"getiPhotoImage" params:
    [NSAppleEventDescriptor descriptorWithString:path],
    nil] error:&errorDict];
    However I have a case where it is taking 25 seconds to execute a single AppleScript statement!
    This same statement has sub-second response when executed in the Script editor.
    If I simulate the Cocoa calls with various handlers in the Script Editor everything is fine - performance is fine!
    I have logging statements embedded in both Cocoa and AppleScript which have allowed me to hone in on the offending statement.
    The result is perfectly repeatable. Every time it takes 25 SECONDS to execute the following:
    [Cut and Paste this into a Script Editor - should work fine...(just change the myPath variable to make it work or fail]
    [You can also save it as a run-only application to see the performance is that incarnation...]
    set myPath to "/Users/SOMEUSERNAME/Pictures/iPhoto Library/Originals/2007/Roll 1/SOMEPICTURENAME.jpg"
    tell application "iPhoto"
    try
    set thisPhoto to first photo whose image path is myPath -- << THIS IS THE CULPRIT
    if thisPhoto exists then
    display dialog "'" & name of thisPhoto & "' was found"
    else
    display dialog "This branch will never occur"
    end if
    on error e number n
    if n = -2753 then
    display dialog "Requested photo was NOT found"
    else
    display dialog "Error: " & n & " - " & e
    end if
    end try
    end tell
    Could anyone shed any light on what is going on here?
    Is there a hidden AppleScript feature like iTunes' 'fixed indexing' which might improve response times?
    Why does it work in Script Editor or as a AS run-only application but then yield such miserable performance under Cocoa?
    Thanks for any and all thoughts!
    Steve

    For the record, the reported issue seems to have been solved.
    http://lists.apple.com/archives/cocoa-dev/2007/Oct/msg01012.html

  • How to launch iCal on specified date from Cocoa app?

    Hi, I would like to launch iCal from my Cocoa app, but have iCal open on a specific date that I want to pass as an argument.
    I am launching iCal as follows:
    [[NSWorkspace sharedWorkspace] launchApplication:@"iCal"];
    This opens iCal fine. But, is it possible to somehow pass the date I would like iCal to open at?
    Thanks indeed.
    Andy

    Third-party alternative to Scripting Bridge that may be of interest:
    http://appscript.sourceforge.net/
    More reliable, better documentation, better developer tools, supports back to OS X 10.3.9, yadda-yadda. Only relative disadvantage is that you have to bundle or install it yourself, but that's not hard.
    Example:
    // To create glue [1]: osaglue -o ICGlue -p IC iCal
    ICApplication *ical = [ICApplication applicationWithName: @"iCal"];
    NSDate *date = [NSDate dateWithString: @"2008-10-22 00:00:00 +0000"];
    ICViewCalendarCommand *cmd = [[ical viewCalendar] at: date];
    NSError *error;
    id result = [cmd sendWithError: &error];
    if (!result)
    NSLog(@"%@", error);
    Note that when building a framework for inclusion in an application bundle you need you tweak the build settings slightly, e.g. see:
    http://cocoadev.com/index.pl?EmbeddingFrameworksInApplications
    HTH
    [1] Note: I'm currently integrating osaglue into ASDictionary to make it simpler to use, but haven't updated the old osaglue documentation yet. ASDictionary 0.12.0 should be released in another day or two; in the meantime I suggest just using the iCal glue files from the ViewCalendarInICal sample project in the objc-appscript repository.
    Message was edited by: hhas

  • Quitting a Cocoa app

    Hi there,
    In the midst of developing my Cocoa app, I have decided to bring up my own warning message when the user chooses the Quit item from the menu bar. All is working fine when I did the following. I created my own class in Interface Builder, and linked that blue box to the "Quit NewApplication" item in the menu bar, and linked it to an action which brings up my warning window. When the user hits the "Quit Anyway" button, it does this;
    NSLog(@"User quit the app");
    //quits the app
    [NSApp terminate:nil];
    That's all cool, but for some reason, when the user holds the icon in the dock and selects "Quit", the app will terminate on its own accord (and not like the "Quit NewApplication" menu item). I have been told to make the class an "Application Delegate".
    I did so by Control-dragging from the 'File's Owner' to the my own 'QuitApplication' and select 'delegate' but this still does not solve the problem.
    What am I doing wrong?
    Thanks,
    Ricky.

    Ricky,
    The "Quit" item in your menu bar worked because you actually connected it up to your action in IB. The "Quit" item in the Dock menu is a different menu item on a different menu so it was not connected to your action. And I'm not sure exactly when/where dock menus get created... although I suppose they're created programmatically when an application launches. So you'd probably have to connect your action to that menu item programmatically (ie not in IB).
    But... like others have said, that's not really the right way to do what you're wanting to do. Leave the Quit menu item connected to the terminate action like it originally was.
    Delegation and/or Notification is what you need to look at. They are similar concepts. Read this page on Delegating Authority - Cocoa Delegation and Notification for an explanation of both concepts and the differences. Notifications are more generalized and allow multiple "observers" to register for and receive the same notification. On the other hand a class typically only has one delegate.
    It sounds like you want to detect when your app is about to quit. warn the user that they may be quitting at a bad time and potentially give the user the option of either continuing with the termination or allowing the app to keep running.
    Delegation should work for this. The NSApplication object has a delegate method called:
    - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
    If you connect your class to the application object in IB as it's delegate AND you create the above method in _your class_ then your method will get called when the application is about to terminate. Inside your "applicationShouldTerminate" method you can display your dialog and get the user's response (ie "Yes - go ahead and quit" or "No - don't quit now"). Based on the user's response you would return NSTerminateNow or NSTerminateCancel.
    PsychoH13 mentioned "applicationWillTerminate" in his post. But if you're wanting to potentially cancel the termination then you need to use "applicationShouldTerminate" instead. Delegate methods that contain the word Should allow the delegate to return a yes or no value and cancel the action that's about to happen. Methods that contain the word Will are letting the delegate know that the action _will happen_ giving the delegate a chance to do last minute things but not allowing the delegate to cancel the action.
    Steve

  • Small Cocoa Apps not working with 10.7.4

    All my small Cocoa Apps based on Quicktime no longer work after upgrading.
    Also Applescript no longer display folders and windows to save or choose them
    Closed apps and windows reopen after shooting down the machine
    Am i the only one?

    I'm Back to SnowLeopard. Lion is a joke for serious Desktop work.
    I wonder what goes on after being there since Apple ][.
    BTW since my original Macintosh (1984) until Yosemite everything still works .... since intel and perhaps system X both hardware and software need constant replacements ...

  • Listening port in oracle app. server 10gR2 in window 2003

    Hi Experts,
    How to find a listening port number of app. server?
    Thanks,
    Jim

    Check on the midtier home, the %ORACLE_HOME%\Apcahe\Apache\conf\httpd.conf file for port directive. Or if you have SSL-configured on the AS, the check ssl.conf file in the same location for the same directive.
    or Alternatively, log on to the EM for midtier. Go to ports and see the Webcache port for listen.
    Remember that these will be the listen ports for Webcache. For port where OHS will listen can be obtained by looking for Listen directive in the above files, and on EM, the port listed for OHS Listen (or SSL Listen, in case of SSL).
    Edited by: AMN on Dec 2, 2008 10:42 AM

  • Not a single cocoa app opening after the 10.5.6 update

    I have a serious problem. Not a single cocoa application (Safari, Mail, Pages, etc.) will open for me. It will bounce in the dock and then crash. The Carbon apps are fine (iTunes, FFox, Finder) I have no idea why. Any ideas?

    I agree that repairing permissions before & after installing an update is more of a voodoo-like ritual than sound advice based solidly on fact.
    Once, in the early days of OS X, it was not entirely uncommon for certain non-Apple product installers to set permissions to unusual values to facilitate installing some app & then fail to reset them afterwards, or to reset some file permissions they should not. This at least explains why the advice to repair permissions after an update became common -- some users have an unfortunate habit of thinking that what fixes one specific issue might have some mysterious ability to fix others, so they add it to a ritualistic formula designed to prevent any problems, whether still applicable to the current software climate or not.
    Just to remove any lingering doubt about this, users should note that AFAIK, no Apple product installer ever has been shown to do this & current OS updaters certainly don't. As mentioned, some users confuse innocuous warnings with mis-set permissions, which seems to perpetuate the idea that the OS update installers frequently cause permissions problems, but this is a misconception.
    What is worth doing prior to installing an OS update is Disk Utility's "Verify Disk" test, & if it shows anything is amiss, rebooting from the installer DVD & running the "Repair Disk" step. This is because disk file system problems can cause an install to fail, often by corrupting essential OS files.

  • Cocoa app design advice

    hello,
    as i'm studying cocoa i've created a test app and i'm looking for some advice/direction when it comes to design. this is what i've done so far:
    1. placed a custom view on my main window linked to my custom subclass "dropview" of nsview
    2. placed a table view on my main window linked to a "appcontroller" object
    with the custom view i can accept drags and when i do i use a nstask method to search for files and place these files in an array. then i want to display these files in my table view. here are my questions: since the array variable is defined in my nsview subclass what is the right way to send that information to my appcontoller object? so far i have made a declaration of this variable above the @interface dropview and used #import dropview.h in my appcontroller.m file. then when the app launches it tries to set the table view from the start before my array variable is defined, but once the array variable is defined how do i tell the table view to update? i have tried to tell my table view to reloaddata from my dropview class but the table view is linked to my appcontroller class. i hope this makes sense and any advice on how i will communicate between the 2 classes is greatly appreciated!
    thank you,
    rick

    You should create one servlet, which accepts the params of any form and passes them to the backend.
    In summary:
    The one servlet is a 'controller' servlet ( the 'C' in MVC design).
    It takes in all url requests for all JSP pages (never allow a user to directly call up a JSP page) or from a submit from a form tag on any JSP page, or from a click on a hyperlink. It verifies the person is logged in (authenticated) and has permission to view the JSP page it wants to view (authorization). If its not authenticated or authorized, it dispatches to an error page. If it is, it determines what JSP page the request is comming from and what it wants (example: update button was clicked). It then instansiates business logic and sends the JSP page's information to it. The business logic performs the work. The data coming back from the business logic is put in request scope by the servlet (not by the business logic) and the servlet dispatches to the appropriate JSP page (which will get data out of request scope to be displayed).

  • Different ports for web/app servers

    Is it possible to configure weblogic server to act as a webserver and app server
    with different ports. like 80 for web server and 7001 for app. server?
    Thanks in advance.

    "OM" <[email protected]> wrote:
    >
    Is it possible to configure weblogic server to act as a webserver and
    app server
    with different ports. like 80 for web server and 7001 for app. server?
    Thanks in advance.

Maybe you are looking for