From d8080d36460ff0472c87320f27412891a3789d94 Mon Sep 17 00:00:00 2001 From: Zachary Slater Date: Sat, 21 Mar 2009 22:55:40 +0000 Subject: [PATCH] first copy of the front-end from Ben Wilber. Thanks Ben! --- misc/osxfe/ioquake3fe/Controller.h | 22 + misc/osxfe/ioquake3fe/Controller.m | 97 + .../ioquake3fe/English.lproj/ErrorWindow.xib | 473 +++ .../English.lproj/InfoPlist.strings | Bin 0 -> 92 bytes .../English.lproj/Localizable.strings | Bin 0 -> 470 bytes .../ioquake3fe/English.lproj/MainMenu.xib | 3209 +++++++++++++++++ misc/osxfe/ioquake3fe/ErrorWindow.h | 10 + misc/osxfe/ioquake3fe/ErrorWindow.m | 19 + misc/osxfe/ioquake3fe/ErrorWindowController.h | 16 + misc/osxfe/ioquake3fe/ErrorWindowController.m | 21 + misc/osxfe/ioquake3fe/Info.plist | 28 + misc/osxfe/ioquake3fe/ioquake3.icns | Bin 0 -> 35224 bytes .../ioquake3fe.xcodeproj/TemplateIcon.icns | Bin 0 -> 52318 bytes .../ioquake3fe.xcodeproj/bw.mode1v3 | 1391 +++++++ .../ioquake3fe.xcodeproj/bw.pbxuser | 204 ++ .../ioquake3fe.xcodeproj/project.pbxproj | 310 ++ misc/osxfe/ioquake3fe/ioquake3fe_Prefix.pch | 7 + misc/osxfe/ioquake3fe/main.m | 14 + 18 files changed, 5821 insertions(+) create mode 100644 misc/osxfe/ioquake3fe/Controller.h create mode 100644 misc/osxfe/ioquake3fe/Controller.m create mode 100644 misc/osxfe/ioquake3fe/English.lproj/ErrorWindow.xib create mode 100644 misc/osxfe/ioquake3fe/English.lproj/InfoPlist.strings create mode 100644 misc/osxfe/ioquake3fe/English.lproj/Localizable.strings create mode 100644 misc/osxfe/ioquake3fe/English.lproj/MainMenu.xib create mode 100644 misc/osxfe/ioquake3fe/ErrorWindow.h create mode 100644 misc/osxfe/ioquake3fe/ErrorWindow.m create mode 100644 misc/osxfe/ioquake3fe/ErrorWindowController.h create mode 100644 misc/osxfe/ioquake3fe/ErrorWindowController.m create mode 100644 misc/osxfe/ioquake3fe/Info.plist create mode 100755 misc/osxfe/ioquake3fe/ioquake3.icns create mode 100644 misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/TemplateIcon.icns create mode 100644 misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/bw.mode1v3 create mode 100644 misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/bw.pbxuser create mode 100644 misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj create mode 100644 misc/osxfe/ioquake3fe/ioquake3fe_Prefix.pch create mode 100644 misc/osxfe/ioquake3fe/main.m diff --git a/misc/osxfe/ioquake3fe/Controller.h b/misc/osxfe/ioquake3fe/Controller.h new file mode 100644 index 00000000..50d15f99 --- /dev/null +++ b/misc/osxfe/ioquake3fe/Controller.h @@ -0,0 +1,22 @@ +// +// Controller.h +// ioquake3fe +// +// Created by Ben Wilber on 3/11/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import + +@interface Controller : NSObject { + IBOutlet id argsTextField; + NSTask *quakeTask; + NSFileHandle *quakeOut; + NSMutableData *quakeData; +} + +- (IBAction)launch:(id)sender; +- (void)readPipe:(NSNotification *)note; +- (void)taskNote:(NSNotification *)note; + +@end diff --git a/misc/osxfe/ioquake3fe/Controller.m b/misc/osxfe/ioquake3fe/Controller.m new file mode 100644 index 00000000..6ebde2ff --- /dev/null +++ b/misc/osxfe/ioquake3fe/Controller.m @@ -0,0 +1,97 @@ +// +// Controller.m +// ioquake3fe +// +// Created by Ben Wilber on 3/11/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import "Controller.h" +#import "ErrorWindow.h" + +#define IOQ3_BIN @"ioquake3.ub" + +@implementation Controller + +- (id)init +{ + [super init]; + quakeData = [[NSMutableData alloc] initWithCapacity:1.0]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readPipe:) name:NSFileHandleReadCompletionNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskNote:) name:NSTaskDidTerminateNotification object:nil]; + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + +- (IBAction)launch:(id)sender +{ + NSPipe *pipe = [NSPipe pipe]; + quakeOut = [pipe fileHandleForReading]; + [quakeOut readInBackgroundAndNotify]; + + quakeTask = [NSTask new]; + [quakeTask setStandardOutput:pipe]; + [quakeTask setStandardError:pipe]; + + NSString *args = [argsTextField stringValue]; + if ([args length]) + [quakeTask setArguments:[args componentsSeparatedByString:@" "]]; + // tiger sucks + //[quakeTask setArguments:[args componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]; + + BOOL die = NO; + + @try { + [quakeTask setLaunchPath:[[NSBundle mainBundle] pathForAuxiliaryExecutable:IOQ3_BIN]]; + [quakeTask launch]; + } + @catch (NSException *e) { + [[NSAlert + alertWithMessageText:NSLocalizedString(@"Launch Failed", @"launch failed") + defaultButton:NSLocalizedString(@"OK", @"OK") + alternateButton:nil + otherButton:nil + informativeTextWithFormat:NSLocalizedString(@"Something is probably wrong with the actual ioquake3 binary.", @"launch failed text")] + runModal]; + die = YES; + } + @finally { + if (die) + [NSApp terminate:self]; + } + + [[sender window] close]; + return; +} + +- (void)readPipe:(NSNotification *)note +{ + if ([note object] == quakeOut) { + NSData *outputData = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem]; + if ([outputData length]) + [quakeData appendData:outputData]; + if (quakeTask) + [quakeOut readInBackgroundAndNotify]; + } +} + +- (void)taskNote:(NSNotification *)note +{ + if ([note object] == quakeTask) { + if ([quakeTask isRunning] == NO) { + if ([quakeTask terminationStatus] != 0) { + ErrorWindow *ew = [[[ErrorWindow alloc] init] autorelease]; + [ew bitch:[[[NSString alloc] initWithData:quakeData encoding:NSUTF8StringEncoding] autorelease]]; + } else { + [NSApp terminate:self]; + } + } + } +} + +@end diff --git a/misc/osxfe/ioquake3fe/English.lproj/ErrorWindow.xib b/misc/osxfe/ioquake3fe/English.lproj/ErrorWindow.xib new file mode 100644 index 00000000..c9931388 --- /dev/null +++ b/misc/osxfe/ioquake3fe/English.lproj/ErrorWindow.xib @@ -0,0 +1,473 @@ + + + + 1050 + 9G55 + 677 + 949.43 + 353.00 + + YES + + + + YES + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + ErrorWindow + + + FirstResponder + + + NSApplication + + + 271 + 2 + {{651, 380}, {524, 447}} + 536870912 + ioquake3 Error + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 268 + {{17, 417}, {169, 17}} + + YES + + 68288064 + 272630784 + ioquake3 failed to launch. + + LucidaGrande + 1.300000e+01 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 274 + + YES + + + 2304 + + YES + + + 2322 + {524, 12} + + + + + + $up ladiez. + + + YES + + YES + NSFont + NSParagraphStyle + + + YES + + LucidaGrande + 1.000000e+01 + 2843 + + + 4 + + + + + + + + YES + + + 6 + + + + 5.240000e+02 + 1 + + + 11009 + + 3 + MQA + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {1050, 1e+07} + {223, 0} + + + + {{1, 1}, {524, 401}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{510, 1}, {15, 383}} + + + _doScroller: + 9.693251e-01 + + + + 256 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1.000000e+00 + 9.456522e-01 + + + {{-1, -1}, {526, 403}} + + + 530 + + + + + + {524, 447} + + + {{0, 0}, {1920, 1178}} + {3.40282e+38, 3.40282e+38} + + + ErrorWindowController + + + + + YES + + + errorTextField + + + + 39 + + + + errorWindow + + + + 47 + + + + delegate + + + + 50 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 3 + + + YES + + + + Error Window + + + 4 + + + YES + + + + + + + 5 + + + YES + + + + + + 10 + + + + + 32 + + + YES + + + + + + + + 33 + + + + + 34 + + + + + 35 + + + + + 49 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 10.IBPluginDependency + 3.IBEditorWindowLastContentRect + 3.IBWindowTemplateEditedContentRect + 3.NSWindowTemplate.visibleAtLaunch + 3.WindowOrigin + 3.editorWindowContentRectSynchronizationRect + 32.IBPluginDependency + 33.IBPluginDependency + 34.IBPluginDependency + 35.IBPluginDependency + 4.IBPluginDependency + 49.IBPluginDependency + 5.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + {{633, 627}, {524, 447}} + {{633, 627}, {524, 447}} + + {196, 240} + {{202, 428}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 50 + + + + YES + + ErrorWindow + NSObject + + YES + + YES + errorTextField + errorWindow + + + YES + id + id + + + + IBProjectSource + ErrorWindow.h + + + + ErrorWindowController + NSWindowController + + IBProjectSource + ErrorWindowController.h + + + + + 0 + ../ioquake3fe.xcodeproj + 3 + + diff --git a/misc/osxfe/ioquake3fe/English.lproj/InfoPlist.strings b/misc/osxfe/ioquake3fe/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..5e45963c382ba690b781b953a00585212b898ac5 GIT binary patch literal 92 zcmW-XQ3`+{5C!MkQ~2$No+IcIkqMDxWCV8j>LCj|yTg2Mz+o9F%uHlf9u}h9EuK`F a!Y*1dX%G66ZqL#C$|bw0ZoP5@jOGW1ArT7z literal 0 HcmV?d00001 diff --git a/misc/osxfe/ioquake3fe/English.lproj/Localizable.strings b/misc/osxfe/ioquake3fe/English.lproj/Localizable.strings new file mode 100644 index 0000000000000000000000000000000000000000..51cf11baf6882eb48a1d13a76754263d278edec5 GIT binary patch literal 470 zcmc(bI}XAy5JacWDWa4qNI{8cX+Waj1P%nS_=Jy9$mM}&yTCMQDQs)T(SpUf=D6r`rC;mia|2Fw4q)I1@3^<_krriZF?RQZ%k zXe+fk;W~P;^t9v7>dt=Ajk}u4Yr5-ky5Pi2N6Np+!`^Tj=HZx&A?+Ehu0b83k8$e2 PH!ymQk`De?L7dtLH5W|X literal 0 HcmV?d00001 diff --git a/misc/osxfe/ioquake3fe/English.lproj/MainMenu.xib b/misc/osxfe/ioquake3fe/English.lproj/MainMenu.xib new file mode 100644 index 00000000..f47995a0 --- /dev/null +++ b/misc/osxfe/ioquake3fe/English.lproj/MainMenu.xib @@ -0,0 +1,3209 @@ + + + + 1050 + 9G55 + 677 + 949.43 + 353.00 + + YES + + + + + YES + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + NSFontManager + + + AMainMenu + + YES + + + NewApplication + + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About ioquake3 + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + UHJlZmVyZW5jZXPigKY + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Services + + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 2147483647 + + + + + + Hide ioquake3 + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Quit ioquake3 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + T3BlbuKApg + o + 1048576 + 2147483647 + + + + + + Open Recent + + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + U2F2ZSBBc+KApg + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + UHJpbnTigKY + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Find + + 2147483647 + + + submenuAction: + + Find + + YES + + + RmluZOKApg + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + U2hvdyBTcGVsbGluZ+KApg + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 2147483647 + + + + + + Check Grammar With Spelling + + 2147483647 + + + + + + + + + Substitutions + + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 2147483647 + + + + + + Stop Speaking + + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Q3VzdG9taXplIFRvb2xiYXLigKY + + 2147483647 + + + + + + + + + Window + + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bring All to Front + + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + YES + + + ioquake3 Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 1 + 2 + {{335, 666}, {484, 84}} + 1946157056 + Launch ioquake3 + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 268 + {{374, 14}, {96, 32}} + + YES + + 67239424 + 134217728 + Launch + + LucidaGrande + 1.300000e+01 + 1044 + + + -2038284033 + 129 + + DQ + 200 + 25 + + + + + 268 + {{20, 20}, {352, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{17, 50}, {78, 17}} + + YES + + 68288064 + 272630784 + Arguments: + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + + + + + {484, 84} + + + {{0, 0}, {1920, 1178}} + {3.40282e+38, 3.40282e+38} + + + Controller + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + terminate: + + + + 369 + + + + unhideAllApplications: + + + + 370 + + + + addFontTrait: + + + + 418 + + + + addFontTrait: + + + + 419 + + + + modifyFont: + + + + 420 + + + + orderFrontFontPanel: + + + + 421 + + + + modifyFont: + + + + 422 + + + + raiseBaseline: + + + + 423 + + + + lowerBaseline: + + + + 424 + + + + copyFont: + + + + 425 + + + + subscript: + + + + 426 + + + + superscript: + + + + 427 + + + + tightenKerning: + + + + 428 + + + + underline: + + + + 429 + + + + orderFrontColorPanel: + + + + 430 + + + + useAllLigatures: + + + + 431 + + + + loosenKerning: + + + + 432 + + + + pasteFont: + + + + 433 + + + + unscript: + + + + 434 + + + + useStandardKerning: + + + + 435 + + + + useStandardLigatures: + + + + 436 + + + + turnOffLigatures: + + + + 437 + + + + turnOffKerning: + + + + 438 + + + + alignLeft: + + + + 439 + + + + alignJustified: + + + + 440 + + + + copyRuler: + + + + 441 + + + + alignCenter: + + + + 442 + + + + toggleRuler: + + + + 443 + + + + alignRight: + + + + 444 + + + + pasteRuler: + + + + 445 + + + + argsTextField + + + + 455 + + + + launch: + + + + 456 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + 373 + + + YES + + + + + + 374 + + + YES + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + 377 + + + YES + + + + + + + + + + + + + 378 + + + + + 379 + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + YES + + + + + + + + + + + + + + + + + + + + + 387 + + + + + 388 + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + YES + + + + + + 396 + + + YES + + + + + + 397 + + + YES + + + + + + 398 + + + + + 399 + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + YES + + + + + + + + + + 404 + + + + + 405 + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + YES + + + + + + + + 410 + + + + + 411 + + + + + 412 + + + + + 413 + + + YES + + + + + + + + + 414 + + + + + 415 + + + + + 416 + + + + + 417 + + + + + 446 + + + YES + + + + + + 447 + + + YES + + + + + + + + 448 + + + YES + + + + + + 449 + + + YES + + + + + + 450 + + + YES + + + + + + 451 + + + + + 452 + + + + + 453 + + + + + 454 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBEditorWindowLastContentRect + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBEditorWindowLastContentRect + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBEditorWindowLastContentRect + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBEditorWindowLastContentRect + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBEditorWindowLastContentRect + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBEditorWindowLastContentRect + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBEditorWindowLastContentRect + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBEditorWindowLastContentRect + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBEditorWindowLastContentRect + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBPluginDependency + 373.IBPluginDependency + 374.IBEditorWindowLastContentRect + 374.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 446.IBEditorWindowLastContentRect + 446.IBWindowTemplateEditedContentRect + 446.NSWindowTemplate.visibleAtLaunch + 446.editorWindowContentRectSynchronizationRect + 446.windowTemplate.maxSize + 447.IBPluginDependency + 448.IBPluginDependency + 449.IBPluginDependency + 450.IBPluginDependency + 451.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 454.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + {{814, 1055}, {172, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{479, 484}, {132, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{565, 284}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{574, 792}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{365, 632}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{565, 284}, {153, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{565, 284}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{734, 962}, {197, 73}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{397, 1078}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{11, 977}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + {{684, 992}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{565, 284}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{618, 992}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{731, 525}, {484, 84}} + {{731, 525}, {484, 84}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{400, 852}, {202, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{532, 832}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{323, 672}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 456 + + + + YES + + Controller + NSObject + + launch: + id + + + argsTextField + id + + + IBProjectSource + Controller.h + + + + + 0 + ioquake3fe.xcodeproj + 3 + + diff --git a/misc/osxfe/ioquake3fe/ErrorWindow.h b/misc/osxfe/ioquake3fe/ErrorWindow.h new file mode 100644 index 00000000..627f81a0 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ErrorWindow.h @@ -0,0 +1,10 @@ +#import + +@interface ErrorWindow : NSObject { + IBOutlet id errorWindow; + IBOutlet id errorTextField; +} + +- (void)bitch:(NSString *)errorlog; + +@end diff --git a/misc/osxfe/ioquake3fe/ErrorWindow.m b/misc/osxfe/ioquake3fe/ErrorWindow.m new file mode 100644 index 00000000..bcb373d7 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ErrorWindow.m @@ -0,0 +1,19 @@ +#import "ErrorWindow.h" + +@implementation ErrorWindow + +- (void)bitch:(NSString *)errorlog +{ + NSLog(errorlog); + + NSNib *nib = [[NSNib alloc] initWithNibNamed:@"ErrorWindow.nib" bundle:[NSBundle mainBundle]]; + [nib instantiateNibWithOwner:self topLevelObjects:nil]; + + [errorWindow makeKeyWindow]; + [errorTextField setFont:[NSFont userFixedPitchFontOfSize:12.0]]; + [errorTextField setString:@""]; + [[errorTextField textStorage] appendAttributedString:[[[NSAttributedString alloc] initWithString:errorlog] autorelease]]; + [errorTextField scrollRangeToVisible:NSMakeRange([[errorTextField string] length], 0)]; +} + +@end diff --git a/misc/osxfe/ioquake3fe/ErrorWindowController.h b/misc/osxfe/ioquake3fe/ErrorWindowController.h new file mode 100644 index 00000000..c6362ab8 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ErrorWindowController.h @@ -0,0 +1,16 @@ +// +// ErrorWindowController.h +// ioquake3fe +// +// Created by Ben Wilber on 3/11/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface ErrorWindowController : NSWindowController { + +} + +@end diff --git a/misc/osxfe/ioquake3fe/ErrorWindowController.m b/misc/osxfe/ioquake3fe/ErrorWindowController.m new file mode 100644 index 00000000..40bd2960 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ErrorWindowController.m @@ -0,0 +1,21 @@ +// +// ErrorWindowController.m +// ioquake3fe +// +// Created by Ben Wilber on 3/11/09. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import "ErrorWindowController.h" + +@implementation ErrorWindowController + +// yes, a whole class just so the fucking app will quit + +- (BOOL)windowShouldClose:(id)sender +{ + [NSApp terminate:self]; + return YES; +} + +@end diff --git a/misc/osxfe/ioquake3fe/Info.plist b/misc/osxfe/ioquake3fe/Info.plist new file mode 100644 index 00000000..4b5c2e7c --- /dev/null +++ b/misc/osxfe/ioquake3fe/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + ioquake3.icns + CFBundleIdentifier + org.icculus.quake3 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/misc/osxfe/ioquake3fe/ioquake3.icns b/misc/osxfe/ioquake3fe/ioquake3.icns new file mode 100755 index 0000000000000000000000000000000000000000..30e3b673cdf4f147208df4a93e289ab0b0f1494a GIT binary patch literal 35224 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
  • _#OUv%A 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 WhsmLR^b3` + + + + ActivePerspectiveName + Morph + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + BundlePath + /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + C32AE6240F133690008455E3 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + 788 + 300 + + Perspectives + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + active-combo-popup + action + NSToolbarFlexibleSpaceItem + build-and-go + com.apple.ide.PBXToolbarStopButton + get-info + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 766 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 080E96DDFE201D6D7F000001 + 29B97317FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 4 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {0, 0}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {783, 463}} + GroupTreeTableConfiguration + + MainColumn + 766 + + + Module + PBXSmartGroupTreeModule + Proportion + 783pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {0, 0}} + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {0, 458}} + + Module + XCDetailModule + Proportion + 458pt + + + Proportion + 0pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + C34EC2190F68465900C42E7D + 1CE0B1FE06471DED0097A5F4 + C34EC21A0F68465900C42E7D + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ChosenToolbarItems + + XCToolbarPerspectiveControl + NSToolbarSeparatorItem + buildOrClean + build-and-goOrGo + debugger-enable-breakpoints + com.apple.ide.PBXToolbarStopButton + NSToolbarFlexibleSpaceItem + get-info + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 283 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 080E96DDFE201D6D7F000001 + 29B97317FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 2 + 1 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {283, 445}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {300, 463}} + GroupTreeTableConfiguration + + MainColumn + 283 + + RubberWindowFrame + 1603 655 300 504 0 0 1920 1178 + + Module + PBXSmartGroupTreeModule + Proportion + 300pt + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + C3FF45B00F68476C00282595 + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 1C78EAAD065D492600B07095 + 1CD10A99069EF8BA00B06720 + C32AE6290F133690008455E3 + /Users/bw/Desktop/ioquake3fe/ioquake3fe.xcodeproj + + WindowString + 1603 655 300 504 0 0 1920 1178 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {1153, 0}} + RubberWindowFrame + 460 273 1153 495 0 0 1920 1178 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 5}, {1153, 449}} + RubberWindowFrame + 460 273 1153 495 0 0 1920 1178 + + Module + PBXBuildResultsModule + Proportion + 449pt + + + Proportion + 454pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + C32AE6290F133690008455E3 + C3FF45B10F68476C00282595 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 460 273 1153 495 0 0 1920 1178 + WindowToolGUID + C32AE6290F133690008455E3 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {453, 362}} + {{453, 0}, {540, 362}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {993, 362}} + {{0, 362}, {993, 317}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {993, 679}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 310 + + Frame + {{453, 0}, {540, 362}} + RubberWindowFrame + 521 348 993 720 0 0 1920 1178 + + RubberWindowFrame + 521 348 993 720 0 0 1920 1178 + + Module + PBXDebugSessionModule + Proportion + 679pt + + + Proportion + 679pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + C3FF45B20F68476C00282595 + 1C162984064C10D400B95A72 + C3FF45B30F68476C00282595 + C3FF45B40F68476C00282595 + C3FF45B50F68476C00282595 + C3FF45B60F68476C00282595 + C3FF45B70F68476C00282595 + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 521 348 993 720 0 0 1920 1178 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {722, 316}} + RubberWindowFrame + 592 105 722 357 0 0 1920 1178 + + Module + PBXDebugCLIModule + Proportion + 316pt + + + Proportion + 316pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + C3FF45B80F68476C00282595 + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 592 105 722 357 0 0 1920 1178 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.0950012207031 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + 0 + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/bw.pbxuser b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/bw.pbxuser new file mode 100644 index 00000000..6360bc17 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/bw.pbxuser @@ -0,0 +1,204 @@ +// !$*UTF8*$! +{ + 089C165DFE840E0CC02AAC07 /* English */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {821, 645}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 45}"; + sepNavWindowFrame = "{{15, 456}, {880, 717}}"; + }; + }; + 29B97313FDCFA39411CA2CEA /* Project object */ = { + activeBuildConfigurationName = Debug; + activeExecutable = C3F1553E0F60E3570009B6EC /* ioquake3fe */; + activeSDKPreference = macosx10.4; + activeTarget = 8D1107260486CEB800E47090 /* ioquake3fe */; + addToTargets = ( + 8D1107260486CEB800E47090 /* ioquake3fe */, + ); + codeSenseManager = C3F1554C0F60E3690009B6EC /* Code sense */; + executables = ( + C3F1553E0F60E3570009B6EC /* ioquake3fe */, + ); + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 10, + 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, + ); + }; + PBXPerProjectTemplateStateSaveDate = 258492241; + PBXWorkspaceStateSaveDate = 258492241; + }; + sourceControlManager = C3F1554B0F60E3690009B6EC /* Source Control */; + userBuildSettings = { + }; + }; + 29B97316FDCFA39411CA2CEA /* main.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {659, 692}}"; + sepNavSelRange = "{218, 0}"; + sepNavVisRange = "{0, 279}"; + sepNavWindowFrame = "{{15, 409}, {718, 764}}"; + }; + }; + 32CA4F630368D1EE00C91783 /* ioquake3fe_Prefix.pch */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {659, 692}}"; + sepNavSelRange = "{151, 0}"; + sepNavVisRange = "{0, 151}"; + sepNavWindowFrame = "{{84, 346}, {718, 764}}"; + }; + }; + 8D1107260486CEB800E47090 /* ioquake3fe */ = { + activeExec = 0; + executables = ( + C3F1553E0F60E3570009B6EC /* ioquake3fe */, + ); + }; + 8D1107310486CEB800E47090 /* Info.plist */ = { + uiCtxt = { + sepNavWindowFrame = "{{506, 383}, {880, 717}}"; + }; + }; + C30C62160F677DD30043A4E2 /* Controller.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {454, 547}}"; + sepNavSelRange = "{304, 0}"; + sepNavVisRange = "{0, 424}"; + sepNavWindowFrame = "{{53, 385}, {513, 619}}"; + }; + }; + C30C62170F677DD30043A4E2 /* Controller.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {882, 1372}}"; + sepNavSelRange = "{2380, 0}"; + sepNavVisRange = "{0, 1262}"; + sepNavWindowFrame = "{{570, 151}, {880, 717}}"; + }; + }; + C30C631B0F67A37E0043A4E2 /* ErrorWindow.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {821, 645}}"; + sepNavSelRange = "{166, 0}"; + sepNavVisRange = "{0, 166}"; + sepNavWindowFrame = "{{488, 62}, {880, 717}}"; + }; + }; + C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {905, 642}}"; + sepNavSelRange = "{617, 0}"; + sepNavVisRange = "{0, 617}"; + sepNavWindowFrame = "{{456, 76}, {964, 714}}"; + }; + }; + C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */ = { + uiCtxt = { + sepNavWindowFrame = "{{15, 554}, {513, 619}}"; + }; + }; + C34EC1F40F68433A00C42E7D /* ErrorWindowController.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {905, 642}}"; + sepNavSelRange = "{175, 0}"; + sepNavVisRange = "{0, 241}"; + sepNavWindowFrame = "{{15, 459}, {964, 714}}"; + }; + }; + C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {905, 642}}"; + sepNavSelRange = "{366, 0}"; + sepNavVisRange = "{0, 366}"; + sepNavWindowFrame = "{{38, 438}, {964, 714}}"; + }; + }; + C3F1553E0F60E3570009B6EC /* ioquake3fe */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = ioquake3fe; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + $cs = 1; + $ds = 1; + $eax = 1; + $ebp = 1; + $ebx = 1; + $ecx = 1; + $edi = 1; + $edx = 1; + $eflags = 1; + $eip = 1; + $es = 1; + $esi = 1; + $esp = 1; + $gs = 1; + $mm0 = 1; + $mm1 = 1; + $mm2 = 1; + $mm3 = 1; + $mm4 = 1; + $mm5 = 1; + $mm6 = 1; + $mm7 = 1; + $mxcsr = 1; + $ss = 1; + $xmm0 = 1; + $xmm1 = 1; + $xmm2 = 1; + $xmm3 = 1; + $xmm4 = 1; + $xmm5 = 1; + $xmm6 = 1; + $xmm7 = 1; + }; + }; + C3F1554B0F60E3690009B6EC /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + }; + C3F1554C0F60E3690009B6EC /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; +} diff --git a/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj new file mode 100644 index 00000000..75496ee5 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ioquake3fe.xcodeproj/project.pbxproj @@ -0,0 +1,310 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 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 */; }; + C30C62180F677DD30043A4E2 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = C30C62170F677DD30043A4E2 /* Controller.m */; }; + C30C631D0F67A37E0043A4E2 /* ErrorWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */; }; + C30C638F0F67AA7B0043A4E2 /* ioquake3.icns in Resources */ = {isa = PBXBuildFile; fileRef = C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */; }; + C34EC1F60F68433A00C42E7D /* ErrorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */; }; + C37357890F68280200B1A10C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C37357850F68280200B1A10C /* MainMenu.xib */; }; + C373578A0F68280200B1A10C /* ErrorWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C37357870F68280200B1A10C /* ErrorWindow.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* ioquake3fe_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioquake3fe_Prefix.pch; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* ioquake3fe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ioquake3fe.app; sourceTree = BUILT_PRODUCTS_DIR; }; + C30C62160F677DD30043A4E2 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; + C30C62170F677DD30043A4E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; + C30C631B0F67A37E0043A4E2 /* ErrorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorWindow.h; sourceTree = ""; }; + C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorWindow.m; sourceTree = ""; }; + C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ioquake3.icns; sourceTree = ""; }; + C34EC1F40F68433A00C42E7D /* ErrorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorWindowController.h; sourceTree = ""; }; + C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ErrorWindowController.m; sourceTree = ""; }; + C37357860F68280200B1A10C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + C37357880F68280200B1A10C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/ErrorWindow.xib; sourceTree = ""; }; +/* 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 = ( + C30C631B0F67A37E0043A4E2 /* ErrorWindow.h */, + C30C631C0F67A37E0043A4E2 /* ErrorWindow.m */, + C30C62160F677DD30043A4E2 /* Controller.h */, + C30C62170F677DD30043A4E2 /* Controller.m */, + C34EC1F40F68433A00C42E7D /* ErrorWindowController.h */, + C34EC1F50F68433A00C42E7D /* ErrorWindowController.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* ioquake3fe.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* ioquake3fe */ = { + isa = PBXGroup; + children = ( + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = ioquake3fe; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* ioquake3fe_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + C37357850F68280200B1A10C /* MainMenu.xib */, + C37357870F68280200B1A10C /* ErrorWindow.xib */, + C30C638E0F67AA7B0043A4E2 /* ioquake3.icns */, + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* ioquake3fe */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "ioquake3fe" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ioquake3fe; + productInstallPath = "$(HOME)/Applications"; + productName = ioquake3fe; + productReference = 8D1107320486CEB800E47090 /* ioquake3fe.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 "ioquake3fe" */; + compatibilityVersion = "Xcode 3.1"; + hasScannedForEncodings = 1; + mainGroup = 29B97314FDCFA39411CA2CEA /* ioquake3fe */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* ioquake3fe */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + C30C638F0F67AA7B0043A4E2 /* ioquake3.icns in Resources */, + C37357890F68280200B1A10C /* MainMenu.xib in Resources */, + C373578A0F68280200B1A10C /* ErrorWindow.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + C30C62180F677DD30043A4E2 /* Controller.m in Sources */, + C30C631D0F67A37E0043A4E2 /* ErrorWindow.m in Sources */, + C34EC1F60F68433A00C42E7D /* ErrorWindowController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + C37357850F68280200B1A10C /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + C37357860F68280200B1A10C /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + C37357870F68280200B1A10C /* ErrorWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + C37357880F68280200B1A10C /* English */, + ); + name = ErrorWindow.xib; + sourceTree = ""; + }; +/* 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 = ioquake3fe_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = ioquake3fe; + }; + 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 = ioquake3fe_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = ioquake3fe; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + PREBINDING = NO; + SDKROOT = macosx10.4; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx10.4; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "ioquake3fe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "ioquake3fe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/misc/osxfe/ioquake3fe/ioquake3fe_Prefix.pch b/misc/osxfe/ioquake3fe/ioquake3fe_Prefix.pch new file mode 100644 index 00000000..ddc24ff3 --- /dev/null +++ b/misc/osxfe/ioquake3fe/ioquake3fe_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'ioquake3fe' target in the 'ioquake3fe' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/misc/osxfe/ioquake3fe/main.m b/misc/osxfe/ioquake3fe/main.m new file mode 100644 index 00000000..5dfa38ff --- /dev/null +++ b/misc/osxfe/ioquake3fe/main.m @@ -0,0 +1,14 @@ +// +// main.m +// ioquake3fe +// +// Created by Ben Wilber on 3/11/09. +// Copyright __MyCompanyName__ 2009. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +}