On 17 Mar 2015, at 10:36, <dangerwillrobinsondan...@gmail.com> wrote:
> Have you tried just displaying an NSOpenPanel yourself then setting the 
> selected URL returned to the path control's URL property?

I have now, and that certainly is one way of doing it. I have three (minor) 
reasons for preferring not to do it this way:
- It requires a certain amount of code duplication, to customize the dialog the 
path control throws up, and to customize my own one.
- I quite like the idea of the visual feedback of flashing up the path control 
menu to make it clear that the open dialog is associated with that control
- Given that the delegate method pathControl:willPopUpMenu exists, I just can't 
quite believe that there isn't a counterpart -popUpMenu command. It very much 
seems like there isn't, though!

I should probably just go with your suggestion and move on, I just find it a 
little bit puzzling that there doesn't seem to be a way of doing what I had 
hoped...

Cheers
Jonny
> 
>> On 2015/03/17, at 19:16, Jonathan Taylor <jonathan.tay...@glasgow.ac.uk> 
>> wrote:
>> 
>> OK, I've got part of the way to a solution, but haven't got it fully working 
>> yet. Perhaps the weekday crowd here can advise?
>> 
>> I've realised that I can get my path control to performClick:
>> 
>>   // When adding a new sequence we immediately prompt the user to select a 
>> folder to use for image files
>>   simulatingPathControlClick = true;
>>   [folderSelectPopup performClick:self];
>>   simulatingPathControlClick = false;
>> 
>> This is a good start, because I see my delegate function being called:
>> 
>> -(void)pathControl:(NSPathControl*)pathControl willPopUpMenu:(NSMenu*)menu
>> {
>>   if (simulatingPathControlClick)
>>   {
>>       [menu performActionForItemAtIndex:0];
>>   }
>> }
>> 
>> This seems to be the only way of getting access to the menu 
>> (folderSelectPopup.menu always seems to return nil...). Now that I have 
>> access to the menu I can get it to performActionForItemAtIndex. That is 
>> basically what I'm trying to do here. However it doesn't quite work as it 
>> should. The code as written here brings up the Open dialog, which works as 
>> intended, but I am calling it sooner than I should (in willPopUpMenu; the 
>> menu has not yet popped up!). As a result, after the user dismisses the Open 
>> dialog, THEN the "choose" menu on the path control pops up, which is 
>> annoying and illogical for the user.
>> 
>> If alternatively I wrap the performClick in a dispatch_async on the main 
>> thread (i.e. it should execute after the menu pops up) then something weird 
>> happens - the menu appears and then the Open dialog pops up (as I had 
>> hoped), but no file system items appear in there. I have a suspicion this 
>> has something to do with funny run-loop states when tracking menus, but I 
>> don't know what to do about it!
>> 
>> 
>> I don't know if what I am trying to do is an appropriate way of going about 
>> things, but hopefully it gives a clearer idea of what I am trying to achieve 
>> here (bring up the Open dialog, just as if the user had selected "Choose..." 
>> themselves). And hopefully somebody can suggest how I should tweak what I am 
>> doing so it behaves correctly?
>> 
>> Thanks again
>> Jonny
>> 
>> 
>>> On 15 Mar 2015, at 13:18, Jonathan Taylor <jonathan.tay...@glasgow.ac.uk> 
>>> wrote:
>>> 
>>> I have a dialog which allows the user to select a folder containing data to 
>>> be processed, set various parameters that affect the processing, and 
>>> displays the result of the analysis. There is an NSPathControl (popup) to 
>>> select the folder. Inevitably the first thing the user does is choose a 
>>> folder (and of course they have the option of changing this later). I would 
>>> like to simplify the workflow by automatically popping up the "open" dialog 
>>> when the main dialog is first opened, as if the user has clicked on the 
>>> path popup and selected "choose". However, I can't work out an obvious way 
>>> of triggering the path control to behave as if the user has manually 
>>> selected "choose" from the popup. 
>>> 
>>> Is there a way I can do that? I could of course throw up my own "open" 
>>> dialog and programatically set the URL associated with the path control, 
>>> but that seems like unnecessary duplication of code when I could just call 
>>> something like [myPathControl displayChooseDialog] (if such a method 
>>> existed!).
>>> 
>>> Can anyone suggest a way of doing what I want here? 
>>> 
>>> Thanks for any suggestions
>>> Jonny
>> 
>> _______________________________________________
>> 
>> 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:
>> https://lists.apple.com/mailman/options/cocoa-dev/dangerwillrobinsondanger%40gmail.com
>> 
>> This email sent to dangerwillrobinsondan...@gmail.com


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to