From 2d9ee8dc9000a2d7d592c36b314575457d18587d Mon Sep 17 00:00:00 2001 From: hrbrmstr Date: Sun, 1 Sep 2019 13:48:06 -0400 Subject: [PATCH] initial commit --- Base.lproj/MainMenu.xib | 361 +++++++++++++++++++++ Info.plist | 28 ++ RSwitch.icns | Bin 0 -> 51530 bytes RSwitch.xcodeproj/project.pbxproj | 340 +++++++++++++++++++ .../project.xcworkspace/contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 24035 bytes .../xcschemes/xcschememanagement.plist | 14 + RSwitch_Prefix.pch | 7 + SwitchCtrl.h | 10 + SwitchCtrl.m | 152 +++++++++ en.lproj/InfoPlist.strings | 3 + main.m | 14 + 13 files changed, 944 insertions(+) create mode 100644 Base.lproj/MainMenu.xib create mode 100644 Info.plist create mode 100644 RSwitch.icns create mode 100644 RSwitch.xcodeproj/project.pbxproj create mode 100644 RSwitch.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 RSwitch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 RSwitch.xcodeproj/project.xcworkspace/xcuserdata/hrbrmstr.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 RSwitch.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 RSwitch_Prefix.pch create mode 100644 SwitchCtrl.h create mode 100644 SwitchCtrl.m create mode 100644 en.lproj/InfoPlist.strings create mode 100644 main.m diff --git a/Base.lproj/MainMenu.xib b/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..8b2662f --- /dev/null +++ b/Base.lproj/MainMenu.xib @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Info.plist b/Info.plist new file mode 100644 index 0000000..e5d7693 --- /dev/null +++ b/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + RSwitch + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/RSwitch.icns b/RSwitch.icns new file mode 100644 index 0000000000000000000000000000000000000000..110699385cdd5d2112caa03c985250d86fde59eb GIT binary patch literal 51530 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 literal 0 HcmV?d00001 diff --git a/RSwitch.xcodeproj/project.pbxproj b/RSwitch.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c52e2eb --- /dev/null +++ b/RSwitch.xcodeproj/project.pbxproj @@ -0,0 +1,340 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 01E00C68231C30F700FCDEFE /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 01E00C66231C30F700FCDEFE /* MainMenu.xib */; }; + 681F0F480AB1AB400089A9D9 /* SwitchCtrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 681F0F470AB1AB400089A9D9 /* SwitchCtrl.m */; }; + 681F11D10AB1BA7D0089A9D9 /* RSwitch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 681F11D00AB1BA7D0089A9D9 /* RSwitch.icns */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 01E00C65231C2B7800FCDEFE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 01E00C67231C30F700FCDEFE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; 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 /* RSwitch_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RSwitch_Prefix.pch; sourceTree = ""; }; + 681F0F460AB1AB400089A9D9 /* SwitchCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SwitchCtrl.h; sourceTree = ""; }; + 681F0F470AB1AB400089A9D9 /* SwitchCtrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SwitchCtrl.m; sourceTree = ""; }; + 681F11D00AB1BA7D0089A9D9 /* RSwitch.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = RSwitch.icns; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* RSwitch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RSwitch.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 */ + 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 /* RSwitch.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* RSwitch */ = { + isa = PBXGroup; + children = ( + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = RSwitch; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* RSwitch_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.m */, + 681F0F460AB1AB400089A9D9 /* SwitchCtrl.h */, + 681F0F470AB1AB400089A9D9 /* SwitchCtrl.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 01E00C66231C30F700FCDEFE /* MainMenu.xib */, + 681F11D00AB1BA7D0089A9D9 /* RSwitch.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 /* RSwitch */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "RSwitch" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RSwitch; + productInstallPath = "$(HOME)/Applications"; + productName = RSwitch; + productReference = 8D1107320486CEB800E47090 /* RSwitch.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1100; + }; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "RSwitch" */; + compatibilityVersion = "Xcode 2.4"; + developmentRegion = en; + hasScannedForEncodings = 1; + knownRegions = ( + ja, + Base, + en, + fr, + de, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* RSwitch */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* RSwitch */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 681F11D10AB1BA7D0089A9D9 /* RSwitch.icns in Resources */, + 01E00C68231C30F700FCDEFE /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + 681F0F480AB1AB400089A9D9 /* SwitchCtrl.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 01E00C66231C30F700FCDEFE /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 01E00C67231C30F700FCDEFE /* Base */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 01E00C65231C2B7800FCDEFE /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1.3; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.12; + PRODUCT_BUNDLE_IDENTIFIER = info.urbanek.RSwitch; + PRODUCT_NAME = RSwitch; + SDKROOT = macosx; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "-"; + CURRENT_PROJECT_VERSION = 1.3; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_VERSION = ""; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + MACOSX_DEPLOYMENT_TARGET = 10.12; + PRODUCT_BUNDLE_IDENTIFIER = info.urbanek.RSwitch; + PRODUCT_NAME = RSwitch; + SDKROOT = macosx; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "RSwitch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "RSwitch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/RSwitch.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/RSwitch.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/RSwitch.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/RSwitch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/RSwitch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/RSwitch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/RSwitch.xcodeproj/project.xcworkspace/xcuserdata/hrbrmstr.xcuserdatad/UserInterfaceState.xcuserstate b/RSwitch.xcodeproj/project.xcworkspace/xcuserdata/hrbrmstr.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..75240a6a5b7603b5d26494da74a55ee4de0f3ee9 GIT binary patch literal 24035 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 literal 0 HcmV?d00001 diff --git a/RSwitch.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist b/RSwitch.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..badcadd --- /dev/null +++ b/RSwitch.xcodeproj/xcuserdata/hrbrmstr.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + RSwitch.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/RSwitch_Prefix.pch b/RSwitch_Prefix.pch new file mode 100644 index 0000000..c529a05 --- /dev/null +++ b/RSwitch_Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'RSwitch' target in the 'RSwitch' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/SwitchCtrl.h b/SwitchCtrl.h new file mode 100644 index 0000000..7939a9f --- /dev/null +++ b/SwitchCtrl.h @@ -0,0 +1,10 @@ +/* SwitchCtrl */ + +#import + +@interface SwitchCtrl : NSObject +{ + IBOutlet NSTableView *list; + IBOutlet NSWindow *window; +} +@end diff --git a/SwitchCtrl.m b/SwitchCtrl.m new file mode 100644 index 0000000..3d263d5 --- /dev/null +++ b/SwitchCtrl.m @@ -0,0 +1,152 @@ +#import "SwitchCtrl.h" + +NSArray *versions = nil; +NSArray *desc = nil; +BOOL finishedLoading = NO; + +@interface SwitchCtrl (Private) + +- (void) reloadVersions; +@end + +@implementation SwitchCtrl + +NSString *where = @"/Library/Frameworks/R.framework/Versions"; + +- (IBAction)rediscover:(id)sender +{ + [self reloadVersions]; +} + +/* awake */ + +- (void) awakeFromNib { + [self reloadVersions]; + finishedLoading = YES; +} + +// fn is now a path to R_HOME. Uses bin/R (for older R) or Rversion.h header +static NSString *getVersionString(NSString *fn) { + char buf[512]; + FILE *f = fopen([[fn stringByAppendingString:@"/bin/R"] UTF8String],"r"); + if (!f) return @""; + buf[511]=0; + while (!feof(f) && fgets(buf,511,f)) { + char *c = strstr(buf,"version=\""); + if (c) { + char *d = c; + while (*d) d++; + d--; while (d > c+10 && (*d=='.' || *d=='\n' || *d=='\r' || *d==' ')) { *d=0; d--; }; + fclose(f); + return [NSString stringWithUTF8String:c+9]; + } + } + fclose(f); + // bin/R doesn't contain version="" - try headers - it's messy, though + f = fopen([[fn stringByAppendingString:@"/include/i386/Rversion.h"] UTF8String], "r"); + if (!f) // possibly not multi-arch -- note that this won't work for multi-arch as it's jsut a stub + f = fopen([[fn stringByAppendingString:@"/include/Rversion.h"] UTF8String], "r"); + if (f) { + NSString *ver = @""; + while (!feof(f) && fgets(buf, 511, f)) { + int maj = 1; + char *c = strstr(buf, "R_MAJOR"); + if (!c) { + c = strstr(buf, "R_MINOR"); + maj = 0; + } + if (c) { + char *anchor; + while (*c && *c != '\"') c++; + if (*c) c++; + anchor = c; + while (*c && *c != '\"') c++; + *c = 0; + ver = [ver stringByAppendingFormat:@"%s%s", maj ? "" : ".", anchor]; + } + } + fclose(f); + if ([ver length] > 0) + return ver; + } + return @""; +} + +- (void) reloadVersions { + NSArray *cont = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:where error:nil]; + + if (cont) { + NSMutableArray *ma = [[NSMutableArray alloc] initWithCapacity:[cont count]]; + if (desc) [desc release]; + desc = [[NSMutableArray alloc] initWithCapacity:[cont count]]; + NSEnumerator *enumerator = [cont objectEnumerator]; + + NSString *cur = [[NSFileManager defaultManager] destinationOfSymbolicLinkAtPath:[NSString stringWithFormat:@"%@/Current", where] error: nil]; + + NSString *ver; + while (ver = (NSString*) [enumerator nextObject]) { + NSString *rsh = [NSString stringWithFormat:@"%@/%@/Resources", where, ver]; + if (![ver isEqualToString:@"Current"] && [[NSFileManager defaultManager] fileExistsAtPath:rsh]) { + [ma addObject:ver]; + [(NSMutableArray*)desc addObject: getVersionString(rsh)]; + } + } + if (versions) [versions release]; + versions = ma; + + [list reloadData]; + + if (cur) { + NSUInteger cp = [versions indexOfObject:cur]; + if (cp != NSNotFound) [list selectRowIndexes:[NSIndexSet indexSetWithIndex:cp] byExtendingSelection:NO]; + } + } +} + +/* selection */ + +- (void) tableViewSelectionDidChange:(NSNotification *)aNotification +{ + NSUInteger nr = [list numberOfRows]; + NSInteger sel = -1; + if (nr>0) { + sel = [list selectedRow]; + if (finishedLoading && sel>=0 && sel= 0 && rowIndex < [ac count]); + return [ac objectAtIndex:rowIndex]; +} + +- (NSUInteger)numberOfRowsInTableView:(NSTableView *)aTableView +{ + return desc?[desc count]:0; +} + +/* window callbacks */ + +- (BOOL)windowShouldClose:(id)sender { + [NSApp terminate:0]; + return YES; +} + + +@end diff --git a/en.lproj/InfoPlist.strings b/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..3559887 --- /dev/null +++ b/en.lproj/InfoPlist.strings @@ -0,0 +1,3 @@ +/* Localized versions of Info.plist keys */ + +NSHumanReadableCopyright = "© Simon Urbanek, 2006,2011"; \ No newline at end of file diff --git a/main.m b/main.m new file mode 100644 index 0000000..b89bd08 --- /dev/null +++ b/main.m @@ -0,0 +1,14 @@ +// +// main.m +// RSwitch +// +// Created by Simon Urbanek on 9/8/06. +// Copyright Simon Urbanek 2006,2011. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +}