diff options
author | Alyssa Milburn | 2013-05-26 12:04:52 -0700 |
---|---|---|
committer | Alyssa Milburn | 2013-05-26 12:04:52 -0700 |
commit | efc374fc432abb93a57a303fb45d430e7df667be (patch) | |
tree | 9f5359c2a8ecbc2a35fbcc41e7fa607c296db778 /gui | |
parent | 3a23991a1846feed5cafe98ced82fe808ee3336d (diff) | |
parent | fa7f1adf03cfea062a96976e6a1dfc25ab151278 (diff) | |
download | scummvm-rg350-efc374fc432abb93a57a303fb45d430e7df667be.tar.gz scummvm-rg350-efc374fc432abb93a57a303fb45d430e7df667be.tar.bz2 scummvm-rg350-efc374fc432abb93a57a303fb45d430e7df667be.zip |
Merge pull request #307 from criezy/filebrowser-hidden-osx
OSX: Allow user to display hidden files in the browser dialog.
Diffstat (limited to 'gui')
-rw-r--r-- | gui/browser.h | 1 | ||||
-rw-r--r-- | gui/browser_osx.mm | 72 |
2 files changed, 73 insertions, 0 deletions
diff --git a/gui/browser.h b/gui/browser.h index 7c098617bb..b82fe516f9 100644 --- a/gui/browser.h +++ b/gui/browser.h @@ -51,6 +51,7 @@ protected: #ifdef MACOSX const void *_titleRef; const void *_chooseRef; + const void *_hiddenFilesRef; #else ListWidget *_fileList; StaticTextWidget *_currentPath; diff --git a/gui/browser_osx.mm b/gui/browser_osx.mm index ecd60915f8..97521862fe 100644 --- a/gui/browser_osx.mm +++ b/gui/browser_osx.mm @@ -31,9 +31,53 @@ #include "common/translation.h" #include <AppKit/NSOpenPanel.h> +#include <AppKit/NSButton.h> #include <Foundation/NSString.h> #include <Foundation/NSURL.h> +@interface ShowHiddenFilesControler : NSObject { + NSOpenPanel* _panel; +} + +- (id) init; +- (void) dealloc; +- (void) setOpenPanel : (NSOpenPanel*) panel; +- (IBAction) showHiddenFiles : (id) sender; + +@end + +@implementation ShowHiddenFilesControler + +- (id) init { + self = [super init]; + _panel = 0; + + return self; +} + +- (void) dealloc { + [_panel release]; + [super dealloc]; +} + +- (void) setOpenPanel : (NSOpenPanel*) panel { + _panel = panel; + [_panel retain]; +} + + +- (IBAction) showHiddenFiles : (id) sender { + if ([sender state] == NSOnState) { + [_panel setShowsHiddenFiles: YES]; + ConfMan.setBool("gui_browser_show_hidden", true, Common::ConfigManager::kApplicationDomain); + } else { + [_panel setShowsHiddenFiles: NO]; + ConfMan.setBool("gui_browser_show_hidden", false, Common::ConfigManager::kApplicationDomain); + } +} + +@end + namespace GUI { BrowserDialog::BrowserDialog(const char *title, bool dirBrowser) @@ -56,11 +100,13 @@ BrowserDialog::BrowserDialog(const char *title, bool dirBrowser) // Convert button text to NSString _chooseRef = CFStringCreateWithCString(0, _("Choose"), stringEncoding); + _hiddenFilesRef = CFStringCreateWithCString(0, _("Show hidden files"), stringEncoding); } BrowserDialog::~BrowserDialog() { CFRelease(_titleRef); CFRelease(_chooseRef); + CFRelease(_hiddenFilesRef); } int BrowserDialog::runModal() { @@ -82,6 +128,29 @@ int BrowserDialog::runModal() { [panel setCanChooseDirectories:_isDirBrowser]; [panel setTitle:(NSString *)_titleRef]; [panel setPrompt:(NSString *)_chooseRef]; + + NSButton *shoHiddenFilesButton = 0; + ShowHiddenFilesControler *shoHiddenFilesControler = 0; + if ([panel respondsToSelector:@selector(setShowsHiddenFiles:)]) { + shoHiddenFilesButton = [[NSButton alloc] init]; + [shoHiddenFilesButton setButtonType:NSSwitchButton]; + [shoHiddenFilesButton setTitle:(NSString *)_hiddenFilesRef]; + [shoHiddenFilesButton sizeToFit]; + if (ConfMan.getBool("gui_browser_show_hidden", Common::ConfigManager::kApplicationDomain)) { + [shoHiddenFilesButton setState:NSOnState]; + [panel setShowsHiddenFiles: YES]; + } else { + [shoHiddenFilesButton setState:NSOffState]; + [panel setShowsHiddenFiles: NO]; + } + [panel setAccessoryView:shoHiddenFilesButton]; + + shoHiddenFilesControler = [[ShowHiddenFilesControler alloc] init]; + [shoHiddenFilesControler setOpenPanel:panel]; + [shoHiddenFilesButton setTarget:shoHiddenFilesControler]; + [shoHiddenFilesButton setAction:@selector(showHiddenFiles:)]; + } + if ([panel runModal] == NSOKButton) { NSURL *url = [panel URL]; if ([url isFileURL]) { @@ -91,6 +160,9 @@ int BrowserDialog::runModal() { } } + [shoHiddenFilesButton release]; + [shoHiddenFilesControler release]; + // If we were in fullscreen mode, switch back if (wasFullscreen) { g_system->beginGFXTransaction(); |