cog/Preferences/Preferences/GeneralPane.m

113 lines
3.1 KiB
Objective-C

//
// GeneralPane.m
// Preferences
//
// Created by Christopher Snowhill on 6/20/22.
//
#import "GeneralPane.h"
#import "PathSuggester.h"
@implementation GeneralPane
- (NSString *)title {
return NSLocalizedPrefString(@"General");
}
- (NSImage *)icon {
if(@available(macOS 11.0, *))
return [NSImage imageWithSystemSymbolName:@"gearshape.fill" accessibilityDescription:nil];
return [[NSImage alloc] initWithContentsOfFile:[[NSBundle bundleForClass:[self class]] pathForImageResource:@"general"]];
}
- (IBAction)addPath:(id)sender {
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:NO];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
[panel setFloatingPanel:YES];
NSInteger result = [panel runModal];
if(result == NSModalResponseOK) {
[sandboxPathBehaviorController addUrl:[panel URL]];
}
}
- (IBAction)deleteSelectedPaths:(id)sender {
NSArray *selectedObjects = [sandboxPathBehaviorController selectedObjects];
if(selectedObjects && [selectedObjects count]) {
NSArray *tokens = [selectedObjects valueForKey:@"token"];
for(id token in tokens) {
[sandboxPathBehaviorController removeToken:token];
}
}
}
- (IBAction)removeStaleEntries:(id)sender {
[sandboxPathBehaviorController removeStaleEntries];
}
- (NSView *_Nullable)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *_Nullable)tableColumn row:(NSInteger)row {
NSString *cellIdentifier = @"";
NSTextAlignment cellTextAlignment = NSTextAlignmentLeft;
NSDictionary *item = [[sandboxPathBehaviorController arrangedObjects] objectAtIndex:row];
/*float fontSize = [[[NSUserDefaultsController sharedUserDefaultsController] defaults] floatForKey:@"fontSize"];*/
NSString *cellText = @"";
if(item) {
cellIdentifier = [tableColumn identifier];
if([cellIdentifier isEqualToString:@"path"]) {
cellText = [item objectForKey:@"path"];
} else if([cellIdentifier isEqualToString:@"valid"]) {
cellText = [item objectForKey:@"valid"];
}
}
NSView *view = [tableView makeViewWithIdentifier:cellIdentifier owner:nil];
if(view && [view isKindOfClass:[NSTableCellView class]]) {
NSTableCellView *cellView = (NSTableCellView *)view;
if(cellView.textField) {
cellView.textField.allowsDefaultTighteningForTruncation = YES;
//NSFont *font = [NSFont monospacedDigitSystemFontOfSize:fontSize weight:NSFontWeightRegular];
//cellView.textField.font = font;
cellView.textField.stringValue = cellText;
cellView.textField.alignment = cellTextAlignment;
if(cellView.textField.intrinsicContentSize.width > cellView.textField.frame.size.width - 4) {
cellView.textField.toolTip = cellText;
}
}
}
return view;
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
SEL action = [menuItem action];
if(action == @selector(addPath:) ||
action == @selector(deleteSelectedPaths:) ||
action == @selector(removeStaleEntries:) ||
action == @selector(showPathSuggester:)) {
return YES;
}
return NO;
}
- (IBAction)showPathSuggester:(id)sender {
[pathSuggester beginSuggestion:sender];
}
- (IBAction)refreshPathList:(id)sender {
[sandboxPathBehaviorController refresh];
}
@end