• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How to create a modal dialog that blocks on start-up?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to create a modal dialog that blocks on start-up?


  • Subject: Re: How to create a modal dialog that blocks on start-up?
  • From: Graham Cox <email@hidden>
  • Date: Sat, 7 Mar 2009 11:29:47 +1100


On 07/03/2009, at 4:41 AM, Sean McBride wrote:

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. :)


Wow, that does seem involved... It was the seeds of a solution like this bubbling up in my head that had me in a bit of a panic, given my time constraints. I did file an enhancement request, #6653022

I tried Jeff Laing's suggestion of just handling the dialog in response to both -applicationShouldOpenUntitledFile and application:openFile: and as far as I can see that is sufficient - it defers the opening of both new and file documents until the dialog is dismissed. I haven't tried it for the print documents case - I will make sure I test that, as I do print.

Using -awakeFromNib also ought to work as Andy Lee suggested, though I haven't tried it since Jeff's is working so far.

Thanks to everyone for their help,

--Graham







_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


References: 
 >How to create a modal dialog that blocks on start-up? (From: Graham Cox <email@hidden>)
 >Re: How to create a modal dialog that blocks on start-up? (From: Kyle Sluder <email@hidden>)
 >Re: How to create a modal dialog that blocks on start-up? (From: Graham Cox <email@hidden>)
 >Re: How to create a modal dialog that blocks on start-up? (From: Graham Cox <email@hidden>)
 >Re: How to create a modal dialog that blocks on start-up? (From: "Sean McBride" <email@hidden>)

  • Prev by Date: When to release an NSThread instance
  • Next by Date: archiving NSPrintInfo created via initWithDictionary crashes
  • Previous by thread: Re: How to create a modal dialog that blocks on start-up?
  • Next by thread: Re: How to create a modal dialog that blocks on start-up?
  • Index(es):
    • Date
    • Thread