On 3/6/09 4:01 PM, Graham Cox said:

>Actually the problem is more complicated than this.
>
>The app might have been launched with a file or files, or just by
>double-clicking. So if the EULA needs to be displayed this should just
>defer opening the required documents. By stopping the untitled or
>other files from opening, they never do.
>
>The apple events that supply the launch files or otherwise need to be
>captured (for later resending) or deferred, a the moment they are
>either discarded or processed, neither of which is appropriate.
>
>This is WAY too hard.

I actually used a DTS incident on this very issue.  As you say, it is
hard to get exactly right (if you want finesse).  In the end, I got
about 90% of the way to perfect.

I ended up doing the following:

- subclassing NSDocumentController
- giving it 2 modes: normal and queuing
- in normal mode it works like super
- in queuing mode, I queue any kAEPrintDocuments and kAEOpenDocuments
that I receive
- I set it to queue mode in applicationWillFinishLaunching (which is
before any kAEPrintDocuments/kAEOpenDocuments arrive)
- in applicationDidFinishLaunching I show my splash screen
- at this point the user may try to open or print documents, but I don't
want them to appear, but nor do I want them to be lost
- when OK is clicked in the splash screen, I end queuing mode and
process items in the queue
- if there are no items in the queue I call [self
openUntitledDocumentAndDisplay:error:]
- if there are items in the queue I call [super
openDocumentWithContentsOfURL:display:error:]
- also I implement applicationShouldOpenUntitledFile to return yes if
I'm in normal mode, and no if I'm in queuing mode.

This all works well for kAEOpenDocuments, but not so well for
kAEPrintDocuments.  The problem is that in
openDocumentWithContentsOfURL:display:error: (where I conditionally add
to the queue) I have no way to know if its an kAEPrintDocuments or a
kAEOpenDocuments.  My app doesn't actually print, so I gave up at that point.

Would be nice if NSApplication had a delegate message like
applicationWillFinishLaunching that gives you a chance to show a modal
ok/cancel dialog at launch.  Please create a dupe. :)

--
____________________________________________________________
Sean McBride, B. Eng                 s...@rogue-research.com
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to