Показать NSOpenPanel в приложении NSStatusItem - PullRequest
0 голосов
/ 04 декабря 2010

Я пишу приложение элемента статуса, у которого нет NSWindow. Я открываю NSOpenPanel, когда пользователь нажимает на элемент статуса. Как можно это сделать, если приложение не использует NSWindow?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 04 декабря 2010

Запустите его как модальное окно, а не как лист.

1 голос
/ 04 декабря 2010

В методе IBAction элемента статуса вызовите это:

window = [[NSApp currentEvent] window];

Затем вы можете передать это окно beginSheetModalForWindow NSOpenPanel: завершению: для отображения открытой панели в виде листа.

Вы можете обнаружить, что сам элемент статуса свернулся и исчез при появлении листа, но он появляется снова, когда вы закрываете лист.

0 голосов
/ 05 мая 2015

Вы можете просто вызвать вашу открытую панель из действия NSMenuItem как:

NSOpenPanel *panel = [NSOpenPanel openPanel];
    [panel setAllowsMultipleSelection:YES];
    [panel setCanChooseDirectories:YES];

    NSUInteger result = [panel runModal];
    NSMutableArray *paths = [NSMutableArray array];

    if(result == NSFileHandlingPanelOKButton) {
        for (NSURL *url in [panel URLs]) {
            NSLog(@"%@", url);
        }
    }
...