Compare commits
No commits in common. "gh-pages" and "master" have entirely different histories.
2
English.lproj/InfoPlist.strings
Normal file
|
@ -0,0 +1,2 @@
|
|||
/* Localized versions of Info.plist keys */
|
||||
|
1586
English.lproj/MainMenu.xib
Normal file
BIN
Icon.icns
Normal file
3
README
Normal file
|
@ -0,0 +1,3 @@
|
|||
== Timr
|
||||
|
||||
Timr is a simple timer for OS X.
|
53
Timer.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
//
|
||||
// Timer.h
|
||||
//
|
||||
// Created by Jeena on 15.12.09.
|
||||
// Copyright 2009 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface Timer : NSObject {
|
||||
|
||||
IBOutlet NSButton *hour1;
|
||||
IBOutlet NSButton *hour2;
|
||||
IBOutlet NSButton *minute1;
|
||||
IBOutlet NSButton *minute2;
|
||||
IBOutlet NSButton *second1;
|
||||
IBOutlet NSButton *second2;
|
||||
IBOutlet NSButton *start;
|
||||
IBOutlet NSButton *clear;
|
||||
|
||||
NSMutableArray *digits;
|
||||
NSImage *colon;
|
||||
NSImage *no_colon;
|
||||
NSSound *alarmSound;
|
||||
NSSound *clickSound;
|
||||
NSSound *clearSound;
|
||||
|
||||
int remainingSeconds;
|
||||
bool pause;
|
||||
bool isAlarm;
|
||||
bool cleared;
|
||||
bool ongoing;
|
||||
|
||||
NSTimer *repeatingTimer;
|
||||
id<NSObject> action;
|
||||
}
|
||||
|
||||
@property (assign) NSTimer *repeatingTimer;
|
||||
|
||||
- (id)init;
|
||||
- (void)applicationLoaded:(id)sender;
|
||||
- (void)alarm:(id)sender;
|
||||
- (void)setDigitsForTime:(int)time;
|
||||
- (void)clearNow;
|
||||
|
||||
- (IBAction)startOrPause:(NSButton *)sender;
|
||||
- (IBAction)changeDigit:(NSButton *)sender;
|
||||
- (IBAction)clearNow:(id)sender;
|
||||
|
||||
- (void)startRepeatingTimer:(id)sender;
|
||||
- (void)stopRepeatingTimer:(id)sender;
|
||||
|
||||
@end
|
234
Timer.m
Normal file
|
@ -0,0 +1,234 @@
|
|||
//
|
||||
// Timer.m
|
||||
//
|
||||
// Created by Jeena on 15.12.09.
|
||||
// Copyright 2009 Jeena Paradies. All rights reserved.
|
||||
// sound from http://www.flashkit.com/soundfx/Electronic/Alarms/Alarm_cl-Liquid-8852/index.php
|
||||
// click sound from http://free-loops.com/download-free-loop-7744.html
|
||||
//
|
||||
|
||||
#import "Timer.h"
|
||||
|
||||
@implementation Timer
|
||||
|
||||
@synthesize repeatingTimer;
|
||||
|
||||
- (id)init {
|
||||
|
||||
if (self = [super init]) {
|
||||
|
||||
digits = [[NSMutableArray alloc] init];
|
||||
for(int i = 0; i <= 9; i++) {
|
||||
[digits addObject:[NSImage imageNamed:[NSString stringWithFormat:@"digit-%i.png", i]]];
|
||||
}
|
||||
|
||||
colon = [[NSImage imageNamed:@"colon.png"] retain];
|
||||
no_colon = [[NSImage imageNamed:@"no_colon.png"] retain];
|
||||
|
||||
alarmSound = [NSSound soundNamed:@"alarm.wav"];
|
||||
[alarmSound retain];
|
||||
[alarmSound setLoops:YES];
|
||||
[alarmSound setVolume:1];
|
||||
|
||||
clickSound = [NSSound soundNamed:@"click.wav"];
|
||||
[clickSound retain];
|
||||
[clickSound setLoops:NO];
|
||||
[clickSound setVolume:0.2];
|
||||
|
||||
clearSound = [NSSound soundNamed:@"clear.wav"];
|
||||
[clearSound retain];
|
||||
[clearSound setLoops:NO];
|
||||
[clearSound setVolume:0.2];
|
||||
|
||||
remainingSeconds = 0;
|
||||
isAlarm = NO;
|
||||
cleared = NO;
|
||||
ongoing = NO;
|
||||
|
||||
[clearSound play];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
|
||||
[digits release];
|
||||
[colon release];
|
||||
[no_colon release];
|
||||
[clickSound release];
|
||||
[clearSound release];
|
||||
|
||||
[super dealloc];
|
||||
|
||||
}
|
||||
|
||||
- (void)applicationLoaded:(id)sender {
|
||||
[(NSButtonCell *)[hour1 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[hour2 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[minute1 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[minute2 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[second1 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[second2 cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[start cell] setHighlightsBy:NSContentsCellMask];
|
||||
[(NSButtonCell *)[clear cell] setHighlightsBy:NSContentsCellMask];
|
||||
[self clearNow];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)startOrPause:(NSButton *)sender {
|
||||
|
||||
[clickSound play];
|
||||
|
||||
if (isAlarm) {
|
||||
[self stopRepeatingTimer:self];
|
||||
[self clearNow];
|
||||
ongoing = NO;
|
||||
} else {
|
||||
|
||||
if (!ongoing) {
|
||||
[self startRepeatingTimer:self];
|
||||
[clear setTransparent:YES];
|
||||
ongoing = YES;
|
||||
cleared = NO;
|
||||
} else {
|
||||
[self stopRepeatingTimer:self];
|
||||
[clear setTransparent:NO];
|
||||
ongoing = NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)clearNow:(id)sender {
|
||||
[self clearNow];
|
||||
[clear setTransparent:YES];
|
||||
[clearSound play];
|
||||
[[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil];
|
||||
}
|
||||
|
||||
- (void)clearNow {
|
||||
remainingSeconds = [[NSUserDefaults standardUserDefaults] integerForKey:@"defaultTime"];
|
||||
[self setDigitsForTime:remainingSeconds];
|
||||
cleared = YES;
|
||||
[[[NSApplication sharedApplication] dockTile] setBadgeLabel:nil];
|
||||
}
|
||||
|
||||
|
||||
- (void)tick:(NSTimer*)theTimer {
|
||||
|
||||
[self setDigitsForTime:remainingSeconds];
|
||||
|
||||
remainingSeconds -= 1;
|
||||
|
||||
if (remainingSeconds < 0) {
|
||||
[theTimer invalidate];
|
||||
self.repeatingTimer = nil;
|
||||
[self alarm:self];
|
||||
cleared = NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setDigitsForTime:(int)time {
|
||||
|
||||
int hd2, hd1, md2, md1, sd2, sd1, hours, minutes, seconds;
|
||||
|
||||
hours = time / 3600;
|
||||
hd1 = hours % 10;
|
||||
hd2 = (hours - hd1) / 10;
|
||||
|
||||
minutes = (time - (hours * 3600)) / 60;
|
||||
md1 = minutes % 10;
|
||||
md2 = (minutes - md1) / 10;
|
||||
|
||||
seconds = time - (hours * 3600) - (minutes * 60);
|
||||
sd1 = seconds % 10;
|
||||
sd2 = (seconds - sd1) / 10;
|
||||
|
||||
hour2.image = [digits objectAtIndex:hd2];
|
||||
hour1.image = [digits objectAtIndex:hd1];
|
||||
minute2.image = [digits objectAtIndex:md2];
|
||||
minute1.image = [digits objectAtIndex:md1];
|
||||
second2.image = [digits objectAtIndex:sd2];
|
||||
second1.image = [digits objectAtIndex:sd1];
|
||||
|
||||
|
||||
NSString *badge = [NSString stringWithFormat:@"%i%i:%i%i", hd2, hd1, md2, md1];
|
||||
[[[NSApplication sharedApplication] dockTile] setBadgeLabel:badge];
|
||||
|
||||
}
|
||||
|
||||
- (void)alarm:(id)sender {
|
||||
|
||||
isAlarm = YES;
|
||||
|
||||
if (cleared == NO) {
|
||||
[alarmSound play];
|
||||
[self performSelector:@selector(alarm:) withObject:self afterDelay:1];
|
||||
} else {
|
||||
[alarmSound stop];
|
||||
isAlarm = NO;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)startRepeatingTimer:(id)sender {
|
||||
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1
|
||||
target:self selector:@selector(tick:)
|
||||
userInfo:nil repeats:YES];
|
||||
self.repeatingTimer = timer;
|
||||
action = [[NSProcessInfo processInfo] beginActivityWithOptions:NSActivityUserInitiated reason:@"Timr needs to run every second"];
|
||||
[action retain];
|
||||
}
|
||||
|
||||
- (void)stopRepeatingTimer:(id)sender {
|
||||
[repeatingTimer invalidate];
|
||||
self.repeatingTimer = nil;
|
||||
[[NSProcessInfo processInfo] endActivity:action];
|
||||
[action release];
|
||||
}
|
||||
|
||||
- (IBAction)changeDigit:(NSButton *)sender {
|
||||
|
||||
if (repeatingTimer == nil) {
|
||||
|
||||
[clickSound play];
|
||||
|
||||
int time = remainingSeconds;
|
||||
|
||||
int hd2, hd1, md2, md1, sd2, sd1, hours, minutes, seconds;
|
||||
|
||||
hours = time / 3600;
|
||||
hd1 = hours % 10;
|
||||
hd2 = (hours - hd1) / 10;
|
||||
|
||||
minutes = (time - (hours * 3600)) / 60;
|
||||
md1 = minutes % 10;
|
||||
md2 = (minutes - md1) / 10;
|
||||
|
||||
seconds = time - (hours * 3600) - (minutes * 60);
|
||||
sd1 = seconds % 10;
|
||||
sd2 = (seconds - sd1) / 10;
|
||||
|
||||
if (sender == hour2) {
|
||||
hd2 = (hd2 + 1) % 10;
|
||||
} else if (sender == hour1) {
|
||||
hd1 = (hd1 + 1) % 10;
|
||||
} else if (sender == minute2) {
|
||||
md2 = (md2 + 1) % 6;
|
||||
} else if (sender == minute1) {
|
||||
md1 = (md1 + 1) % 10;
|
||||
} else if (sender == second2) {
|
||||
sd2 = (sd2 + 1) % 6;
|
||||
} else if (sender == second1) {
|
||||
sd1 = (sd1 + 1) % 10;
|
||||
}
|
||||
|
||||
remainingSeconds = hd2 * 3600 * 10 + hd1 * 3600 + md2 * 60 * 10 + md1 * 60 + sd2 * 10 + sd1;
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:remainingSeconds forKey:@"defaultTime"];
|
||||
[self clearNow];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@end
|
34
Timr-Info.plist
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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>Icon.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>net.jeena.apps.Timr</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>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.1</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.5</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
1400
Timr.xcodeproj/jeena.mode1v3
Normal file
275
Timr.xcodeproj/jeena.pbxuser
Normal file
|
@ -0,0 +1,275 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
089C165DFE840E0CC02AAC07 /* English */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 696}}";
|
||||
sepNavSelRange = "{0, 0}";
|
||||
sepNavVisRange = "{0, 45}";
|
||||
sepNavWindowFrame = "{{38, 70}, {1622, 1082}}";
|
||||
};
|
||||
};
|
||||
1F12DEC412D7AD0B00A4538A /* PlistBookmark */ = {
|
||||
isa = PlistBookmark;
|
||||
fRef = 8D1107310486CEB800E47090 /* Timr-Info.plist */;
|
||||
fallbackIsa = PBXBookmark;
|
||||
isK = 0;
|
||||
kPath = (
|
||||
);
|
||||
name = "/Users/jeena/Projects/Timr/Timr-Info.plist";
|
||||
rLen = 0;
|
||||
rLoc = 9223372036854775807;
|
||||
};
|
||||
1F12DEC512D7AD0B00A4538A /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 1F4C162C10D7CE3B0002BD95 /* digit-5.png */;
|
||||
};
|
||||
1F12DEC612D7AD0B00A4538A /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 1F4C162C10D7CE3B0002BD95 /* digit-5.png */;
|
||||
};
|
||||
1F4C161810D7C99B0002BD95 /* Timer.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 1016}}";
|
||||
sepNavSelRange = "{1003, 0}";
|
||||
sepNavVisRange = "{0, 1041}";
|
||||
};
|
||||
};
|
||||
1F4C161910D7C99B0002BD95 /* Timer.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 3435}}";
|
||||
sepNavSelRange = "{2563, 0}";
|
||||
sepNavVisRange = "{1595, 1529}";
|
||||
};
|
||||
};
|
||||
1F4C192710D854F20002BD95 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 1F4C161910D7C99B0002BD95 /* Timer.m */;
|
||||
name = "Timer.m: 111";
|
||||
rLen = 0;
|
||||
rLoc = 2616;
|
||||
rType = 0;
|
||||
vrLen = 1447;
|
||||
vrLoc = 2471;
|
||||
};
|
||||
1F4C192810D854F20002BD95 /* PBXBookmark */ = {
|
||||
isa = PBXBookmark;
|
||||
fRef = 1F4C192110D853BA0002BD95 /* Icon.icns */;
|
||||
};
|
||||
1F4F442C10D85CDB00B3E297 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 1F4C161810D7C99B0002BD95 /* Timer.h */;
|
||||
name = "Timer.h: 11";
|
||||
rLen = 0;
|
||||
rLoc = 168;
|
||||
rType = 0;
|
||||
vrLen = 905;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1F4F442D10D85CDB00B3E297 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 256AC3D80F4B6AC300CF3369 /* TimrAppDelegate.h */;
|
||||
name = "TimrAppDelegate.h: 7";
|
||||
rLen = 0;
|
||||
rLoc = 129;
|
||||
rType = 0;
|
||||
vrLen = 480;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1F4F442E10D85CDB00B3E297 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 256AC3D90F4B6AC300CF3369 /* TimrAppDelegate.m */;
|
||||
name = "TimrAppDelegate.m: 2";
|
||||
rLen = 0;
|
||||
rLoc = 7;
|
||||
rType = 0;
|
||||
vrLen = 390;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1F4F442F10D85CDB00B3E297 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 29B97316FDCFA39411CA2CEA /* main.m */;
|
||||
name = "main.m: 9";
|
||||
rLen = 0;
|
||||
rLoc = 132;
|
||||
rType = 0;
|
||||
vrLen = 241;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1F4F443010D85CDB00B3E297 /* PBXTextBookmark */ = {
|
||||
isa = PBXTextBookmark;
|
||||
fRef = 089C165DFE840E0CC02AAC07 /* English */;
|
||||
name = "InfoPlist.strings: 1";
|
||||
rLen = 0;
|
||||
rLoc = 0;
|
||||
rType = 0;
|
||||
vrLen = 45;
|
||||
vrLoc = 0;
|
||||
};
|
||||
1FB3489F10D7B805003E34A4 /* Timr */ = {
|
||||
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 = Timr;
|
||||
savedGlobals = {
|
||||
};
|
||||
showTypeColumn = 0;
|
||||
sourceDirectories = (
|
||||
);
|
||||
variableFormatDictionary = {
|
||||
};
|
||||
};
|
||||
1FB348B110D7B81C003E34A4 /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
1FB348B210D7B81C003E34A4 /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
256AC3D80F4B6AC300CF3369 /* TimrAppDelegate.h */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 713}}";
|
||||
sepNavSelRange = "{561, 0}";
|
||||
sepNavVisRange = "{0, 574}";
|
||||
};
|
||||
};
|
||||
256AC3D90F4B6AC300CF3369 /* TimrAppDelegate.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 690}}";
|
||||
sepNavSelRange = "{448, 0}";
|
||||
sepNavVisRange = "{0, 493}";
|
||||
};
|
||||
};
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
activeBuildConfigurationName = Release;
|
||||
activeExecutable = 1FB3489F10D7B805003E34A4 /* Timr */;
|
||||
activeTarget = 8D1107260486CEB800E47090 /* Timr */;
|
||||
addToTargets = (
|
||||
8D1107260486CEB800E47090 /* Timr */,
|
||||
);
|
||||
codeSenseManager = 1FB348B210D7B81C003E34A4 /* Code sense */;
|
||||
executables = (
|
||||
1FB3489F10D7B805003E34A4 /* Timr */,
|
||||
);
|
||||
perUserDictionary = {
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
671,
|
||||
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.PBXFileTableDataSource3.PBXFindDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
200,
|
||||
685,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFindDataSource_MessageID,
|
||||
PBXFindDataSource_LocationID,
|
||||
);
|
||||
};
|
||||
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
631,
|
||||
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 = 316104005;
|
||||
PBXWorkspaceStateSaveDate = 316104005;
|
||||
};
|
||||
perUserProjectItems = {
|
||||
1F12DEC412D7AD0B00A4538A /* PlistBookmark */ = 1F12DEC412D7AD0B00A4538A /* PlistBookmark */;
|
||||
1F12DEC512D7AD0B00A4538A /* PBXBookmark */ = 1F12DEC512D7AD0B00A4538A /* PBXBookmark */;
|
||||
1F12DEC612D7AD0B00A4538A /* PBXBookmark */ = 1F12DEC612D7AD0B00A4538A /* PBXBookmark */;
|
||||
1F4C192710D854F20002BD95 /* PBXTextBookmark */ = 1F4C192710D854F20002BD95 /* PBXTextBookmark */;
|
||||
1F4C192810D854F20002BD95 /* PBXBookmark */ = 1F4C192810D854F20002BD95 /* PBXBookmark */;
|
||||
1F4F442C10D85CDB00B3E297 /* PBXTextBookmark */ = 1F4F442C10D85CDB00B3E297 /* PBXTextBookmark */;
|
||||
1F4F442D10D85CDB00B3E297 /* PBXTextBookmark */ = 1F4F442D10D85CDB00B3E297 /* PBXTextBookmark */;
|
||||
1F4F442E10D85CDB00B3E297 /* PBXTextBookmark */ = 1F4F442E10D85CDB00B3E297 /* PBXTextBookmark */;
|
||||
1F4F442F10D85CDB00B3E297 /* PBXTextBookmark */ = 1F4F442F10D85CDB00B3E297 /* PBXTextBookmark */;
|
||||
1F4F443010D85CDB00B3E297 /* PBXTextBookmark */ = 1F4F443010D85CDB00B3E297 /* PBXTextBookmark */;
|
||||
};
|
||||
sourceControlManager = 1FB348B110D7B81C003E34A4 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 696}}";
|
||||
sepNavSelRange = "{132, 0}";
|
||||
sepNavVisRange = "{0, 241}";
|
||||
};
|
||||
};
|
||||
8D1107260486CEB800E47090 /* Timr */ = {
|
||||
activeExec = 0;
|
||||
executables = (
|
||||
1FB3489F10D7B805003E34A4 /* Timr */,
|
||||
);
|
||||
};
|
||||
8D1107310486CEB800E47090 /* Timr-Info.plist */ = {
|
||||
uiCtxt = {
|
||||
sepNavIntBoundsRect = "{{0, 0}, {849, 696}}";
|
||||
sepNavSelRange = "{767, 24}";
|
||||
sepNavVisRange = "{0, 981}";
|
||||
};
|
||||
};
|
||||
}
|
397
Timr.xcodeproj/project.pbxproj
Normal file
|
@ -0,0 +1,397 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
1F12DE5C12D75DB600A4538A /* power-button.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F12DE5B12D75DB600A4538A /* power-button.png */; };
|
||||
1F12DE6612D7671600A4538A /* power-button-pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F12DE6512D7671600A4538A /* power-button-pressed.png */; };
|
||||
1F4C161A10D7C99B0002BD95 /* Timer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F4C161910D7C99B0002BD95 /* Timer.m */; };
|
||||
1F4C163110D7CE3B0002BD95 /* colon.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162610D7CE3B0002BD95 /* colon.png */; };
|
||||
1F4C163210D7CE3B0002BD95 /* digit-0.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162710D7CE3B0002BD95 /* digit-0.png */; };
|
||||
1F4C163310D7CE3B0002BD95 /* digit-1.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162810D7CE3B0002BD95 /* digit-1.png */; };
|
||||
1F4C163410D7CE3B0002BD95 /* digit-2.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162910D7CE3B0002BD95 /* digit-2.png */; };
|
||||
1F4C163510D7CE3B0002BD95 /* digit-3.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162A10D7CE3B0002BD95 /* digit-3.png */; };
|
||||
1F4C163610D7CE3B0002BD95 /* digit-4.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162B10D7CE3B0002BD95 /* digit-4.png */; };
|
||||
1F4C163710D7CE3B0002BD95 /* digit-5.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162C10D7CE3B0002BD95 /* digit-5.png */; };
|
||||
1F4C163810D7CE3B0002BD95 /* digit-6.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162D10D7CE3B0002BD95 /* digit-6.png */; };
|
||||
1F4C163910D7CE3B0002BD95 /* digit-7.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162E10D7CE3B0002BD95 /* digit-7.png */; };
|
||||
1F4C163A10D7CE3B0002BD95 /* digit-8.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C162F10D7CE3B0002BD95 /* digit-8.png */; };
|
||||
1F4C163B10D7CE3B0002BD95 /* no_colon.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C163010D7CE3B0002BD95 /* no_colon.png */; };
|
||||
1F4C16BE10D7F0C30002BD95 /* digit-9.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C16BD10D7F0C30002BD95 /* digit-9.png */; };
|
||||
1F4C176610D810D50002BD95 /* alarm.wav in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C176510D810D50002BD95 /* alarm.wav */; };
|
||||
1F4C18B010D847310002BD95 /* clear-button.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C18AF10D847310002BD95 /* clear-button.png */; };
|
||||
1F4C18C510D84AE20002BD95 /* click.wav in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C18C410D84AE20002BD95 /* click.wav */; };
|
||||
1F4C190E10D851D70002BD95 /* clear.wav in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C190D10D851D70002BD95 /* clear.wav */; };
|
||||
1F4C192210D853BA0002BD95 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 1F4C192110D853BA0002BD95 /* Icon.icns */; };
|
||||
1F85890311C45E5300AEB6A0 /* wood.png in Resources */ = {isa = PBXBuildFile; fileRef = 1F85890211C45E5300AEB6A0 /* wood.png */; };
|
||||
256AC3DA0F4B6AC300CF3369 /* TimrAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* TimrAppDelegate.m */; };
|
||||
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>"; };
|
||||
1F12DE5B12D75DB600A4538A /* power-button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "power-button.png"; sourceTree = "<group>"; };
|
||||
1F12DE6512D7671600A4538A /* power-button-pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "power-button-pressed.png"; sourceTree = "<group>"; };
|
||||
1F4C161810D7C99B0002BD95 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = "<group>"; };
|
||||
1F4C161910D7C99B0002BD95 /* Timer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Timer.m; sourceTree = "<group>"; };
|
||||
1F4C162610D7CE3B0002BD95 /* colon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = colon.png; sourceTree = "<group>"; };
|
||||
1F4C162710D7CE3B0002BD95 /* digit-0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-0.png"; sourceTree = "<group>"; };
|
||||
1F4C162810D7CE3B0002BD95 /* digit-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-1.png"; sourceTree = "<group>"; };
|
||||
1F4C162910D7CE3B0002BD95 /* digit-2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-2.png"; sourceTree = "<group>"; };
|
||||
1F4C162A10D7CE3B0002BD95 /* digit-3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-3.png"; sourceTree = "<group>"; };
|
||||
1F4C162B10D7CE3B0002BD95 /* digit-4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-4.png"; sourceTree = "<group>"; };
|
||||
1F4C162C10D7CE3B0002BD95 /* digit-5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-5.png"; sourceTree = "<group>"; };
|
||||
1F4C162D10D7CE3B0002BD95 /* digit-6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-6.png"; sourceTree = "<group>"; };
|
||||
1F4C162E10D7CE3B0002BD95 /* digit-7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-7.png"; sourceTree = "<group>"; };
|
||||
1F4C162F10D7CE3B0002BD95 /* digit-8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-8.png"; sourceTree = "<group>"; };
|
||||
1F4C163010D7CE3B0002BD95 /* no_colon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = no_colon.png; sourceTree = "<group>"; };
|
||||
1F4C16BD10D7F0C30002BD95 /* digit-9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "digit-9.png"; sourceTree = "<group>"; };
|
||||
1F4C176510D810D50002BD95 /* alarm.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = alarm.wav; sourceTree = "<group>"; };
|
||||
1F4C18AF10D847310002BD95 /* clear-button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "clear-button.png"; sourceTree = "<group>"; };
|
||||
1F4C18C410D84AE20002BD95 /* click.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = click.wav; sourceTree = "<group>"; };
|
||||
1F4C190D10D851D70002BD95 /* clear.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = clear.wav; sourceTree = "<group>"; };
|
||||
1F4C192110D853BA0002BD95 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
|
||||
1F85890211C45E5300AEB6A0 /* wood.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = wood.png; sourceTree = "<group>"; };
|
||||
256AC3D80F4B6AC300CF3369 /* TimrAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimrAppDelegate.h; sourceTree = "<group>"; };
|
||||
256AC3D90F4B6AC300CF3369 /* TimrAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimrAppDelegate.m; sourceTree = "<group>"; };
|
||||
256AC3F00F4B6AF500CF3369 /* Timr_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Timr_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>"; };
|
||||
8D1107310486CEB800E47090 /* Timr-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Timr-Info.plist"; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* Timr.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Timr.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 = (
|
||||
1F4C161810D7C99B0002BD95 /* Timer.h */,
|
||||
1F4C161910D7C99B0002BD95 /* Timer.m */,
|
||||
256AC3D80F4B6AC300CF3369 /* TimrAppDelegate.h */,
|
||||
256AC3D90F4B6AC300CF3369 /* TimrAppDelegate.m */,
|
||||
);
|
||||
name = 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 /* Timr.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1F4C160610D7BF030002BD95 /* Images */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F12DE6512D7671600A4538A /* power-button-pressed.png */,
|
||||
1F12DE5B12D75DB600A4538A /* power-button.png */,
|
||||
1F85890211C45E5300AEB6A0 /* wood.png */,
|
||||
1F4C18AF10D847310002BD95 /* clear-button.png */,
|
||||
1F4C162610D7CE3B0002BD95 /* colon.png */,
|
||||
1F4C162710D7CE3B0002BD95 /* digit-0.png */,
|
||||
1F4C162810D7CE3B0002BD95 /* digit-1.png */,
|
||||
1F4C162910D7CE3B0002BD95 /* digit-2.png */,
|
||||
1F4C162A10D7CE3B0002BD95 /* digit-3.png */,
|
||||
1F4C162B10D7CE3B0002BD95 /* digit-4.png */,
|
||||
1F4C162C10D7CE3B0002BD95 /* digit-5.png */,
|
||||
1F4C162D10D7CE3B0002BD95 /* digit-6.png */,
|
||||
1F4C162E10D7CE3B0002BD95 /* digit-7.png */,
|
||||
1F4C162F10D7CE3B0002BD95 /* digit-8.png */,
|
||||
1F4C16BD10D7F0C30002BD95 /* digit-9.png */,
|
||||
1F4C163010D7CE3B0002BD95 /* no_colon.png */,
|
||||
);
|
||||
name = Images;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1F4C18C310D84ABF0002BD95 /* sounds */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F4C190D10D851D70002BD95 /* clear.wav */,
|
||||
1F4C18C410D84AE20002BD95 /* click.wav */,
|
||||
1F4C176510D810D50002BD95 /* alarm.wav */,
|
||||
);
|
||||
name = sounds;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* Timr */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = Timr;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
256AC3F00F4B6AF500CF3369 /* Timr_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1F4C192110D853BA0002BD95 /* Icon.icns */,
|
||||
1F4C18C310D84ABF0002BD95 /* sounds */,
|
||||
1F4C160610D7BF030002BD95 /* Images */,
|
||||
8D1107310486CEB800E47090 /* Timr-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 /* Timr */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Timr" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Timr;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = Timr;
|
||||
productReference = 8D1107320486CEB800E47090 /* Timr.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
};
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Timr" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* Timr */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* Timr */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
1F4C163110D7CE3B0002BD95 /* colon.png in Resources */,
|
||||
1F4C163210D7CE3B0002BD95 /* digit-0.png in Resources */,
|
||||
1F4C163310D7CE3B0002BD95 /* digit-1.png in Resources */,
|
||||
1F4C163410D7CE3B0002BD95 /* digit-2.png in Resources */,
|
||||
1F4C163510D7CE3B0002BD95 /* digit-3.png in Resources */,
|
||||
1F4C163610D7CE3B0002BD95 /* digit-4.png in Resources */,
|
||||
1F4C163710D7CE3B0002BD95 /* digit-5.png in Resources */,
|
||||
1F4C163810D7CE3B0002BD95 /* digit-6.png in Resources */,
|
||||
1F4C163910D7CE3B0002BD95 /* digit-7.png in Resources */,
|
||||
1F4C163A10D7CE3B0002BD95 /* digit-8.png in Resources */,
|
||||
1F4C163B10D7CE3B0002BD95 /* no_colon.png in Resources */,
|
||||
1F4C16BE10D7F0C30002BD95 /* digit-9.png in Resources */,
|
||||
1F4C176610D810D50002BD95 /* alarm.wav in Resources */,
|
||||
1F4C18B010D847310002BD95 /* clear-button.png in Resources */,
|
||||
1F4C18C510D84AE20002BD95 /* click.wav in Resources */,
|
||||
1F4C190E10D851D70002BD95 /* clear.wav in Resources */,
|
||||
1F4C192210D853BA0002BD95 /* Icon.icns in Resources */,
|
||||
1F85890311C45E5300AEB6A0 /* wood.png in Resources */,
|
||||
1F12DE5C12D75DB600A4538A /* power-button.png in Resources */,
|
||||
1F12DE6612D7671600A4538A /* power-button-pressed.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
256AC3DA0F4B6AC300CF3369 /* TimrAppDelegate.m in Sources */,
|
||||
1F4C161A10D7C99B0002BD95 /* Timer.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;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Timr_Prefix.pch;
|
||||
INFOPLIST_FILE = "Timr-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.5;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_NAME = Timr;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = Timr_Prefix.pch;
|
||||
INFOPLIST_FILE = "Timr-Info.plist";
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.5;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_NAME = Timr;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
SDKROOT = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Timr" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Timr" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
27
TimrAppDelegate.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// TimrAppDelegate.h
|
||||
// Timr
|
||||
//
|
||||
// Created by Jeena on 15.12.09.
|
||||
// Copyright 2009 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Timer.h"
|
||||
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5)
|
||||
@interface TimrAppDelegate : NSObject
|
||||
#else
|
||||
@interface TimrAppDelegate : NSObject <NSApplicationDelegate>
|
||||
#endif
|
||||
{
|
||||
IBOutlet NSWindow *window;
|
||||
IBOutlet Timer *timer;
|
||||
IBOutlet NSWindow *aWindow;
|
||||
}
|
||||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
@property (assign) IBOutlet Timer *timer;
|
||||
@property (assign) IBOutlet NSWindow *aWindow;
|
||||
|
||||
@end
|
24
TimrAppDelegate.m
Normal file
|
@ -0,0 +1,24 @@
|
|||
//
|
||||
// TimrAppDelegate.m
|
||||
// Timr
|
||||
//
|
||||
// Created by Jeena on 15.12.09.
|
||||
// Copyright 2009 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TimrAppDelegate.h"
|
||||
|
||||
@implementation TimrAppDelegate
|
||||
|
||||
@synthesize window, timer, aWindow;
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
// Insert code here to initialize your application
|
||||
[aWindow setBackgroundColor:[NSColor colorWithPatternImage:[NSImage imageNamed:@"wood.png"]]];
|
||||
[timer applicationLoaded:self];
|
||||
|
||||
[aWindow orderFront:self];
|
||||
}
|
||||
|
||||
|
||||
@end
|
7
Timr_Prefix.pch
Normal file
|
@ -0,0 +1,7 @@
|
|||
//
|
||||
// Prefix header for all source files of the 'Timr' target in the 'Timr' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
BIN
alarm.wav
Normal file
BIN
button.psd
Normal file
BIN
clear-button.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
clear.wav
Normal file
BIN
click.wav
Normal file
BIN
colon.png
Normal file
After Width: | Height: | Size: 189 B |
BIN
digit-0.png
Normal file
After Width: | Height: | Size: 510 B |
BIN
digit-1.png
Normal file
After Width: | Height: | Size: 374 B |
BIN
digit-2.png
Normal file
After Width: | Height: | Size: 472 B |
BIN
digit-3.png
Normal file
After Width: | Height: | Size: 488 B |
BIN
digit-4.png
Normal file
After Width: | Height: | Size: 432 B |
BIN
digit-5.png
Normal file
After Width: | Height: | Size: 477 B |
BIN
digit-6.png
Normal file
After Width: | Height: | Size: 508 B |
BIN
digit-7.png
Normal file
After Width: | Height: | Size: 430 B |
BIN
digit-8.png
Normal file
After Width: | Height: | Size: 542 B |
BIN
digit-9.png
Normal file
After Width: | Height: | Size: 512 B |
75
index.html
|
@ -1,75 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
|
||||
<title>jeena/Timr @ GitHub</title>
|
||||
|
||||
<style type="text/css">
|
||||
html, body { margin: 0 0 2em 0; padding: 0; }
|
||||
body { font-family: "Lucida Grande", Helvetica, Verdana, sans-serif; background: url(http://pavatar.com/img/body.png) top left repeat-x; }
|
||||
#container { max-width: 35em; margin: auto; }
|
||||
h1 { font-size: 3.8em; }
|
||||
h1 img { vertical-align: bottom; width: 80px; height: 80px; }
|
||||
h2 { margin-top: 2em; }
|
||||
h1, h3 { padding-bottom: 0; margin-bottom: 0; }
|
||||
h3 + p, h1 + p { padding-top: 0; margin-top: 0; }
|
||||
#fork { position: absolute; top: 0; right: 0; border: 0; }
|
||||
a img { border: none; }
|
||||
code, pre { font-size: 1.2em; }
|
||||
.screenshot { margin-left: -6px; }
|
||||
.description { font-size: 1.1em; margin: 30px 0; font-style: italic; }
|
||||
.download { float: right; }
|
||||
.download img { width: 90px; }
|
||||
pre { background: #000; color: #fff; padding: 15px;}
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="container">
|
||||
<div id="fork"><a href="http://github.com/jeena/Timr"><img src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a></div>
|
||||
|
||||
<div class="download">
|
||||
<a href="http://cloud.github.com/downloads/jeena/Timr/Timr.zip">
|
||||
<img src="http://github.com/images/modules/download/zip.png"></a>
|
||||
</div>
|
||||
|
||||
<h1>Timr</h1>
|
||||
<p class="description"><em><strong>Timr</strong> is a simple timer for OS X in a kind of a retro look.</em></p>
|
||||
|
||||
<p>You can select the time by clicking on the digits, start it by clicking on the start button,
|
||||
which turns to pause, and in pause mode you can reset the timer by clicking on the little "C"
|
||||
which appears under the big start button.</p>
|
||||
|
||||
<p class="screenshot"><img width="459" height="183" src="http://cloud.github.com/downloads/jeena/Timr/Screenshot.png" alt="Timr Screenshot" /></p>
|
||||
|
||||
<h2>Dependencies</h2>
|
||||
<p>OS X — <a href="http://www.apple.com/macosx/">Mac OS X</a></p>
|
||||
|
||||
<h2>Install</h2>
|
||||
<p>Download, unzip and move it to your Application folder.</p>
|
||||
|
||||
<h2>License</h2>
|
||||
<p><a href="http://www.opensource.org/licenses/mit-license.php">MIT</a></p>
|
||||
|
||||
<h2>Contact</h2>
|
||||
<p>Jeena Paradies (<a href="mailto:spam@jeenaparadies.net">spam@jeenaparadies.net</a>)</p>
|
||||
|
||||
<h2>Download</h2>
|
||||
<p>
|
||||
You can download this project in
|
||||
<a href="http://cloud.github.com/downloads/jeena/Timr/Timr.zip">zip</a> format.
|
||||
</p>
|
||||
<p>You can also clone the project with <a href="http://git-scm.com">Git</a>
|
||||
by running:
|
||||
<pre>$ git clone git://github.com/jeena/Timr</pre>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
14
main.m
Normal file
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// main.m
|
||||
// Timr
|
||||
//
|
||||
// Created by Jeena on 15.12.09.
|
||||
// Copyright 2009 Jeena Paradies. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
return NSApplicationMain(argc, (const char **) argv);
|
||||
}
|
BIN
no_colon.png
Normal file
After Width: | Height: | Size: 134 B |
BIN
power-button-pressed.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
power-button.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
wood.png
Normal file
After Width: | Height: | Size: 180 KiB |