forgot to add files for last commit
This commit is contained in:
parent
bd1c0914c8
commit
a72d446ba6
|
@ -0,0 +1,33 @@
|
||||||
|
/* Copyright (C) 2008 Jeff Bland
|
||||||
|
|
||||||
|
This file is part of DeSmuME
|
||||||
|
|
||||||
|
DeSmuME is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
DeSmuME is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with DeSmuME; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
#import "nds_control.h"
|
||||||
|
|
||||||
|
@interface SpeedLimitSelectionWindow : NSWindow
|
||||||
|
{
|
||||||
|
BOOL modal;
|
||||||
|
NintendoDS *target;
|
||||||
|
NSTextField *value;
|
||||||
|
int initial_value;
|
||||||
|
}
|
||||||
|
- (id)initWithDS:(NintendoDS*)ds;
|
||||||
|
- (void)runModal;
|
||||||
|
- (void)dealloc;
|
||||||
|
@end
|
|
@ -0,0 +1,157 @@
|
||||||
|
/* Copyright (C) 2008 Jeff Bland
|
||||||
|
|
||||||
|
This file is part of DeSmuME
|
||||||
|
|
||||||
|
DeSmuME is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
DeSmuME is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with DeSmuME; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import "speed_limit_selection_window.h"
|
||||||
|
|
||||||
|
@implementation SpeedLimitSelectionWindow
|
||||||
|
|
||||||
|
- (id)initWithDS:(NintendoDS*)ds
|
||||||
|
{
|
||||||
|
//Create window
|
||||||
|
self = [super initWithContentRect:NSMakeRect(300, 300, 300, 138) styleMask:NSTitledWindowMask|NSClosableWindowMask|NSResizableWindowMask backing:NSBackingStoreBuffered defer:NO screen:nil];
|
||||||
|
if(self == nil)return nil;
|
||||||
|
|
||||||
|
//General
|
||||||
|
[self setTitle:NSLocalizedString(@"Custom Speed Limit Window", nil)];
|
||||||
|
[self setDelegate:self]; //hopefully this doesn't retain self
|
||||||
|
[self setContentMinSize:NSMakeSize(300, 138)];
|
||||||
|
[self setContentMaxSize:NSMakeSize(800, 138)];
|
||||||
|
|
||||||
|
//Member setup
|
||||||
|
modal = NO;
|
||||||
|
|
||||||
|
//Target
|
||||||
|
target = ds;
|
||||||
|
[target retain];
|
||||||
|
initial_value = [target speedLimit];
|
||||||
|
|
||||||
|
//Add slider
|
||||||
|
NSSlider *slider = [[NSSlider alloc] initWithFrame:NSMakeRect(20, 60, 260, 24)];
|
||||||
|
[slider setMinValue:10];
|
||||||
|
[slider setMaxValue:1000];
|
||||||
|
[slider setIntValue:initial_value];
|
||||||
|
[slider setTarget:self];
|
||||||
|
[slider setAction:@selector(newValue:)];
|
||||||
|
[slider setNumberOfTickMarks:2];
|
||||||
|
[slider setAutoresizingMask:NSViewWidthSizable];
|
||||||
|
[[self contentView] addSubview:slider];
|
||||||
|
[slider release];
|
||||||
|
|
||||||
|
//Add label
|
||||||
|
NSTextField *text = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 101, 260, 17)];
|
||||||
|
[text setStringValue:NSLocalizedString(@"Set Max Speed:", nil)];
|
||||||
|
[text setSelectable:NO];
|
||||||
|
[text setEditable:NO];
|
||||||
|
[text setDrawsBackground:NO];
|
||||||
|
[text setBordered:NO];
|
||||||
|
[text setBezeled:NO];
|
||||||
|
[text setAutoresizingMask:NSViewWidthSizable];
|
||||||
|
[[self contentView] addSubview:text];
|
||||||
|
[text release];
|
||||||
|
|
||||||
|
//Add value text
|
||||||
|
value = [[NSTextField alloc] initWithFrame:NSMakeRect(20, 101, 260, 17)];
|
||||||
|
[value setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Speed %d%%", nil), initial_value]];
|
||||||
|
[value setSelectable:NO];
|
||||||
|
[value setEditable:NO];
|
||||||
|
[value setDrawsBackground:NO];
|
||||||
|
[value setBordered:NO];
|
||||||
|
[value setBezeled:NO];
|
||||||
|
[value setAlignment:NSRightTextAlignment];
|
||||||
|
[value setAutoresizingMask:NSViewWidthSizable];
|
||||||
|
[[self contentView] addSubview:value];
|
||||||
|
|
||||||
|
//Add OK button
|
||||||
|
NSButton *ok_button = [[NSButton alloc] initWithFrame:NSMakeRect(190, 12, 96, 32)];
|
||||||
|
[ok_button setTitle:NSLocalizedString(@"OK", nil)];
|
||||||
|
[ok_button setButtonType:NSMomentaryPushInButton];
|
||||||
|
[ok_button setBezelStyle:NSRoundedBezelStyle];
|
||||||
|
[ok_button setTarget:self];
|
||||||
|
[ok_button setAction:@selector(ok)];
|
||||||
|
[ok_button setAutoresizingMask:NSViewMinXMargin];
|
||||||
|
[[self contentView] addSubview:ok_button];
|
||||||
|
[ok_button release];
|
||||||
|
|
||||||
|
//Add cancel button
|
||||||
|
NSButton *cancel_button = [[NSButton alloc] initWithFrame:NSMakeRect(94, 12, 96, 32)];
|
||||||
|
[cancel_button setTitle:NSLocalizedString(@"Cancel", nil)];
|
||||||
|
[cancel_button setButtonType:NSMomentaryPushInButton];
|
||||||
|
[cancel_button setBezelStyle:NSRoundedBezelStyle];
|
||||||
|
[cancel_button setTarget:self];
|
||||||
|
[cancel_button setAction:@selector(cancel)];
|
||||||
|
[cancel_button setAutoresizingMask:NSViewMinXMargin];
|
||||||
|
[[self contentView] addSubview:cancel_button];
|
||||||
|
[cancel_button release];
|
||||||
|
|
||||||
|
//Recall size info (happens after adding buttons so the subviews resize accordingly)
|
||||||
|
[self setFrameUsingName:@"SpeedLimitSelectionWindow"];
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)runModal
|
||||||
|
{
|
||||||
|
modal = YES;
|
||||||
|
[NSApp runModalForWindow:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)dealloc
|
||||||
|
{
|
||||||
|
[self saveFrameUsingName:@"SpeedLimitSelectionWindow"];
|
||||||
|
|
||||||
|
[target release];
|
||||||
|
[value release];
|
||||||
|
[super dealloc];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)newValue:(id)sender
|
||||||
|
{
|
||||||
|
int int_value = [sender intValue];
|
||||||
|
[value setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Speed %d%%", nil), int_value]];
|
||||||
|
|
||||||
|
//updates on each value so you can watch it change in realtime
|
||||||
|
[target setSpeedLimit:int_value];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)ok
|
||||||
|
{
|
||||||
|
if(modal)
|
||||||
|
{
|
||||||
|
[NSApp stopModal];
|
||||||
|
modal = NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)cancel
|
||||||
|
{
|
||||||
|
if(modal)
|
||||||
|
{
|
||||||
|
[NSApp stopModal];
|
||||||
|
modal = NO;
|
||||||
|
|
||||||
|
}
|
||||||
|
[target setSpeedLimit:initial_value];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)windowShouldClose:(id)window
|
||||||
|
{
|
||||||
|
[self cancel];
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
@end
|
Loading…
Reference in New Issue