├── macOSLucidaGrande ├── latestBuild.txt ├── text.png ├── preview_lg.jpg ├── preview_sf.jpg ├── Assets.xcassets │ ├── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── applyButton.png ├── preview_lg@2x.jpg ├── preview_sf@2x.jpg ├── NSData+MD5.h ├── applyDiff_10_10.patch ├── applyDiff_10_11.patch ├── applyDiff_10_12.patch ├── applyDiff_modern.patch ├── macOSLucidaGrande.icns ├── preview_modern_lg_dark.jpg ├── preview_modern_lg_light.jpg ├── preview_modern_sf_dark.jpg ├── preview_modern_sf_light.jpg ├── preview_modern_lg_dark@2x.jpg ├── preview_modern_sf_dark@2x.jpg ├── preview_modern_lg_light@2x.jpg ├── preview_modern_sf_light@2x.jpg ├── main.m ├── macOSLucidaGrande.entitlements ├── MainWindowController.h ├── AppDelegate.h ├── NSData+MD5.m ├── MainWindowController.m ├── Info.plist ├── updateAvailable.xib ├── Base.lproj │ └── MainMenu.xib └── AppDelegate.m ├── .gitignore ├── Screenshot ├── Screenshot.png ├── guide-alert.png ├── guide-open1.png └── guide-open2.png ├── macOSLucidaGrande.xcodeproj ├── xcuserdata │ ├── blue.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ ├── bright.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── LucidaGrandeSierra.xcscheme │ ├── numeric.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── kay.yin.xcuserdatad │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── macOSLucidaGrande.xcscheme ├── project.xcworkspace │ ├── xcuserdata │ │ ├── blue.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ ├── bright.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── kay.yin.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── numeric.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── project.pbxproj ├── FAQ.md ├── LICENSE └── README.md /macOSLucidaGrande/latestBuild.txt: -------------------------------------------------------------------------------- 1 | 2018.10.09 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | macOSLucidaGrande/.DS_Store 3 | 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /Screenshot/Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/Screenshot/Screenshot.png -------------------------------------------------------------------------------- /Screenshot/guide-alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/Screenshot/guide-alert.png -------------------------------------------------------------------------------- /Screenshot/guide-open1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/Screenshot/guide-open1.png -------------------------------------------------------------------------------- /Screenshot/guide-open2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/Screenshot/guide-open2.png -------------------------------------------------------------------------------- /macOSLucidaGrande/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/text.png -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_lg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_lg.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_sf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_sf.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /macOSLucidaGrande/applyButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/applyButton.png -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_lg@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_lg@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_sf@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_sf@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/NSData+MD5.h: -------------------------------------------------------------------------------- 1 | #import "NSData+MD5.h" 2 | 3 | @interface NSData(MD5) 4 | 5 | - (NSString *)MD5; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /macOSLucidaGrande/applyDiff_10_10.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/applyDiff_10_10.patch -------------------------------------------------------------------------------- /macOSLucidaGrande/applyDiff_10_11.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/applyDiff_10_11.patch -------------------------------------------------------------------------------- /macOSLucidaGrande/applyDiff_10_12.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/applyDiff_10_12.patch -------------------------------------------------------------------------------- /macOSLucidaGrande/applyDiff_modern.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/applyDiff_modern.patch -------------------------------------------------------------------------------- /macOSLucidaGrande/macOSLucidaGrande.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/macOSLucidaGrande.icns -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_lg_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_lg_dark.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_lg_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_lg_light.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_sf_dark.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_sf_dark.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_sf_light.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_sf_light.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_lg_dark@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_lg_dark@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_sf_dark@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_sf_dark@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_lg_light@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_lg_light@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande/preview_modern_sf_light@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande/preview_modern_sf_light@2x.jpg -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/blue.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/bright.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/numeric.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/blue.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/blue.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/bright.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/bright.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/kay.yin.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/kay.yin.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/numeric.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/HEAD/macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/numeric.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /macOSLucidaGrande/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LucidaGrandeSierra 4 | // 5 | // Created by Bright on 9/10/16. 6 | // Copyright © 2016 Kay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /macOSLucidaGrande/macOSLucidaGrande.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.automation.apple-events 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macOSLucidaGrande/MainWindowController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MainWindowController.h 3 | // rClickrmacOS 4 | // 5 | // Created by Numeric on 10/29/17. 6 | // Copyright © 2017 cocappathon. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MainWindowController : NSWindowController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macOSLucidaGrande/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // macOSLucidaGrande 4 | // 5 | // Created by Bright on 9/10/16. 6 | // Copyright © 2016 Kay. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface AppDelegate : NSObject { 13 | __unsafe_unretained NSWindow *window; 14 | } 15 | 16 | @property (assign) IBOutlet NSWindow *window; 17 | 18 | 19 | @end 20 | 21 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/blue.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | macOSLucidaGrande.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/numeric.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | macOSLucidaGrande.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /FAQ.md: -------------------------------------------------------------------------------- 1 | ## If you're unable to open macOSLucidaGrande 2 | 3 | If you see the following alert: 4 | ![](https://raw.githubusercontent.com/HiKay/macOSLucidaGrande/master/Screenshot/guide-alert.png "GateKeeper Alert") 5 | 6 | Right click on the downloaded macOSLucidaGrande app and click "Open". 7 | ![](https://raw.githubusercontent.com/HiKay/macOSLucidaGrande/master/Screenshot/guide-open1.png "Choosing to Open macOSLucidaGrande app") 8 | 9 | Then click "Open" again. 10 | ![](https://raw.githubusercontent.com/HiKay/macOSLucidaGrande/master/Screenshot/guide-open2.png "Confirm and Open macOSLucidaGrande app") 11 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/bright.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | LucidaGrandeSierra.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 56939B401D84BEDA003D8A05 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/kay.yin.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | macOSLucidaGrande.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 56939B401D84BEDA003D8A05 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.xcworkspace/xcuserdata/bright.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildLocationStyle 6 | UseAppPreferences 7 | CustomBuildLocationType 8 | RelativeToDerivedData 9 | DerivedDataLocationStyle 10 | Default 11 | IssueFilterStyle 12 | ShowActiveSchemeOnly 13 | LiveSourceIssuesEnabled 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /macOSLucidaGrande/NSData+MD5.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @implementation NSData(MD5) 5 | 6 | - (NSString*)MD5 7 | { 8 | // Create byte array of unsigned chars 9 | unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH]; 10 | 11 | // Create 16 byte MD5 hash value, store in buffer 12 | CC_MD5(self.bytes, self.length, md5Buffer); 13 | 14 | // Convert unsigned char buffer to NSString of hex values 15 | NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 16 | for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 17 | [output appendFormat:@"%02x",md5Buffer[i]]; 18 | 19 | return output; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /macOSLucidaGrande/MainWindowController.m: -------------------------------------------------------------------------------- 1 | // 2 | // MainWindowController.m 3 | // rClickrmacOS 4 | // 5 | // Created by Numeric on 10/29/17. 6 | // Copyright © 2017 cocappathon. All rights reserved. 7 | // 8 | 9 | #import "MainWindowController.h" 10 | 11 | @interface MainWindowController () 12 | 13 | @end 14 | 15 | @implementation MainWindowController 16 | 17 | - (void)windowDidLoad { 18 | [super windowDidLoad]; 19 | self.window.titlebarAppearsTransparent = YES; 20 | self.window.titleVisibility = NSWindowTitleHidden; 21 | self.window.styleMask |= NSWindowStyleMaskFullSizeContentView; 22 | 23 | // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 24 | } 25 | 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Luming Yin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /macOSLucidaGrande/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /macOSLucidaGrande/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | macOSLucidaGrande.icns 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 2018.10.09 21 | CFBundleVersion 22 | 20181009 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSAppTransportSecurity 26 | 27 | NSAllowsArbitraryLoads 28 | 29 | 30 | NSHumanReadableCopyright 31 | Developed by Luming Yin. 32 | NSMainNibFile 33 | MainMenu 34 | NSPrincipalClass 35 | NSApplication 36 | 37 | 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # macOSLucidaGrande 2 | As the name suggests, this is a small utility to set Lucida Grande as your Mac's system font. 3 | - Easily switch between Lucida Grande and San Francisco as your Mac's system font on macOS Mojave (10.14), macOS High Sierra (10.13), macOS Sierra (10.12) and OS X El Capitan (10.11) 4 | - Easily switch between Lucida Grande and Helvetica Neue as your Mac's system font on OS X Yosemite (10.10) 5 | - Switches between system fonts without modifying system files, making it simple and safe 6 | 7 | **[Download macOSLucidaGrande](https://github.com/LumingYin/macOSLucidaGrande/releases/download/2018.10.09/macOSLucidaGrande-2018.10.09.dmg)** 8 | 9 | ![](https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/master/Screenshot/Screenshot.png "Screenshot of macOSLucidaGrande") 10 | 11 | ### Known issues: 12 | - Truncated text may overlap in Safari and Firefox in macOS Mojave (10.14), macOS High Sierra (10.13), macOS Sierra (10.12) and OS X El Capitan (10.11) 13 | - When typing in a password input field in the OS, like iTunes account, there is no * sign appearing when typing a character. The password is typed completely and it is accepted, but password field appears blank before submission (Issue #2). 14 | 15 | ### Special Thanks: 16 | - **[Alexander Schreiber](https://github.com/schreiberstein)** for creating the amazing original [LucidaGrandeYosemite](https://github.com/schreiberstein/lucidagrandeyosemite) and [LucidaGrandeElCapitan](https://github.com/schreiberstein/lucidagrandeelcapitan). Without his origonal project and his great take on creating diff'ed font patches, this project wouldn't have been possible 17 | 18 | -------------------------------------------------------------------------------- /macOSLucidaGrande/updateAvailable.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/bright.xcuserdatad/xcschemes/LucidaGrandeSierra.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/xcuserdata/kay.yin.xcuserdatad/xcschemes/macOSLucidaGrande.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /macOSLucidaGrande/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 189 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /macOSLucidaGrande/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // macOSLucidaGrande 4 | // 5 | // Created by Bright on 9/10/16. 6 | // Copyright © 2016 Kay. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | #import "NSData+MD5.h" 11 | 12 | typedef NS_ENUM(NSUInteger, FontType) { 13 | FontTypeLucidaGrande, 14 | FontTypeSF, 15 | }; 16 | 17 | @interface AppDelegate () { 18 | int versionNumber; 19 | BOOL latestPatchPresent; 20 | NSString *latestKnownMacOSPatchPath; 21 | NSString *sierraPatchPath; 22 | NSString *elCapitanPatchPath; 23 | NSString *yosemitePatchPath; 24 | NSString *hashSum; 25 | NSString *knownLatestPatchableLGFontHashSum; 26 | NSString *knownSystemWideLGFontPath; 27 | BOOL alreadyCheckedUpdate; 28 | } 29 | @property (weak) IBOutlet NSView *_mainView; 30 | @property (weak) IBOutlet NSButton *callToActionBtn; 31 | @property (weak) IBOutlet NSBox *systemFontChangedLabel; 32 | @property (weak) IBOutlet NSSegmentedControl *fontSelector; 33 | @property (weak) IBOutlet NSImageView *previewImage; 34 | @property (weak) IBOutlet NSTextField *fontChangedTypeLabel; 35 | @end 36 | 37 | @implementation AppDelegate 38 | @synthesize window; 39 | 40 | - (void)applicationWillFinishLaunching:(NSNotification *)notification { 41 | latestKnownMacOSPatchPath = @"/Library/Fonts/LucidaGrande_modsysfonths.ttc"; 42 | sierraPatchPath = @"/Library/Fonts/LGUI_Regular_mod.TTF"; 43 | elCapitanPatchPath = @"/Library/Fonts/LucidaGrande_modsysfontelc.ttc"; 44 | yosemitePatchPath = @"/Library/Fonts/LucidaGrande_modsysfontyos.ttc"; 45 | knownSystemWideLGFontPath = @"/System/Library/Fonts/LucidaGrande.ttc"; 46 | knownLatestPatchableLGFontHashSum = @"8fd8b90cfab02bae6f905d2cea334962"; 47 | 48 | [self.window.contentView setWantsLayer:YES]; 49 | self.window.titlebarAppearsTransparent = YES; 50 | 51 | NSData *nsData = [NSData dataWithContentsOfFile:sierraPatchPath]; 52 | hashSum = [nsData MD5]; 53 | 54 | NSString *calculatedLGFontHashSum = [[NSData dataWithContentsOfFile:knownSystemWideLGFontPath] MD5]; 55 | 56 | // Checks if system version is newer than macOS 10.14. If not, alerts the user about incompatibility and exits. 57 | NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion]; 58 | NSString* minor = [NSString stringWithFormat:@"%ld", (long)version.minorVersion]; 59 | versionNumber = [minor intValue]; 60 | if (versionNumber == 10) { 61 | [self.fontSelector setLabel:@"Helvetica Neue" forSegment:0]; 62 | } 63 | if (versionNumber > 10) { 64 | [_fontChangedTypeLabel setFont:[NSFont systemFontOfSize:11 weight:NSFontWeightMedium]]; 65 | } 66 | if (versionNumber > 14 && ![calculatedLGFontHashSum isEqualToString:knownLatestPatchableLGFontHashSum]) { 67 | // Alerts user about incompatibility 68 | self.fontSelector.enabled = NO; 69 | self.callToActionBtn.enabled = NO; 70 | NSAlert *alert = [[NSAlert alloc] init]; 71 | [alert addButtonWithTitle:@"Check for Updates"]; 72 | [alert setMessageText:@"Incompatible with your macOS installation."]; 73 | [alert setInformativeText:@"This version of LucidaGrandeSierra only supports macOS Mojave, macOS High Sierra, macOS Sierra, OS X El Capitan and OS X Yosemite."]; 74 | [alert setAlertStyle:NSAlertStyleWarning]; 75 | [alert runModal]; 76 | // Checks for update 77 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: @"https://github.com/LumingYin/macOSLucidaGrande/releases"]]; 78 | [NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.5]; 79 | } else { 80 | [self refreshStatus]; 81 | } 82 | } 83 | 84 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 85 | [self checkForUpdates]; 86 | alreadyCheckedUpdate = YES; 87 | [self.window addObserver:self forKeyPath:@"effectiveAppearance" options:NSKeyValueObservingOptionNew context:nil]; 88 | } 89 | 90 | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 91 | if ([keyPath isEqualToString:@"effectiveAppearance"] && _fontSelector != nil) { 92 | [self segmentedControlChanged:_fontSelector]; 93 | } 94 | } 95 | 96 | 97 | - (void)showLGPreview { 98 | [_fontSelector setSelected:NO forSegment:0]; 99 | [_fontSelector setSelected:YES forSegment:1]; 100 | [self updatePreviewImage:FontTypeLucidaGrande]; 101 | } 102 | 103 | - (void)showSFPreview { 104 | [_fontSelector setSelected:NO forSegment:1]; 105 | [_fontSelector setSelected:YES forSegment:0]; 106 | [self updatePreviewImage:FontTypeSF]; 107 | } 108 | 109 | - (void)updatePreviewImage:(FontType)fontType { 110 | if (@available(macOS 10.14, *)) { 111 | NSAppearanceName name = [self.window.effectiveAppearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; 112 | if (name == NSAppearanceNameDarkAqua) { 113 | if (fontType == FontTypeLucidaGrande) { 114 | _previewImage.image = [NSImage imageNamed:@"preview_modern_lg_dark"]; 115 | } else if (fontType == FontTypeSF) { 116 | _previewImage.image = [NSImage imageNamed:@"preview_modern_sf_dark"]; 117 | } 118 | } else { 119 | if (fontType == FontTypeLucidaGrande) { 120 | _previewImage.image = [NSImage imageNamed:@"preview_modern_lg_light"]; 121 | } else if (fontType == FontTypeSF) { 122 | _previewImage.image = [NSImage imageNamed:@"preview_modern_sf_light"]; 123 | } 124 | } 125 | } else { 126 | if (fontType == FontTypeLucidaGrande) { 127 | _previewImage.image = [NSImage imageNamed:@"preview_lg"]; 128 | } else if (fontType == FontTypeSF) { 129 | _previewImage.image = [NSImage imageNamed:@"preview_sf"]; 130 | } 131 | } 132 | } 133 | 134 | - (void)refreshStatus{ 135 | [self cleanOldPatch]; 136 | 137 | if (versionNumber >= 13) { 138 | latestPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:latestKnownMacOSPatchPath]; 139 | } else if (versionNumber == 12) { 140 | latestPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:sierraPatchPath]; 141 | } else if (versionNumber == 11) { 142 | latestPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:elCapitanPatchPath]; 143 | } else if (versionNumber == 10) { 144 | latestPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:yosemitePatchPath]; 145 | } 146 | 147 | if (latestPatchPresent) { 148 | [self showLGPreview]; 149 | } else { 150 | [self showSFPreview]; 151 | } 152 | _callToActionBtn.enabled = YES; 153 | } 154 | 155 | - (IBAction)segmentedControlChanged:(NSSegmentedControl *)sender { 156 | if (latestPatchPresent && sender.selectedSegment == 0) { 157 | [self updatePreviewImage:FontTypeSF]; 158 | _callToActionBtn.hidden = NO; 159 | } else if (latestPatchPresent && sender.selectedSegment == 1) { 160 | [self updatePreviewImage:FontTypeLucidaGrande]; 161 | _callToActionBtn.hidden = YES; 162 | } else if (!latestPatchPresent && sender.selectedSegment == 0) { 163 | [self updatePreviewImage:FontTypeSF]; 164 | _callToActionBtn.hidden = YES; 165 | } else if (!latestPatchPresent && sender.selectedSegment == 1) { 166 | [self updatePreviewImage:FontTypeLucidaGrande]; 167 | _callToActionBtn.hidden = NO; 168 | } 169 | } 170 | 171 | 172 | - (void)cleanOldPatch{ 173 | BOOL highSierraPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:latestKnownMacOSPatchPath]; 174 | BOOL sierraPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:sierraPatchPath]; 175 | BOOL elCapitanPatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:elCapitanPatchPath]; 176 | BOOL yosemitePatchPresent = [[NSFileManager defaultManager] fileExistsAtPath:yosemitePatchPath]; 177 | if (versionNumber >= 13){ 178 | if (sierraPatchPresent) { 179 | [[NSFileManager defaultManager] removeItemAtPath:sierraPatchPath error:nil]; 180 | } 181 | if (elCapitanPatchPresent) { 182 | [[NSFileManager defaultManager] removeItemAtPath:elCapitanPatchPath error:nil]; 183 | } 184 | if (yosemitePatchPresent) { 185 | [[NSFileManager defaultManager] removeItemAtPath:yosemitePatchPath error:nil]; 186 | } 187 | } else if (versionNumber == 12){ 188 | if (sierraPatchPresent && ![hashSum isEqual: @"aeb6c59d1c4847f1bea4172fe5f93f14"]) { 189 | [[NSFileManager defaultManager] removeItemAtPath:sierraPatchPath error:nil]; 190 | NSString *nameOfPatchFile = [NSString stringWithFormat:@"applyDiff_10_%d", versionNumber]; 191 | NSString *diffPath = [[NSBundle mainBundle] pathForResource:nameOfPatchFile ofType:@"patch"]; 192 | // Copies the Lucida Grande font over to the desired installation location 193 | NSTask *task = [[NSTask alloc] init]; 194 | task.launchPath = @"/usr/bin/bspatch"; 195 | task.arguments = @[@"/System/Library/Fonts/LucidaGrande.ttc", sierraPatchPath, diffPath]; 196 | [task launch]; 197 | NSAlert *alert = [[NSAlert alloc] init]; 198 | [alert addButtonWithTitle:@"OK"]; 199 | [alert setMessageText:@"A newer version of Lucida Grande has been applied."]; 200 | [alert setInformativeText:@"A newer version of Lucida Grande has been applied to your Mac. Bold system font should also be in Lucida Grande now."]; 201 | [alert setAlertStyle:NSAlertStyleWarning]; 202 | [alert runModal]; 203 | 204 | } 205 | if (highSierraPatchPresent) { 206 | [[NSFileManager defaultManager] removeItemAtPath:latestKnownMacOSPatchPath error:nil]; 207 | } 208 | if (elCapitanPatchPresent) { 209 | [[NSFileManager defaultManager] removeItemAtPath:elCapitanPatchPath error:nil]; 210 | } 211 | if (yosemitePatchPresent) { 212 | [[NSFileManager defaultManager] removeItemAtPath:yosemitePatchPath error:nil]; 213 | } 214 | } else if (versionNumber == 11) { 215 | if (highSierraPatchPresent) { 216 | [[NSFileManager defaultManager] removeItemAtPath:latestKnownMacOSPatchPath error:nil]; 217 | } 218 | if (sierraPatchPresent) { 219 | [[NSFileManager defaultManager] removeItemAtPath:sierraPatchPath error:nil]; 220 | } 221 | if (yosemitePatchPresent) { 222 | [[NSFileManager defaultManager] removeItemAtPath:yosemitePatchPath error:nil]; 223 | } 224 | } else if (versionNumber == 10) { 225 | if (highSierraPatchPresent) { 226 | [[NSFileManager defaultManager] removeItemAtPath:latestKnownMacOSPatchPath error:nil]; 227 | } 228 | if (sierraPatchPresent) { 229 | [[NSFileManager defaultManager] removeItemAtPath:sierraPatchPath error:nil]; 230 | } 231 | if (elCapitanPatchPresent) { 232 | [[NSFileManager defaultManager] removeItemAtPath:elCapitanPatchPath error:nil]; 233 | } 234 | } 235 | } 236 | 237 | - (void)applicationWillTerminate:(NSNotification *)aNotification { 238 | } 239 | 240 | - (BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)application 241 | { 242 | return YES; 243 | } 244 | 245 | 246 | - (IBAction)useFont:(id)sender { 247 | if (latestPatchPresent) { 248 | NSString *messageText = @"System font set to San Francisco."; 249 | NSString *informativeText = @"San Francisco will appear as the UI font in newly-opened applications. For San Francisco to be used system-wide, please restart your Mac."; 250 | 251 | if (versionNumber >= 13) { 252 | [[NSFileManager defaultManager] removeItemAtPath:latestKnownMacOSPatchPath error:nil]; 253 | } else if (versionNumber == 12) { 254 | [[NSFileManager defaultManager] removeItemAtPath:sierraPatchPath error:nil]; 255 | } else if (versionNumber == 11) { 256 | [[NSFileManager defaultManager] removeItemAtPath:elCapitanPatchPath error:nil]; 257 | } else if (versionNumber == 10) { 258 | [[NSFileManager defaultManager] removeItemAtPath:yosemitePatchPath error:nil]; 259 | messageText = @"System font set to Helvetica Neue."; 260 | informativeText = @"Helvetica Neue will appear as the UI font in newly-opened applications. For Helvetica Neue to be used system-wide, please restart your Mac."; 261 | } 262 | 263 | // Refresh main UI to reflect current system typeface setting 264 | [self refreshStatus]; 265 | _systemFontChangedLabel.hidden = NO; 266 | _callToActionBtn.hidden = YES; 267 | _fontSelector.enabled = NO; 268 | _callToActionBtn.enabled = NO; 269 | 270 | // Present an alert informing user to log off their Mac 271 | NSAlert *alert = [[NSAlert alloc] init]; 272 | [alert addButtonWithTitle:@"OK"]; 273 | [alert setMessageText:messageText]; 274 | [alert setInformativeText:informativeText]; 275 | [alert setAlertStyle:NSAlertStyleWarning]; 276 | [alert runModal]; 277 | 278 | } 279 | 280 | else { 281 | // Fetches the URL of Lucida Grande font that poses San Francisco 282 | NSString *nameOfPatchFile; 283 | if (versionNumber > 13) { 284 | nameOfPatchFile = @"applyDiff_modern"; 285 | } else { 286 | nameOfPatchFile = [NSString stringWithFormat:@"applyDiff_10_%d", versionNumber]; 287 | } 288 | NSString *diffPath = [[NSBundle mainBundle] pathForResource:nameOfPatchFile ofType:@"patch"]; 289 | // Copies the Lucida Grande font over to the desired installation location 290 | NSTask *task = [[NSTask alloc] init]; 291 | task.launchPath = @"/usr/bin/bspatch"; 292 | if (versionNumber >= 13) { 293 | task.arguments = @[@"/System/Library/Fonts/LucidaGrande.ttc", latestKnownMacOSPatchPath, diffPath]; 294 | } else if (versionNumber == 12) { 295 | task.arguments = @[@"/System/Library/Fonts/LucidaGrande.ttc", sierraPatchPath, diffPath]; 296 | } else if (versionNumber == 11) { 297 | task.arguments = @[@"/System/Library/Fonts/LucidaGrande.ttc", elCapitanPatchPath, diffPath]; 298 | } else if (versionNumber == 10) { 299 | task.arguments = @[@"/System/Library/Fonts/LucidaGrande.ttc", yosemitePatchPath, diffPath]; 300 | } 301 | [task launch]; 302 | 303 | // Refresh main UI to reflect current system typeface setting 304 | // We do not use [self refreshStatus]; in this case because unless sleep is used, [self refreshStatus]; executes before the bash task completes, meaning the status won't be correctly refreshed 305 | 306 | _systemFontChangedLabel.hidden = NO; 307 | _callToActionBtn.hidden = YES; 308 | _fontSelector.enabled = NO; 309 | _callToActionBtn.enabled = NO; 310 | 311 | // Present an alert informing user to restart their Mac 312 | NSAlert *alert = [[NSAlert alloc] init]; 313 | [alert addButtonWithTitle:@"OK"]; 314 | [alert setMessageText:@"System font is set to Lucida Grande."]; 315 | [alert setInformativeText:@"Lucida Grande will appear as the UI font in newly-opened applications. For Lucida Grande to be used system-wide, please restart your Mac."]; 316 | [alert setAlertStyle:NSAlertStyleWarning]; 317 | [alert runModal]; 318 | 319 | } 320 | } 321 | 322 | - (IBAction)checkForUpdates:(id)sender { 323 | [self checkForUpdates]; 324 | } 325 | - (IBAction)menuCheckForUpdates:(id)sender { 326 | [self checkForUpdates]; 327 | } 328 | 329 | - (void)checkForUpdates { 330 | [[NSURLCache sharedURLCache] removeAllCachedResponses]; 331 | NSURL *URL = [NSURL URLWithString:@"https://raw.githubusercontent.com/LumingYin/macOSLucidaGrande/master/macOSLucidaGrande/latestBuild.txt"]; 332 | NSError *error; 333 | NSString *latestBuildNumberRaw = [[NSString alloc] 334 | initWithContentsOfURL:URL 335 | encoding:NSUTF8StringEncoding 336 | error:&error]; 337 | NSString *latestBuildNumber = [latestBuildNumberRaw stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 338 | NSString *currentBuildNumber = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 339 | 340 | if ([latestBuildNumber compare:currentBuildNumber options:NSNumericSearch] == NSOrderedDescending) { 341 | if (!alreadyCheckedUpdate) { 342 | NSButton *button = [[NSButton alloc] initWithFrame:NSMakeRect(360, 328, 115, 20)]; 343 | [button setBezelStyle:NSBezelStyleRoundRect]; 344 | 345 | button.title = @"Update Available"; 346 | [button setAction:@selector(checkForUpdates:)]; 347 | 348 | [self._mainView addSubview:button]; 349 | } 350 | 351 | NSAlert *alert = [[NSAlert alloc] init]; 352 | [alert addButtonWithTitle:@"Download Update"]; 353 | [alert setMessageText:@"Update Available"]; 354 | NSString *messageText = [NSString stringWithFormat:@"You are currently running macOSLucidaGrande Version %@, and the latest version is Version %@.", currentBuildNumber, latestBuildNumber]; 355 | [alert setInformativeText:messageText]; 356 | [alert setAlertStyle:NSAlertStyleWarning]; 357 | [alert runModal]; 358 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString: @"https://github.com/LumingYin/macOSLucidaGrande/releases"]]; 359 | } else if (alreadyCheckedUpdate) { 360 | NSAlert *alert = [[NSAlert alloc] init]; 361 | [alert addButtonWithTitle:@"OK"]; 362 | [alert setMessageText:@"No Update Available"]; 363 | NSString *messageText = [NSString stringWithFormat:@"macOSLucidaGrande Version %@ is the latest version.", currentBuildNumber]; 364 | [alert setInformativeText:messageText]; 365 | [alert setAlertStyle:NSAlertStyleWarning]; 366 | [alert runModal]; 367 | 368 | } 369 | } 370 | 371 | @end 372 | -------------------------------------------------------------------------------- /macOSLucidaGrande.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 32B7BA6F216C6EC100C75E48 /* applyDiff_modern.patch in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA6E216C6EC100C75E48 /* applyDiff_modern.patch */; }; 11 | 32B7BA78216C72A800C75E48 /* preview_modern_lg_light.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA70216C72A800C75E48 /* preview_modern_lg_light.jpg */; }; 12 | 32B7BA79216C72A800C75E48 /* preview_modern_sf_light@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA71216C72A800C75E48 /* preview_modern_sf_light@2x.jpg */; }; 13 | 32B7BA7A216C72A800C75E48 /* preview_modern_lg_light@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA72216C72A800C75E48 /* preview_modern_lg_light@2x.jpg */; }; 14 | 32B7BA7B216C72A800C75E48 /* preview_modern_sf_light.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA73216C72A800C75E48 /* preview_modern_sf_light.jpg */; }; 15 | 32B7BA7C216C72A800C75E48 /* preview_modern_lg_dark.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA74216C72A800C75E48 /* preview_modern_lg_dark.jpg */; }; 16 | 32B7BA7D216C72A800C75E48 /* preview_modern_sf_dark@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA75216C72A800C75E48 /* preview_modern_sf_dark@2x.jpg */; }; 17 | 32B7BA7E216C72A800C75E48 /* preview_modern_sf_dark.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA76216C72A800C75E48 /* preview_modern_sf_dark.jpg */; }; 18 | 32B7BA7F216C72A800C75E48 /* preview_modern_lg_dark@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32B7BA77216C72A800C75E48 /* preview_modern_lg_dark@2x.jpg */; }; 19 | 3C23D0D71FB6278D0065B863 /* MainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C23D0D61FB6278C0065B863 /* MainWindowController.m */; }; 20 | 3C23D0DD1FB633870065B863 /* applyButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0DC1FB633870065B863 /* applyButton.png */; }; 21 | 3C23D0E11FB639440065B863 /* text.png in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0E01FB639440065B863 /* text.png */; }; 22 | 3C23D0E41FB6416B0065B863 /* preview_sf.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0E21FB6416B0065B863 /* preview_sf.jpg */; }; 23 | 3C23D0E51FB6416B0065B863 /* preview_lg.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0E31FB6416B0065B863 /* preview_lg.jpg */; }; 24 | 3C23D0E81FB6416E0065B863 /* preview_sf@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0E61FB6416E0065B863 /* preview_sf@2x.jpg */; }; 25 | 3C23D0E91FB6416E0065B863 /* preview_lg@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3C23D0E71FB6416E0065B863 /* preview_lg@2x.jpg */; }; 26 | 560E941A1D84F29C0073B846 /* applyDiff_10_10.patch in Resources */ = {isa = PBXBuildFile; fileRef = 560E94171D84ECD40073B846 /* applyDiff_10_10.patch */; }; 27 | 560E941B1D84F29C0073B846 /* applyDiff_10_11.patch in Resources */ = {isa = PBXBuildFile; fileRef = 560E94181D84ECD40073B846 /* applyDiff_10_11.patch */; }; 28 | 560E941C1D84F29C0073B846 /* applyDiff_10_12.patch in Resources */ = {isa = PBXBuildFile; fileRef = 560E94191D84ECD40073B846 /* applyDiff_10_12.patch */; }; 29 | 562A09FE1D85C1D500A98087 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 562A09FD1D85C1D500A98087 /* AppKit.framework */; }; 30 | 56939B461D84BEDA003D8A05 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 56939B451D84BEDA003D8A05 /* AppDelegate.m */; }; 31 | 56939B491D84BEDA003D8A05 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 56939B481D84BEDA003D8A05 /* main.m */; }; 32 | 56939B4B1D84BEDA003D8A05 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 56939B4A1D84BEDA003D8A05 /* Assets.xcassets */; }; 33 | 56939B4E1D84BEDA003D8A05 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 56939B4C1D84BEDA003D8A05 /* MainMenu.xib */; }; 34 | 56BB4A591D84DE2100B4A7CE /* macOSLucidaGrande.icns in Resources */ = {isa = PBXBuildFile; fileRef = 56BB4A581D84DE2100B4A7CE /* macOSLucidaGrande.icns */; }; 35 | 56DEB66B1E0973180049D950 /* NSData+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 56DEB66A1E0973180049D950 /* NSData+MD5.m */; }; 36 | /* End PBXBuildFile section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 32B7BA6E216C6EC100C75E48 /* applyDiff_modern.patch */ = {isa = PBXFileReference; lastKnownFileType = file; path = applyDiff_modern.patch; sourceTree = ""; }; 40 | 32B7BA70216C72A800C75E48 /* preview_modern_lg_light.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_modern_lg_light.jpg; sourceTree = ""; }; 41 | 32B7BA71216C72A800C75E48 /* preview_modern_sf_light@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_modern_sf_light@2x.jpg"; sourceTree = ""; }; 42 | 32B7BA72216C72A800C75E48 /* preview_modern_lg_light@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_modern_lg_light@2x.jpg"; sourceTree = ""; }; 43 | 32B7BA73216C72A800C75E48 /* preview_modern_sf_light.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_modern_sf_light.jpg; sourceTree = ""; }; 44 | 32B7BA74216C72A800C75E48 /* preview_modern_lg_dark.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_modern_lg_dark.jpg; sourceTree = ""; }; 45 | 32B7BA75216C72A800C75E48 /* preview_modern_sf_dark@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_modern_sf_dark@2x.jpg"; sourceTree = ""; }; 46 | 32B7BA76216C72A800C75E48 /* preview_modern_sf_dark.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_modern_sf_dark.jpg; sourceTree = ""; }; 47 | 32B7BA77216C72A800C75E48 /* preview_modern_lg_dark@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_modern_lg_dark@2x.jpg"; sourceTree = ""; }; 48 | 32B7BA80216C760D00C75E48 /* macOSLucidaGrande.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOSLucidaGrande.entitlements; sourceTree = ""; }; 49 | 3C23D0D51FB6278C0065B863 /* MainWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainWindowController.h; sourceTree = ""; }; 50 | 3C23D0D61FB6278C0065B863 /* MainWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainWindowController.m; sourceTree = ""; }; 51 | 3C23D0DC1FB633870065B863 /* applyButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = applyButton.png; sourceTree = ""; }; 52 | 3C23D0E01FB639440065B863 /* text.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text.png; sourceTree = ""; }; 53 | 3C23D0E21FB6416B0065B863 /* preview_sf.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_sf.jpg; sourceTree = ""; }; 54 | 3C23D0E31FB6416B0065B863 /* preview_lg.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = preview_lg.jpg; sourceTree = ""; }; 55 | 3C23D0E61FB6416E0065B863 /* preview_sf@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_sf@2x.jpg"; sourceTree = ""; }; 56 | 3C23D0E71FB6416E0065B863 /* preview_lg@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "preview_lg@2x.jpg"; sourceTree = ""; }; 57 | 560E94171D84ECD40073B846 /* applyDiff_10_10.patch */ = {isa = PBXFileReference; lastKnownFileType = file; path = applyDiff_10_10.patch; sourceTree = ""; }; 58 | 560E94181D84ECD40073B846 /* applyDiff_10_11.patch */ = {isa = PBXFileReference; lastKnownFileType = file; path = applyDiff_10_11.patch; sourceTree = ""; }; 59 | 560E94191D84ECD40073B846 /* applyDiff_10_12.patch */ = {isa = PBXFileReference; lastKnownFileType = file; path = applyDiff_10_12.patch; sourceTree = ""; }; 60 | 562A09FD1D85C1D500A98087 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 61 | 56939B411D84BEDA003D8A05 /* macOSLucidaGrande.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = macOSLucidaGrande.app; sourceTree = BUILT_PRODUCTS_DIR; }; 62 | 56939B441D84BEDA003D8A05 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 63 | 56939B451D84BEDA003D8A05 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 64 | 56939B481D84BEDA003D8A05 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 65 | 56939B4A1D84BEDA003D8A05 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 66 | 56939B4D1D84BEDA003D8A05 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 67 | 56939B4F1D84BEDA003D8A05 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 68 | 56BB4A581D84DE2100B4A7CE /* macOSLucidaGrande.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = macOSLucidaGrande.icns; sourceTree = ""; }; 69 | 56DEB6671E0972D50049D950 /* libcommonCrypto.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcommonCrypto.tbd; path = usr/lib/system/libcommonCrypto.tbd; sourceTree = SDKROOT; }; 70 | 56DEB6691E0973180049D950 /* NSData+MD5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+MD5.h"; sourceTree = ""; }; 71 | 56DEB66A1E0973180049D950 /* NSData+MD5.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+MD5.m"; sourceTree = ""; }; 72 | 56DEB66C1E0973340049D950 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 73 | /* End PBXFileReference section */ 74 | 75 | /* Begin PBXFrameworksBuildPhase section */ 76 | 56939B3E1D84BEDA003D8A05 /* Frameworks */ = { 77 | isa = PBXFrameworksBuildPhase; 78 | buildActionMask = 2147483647; 79 | files = ( 80 | 562A09FE1D85C1D500A98087 /* AppKit.framework in Frameworks */, 81 | ); 82 | runOnlyForDeploymentPostprocessing = 0; 83 | }; 84 | /* End PBXFrameworksBuildPhase section */ 85 | 86 | /* Begin PBXGroup section */ 87 | 562A09FC1D85C1D500A98087 /* Frameworks */ = { 88 | isa = PBXGroup; 89 | children = ( 90 | 56DEB66C1E0973340049D950 /* CoreData.framework */, 91 | 56DEB6671E0972D50049D950 /* libcommonCrypto.tbd */, 92 | 562A09FD1D85C1D500A98087 /* AppKit.framework */, 93 | ); 94 | name = Frameworks; 95 | sourceTree = ""; 96 | }; 97 | 56939B381D84BEDA003D8A05 = { 98 | isa = PBXGroup; 99 | children = ( 100 | 56939B431D84BEDA003D8A05 /* macOSLucidaGrande */, 101 | 56939B421D84BEDA003D8A05 /* Products */, 102 | 562A09FC1D85C1D500A98087 /* Frameworks */, 103 | ); 104 | sourceTree = ""; 105 | }; 106 | 56939B421D84BEDA003D8A05 /* Products */ = { 107 | isa = PBXGroup; 108 | children = ( 109 | 56939B411D84BEDA003D8A05 /* macOSLucidaGrande.app */, 110 | ); 111 | name = Products; 112 | sourceTree = ""; 113 | }; 114 | 56939B431D84BEDA003D8A05 /* macOSLucidaGrande */ = { 115 | isa = PBXGroup; 116 | children = ( 117 | 32B7BA80216C760D00C75E48 /* macOSLucidaGrande.entitlements */, 118 | 3C23D0E31FB6416B0065B863 /* preview_lg.jpg */, 119 | 3C23D0E21FB6416B0065B863 /* preview_sf.jpg */, 120 | 3C23D0E71FB6416E0065B863 /* preview_lg@2x.jpg */, 121 | 3C23D0E61FB6416E0065B863 /* preview_sf@2x.jpg */, 122 | 32B7BA74216C72A800C75E48 /* preview_modern_lg_dark.jpg */, 123 | 32B7BA77216C72A800C75E48 /* preview_modern_lg_dark@2x.jpg */, 124 | 32B7BA70216C72A800C75E48 /* preview_modern_lg_light.jpg */, 125 | 32B7BA72216C72A800C75E48 /* preview_modern_lg_light@2x.jpg */, 126 | 32B7BA76216C72A800C75E48 /* preview_modern_sf_dark.jpg */, 127 | 32B7BA73216C72A800C75E48 /* preview_modern_sf_light.jpg */, 128 | 32B7BA71216C72A800C75E48 /* preview_modern_sf_light@2x.jpg */, 129 | 32B7BA75216C72A800C75E48 /* preview_modern_sf_dark@2x.jpg */, 130 | 3C23D0E01FB639440065B863 /* text.png */, 131 | 3C23D0DC1FB633870065B863 /* applyButton.png */, 132 | 560E94171D84ECD40073B846 /* applyDiff_10_10.patch */, 133 | 560E94181D84ECD40073B846 /* applyDiff_10_11.patch */, 134 | 560E94191D84ECD40073B846 /* applyDiff_10_12.patch */, 135 | 32B7BA6E216C6EC100C75E48 /* applyDiff_modern.patch */, 136 | 56BB4A581D84DE2100B4A7CE /* macOSLucidaGrande.icns */, 137 | 56939B441D84BEDA003D8A05 /* AppDelegate.h */, 138 | 56939B451D84BEDA003D8A05 /* AppDelegate.m */, 139 | 56DEB6691E0973180049D950 /* NSData+MD5.h */, 140 | 56DEB66A1E0973180049D950 /* NSData+MD5.m */, 141 | 3C23D0D51FB6278C0065B863 /* MainWindowController.h */, 142 | 3C23D0D61FB6278C0065B863 /* MainWindowController.m */, 143 | 56939B4A1D84BEDA003D8A05 /* Assets.xcassets */, 144 | 56939B4C1D84BEDA003D8A05 /* MainMenu.xib */, 145 | 56939B4F1D84BEDA003D8A05 /* Info.plist */, 146 | 56939B471D84BEDA003D8A05 /* Supporting Files */, 147 | ); 148 | path = macOSLucidaGrande; 149 | sourceTree = ""; 150 | }; 151 | 56939B471D84BEDA003D8A05 /* Supporting Files */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 56939B481D84BEDA003D8A05 /* main.m */, 155 | ); 156 | name = "Supporting Files"; 157 | sourceTree = ""; 158 | }; 159 | /* End PBXGroup section */ 160 | 161 | /* Begin PBXNativeTarget section */ 162 | 56939B401D84BEDA003D8A05 /* macOSLucidaGrande */ = { 163 | isa = PBXNativeTarget; 164 | buildConfigurationList = 56939B521D84BEDA003D8A05 /* Build configuration list for PBXNativeTarget "macOSLucidaGrande" */; 165 | buildPhases = ( 166 | 56939B3D1D84BEDA003D8A05 /* Sources */, 167 | 56939B3E1D84BEDA003D8A05 /* Frameworks */, 168 | 56939B3F1D84BEDA003D8A05 /* Resources */, 169 | ); 170 | buildRules = ( 171 | ); 172 | dependencies = ( 173 | ); 174 | name = macOSLucidaGrande; 175 | productName = macOSLucidaGrande; 176 | productReference = 56939B411D84BEDA003D8A05 /* macOSLucidaGrande.app */; 177 | productType = "com.apple.product-type.application"; 178 | }; 179 | /* End PBXNativeTarget section */ 180 | 181 | /* Begin PBXProject section */ 182 | 56939B391D84BEDA003D8A05 /* Project object */ = { 183 | isa = PBXProject; 184 | attributes = { 185 | LastUpgradeCheck = 0800; 186 | ORGANIZATIONNAME = Kay; 187 | TargetAttributes = { 188 | 56939B401D84BEDA003D8A05 = { 189 | CreatedOnToolsVersion = 8.0; 190 | DevelopmentTeam = 3Q7XKEDZ36; 191 | ProvisioningStyle = Automatic; 192 | SystemCapabilities = { 193 | com.apple.HardenedRuntime = { 194 | enabled = 1; 195 | }; 196 | }; 197 | }; 198 | }; 199 | }; 200 | buildConfigurationList = 56939B3C1D84BEDA003D8A05 /* Build configuration list for PBXProject "macOSLucidaGrande" */; 201 | compatibilityVersion = "Xcode 3.2"; 202 | developmentRegion = English; 203 | hasScannedForEncodings = 0; 204 | knownRegions = ( 205 | en, 206 | Base, 207 | ); 208 | mainGroup = 56939B381D84BEDA003D8A05; 209 | productRefGroup = 56939B421D84BEDA003D8A05 /* Products */; 210 | projectDirPath = ""; 211 | projectRoot = ""; 212 | targets = ( 213 | 56939B401D84BEDA003D8A05 /* macOSLucidaGrande */, 214 | ); 215 | }; 216 | /* End PBXProject section */ 217 | 218 | /* Begin PBXResourcesBuildPhase section */ 219 | 56939B3F1D84BEDA003D8A05 /* Resources */ = { 220 | isa = PBXResourcesBuildPhase; 221 | buildActionMask = 2147483647; 222 | files = ( 223 | 3C23D0E81FB6416E0065B863 /* preview_sf@2x.jpg in Resources */, 224 | 32B7BA7D216C72A800C75E48 /* preview_modern_sf_dark@2x.jpg in Resources */, 225 | 32B7BA78216C72A800C75E48 /* preview_modern_lg_light.jpg in Resources */, 226 | 560E941A1D84F29C0073B846 /* applyDiff_10_10.patch in Resources */, 227 | 32B7BA7F216C72A800C75E48 /* preview_modern_lg_dark@2x.jpg in Resources */, 228 | 560E941B1D84F29C0073B846 /* applyDiff_10_11.patch in Resources */, 229 | 3C23D0DD1FB633870065B863 /* applyButton.png in Resources */, 230 | 3C23D0E51FB6416B0065B863 /* preview_lg.jpg in Resources */, 231 | 32B7BA7C216C72A800C75E48 /* preview_modern_lg_dark.jpg in Resources */, 232 | 3C23D0E41FB6416B0065B863 /* preview_sf.jpg in Resources */, 233 | 560E941C1D84F29C0073B846 /* applyDiff_10_12.patch in Resources */, 234 | 3C23D0E91FB6416E0065B863 /* preview_lg@2x.jpg in Resources */, 235 | 56939B4B1D84BEDA003D8A05 /* Assets.xcassets in Resources */, 236 | 32B7BA7B216C72A800C75E48 /* preview_modern_sf_light.jpg in Resources */, 237 | 3C23D0E11FB639440065B863 /* text.png in Resources */, 238 | 32B7BA6F216C6EC100C75E48 /* applyDiff_modern.patch in Resources */, 239 | 32B7BA7E216C72A800C75E48 /* preview_modern_sf_dark.jpg in Resources */, 240 | 32B7BA7A216C72A800C75E48 /* preview_modern_lg_light@2x.jpg in Resources */, 241 | 56939B4E1D84BEDA003D8A05 /* MainMenu.xib in Resources */, 242 | 56BB4A591D84DE2100B4A7CE /* macOSLucidaGrande.icns in Resources */, 243 | 32B7BA79216C72A800C75E48 /* preview_modern_sf_light@2x.jpg in Resources */, 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | }; 247 | /* End PBXResourcesBuildPhase section */ 248 | 249 | /* Begin PBXSourcesBuildPhase section */ 250 | 56939B3D1D84BEDA003D8A05 /* Sources */ = { 251 | isa = PBXSourcesBuildPhase; 252 | buildActionMask = 2147483647; 253 | files = ( 254 | 3C23D0D71FB6278D0065B863 /* MainWindowController.m in Sources */, 255 | 56939B491D84BEDA003D8A05 /* main.m in Sources */, 256 | 56939B461D84BEDA003D8A05 /* AppDelegate.m in Sources */, 257 | 56DEB66B1E0973180049D950 /* NSData+MD5.m in Sources */, 258 | ); 259 | runOnlyForDeploymentPostprocessing = 0; 260 | }; 261 | /* End PBXSourcesBuildPhase section */ 262 | 263 | /* Begin PBXVariantGroup section */ 264 | 56939B4C1D84BEDA003D8A05 /* MainMenu.xib */ = { 265 | isa = PBXVariantGroup; 266 | children = ( 267 | 56939B4D1D84BEDA003D8A05 /* Base */, 268 | ); 269 | name = MainMenu.xib; 270 | sourceTree = ""; 271 | }; 272 | /* End PBXVariantGroup section */ 273 | 274 | /* Begin XCBuildConfiguration section */ 275 | 56939B501D84BEDA003D8A05 /* Debug */ = { 276 | isa = XCBuildConfiguration; 277 | buildSettings = { 278 | ALWAYS_SEARCH_USER_PATHS = NO; 279 | CLANG_ANALYZER_NONNULL = YES; 280 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 281 | CLANG_CXX_LIBRARY = "libc++"; 282 | CLANG_ENABLE_MODULES = YES; 283 | CLANG_ENABLE_OBJC_ARC = YES; 284 | CLANG_WARN_BOOL_CONVERSION = YES; 285 | CLANG_WARN_CONSTANT_CONVERSION = YES; 286 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 287 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 288 | CLANG_WARN_EMPTY_BODY = YES; 289 | CLANG_WARN_ENUM_CONVERSION = YES; 290 | CLANG_WARN_INFINITE_RECURSION = YES; 291 | CLANG_WARN_INT_CONVERSION = YES; 292 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 293 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 294 | CLANG_WARN_UNREACHABLE_CODE = YES; 295 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 296 | CODE_SIGN_IDENTITY = "-"; 297 | COPY_PHASE_STRIP = NO; 298 | DEBUG_INFORMATION_FORMAT = dwarf; 299 | ENABLE_STRICT_OBJC_MSGSEND = YES; 300 | ENABLE_TESTABILITY = YES; 301 | GCC_C_LANGUAGE_STANDARD = gnu99; 302 | GCC_DYNAMIC_NO_PIC = NO; 303 | GCC_NO_COMMON_BLOCKS = YES; 304 | GCC_OPTIMIZATION_LEVEL = 0; 305 | GCC_PREPROCESSOR_DEFINITIONS = ( 306 | "DEBUG=1", 307 | "$(inherited)", 308 | ); 309 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 310 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 311 | GCC_WARN_UNDECLARED_SELECTOR = YES; 312 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 313 | GCC_WARN_UNUSED_FUNCTION = YES; 314 | GCC_WARN_UNUSED_VARIABLE = YES; 315 | MACOSX_DEPLOYMENT_TARGET = 10.12; 316 | MTL_ENABLE_DEBUG_INFO = YES; 317 | ONLY_ACTIVE_ARCH = YES; 318 | SDKROOT = macosx; 319 | }; 320 | name = Debug; 321 | }; 322 | 56939B511D84BEDA003D8A05 /* Release */ = { 323 | isa = XCBuildConfiguration; 324 | buildSettings = { 325 | ALWAYS_SEARCH_USER_PATHS = NO; 326 | CLANG_ANALYZER_NONNULL = YES; 327 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 328 | CLANG_CXX_LIBRARY = "libc++"; 329 | CLANG_ENABLE_MODULES = YES; 330 | CLANG_ENABLE_OBJC_ARC = YES; 331 | CLANG_WARN_BOOL_CONVERSION = YES; 332 | CLANG_WARN_CONSTANT_CONVERSION = YES; 333 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 334 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 335 | CLANG_WARN_EMPTY_BODY = YES; 336 | CLANG_WARN_ENUM_CONVERSION = YES; 337 | CLANG_WARN_INFINITE_RECURSION = YES; 338 | CLANG_WARN_INT_CONVERSION = YES; 339 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 340 | CLANG_WARN_SUSPICIOUS_MOVES = YES; 341 | CLANG_WARN_UNREACHABLE_CODE = YES; 342 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 343 | CODE_SIGN_IDENTITY = "-"; 344 | COPY_PHASE_STRIP = NO; 345 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 346 | ENABLE_NS_ASSERTIONS = NO; 347 | ENABLE_STRICT_OBJC_MSGSEND = YES; 348 | GCC_C_LANGUAGE_STANDARD = gnu99; 349 | GCC_NO_COMMON_BLOCKS = YES; 350 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 351 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 352 | GCC_WARN_UNDECLARED_SELECTOR = YES; 353 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 354 | GCC_WARN_UNUSED_FUNCTION = YES; 355 | GCC_WARN_UNUSED_VARIABLE = YES; 356 | MACOSX_DEPLOYMENT_TARGET = 10.12; 357 | MTL_ENABLE_DEBUG_INFO = NO; 358 | SDKROOT = macosx; 359 | }; 360 | name = Release; 361 | }; 362 | 56939B531D84BEDA003D8A05 /* Debug */ = { 363 | isa = XCBuildConfiguration; 364 | buildSettings = { 365 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 366 | CODE_SIGN_ENTITLEMENTS = macOSLucidaGrande/macOSLucidaGrande.entitlements; 367 | CODE_SIGN_IDENTITY = "Mac Developer"; 368 | COMBINE_HIDPI_IMAGES = YES; 369 | DEVELOPMENT_TEAM = 3Q7XKEDZ36; 370 | ENABLE_HARDENED_RUNTIME = YES; 371 | INFOPLIST_FILE = macOSLucidaGrande/Info.plist; 372 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 373 | LIBRARY_SEARCH_PATHS = ( 374 | "$(inherited)", 375 | "$(SDKROOT)/usr/lib/system", 376 | ); 377 | MACOSX_DEPLOYMENT_TARGET = 10.10; 378 | MTL_ENABLE_DEBUG_INFO = NO; 379 | PRODUCT_BUNDLE_IDENTIFIER = com.hikay.macOSLucidaGrande; 380 | PRODUCT_NAME = "$(TARGET_NAME)"; 381 | PROVISIONING_PROFILE_SPECIFIER = ""; 382 | }; 383 | name = Debug; 384 | }; 385 | 56939B541D84BEDA003D8A05 /* Release */ = { 386 | isa = XCBuildConfiguration; 387 | buildSettings = { 388 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 389 | CODE_SIGN_ENTITLEMENTS = macOSLucidaGrande/macOSLucidaGrande.entitlements; 390 | CODE_SIGN_IDENTITY = "Mac Developer"; 391 | COMBINE_HIDPI_IMAGES = YES; 392 | DEVELOPMENT_TEAM = 3Q7XKEDZ36; 393 | ENABLE_HARDENED_RUNTIME = YES; 394 | INFOPLIST_FILE = macOSLucidaGrande/Info.plist; 395 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 396 | LIBRARY_SEARCH_PATHS = ( 397 | "$(inherited)", 398 | "$(SDKROOT)/usr/lib/system", 399 | ); 400 | MACOSX_DEPLOYMENT_TARGET = 10.10; 401 | MTL_ENABLE_DEBUG_INFO = YES; 402 | PRODUCT_BUNDLE_IDENTIFIER = com.hikay.macOSLucidaGrande; 403 | PRODUCT_NAME = "$(TARGET_NAME)"; 404 | PROVISIONING_PROFILE_SPECIFIER = ""; 405 | }; 406 | name = Release; 407 | }; 408 | /* End XCBuildConfiguration section */ 409 | 410 | /* Begin XCConfigurationList section */ 411 | 56939B3C1D84BEDA003D8A05 /* Build configuration list for PBXProject "macOSLucidaGrande" */ = { 412 | isa = XCConfigurationList; 413 | buildConfigurations = ( 414 | 56939B501D84BEDA003D8A05 /* Debug */, 415 | 56939B511D84BEDA003D8A05 /* Release */, 416 | ); 417 | defaultConfigurationIsVisible = 0; 418 | defaultConfigurationName = Release; 419 | }; 420 | 56939B521D84BEDA003D8A05 /* Build configuration list for PBXNativeTarget "macOSLucidaGrande" */ = { 421 | isa = XCConfigurationList; 422 | buildConfigurations = ( 423 | 56939B531D84BEDA003D8A05 /* Debug */, 424 | 56939B541D84BEDA003D8A05 /* Release */, 425 | ); 426 | defaultConfigurationIsVisible = 0; 427 | defaultConfigurationName = Release; 428 | }; 429 | /* End XCConfigurationList section */ 430 | }; 431 | rootObject = 56939B391D84BEDA003D8A05 /* Project object */; 432 | } 433 | --------------------------------------------------------------------------------