1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #if defined(Hiro_BrowserWindow)
- namespace hiro {
- auto pBrowserWindow::directory(BrowserWindow::State& state) -> string {
- string result;
- @autoreleasepool {
- NSOpenPanel* panel = [NSOpenPanel openPanel];
- if(state.title) [panel setTitle:[NSString stringWithUTF8String:state.title]];
- [panel setCanChooseDirectories:YES];
- [panel setCanChooseFiles:NO];
- if([panel runModalForDirectory:[NSString stringWithUTF8String:state.path] file:nil] == NSOKButton) {
- NSArray* names = [panel filenames];
- const char* name = [[names objectAtIndex:0] UTF8String];
- if(name) result = name;
- }
- }
- return result;
- }
- auto pBrowserWindow::open(BrowserWindow::State& state) -> string {
- string result;
- @autoreleasepool {
- NSMutableArray* filters = [[NSMutableArray alloc] init];
- for(auto& rule : state.filters) {
- string pattern = rule.split("|", 1L)(1).transform(":", ";");
- if(pattern) [filters addObject:[NSString stringWithUTF8String:pattern]];
- }
- NSOpenPanel* panel = [NSOpenPanel openPanel];
- if(state.title) [panel setTitle:[NSString stringWithUTF8String:state.title]];
- [panel setCanChooseDirectories:NO];
- [panel setCanChooseFiles:YES];
- [panel setAllowedFileTypes:filters];
- if([panel runModalForDirectory:[NSString stringWithUTF8String:state.path] file:nil] == NSOKButton) {
- NSArray* names = [panel filenames];
- const char* name = [[names objectAtIndex:0] UTF8String];
- if(name) result = name;
- }
- [filters release];
- }
- return result;
- }
- auto pBrowserWindow::save(BrowserWindow::State& state) -> string {
- string result;
- @autoreleasepool {
- NSMutableArray* filters = [[NSMutableArray alloc] init];
- for(auto& rule : state.filters) {
- string pattern = rule.split("|", 1L)(1).transform(":", ";");
- if(pattern) [filters addObject:[NSString stringWithUTF8String:pattern]];
- }
- NSSavePanel* panel = [NSSavePanel savePanel];
- if(state.title) [panel setTitle:[NSString stringWithUTF8String:state.title]];
- [panel setAllowedFileTypes:filters];
- if([panel runModalForDirectory:[NSString stringWithUTF8String:state.path] file:nil] == NSOKButton) {
- NSArray* names = [panel filenames];
- const char* name = [[names objectAtIndex:0] UTF8String];
- if(name) result = name;
- }
- [filters release];
- }
- return result;
- }
- }
- #endif
|