Compare commits

..

No commits in common. "master" and "gh-pages" have entirely different histories.

35 changed files with 75 additions and 4056 deletions

View file

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

File diff suppressed because it is too large Load diff

BIN
Icon.icns

Binary file not shown.

3
README
View file

@ -1,3 +0,0 @@
== Timr
Timr is a simple timer for OS X.

53
Timer.h
View file

@ -1,53 +0,0 @@
//
// 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
View file

@ -1,234 +0,0 @@
//
// 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

View file

@ -1,34 +0,0 @@
<?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>

File diff suppressed because it is too large Load diff

View file

@ -1,275 +0,0 @@
// !$*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}";
};
};
}

View file

@ -1,397 +0,0 @@
// !$*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 */;
}

View file

@ -1,27 +0,0 @@
//
// 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

View file

@ -1,24 +0,0 @@
//
// 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

View file

@ -1,7 +0,0 @@
//
// Prefix header for all source files of the 'Timr' target in the 'Timr' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif

BIN
alarm.wav

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

BIN
clear.wav

Binary file not shown.

BIN
click.wav

Binary file not shown.

BIN
colon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 512 B

75
index.html Normal file
View file

@ -0,0 +1,75 @@
<!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 &mdash; <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
View file

@ -1,14 +0,0 @@
//
// 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);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

BIN
wood.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB