mirror of
https://github.com/textmate/textmate.git
synced 2026-04-28 03:00:34 -04:00
Add new settings to project page
This includes the previously hidden initial file browser location, whether or not to permanently show the tab bar, placement of file browser and command output.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -2,5 +2,6 @@
|
||||
|
||||
@interface ProjectsPreferences : PreferencesPane
|
||||
{
|
||||
IBOutlet NSPopUpButton* fileBrowserPathPopUp;
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -2,16 +2,24 @@
|
||||
#import "Keys.h"
|
||||
#import <settings/settings.h>
|
||||
#import <OakAppKit/NSImage Additions.h>
|
||||
#import <OakAppKit/NSMenuItem Additions.h>
|
||||
#import <OakFoundation/NSString Additions.h>
|
||||
#import <OakFoundation/OakStringListTransformer.h>
|
||||
|
||||
@implementation ProjectsPreferences
|
||||
- (id)init
|
||||
{
|
||||
if(self = [super initWithNibName:@"ProjectsPreferences" label:@"Projects" image:[NSImage imageNamed:@"Projects" inSameBundleAsClass:[self class]]])
|
||||
{
|
||||
[OakStringListTransformer createTransformerWithName:@"OakFileBrowserPlacementSettingsTransformer" andObjectsArray:@[ @"left", @"right" ]];
|
||||
[OakStringListTransformer createTransformerWithName:@"OakHTMLOutputPlacementSettingsTransformer" andObjectsArray:@[ @"bottom", @"right", @"window" ]];
|
||||
|
||||
self.defaultsProperties = @{
|
||||
@"foldersOnTop" : kUserDefaultsFoldersOnTopKey,
|
||||
@"showFileExtensions" : kUserDefaultsShowFileExtensionsKey,
|
||||
@"foldersOnTop" : kUserDefaultsFoldersOnTopKey,
|
||||
@"showFileExtensions" : kUserDefaultsShowFileExtensionsKey,
|
||||
@"disableTabBarCollapsing" : kUserDefaultsDisableTabBarCollapsingKey,
|
||||
@"fileBrowserPlacement" : kUserDefaultsFileBrowserPlacementKey,
|
||||
@"htmlOutputPlacement" : kUserDefaultsHTMLOutputPlacementKey,
|
||||
};
|
||||
|
||||
self.tmProperties = @{
|
||||
@@ -22,4 +30,65 @@
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)selectOtherFileBrowserPath:(id)sender
|
||||
{
|
||||
NSOpenPanel* openPanel = [NSOpenPanel openPanel];
|
||||
[openPanel setCanChooseFiles:NO];
|
||||
[openPanel setCanChooseDirectories:YES];
|
||||
[openPanel beginSheetModalForWindow:[self view].window completionHandler:^(NSInteger result) {
|
||||
if(result == NSOKButton)
|
||||
[[NSUserDefaults standardUserDefaults] setObject:[[openPanel URL] absoluteString] forKey:kUserDefaultsInitialFileBrowserURLKey];
|
||||
[self updatePathPopUp];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)takeFileBrowserPathFrom:(id)sender
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setObject:[[sender representedObject] absoluteString] forKey:kUserDefaultsInitialFileBrowserURLKey];
|
||||
[self updatePathPopUp];
|
||||
}
|
||||
|
||||
- (NSMenuItem*)menuItemForURL:(NSURL*)aURL
|
||||
{
|
||||
NSMenuItem* res = [[[NSMenuItem alloc] initWithTitle:[[NSFileManager defaultManager] displayNameAtPath:[aURL path]] action:@selector(takeFileBrowserPathFrom:) keyEquivalent:@""] autorelease];
|
||||
[res setTarget:self];
|
||||
[res setRepresentedObject:aURL];
|
||||
if([aURL isFileURL])
|
||||
[res setIconForFile:[aURL path]];
|
||||
return res;
|
||||
}
|
||||
|
||||
- (void)updatePathPopUp
|
||||
{
|
||||
NSMenu* menu = [fileBrowserPathPopUp menu];
|
||||
[menu removeAllItems];
|
||||
|
||||
NSURL* url = [NSURL fileURLWithPath:NSHomeDirectory()];
|
||||
if(NSString* urlString = [[NSUserDefaults standardUserDefaults] stringForKey:kUserDefaultsInitialFileBrowserURLKey])
|
||||
url = [NSURL URLWithString:urlString];
|
||||
|
||||
NSArray* defaultPathList = @[ [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"], NSHomeDirectory(), @"/" ];
|
||||
if(![defaultPathList containsObject:[url path]])
|
||||
{
|
||||
[menu addItem:[self menuItemForURL:url]];
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
}
|
||||
|
||||
for(NSString* path in defaultPathList)
|
||||
{
|
||||
[menu addItem:[self menuItemForURL:[NSURL fileURLWithPath:path]]];
|
||||
if([path isEqualToString:[url path]])
|
||||
[fileBrowserPathPopUp selectItemAtIndex:[menu numberOfItems]-1];
|
||||
}
|
||||
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
[menu addItemWithTitle:@"Other…" action:@selector(selectOtherFileBrowserPath:) keyEquivalent:@""];
|
||||
}
|
||||
|
||||
- (void)loadView
|
||||
{
|
||||
[super loadView];
|
||||
[self updatePathPopUp];
|
||||
}
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user