Password Practice Start

This commit is contained in:
GRMrGecko 2010-05-22 21:18:35 +00:00
commit bdef28154a
15 changed files with 14217 additions and 0 deletions

31
Classes/MGMController.h Normal file
View File

@ -0,0 +1,31 @@
//
// MGMController.h
// Password Practice
//
// Created by Mr. Gecko's Media on 5/21/10.
//
#import <Cocoa/Cocoa.h>
@interface MGMController : NSObject {
IBOutlet NSWindow *passwordWindow;
IBOutlet NSTextField *pwPassword;
IBOutlet NSTextField *pwVerify;
NSString *password;
IBOutlet NSWindow *practiceWindow;
IBOutlet NSTextField *ppPassword;
IBOutlet NSTextField *ppTotal;
IBOutlet NSTextField *ppCorrect;
IBOutlet NSTextField *ppMisstakes;
IBOutlet NSTextField *ppAccuracy;
int total;
int correct;
int mistakes;
IBOutlet NSButton *ppSounds;
NSSound *sound;
}
- (IBAction)pwContinue:(id)sender;
- (IBAction)ppCheck:(id)sender;
- (IBAction)ppSounds:(id)sender;
@end

72
Classes/MGMController.m Normal file
View File

@ -0,0 +1,72 @@
//
// MGMController.m
// Password Practice
//
// Created by Mr. Gecko's Media on 5/21/10.
//
#import "MGMController.h"
NSString * const MGMSoundsKey = @"sounds";
@implementation MGMController
- (void)awakeFromNib {
[ppSounds setState:([[NSUserDefaults standardUserDefaults] boolForKey:MGMSoundsKey] ? NSOnState : NSOffState)];
total = 0;
correct = 0;
mistakes = 0;
[passwordWindow makeKeyAndOrderFront:self];
}
- (IBAction)pwContinue:(id)sender {
if ([[pwPassword stringValue] isEqualToString:[pwVerify stringValue]]) {
password = [[pwPassword stringValue] copy];
[pwPassword setStringValue:@""];
[pwVerify setStringValue:@""];
[passwordWindow orderOut:self];
[practiceWindow makeKeyAndOrderFront:self];
} else {
NSBeep();
NSAlert *theAlert = [[NSAlert new] autorelease];
[theAlert setMessageText:@"Incorrect Password"];
[theAlert setInformativeText:@"The Passwords you have entered does not match. Please try again."];
[theAlert addButtonWithTitle:@"Ok"];
[theAlert runModal];
}
}
- (IBAction)ppCheck:(id)sender {
total++;
if ([[ppPassword stringValue] isEqualToString:password]) {
correct++;
if ([ppSounds state]==NSOnState && sound==nil) {
sound = [[NSSound soundNamed:@"Glass"] retain];
[sound setDelegate:self];
[sound play];
}
} else {
if ([ppSounds state]==NSOnState && sound==nil) {
sound = [[NSSound soundNamed:@"Basso"] retain];
[sound setDelegate:self];
[sound play];
}
mistakes++;
}
[ppTotal setIntValue:total];
[ppCorrect setIntValue:correct];
[ppMisstakes setIntValue:mistakes];
[ppAccuracy setStringValue:[NSString stringWithFormat:@"%.0f%%", ((float)correct/(float)total)*100]];
[ppPassword setStringValue:@""];
}
- (IBAction)ppSounds:(id)sender {
[[NSUserDefaults standardUserDefaults] setBool:([ppSounds state]==NSOnState) forKey:MGMSoundsKey];
}
- (void)sound:(NSSound *)theSound didFinishPlaying:(BOOL)finishedPlaying {
if (finishedPlaying) {
if (theSound==sound) {
[sound release];
sound = nil;
}
}
}
@end

View File

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

6057
English.lproj/MainMenu.xib Normal file

File diff suppressed because it is too large Load Diff

2
License.txt Normal file
View File

@ -0,0 +1,2 @@
This project was started by Mr. Gecko's Media and was put in the public domain for anyone to use at free will.
I here by give you full permission to edit, redistribute, sale, or do anything you can imagine with this code for Password Practice. I do not claim any rights to this project.

6057
Password Practice.ai Normal file

File diff suppressed because one or more lines are too long

BIN
Password Practice.icns Normal file

Binary file not shown.

BIN
Password Practice.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,155 @@
// !$*UTF8*$!
{
256AC3D80F4B6AC300CF3369 /* MGMController.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1221, 646}}";
sepNavSelRange = "{157, 0}";
sepNavVisRange = "{0, 689}";
sepNavWindowFrame = "{{0, 4}, {1280, 774}}";
};
};
256AC3D90F4B6AC300CF3369 /* MGMController.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1221, 949}}";
sepNavSelRange = "{0, 95}";
sepNavVisRange = "{0, 1429}";
sepNavWindowFrame = "{{0, 4}, {1280, 774}}";
};
};
256AC3F00F4B6AF500CF3369 /* Prefix.pch */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1221, 646}}";
sepNavSelRange = "{35, 0}";
sepNavVisRange = "{0, 161}";
sepNavWindowFrame = "{{0, 4}, {1280, 774}}";
};
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeBuildConfigurationName = Release;
activeExecutable = 2AA24C9911A795F70032E0EF /* Password Practice */;
activeTarget = 8D1107260486CEB800E47090 /* Password Practice */;
addToTargets = (
8D1107260486CEB800E47090 /* Password Practice */,
);
codeSenseManager = 2AA24CA811A796140032E0EF /* Code sense */;
executables = (
2AA24C9911A795F70032E0EF /* Password Practice */,
);
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
834,
20,
48,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
794,
60,
20,
48,
43,
43,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXTargetDataSource_PrimaryAttribute,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 296254544;
PBXWorkspaceStateSaveDate = 296254544;
};
sourceControlManager = 2AA24CA711A796140032E0EF /* Source Control */;
userBuildSettings = {
};
};
29B97316FDCFA39411CA2CEA /* main.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1221, 646}}";
sepNavSelRange = "{71, 0}";
sepNavVisRange = "{0, 209}";
sepNavWindowFrame = "{{0, 4}, {1280, 774}}";
};
};
2AA24C9911A795F70032E0EF /* Password Practice */ = {
isa = PBXExecutable;
activeArgIndices = (
);
argumentStrings = (
);
autoAttachOnCrash = 1;
breakpointsEnabled = 0;
configStateDict = {
};
customDataFormattersEnabled = 1;
dataTipCustomDataFormattersEnabled = 1;
dataTipShowTypeColumn = 1;
dataTipSortType = 0;
debuggerPlugin = GDBDebugging;
disassemblyDisplayState = 0;
dylibVariantSuffix = "";
enableDebugStr = 1;
environmentEntries = (
);
executableSystemSymbolLevel = 0;
executableUserSymbolLevel = 0;
libgmallocEnabled = 0;
name = "Password Practice";
savedGlobals = {
};
showTypeColumn = 0;
sourceDirectories = (
);
variableFormatDictionary = {
};
};
2AA24CA711A796140032E0EF /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
2AA24CA811A796140032E0EF /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
2AA24D2F11A879550032E0EF /* info.plist */ = {
uiCtxt = {
sepNavWindowFrame = "{{0, 4}, {1280, 774}}";
};
};
8D1107260486CEB800E47090 /* Password Practice */ = {
activeExec = 0;
executables = (
2AA24C9911A795F70032E0EF /* Password Practice */,
);
};
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,292 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
256AC3DA0F4B6AC300CF3369 /* MGMController.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* MGMController.m */; };
2AA24D3311A879A70032E0EF /* Password Practice.icns in Resources */ = {isa = PBXBuildFile; fileRef = 2AA24D3211A879A70032E0EF /* Password Practice.icns */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
256AC3D80F4B6AC300CF3369 /* MGMController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGMController.h; sourceTree = "<group>"; };
256AC3D90F4B6AC300CF3369 /* MGMController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGMController.m; sourceTree = "<group>"; };
256AC3F00F4B6AF500CF3369 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
2AA24D2F11A879550032E0EF /* info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = info.plist; sourceTree = "<group>"; };
2AA24D3211A879A70032E0EF /* Password Practice.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "Password Practice.icns"; sourceTree = "<group>"; };
8D1107320486CEB800E47090 /* Password Practice.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Password Practice.app"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8D11072E0486CEB800E47090 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
256AC3D80F4B6AC300CF3369 /* MGMController.h */,
256AC3D90F4B6AC300CF3369 /* MGMController.m */,
);
path = Classes;
sourceTree = "<group>";
};
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
8D1107320486CEB800E47090 /* Password Practice.app */,
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* Password Practice */ = {
isa = PBXGroup;
children = (
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = "Password Practice";
sourceTree = "<group>";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
256AC3F00F4B6AF500CF3369 /* Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
2AA24D3211A879A70032E0EF /* Password Practice.icns */,
2AA24D2F11A879550032E0EF /* info.plist */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
);
name = Resources;
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8D1107260486CEB800E47090 /* Password Practice */ = {
isa = PBXNativeTarget;
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Password Practice" */;
buildPhases = (
8D1107290486CEB800E47090 /* Resources */,
8D11072C0486CEB800E47090 /* Sources */,
8D11072E0486CEB800E47090 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "Password Practice";
productInstallPath = "$(HOME)/Applications";
productName = "Password Practice";
productReference = 8D1107320486CEB800E47090 /* Password Practice.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Password Practice" */;
compatibilityVersion = "Xcode 3.1";
hasScannedForEncodings = 1;
mainGroup = 29B97314FDCFA39411CA2CEA /* Password Practice */;
projectDirPath = "";
projectRoot = "";
targets = (
8D1107260486CEB800E47090 /* Password Practice */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8D1107290486CEB800E47090 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
2AA24D3311A879A70032E0EF /* Password Practice.icns in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8D11072C0486CEB800E47090 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8D11072D0486CEB800E47090 /* main.m in Sources */,
256AC3DA0F4B6AC300CF3369 /* MGMController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C165DFE840E0CC02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
1DDD58150DA1D0A300B32029 /* English */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
C01FCF4B08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Prefix.pch;
GCC_VERSION = 4.0;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = "Password Practice";
SDKROOT = macosx10.4;
"SDKROOT[arch=x86_64]" = macosx10.5;
};
name = Debug;
};
C01FCF4C08A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Prefix.pch;
GCC_VERSION = 4.0;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = "Password Practice";
SDKROOT = macosx10.4;
"SDKROOT[arch=x86_64]" = macosx10.5;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = macosx10.6;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = macosx10.6;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Password Practice" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4B08A954540054247B /* Debug */,
C01FCF4C08A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Password Practice" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

10
Prefix.pch Normal file
View File

@ -0,0 +1,10 @@
//
// Password_Practice_Prefix.pch
// Password Practice
//
// Created by Mr. Gecko's Media on 5/21/10.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

1
ReadMe.txt Normal file
View File

@ -0,0 +1 @@
Simple, type in your password twice to verify that you typed it in right, and then hit return, a new window will appear allowing you to type in your password as many times as you like and keep track of if you typed it in right or not.

32
info.plist Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Password Practice</string>
<key>CFBundleIdentifier</key>
<string>com.MrGeckosMedia.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>0.1</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

13
main.m Normal file
View File

@ -0,0 +1,13 @@
//
// main.m
// Password Practice
//
// Created by Mr. Gecko's Media on 5/21/10.
//
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}