TwoTerm/NewTerminalWindowController.mm

213 lines
5.2 KiB
Plaintext

//
// NewTerminalWindowController.m
// 2Term
//
// Created by Kelvin Sherlock on 10/5/2010.
// Copyright (c) 2010 __MyCompanyName__. All rights reserved.
//
#import "NewTerminalWindowController.h"
#import "Emulator.h"
#import "Defaults.h"
#import "ExampleView.h"
@implementation NewTerminalWindowController
@synthesize exampleView = _exampleView;
@synthesize terminalTypeButton = _terminalTypeButton;
@synthesize colorSchemeButton = _colorSchemeButton;
@synthesize foregroundColorControl = _foregroundColorControl;
@synthesize backgroundColorControl = _backgroundColorControl;
// colors
enum {
kCustom = 0,
kGreenBlack,
kBlueBlack,
kWhiteBlue,
kAmberBlack,
kGreen2,
kBlue2
};
+(id)new
{
return [[self alloc] initWithWindowNibName: @"NewTerminal"];
}
- (void)dealloc {
// Clean-up code here.
[super dealloc];
}
- (void)windowDidLoad {
NSWindow *window;
[super windowDidLoad];
window = [self window];
//[[window contentView] setWantsLayer: YES];
//[window setAutorecalculatesContentBorderThickness: NO forEdge: NSMinYEdge];
//[window setAutorecalculatesContentBorderThickness: NO forEdge: NSMaxYEdge];
[_terminalTypeButton setMenu: [EmulatorManager emulatorMenu]];
// set color schemes.
[_colorSchemeButton setMenu: [self colorMenu]];
}
-(NSMenu *)colorMenu
{
NSMenuItem *item;
NSMenu *menu = [[NSMenu new] autorelease];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Green Black"];
[item setTag: kGreenBlack];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Blue Black"];
[item setTag: kBlueBlack];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"White Blue"];
[item setTag: kWhiteBlue];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Amber Black"];
[item setTag: kAmberBlack];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Green Phosphor"];
[item setTag: kGreen2];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Blue Phosphor"];
[item setTag: kBlue2];
[menu addItem: item];
item = [[NSMenuItem new] autorelease];
[item setTitle: @"Custom"];
[item setTag: kCustom];
[menu addItem: item];
return menu;
}
#pragma mark -
#pragma mark IBActions
-(IBAction)cancelButton: (id)sender
{
[[self window] performClose: self];
}
-(IBAction)connectButton: (id)sender
{
NSMenuItem *item = [_terminalTypeButton selectedItem];
NSUInteger tag = [item tag];
Class klass = [EmulatorManager emulatorForTag: (unsigned)tag];
if (klass)
{
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithCapacity: 5];
[userInfo setObject: klass forKey: kClass];
[userInfo setObject: [_foregroundColorControl color] forKey: kForegroundColor];
[userInfo setObject: [_backgroundColorControl color] forKey: kBackgroundColor];
[nc postNotificationName: kNotificationNewTerminal object: self userInfo: userInfo];
}
[[self window] performClose: self];
}
-(IBAction)colorChanged:(id)sender
{
[_colorSchemeButton selectItemWithTag: kCustom];
// redraw sample...
}
-(IBAction)setColorScheme:(id)sender
{
switch ([_colorSchemeButton selectedTag])
{
case kGreenBlack:
[_foregroundColorControl setColor: [NSColor greenColor]];
[_backgroundColorControl setColor: [NSColor blackColor]];
break;
case kBlueBlack:
[_foregroundColorControl setColor: [NSColor colorWithCalibratedRed:0.0 green: 0.5 blue: 1.0 alpha: 1.0]];
[_backgroundColorControl setColor: [NSColor blackColor]];
break;
case kWhiteBlue:
[_foregroundColorControl setColor: [NSColor whiteColor]];
[_backgroundColorControl setColor: [NSColor blueColor]];
break;
case kAmberBlack:
[_foregroundColorControl setColor: [NSColor colorWithDeviceRed: 1.0 green: 0.5 blue: 0.0 alpha: 1.0]];
[_backgroundColorControl setColor: [NSColor blackColor]];
break;
case kBlue2:
[_foregroundColorControl setColor: [NSColor colorWithDeviceRed:0.324 green:0.592 blue:0.934 alpha:1.000]];
[_backgroundColorControl setColor: [NSColor blackColor]];
break;
case kGreen2:
[_foregroundColorControl setColor: [NSColor colorWithRed: 0.0 green: 1.0 blue: 0.6 alpha: 1.0]];
[_backgroundColorControl setColor: [NSColor blackColor]];
break;
case kCustom:
break;
}
}
#pragma mark -
#pragma mark NSWindowDelegate
-(void)windowWillClose:(NSNotification *)notification
{
[_foregroundColorControl deactivate];
[_backgroundColorControl deactivate];
[self autorelease];
}
@end