@implementation EnjoyableApplicationDelegate
- (void)didSwitchApplication:(NSNotification *)note {
- NSRunningApplication *currentApp = note.userInfo[NSWorkspaceApplicationKey];
- [self.mappingsController activateMappingForProcess:currentApp.localizedName];
+ NSRunningApplication *activeApp = note.userInfo[NSWorkspaceApplicationKey];
+ NSString *name = activeApp.localizedName;
+ if (!name)
+ name = activeApp.bundleIdentifier;
+ if (name && ![name isEqualToString:NSRunningApplication.currentApplication.localizedName])
+ [self.mappingsController activateMappingForProcess:name];
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[self.mappingsController activateMapping:chosen];
}
+#define OUTPUT_PANE_MIN_WIDTH 390
+
+- (CGFloat)splitView:(NSSplitView *)sender constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)offset {
+ return proposedMax - OUTPUT_PANE_MIN_WIDTH;
+}
+
+- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize {
+ NSView *inputView = splitView.subviews[0];
+ NSView *outputView = splitView.subviews[1];
+ if (outputView.frame.size.width < OUTPUT_PANE_MIN_WIDTH) {
+ NSSize frameSize = splitView.frame.size;
+ CGFloat inputWidth = frameSize.width - OUTPUT_PANE_MIN_WIDTH - splitView.dividerThickness;
+ inputView.frame = NSMakeRect(inputWidth, frameSize.height,
+ inputView.frame.size.width,
+ inputView.frame.size.height);
+ outputView.frame = NSMakeRect(inputWidth + splitView.dividerThickness,
+ 0,
+ OUTPUT_PANE_MIN_WIDTH,
+ frameSize.height);
+ } else
+ [splitView adjustSubviews];
+}
+
+- (NSMenu *)applicationDockMenu:(NSApplication *)sender {
+ NSMenu *menu = [[NSMenu alloc] init];
+ int added = 0;
+ for (NJMapping *mapping in self.mappingsController) {
+ NSString *keyEquiv = ++added < 10 ? @(added).stringValue : @"";
+ NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:mapping.name
+ action:@selector(chooseMapping:)
+ keyEquivalent:keyEquiv];
+ item.representedObject = mapping;
+ item.state = mapping == self.mappingsController.currentMapping;
+ [menu addItem:item];
+ }
+ return menu;
+}
+
+- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
+ NSURL *url = [NSURL fileURLWithPath:filename];
+ [self.mappingsController addMappingWithContentsOfURL:url];
+ return YES;
+}
+
+
@end