diff --git a/McBopomofo.xcodeproj/project.pbxproj b/McBopomofo.xcodeproj/project.pbxproj index 12c11cca..72c1d809 100644 --- a/McBopomofo.xcodeproj/project.pbxproj +++ b/McBopomofo.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 6A0D4ED315FC0D6400ABF4B3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4EC815FC0D6400ABF4B3 /* main.m */; }; 6A0D4ED415FC0D6400ABF4B3 /* OVInputSourceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4ECA15FC0D6400ABF4B3 /* OVInputSourceHelper.m */; }; 6A0D4ED515FC0D6400ABF4B3 /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4ECC15FC0D6400ABF4B3 /* PreferencesWindowController.m */; }; - 6A0D4ED615FC0D6400ABF4B3 /* UpdateNotificationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4ECE15FC0D6400ABF4B3 /* UpdateNotificationController.m */; }; 6A0D4EFE15FC0DA600ABF4B3 /* VTCandidateController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4EDA15FC0DA600ABF4B3 /* VTCandidateController.m */; }; 6A0D4EFF15FC0DA600ABF4B3 /* VTHorizontalCandidateController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4EDC15FC0DA600ABF4B3 /* VTHorizontalCandidateController.m */; }; 6A0D4F0015FC0DA600ABF4B3 /* VTHorizontalCandidateView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4EDE15FC0DA600ABF4B3 /* VTHorizontalCandidateView.m */; }; @@ -30,14 +29,11 @@ 6A187E2616004C5900466B2E /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6A187E2816004C5900466B2E /* MainMenu.xib */; }; 6A225A1F23679F2600F685C6 /* NotarizedArchives in Resources */ = {isa = PBXBuildFile; fileRef = 6A225A1E23679F2600F685C6 /* NotarizedArchives */; }; 6A225A232367A1D700F685C6 /* ArchiveUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A225A222367A1D700F685C6 /* ArchiveUtil.m */; }; + 6A2E40F6253A69DA00D1AE1D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E40F5253A69DA00D1AE1D /* Images.xcassets */; }; + 6A2E40F9253A6AA000D1AE1D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6A2E40F5253A69DA00D1AE1D /* Images.xcassets */; }; 6A38BC1515FC117A00A8A51F /* data.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6A38BBF615FC117A00A8A51F /* data.txt */; }; - 6A38BC1D15FC11C700A8A51F /* UpdateNotificationController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6A38BC1F15FC11C700A8A51F /* UpdateNotificationController.xib */; }; 6A38BC2815FC158A00A8A51F /* InputMethodKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A38BC2715FC158A00A8A51F /* InputMethodKit.framework */; }; 6A38BC2A15FC161000A8A51F /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A38BC2915FC161000A8A51F /* Carbon.framework */; }; - 6A719D0415FC5FD200C8B8E3 /* McBopomofo.iconset in Resources */ = {isa = PBXBuildFile; fileRef = 6A719D0315FC5FD200C8B8E3 /* McBopomofo.iconset */; }; - 6A719D0515FC5FD200C8B8E3 /* McBopomofo.iconset in Resources */ = {isa = PBXBuildFile; fileRef = 6A719D0315FC5FD200C8B8E3 /* McBopomofo.iconset */; }; - 6AA67FEB15FC5B0D00B5A308 /* BopomofoTextMenu.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 6AA67FE915FC5B0D00B5A308 /* BopomofoTextMenu.tiff */; }; - 6AA67FEC15FC5B0D00B5A308 /* BopomofoTextMenu@2x.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 6AA67FEA15FC5B0D00B5A308 /* BopomofoTextMenu@2x.tiff */; }; 6ACA41CD15FC1D7500935EF6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A0D4EA615FC0D2D00ABF4B3 /* Cocoa.framework */; }; 6ACA41F915FC1D9000935EF6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ACA41E915FC1D9000935EF6 /* AppDelegate.m */; }; 6ACA41FA15FC1D9000935EF6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6ACA41EA15FC1D9000935EF6 /* InfoPlist.strings */; }; @@ -49,6 +45,8 @@ 6AD7CBC815FE555000691B5B /* data-plain-bpmf.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6AD7CBC715FE555000691B5B /* data-plain-bpmf.txt */; }; 6AE210B215FC63CC003659FE /* PlainBopomofo.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 6AE210B015FC63CC003659FE /* PlainBopomofo.tiff */; }; 6AE210B315FC63CC003659FE /* PlainBopomofo@2x.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 6AE210B115FC63CC003659FE /* PlainBopomofo@2x.tiff */; }; + 6AFF97F2253B299E007F1C49 /* OVNonModalAlertWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6AFF97F0253B299E007F1C49 /* OVNonModalAlertWindowController.xib */; }; + 6AFF97F3253B299E007F1C49 /* OVNonModalAlertWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AFF97F1253B299E007F1C49 /* OVNonModalAlertWindowController.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -84,8 +82,6 @@ 6A0D4ECA15FC0D6400ABF4B3 /* OVInputSourceHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OVInputSourceHelper.m; sourceTree = ""; }; 6A0D4ECB15FC0D6400ABF4B3 /* PreferencesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesWindowController.h; sourceTree = ""; }; 6A0D4ECC15FC0D6400ABF4B3 /* PreferencesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindowController.m; sourceTree = ""; }; - 6A0D4ECD15FC0D6400ABF4B3 /* UpdateNotificationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateNotificationController.h; sourceTree = ""; }; - 6A0D4ECE15FC0D6400ABF4B3 /* UpdateNotificationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateNotificationController.m; sourceTree = ""; }; 6A0D4ED915FC0DA600ABF4B3 /* VTCandidateController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTCandidateController.h; sourceTree = ""; }; 6A0D4EDA15FC0DA600ABF4B3 /* VTCandidateController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VTCandidateController.m; sourceTree = ""; }; 6A0D4EDB15FC0DA600ABF4B3 /* VTHorizontalCandidateController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VTHorizontalCandidateController.h; sourceTree = ""; }; @@ -154,12 +150,12 @@ 6A0D4F5615FC0EF900ABF4B3 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hant"; path = "Source/zh-Hant.lproj/preferences.xib"; sourceTree = ""; }; 6A15B32421A51F2300B92CD3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 6A15B32521A51F2300B92CD3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 6A15B32621A51F2300B92CD3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/UpdateNotificationController.xib; sourceTree = ""; }; 6A15B32721A51F2300B92CD3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Source/Base.lproj/preferences.xib; sourceTree = ""; }; 6A187E2916004C7300466B2E /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hant"; path = "zh-Hant.lproj/MainMenu.xib"; sourceTree = ""; }; 6A225A1E23679F2600F685C6 /* NotarizedArchives */ = {isa = PBXFileReference; lastKnownFileType = folder; path = NotarizedArchives; sourceTree = ""; }; 6A225A212367A1D700F685C6 /* ArchiveUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveUtil.h; sourceTree = ""; }; 6A225A222367A1D700F685C6 /* ArchiveUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ArchiveUtil.m; sourceTree = ""; }; + 6A2E40F5253A69DA00D1AE1D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 6A38BBDE15FC117A00A8A51F /* 4_in_5.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 4_in_5.txt; sourceTree = ""; }; 6A38BBDF15FC117A00A8A51F /* 4_in_6.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 4_in_6.txt; sourceTree = ""; }; 6A38BBE015FC117A00A8A51F /* 5_in_6.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = 5_in_6.txt; sourceTree = ""; }; @@ -191,12 +187,8 @@ 6A38BBFB15FC117A00A8A51F /* phrase.occ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = phrase.occ; sourceTree = ""; }; 6A38BBFC15FC117A00A8A51F /* PhraseFreq.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PhraseFreq.txt; sourceTree = ""; }; 6A38BBFD15FC117A00A8A51F /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 6A38BC1E15FC11C700A8A51F /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hant"; path = "zh-Hant.lproj/UpdateNotificationController.xib"; sourceTree = ""; }; 6A38BC2715FC158A00A8A51F /* InputMethodKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = InputMethodKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/InputMethodKit.framework; sourceTree = DEVELOPER_DIR; }; 6A38BC2915FC161000A8A51F /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Carbon.framework; sourceTree = DEVELOPER_DIR; }; - 6A719D0315FC5FD200C8B8E3 /* McBopomofo.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; path = McBopomofo.iconset; sourceTree = ""; }; - 6AA67FE915FC5B0D00B5A308 /* BopomofoTextMenu.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = BopomofoTextMenu.tiff; sourceTree = ""; }; - 6AA67FEA15FC5B0D00B5A308 /* BopomofoTextMenu@2x.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "BopomofoTextMenu@2x.tiff"; sourceTree = ""; }; 6ACA41CB15FC1D7500935EF6 /* McBopomofoInstaller.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = McBopomofoInstaller.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6ACA41E815FC1D9000935EF6 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Source/Installer/AppDelegate.h; sourceTree = SOURCE_ROOT; }; 6ACA41E915FC1D9000935EF6 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Source/Installer/AppDelegate.m; sourceTree = SOURCE_ROOT; }; @@ -213,6 +205,9 @@ 6AD7CBC715FE555000691B5B /* data-plain-bpmf.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "data-plain-bpmf.txt"; sourceTree = ""; }; 6AE210B015FC63CC003659FE /* PlainBopomofo.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = PlainBopomofo.tiff; sourceTree = ""; }; 6AE210B115FC63CC003659FE /* PlainBopomofo@2x.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "PlainBopomofo@2x.tiff"; sourceTree = ""; }; + 6AFF97EF253B299E007F1C49 /* OVNonModalAlertWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OVNonModalAlertWindowController.h; sourceTree = ""; }; + 6AFF97F0253B299E007F1C49 /* OVNonModalAlertWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OVNonModalAlertWindowController.xib; sourceTree = ""; }; + 6AFF97F1253B299E007F1C49 /* OVNonModalAlertWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OVNonModalAlertWindowController.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -281,12 +276,12 @@ 6A0D4EC715FC0D6400ABF4B3 /* InputMethodController.mm */, 6A0D4EC815FC0D6400ABF4B3 /* main.m */, 6A0D4EF615FC0DA600ABF4B3 /* McBopomofo-Prefix.pch */, + 6AFF97EF253B299E007F1C49 /* OVNonModalAlertWindowController.h */, + 6AFF97F1253B299E007F1C49 /* OVNonModalAlertWindowController.m */, 6A0D4EC915FC0D6400ABF4B3 /* OVInputSourceHelper.h */, 6A0D4ECA15FC0D6400ABF4B3 /* OVInputSourceHelper.m */, 6A0D4ECB15FC0D6400ABF4B3 /* PreferencesWindowController.h */, 6A0D4ECC15FC0D6400ABF4B3 /* PreferencesWindowController.m */, - 6A0D4ECD15FC0D6400ABF4B3 /* UpdateNotificationController.h */, - 6A0D4ECE15FC0D6400ABF4B3 /* UpdateNotificationController.m */, ); path = Source; sourceTree = ""; @@ -313,11 +308,9 @@ 6A0D4EEE15FC0DA600ABF4B3 /* Images */ = { isa = PBXGroup; children = ( + 6A2E40F5253A69DA00D1AE1D /* Images.xcassets */, 6A0D4EEF15FC0DA600ABF4B3 /* Bopomofo.tiff */, 6A0D4EF015FC0DA600ABF4B3 /* Bopomofo@2x.tiff */, - 6AA67FE915FC5B0D00B5A308 /* BopomofoTextMenu.tiff */, - 6AA67FEA15FC5B0D00B5A308 /* BopomofoTextMenu@2x.tiff */, - 6A719D0315FC5FD200C8B8E3 /* McBopomofo.iconset */, 6AE210B015FC63CC003659FE /* PlainBopomofo.tiff */, 6AE210B115FC63CC003659FE /* PlainBopomofo@2x.tiff */, ); @@ -405,12 +398,12 @@ 6A0D4F4715FC0EB900ABF4B3 /* Resources */ = { isa = PBXGroup; children = ( + 6AFF97F0253B299E007F1C49 /* OVNonModalAlertWindowController.xib */, 6A0D4EEE15FC0DA600ABF4B3 /* Images */, 6A0D4EF515FC0DA600ABF4B3 /* McBopomofo-Info.plist */, 6A0D4F4815FC0EE100ABF4B3 /* InfoPlist.strings */, 6A0D4F4A15FC0EE100ABF4B3 /* Localizable.strings */, 6A187E2816004C5900466B2E /* MainMenu.xib */, - 6A38BC1F15FC11C700A8A51F /* UpdateNotificationController.xib */, 6A0D4F4E15FC0EE100ABF4B3 /* preferences.xib */, ); name = Resources; @@ -573,16 +566,14 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6A38BC1D15FC11C700A8A51F /* UpdateNotificationController.xib in Resources */, 6A0D4F0815FC0DA600ABF4B3 /* Bopomofo.tiff in Resources */, 6A0D4F0915FC0DA600ABF4B3 /* Bopomofo@2x.tiff in Resources */, 6A0D4F5315FC0EE100ABF4B3 /* preferences.xib in Resources */, 6A0D4F5715FC0EF900ABF4B3 /* InfoPlist.strings in Resources */, 6A0D4F5815FC0EF900ABF4B3 /* Localizable.strings in Resources */, + 6A2E40F6253A69DA00D1AE1D /* Images.xcassets in Resources */, 6A38BC1515FC117A00A8A51F /* data.txt in Resources */, - 6AA67FEB15FC5B0D00B5A308 /* BopomofoTextMenu.tiff in Resources */, - 6AA67FEC15FC5B0D00B5A308 /* BopomofoTextMenu@2x.tiff in Resources */, - 6A719D0415FC5FD200C8B8E3 /* McBopomofo.iconset in Resources */, + 6AFF97F2253B299E007F1C49 /* OVNonModalAlertWindowController.xib in Resources */, 6AE210B215FC63CC003659FE /* PlainBopomofo.tiff in Resources */, 6AE210B315FC63CC003659FE /* PlainBopomofo@2x.tiff in Resources */, 6AD7CBC815FE555000691B5B /* data-plain-bpmf.txt in Resources */, @@ -595,12 +586,12 @@ buildActionMask = 2147483647; files = ( 6ACA420215FC1E5200935EF6 /* McBopomofo.app in Resources */, + 6A2E40F9253A6AA000D1AE1D /* Images.xcassets in Resources */, 6ACA41FA15FC1D9000935EF6 /* InfoPlist.strings in Resources */, 6A225A1F23679F2600F685C6 /* NotarizedArchives in Resources */, 6ACA41FB15FC1D9000935EF6 /* License.rtf in Resources */, 6ACA41FC15FC1D9000935EF6 /* Localizable.strings in Resources */, 6ACA41FD15FC1D9000935EF6 /* MainMenu.xib in Resources */, - 6A719D0515FC5FD200C8B8E3 /* McBopomofo.iconset in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -636,10 +627,10 @@ 6A0D4ED315FC0D6400ABF4B3 /* main.m in Sources */, 6A0D4ED415FC0D6400ABF4B3 /* OVInputSourceHelper.m in Sources */, 6A0D4ED515FC0D6400ABF4B3 /* PreferencesWindowController.m in Sources */, - 6A0D4ED615FC0D6400ABF4B3 /* UpdateNotificationController.m in Sources */, 6A0D4EFE15FC0DA600ABF4B3 /* VTCandidateController.m in Sources */, 6A0D4EFF15FC0DA600ABF4B3 /* VTHorizontalCandidateController.m in Sources */, 6A0D4F0015FC0DA600ABF4B3 /* VTHorizontalCandidateView.m in Sources */, + 6AFF97F3253B299E007F1C49 /* OVNonModalAlertWindowController.m in Sources */, 6A0D4F0115FC0DA600ABF4B3 /* VTVerticalCandidateController.m in Sources */, 6A0D4F0215FC0DA600ABF4B3 /* VTVerticalCandidateTableView.m in Sources */, 6A0D4F0315FC0DA600ABF4B3 /* VTVerticalKeyLabelStripView.m in Sources */, @@ -713,15 +704,6 @@ name = MainMenu.xib; sourceTree = ""; }; - 6A38BC1F15FC11C700A8A51F /* UpdateNotificationController.xib */ = { - isa = PBXVariantGroup; - children = ( - 6A38BC1E15FC11C700A8A51F /* zh-Hant */, - 6A15B32621A51F2300B92CD3 /* Base */, - ); - name = UpdateNotificationController.xib; - sourceTree = ""; - }; 6ACA41EA15FC1D9000935EF6 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( @@ -837,6 +819,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; @@ -887,6 +870,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; @@ -987,6 +971,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -1023,6 +1008,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/Source/AppDelegate.h b/Source/AppDelegate.h index eb216be0..56778c6d 100644 --- a/Source/AppDelegate.h +++ b/Source/AppDelegate.h @@ -35,16 +35,16 @@ #import @class PreferencesWindowController; -@class UpdateNotificationController; @interface AppDelegate : NSObject { @private NSWindow *_window; NSURLConnection *_updateCheckConnection; + BOOL _currentUpdateCheckIsForced; NSMutableData *_receivingData; + NSURL *_updateNextStepURL; PreferencesWindowController *_preferencesWindowController; - UpdateNotificationController *_updateNotificationController; } - (void)checkForUpdate; diff --git a/Source/AppDelegate.m b/Source/AppDelegate.m index e972e13e..409d9d84 100644 --- a/Source/AppDelegate.m +++ b/Source/AppDelegate.m @@ -33,18 +33,19 @@ // #import "AppDelegate.h" -#import "UpdateNotificationController.h" +#import "OVNonModalAlertWindowController.h" #import "PreferencesWindowController.h" extern void LTLoadLanguageModel(void); +static NSString *kCheckUpdateAutomatically = @"CheckUpdateAutomatically"; static NSString *kNextUpdateCheckDateKey = @"NextUpdateCheckDate"; static NSString *kUpdateInfoEndpointKey = @"UpdateInfoEndpoint"; static NSString *kUpdateInfoSiteKey = @"UpdateInfoSite"; static const NSTimeInterval kNextCheckInterval = 86400.0; static const NSTimeInterval kTimeoutInterval = 60.0; -@interface AppDelegate () +@interface AppDelegate () @end @implementation AppDelegate @@ -54,7 +55,6 @@ static const NSTimeInterval kTimeoutInterval = 60.0; { [_preferencesWindowController release]; [_updateCheckConnection release]; - [_updateNotificationController release]; [super dealloc]; } @@ -62,6 +62,11 @@ static const NSTimeInterval kTimeoutInterval = 60.0; { LTLoadLanguageModel(); + if (![[NSUserDefaults standardUserDefaults] objectForKey:kCheckUpdateAutomatically]) { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kCheckUpdateAutomatically]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + [self checkForUpdate]; } @@ -77,8 +82,14 @@ static const NSTimeInterval kTimeoutInterval = 60.0; return; } + _currentUpdateCheckIsForced = forced; + // time for update? if (!forced) { + if (![[NSUserDefaults standardUserDefaults] boolForKey:kCheckUpdateAutomatically]) { + return; + } + NSDate *now = [NSDate date]; NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:kNextUpdateCheckDateKey]; if (![date isKindOfClass:[NSDate class]]) { @@ -134,10 +145,22 @@ static const NSTimeInterval kTimeoutInterval = 60.0; - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { + BOOL isForcedCheck = _currentUpdateCheckIsForced; + [_receivingData release]; _receivingData = nil; [_updateCheckConnection release]; _updateCheckConnection = nil; + _currentUpdateCheckIsForced = NO; + + if (isForcedCheck) { + [[OVNonModalAlertWindowController sharedInstance] showWithTitle:NSLocalizedString(@"Update Check Failed", nil) content:[NSString stringWithFormat:NSLocalizedString(@"There may be no internet connection or the server failed to respond.\n\nError message: %@", nil), [error localizedDescription]] confirmButtonTitle:NSLocalizedString(@"Dismiss", nil) cancelButtonTitle:nil cancelAsDefault:NO delegate:nil]; + } +} + +- (void)showNoUpdateAvailableAlert +{ + [[OVNonModalAlertWindowController sharedInstance] showWithTitle:NSLocalizedString(@"Check for Update Completed", nil) content:NSLocalizedString(@"You are already using the latest version of McBopomofo.", nil) confirmButtonTitle:NSLocalizedString(@"OK", nil) cancelButtonTitle:nil cancelAsDefault:NO delegate:nil]; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection @@ -147,12 +170,18 @@ static const NSTimeInterval kTimeoutInterval = 60.0; NSLog(@"plist %@",plist); #endif + BOOL isForcedCheck = _currentUpdateCheckIsForced; + [_receivingData release]; _receivingData = nil; [_updateCheckConnection release]; _updateCheckConnection = nil; + _currentUpdateCheckIsForced = NO; if (!plist) { + if (isForcedCheck) { + [self showNoUpdateAvailableAlert]; + } return; } @@ -161,6 +190,9 @@ static const NSTimeInterval kTimeoutInterval = 60.0; NSLog(@"the remoteversion is %@",remoteVersion); #endif if (!remoteVersion) { + if (isForcedCheck) { + [self showNoUpdateAvailableAlert]; + } return; } @@ -172,42 +204,78 @@ static const NSTimeInterval kTimeoutInterval = 60.0; NSComparisonResult result = [currentVersion compare:remoteVersion options:NSNumericSearch]; if (result != NSOrderedAscending) { + if (isForcedCheck) { + [self showNoUpdateAvailableAlert]; + } return; } NSString *siteInfoURLString = [plist objectForKey:kUpdateInfoSiteKey]; if (!siteInfoURLString) { + if (isForcedCheck) { + [self showNoUpdateAvailableAlert]; + } return; } NSURL *siteInfoURL = [NSURL URLWithString:siteInfoURLString]; if (!siteInfoURL) { + if (isForcedCheck) { + [self showNoUpdateAvailableAlert]; + } return; } + [_updateNextStepURL release]; + _updateNextStepURL = nil; + _updateNextStepURL = [siteInfoURL retain]; + NSDictionary *versionDescriptions = [plist objectForKey:@"Description"]; + NSString *versionDescription = @""; + if ([versionDescriptions isKindOfClass:[NSDictionary class]]) { + NSString *locale = @"en"; + NSArray *supportedLocales = [NSArray arrayWithObjects:@"en", @"zh-Hant", @"zh-Hans", nil]; + NSArray *preferredTags = [NSBundle preferredLocalizationsFromArray:supportedLocales]; + if ([preferredTags count]) { + locale = [preferredTags objectAtIndex:0]; + } + versionDescription = [versionDescriptions objectForKey:locale]; + if (!versionDescription) { + versionDescription = [versionDescriptions objectForKey:@"en"]; + } - if (_updateNotificationController) { - [_updateNotificationController release]; - _updateNotificationController = nil; + if (!versionDescription) { + versionDescription = @""; + } + else { + versionDescription = [@"\n\n" stringByAppendingString:versionDescription]; + } } - _updateNotificationController = [[UpdateNotificationController alloc] initWithWindowNibName:@"UpdateNotificationController"]; + NSString *content = [NSString stringWithFormat:NSLocalizedString(@"You're currently using McBopomofo %@ (%@), a new version %@ (%@) is now available. Do you want to visit McBopomofo's website to download the version?%@", nil), [infoDict objectForKey:@"CFBundleShortVersionString"], currentVersion, [plist objectForKey:@"CFBundleShortVersionString"], remoteVersion, versionDescription]; - _updateNotificationController.siteURL = siteInfoURL; - _updateNotificationController.infoText = [NSString stringWithFormat:NSLocalizedString(@"You are running version %@ (%@), and the new version %@ (%@) is now available.\n\nVisit the website to download it?", @""), - [infoDict objectForKey:@"CFBundleShortVersionString"], - [infoDict objectForKey:(id)kCFBundleVersionKey], - [plist objectForKey:@"CFBundleShortVersionString"], - [plist objectForKey:(id)kCFBundleVersionKey], - nil]; - - [_updateNotificationController showWindow:self]; - [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; + [[OVNonModalAlertWindowController sharedInstance] showWithTitle:NSLocalizedString(@"New Version Available", nil) content:content confirmButtonTitle:NSLocalizedString(@"Visit Website", nil) cancelButtonTitle:NSLocalizedString(@"Not Now", nil) cancelAsDefault:NO delegate:self]; } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [_receivingData appendData:data]; } + +- (void)nonModalAlertWindowControllerDidConfirm:(OVNonModalAlertWindowController *)controller +{ + if (_updateNextStepURL) { + [[NSWorkspace sharedWorkspace] openURL:_updateNextStepURL]; + } + + [_updateNextStepURL release]; + _updateNextStepURL = nil; +} + +- (void)nonModalAlertWindowControllerDidCancel:(OVNonModalAlertWindowController *)controller +{ + [_updateNextStepURL release]; + _updateNextStepURL = nil; +} + @end diff --git a/Source/Base.lproj/UpdateNotificationController.xib b/Source/Base.lproj/UpdateNotificationController.xib deleted file mode 100644 index dcf25950..00000000 --- a/Source/Base.lproj/UpdateNotificationController.xib +++ /dev/null @@ -1,452 +0,0 @@ - - - - 1070 - 11A2063 - 1910 - 1138.1 - 566.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 1910 - - - YES - NSTextField - NSView - NSWindowTemplate - NSTextFieldCell - NSButtonCell - NSButton - NSCustomObject - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - UpdateNotificationController - - - FirstResponder - - - NSApplication - - - 3 - 2 - {{503, 500}, {433, 153}} - 544735232 - New Version Available - NSWindow - - - - - 256 - - YES - - - 289 - {{283, 12}, {136, 32}} - - - - YES - - 67239424 - 134217728 - Visit - - LucidaGrande - 13 - 1044 - - - -2038284033 - 129 - - DQ - 200 - 25 - - - - - 289 - {{147, 12}, {136, 32}} - - - - YES - - 67239424 - 134217728 - Later - - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{17, 48}, {399, 85}} - - - - YES - - 67239424 - 272629760 - Version Info Text - - LucidaGrande - 13 - 16 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - {433, 153} - - - - - {{0, 0}, {1366, 746}} - {10000000000000, 10000000000000} - YES - - - - - YES - - - laterAction: - - - - 7 - - - - visitButton - - - - 9 - - - - window - - - - 10 - - - - visitAction: - - - - 12 - - - - laterButton - - - - 17 - - - - infoTextField - - - - 18 - - - - delegate - - - - 11 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - YES - - - - - - 2 - - - YES - - - - - - - - 3 - - - YES - - - - - - 4 - - - - - 5 - - - YES - - - - - - 6 - - - - - 15 - - - YES - - - - - - 16 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 1.IBNSWindowAutoPositionCentersHorizontal - 1.IBNSWindowAutoPositionCentersVertical - 1.IBPluginDependency - 1.IBWindowTemplateEditedContentRect - 1.NSWindowTemplate.visibleAtLaunch - 15.IBPluginDependency - 16.IBPluginDependency - 2.IBPluginDependency - 3.IBPluginDependency - 4.IBPluginDependency - 5.IBPluginDependency - 6.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{357, 418}, {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 - - - - - 18 - - - - YES - - UpdateNotificationController - NSWindowController - - YES - - YES - laterAction: - visitAction: - - - YES - id - id - - - - YES - - YES - laterAction: - visitAction: - - - YES - - laterAction: - id - - - visitAction: - id - - - - - YES - - YES - infoTextField - laterButton - visitButton - - - YES - NSTextField - NSButton - NSButton - - - - YES - - YES - infoTextField - laterButton - visitButton - - - YES - - infoTextField - NSTextField - - - laterButton - NSButton - - - visitButton - NSButton - - - - - IBProjectSource - ./Classes/UpdateNotificationController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - diff --git a/Source/Base.lproj/preferences.xib b/Source/Base.lproj/preferences.xib index ff3d8a3a..26fb3441 100644 --- a/Source/Base.lproj/preferences.xib +++ b/Source/Base.lproj/preferences.xib @@ -1,8 +1,9 @@ - - + + - - + + + @@ -13,30 +14,30 @@ - - + + - - + + - + - - + + - + - + - + - + @@ -44,8 +45,8 @@ - - + + @@ -53,20 +54,20 @@ - - + + - + - - + + @@ -74,8 +75,8 @@ - - + + @@ -83,8 +84,8 @@ - - + + @@ -92,8 +93,8 @@ - - + + @@ -101,8 +102,8 @@ - - + + @@ -127,8 +128,8 @@ - - + + @@ -153,12 +154,12 @@ - - + + - + @@ -176,8 +177,8 @@ - + + diff --git a/Source/IconMaker/AppIconRendererView.h b/Source/IconMaker/AppIconRendererView.h deleted file mode 100644 index de729be5..00000000 --- a/Source/IconMaker/AppIconRendererView.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// AppIconRendererView.h -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import -#import - -@interface AppIconRendererView : NSView { -// CGImageRef image; - NSImage *image; -} - -@end diff --git a/Source/IconMaker/AppIconRendererView.m b/Source/IconMaker/AppIconRendererView.m deleted file mode 100644 index 5c07e9ca..00000000 --- a/Source/IconMaker/AppIconRendererView.m +++ /dev/null @@ -1,229 +0,0 @@ -// -// AppIconRendererView.m -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import "AppIconRendererView.h" - - -@implementation AppIconRendererView - -- (id)initWithFrame:(NSRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - // Initialization code here. - -// CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); -// CGContextRef context = CGBitmapContextCreate(NULL, frame.size.width, frame.size.height, 8, frame.size.width, colorSpace, 0); -// CGColorSpaceRelease(colorSpace); - -// imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:frame.size.width pixelsHigh:frame.size.height bitsPerSample:8 samplesPerPixel:1 hasAlpha:NO isPlanar:NO colorSpaceName:NSDeviceWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; - - NSRect bounds = [self bounds]; - - image = [[NSImage alloc] initWithSize:frame.size]; - [image lockFocus]; - - [[NSColor blackColor] setFill]; - [NSBezierPath fillRect:bounds]; - - - CIContext *imageContext = [[NSGraphicsContext currentContext] CIContext]; - - CIFilter *filter = [CIFilter filterWithName:@"CIRandomGenerator"]; - [filter setDefaults]; - -// CIContext *imageContext = [CIContext contextWithCGContext:context options:nil]; - - CIImage *output = [filter valueForKey:@"outputImage"]; - - CIFilter *mono = [CIFilter filterWithName:@"CIColorMonochrome"]; - [mono setDefaults]; - [mono setValue:output forKey:@"inputImage"]; - - CIColor *color = [[[CIColor alloc] initWithColor:[NSColor blackColor]] autorelease]; - - [mono setValue:color forKey:@"inputColor"]; - [mono setValue:[NSNumber numberWithDouble:1.0] forKey:@"inputIntensity"]; - output = [mono valueForKey:@"outputImage"]; - - CIFilter *blur = [CIFilter filterWithName:@"CIMotionBlur"]; - [blur setDefaults]; - [blur setValue:output forKey:@"inputImage"]; - [blur setValue:[NSNumber numberWithDouble:25.0] forKey:@"inputRadius"]; - [blur setValue:[NSNumber numberWithDouble:0.0] forKey:@"inputAngle"]; - output = [blur valueForKey:@"outputImage"]; - - - [imageContext drawImage:output inRect:[self bounds] fromRect:[self bounds]]; - - - NSColor *transWhite = [NSColor colorWithDeviceWhite:0.9 alpha:0.2]; - NSColor *transBlack = [NSColor colorWithDeviceWhite:0.5 alpha:0.3]; - - NSGradient *gradient = // [[[NSGradient alloc] initWithStartingColor:transBlack endingColor:transWhite] autorelease]; - [[[NSGradient alloc] initWithColorsAndLocations: - transBlack, 0.0, -// [NSColor darkGrayColor], 0.1, - transWhite, 0.5, -// [NSColor darkGrayColor], 0.9, - transBlack, 1.0, - nil] autorelease]; -// bounds.size.width /= 2; - [gradient drawInRect:bounds angle:0.0]; - -// bounds.origin.x += bounds.size.width; -// [gradient drawInRect:bounds angle:180.0]; - -// CGBitmapContextCreateImage(context); - -// CGColorSpaceRef colorColorSpace = CGColorSpaceCreateDeviceRGB(); -// CGImageRef tmpImage = CGBitmapContextCreateImage(context); -// image = CGImageCreateCopyWithColorSpace(tmpImage, colorColorSpace); -// CGImageRelease(tmpImage); -// CGColorSpaceRelease(colorColorSpace); - - - -// CGContextRelease(context); - - [image unlockFocus]; - -// NSLog(@"%@", [image representations]); - -// [image addRepresentation:imageRep]; -// NSLog(@"%@", [image representations]); - -// for (NSBitmapImageRep *rep in [image representations]) { -// [rep setColorSpaceName:NSDeviceWhiteColorSpace]; -// } - } - - return self; -} - -- (void)dealloc -{ -// CGImageRelease(image); - [image release]; - [super dealloc]; -} - -- (void)drawRect:(NSRect)dirtyRect -{ - NSRect boundRect = [self bounds]; - CGFloat radius = 1.0; - - if (boundRect.size.width > 16.0 && boundRect.size.width <= 32.0) { - boundRect.origin.x += 1.0; - boundRect.origin.y += 1.0; - boundRect.size.width -= 2.0; - boundRect.size.height -= 2.0; - radius = 2.0; - } - else if (boundRect.size.width > 32.0) { - boundRect.origin.x += 5.0; - boundRect.origin.y += 5.0; - boundRect.size.width -= 10.0; - boundRect.size.height -= 10.0; - radius = 7.0; - } - - NSShadow *imageShadow = [[[NSShadow alloc] init] autorelease]; - [imageShadow setShadowOffset:NSMakeSize(1.0, -1.0)]; - [imageShadow setShadowColor:[NSColor darkGrayColor]]; - [imageShadow setShadowBlurRadius:radius / 2]; - - - NSBezierPath *clipPath = [NSBezierPath bezierPathWithRoundedRect:boundRect xRadius:radius yRadius:radius]; - [[NSGraphicsContext currentContext] saveGraphicsState]; - [imageShadow set]; - [[NSColor whiteColor] setFill]; - [clipPath fill]; - [[NSGraphicsContext currentContext] restoreGraphicsState]; - - [clipPath setClip]; - - [image drawInRect:boundRect fromRect:boundRect operation:NSCompositeCopy fraction:1.0]; - - NSString *text = @"ㄅ"; - - if ([self bounds].size.width >= 32.0) { - text = @"ㄅㄆ\nㄇㄈ"; - } - - NSFont *font = [NSFont fontWithName:@"LiSong Pro" size:boundRect.size.width * 0.40]; - - NSShadow *shadow = [[[NSShadow alloc] init] autorelease]; - [shadow setShadowColor:[NSColor blackColor]]; - [shadow setShadowOffset:NSMakeSize(1.0, 1.0)]; - // [shadow setShadowBlurRadius:2.0]; - // [NSFont boldSystemFontOfSize:48.0]; - - - NSColor *textColor = [NSColor whiteColor]; - - NSMutableDictionary *attr = [NSMutableDictionary dictionaryWithObjectsAndKeys: - font, NSFontAttributeName, - textColor, NSForegroundColorAttributeName, - shadow, NSShadowAttributeName, - nil]; - - NSAttributedString *attrStr = [[[NSAttributedString alloc] initWithString:text attributes:attr] autorelease]; - - NSRect textRect = [attrStr boundingRectWithSize:boundRect.size options:NSStringDrawingUsesLineFragmentOrigin]; - - textRect.origin.x = boundRect.origin.x + (boundRect.size.width - textRect.size.width) / 2.0; - textRect.origin.y = boundRect.origin.y + (boundRect.size.height - textRect.size.height) / 2.0; - - textRect.origin.y += boundRect.size.height * 0.025; - - [attrStr drawInRect:textRect]; - - -// NSBitmapImageRep *imageRep = [[[NSBitmapImageRep alloc] initWithCGImage:image] autorelease]; -// -// [imageRep colorizeByMappingGray:0.2 toColor:[NSColor greenColor] blackMapping:[NSColor darkGrayColor] whiteMapping:[NSColor redColor]]; - -// NSImage *img = [[NSImage alloc] initWithCGImage:image size:NSZeroSize]; -// NSLog(@"%@", [img representations]); -// -// [img drawInRect:[self bounds] fromRect:[self bounds] operation:NSCompositeCopy fraction:1.0]; -// [img release]; - - // [image drawRepresentation:imageRep inRect:[self bounds]]; - // [imageRep draw]; -// [imageRep drawInRect:[self bounds] fromRect:[self bounds] operation:NSCompositeCopy fraction:1.0 respectFlipped:YES hints:nil]; -} - -@end diff --git a/Source/IconMaker/BopomofoIconRenderView.h b/Source/IconMaker/BopomofoIconRenderView.h deleted file mode 100644 index bbdca90d..00000000 --- a/Source/IconMaker/BopomofoIconRenderView.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// BopomofoIconRenderView.h -// Lettuce -// -// Created by Lukhnos D. Liu on 9/3/12. -// -// - -#import - -@interface BopomofoIconRenderView : NSView -@property (assign, nonatomic) BOOL textMenuIcon; -@property (assign, nonatomic) BOOL plainBopomofoIcon; -@end diff --git a/Source/IconMaker/BopomofoIconRenderView.m b/Source/IconMaker/BopomofoIconRenderView.m deleted file mode 100644 index 21a39548..00000000 --- a/Source/IconMaker/BopomofoIconRenderView.m +++ /dev/null @@ -1,115 +0,0 @@ -// -// BopomofoIconRenderView.m -// Lettuce -// -// Created by Lukhnos D. Liu on 9/3/12. -// -// - -#import "BopomofoIconRenderView.h" - -@implementation BopomofoIconRenderView -- (void)drawRect:(NSRect)dirtyRect -{ - NSAffineTransform *transform = [NSAffineTransform transform]; - [transform scaleBy:[self bounds].size.width / 16.0]; - [transform concat]; - - NSRect boundsRect = NSMakeRect(0.0, 0.0, 16.0, 16.0); - - if ([self bounds].size.width > 16.0) { - boundsRect.origin.x += 0.5; - } - - boundsRect.size.width -= 1.0; - - NSBezierPath *backgroundPath = [NSBezierPath bezierPathWithRoundedRect:boundsRect xRadius:2.0 yRadius:2.0]; - if (self.textMenuIcon) { - [[NSColor colorWithDeviceWhite:0.95 alpha:1.0] setFill]; - [[NSColor colorWithDeviceWhite:0.6 alpha:1.0] setStroke]; - [backgroundPath fill]; - - NSRect innerBoundRect = boundsRect; - innerBoundRect.size.width -= 1.0; - innerBoundRect.size.height -= 1.0; - innerBoundRect.origin.x += 0.5; - innerBoundRect.origin.y += 0.5; - backgroundPath = [NSBezierPath bezierPathWithRoundedRect:innerBoundRect xRadius:2.0 yRadius:2.0]; - [backgroundPath stroke]; - - [NSGraphicsContext saveGraphicsState]; - NSBezierPath *coveringPath = [NSBezierPath bezierPath]; - [coveringPath appendBezierPathWithArcWithCenter:NSMakePoint(16.0, 1.0) radius:14.0 startAngle:0.0 endAngle:360.0]; - [coveringPath setClip]; - - [[NSColor colorWithDeviceWhite:0.3 alpha:1.0] setStroke]; - backgroundPath = [NSBezierPath bezierPathWithRoundedRect:innerBoundRect xRadius:2.0 yRadius:2.0]; - [backgroundPath stroke]; - [NSGraphicsContext restoreGraphicsState]; - } - else { - if (self.plainBopomofoIcon) { - if ([self bounds].size.width > 16.0) { - [[NSColor colorWithDeviceWhite:0.3 alpha:1.0] setFill]; - } - else { - [[NSColor colorWithDeviceWhite:0.1 alpha:1.0] setFill]; - } - } - else { - [[NSColor colorWithDeviceWhite:0.3 alpha:1.0] setFill]; - } - [backgroundPath fill]; - } - - - CGFloat fontSize = ([self bounds].size.width > 16.0) ? 14.0 : 13.0; - NSString *text = @"ㄅ"; - NSString *fontName = @"BiauKai"; - - NSColor *textColor = nil; - - if (self.textMenuIcon) { - textColor = [NSColor blackColor]; - } - else if (self.plainBopomofoIcon) { - textColor = [NSColor colorWithDeviceWhite:0.95 alpha:1.0]; - } - else { - textColor = [NSColor colorWithDeviceWhite:1.0 alpha:1.0]; - } - - NSMutableDictionary *attrDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: - textColor, NSForegroundColorAttributeName, - [NSFont fontWithName:fontName size:fontSize], NSFontAttributeName, - nil]; - NSMutableAttributedString *attrString = [[[NSMutableAttributedString alloc] initWithString:text attributes:attrDict] autorelease]; - - NSRect textBounds = [attrString boundingRectWithSize:boundsRect.size options:NSStringDrawingUsesLineFragmentOrigin]; - - NSPoint textOrigin; - textOrigin.x = boundsRect.origin.x + (boundsRect.size.width - textBounds.size.width) / 2.0; - textOrigin.y = boundsRect.origin.y; - - [attrString drawAtPoint:textOrigin]; - - if (self.plainBopomofoIcon) { - NSBezierPath *coveringPath = [NSBezierPath bezierPath]; - [coveringPath appendBezierPathWithArcWithCenter:NSMakePoint(16.0, -3.0) radius:13.0 startAngle:0.0 endAngle:360.0]; - [coveringPath setClip]; - - if (!([self bounds].size.width > 16.0)) { - [[NSColor colorWithDeviceWhite:0.6 alpha:1.0] setFill]; - } - else { - [[NSColor colorWithDeviceWhite:0.65 alpha:1.0] setFill]; - } - - [backgroundPath fill]; - - [attrDict setObject:[NSColor colorWithDeviceWhite:1.0 alpha:1.0] forKey:NSForegroundColorAttributeName]; - [attrString setAttributes:attrDict range:NSMakeRange(0, [text length])]; - [attrString drawAtPoint:textOrigin]; - } -} -@end diff --git a/Source/IconMaker/IconMaker-Info.plist b/Source/IconMaker/IconMaker-Info.plist deleted file mode 100644 index 491e5a8a..00000000 --- a/Source/IconMaker/IconMaker-Info.plist +++ /dev/null @@ -1,34 +0,0 @@ - - - - - NSHumanReadableCopyright - Copyright © 2011-2012 Mengjuei Hsieh et al. - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - org.openvanilla.McBopomofo.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - MICM - CFBundleVersion - 1 - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/Source/IconMaker/IconMaker-Prefix.pch b/Source/IconMaker/IconMaker-Prefix.pch deleted file mode 100644 index f2f2ca34..00000000 --- a/Source/IconMaker/IconMaker-Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'IconMaker' target in the 'IconMaker' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/Source/IconMaker/IconMaker.xcodeproj/project.pbxproj b/Source/IconMaker/IconMaker.xcodeproj/project.pbxproj deleted file mode 100644 index ba9e28d8..00000000 --- a/Source/IconMaker/IconMaker.xcodeproj/project.pbxproj +++ /dev/null @@ -1,282 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 6AA67F9E15FC429D00B5A308 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AA67F9D15FC429D00B5A308 /* Cocoa.framework */; }; - 6AA67FD315FC430F00B5A308 /* AppIconRendererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FC015FC430F00B5A308 /* AppIconRendererView.m */; }; - 6AA67FD415FC430F00B5A308 /* BopomofoIconRenderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FC215FC430F00B5A308 /* BopomofoIconRenderView.m */; }; - 6AA67FD715FC430F00B5A308 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6AA67FC815FC430F00B5A308 /* MainMenu.xib */; }; - 6AA67FD915FC430F00B5A308 /* IconMakerAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FCD15FC430F00B5A308 /* IconMakerAppDelegate.m */; }; - 6AA67FDA15FC430F00B5A308 /* ImageZoomInView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FCF15FC430F00B5A308 /* ImageZoomInView.m */; }; - 6AA67FDB15FC430F00B5A308 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FD015FC430F00B5A308 /* main.m */; }; - 6AA67FDC15FC430F00B5A308 /* TISIconRendererView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AA67FD215FC430F00B5A308 /* TISIconRendererView.m */; }; - 6AA67FE215FC43BC00B5A308 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AA67FE115FC43BC00B5A308 /* Quartz.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 6AA67F9915FC429D00B5A308 /* IconMaker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IconMaker.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6AA67F9D15FC429D00B5A308 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 6AA67FBF15FC430F00B5A308 /* AppIconRendererView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppIconRendererView.h; sourceTree = ""; }; - 6AA67FC015FC430F00B5A308 /* AppIconRendererView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppIconRendererView.m; sourceTree = ""; }; - 6AA67FC115FC430F00B5A308 /* BopomofoIconRenderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BopomofoIconRenderView.h; sourceTree = ""; }; - 6AA67FC215FC430F00B5A308 /* BopomofoIconRenderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BopomofoIconRenderView.m; sourceTree = ""; }; - 6AA67FC915FC430F00B5A308 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = MainMenu.xib; sourceTree = ""; }; - 6AA67FCA15FC430F00B5A308 /* IconMaker-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "IconMaker-Info.plist"; sourceTree = ""; }; - 6AA67FCB15FC430F00B5A308 /* IconMaker-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IconMaker-Prefix.pch"; sourceTree = ""; }; - 6AA67FCC15FC430F00B5A308 /* IconMakerAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconMakerAppDelegate.h; sourceTree = ""; }; - 6AA67FCD15FC430F00B5A308 /* IconMakerAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IconMakerAppDelegate.m; sourceTree = ""; }; - 6AA67FCE15FC430F00B5A308 /* ImageZoomInView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageZoomInView.h; sourceTree = ""; }; - 6AA67FCF15FC430F00B5A308 /* ImageZoomInView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageZoomInView.m; sourceTree = ""; }; - 6AA67FD015FC430F00B5A308 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6AA67FD115FC430F00B5A308 /* TISIconRendererView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TISIconRendererView.h; sourceTree = ""; }; - 6AA67FD215FC430F00B5A308 /* TISIconRendererView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TISIconRendererView.m; sourceTree = ""; }; - 6AA67FE115FC43BC00B5A308 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 6AA67F9615FC429D00B5A308 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6AA67FE215FC43BC00B5A308 /* Quartz.framework in Frameworks */, - 6AA67F9E15FC429D00B5A308 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 6AA67F8E15FC429D00B5A308 = { - isa = PBXGroup; - children = ( - 6AA67FBF15FC430F00B5A308 /* AppIconRendererView.h */, - 6AA67FC015FC430F00B5A308 /* AppIconRendererView.m */, - 6AA67FC115FC430F00B5A308 /* BopomofoIconRenderView.h */, - 6AA67FC215FC430F00B5A308 /* BopomofoIconRenderView.m */, - 6AA67FCC15FC430F00B5A308 /* IconMakerAppDelegate.h */, - 6AA67FCD15FC430F00B5A308 /* IconMakerAppDelegate.m */, - 6AA67FCE15FC430F00B5A308 /* ImageZoomInView.h */, - 6AA67FCF15FC430F00B5A308 /* ImageZoomInView.m */, - 6AA67FD015FC430F00B5A308 /* main.m */, - 6AA67FD115FC430F00B5A308 /* TISIconRendererView.h */, - 6AA67FD215FC430F00B5A308 /* TISIconRendererView.m */, - 6AE210AF15FC6388003659FE /* Resources */, - 6AA67F9C15FC429D00B5A308 /* Frameworks */, - 6AA67F9A15FC429D00B5A308 /* Products */, - ); - sourceTree = ""; - }; - 6AA67F9A15FC429D00B5A308 /* Products */ = { - isa = PBXGroup; - children = ( - 6AA67F9915FC429D00B5A308 /* IconMaker.app */, - ); - name = Products; - sourceTree = ""; - }; - 6AA67F9C15FC429D00B5A308 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 6AA67F9D15FC429D00B5A308 /* Cocoa.framework */, - 6AA67FE115FC43BC00B5A308 /* Quartz.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 6AE210AF15FC6388003659FE /* Resources */ = { - isa = PBXGroup; - children = ( - 6AA67FCA15FC430F00B5A308 /* IconMaker-Info.plist */, - 6AA67FCB15FC430F00B5A308 /* IconMaker-Prefix.pch */, - 6AA67FC815FC430F00B5A308 /* MainMenu.xib */, - ); - name = Resources; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 6AA67F9815FC429D00B5A308 /* IconMaker */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6AA67FB715FC429D00B5A308 /* Build configuration list for PBXNativeTarget "IconMaker" */; - buildPhases = ( - 6AA67F9515FC429D00B5A308 /* Sources */, - 6AA67F9615FC429D00B5A308 /* Frameworks */, - 6AA67F9715FC429D00B5A308 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = IconMaker; - productName = IconMaker; - productReference = 6AA67F9915FC429D00B5A308 /* IconMaker.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 6AA67F9015FC429D00B5A308 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0440; - ORGANIZATIONNAME = OpenVanilla; - }; - buildConfigurationList = 6AA67F9315FC429D00B5A308 /* Build configuration list for PBXProject "IconMaker" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 6AA67F8E15FC429D00B5A308; - productRefGroup = 6AA67F9A15FC429D00B5A308 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 6AA67F9815FC429D00B5A308 /* IconMaker */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 6AA67F9715FC429D00B5A308 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6AA67FD715FC430F00B5A308 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 6AA67F9515FC429D00B5A308 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6AA67FD315FC430F00B5A308 /* AppIconRendererView.m in Sources */, - 6AA67FD415FC430F00B5A308 /* BopomofoIconRenderView.m in Sources */, - 6AA67FD915FC430F00B5A308 /* IconMakerAppDelegate.m in Sources */, - 6AA67FDA15FC430F00B5A308 /* ImageZoomInView.m in Sources */, - 6AA67FDB15FC430F00B5A308 /* main.m in Sources */, - 6AA67FDC15FC430F00B5A308 /* TISIconRendererView.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 6AA67FC815FC430F00B5A308 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 6AA67FC915FC430F00B5A308 /* en */, - ); - name = MainMenu.xib; - path = en.lproj; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 6AA67FB515FC429D00B5A308 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - 6AA67FB615FC429D00B5A308 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.7; - SDKROOT = macosx; - }; - name = Release; - }; - 6AA67FB815FC429D00B5A308 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "IconMaker-Prefix.pch"; - INFOPLIST_FILE = "IconMaker-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 6AA67FB915FC429D00B5A308 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "IconMaker-Prefix.pch"; - INFOPLIST_FILE = "IconMaker-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 6AA67F9315FC429D00B5A308 /* Build configuration list for PBXProject "IconMaker" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6AA67FB515FC429D00B5A308 /* Debug */, - 6AA67FB615FC429D00B5A308 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6AA67FB715FC429D00B5A308 /* Build configuration list for PBXNativeTarget "IconMaker" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6AA67FB815FC429D00B5A308 /* Debug */, - 6AA67FB915FC429D00B5A308 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 6AA67F9015FC429D00B5A308 /* Project object */; -} diff --git a/Source/IconMaker/IconMakerAppDelegate.h b/Source/IconMaker/IconMakerAppDelegate.h deleted file mode 100644 index 59eed283..00000000 --- a/Source/IconMaker/IconMakerAppDelegate.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// IconMakerAppDelegate.h -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import -#import "TISIconRendererView.h" -#import "BopomofoIconRenderView.h" - -@interface IconMakerAppDelegate : NSObject -@property (assign) IBOutlet NSWindow *window; -@property (assign) IBOutlet TISIconRendererView *selectedTISIconRendererView; -@property (assign) IBOutlet TISIconRendererView *faviconRenderView; -@property (assign) IBOutlet BopomofoIconRenderView *bopomofoIconRenderView; -@property (assign) IBOutlet BopomofoIconRenderView *bopomofoIconRenderView2x; -@end diff --git a/Source/IconMaker/IconMakerAppDelegate.m b/Source/IconMaker/IconMakerAppDelegate.m deleted file mode 100644 index 12daed47..00000000 --- a/Source/IconMaker/IconMakerAppDelegate.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// IconMakerAppDelegate.m -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import "IconMakerAppDelegate.h" - -@implementation IconMakerAppDelegate - -- (void)makeIconForObject:(id)object size:(NSSize)size filename:(NSString *)name -{ - NSRect rect; - rect.origin = NSZeroPoint; - rect.size = size; - - NSView *view = nil; - if ([object isKindOfClass:[NSView class]]) { - view = object; - [view setFrame:NSMakeRect(0.0, 0.0, size.width, size.height)]; - } - else if ([object isKindOfClass:[NSString class]]) { - view = [[[NSClassFromString(object) alloc] initWithFrame:rect] autorelease]; - } - - NSImage *image = [[[NSImage alloc] initWithSize:size] autorelease]; - [image lockFocus]; - [view drawRect:rect]; - [image unlockFocus]; - NSData *data = [image TIFFRepresentation]; - [data writeToFile:name atomically:YES]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification -{ - // Insert code here to initialize your application - self.selectedTISIconRendererView.selected = YES; - [self.selectedTISIconRendererView setNeedsDisplay:YES]; - - self.faviconRenderView.favicon = YES; - self.faviconRenderView.selected = YES; - NSRect oldFrame = [self.faviconRenderView frame]; - [self makeIconForObject:self.faviconRenderView size:NSMakeSize(16, 16) filename:@"/tmp/BopomofoFavicon.tiff"]; - [self.faviconRenderView setFrame:oldFrame]; - [self.faviconRenderView setNeedsDisplay:YES]; - - self.bopomofoIconRenderView.textMenuIcon = NO; - self.bopomofoIconRenderView.plainBopomofoIcon = NO; - self.bopomofoIconRenderView2x.textMenuIcon = NO; - self.bopomofoIconRenderView2x.plainBopomofoIcon = NO; - [self.bopomofoIconRenderView setNeedsDisplay:YES]; - [self.bopomofoIconRenderView2x setNeedsDisplay:YES]; - - BopomofoIconRenderView *iconRenderView = [[[BopomofoIconRenderView alloc] init] autorelease]; - iconRenderView.textMenuIcon = NO; - iconRenderView.plainBopomofoIcon = NO; - [self makeIconForObject:iconRenderView size:NSMakeSize(16, 16) filename:@"/tmp/Bopomofo.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(32, 32) filename:@"/tmp/Bopomofo@2x.tiff"]; - - iconRenderView.textMenuIcon = NO; - iconRenderView.plainBopomofoIcon = YES; - [self makeIconForObject:iconRenderView size:NSMakeSize(16, 16) filename:@"/tmp/PlainBopomofo.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(32, 32) filename:@"/tmp/PlainBopomofo@2x.tiff"]; - - iconRenderView.plainBopomofoIcon = NO; - iconRenderView.textMenuIcon = YES; - [self makeIconForObject:iconRenderView size:NSMakeSize(16, 16) filename:@"/tmp/BopomofoTextMenu.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(32, 32) filename:@"/tmp/BopomofoTextMenu@2x.tiff"]; - - [self makeIconForObject:iconRenderView size:NSMakeSize(16, 16) filename:@"/tmp/icon_16x16.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(32, 32) filename:@"/tmp/icon_16x16@2x.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(32, 32) filename:@"/tmp/icon_32x32.tiff"]; - [self makeIconForObject:iconRenderView size:NSMakeSize(64, 64) filename:@"/tmp/icon_32x32@2x.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(128, 128) filename:@"/tmp/icon_128x128.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(256, 256) filename:@"/tmp/icon_128x128@2x.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(256, 256) filename:@"/tmp/icon_256x256.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(512, 512) filename:@"/tmp/icon_256x256@2x.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(512, 512) filename:@"/tmp/icon_512x512.tiff"]; - [self makeIconForObject:@"AppIconRendererView" size:NSMakeSize(1024, 1024) filename:@"/tmp/icon_512x512@2x.tiff"]; - - NSRunAlertPanel(@"Icons Generated", @"TIFF files are placed in /tmp", @"Dismiss", nil, nil); -} - -@end diff --git a/Source/IconMaker/ImageZoomInView.h b/Source/IconMaker/ImageZoomInView.h deleted file mode 100644 index 59065894..00000000 --- a/Source/IconMaker/ImageZoomInView.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// ImageZoomInView.h -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import - -@interface ImageZoomInView : NSView -{ - NSRect imageBoundRect; -} -@property (nonatomic, retain) NSImage *image; -@end diff --git a/Source/IconMaker/ImageZoomInView.m b/Source/IconMaker/ImageZoomInView.m deleted file mode 100644 index 0fcb66b9..00000000 --- a/Source/IconMaker/ImageZoomInView.m +++ /dev/null @@ -1,77 +0,0 @@ -// -// ImageZoomInView.m -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import "ImageZoomInView.h" -#import "TISIconRendererView.h" - -@implementation ImageZoomInView -@synthesize image; - -- (id)initWithFrame:(NSRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - // Initialization code here. - - image = [[NSImage alloc] initWithSize:NSMakeSize(16.0, 16.0)]; - [image lockFocus]; - imageBoundRect = NSMakeRect(0.0, 0.0, 16.0, 16.0); - -// [[NSColor clearColor] setFill]; -// [NSBezierPath fillRect:imageBoundRect]; - - TISIconRendererView *rendererView = [[TISIconRendererView alloc] initWithFrame:imageBoundRect]; - [rendererView drawRect:imageBoundRect]; - [image unlockFocus]; - } - - - return self; -} - -- (void)dealloc -{ - [image release]; - [super dealloc]; -} - -- (void)drawRect:(NSRect)dirtyRect -{ - [[NSColor blackColor] setStroke]; - [NSBezierPath strokeRect:[self bounds]]; - - [image drawInRect:[self bounds] fromRect:imageBoundRect operation:NSCompositeSourceOver fraction:1.0]; -} - -@end diff --git a/Source/IconMaker/TISIconRendererView.h b/Source/IconMaker/TISIconRendererView.h deleted file mode 100644 index 990f56fd..00000000 --- a/Source/IconMaker/TISIconRendererView.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// TISIconRendererView.h -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import - -@interface TISIconRendererView : NSView -@property (nonatomic, assign) BOOL favicon; -@property (nonatomic, assign) BOOL selected; -@end diff --git a/Source/IconMaker/TISIconRendererView.m b/Source/IconMaker/TISIconRendererView.m deleted file mode 100644 index 8f40122a..00000000 --- a/Source/IconMaker/TISIconRendererView.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// TISIconRendererView.m -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import "TISIconRendererView.h" - -@implementation TISIconRendererView -@synthesize selected; -@synthesize favicon; - -- (void)drawRect:(NSRect)dirtyRect -{ - NSRect boundsRect = [self bounds]; - - if (favicon) { - boundsRect.origin.x += 0.0; - boundsRect.origin.y += 1.0; - boundsRect.size.width -= 1.0; - boundsRect.size.height -= 2.0; - - NSBezierPath *roundRectPath = [NSBezierPath bezierPathWithRoundedRect:boundsRect xRadius:1 yRadius:2]; - [[NSColor grayColor] setFill]; - [roundRectPath fill]; - - boundsRect.origin.x += 0.0; - boundsRect.origin.y += 1.0; - boundsRect.size.width -= 1.0; - boundsRect.size.height -= 1.0; - - } - else { - boundsRect.origin.x += 0.0; - boundsRect.origin.y += 1.0; - boundsRect.size.width -= 1.0; - boundsRect.size.height -= 1.0; - } - - NSInteger fontSize = 16; - if (favicon) { - fontSize = 11; - } - - NSString *text = @"ㄅ"; - NSString *fontName = @"LiSong Pro"; - - NSColor *textColor = nil; - NSColor *shadowColor = nil; - if (!selected) { - textColor = [NSColor blackColor]; - shadowColor = [NSColor colorWithDeviceWhite:0.9 alpha:0.9]; - } - else { - shadowColor = [NSColor darkGrayColor]; - textColor = [NSColor colorWithDeviceWhite:1.0 alpha:1.0]; - } - - NSShadow *textShadow = [[NSShadow alloc] init]; - [textShadow setShadowColor:shadowColor]; - [textShadow setShadowOffset:NSMakeSize(-1, -1)]; - - NSMutableDictionary *attrDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: - textColor, NSForegroundColorAttributeName, - textShadow, NSShadowAttributeName, - [NSFont fontWithName:fontName size:fontSize], NSFontAttributeName, - nil]; - NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:text attributes:attrDict]; - - NSRect textBounds = [attrString boundingRectWithSize:boundsRect.size options:NSStringDrawingUsesLineFragmentOrigin]; - - NSPoint textOrigin; - textOrigin.x = boundsRect.origin.x + (boundsRect.size.width - textBounds.size.width) / 2.0; - - if (favicon) { - textOrigin.x += 1; - textOrigin.y = boundsRect.origin.y; - } - else { - textOrigin.y = boundsRect.origin.y - 2; - } - - attrString = [[NSAttributedString alloc] initWithString:text attributes:attrDict]; - [attrString drawAtPoint:textOrigin]; - -} - -@end diff --git a/Source/IconMaker/en.lproj/MainMenu.xib b/Source/IconMaker/en.lproj/MainMenu.xib deleted file mode 100644 index 49314f54..00000000 --- a/Source/IconMaker/en.lproj/MainMenu.xib +++ /dev/null @@ -1,3739 +0,0 @@ - - - - 1070 - 11E53 - 2549 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2549 - - - YES - NSCustomObject - NSCustomView - NSMenu - NSMenuItem - NSView - NSWindowTemplate - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - IconMaker - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - IconMaker - - YES - - - About IconMaker - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide IconMaker - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit IconMaker - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New - n - 1048576 - 2147483647 - - - - - - Open… - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - YES - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - Save As… - S - 1179648 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - Find… - 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 - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - YES - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 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 - - - - - - Writing Direction - - 2147483647 - - - submenuAction: - - Writing Direction - - YES - - - YES - Paragraph - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - Selection - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - IconMaker Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - 7 - 2 - {{335, 390}, {451, 296}} - 1954021376 - IconMaker - NSWindow - - - - - 256 - - YES - - - 268 - {{20, 260}, {16, 16}} - - - - TISIconRendererView - - - - 268 - {{20, 188}, {16, 16}} - - - - BopomofoIconRenderView - - - - 268 - {{44, 148}, {128, 128}} - - - - AppIconRendererView - - - - 268 - {{180, 20}, {256, 256}} - - - AppIconRendererView - - - - 268 - {{20, 236}, {16, 16}} - - - - TISIconRendererView - - - - 268 - {{20, 212}, {16, 16}} - - - - TISIconRendererView - - - - 268 - {{20, 108}, {32, 32}} - - - - BopomofoIconRenderView - - - {451, 296} - - - - - {{0, 0}, {1440, 878}} - {10000000000000, 10000000000000} - YES - - - IconMakerAppDelegate - - - NSFontManager - - - - - YES - - - terminate: - - - - 449 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 495 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - 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 - - - - saveDocument: - - - - 362 - - - - saveDocumentAs: - - - - 363 - - - - revertDocumentToSaved: - - - - 364 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 373 - - - - openDocument: - - - - 374 - - - - raiseBaseline: - - - - 426 - - - - lowerBaseline: - - - - 427 - - - - copyFont: - - - - 428 - - - - subscript: - - - - 429 - - - - superscript: - - - - 430 - - - - tightenKerning: - - - - 431 - - - - underline: - - - - 432 - - - - orderFrontColorPanel: - - - - 433 - - - - useAllLigatures: - - - - 434 - - - - loosenKerning: - - - - 435 - - - - pasteFont: - - - - 436 - - - - unscript: - - - - 437 - - - - useStandardKerning: - - - - 438 - - - - useStandardLigatures: - - - - 439 - - - - turnOffLigatures: - - - - 440 - - - - turnOffKerning: - - - - 441 - - - - toggleAutomaticSpellingCorrection: - - - - 456 - - - - orderFrontSubstitutionsPanel: - - - - 458 - - - - toggleAutomaticDashSubstitution: - - - - 461 - - - - toggleAutomaticTextReplacement: - - - - 463 - - - - uppercaseWord: - - - - 464 - - - - capitalizeWord: - - - - 467 - - - - lowercaseWord: - - - - 468 - - - - pasteAsPlainText: - - - - 486 - - - - performFindPanelAction: - - - - 487 - - - - performFindPanelAction: - - - - 488 - - - - performFindPanelAction: - - - - 489 - - - - showHelp: - - - - 493 - - - - alignCenter: - - - - 518 - - - - pasteRuler: - - - - 519 - - - - toggleRuler: - - - - 520 - - - - alignRight: - - - - 521 - - - - copyRuler: - - - - 522 - - - - alignJustified: - - - - 523 - - - - alignLeft: - - - - 524 - - - - makeBaseWritingDirectionNatural: - - - - 525 - - - - makeBaseWritingDirectionLeftToRight: - - - - 526 - - - - makeBaseWritingDirectionRightToLeft: - - - - 527 - - - - makeTextWritingDirectionNatural: - - - - 528 - - - - makeTextWritingDirectionLeftToRight: - - - - 529 - - - - makeTextWritingDirectionRightToLeft: - - - - 530 - - - - addFontTrait: - - - - 421 - - - - addFontTrait: - - - - 422 - - - - modifyFont: - - - - 423 - - - - orderFrontFontPanel: - - - - 424 - - - - modifyFont: - - - - 425 - - - - window - - - - 532 - - - - selectedTISIconRendererView - - - - 537 - - - - faviconRenderView - - - - 539 - - - - bopomofoIconRenderView - - - - 542 - - - - bopomofoIconRenderView2x - - - - 543 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - - - - - 75 - - - - - 80 - - - - - 78 - - - - - 72 - - - - - 82 - - - - - 124 - - - YES - - - - - - 77 - - - - - 73 - - - - - 79 - - - - - 112 - - - - - 74 - - - - - 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 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 129 - - - - - 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 - - - YES - - - - - - 372 - - - YES - - - - - - - - - - - - 375 - - - YES - - - - - - 376 - - - YES - - - - - - - 377 - - - YES - - - - - - 388 - - - YES - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - YES - - - - - - 398 - - - YES - - - - - - 399 - - - YES - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - YES - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - YES - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - YES - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 420 - - - - - 450 - - - YES - - - - - - 451 - - - YES - - - - - - - - 452 - - - - - 453 - - - - - 454 - - - - - 457 - - - - - 459 - - - - - 460 - - - - - 462 - - - - - 465 - - - - - 466 - - - - - 485 - - - - - 490 - - - YES - - - - - - 491 - - - YES - - - - - - 492 - - - - - 494 - - - - - 496 - - - YES - - - - - - 497 - - - YES - - - - - - - - - - - - - - - 498 - - - - - 499 - - - - - 500 - - - - - 501 - - - - - 502 - - - - - 503 - - - YES - - - - - - 504 - - - - - 505 - - - - - 506 - - - - - 507 - - - - - 508 - - - YES - - - - - - - - - - - - - - 509 - - - - - 510 - - - - - 511 - - - - - 512 - - - - - 513 - - - - - 514 - - - - - 515 - - - - - 516 - - - - - 517 - - - - - 533 - - - - - 534 - - - - - 535 - - - - - 536 - - - - - 538 - - - - - 540 - - - - - 541 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 112.IBPluginDependency - 124.IBPluginDependency - 125.IBPluginDependency - 126.IBPluginDependency - 129.IBPluginDependency - 130.IBPluginDependency - 131.IBPluginDependency - 134.IBPluginDependency - 136.IBPluginDependency - 143.IBPluginDependency - 144.IBPluginDependency - 145.IBPluginDependency - 149.IBPluginDependency - 150.IBPluginDependency - 19.IBPluginDependency - 195.IBPluginDependency - 196.IBPluginDependency - 197.IBPluginDependency - 198.IBPluginDependency - 199.IBPluginDependency - 200.IBPluginDependency - 201.IBPluginDependency - 202.IBPluginDependency - 203.IBPluginDependency - 204.IBPluginDependency - 205.IBPluginDependency - 206.IBPluginDependency - 207.IBPluginDependency - 208.IBPluginDependency - 209.IBPluginDependency - 210.IBPluginDependency - 211.IBPluginDependency - 212.IBPluginDependency - 213.IBPluginDependency - 214.IBPluginDependency - 215.IBPluginDependency - 216.IBPluginDependency - 217.IBPluginDependency - 218.IBPluginDependency - 219.IBPluginDependency - 220.IBPluginDependency - 221.IBPluginDependency - 23.IBPluginDependency - 236.IBPluginDependency - 239.IBPluginDependency - 24.IBPluginDependency - 29.IBPluginDependency - 295.IBPluginDependency - 296.IBPluginDependency - 297.IBPluginDependency - 298.IBPluginDependency - 346.IBPluginDependency - 348.IBPluginDependency - 349.IBPluginDependency - 350.IBPluginDependency - 351.IBPluginDependency - 354.IBPluginDependency - 371.IBPluginDependency - 371.IBWindowTemplateEditedContentRect - 371.NSWindowTemplate.visibleAtLaunch - 372.IBPluginDependency - 375.IBPluginDependency - 376.IBPluginDependency - 377.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 - 418.IBPluginDependency - 419.IBPluginDependency - 420.IBPluginDependency - 450.IBPluginDependency - 451.IBPluginDependency - 452.IBPluginDependency - 453.IBPluginDependency - 454.IBPluginDependency - 457.IBPluginDependency - 459.IBPluginDependency - 460.IBPluginDependency - 462.IBPluginDependency - 465.IBPluginDependency - 466.IBPluginDependency - 485.IBPluginDependency - 490.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 494.IBPluginDependency - 496.IBPluginDependency - 497.IBPluginDependency - 498.IBPluginDependency - 499.IBPluginDependency - 5.IBPluginDependency - 500.IBPluginDependency - 501.IBPluginDependency - 502.IBPluginDependency - 503.IBPluginDependency - 504.IBPluginDependency - 505.IBPluginDependency - 506.IBPluginDependency - 507.IBPluginDependency - 508.IBPluginDependency - 509.IBPluginDependency - 510.IBPluginDependency - 511.IBPluginDependency - 512.IBPluginDependency - 513.IBPluginDependency - 514.IBPluginDependency - 515.IBPluginDependency - 516.IBPluginDependency - 517.IBPluginDependency - 533.IBPluginDependency - 534.IBPluginDependency - 535.IBPluginDependency - 536.IBPluginDependency - 538.IBPluginDependency - 540.IBPluginDependency - 541.IBPluginDependency - 56.IBPluginDependency - 57.IBPluginDependency - 58.IBPluginDependency - 72.IBPluginDependency - 73.IBPluginDependency - 74.IBPluginDependency - 75.IBPluginDependency - 77.IBPluginDependency - 78.IBPluginDependency - 79.IBPluginDependency - 80.IBPluginDependency - 81.IBPluginDependency - 82.IBPluginDependency - 83.IBPluginDependency - 92.IBPluginDependency - - - YES - 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 - 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 - {{380, 496}, {480, 360}} - - 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 - 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 - 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 - - - - YES - - - - - - YES - - - - - 543 - - - - YES - - AppIconRendererView - NSView - - IBProjectSource - ./Classes/AppIconRendererView.h - - - - BopomofoIconRenderView - NSView - - IBProjectSource - ./Classes/BopomofoIconRenderView.h - - - - IconMakerAppDelegate - NSObject - - YES - - YES - bopomofoIconRenderView - bopomofoIconRenderView2x - faviconRenderView - selectedTISIconRendererView - window - - - YES - BopomofoIconRenderView - BopomofoIconRenderView - TISIconRendererView - TISIconRendererView - NSWindow - - - - YES - - YES - bopomofoIconRenderView - bopomofoIconRenderView2x - faviconRenderView - selectedTISIconRendererView - window - - - YES - - bopomofoIconRenderView - BopomofoIconRenderView - - - bopomofoIconRenderView2x - BopomofoIconRenderView - - - faviconRenderView - TISIconRendererView - - - selectedTISIconRendererView - TISIconRendererView - - - window - NSWindow - - - - - IBProjectSource - ./Classes/IconMakerAppDelegate.h - - - - NSDocument - - YES - - YES - printDocument: - revertDocumentToSaved: - runPageLayout: - saveDocument: - saveDocumentAs: - saveDocumentTo: - - - YES - id - id - id - id - id - id - - - - YES - - YES - printDocument: - revertDocumentToSaved: - runPageLayout: - saveDocument: - saveDocumentAs: - saveDocumentTo: - - - YES - - printDocument: - id - - - revertDocumentToSaved: - id - - - runPageLayout: - id - - - saveDocument: - id - - - saveDocumentAs: - id - - - saveDocumentTo: - id - - - - - IBProjectSource - ./Classes/NSDocument.h - - - - TISIconRendererView - NSView - - IBProjectSource - ./Classes/TISIconRendererView.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - - - YES - {11, 11} - {10, 3} - - - - diff --git a/Source/IconMaker/main.m b/Source/IconMaker/main.m deleted file mode 100644 index af9a0ec9..00000000 --- a/Source/IconMaker/main.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// main.m -// -// Copyright (c) 2011 The McBopomofo Project. -// -// Contributors: -// Mengjuei Hsieh (@mjhsieh) -// Weizhong Yang (@zonble) -// -// Based on the Syrup Project and the Formosana Library -// by Lukhnos Liu (@lukhnos). -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. -// - -#import - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **)argv); -} diff --git a/Source/Images/Bopomofo.tiff b/Source/Images/Bopomofo.tiff index 08c835c3..a1c29ed1 100644 Binary files a/Source/Images/Bopomofo.tiff and b/Source/Images/Bopomofo.tiff differ diff --git a/Source/Images/Bopomofo@2x.tiff b/Source/Images/Bopomofo@2x.tiff index 17900a1c..61adceeb 100644 Binary files a/Source/Images/Bopomofo@2x.tiff and b/Source/Images/Bopomofo@2x.tiff differ diff --git a/Source/Images/BopomofoTextMenu.tiff b/Source/Images/BopomofoTextMenu.tiff deleted file mode 100644 index 1b99e700..00000000 Binary files a/Source/Images/BopomofoTextMenu.tiff and /dev/null differ diff --git a/Source/Images/BopomofoTextMenu@2x.tiff b/Source/Images/BopomofoTextMenu@2x.tiff deleted file mode 100644 index ca6bf08f..00000000 Binary files a/Source/Images/BopomofoTextMenu@2x.tiff and /dev/null differ diff --git a/Source/Images/Images.xcassets/AlertIcon.imageset/128X128.png b/Source/Images/Images.xcassets/AlertIcon.imageset/128X128.png new file mode 100644 index 00000000..1a599df9 Binary files /dev/null and b/Source/Images/Images.xcassets/AlertIcon.imageset/128X128.png differ diff --git a/Source/Images/Images.xcassets/AlertIcon.imageset/192x192.png b/Source/Images/Images.xcassets/AlertIcon.imageset/192x192.png new file mode 100644 index 00000000..33fa764a Binary files /dev/null and b/Source/Images/Images.xcassets/AlertIcon.imageset/192x192.png differ diff --git a/Source/Images/Images.xcassets/AlertIcon.imageset/64X64.png b/Source/Images/Images.xcassets/AlertIcon.imageset/64X64.png new file mode 100644 index 00000000..2b3d950b Binary files /dev/null and b/Source/Images/Images.xcassets/AlertIcon.imageset/64X64.png differ diff --git a/Source/Images/Images.xcassets/AlertIcon.imageset/Contents.json b/Source/Images/Images.xcassets/AlertIcon.imageset/Contents.json new file mode 100644 index 00000000..78b259ac --- /dev/null +++ b/Source/Images/Images.xcassets/AlertIcon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "64X64.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "128X128.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "192x192.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/1024X1024.png b/Source/Images/Images.xcassets/AppIcon.appiconset/1024X1024.png new file mode 100644 index 00000000..cffcacb2 Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/1024X1024.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/128X128.png b/Source/Images/Images.xcassets/AppIcon.appiconset/128X128.png new file mode 100644 index 00000000..1a599df9 Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/128X128.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/16X16.png b/Source/Images/Images.xcassets/AppIcon.appiconset/16X16.png new file mode 100644 index 00000000..58e99c3b Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/16X16.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/256X256.png b/Source/Images/Images.xcassets/AppIcon.appiconset/256X256.png new file mode 100644 index 00000000..77503fcd Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/256X256.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/32X32.png b/Source/Images/Images.xcassets/AppIcon.appiconset/32X32.png new file mode 100644 index 00000000..157177af Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/32X32.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/512X512.png b/Source/Images/Images.xcassets/AppIcon.appiconset/512X512.png new file mode 100644 index 00000000..350731f8 Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/512X512.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/64X64.png b/Source/Images/Images.xcassets/AppIcon.appiconset/64X64.png new file mode 100644 index 00000000..2b3d950b Binary files /dev/null and b/Source/Images/Images.xcassets/AppIcon.appiconset/64X64.png differ diff --git a/Source/Images/Images.xcassets/AppIcon.appiconset/Contents.json b/Source/Images/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..96ec4381 --- /dev/null +++ b/Source/Images/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "16X16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "32X32.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "32X32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "64X64.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "128X128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "256X256.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "256X256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "512X512.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "512X512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "1024X1024.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Source/Images/Images.xcassets/Contents.json b/Source/Images/Images.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/Source/Images/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Source/Images/McBopomofo.iconset/icon_128x128.png b/Source/Images/McBopomofo.iconset/icon_128x128.png deleted file mode 100644 index 941a1f6c..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_128x128.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_128x128@2x.png b/Source/Images/McBopomofo.iconset/icon_128x128@2x.png deleted file mode 100644 index efab7686..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_128x128@2x.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_16x16.png b/Source/Images/McBopomofo.iconset/icon_16x16.png deleted file mode 100644 index 90f87a85..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_16x16.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_16x16@2x.png b/Source/Images/McBopomofo.iconset/icon_16x16@2x.png deleted file mode 100644 index 025d6d00..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_16x16@2x.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_256x256.png b/Source/Images/McBopomofo.iconset/icon_256x256.png deleted file mode 100644 index efab7686..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_256x256.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_256x256@2x.png b/Source/Images/McBopomofo.iconset/icon_256x256@2x.png deleted file mode 100644 index 4628eaf5..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_256x256@2x.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_32x32.png b/Source/Images/McBopomofo.iconset/icon_32x32.png deleted file mode 100644 index 025d6d00..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_32x32.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_32x32@2x.png b/Source/Images/McBopomofo.iconset/icon_32x32@2x.png deleted file mode 100644 index 68750bd8..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_32x32@2x.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_512x512.png b/Source/Images/McBopomofo.iconset/icon_512x512.png deleted file mode 100644 index 4628eaf5..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_512x512.png and /dev/null differ diff --git a/Source/Images/McBopomofo.iconset/icon_512x512@2x.png b/Source/Images/McBopomofo.iconset/icon_512x512@2x.png deleted file mode 100644 index f816c2e2..00000000 Binary files a/Source/Images/McBopomofo.iconset/icon_512x512@2x.png and /dev/null differ diff --git a/Source/Images/PlainBopomofo.tiff b/Source/Images/PlainBopomofo.tiff index 2af4496e..2aee9334 100644 Binary files a/Source/Images/PlainBopomofo.tiff and b/Source/Images/PlainBopomofo.tiff differ diff --git a/Source/Images/PlainBopomofo@2x.tiff b/Source/Images/PlainBopomofo@2x.tiff index 9c0a24a8..af559d63 100644 Binary files a/Source/Images/PlainBopomofo@2x.tiff and b/Source/Images/PlainBopomofo@2x.tiff differ diff --git a/Source/Images/favicon.ico b/Source/Images/favicon.ico deleted file mode 100644 index 9f1ea001..00000000 Binary files a/Source/Images/favicon.ico and /dev/null differ diff --git a/Source/Images/favicon.png b/Source/Images/favicon.png deleted file mode 100644 index 0eed42be..00000000 Binary files a/Source/Images/favicon.png and /dev/null differ diff --git a/Source/Images/favicon.tiff b/Source/Images/favicon.tiff deleted file mode 100644 index 9b51cb8d..00000000 Binary files a/Source/Images/favicon.tiff and /dev/null differ diff --git a/Source/InputMethodController.mm b/Source/InputMethodController.mm index aafe55c0..de92a3b5 100644 --- a/Source/InputMethodController.mm +++ b/Source/InputMethodController.mm @@ -240,10 +240,8 @@ public: } #endif //DEBUG - #if DEBUG NSMenuItem *updateCheckItem = [[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Check for Updates…", @"") action:@selector(checkForUpdate:) keyEquivalent:@""] autorelease]; [menu addItem:updateCheckItem]; - #endif NSMenuItem *aboutMenuItem = [[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"About McBopomofo…", @"") action:@selector(showAbout:) keyEquivalent:@""] autorelease]; [menu addItem:aboutMenuItem]; diff --git a/Source/Installer/Installer-Info.plist b/Source/Installer/Installer-Info.plist index 971464f2..73bb2bac 100644 --- a/Source/Installer/Installer-Info.plist +++ b/Source/Installer/Installer-Info.plist @@ -6,8 +6,6 @@ en CFBundleExecutable ${EXECUTABLE_NAME} - CFBundleIconFile - McBopomofo.icns CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -17,11 +15,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.9.11 + 1.0-beta3 CFBundleSignature MBIN CFBundleVersion - 812 + 844 LSApplicationCategoryType public.app-category.utilities LSHasLocalizedDisplayName diff --git a/Source/Installer/en.lproj/InfoPlist.strings b/Source/Installer/en.lproj/InfoPlist.strings index 6099b19e..0dfbb121 100644 --- a/Source/Installer/en.lproj/InfoPlist.strings +++ b/Source/Installer/en.lproj/InfoPlist.strings @@ -1,4 +1,4 @@ /* Localized versions of Info.plist keys */ CFBundleName = "Install McBopomofo"; -NSHumanReadableCopyright = "Copyright © 2011-2018 Mengjuei Hsieh et al.\nAll Rights Reserved."; +NSHumanReadableCopyright = "Copyright © 2011-2020 Mengjuei Hsieh et al.\nAll Rights Reserved."; diff --git a/Source/Installer/en.lproj/License.rtf b/Source/Installer/en.lproj/License.rtf index 5ced4905..c348375f 100644 --- a/Source/Installer/en.lproj/License.rtf +++ b/Source/Installer/en.lproj/License.rtf @@ -8,7 +8,7 @@ \f0\b\fs36 \cf0 McBopomofo License Agreement \f1\b0\fs24 \ \ -Copyright \'a9 2011-2018 Mengjuei Hsieh et al.\ +Copyright \'a9 2011-2020 Mengjuei Hsieh et al.\ \ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \'93Software\'94), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\ \ diff --git a/Source/Installer/zh-Hant.lproj/InfoPlist.strings b/Source/Installer/zh-Hant.lproj/InfoPlist.strings index 43dc105b..1c4bd174 100644 --- a/Source/Installer/zh-Hant.lproj/InfoPlist.strings +++ b/Source/Installer/zh-Hant.lproj/InfoPlist.strings @@ -1,5 +1,5 @@ /* Localized versions of Info.plist keys */ CFBundleName = "安裝小麥注音"; -NSHumanReadableCopyright = "Copyright © 2011-2018 Mengjuei Hsieh et al.\nAll Rights Reserved."; +NSHumanReadableCopyright = "Copyright © 2011-2020 Mengjuei Hsieh et al.\nAll Rights Reserved."; diff --git a/Source/Installer/zh-Hant.lproj/License.rtf b/Source/Installer/zh-Hant.lproj/License.rtf index 029a4f9d..3e20eec7 100644 --- a/Source/Installer/zh-Hant.lproj/License.rtf +++ b/Source/Installer/zh-Hant.lproj/License.rtf @@ -9,10 +9,10 @@ \f0\b\fs36 \cf0 McBopomofo License Agreement \f1\b0\fs24 \ \ -Copyright \'a9 2011-2018 Mengjuei Hsieh et al.\ +Copyright \'a9 2011-2020 Mengjuei Hsieh et al.\ \f2 \'b5\'db\'a7\'40\'c5\'76\'a7\'51\'a9\'d2\'a6\'b3 -\f1 \'a9 2011-2018 Mengjuei Hsieh +\f1 \'a9 2011-2020 Mengjuei Hsieh \f2 \'b5\'a5\'a4\'48 \f1 \ \ diff --git a/Source/McBopomofo-Info.plist b/Source/McBopomofo-Info.plist index 330780ae..b29285ad 100644 --- a/Source/McBopomofo-Info.plist +++ b/Source/McBopomofo-Info.plist @@ -6,8 +6,6 @@ English CFBundleExecutable ${EXECUTABLE_NAME} - CFBundleIconFile - McBopomofo.icns CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -17,11 +15,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.9.11 + 1.0-beta3 CFBundleSignature BPMF CFBundleVersion - 812 + 844 ComponentInputModeDict tsInputModeListKey @@ -30,12 +28,21 @@ TISDoubleSpaceSubstitution + TISIntendedLanguage + zh-Hant tsInputModeAlternateMenuIconFileKey Bopomofo.tiff + tsInputModeCharacterRepertoireKey + + Hant + Han + tsInputModeDefaultStateKey tsInputModeIsVisibleKey + tsInputModeKeyEquivalentModifiersKey + 4608 tsInputModeMenuIconFileKey Bopomofo.tiff tsInputModePaletteIconFileKey @@ -44,26 +51,26 @@ tsInputModeScriptKey smTradChinese - TISIntendedLanguage - zh-Hant - tsInputModeCharacterRepertoireKey - - Hant - Han - - tsInputModeKeyEquivalentModifiersKey - 4608 org.openvanilla.inputmethod.McBopomofo.PlainBopomofo TISDoubleSpaceSubstitution + TISIntendedLanguage + zh-Hant tsInputModeAlternateMenuIconFileKey PlainBopomofo.tiff + tsInputModeCharacterRepertoireKey + + Hant + Han + tsInputModeDefaultStateKey tsInputModeIsVisibleKey + tsInputModeKeyEquivalentModifiersKey + 4608 tsInputModeMenuIconFileKey PlainBopomofo.tiff tsInputModePaletteIconFileKey @@ -72,15 +79,6 @@ tsInputModeScriptKey smTradChinese - TISIntendedLanguage - zh-Hant - tsInputModeCharacterRepertoireKey - - Hant - Han - - tsInputModeKeyEquivalentModifiersKey - 4608 tsVisibleInputModeOrderedArrayKey @@ -106,7 +104,7 @@ LSUIElement NSHumanReadableCopyright - Copyright © 2011-2018 Mengjuei Hsieh et al. + Copyright © 2011-2020 Mengjuei Hsieh et al. NSMainNibFile MainMenu NSPrincipalClass @@ -129,6 +127,6 @@ Hans tsInputMethodIconFileKey - BopomofoTextMenu.tiff + Bopomofo.tiff diff --git a/Source/OVNonModalAlertWindowController.h b/Source/OVNonModalAlertWindowController.h new file mode 100644 index 00000000..6ca4902b --- /dev/null +++ b/Source/OVNonModalAlertWindowController.h @@ -0,0 +1,39 @@ +// +// OVNonModalAlertWindowController.h +// OpenVanilla +// +// Created by Lukhnos Liu on 10/17/12. +// Copyright (c) 2012 The OpenVanilla Project. All rights reserved. +// + +#import + +@class OVNonModalAlertWindowController; + +@protocol OVNonModalAlertWindowControllerDelegate +- (void)nonModalAlertWindowControllerDidConfirm:(OVNonModalAlertWindowController *)controller; + +@optional +- (void)nonModalAlertWindowControllerDidCancel:(OVNonModalAlertWindowController *)controller; +@end + +@interface OVNonModalAlertWindowController : NSWindowController +{ +@private + NSTextField *_titleTextField; + NSTextField *_contentTextField; + NSButton *_confirmButton; + NSButton *_cancelButton; + id _delegate; +} + ++ (OVNonModalAlertWindowController *)sharedInstance; +- (void)showWithTitle:(NSString *)title content:(NSString *)content confirmButtonTitle:(NSString *)confirmTitle cancelButtonTitle:(NSString *)cancelButtonTitle cancelAsDefault:(BOOL)cancelAsDefault delegate:(id)delegate; +- (IBAction)confirmButtonAction:(id)sender; +- (IBAction)cancelButtonAction:(id)sender; +@property (assign, nonatomic) IBOutlet NSTextField *titleTextField; +@property (assign, nonatomic) IBOutlet NSTextField *contentTextField; +@property (assign, nonatomic) IBOutlet NSButton *confirmButton; +@property (assign, nonatomic) IBOutlet NSButton *cancelButton; +@property (assign, nonatomic) id delegate; +@end diff --git a/Source/OVNonModalAlertWindowController.m b/Source/OVNonModalAlertWindowController.m new file mode 100644 index 00000000..25ce7a24 --- /dev/null +++ b/Source/OVNonModalAlertWindowController.m @@ -0,0 +1,131 @@ +// +// OVNonModalAlertWindowController.m +// OpenVanilla +// +// Created by Lukhnos Liu on 10/17/12. +// Copyright (c) 2012 The OpenVanilla Project. All rights reserved. +// + +#import "OVNonModalAlertWindowController.h" + +@implementation OVNonModalAlertWindowController +@synthesize titleTextField = _titleTextField; +@synthesize contentTextField = _contentTextField; +@synthesize confirmButton = _confirmButton; +@synthesize cancelButton = _cancelButton; +@synthesize delegate = _delegate; + ++ (OVNonModalAlertWindowController *)sharedInstance +{ + static OVNonModalAlertWindowController *instance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + instance = [[OVNonModalAlertWindowController alloc] initWithWindowNibName:@"OVNonModalAlertWindowController"]; + [instance window]; + }); + return instance; +} + +// Suppress the use of the MIN/MAX macros +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wgnu-statement-expression" + +- (void)showWithTitle:(NSString *)title content:(NSString *)content confirmButtonTitle:(NSString *)confirmTitle cancelButtonTitle:(NSString *)cancelButtonTitle cancelAsDefault:(BOOL)cancelAsDefault delegate:(id)delegate; +{ + // cancel previous alert + if ([[self window] isVisible]) { + if ([_delegate respondsToSelector:@selector(nonModalAlertWindowControllerDidCancel:)]) { + [_delegate nonModalAlertWindowControllerDidCancel:self]; + } + } + + _delegate = delegate; + + NSRect oldFrame = [self.confirmButton frame]; + [self.confirmButton setTitle:confirmTitle]; + [self.confirmButton sizeToFit]; + + NSRect newFrame = [self.confirmButton frame]; + + newFrame.size.width = MAX(90.0, (newFrame.size.width + 10.0)); + newFrame.origin.x += (oldFrame.size.width - newFrame.size.width); + [self.confirmButton setFrame:newFrame]; + + if (cancelButtonTitle) { + [self.cancelButton setTitle:cancelButtonTitle]; + [self.cancelButton sizeToFit]; + NSRect adjustedFrame = [self.cancelButton frame]; + adjustedFrame.size.width = MAX(90.0, (adjustedFrame.size.width + 10.0)); + adjustedFrame.origin.x = newFrame.origin.x - adjustedFrame.size.width; + [self.cancelButton setFrame:adjustedFrame]; + [self.cancelButton setHidden:NO]; + } + else { + [self.cancelButton setHidden:YES]; + } + + [self.cancelButton setNextKeyView:self.confirmButton]; + [self.confirmButton setNextKeyView:self.cancelButton]; + + if (cancelButtonTitle) { + if (cancelAsDefault) { + [[self window] setDefaultButtonCell:[self.cancelButton cell]]; + } + else { + [self.cancelButton setKeyEquivalent:@" "]; + [[self window] setDefaultButtonCell:[self.confirmButton cell]]; + } + } + else { + [[self window] setDefaultButtonCell:[self.confirmButton cell]]; + } + + [self.titleTextField setStringValue:title]; + + oldFrame = [self.contentTextField frame]; + [self.contentTextField setStringValue:content]; + + NSRect infiniteHeightFrame = oldFrame; + infiniteHeightFrame.size.width -= 4.0; + infiniteHeightFrame.size.height = 10240; + newFrame = [content boundingRectWithSize:infiniteHeightFrame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:[self.contentTextField font], NSFontAttributeName, nil]]; + newFrame.size.width = MAX(newFrame.size.width, oldFrame.size.width); + newFrame.size.height += 4.0; + newFrame.origin = oldFrame.origin; + newFrame.origin.y -= (newFrame.size.height - oldFrame.size.height); + [self.contentTextField setFrame:newFrame]; + + NSRect windowFrame = [[self window] frame]; + windowFrame.size.height += (newFrame.size.height - oldFrame.size.height); + + [[self window] setLevel:CGShieldingWindowLevel() + 1]; + [[self window] setFrame:windowFrame display:YES]; + [[self window] center]; + [[self window] makeKeyAndOrderFront:self]; + [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; +} +#pragma GCC diagnostic pop + +- (IBAction)confirmButtonAction:(id)sender +{ + [_delegate nonModalAlertWindowControllerDidConfirm:self]; + [[self window] orderOut:self]; +} + +- (IBAction)cancelButtonAction:(id)sender +{ + [self cancel:sender]; +} + +- (void)cancel:(id)sender +{ + if ([_delegate respondsToSelector:@selector(nonModalAlertWindowControllerDidCancel:)]) { + [_delegate nonModalAlertWindowControllerDidCancel:self]; + } + + _delegate = nil; + + [[self window] orderOut:self]; +} + +@end diff --git a/Source/OVNonModalAlertWindowController.xib b/Source/OVNonModalAlertWindowController.xib new file mode 100644 index 00000000..430b3b36 --- /dev/null +++ b/Source/OVNonModalAlertWindowController.xib @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/en.lproj/InfoPlist.strings b/Source/en.lproj/InfoPlist.strings index 8ec26bf7..f2c7b01f 100644 --- a/Source/en.lproj/InfoPlist.strings +++ b/Source/en.lproj/InfoPlist.strings @@ -1,6 +1,6 @@ CFBundleName = "McBopomofo"; CFBundleDisplayName = "McBopomofo"; -NSHumanReadableCopyright = "Copyright © 2011-2018 Mengjuei Hsieh et al.\nAll Rights Reserved."; +NSHumanReadableCopyright = "Copyright © 2011-2020 Mengjuei Hsieh et al.\nAll Rights Reserved."; "org.openvanilla.inputmethod.McBopomofo.Bopomofo" = "Bopomofo"; "org.openvanilla.inputmethod.McBopomofo.PlainBopomofo" = "Plain Bopomofo"; diff --git a/Source/en.lproj/Localizable.strings b/Source/en.lproj/Localizable.strings index 8024204c..ed0452a5 100644 --- a/Source/en.lproj/Localizable.strings +++ b/Source/en.lproj/Localizable.strings @@ -16,14 +16,35 @@ /* No comment provided by engineer. */ "Check Later" = "Check Later"; +/* No comment provided by engineer. */ +"Check for Updates…" = "Check for Updates…"; + +/* No comment provided by engineer. */ +"Check for Update Completed" = "Check for Update Completed"; + +/* No comment provided by engineer. */ +"You are already using the latest version of McBopomofo." = "You are already using the latest version of McBopomofo."; + +/* No comment provided by engineer. */ +"Update Check Failed" = "Update Check Failed"; + +/* No comment provided by engineer. */ +"There may be no internet connection or the server failed to respond.\n\nError message: %@" = "There may be no internet connection or the server failed to respond.\n\nError message: %@"; + +/* No comment provided by engineer. */ +"OK" = "OK"; + +/* No comment provided by engineer. */ +"Dismiss" = "Dismiss"; + /* No comment provided by engineer. */ "New Version Available" = "New Version Available"; +/* No comment provided by engineer. */ +"Not Now" = "Not Now"; + /* No comment provided by engineer. */ "Visit Website" = "Visit Website"; /* No comment provided by engineer. */ -"You are running version %@ (%@), and the new version %@ (%@) is now available.\n\nVisit the website to download it?" = "You are running version %1$@ (%2$@), and the new version %3$@ (%4$@) is now available.\n\nVisit the website to download it?"; - -/* No comment provided by engineer. */ -"Check for Updates…" = "Check for Updates…"; +"You're currently using McBopomofo %@ (%@), a new version %@ (%@) is now available. Do you want to visit McBopomofo's website to download the version?%@" = "You're currently using McBopomofo %@ (%@), a new version %@ (%@) is now available. Do you want to visit McBopomofo's website to download the version?%@"; diff --git a/Source/zh-Hant.lproj/InfoPlist.strings b/Source/zh-Hant.lproj/InfoPlist.strings index b8b13f68..f84d1cd8 100644 --- a/Source/zh-Hant.lproj/InfoPlist.strings +++ b/Source/zh-Hant.lproj/InfoPlist.strings @@ -1,5 +1,5 @@ CFBundleName = "小麥注音"; CFBundleDisplayName = "小麥注音"; -NSHumanReadableCopyright = "Copyright © 2011-2018 Mengjuei Hsieh et al.\nAll Rights Reserved."; +NSHumanReadableCopyright = "Copyright © 2011-2020 Mengjuei Hsieh et al.\nAll Rights Reserved."; "org.openvanilla.inputmethod.McBopomofo.Bopomofo" = "小麥注音"; "org.openvanilla.inputmethod.McBopomofo.PlainBopomofo" = "傳統注音"; diff --git a/Source/zh-Hant.lproj/Localizable.strings b/Source/zh-Hant.lproj/Localizable.strings index 2ebe96de..791d39d1 100644 --- a/Source/zh-Hant.lproj/Localizable.strings +++ b/Source/zh-Hant.lproj/Localizable.strings @@ -16,14 +16,35 @@ /* No comment provided by engineer. */ "Check Later" = "晚點再通知我"; -/* No comment provided by engineer. */ -"New Version Available" = "New Version Available"; - -/* No comment provided by engineer. */ -"Visit Website" = "開啟網站"; - -/* No comment provided by engineer. */ -"You are running version %@ (%@), and the new version %@ (%@) is now available.\n\nVisit the website to download it?" = "目前的輸入法版本是 %1$@ 版 (%2$@),目前最新版本已經到第 %3$@ 版 (%4$@)。\n\n是否要前往輸入法網站,下載最新版本?"; - /* No comment provided by engineer. */ "Check for Updates…" = "檢查是否有新版…"; + +/* No comment provided by engineer. */ +"Check for Update Completed" = "新版檢查完畢"; + +/* No comment provided by engineer. */ +"You are already using the latest version of McBopomofo." = "目前使用的已經是最新版本。"; + +/* No comment provided by engineer. */ +"Update Check Failed" = "無法檢查新版"; + +/* No comment provided by engineer. */ +"There may be no internet connection or the server failed to respond.\n\nError message: %@" = "網路連線失敗,或是伺服器沒有回應。\n\n錯誤說明:%@"; + +/* No comment provided by engineer. */ +"OK" = "好"; + +/* No comment provided by engineer. */ +"Dismiss" = "關閉本視窗"; + +/* No comment provided by engineer. */ +"New Version Available" = "有新版可下載"; + +/* No comment provided by engineer. */ +"Not Now" = "以後再說"; + +/* No comment provided by engineer. */ +"Visit Website" = "前往網站"; + +/* No comment provided by engineer. */ +"You're currently using McBopomofo %@ (%@), a new version %@ (%@) is now available. Do you want to visit McBopomofo's website to download the version?%@" = "目前使用的小麥注音版本是 %1$@ (%2$@),網路上有更新版本 %3$@ (%4$@) 可供下載。是否要前往小麥注音網站下載新版來安裝?%5$@"; diff --git a/Source/zh-Hant.lproj/UpdateNotificationController.xib b/Source/zh-Hant.lproj/UpdateNotificationController.xib deleted file mode 100644 index dcf25950..00000000 --- a/Source/zh-Hant.lproj/UpdateNotificationController.xib +++ /dev/null @@ -1,452 +0,0 @@ - - - - 1070 - 11A2063 - 1910 - 1138.1 - 566.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 1910 - - - YES - NSTextField - NSView - NSWindowTemplate - NSTextFieldCell - NSButtonCell - NSButton - NSCustomObject - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - UpdateNotificationController - - - FirstResponder - - - NSApplication - - - 3 - 2 - {{503, 500}, {433, 153}} - 544735232 - New Version Available - NSWindow - - - - - 256 - - YES - - - 289 - {{283, 12}, {136, 32}} - - - - YES - - 67239424 - 134217728 - Visit - - LucidaGrande - 13 - 1044 - - - -2038284033 - 129 - - DQ - 200 - 25 - - - - - 289 - {{147, 12}, {136, 32}} - - - - YES - - 67239424 - 134217728 - Later - - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{17, 48}, {399, 85}} - - - - YES - - 67239424 - 272629760 - Version Info Text - - LucidaGrande - 13 - 16 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - {433, 153} - - - - - {{0, 0}, {1366, 746}} - {10000000000000, 10000000000000} - YES - - - - - YES - - - laterAction: - - - - 7 - - - - visitButton - - - - 9 - - - - window - - - - 10 - - - - visitAction: - - - - 12 - - - - laterButton - - - - 17 - - - - infoTextField - - - - 18 - - - - delegate - - - - 11 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - YES - - - - - - 2 - - - YES - - - - - - - - 3 - - - YES - - - - - - 4 - - - - - 5 - - - YES - - - - - - 6 - - - - - 15 - - - YES - - - - - - 16 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 1.IBNSWindowAutoPositionCentersHorizontal - 1.IBNSWindowAutoPositionCentersVertical - 1.IBPluginDependency - 1.IBWindowTemplateEditedContentRect - 1.NSWindowTemplate.visibleAtLaunch - 15.IBPluginDependency - 16.IBPluginDependency - 2.IBPluginDependency - 3.IBPluginDependency - 4.IBPluginDependency - 5.IBPluginDependency - 6.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{357, 418}, {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 - - - - - 18 - - - - YES - - UpdateNotificationController - NSWindowController - - YES - - YES - laterAction: - visitAction: - - - YES - id - id - - - - YES - - YES - laterAction: - visitAction: - - - YES - - laterAction: - id - - - visitAction: - id - - - - - YES - - YES - infoTextField - laterButton - visitButton - - - YES - NSTextField - NSButton - NSButton - - - - YES - - YES - infoTextField - laterButton - visitButton - - - YES - - infoTextField - NSTextField - - - laterButton - NSButton - - - visitButton - NSButton - - - - - IBProjectSource - ./Classes/UpdateNotificationController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - diff --git a/Source/zh-Hant.lproj/preferences.xib b/Source/zh-Hant.lproj/preferences.xib index f5c96069..6e087795 100644 --- a/Source/zh-Hant.lproj/preferences.xib +++ b/Source/zh-Hant.lproj/preferences.xib @@ -1,1591 +1,210 @@ - - - 1080 - 12C60 - 2844 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2844 - - - YES - NSButton - NSButtonCell - NSCustomObject - NSMatrix - NSMenu - NSMenuItem - NSPopUpButton - NSPopUpButtonCell - NSTextField - NSTextFieldCell - NSUserDefaultsController - NSView - NSWindowTemplate - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - PreferencesWindowController - - - FirstResponder - - - NSApplication - - - 7 - 2 - {{489, 334}, {386, 265}} - 544735232 - 注音偏好設定 - NSWindow - - - - - 256 - - YES - - - 268 - {{179, 222}, {125, 26}} - - - - YES - - -2076180416 - 2048 - - LucidaGrande - 13 - 1044 - - - 109199360 - 129 - - - 400 - 75 - - - 標準 - - 2147483647 - 1 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - 倚天 - - 1048576 - 2147483647 - - - _popUpItemAction: - 1 - - - - - 許氏鍵盤 - - 1048576 - 2147483647 - - - _popUpItemAction: - 2 - - - - - 倚天26鍵 - - 1048576 - 2147483647 - - - _popUpItemAction: - 3 - - - - - IBM - - 1048576 - 2147483647 - - - _popUpItemAction: - 5 - - - - - 漢語拼音 - - 1048576 - 2147483647 - - - _popUpItemAction: - 4 - - - - - - -1 - 1 - YES - YES - 2 - - NO - - - - 268 - {{82, 228}, {95, 17}} - - - - YES - - 68157504 - 71304192 - 注音鍵盤配置: - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - NO - - - - 268 - {{179, 182}, {149, 26}} - - - - YES - - -2076180416 - 2048 - - - 109199360 - 129 - - - 400 - 75 - - YES - - OtherViews - - YES - - - - -1 - 1 - YES - YES - 2 - - NO - - - - 268 - {{69, 188}, {108, 17}} - - - - YES - - 68157504 - 71304192 - 英數字鍵盤配置: - - - - - - NO - - - - 268 - {{17, 149}, {160, 17}} - - - - YES - - 68157504 - 71304192 - 選字時,候選詞起算點在: - - - - - - NO - - - - 268 - {{39, 103}, {138, 17}} - - - - YES - - 68157504 - 71304192 - 候選詞呈現方式: - - - - - - NO - - - - 268 - {{69, 56}, {108, 17}} - - - - YES - - 68157504 - 71304192 - 選字窗文字大小: - - - - - - NO - - - - 268 - {{182, 128}, {184, 38}} - - - - 1 - YES - NO - 2 - 1 - - YES - - -2080374784 - 0 - 游標前面(像漢音輸入法) - - - 1211912448 - 0 - - NSRadioButton - - - - 200 - 25 - - - 67108864 - 0 - 游標後面(像微軟新注音) - - - 1 - 1211912448 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw -cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA -AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA -BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA -AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA -AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 -cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD -AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH -SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF -hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 -vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt -7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq -Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo -aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e -n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX -2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW -FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O -Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 -ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt -rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA -AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA -AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl -A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq -DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU -HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 -MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v -UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ -eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj -rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn -5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh -AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK -CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY -GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 -MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S -UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 -d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV -pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK -0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// -AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw -BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA -FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H -LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh -Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ -h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp -svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb -1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX -8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE -AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg -QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA - - - - - - 3 - MCAwAA - - - - 400 - 75 - - - {184, 18} - {4, 2} - 1151868928 - NSActionCell - - 67108864 - 0 - Radio - - 1211912448 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - - - 400 - 75 - - - - - 3 - MQA - - - - - - 268 - {{182, 82}, {207, 38}} - - - - YES - NO - 2 - 1 - - YES - - -2080374784 - 0 - 垂直列表 - - - 1211912448 - 0 - - - - 200 - 25 - - - 67108864 - 0 - 水平列表 - - - 1 - 1211912448 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw -cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA -AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA -BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA -AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA -AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 -cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD -AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH -SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF -hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 -vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt -7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq -Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo -aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e -n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX -2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW -FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O -Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 -ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt -rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA -AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA -AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl -A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq -DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU -HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 -MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v -UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ -eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj -rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn -5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh -AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK -CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY -GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 -MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S -UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 -d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV -pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK -0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// -AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw -BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA -FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H -LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh -Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ -h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp -svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb -1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX -8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE -AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg -QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA - - - - - - - - 400 - 75 - - - {207, 18} - {4, 2} - 1151868928 - NSActionCell - - 67108864 - 0 - Radio - - 1211912448 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - - - 400 - 75 - - - - - - - - - 268 - {{179, 50}, {86, 26}} - - - - YES - - -2076180416 - 2048 - - - 109199360 - 129 - - - 400 - 75 - - - 18 - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - 18 - - - YES - - OtherViews - - YES - - - 12 - - 1048576 - 2147483647 - - - _popUpItemAction: - 12 - - - - - 14 - - 1048576 - 2147483647 - - - _popUpItemAction: - 14 - - - - - 16 - - 1048576 - 2147483647 - - - _popUpItemAction: - 16 - - - - - - 24 - - 1048576 - 2147483647 - - - _popUpItemAction: - 24 - - - - - 32 - - 1048576 - 2147483647 - - - _popUpItemAction: - 32 - - - - - 64 - - 1048576 - 2147483647 - - - _popUpItemAction: - 64 - - - - - 96 - - 1048576 - 2147483647 - - - _popUpItemAction: - 96 - - - - - - 3 - 1 - YES - YES - 2 - - NO - - - - 268 - {{180, 18}, {113, 18}} - - - _NS:239 - YES - - -2080374784 - 0 - 使用空白鍵選字 - - _NS:239 - - 1211912448 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - NO - - - {386, 265} - - - - - {{0, 0}, {1366, 746}} - {10000000000000, 10000000000000} - YES - - - YES - - - - - YES - - - window - - - - 30 - - - - fontSizePopUpButton - - - - 108 - - - - basisKeyboardLayoutButton - - - - 123 - - - - updateBasisKeyboardLayoutAction: - - - - 124 - - - - selectedTag: values.KeyboardLayout - - - - - - selectedTag: values.KeyboardLayout - selectedTag - values.KeyboardLayout - 2 - - - 103 - - - - selectedTag: values.SelectPhraseAfterCursorAsCandidate - - - - - - selectedTag: values.SelectPhraseAfterCursorAsCandidate - selectedTag - values.SelectPhraseAfterCursorAsCandidate - 2 - - - 104 - - - - selectedTag: values.UseHorizontalCandidateList - - - - - - selectedTag: values.UseHorizontalCandidateList - selectedTag - values.UseHorizontalCandidateList - 2 - - - 105 - - - - selectedTag: values.CandidateListTextSize - - - - - - selectedTag: values.CandidateListTextSize - selectedTag - values.CandidateListTextSize - 2 - - - 107 - - - - value: values.ChooseCandidateUsingSpaceKey - - - - - - value: values.ChooseCandidateUsingSpaceKey - value - values.ChooseCandidateUsingSpaceKey - 2 - - - 111 - - - - - YES - - 0 - - YES - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - YES - - - - Window - Preferences - - - 2 - - - YES - - - - - - - - - - - - - - - - 3 - - - YES - - - - - - 4 - - - YES - - - - - - 5 - - - YES - - - - - - - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - YES - - - - - - 12 - - - - - 13 - - - YES - - - - - - 14 - - - - - 15 - - - YES - - - - - - - - 16 - - - - - 17 - - - - - 18 - - - - - 19 - - - YES - - - - - - - - 20 - - - - - 21 - - - - - 22 - - - - - 23 - - - YES - - - - - - 24 - - - - - 28 - - - YES - - - - - - 29 - - - - - 32 - - - - - 90 - - - YES - - - - - - 91 - - - YES - - - - - - 92 - - - YES - - - - - - - - - - - - - 93 - - - - - 94 - - - - - 95 - - - - - 96 - - - - - 98 - - - - - 99 - - - - - 100 - - - - - 101 - - - - - 109 - - - YES - - - - - - 110 - - - - - 112 - - - YES - - - - - - 113 - - - YES - - - - - - 114 - - - - - 115 - - - YES - - - - - - 116 - - - YES - - - - - 125 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 1.IBNSWindowAutoPositionCentersHorizontal - 1.IBNSWindowAutoPositionCentersVertical - 1.IBPluginDependency - 1.IBWindowTemplateEditedContentRect - 1.NSWindowTemplate.visibleAtLaunch - 10.IBPluginDependency - 100.IBPluginDependency - 101.IBPluginDependency - 109.IBPluginDependency - 11.IBPluginDependency - 110.IBPluginDependency - 112.IBPluginDependency - 113.IBPluginDependency - 114.IBPluginDependency - 115.IBPluginDependency - 116.IBPluginDependency - 12.IBPluginDependency - 125.IBPluginDependency - 13.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 17.IBPluginDependency - 18.IBPluginDependency - 19.IBPluginDependency - 2.IBPluginDependency - 20.IBPluginDependency - 21.IBPluginDependency - 22.IBPluginDependency - 23.IBPluginDependency - 24.IBPluginDependency - 28.IBPluginDependency - 29.IBPluginDependency - 3.IBPluginDependency - 32.IBPluginDependency - 4.IBPluginDependency - 5.IBPluginDependency - 6.IBPluginDependency - 7.IBPluginDependency - 8.IBPluginDependency - 9.IBPluginDependency - 90.IBPluginDependency - 91.IBPluginDependency - 92.IBPluginDependency - 93.IBPluginDependency - 94.IBPluginDependency - 95.IBPluginDependency - 96.IBPluginDependency - 98.IBPluginDependency - 99.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{322, 713}, {332, 191}} - - 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 - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - - - - YES - - - - - 125 - - - - YES - - PreferencesWindowController - NSWindowController - - updateBasisKeyboardLayoutAction: - id - - - updateBasisKeyboardLayoutAction: - - updateBasisKeyboardLayoutAction: - id - - - - YES - - YES - basisKeyboardLayoutButton - fontSizePopUpButton - - - YES - NSPopUpButton - NSPopUpButton - - - - YES - - YES - basisKeyboardLayoutButton - fontSizePopUpButton - - - YES - - basisKeyboardLayoutButton - NSPopUpButton - - - fontSizePopUpButton - NSPopUpButton - - - - - IBProjectSource - ./Classes/PreferencesWindowController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - NSSwitch - - - YES - {11, 11} - {10, 3} - {15, 15} - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +