├── .gitignore ├── AZThemeManager.h ├── AZThemeManager.m ├── LICENSE ├── Podfile ├── README.md ├── Sparkle.framework ├── Headers ├── Resources ├── Sparkle └── Versions │ ├── A │ ├── Headers │ │ ├── SUAppcast.h │ │ ├── SUAppcastItem.h │ │ ├── SUUpdater.h │ │ ├── SUVersionComparisonProtocol.h │ │ └── Sparkle.h │ ├── Resources │ │ ├── Info.plist │ │ ├── License.txt │ │ ├── SUModelTranslation.plist │ │ ├── SUStatus.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ ├── de.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── en.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── es.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── fr.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Sparkle.strings │ │ │ └── fr.lproj │ │ ├── fr_CA.lproj │ │ ├── it.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── nl.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── relaunch │ │ ├── ru.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ └── sv.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ └── Sparkle │ └── Current ├── Weixin.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcuserdata │ └── aladdin.xcuserdatad │ └── xcschemes │ ├── Weixin.xcscheme │ └── xcschememanagement.plist ├── Weixin ├── AZAppDelegate.h ├── AZAppDelegate.m ├── AZLocalScript.h ├── AZLocalScript.m ├── AZWebView.h ├── AZWebView.m ├── Base.lproj │ └── MainMenu.xib ├── Category │ ├── NSButton+Style.h │ ├── NSButton+Style.m │ ├── NSImage+File.h │ ├── NSImage+File.m │ ├── NSUserDefaults+IntValue.h │ └── NSUserDefaults+IntValue.m ├── Images.xcassets │ └── AppIcon.appiconset │ │ ├── 256 copy 2.png │ │ ├── 256 copy 3.png │ │ ├── 256 copy 4.png │ │ ├── 256 copy 5.png │ │ ├── 256 copy.png │ │ ├── 256.png │ │ └── Contents.json ├── NSString+NSString_decode.h ├── NSString+NSString_decode.m ├── The_Garden_of_Words.bpack │ ├── 12NfRQ.jpg │ ├── 1QfnS.jpg │ ├── Backgrounds.plist │ ├── GR40.jpg │ ├── NJ96f.jpg │ ├── Q3uc0.jpg │ ├── txRtU.jpg │ ├── uYbU3.jpg │ └── wGJjf.jpg ├── Weixin-Info.plist ├── Weixin-Prefix.pch ├── dsa_pub.pem ├── en.lproj │ ├── Credits.rtf │ └── InfoPlist.strings ├── left.png ├── local.js ├── main.m └── right.png ├── WeixinTests ├── WeixinTests-Info.plist ├── WeixinTests.m └── en.lproj │ └── InfoPlist.strings └── iTunes.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | .DS_Store 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | *.xcworkspace 13 | !default.xcworkspace 14 | xcuserdata 15 | profile 16 | *.moved-aside 17 | DerivedData 18 | .idea/ 19 | Pods/ 20 | Podfile.lock 21 | /CocoaHTTPServer/ -------------------------------------------------------------------------------- /AZThemeManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // AZThemeManager.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 8/1/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HTTPServer.h" 11 | 12 | @interface AZThemeManager : NSObject{ 13 | NSArray * _backgrounds; 14 | NSArray * _themes; 15 | HTTPServer * _http; 16 | NSString * _localhostPath; 17 | } 18 | @property NSInteger currentIndex; 19 | @property NSInteger currentThemeIndex; 20 | @property (nonatomic,strong) HTTPServer * http; 21 | @property (nonatomic,strong) NSString * localhostPath; 22 | + (AZThemeManager *)sharedManager; 23 | - (void) actionToNext; 24 | - (void) actionToLast; 25 | - (void) actionToTheme:(NSInteger)themeID; 26 | - (NSString * ) currentBackground; 27 | - (NSInteger) countOfBackgrounds; 28 | @end 29 | -------------------------------------------------------------------------------- /AZThemeManager.m: -------------------------------------------------------------------------------- 1 | // 2 | // AZThemeManager.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 8/1/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "AZThemeManager.h" 10 | #import "HTTPServer.h" 11 | #import "DDLog.h" 12 | #import "DDTTYLogger.h" 13 | 14 | @implementation AZThemeManager 15 | @synthesize http = _http; 16 | @synthesize localhostPath = _localhostPath; 17 | 18 | 19 | static AZThemeManager *_sharedInstance = nil; 20 | static const int ddLogLevel = LOG_ASYNC_VERBOSE; 21 | 22 | - (void)syncUserDefault{ 23 | [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%li",(long)self.currentThemeIndex] forKey:@"currentThemeIndex"]; 24 | [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%li",(long)self.currentIndex] forKey:@"currentIndex"]; 25 | [[NSUserDefaults standardUserDefaults] synchronize]; 26 | } 27 | 28 | 29 | - (void) actionToNext{ 30 | if (self.currentIndex >= [self countOfBackgrounds]-1) { 31 | self.currentIndex = 0; 32 | [self syncUserDefault]; 33 | return; 34 | } 35 | self.currentIndex ++; 36 | [self syncUserDefault]; 37 | return; 38 | } 39 | - (void) actionToLast{ 40 | if (self.currentIndex == 0) { 41 | self.currentIndex = [self countOfBackgrounds]-1; 42 | [self syncUserDefault]; 43 | return; 44 | } 45 | self.currentIndex --; 46 | [self syncUserDefault]; 47 | return; 48 | } 49 | 50 | - (void) actionToTheme:(NSInteger)themeID{ 51 | 52 | } 53 | - (NSString * ) currentBackground{ 54 | return [_backgrounds objectAtIndex:self.currentIndex]; 55 | } 56 | - (NSInteger) countOfBackgrounds{ 57 | return [_backgrounds count]; 58 | } 59 | 60 | + (AZThemeManager *)sharedManager{ 61 | 62 | if (nil != _sharedInstance) { 63 | return _sharedInstance; 64 | } 65 | 66 | static dispatch_once_t pred; 67 | dispatch_once(&pred, ^{ 68 | _sharedInstance = [[AZThemeManager alloc] init]; 69 | }); 70 | 71 | return _sharedInstance; 72 | } 73 | 74 | - (void) initHttpServer{ 75 | [DDLog addLogger:[DDTTYLogger sharedInstance]]; 76 | self.http = [[HTTPServer alloc] init]; 77 | [self.http setType:@"_http._tcp."]; 78 | 79 | NSInteger port = 51112; 80 | 81 | [self.http setPort:port]; 82 | 83 | NSString *docRoot = [[[NSBundle mainBundle] bundlePath] stringByExpandingTildeInPath]; 84 | DLog(@"Setting document root: %@", docRoot); 85 | [self.http setDocumentRoot:docRoot]; 86 | 87 | NSError *error = nil; 88 | if(![self.http start:&error]) 89 | { 90 | DDLogError(@"Error starting HTTP Server: %@", error); 91 | } 92 | self.localhostPath = [NSString stringWithFormat:@"127.0.0.1:%li/Contents/Resources/",(long)port]; 93 | 94 | } 95 | 96 | - (void)localizedBackgrounds:(NSString *)themePath{ 97 | NSString * plistPath = [NSString stringWithFormat:@"%@/Backgrounds.plist",themePath]; 98 | NSArray * backgrounds = [[NSDictionary dictionaryWithContentsOfFile:plistPath] objectForKey:@"Backgrounds"]; 99 | NSArray * tempA = [NSArray arrayWithArray:backgrounds]; 100 | NSMutableArray * resultArray = [NSMutableArray arrayWithCapacity:backgrounds.count]; 101 | for (NSString * name in tempA) { 102 | [resultArray addObject:[NSString stringWithFormat:@"http://%@%@/%@",self.localhostPath,[themePath lastPathComponent],name]]; 103 | } 104 | _backgrounds = resultArray; 105 | } 106 | 107 | - (id)init 108 | { 109 | self = [super init]; 110 | 111 | if (self) { 112 | [self initHttpServer]; 113 | _themes = [[NSBundle mainBundle] pathsForResourcesOfType:@"bpack" inDirectory:nil]; 114 | NSInteger currentThemeIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"currentThemeIndex"]; 115 | [self localizedBackgrounds:[_themes objectAtIndex:currentThemeIndex]]; 116 | self.currentIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"currentIndex"]; 117 | } 118 | 119 | return self; 120 | } 121 | 122 | @end 123 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, and 10 | distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by the copyright 13 | owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities 16 | that control, are controlled by, or are under common control with that entity. 17 | For the purposes of this definition, "control" means (i) the power, direct or 18 | indirect, to cause the direction or management of such entity, whether by 19 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the 20 | outstanding shares, or (iii) beneficial ownership of such entity. 21 | 22 | "You" (or "Your") shall mean an individual or Legal Entity exercising 23 | permissions granted by this License. 24 | 25 | "Source" form shall mean the preferred form for making modifications, including 26 | but not limited to software source code, documentation source, and configuration 27 | files. 28 | 29 | "Object" form shall mean any form resulting from mechanical transformation or 30 | translation of a Source form, including but not limited to compiled object code, 31 | generated documentation, and conversions to other media types. 32 | 33 | "Work" shall mean the work of authorship, whether in Source or Object form, made 34 | available under the License, as indicated by a copyright notice that is included 35 | in or attached to the work (an example is provided in the Appendix below). 36 | 37 | "Derivative Works" shall mean any work, whether in Source or Object form, that 38 | is based on (or derived from) the Work and for which the editorial revisions, 39 | annotations, elaborations, or other modifications represent, as a whole, an 40 | original work of authorship. For the purposes of this License, Derivative Works 41 | shall not include works that remain separable from, or merely link (or bind by 42 | name) to the interfaces of, the Work and Derivative Works thereof. 43 | 44 | "Contribution" shall mean any work of authorship, including the original version 45 | of the Work and any modifications or additions to that Work or Derivative Works 46 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 47 | by the copyright owner or by an individual or Legal Entity authorized to submit 48 | on behalf of the copyright owner. For the purposes of this definition, 49 | "submitted" means any form of electronic, verbal, or written communication sent 50 | to the Licensor or its representatives, including but not limited to 51 | communication on electronic mailing lists, source code control systems, and 52 | issue tracking systems that are managed by, or on behalf of, the Licensor for 53 | the purpose of discussing and improving the Work, but excluding communication 54 | that is conspicuously marked or otherwise designated in writing by the copyright 55 | owner as "Not a Contribution." 56 | 57 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf 58 | of whom a Contribution has been received by Licensor and subsequently 59 | incorporated within the Work. 60 | 61 | 2. Grant of Copyright License. 62 | 63 | Subject to the terms and conditions of this License, each Contributor hereby 64 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 65 | irrevocable copyright license to reproduce, prepare Derivative Works of, 66 | publicly display, publicly perform, sublicense, and distribute the Work and such 67 | Derivative Works in Source or Object form. 68 | 69 | 3. Grant of Patent License. 70 | 71 | Subject to the terms and conditions of this License, each Contributor hereby 72 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 73 | irrevocable (except as stated in this section) patent license to make, have 74 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 75 | such license applies only to those patent claims licensable by such Contributor 76 | that are necessarily infringed by their Contribution(s) alone or by combination 77 | of their Contribution(s) with the Work to which such Contribution(s) was 78 | submitted. If You institute patent litigation against any entity (including a 79 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 80 | Contribution incorporated within the Work constitutes direct or contributory 81 | patent infringement, then any patent licenses granted to You under this License 82 | for that Work shall terminate as of the date such litigation is filed. 83 | 84 | 4. Redistribution. 85 | 86 | You may reproduce and distribute copies of the Work or Derivative Works thereof 87 | in any medium, with or without modifications, and in Source or Object form, 88 | provided that You meet the following conditions: 89 | 90 | You must give any other recipients of the Work or Derivative Works a copy of 91 | this License; and 92 | You must cause any modified files to carry prominent notices stating that You 93 | changed the files; and 94 | You must retain, in the Source form of any Derivative Works that You distribute, 95 | all copyright, patent, trademark, and attribution notices from the Source form 96 | of the Work, excluding those notices that do not pertain to any part of the 97 | Derivative Works; and 98 | If the Work includes a "NOTICE" text file as part of its distribution, then any 99 | Derivative Works that You distribute must include a readable copy of the 100 | attribution notices contained within such NOTICE file, excluding those notices 101 | that do not pertain to any part of the Derivative Works, in at least one of the 102 | following places: within a NOTICE text file distributed as part of the 103 | Derivative Works; within the Source form or documentation, if provided along 104 | with the Derivative Works; or, within a display generated by the Derivative 105 | Works, if and wherever such third-party notices normally appear. The contents of 106 | the NOTICE file are for informational purposes only and do not modify the 107 | License. You may add Your own attribution notices within Derivative Works that 108 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 109 | provided that such additional attribution notices cannot be construed as 110 | modifying the License. 111 | You may add Your own copyright statement to Your modifications and may provide 112 | additional or different license terms and conditions for use, reproduction, or 113 | distribution of Your modifications, or for any such Derivative Works as a whole, 114 | provided Your use, reproduction, and distribution of the Work otherwise complies 115 | with the conditions stated in this License. 116 | 117 | 5. Submission of Contributions. 118 | 119 | Unless You explicitly state otherwise, any Contribution intentionally submitted 120 | for inclusion in the Work by You to the Licensor shall be under the terms and 121 | conditions of this License, without any additional terms or conditions. 122 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 123 | any separate license agreement you may have executed with Licensor regarding 124 | such Contributions. 125 | 126 | 6. Trademarks. 127 | 128 | This License does not grant permission to use the trade names, trademarks, 129 | service marks, or product names of the Licensor, except as required for 130 | reasonable and customary use in describing the origin of the Work and 131 | reproducing the content of the NOTICE file. 132 | 133 | 7. Disclaimer of Warranty. 134 | 135 | Unless required by applicable law or agreed to in writing, Licensor provides the 136 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, 137 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 138 | including, without limitation, any warranties or conditions of TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 140 | solely responsible for determining the appropriateness of using or 141 | redistributing the Work and assume any risks associated with Your exercise of 142 | permissions under this License. 143 | 144 | 8. Limitation of Liability. 145 | 146 | In no event and under no legal theory, whether in tort (including negligence), 147 | contract, or otherwise, unless required by applicable law (such as deliberate 148 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 149 | liable to You for damages, including any direct, indirect, special, incidental, 150 | or consequential damages of any character arising as a result of this License or 151 | out of the use or inability to use the Work (including but not limited to 152 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 153 | any and all other commercial damages or losses), even if such Contributor has 154 | been advised of the possibility of such damages. 155 | 156 | 9. Accepting Warranty or Additional Liability. 157 | 158 | While redistributing the Work or Derivative Works thereof, You may choose to 159 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 160 | other liability obligations and/or rights consistent with this License. However, 161 | in accepting such obligations, You may act only on Your own behalf and on Your 162 | sole responsibility, not on behalf of any other Contributor, and only if You 163 | agree to indemnify, defend, and hold each Contributor harmless for any liability 164 | incurred by, or claims asserted against, such Contributor by reason of your 165 | accepting any such warranty or additional liability. 166 | 167 | END OF TERMS AND CONDITIONS 168 | 169 | APPENDIX: How to apply the Apache License to your work 170 | 171 | To apply the Apache License to your work, attach the following boilerplate 172 | notice, with the fields enclosed by brackets "[]" replaced with your own 173 | identifying information. (Don't include the brackets!) The text should be 174 | enclosed in the appropriate comment syntax for the file format. We also 175 | recommend that a file or class name and description of purpose be included on 176 | the same "printed page" as the copyright notice for easier identification within 177 | third-party archives. 178 | 179 | Copyright [yyyy] [name of copyright owner] 180 | 181 | Licensed under the Apache License, Version 2.0 (the "License"); 182 | you may not use this file except in compliance with the License. 183 | You may obtain a copy of the License at 184 | 185 | http://www.apache.org/licenses/LICENSE-2.0 186 | 187 | Unless required by applicable law or agreed to in writing, software 188 | distributed under the License is distributed on an "AS IS" BASIS, 189 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 190 | See the License for the specific language governing permissions and 191 | limitations under the License. 192 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | target "Weixin" do 2 | pod 'CocoaHTTPServer', '~> 2.3' 3 | pod 'MASShortcut', '~> 2.3.6' 4 | pod 'AFNetworking', '~> 3.0' 5 | end 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Weixin-Mac 2 | ========== 3 | 4 | **普通用户请到这里 http://ialaddin.github.io/Weixin-Mac/index.html** 5 | 6 | 开发者小伙伴继续阅读吧: 7 | 8 | 微信网页版本的Mac Native的封装和扩展 9 | 10 | 多写两句吧,关于这个App本身的目的并不是那么的远大和雄伟,停止开发的时间也不一定什么时候就停止了。这要看腾讯自己什么时候出Mac的App,或者它什么时候考虑把这个封了。这个App本身的难度基本上说是0吧,这样放出来只是为了方便有需要的人而已,一直是开源的,您有兴趣看代码,就明白多么简单和安全。 11 | 12 | ##代码分支管理 13 | 14 | 使用的是git-flow (http://nvie.com/posts/a-successful-git-branching-model) 15 | 16 | 所以最新的代码在develop上面,稳定代码在master上,发布在release上就很好理解了哈... 17 | 18 | ##依赖管理 19 | 20 | 使用 [Cocoapods](https://github.com/CocoaPods/CocoaPods)进行管理, 21 | 目前使用外部依赖有: 22 | 23 | ``` 24 | target "Weixin" do 25 | pod 'CocoaHTTPServer', '~> 2.3' 26 | pod 'MASShortcut', '~> 2.3.6' 27 | end 28 | 29 | ``` 30 | 31 | ##开发环境需求 32 | 33 | 我的开发环境是 34 | 35 | ``` 36 | 10.9 Mavericks 37 | Xcode5-DP5 38 | ruby 1.9.3 39 | Cocoapods 0.24.0 40 | 41 | ``` 42 | 43 | 1. fork this repo 44 | 2. `git clone https://github.com/iAladdin/Weixin-Mac.git;cd Weixin-Mac` 45 | 3. `git checkout develop` 46 | 4. `pods install` 47 | 5. `open Weixin.xcworkspace` 48 | 49 | ##感谢 50 | 51 | 我虽然增加了捐赠按钮,但本身目的不是为了通过这个进行盈利的,妄下定论的小伙伴们,还是点击下看看,当故事看也好。最后,感谢捐赠的各位。 52 | 53 | 捐赠感谢名单(按捐赠时间顺序,如果需要删除的小伙伴可以在捐赠的时候附加上匿名=D ) 54 | 55 | 1. lixiarong 56 | 2. fengdahui 57 | 3. huangyan 58 | 4. wujinchuan 59 | 5. linli 60 | 6. zhangyongxiang 61 | 7. zhenghao 62 | 8. zhangxin 63 | 9. zhangjunya 64 | 10. zhangshaozhi 65 | 11. panzicong 66 | 12. wukaifeng 67 | 13. liziqi 68 | 14. beijingminuowuxiankejiyouxiangongsi 69 | 15. heliang 70 | 16. lijingjun 71 | 17. chenzhongming 72 | 18. zhaoqing 73 | 19. wulei 74 | 20. wenying 75 | 21. hanchengyue 76 | 22. shenmengyao 77 | 23. *依尔 78 | 24. *俊 79 | 25. *正清 80 | 26. *凯华 81 | 27. *阳 82 | 28. *为任 83 | 29. *兆悦 84 | 30. *昌圣 85 | 31. *贺 86 | 32. *建兰 87 | 33. *伟 88 | 34. *云涛 89 | 90 | Latest: 91 | September Early 92 | http://ialaddin.github.io/Weixin-Mac/Weixin-September-Early.zip 93 | -------------------------------------------------------------------------------- /Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Headers/SUAppcast.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcast.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCAST_H 10 | #define SUAPPCAST_H 11 | 12 | @class SUAppcastItem; 13 | @interface SUAppcast : NSObject { 14 | NSArray *items; 15 | NSString *userAgentString; 16 | id delegate; 17 | NSMutableData *incrementalData; 18 | } 19 | 20 | - (void)fetchAppcastFromURL:(NSURL *)url; 21 | - (void)setDelegate:delegate; 22 | - (void)setUserAgentString:(NSString *)userAgentString; 23 | 24 | - (NSArray *)items; 25 | 26 | @end 27 | 28 | @interface NSObject (SUAppcastDelegate) 29 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 30 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 31 | @end 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Headers/SUAppcastItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcastItem.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCASTITEM_H 10 | #define SUAPPCASTITEM_H 11 | 12 | @interface SUAppcastItem : NSObject { 13 | NSString *title; 14 | NSDate *date; 15 | NSString *itemDescription; 16 | 17 | NSURL *releaseNotesURL; 18 | 19 | NSString *DSASignature; 20 | NSString *minimumSystemVersion; 21 | 22 | NSURL *fileURL; 23 | NSString *versionString; 24 | NSString *displayVersionString; 25 | 26 | NSDictionary *propertiesDictionary; 27 | } 28 | 29 | // Initializes with data from a dictionary provided by the RSS class. 30 | - initWithDictionary:(NSDictionary *)dict; 31 | 32 | - (NSString *)title; 33 | - (NSString *)versionString; 34 | - (NSString *)displayVersionString; 35 | - (NSDate *)date; 36 | - (NSString *)itemDescription; 37 | - (NSURL *)releaseNotesURL; 38 | - (NSURL *)fileURL; 39 | - (NSString *)DSASignature; 40 | - (NSString *)minimumSystemVersion; 41 | 42 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 43 | - (NSDictionary *)propertiesDictionary; 44 | 45 | @end 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Headers/SUUpdater.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUUpdater.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 1/4/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUUPDATER_H 10 | #define SUUPDATER_H 11 | 12 | #import 13 | 14 | @class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; 15 | @interface SUUpdater : NSObject { 16 | NSTimer *checkTimer; 17 | SUUpdateDriver *driver; 18 | 19 | SUHost *host; 20 | IBOutlet id delegate; 21 | } 22 | 23 | + (SUUpdater *)sharedUpdater; 24 | + (SUUpdater *)updaterForBundle:(NSBundle *)bundle; 25 | - (NSBundle *)hostBundle; 26 | 27 | - (void)setDelegate:(id)delegate; 28 | - delegate; 29 | 30 | - (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; 31 | - (BOOL)automaticallyChecksForUpdates; 32 | 33 | - (void)setUpdateCheckInterval:(NSTimeInterval)interval; 34 | - (NSTimeInterval)updateCheckInterval; 35 | 36 | - (void)setFeedURL:(NSURL *)feedURL; 37 | - (NSURL *)feedURL; 38 | 39 | - (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; 40 | - (BOOL)sendsSystemProfile; 41 | 42 | - (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; 43 | - (BOOL)automaticallyDownloadsUpdates; 44 | 45 | // This IBAction is meant for a main menu item. Hook up any menu item to this action, 46 | // and Sparkle will check for updates and report back its findings verbosely. 47 | - (IBAction)checkForUpdates:sender; 48 | 49 | // This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, 50 | // in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an 51 | // update is found, it will be downloaded and prepped for installation. 52 | - (void)checkForUpdatesInBackground; 53 | 54 | // Date of last update check. Returns null if no check has been performed. 55 | - (NSDate*)lastUpdateCheckDate; 56 | 57 | // This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, 58 | // (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. 59 | - (void)checkForUpdateInformation; 60 | 61 | // Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. 62 | - (void)resetUpdateCycle; 63 | 64 | - (BOOL)updateInProgress; 65 | @end 66 | 67 | @interface NSObject (SUUpdaterDelegateInformalProtocol) 68 | // This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. 69 | - (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; 70 | 71 | // Use this to override the default behavior for Sparkle prompting the user about automatic update checks. 72 | - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; 73 | 74 | // Implement this if you want to do some special handling with the appcast once it finishes loading. 75 | - (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; 76 | 77 | // If you're using special logic or extensions in your appcast, implement this to use your own logic for finding 78 | // a valid update, if any, in the given appcast. 79 | - (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; 80 | 81 | // Sent when a valid update is found by the update driver. 82 | - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; 83 | 84 | // Sent when a valid update is not found. 85 | - (void)updaterDidNotFindUpdate:(SUUpdater *)update; 86 | 87 | // Sent immediately before installing the specified update. 88 | - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; 89 | 90 | // Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. 91 | - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; 92 | 93 | // Called immediately before relaunching. 94 | - (void)updaterWillRelaunchApplication:(SUUpdater *)updater; 95 | 96 | // This method allows you to provide a custom version comparator. 97 | // If you don't implement this method or return nil, the standard version comparator will be used. 98 | - (id )versionComparatorForUpdater:(SUUpdater *)updater; 99 | 100 | // Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. 101 | - (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; 102 | 103 | @end 104 | 105 | // Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. 106 | #ifdef DEBUG 107 | #define SU_MIN_CHECK_INTERVAL 60 108 | #else 109 | #define SU_MIN_CHECK_INTERVAL 60*60 110 | #endif 111 | 112 | #ifdef DEBUG 113 | #define SU_DEFAULT_CHECK_INTERVAL 60 114 | #else 115 | #define SU_DEFAULT_CHECK_INTERVAL 60*60*24 116 | #endif 117 | 118 | #endif 119 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionComparisonProtocol.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H 10 | #define SUVERSIONCOMPARISONPROTOCOL_H 11 | 12 | /*! 13 | @protocol 14 | @abstract Implement this protocol to provide version comparison facilities for Sparkle. 15 | */ 16 | @protocol SUVersionComparison 17 | 18 | /*! 19 | @method 20 | @abstract An abstract method to compare two version strings. 21 | @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. 22 | */ 23 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; 24 | 25 | @end 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Headers/Sparkle.h: -------------------------------------------------------------------------------- 1 | // 2 | // Sparkle.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SPARKLE_H 10 | #define SPARKLE_H 11 | 12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless 13 | // there are name-space collisions) so we can list all of them to start with: 14 | 15 | #import 16 | 17 | #import 18 | #import 19 | #import 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | Sparkle 9 | CFBundleIdentifier 10 | org.andymatuschak.Sparkle 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Sparkle 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.5 Beta 6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 313 23 | 24 | 25 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Andy Matuschak 2 | 3 | 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: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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. -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ADP2,1 6 | Developer Transition Kit 7 | MacBook1,1 8 | MacBook (Core Duo) 9 | MacBook2,1 10 | MacBook (Core 2 Duo) 11 | MacBook4,1 12 | MacBook (Core 2 Duo Feb 2008) 13 | MacBookAir1,1 14 | MacBook Air (January 2008) 15 | MacBookPro1,1 16 | MacBook Pro Core Duo (15-inch) 17 | MacBookPro1,2 18 | MacBook Pro Core Duo (17-inch) 19 | MacBookPro2,1 20 | MacBook Pro Core 2 Duo (17-inch) 21 | MacBookPro2,2 22 | MacBook Pro Core 2 Duo (15-inch) 23 | MacBookPro3,1 24 | MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) 25 | MacBookPro3,2 26 | MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) 27 | MacBookPro4,1 28 | MacBook Pro (Core 2 Duo Feb 2008) 29 | MacPro1,1 30 | Mac Pro (four-core) 31 | MacPro2,1 32 | Mac Pro (eight-core) 33 | MacPro3,1 34 | Mac Pro (January 2008 4- or 8- core "Harpertown") 35 | Macmini1,1 36 | Mac Mini (Core Solo/Duo) 37 | PowerBook1,1 38 | PowerBook G3 39 | PowerBook2,1 40 | iBook G3 41 | PowerBook2,2 42 | iBook G3 (FireWire) 43 | PowerBook2,3 44 | iBook G3 45 | PowerBook2,4 46 | iBook G3 47 | PowerBook3,1 48 | PowerBook G3 (FireWire) 49 | PowerBook3,2 50 | PowerBook G4 51 | PowerBook3,3 52 | PowerBook G4 (Gigabit Ethernet) 53 | PowerBook3,4 54 | PowerBook G4 (DVI) 55 | PowerBook3,5 56 | PowerBook G4 (1GHz / 867MHz) 57 | PowerBook4,1 58 | iBook G3 (Dual USB, Late 2001) 59 | PowerBook4,2 60 | iBook G3 (16MB VRAM) 61 | PowerBook4,3 62 | iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) 63 | PowerBook5,1 64 | PowerBook G4 (17 inch) 65 | PowerBook5,2 66 | PowerBook G4 (15 inch FW 800) 67 | PowerBook5,3 68 | PowerBook G4 (17-inch 1.33GHz) 69 | PowerBook5,4 70 | PowerBook G4 (15 inch 1.5/1.33GHz) 71 | PowerBook5,5 72 | PowerBook G4 (17-inch 1.5GHz) 73 | PowerBook5,6 74 | PowerBook G4 (15 inch 1.67GHz/1.5GHz) 75 | PowerBook5,7 76 | PowerBook G4 (17-inch 1.67GHz) 77 | PowerBook5,8 78 | PowerBook G4 (Double layer SD, 15 inch) 79 | PowerBook5,9 80 | PowerBook G4 (Double layer SD, 17 inch) 81 | PowerBook6,1 82 | PowerBook G4 (12 inch) 83 | PowerBook6,2 84 | PowerBook G4 (12 inch, DVI) 85 | PowerBook6,3 86 | iBook G4 87 | PowerBook6,4 88 | PowerBook G4 (12 inch 1.33GHz) 89 | PowerBook6,5 90 | iBook G4 (Early-Late 2004) 91 | PowerBook6,7 92 | iBook G4 (Mid 2005) 93 | PowerBook6,8 94 | PowerBook G4 (12 inch 1.5GHz) 95 | PowerMac1,1 96 | Power Macintosh G3 (Blue & White) 97 | PowerMac1,2 98 | Power Macintosh G4 (PCI Graphics) 99 | PowerMac10,1 100 | Mac Mini G4 101 | PowerMac10,2 102 | Mac Mini (Late 2005) 103 | PowerMac11,2 104 | Power Macintosh G5 (Late 2005) 105 | PowerMac12,1 106 | iMac G5 (iSight) 107 | PowerMac2,1 108 | iMac G3 (Slot-loading CD-ROM) 109 | PowerMac2,2 110 | iMac G3 (Summer 2000) 111 | PowerMac3,1 112 | Power Macintosh G4 (AGP Graphics) 113 | PowerMac3,2 114 | Power Macintosh G4 (AGP Graphics) 115 | PowerMac3,3 116 | Power Macintosh G4 (Gigabit Ethernet) 117 | PowerMac3,4 118 | Power Macintosh G4 (Digital Audio) 119 | PowerMac3,5 120 | Power Macintosh G4 (Quick Silver) 121 | PowerMac3,6 122 | Power Macintosh G4 (Mirrored Drive Door) 123 | PowerMac4,1 124 | iMac G3 (Early/Summer 2001) 125 | PowerMac4,2 126 | iMac G4 (Flat Panel) 127 | PowerMac4,4 128 | eMac 129 | PowerMac4,5 130 | iMac G4 (17-inch Flat Panel) 131 | PowerMac5,1 132 | Power Macintosh G4 Cube 133 | PowerMac6,1 134 | iMac G4 (USB 2.0) 135 | PowerMac6,3 136 | iMac G4 (20-inch Flat Panel) 137 | PowerMac6,4 138 | eMac (USB 2.0, 2005) 139 | PowerMac7,2 140 | Power Macintosh G5 141 | PowerMac7,3 142 | Power Macintosh G5 143 | PowerMac8,1 144 | iMac G5 145 | PowerMac8,2 146 | iMac G5 (Ambient Light Sensor) 147 | PowerMac9,1 148 | Power Macintosh G5 (Late 2005) 149 | RackMac1,1 150 | Xserve G4 151 | RackMac1,2 152 | Xserve G4 (slot-loading, cluster node) 153 | RackMac3,1 154 | Xserve G5 155 | Xserve1,1 156 | Xserve (Intel Xeon) 157 | Xserve2,1 158 | Xserve (January 2008 quad-core) 159 | iMac1,1 160 | iMac G3 (Rev A-D) 161 | iMac4,1 162 | iMac (Core Duo) 163 | iMac4,2 164 | iMac for Education (17-inch, Core Duo) 165 | iMac5,1 166 | iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) 167 | iMac5,2 168 | iMac (Core 2 Duo, 17 inch, Combo Drive) 169 | iMac6,1 170 | iMac (Core 2 Duo, 24 inch, SuperDrive) 171 | iMac8,1 172 | iMac (April 2008) 173 | 174 | 175 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | CLASS 25 | FirstResponder 26 | LANGUAGE 27 | ObjC 28 | SUPERCLASS 29 | NSObject 30 | 31 | 32 | CLASS 33 | NSObject 34 | LANGUAGE 35 | ObjC 36 | 37 | 38 | CLASS 39 | SUStatusController 40 | LANGUAGE 41 | ObjC 42 | OUTLETS 43 | 44 | actionButton 45 | NSButton 46 | progressBar 47 | NSProgressIndicator 48 | 49 | SUPERCLASS 50 | SUWindowController 51 | 52 | 53 | IBVersion 54 | 1 55 | 56 | 57 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 658 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9C7010 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 18 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 41 15 | 16 | IBSystem Version 17 | 10A96 18 | targetFramework 19 | IBCocoaFramework 20 | 21 | 22 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9D34 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj: -------------------------------------------------------------------------------- 1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 5 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | 6 12 | 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/relaunch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/relaunch -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | NSObject 10 | LANGUAGE 11 | ObjC 12 | 13 | 14 | CLASS 15 | SUWindowController 16 | LANGUAGE 17 | ObjC 18 | SUPERCLASS 19 | NSWindowController 20 | 21 | 22 | ACTIONS 23 | 24 | finishPrompt 25 | id 26 | toggleMoreInfo 27 | id 28 | 29 | CLASS 30 | SUUpdatePermissionPrompt 31 | LANGUAGE 32 | ObjC 33 | OUTLETS 34 | 35 | delegate 36 | id 37 | descriptionTextField 38 | NSTextField 39 | moreInfoButton 40 | NSButton 41 | moreInfoView 42 | NSView 43 | 44 | SUPERCLASS 45 | SUWindowController 46 | 47 | 48 | CLASS 49 | FirstResponder 50 | LANGUAGE 51 | ObjC 52 | SUPERCLASS 53 | NSObject 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9E17 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | { 4 | CLASS = FirstResponder; 5 | LANGUAGE = ObjC; 6 | SUPERCLASS = NSObject; 7 | }, 8 | { 9 | CLASS = NSApplication; 10 | LANGUAGE = ObjC; 11 | SUPERCLASS = NSResponder; 12 | }, 13 | { 14 | CLASS = NSObject; 15 | LANGUAGE = ObjC; 16 | }, 17 | { 18 | ACTIONS = { 19 | installUpdate = id; 20 | remindMeLater = id; 21 | skipThisVersion = id; 22 | }; 23 | CLASS = SUUpdateAlert; 24 | LANGUAGE = ObjC; 25 | OUTLETS = { 26 | delegate = id; 27 | description = NSTextField; 28 | releaseNotesView = WebView; 29 | }; 30 | SUPERCLASS = SUWindowController; 31 | }, 32 | { 33 | CLASS = SUWindowController; 34 | LANGUAGE = ObjC; 35 | SUPERCLASS = NSWindowController; 36 | } 37 | ); 38 | IBVersion = 1; 39 | } -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 69 14 356 240 0 0 1280 778 7 | IBFramework Version 8 | 489.0 9 | IBLastKnownRelativeProjectPath 10 | ../Sparkle.xcodeproj 11 | IBOldestOS 12 | 5 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Weixin.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 830D407317AA23A000ECA8A9 /* left.png in Resources */ = {isa = PBXBuildFile; fileRef = 830D407217AA23A000ECA8A9 /* left.png */; }; 11 | 830D407517AA23A800ECA8A9 /* right.png in Resources */ = {isa = PBXBuildFile; fileRef = 830D407417AA23A800ECA8A9 /* right.png */; }; 12 | 832643D317D9CF130080228D /* local.js in Resources */ = {isa = PBXBuildFile; fileRef = 835DE7B517D5E40E00430263 /* local.js */; }; 13 | 8332204217E856F100679DFD /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8332204117E856F100679DFD /* ScriptingBridge.framework */; }; 14 | 835DE7B217D5B4E300430263 /* NSUserDefaults+IntValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 835DE7B117D5B4E300430263 /* NSUserDefaults+IntValue.m */; }; 15 | 835DE7B717D6FE6500430263 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 835DE7B617D6FE6500430263 /* Sparkle.framework */; }; 16 | 83676D8C17A64844008B88EF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 83676D8A17A64844008B88EF /* InfoPlist.strings */; }; 17 | 83676D8E17A64844008B88EF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 83676D8D17A64844008B88EF /* main.m */; }; 18 | 83676D9217A64844008B88EF /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 83676D9017A64844008B88EF /* Credits.rtf */; }; 19 | 83676D9517A64844008B88EF /* AZAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 83676D9417A64844008B88EF /* AZAppDelegate.m */; }; 20 | 83676D9817A64844008B88EF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83676D9617A64844008B88EF /* MainMenu.xib */; }; 21 | 83676DA117A64844008B88EF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83676DA017A64844008B88EF /* XCTest.framework */; }; 22 | 83676DA217A64844008B88EF /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83676D8117A64844008B88EF /* Cocoa.framework */; }; 23 | 83676DAA17A64844008B88EF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 83676DA817A64844008B88EF /* InfoPlist.strings */; }; 24 | 83676DAC17A64844008B88EF /* WeixinTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 83676DAB17A64844008B88EF /* WeixinTests.m */; }; 25 | 83676DB617A65DC5008B88EF /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83676DB517A65DC5008B88EF /* WebKit.framework */; }; 26 | 8371A38C17CDECD8002DC13F /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8371A38B17CDECD8002DC13F /* libxml2.2.dylib */; }; 27 | 8371A38D17CDED0C002DC13F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83676D8117A64844008B88EF /* Cocoa.framework */; }; 28 | 8371A39017CDF5DA002DC13F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8371A38F17CDF5DA002DC13F /* Security.framework */; }; 29 | 8371A39217CF5556002DC13F /* The_Garden_of_Words.bpack in Resources */ = {isa = PBXBuildFile; fileRef = 8371A39117CF5556002DC13F /* The_Garden_of_Words.bpack */; }; 30 | 83845BD117D6FF7C00F1C6F9 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 835DE7B617D6FE6500430263 /* Sparkle.framework */; }; 31 | 83845BD317D7002B00F1C6F9 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 83845BD217D7002B00F1C6F9 /* dsa_pub.pem */; }; 32 | 83A2A31D17DDCD4A004ED36A /* NSImage+File.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A2A31C17DDCD4A004ED36A /* NSImage+File.m */; }; 33 | 83A3A72317D4AC940095426C /* NSButton+Style.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A3A72217D4AC940095426C /* NSButton+Style.m */; }; 34 | 83A84C3C17DABECC00DB04D1 /* AZLocalScript.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A84C3B17DABECC00DB04D1 /* AZLocalScript.m */; }; 35 | 83B7C4421F1F68B100E89418 /* NSString+NSString_decode.m in Sources */ = {isa = PBXBuildFile; fileRef = 83B7C4411F1F68B100E89418 /* NSString+NSString_decode.m */; }; 36 | 83CA8F491F1F26CE00AAD1F4 /* libPods-Weixin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3543EB6FFD6F8B6B13EB88AB /* libPods-Weixin.a */; }; 37 | 83CA8F4C1F1F305E00AAD1F4 /* AZWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83CA8F4B1F1F305E00AAD1F4 /* AZWebView.m */; }; 38 | 83DA673F1805282F008C19C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 83DA673E1805282F008C19C7 /* Images.xcassets */; }; 39 | 83E5562117AA57B800872BD9 /* AZThemeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 832251AE17AA45FE0078694F /* AZThemeManager.m */; }; 40 | /* End PBXBuildFile section */ 41 | 42 | /* Begin PBXContainerItemProxy section */ 43 | 83676DA317A64844008B88EF /* PBXContainerItemProxy */ = { 44 | isa = PBXContainerItemProxy; 45 | containerPortal = 83676D7617A64844008B88EF /* Project object */; 46 | proxyType = 1; 47 | remoteGlobalIDString = 83676D7D17A64844008B88EF; 48 | remoteInfo = Weixin; 49 | }; 50 | /* End PBXContainerItemProxy section */ 51 | 52 | /* Begin PBXCopyFilesBuildPhase section */ 53 | 83845BD017D6FF6B00F1C6F9 /* CopyFiles */ = { 54 | isa = PBXCopyFilesBuildPhase; 55 | buildActionMask = 2147483647; 56 | dstPath = ""; 57 | dstSubfolderSpec = 10; 58 | files = ( 59 | 83845BD117D6FF7C00F1C6F9 /* Sparkle.framework in CopyFiles */, 60 | ); 61 | runOnlyForDeploymentPostprocessing = 0; 62 | }; 63 | /* End PBXCopyFilesBuildPhase section */ 64 | 65 | /* Begin PBXFileReference section */ 66 | 3543EB6FFD6F8B6B13EB88AB /* libPods-Weixin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Weixin.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 67 | 65EA4306CFD2E34F7EDA2873 /* Pods-Weixin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Weixin.release.xcconfig"; path = "Pods/Target Support Files/Pods-Weixin/Pods-Weixin.release.xcconfig"; sourceTree = ""; }; 68 | 76BEA0E3850704B864BB55BB /* Pods-Weixin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Weixin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Weixin/Pods-Weixin.debug.xcconfig"; sourceTree = ""; }; 69 | 7863336A41414C69A30CF151 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; 70 | 830D407217AA23A000ECA8A9 /* left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left.png; sourceTree = ""; }; 71 | 830D407417AA23A800ECA8A9 /* right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right.png; sourceTree = ""; }; 72 | 8315748017A8C99500EB5CE0 /* iTunes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunes.h; sourceTree = SOURCE_ROOT; }; 73 | 832251AD17AA45FE0078694F /* AZThemeManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AZThemeManager.h; path = ../AZThemeManager.h; sourceTree = ""; }; 74 | 832251AE17AA45FE0078694F /* AZThemeManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AZThemeManager.m; path = ../AZThemeManager.m; sourceTree = ""; }; 75 | 8332204117E856F100679DFD /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = System/Library/Frameworks/ScriptingBridge.framework; sourceTree = SDKROOT; }; 76 | 835DE7B017D5B4E300430263 /* NSUserDefaults+IntValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+IntValue.h"; path = "Category/NSUserDefaults+IntValue.h"; sourceTree = ""; }; 77 | 835DE7B117D5B4E300430263 /* NSUserDefaults+IntValue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSUserDefaults+IntValue.m"; path = "Category/NSUserDefaults+IntValue.m"; sourceTree = ""; }; 78 | 835DE7B317D5D08A00430263 /* Cats.bpack */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Cats.bpack; sourceTree = ""; }; 79 | 835DE7B517D5E40E00430263 /* local.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = local.js; sourceTree = ""; }; 80 | 835DE7B617D6FE6500430263 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; 81 | 83676D7E17A64844008B88EF /* Weixin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Weixin.app; sourceTree = BUILT_PRODUCTS_DIR; }; 82 | 83676D8117A64844008B88EF /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 83 | 83676D8417A64844008B88EF /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 84 | 83676D8517A64844008B88EF /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 85 | 83676D8617A64844008B88EF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 86 | 83676D8917A64844008B88EF /* Weixin-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Weixin-Info.plist"; sourceTree = ""; }; 87 | 83676D8B17A64844008B88EF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 88 | 83676D8D17A64844008B88EF /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 89 | 83676D8F17A64844008B88EF /* Weixin-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Weixin-Prefix.pch"; sourceTree = ""; }; 90 | 83676D9117A64844008B88EF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 91 | 83676D9317A64844008B88EF /* AZAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AZAppDelegate.h; sourceTree = ""; }; 92 | 83676D9417A64844008B88EF /* AZAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AZAppDelegate.m; sourceTree = ""; }; 93 | 83676D9717A64844008B88EF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 94 | 83676D9F17A64844008B88EF /* WeixinTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WeixinTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 95 | 83676DA017A64844008B88EF /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; 96 | 83676DA717A64844008B88EF /* WeixinTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "WeixinTests-Info.plist"; sourceTree = ""; }; 97 | 83676DA917A64844008B88EF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 98 | 83676DAB17A64844008B88EF /* WeixinTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WeixinTests.m; sourceTree = ""; }; 99 | 83676DB517A65DC5008B88EF /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 100 | 8371A38B17CDECD8002DC13F /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = usr/lib/libxml2.2.dylib; sourceTree = SDKROOT; }; 101 | 8371A38F17CDF5DA002DC13F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 102 | 8371A39117CF5556002DC13F /* The_Garden_of_Words.bpack */ = {isa = PBXFileReference; lastKnownFileType = folder; path = The_Garden_of_Words.bpack; sourceTree = ""; }; 103 | 83845BD217D7002B00F1C6F9 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; }; 104 | 83A2A31B17DDCD4A004ED36A /* NSImage+File.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSImage+File.h"; path = "Category/NSImage+File.h"; sourceTree = ""; }; 105 | 83A2A31C17DDCD4A004ED36A /* NSImage+File.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSImage+File.m"; path = "Category/NSImage+File.m"; sourceTree = ""; }; 106 | 83A3A72117D4AC940095426C /* NSButton+Style.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSButton+Style.h"; path = "Category/NSButton+Style.h"; sourceTree = ""; }; 107 | 83A3A72217D4AC940095426C /* NSButton+Style.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSButton+Style.m"; path = "Category/NSButton+Style.m"; sourceTree = ""; }; 108 | 83A84C3A17DABECC00DB04D1 /* AZLocalScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AZLocalScript.h; sourceTree = ""; }; 109 | 83A84C3B17DABECC00DB04D1 /* AZLocalScript.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AZLocalScript.m; sourceTree = ""; }; 110 | 83B7C4401F1F68B100E89418 /* NSString+NSString_decode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+NSString_decode.h"; sourceTree = ""; }; 111 | 83B7C4411F1F68B100E89418 /* NSString+NSString_decode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+NSString_decode.m"; sourceTree = ""; }; 112 | 83CA8F4A1F1F305E00AAD1F4 /* AZWebView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AZWebView.h; sourceTree = ""; }; 113 | 83CA8F4B1F1F305E00AAD1F4 /* AZWebView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AZWebView.m; sourceTree = ""; }; 114 | 83DA673E1805282F008C19C7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 115 | 83EB85E017B3744C00B2574D /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; }; 116 | /* End PBXFileReference section */ 117 | 118 | /* Begin PBXFrameworksBuildPhase section */ 119 | 83676D7B17A64844008B88EF /* Frameworks */ = { 120 | isa = PBXFrameworksBuildPhase; 121 | buildActionMask = 2147483647; 122 | files = ( 123 | 83CA8F491F1F26CE00AAD1F4 /* libPods-Weixin.a in Frameworks */, 124 | 8332204217E856F100679DFD /* ScriptingBridge.framework in Frameworks */, 125 | 8371A39017CDF5DA002DC13F /* Security.framework in Frameworks */, 126 | 8371A38D17CDED0C002DC13F /* Cocoa.framework in Frameworks */, 127 | 835DE7B717D6FE6500430263 /* Sparkle.framework in Frameworks */, 128 | 8371A38C17CDECD8002DC13F /* libxml2.2.dylib in Frameworks */, 129 | 83676DB617A65DC5008B88EF /* WebKit.framework in Frameworks */, 130 | ); 131 | runOnlyForDeploymentPostprocessing = 0; 132 | }; 133 | 83676D9C17A64844008B88EF /* Frameworks */ = { 134 | isa = PBXFrameworksBuildPhase; 135 | buildActionMask = 2147483647; 136 | files = ( 137 | 83676DA217A64844008B88EF /* Cocoa.framework in Frameworks */, 138 | 83676DA117A64844008B88EF /* XCTest.framework in Frameworks */, 139 | ); 140 | runOnlyForDeploymentPostprocessing = 0; 141 | }; 142 | /* End PBXFrameworksBuildPhase section */ 143 | 144 | /* Begin PBXGroup section */ 145 | 83676D7517A64844008B88EF = { 146 | isa = PBXGroup; 147 | children = ( 148 | 83676D8717A64844008B88EF /* Weixin */, 149 | 83676DA517A64844008B88EF /* WeixinTests */, 150 | 83676D8017A64844008B88EF /* Frameworks */, 151 | 83676D7F17A64844008B88EF /* Products */, 152 | CDB610CBF25FF7D81BAB4C30 /* Pods */, 153 | ); 154 | sourceTree = ""; 155 | }; 156 | 83676D7F17A64844008B88EF /* Products */ = { 157 | isa = PBXGroup; 158 | children = ( 159 | 83676D7E17A64844008B88EF /* Weixin.app */, 160 | 83676D9F17A64844008B88EF /* WeixinTests.xctest */, 161 | ); 162 | name = Products; 163 | sourceTree = ""; 164 | }; 165 | 83676D8017A64844008B88EF /* Frameworks */ = { 166 | isa = PBXGroup; 167 | children = ( 168 | 8332204117E856F100679DFD /* ScriptingBridge.framework */, 169 | 835DE7B617D6FE6500430263 /* Sparkle.framework */, 170 | 8371A38F17CDF5DA002DC13F /* Security.framework */, 171 | 8371A38B17CDECD8002DC13F /* libxml2.2.dylib */, 172 | 83EB85E017B3744C00B2574D /* libxml2.dylib */, 173 | 83676DB517A65DC5008B88EF /* WebKit.framework */, 174 | 83676D8117A64844008B88EF /* Cocoa.framework */, 175 | 83676DA017A64844008B88EF /* XCTest.framework */, 176 | 83676D8317A64844008B88EF /* Other Frameworks */, 177 | 7863336A41414C69A30CF151 /* libPods.a */, 178 | 3543EB6FFD6F8B6B13EB88AB /* libPods-Weixin.a */, 179 | ); 180 | name = Frameworks; 181 | sourceTree = ""; 182 | }; 183 | 83676D8317A64844008B88EF /* Other Frameworks */ = { 184 | isa = PBXGroup; 185 | children = ( 186 | 83676D8417A64844008B88EF /* AppKit.framework */, 187 | 83676D8517A64844008B88EF /* CoreData.framework */, 188 | 83676D8617A64844008B88EF /* Foundation.framework */, 189 | ); 190 | name = "Other Frameworks"; 191 | sourceTree = ""; 192 | }; 193 | 83676D8717A64844008B88EF /* Weixin */ = { 194 | isa = PBXGroup; 195 | children = ( 196 | 83A3A72017D4AC5F0095426C /* Category */, 197 | 832251AD17AA45FE0078694F /* AZThemeManager.h */, 198 | 83A84C3A17DABECC00DB04D1 /* AZLocalScript.h */, 199 | 83A84C3B17DABECC00DB04D1 /* AZLocalScript.m */, 200 | 832251AE17AA45FE0078694F /* AZThemeManager.m */, 201 | 83676D9317A64844008B88EF /* AZAppDelegate.h */, 202 | 83676D9417A64844008B88EF /* AZAppDelegate.m */, 203 | 83676D9617A64844008B88EF /* MainMenu.xib */, 204 | 8315748017A8C99500EB5CE0 /* iTunes.h */, 205 | 830D407217AA23A000ECA8A9 /* left.png */, 206 | 830D407417AA23A800ECA8A9 /* right.png */, 207 | 83DA673E1805282F008C19C7 /* Images.xcassets */, 208 | 83676D8817A64844008B88EF /* Supporting Files */, 209 | 83CA8F4A1F1F305E00AAD1F4 /* AZWebView.h */, 210 | 83CA8F4B1F1F305E00AAD1F4 /* AZWebView.m */, 211 | ); 212 | path = Weixin; 213 | sourceTree = ""; 214 | }; 215 | 83676D8817A64844008B88EF /* Supporting Files */ = { 216 | isa = PBXGroup; 217 | children = ( 218 | 83845BD217D7002B00F1C6F9 /* dsa_pub.pem */, 219 | 835DE7B317D5D08A00430263 /* Cats.bpack */, 220 | 8371A39117CF5556002DC13F /* The_Garden_of_Words.bpack */, 221 | 83676D8917A64844008B88EF /* Weixin-Info.plist */, 222 | 83676D8A17A64844008B88EF /* InfoPlist.strings */, 223 | 83676D8D17A64844008B88EF /* main.m */, 224 | 83676D8F17A64844008B88EF /* Weixin-Prefix.pch */, 225 | 83676D9017A64844008B88EF /* Credits.rtf */, 226 | 835DE7B517D5E40E00430263 /* local.js */, 227 | ); 228 | name = "Supporting Files"; 229 | sourceTree = ""; 230 | }; 231 | 83676DA517A64844008B88EF /* WeixinTests */ = { 232 | isa = PBXGroup; 233 | children = ( 234 | 83676DAB17A64844008B88EF /* WeixinTests.m */, 235 | 83676DA617A64844008B88EF /* Supporting Files */, 236 | ); 237 | path = WeixinTests; 238 | sourceTree = ""; 239 | }; 240 | 83676DA617A64844008B88EF /* Supporting Files */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | 83676DA717A64844008B88EF /* WeixinTests-Info.plist */, 244 | 83676DA817A64844008B88EF /* InfoPlist.strings */, 245 | ); 246 | name = "Supporting Files"; 247 | sourceTree = ""; 248 | }; 249 | 83A3A72017D4AC5F0095426C /* Category */ = { 250 | isa = PBXGroup; 251 | children = ( 252 | 83A3A72117D4AC940095426C /* NSButton+Style.h */, 253 | 83A3A72217D4AC940095426C /* NSButton+Style.m */, 254 | 835DE7B017D5B4E300430263 /* NSUserDefaults+IntValue.h */, 255 | 835DE7B117D5B4E300430263 /* NSUserDefaults+IntValue.m */, 256 | 83A2A31B17DDCD4A004ED36A /* NSImage+File.h */, 257 | 83A2A31C17DDCD4A004ED36A /* NSImage+File.m */, 258 | 83B7C4401F1F68B100E89418 /* NSString+NSString_decode.h */, 259 | 83B7C4411F1F68B100E89418 /* NSString+NSString_decode.m */, 260 | ); 261 | name = Category; 262 | sourceTree = ""; 263 | }; 264 | CDB610CBF25FF7D81BAB4C30 /* Pods */ = { 265 | isa = PBXGroup; 266 | children = ( 267 | 76BEA0E3850704B864BB55BB /* Pods-Weixin.debug.xcconfig */, 268 | 65EA4306CFD2E34F7EDA2873 /* Pods-Weixin.release.xcconfig */, 269 | ); 270 | name = Pods; 271 | sourceTree = ""; 272 | }; 273 | /* End PBXGroup section */ 274 | 275 | /* Begin PBXNativeTarget section */ 276 | 83676D7D17A64844008B88EF /* Weixin */ = { 277 | isa = PBXNativeTarget; 278 | buildConfigurationList = 83676DAF17A64844008B88EF /* Build configuration list for PBXNativeTarget "Weixin" */; 279 | buildPhases = ( 280 | 720DBC025B55431E90B264B2 /* [CP] Check Pods Manifest.lock */, 281 | 83676D7A17A64844008B88EF /* Sources */, 282 | 83676D7B17A64844008B88EF /* Frameworks */, 283 | 83676D7C17A64844008B88EF /* Resources */, 284 | 83845BD017D6FF6B00F1C6F9 /* CopyFiles */, 285 | D07CC76E2CE7458F87E223FF /* [CP] Copy Pods Resources */, 286 | 9CD9EEB7688F0468B99FDC1E /* [CP] Embed Pods Frameworks */, 287 | ); 288 | buildRules = ( 289 | ); 290 | dependencies = ( 291 | ); 292 | name = Weixin; 293 | productName = Weixin; 294 | productReference = 83676D7E17A64844008B88EF /* Weixin.app */; 295 | productType = "com.apple.product-type.application"; 296 | }; 297 | 83676D9E17A64844008B88EF /* WeixinTests */ = { 298 | isa = PBXNativeTarget; 299 | buildConfigurationList = 83676DB217A64844008B88EF /* Build configuration list for PBXNativeTarget "WeixinTests" */; 300 | buildPhases = ( 301 | 83676D9B17A64844008B88EF /* Sources */, 302 | 83676D9C17A64844008B88EF /* Frameworks */, 303 | 83676D9D17A64844008B88EF /* Resources */, 304 | ); 305 | buildRules = ( 306 | ); 307 | dependencies = ( 308 | 83676DA417A64844008B88EF /* PBXTargetDependency */, 309 | ); 310 | name = WeixinTests; 311 | productName = WeixinTests; 312 | productReference = 83676D9F17A64844008B88EF /* WeixinTests.xctest */; 313 | productType = "com.apple.product-type.bundle.unit-test"; 314 | }; 315 | /* End PBXNativeTarget section */ 316 | 317 | /* Begin PBXProject section */ 318 | 83676D7617A64844008B88EF /* Project object */ = { 319 | isa = PBXProject; 320 | attributes = { 321 | CLASSPREFIX = AZ; 322 | LastUpgradeCheck = 0500; 323 | ORGANIZATIONNAME = iAladdin; 324 | TargetAttributes = { 325 | 83676D9E17A64844008B88EF = { 326 | TestTargetID = 83676D7D17A64844008B88EF; 327 | }; 328 | }; 329 | }; 330 | buildConfigurationList = 83676D7917A64844008B88EF /* Build configuration list for PBXProject "Weixin" */; 331 | compatibilityVersion = "Xcode 3.2"; 332 | developmentRegion = English; 333 | hasScannedForEncodings = 0; 334 | knownRegions = ( 335 | en, 336 | Base, 337 | English, 338 | ); 339 | mainGroup = 83676D7517A64844008B88EF; 340 | productRefGroup = 83676D7F17A64844008B88EF /* Products */; 341 | projectDirPath = ""; 342 | projectRoot = ""; 343 | targets = ( 344 | 83676D7D17A64844008B88EF /* Weixin */, 345 | 83676D9E17A64844008B88EF /* WeixinTests */, 346 | ); 347 | }; 348 | /* End PBXProject section */ 349 | 350 | /* Begin PBXResourcesBuildPhase section */ 351 | 83676D7C17A64844008B88EF /* Resources */ = { 352 | isa = PBXResourcesBuildPhase; 353 | buildActionMask = 2147483647; 354 | files = ( 355 | 832643D317D9CF130080228D /* local.js in Resources */, 356 | 830D407517AA23A800ECA8A9 /* right.png in Resources */, 357 | 83845BD317D7002B00F1C6F9 /* dsa_pub.pem in Resources */, 358 | 83DA673F1805282F008C19C7 /* Images.xcassets in Resources */, 359 | 83676D8C17A64844008B88EF /* InfoPlist.strings in Resources */, 360 | 830D407317AA23A000ECA8A9 /* left.png in Resources */, 361 | 8371A39217CF5556002DC13F /* The_Garden_of_Words.bpack in Resources */, 362 | 83676D9217A64844008B88EF /* Credits.rtf in Resources */, 363 | 83676D9817A64844008B88EF /* MainMenu.xib in Resources */, 364 | ); 365 | runOnlyForDeploymentPostprocessing = 0; 366 | }; 367 | 83676D9D17A64844008B88EF /* Resources */ = { 368 | isa = PBXResourcesBuildPhase; 369 | buildActionMask = 2147483647; 370 | files = ( 371 | 83676DAA17A64844008B88EF /* InfoPlist.strings in Resources */, 372 | ); 373 | runOnlyForDeploymentPostprocessing = 0; 374 | }; 375 | /* End PBXResourcesBuildPhase section */ 376 | 377 | /* Begin PBXShellScriptBuildPhase section */ 378 | 720DBC025B55431E90B264B2 /* [CP] Check Pods Manifest.lock */ = { 379 | isa = PBXShellScriptBuildPhase; 380 | buildActionMask = 2147483647; 381 | files = ( 382 | ); 383 | inputPaths = ( 384 | ); 385 | name = "[CP] Check Pods Manifest.lock"; 386 | outputPaths = ( 387 | ); 388 | runOnlyForDeploymentPostprocessing = 0; 389 | shellPath = /bin/sh; 390 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; 391 | showEnvVarsInLog = 0; 392 | }; 393 | 9CD9EEB7688F0468B99FDC1E /* [CP] Embed Pods Frameworks */ = { 394 | isa = PBXShellScriptBuildPhase; 395 | buildActionMask = 2147483647; 396 | files = ( 397 | ); 398 | inputPaths = ( 399 | ); 400 | name = "[CP] Embed Pods Frameworks"; 401 | outputPaths = ( 402 | ); 403 | runOnlyForDeploymentPostprocessing = 0; 404 | shellPath = /bin/sh; 405 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Weixin/Pods-Weixin-frameworks.sh\"\n"; 406 | showEnvVarsInLog = 0; 407 | }; 408 | D07CC76E2CE7458F87E223FF /* [CP] Copy Pods Resources */ = { 409 | isa = PBXShellScriptBuildPhase; 410 | buildActionMask = 2147483647; 411 | files = ( 412 | ); 413 | inputPaths = ( 414 | ); 415 | name = "[CP] Copy Pods Resources"; 416 | outputPaths = ( 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | shellPath = /bin/sh; 420 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Weixin/Pods-Weixin-resources.sh\"\n"; 421 | showEnvVarsInLog = 0; 422 | }; 423 | /* End PBXShellScriptBuildPhase section */ 424 | 425 | /* Begin PBXSourcesBuildPhase section */ 426 | 83676D7A17A64844008B88EF /* Sources */ = { 427 | isa = PBXSourcesBuildPhase; 428 | buildActionMask = 2147483647; 429 | files = ( 430 | 83A2A31D17DDCD4A004ED36A /* NSImage+File.m in Sources */, 431 | 83E5562117AA57B800872BD9 /* AZThemeManager.m in Sources */, 432 | 83CA8F4C1F1F305E00AAD1F4 /* AZWebView.m in Sources */, 433 | 83A84C3C17DABECC00DB04D1 /* AZLocalScript.m in Sources */, 434 | 83B7C4421F1F68B100E89418 /* NSString+NSString_decode.m in Sources */, 435 | 83676D8E17A64844008B88EF /* main.m in Sources */, 436 | 83676D9517A64844008B88EF /* AZAppDelegate.m in Sources */, 437 | 835DE7B217D5B4E300430263 /* NSUserDefaults+IntValue.m in Sources */, 438 | 83A3A72317D4AC940095426C /* NSButton+Style.m in Sources */, 439 | ); 440 | runOnlyForDeploymentPostprocessing = 0; 441 | }; 442 | 83676D9B17A64844008B88EF /* Sources */ = { 443 | isa = PBXSourcesBuildPhase; 444 | buildActionMask = 2147483647; 445 | files = ( 446 | 83676DAC17A64844008B88EF /* WeixinTests.m in Sources */, 447 | ); 448 | runOnlyForDeploymentPostprocessing = 0; 449 | }; 450 | /* End PBXSourcesBuildPhase section */ 451 | 452 | /* Begin PBXTargetDependency section */ 453 | 83676DA417A64844008B88EF /* PBXTargetDependency */ = { 454 | isa = PBXTargetDependency; 455 | target = 83676D7D17A64844008B88EF /* Weixin */; 456 | targetProxy = 83676DA317A64844008B88EF /* PBXContainerItemProxy */; 457 | }; 458 | /* End PBXTargetDependency section */ 459 | 460 | /* Begin PBXVariantGroup section */ 461 | 83676D8A17A64844008B88EF /* InfoPlist.strings */ = { 462 | isa = PBXVariantGroup; 463 | children = ( 464 | 83676D8B17A64844008B88EF /* en */, 465 | ); 466 | name = InfoPlist.strings; 467 | sourceTree = ""; 468 | }; 469 | 83676D9017A64844008B88EF /* Credits.rtf */ = { 470 | isa = PBXVariantGroup; 471 | children = ( 472 | 83676D9117A64844008B88EF /* en */, 473 | ); 474 | name = Credits.rtf; 475 | sourceTree = ""; 476 | }; 477 | 83676D9617A64844008B88EF /* MainMenu.xib */ = { 478 | isa = PBXVariantGroup; 479 | children = ( 480 | 83676D9717A64844008B88EF /* Base */, 481 | ); 482 | name = MainMenu.xib; 483 | sourceTree = ""; 484 | }; 485 | 83676DA817A64844008B88EF /* InfoPlist.strings */ = { 486 | isa = PBXVariantGroup; 487 | children = ( 488 | 83676DA917A64844008B88EF /* en */, 489 | ); 490 | name = InfoPlist.strings; 491 | sourceTree = ""; 492 | }; 493 | /* End PBXVariantGroup section */ 494 | 495 | /* Begin XCBuildConfiguration section */ 496 | 83676DAD17A64844008B88EF /* Debug */ = { 497 | isa = XCBuildConfiguration; 498 | buildSettings = { 499 | ALWAYS_SEARCH_USER_PATHS = NO; 500 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 501 | CLANG_CXX_LIBRARY = "libc++"; 502 | CLANG_ENABLE_MODULES = YES; 503 | CLANG_ENABLE_OBJC_ARC = YES; 504 | CLANG_WARN_BOOL_CONVERSION = YES; 505 | CLANG_WARN_CONSTANT_CONVERSION = YES; 506 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 507 | CLANG_WARN_EMPTY_BODY = YES; 508 | CLANG_WARN_ENUM_CONVERSION = YES; 509 | CLANG_WARN_INT_CONVERSION = YES; 510 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 511 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 512 | COPY_PHASE_STRIP = NO; 513 | GCC_C_LANGUAGE_STANDARD = gnu99; 514 | GCC_DYNAMIC_NO_PIC = NO; 515 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 516 | GCC_OPTIMIZATION_LEVEL = 0; 517 | GCC_PREPROCESSOR_DEFINITIONS = ( 518 | "DEBUG=1", 519 | "$(inherited)", 520 | ); 521 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 522 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 523 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 524 | GCC_WARN_UNDECLARED_SELECTOR = YES; 525 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 526 | GCC_WARN_UNUSED_FUNCTION = YES; 527 | GCC_WARN_UNUSED_VARIABLE = YES; 528 | MACOSX_DEPLOYMENT_TARGET = 10.9; 529 | ONLY_ACTIVE_ARCH = YES; 530 | SDKROOT = macosx; 531 | }; 532 | name = Debug; 533 | }; 534 | 83676DAE17A64844008B88EF /* Release */ = { 535 | isa = XCBuildConfiguration; 536 | buildSettings = { 537 | ALWAYS_SEARCH_USER_PATHS = NO; 538 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 539 | CLANG_CXX_LIBRARY = "libc++"; 540 | CLANG_ENABLE_MODULES = YES; 541 | CLANG_ENABLE_OBJC_ARC = YES; 542 | CLANG_WARN_BOOL_CONVERSION = YES; 543 | CLANG_WARN_CONSTANT_CONVERSION = YES; 544 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 545 | CLANG_WARN_EMPTY_BODY = YES; 546 | CLANG_WARN_ENUM_CONVERSION = YES; 547 | CLANG_WARN_INT_CONVERSION = YES; 548 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 549 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 550 | COPY_PHASE_STRIP = YES; 551 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 552 | ENABLE_NS_ASSERTIONS = NO; 553 | GCC_C_LANGUAGE_STANDARD = gnu99; 554 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 555 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 556 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 557 | GCC_WARN_UNDECLARED_SELECTOR = YES; 558 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 559 | GCC_WARN_UNUSED_FUNCTION = YES; 560 | GCC_WARN_UNUSED_VARIABLE = YES; 561 | MACOSX_DEPLOYMENT_TARGET = 10.9; 562 | SDKROOT = macosx; 563 | }; 564 | name = Release; 565 | }; 566 | 83676DB017A64844008B88EF /* Debug */ = { 567 | isa = XCBuildConfiguration; 568 | baseConfigurationReference = 76BEA0E3850704B864BB55BB /* Pods-Weixin.debug.xcconfig */; 569 | buildSettings = { 570 | ALWAYS_SEARCH_USER_PATHS = YES; 571 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 572 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 573 | COMBINE_HIDPI_IMAGES = YES; 574 | FRAMEWORK_SEARCH_PATHS = ( 575 | "$(inherited)", 576 | "$(SRCROOT)", 577 | ); 578 | GCC_NO_COMMON_BLOCKS = NO; 579 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 580 | GCC_PREFIX_HEADER = "Weixin/Weixin-Prefix.pch"; 581 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 582 | HEADER_SEARCH_PATHS = ( 583 | "$(SDKROOT)/usr/include/libxml2", 584 | "$(inherited)", 585 | ); 586 | INFOPLIST_FILE = "Weixin/Weixin-Info.plist"; 587 | MACOSX_DEPLOYMENT_TARGET = 10.9; 588 | OTHER_LDFLAGS = ( 589 | "$(inherited)", 590 | "-l\"CocoaAsyncSocket\"", 591 | "-l\"CocoaHTTPServer\"", 592 | "-l\"CocoaLumberjack\"", 593 | "-l\"MASShortcut\"", 594 | "-l\"xml2\"", 595 | "-framework", 596 | "\"Carbon\"", 597 | "-framework", 598 | "\"CoreServices\"", 599 | "-framework", 600 | "\"Security\"", 601 | ); 602 | PRODUCT_NAME = "$(TARGET_NAME)"; 603 | WRAPPER_EXTENSION = app; 604 | }; 605 | name = Debug; 606 | }; 607 | 83676DB117A64844008B88EF /* Release */ = { 608 | isa = XCBuildConfiguration; 609 | baseConfigurationReference = 65EA4306CFD2E34F7EDA2873 /* Pods-Weixin.release.xcconfig */; 610 | buildSettings = { 611 | ALWAYS_SEARCH_USER_PATHS = YES; 612 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 613 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 614 | COMBINE_HIDPI_IMAGES = YES; 615 | FRAMEWORK_SEARCH_PATHS = ( 616 | "$(inherited)", 617 | "$(SRCROOT)", 618 | ); 619 | GCC_NO_COMMON_BLOCKS = NO; 620 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 621 | GCC_PREFIX_HEADER = "Weixin/Weixin-Prefix.pch"; 622 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 623 | HEADER_SEARCH_PATHS = ( 624 | "$(SDKROOT)/usr/include/libxml2", 625 | "$(inherited)", 626 | ); 627 | INFOPLIST_FILE = "Weixin/Weixin-Info.plist"; 628 | MACOSX_DEPLOYMENT_TARGET = 10.9; 629 | OTHER_LDFLAGS = ( 630 | "$(inherited)", 631 | "-l\"CocoaAsyncSocket\"", 632 | "-l\"CocoaHTTPServer\"", 633 | "-l\"CocoaLumberjack\"", 634 | "-l\"MASShortcut\"", 635 | "-l\"xml2\"", 636 | "-framework", 637 | "\"Carbon\"", 638 | "-framework", 639 | "\"CoreServices\"", 640 | "-framework", 641 | "\"Security\"", 642 | ); 643 | PRODUCT_NAME = "$(TARGET_NAME)"; 644 | WRAPPER_EXTENSION = app; 645 | }; 646 | name = Release; 647 | }; 648 | 83676DB317A64844008B88EF /* Debug */ = { 649 | isa = XCBuildConfiguration; 650 | buildSettings = { 651 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Weixin.app/Contents/MacOS/Weixin"; 652 | COMBINE_HIDPI_IMAGES = YES; 653 | FRAMEWORK_SEARCH_PATHS = ( 654 | "$(DEVELOPER_FRAMEWORKS_DIR)", 655 | "$(inherited)", 656 | ); 657 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 658 | GCC_PREFIX_HEADER = "Weixin/Weixin-Prefix.pch"; 659 | GCC_PREPROCESSOR_DEFINITIONS = ( 660 | "DEBUG=1", 661 | "$(inherited)", 662 | ); 663 | INFOPLIST_FILE = "WeixinTests/WeixinTests-Info.plist"; 664 | PRODUCT_NAME = "$(TARGET_NAME)"; 665 | TEST_HOST = "$(BUNDLE_LOADER)"; 666 | WRAPPER_EXTENSION = xctest; 667 | }; 668 | name = Debug; 669 | }; 670 | 83676DB417A64844008B88EF /* Release */ = { 671 | isa = XCBuildConfiguration; 672 | buildSettings = { 673 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Weixin.app/Contents/MacOS/Weixin"; 674 | COMBINE_HIDPI_IMAGES = YES; 675 | FRAMEWORK_SEARCH_PATHS = ( 676 | "$(DEVELOPER_FRAMEWORKS_DIR)", 677 | "$(inherited)", 678 | ); 679 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 680 | GCC_PREFIX_HEADER = "Weixin/Weixin-Prefix.pch"; 681 | INFOPLIST_FILE = "WeixinTests/WeixinTests-Info.plist"; 682 | PRODUCT_NAME = "$(TARGET_NAME)"; 683 | TEST_HOST = "$(BUNDLE_LOADER)"; 684 | WRAPPER_EXTENSION = xctest; 685 | }; 686 | name = Release; 687 | }; 688 | /* End XCBuildConfiguration section */ 689 | 690 | /* Begin XCConfigurationList section */ 691 | 83676D7917A64844008B88EF /* Build configuration list for PBXProject "Weixin" */ = { 692 | isa = XCConfigurationList; 693 | buildConfigurations = ( 694 | 83676DAD17A64844008B88EF /* Debug */, 695 | 83676DAE17A64844008B88EF /* Release */, 696 | ); 697 | defaultConfigurationIsVisible = 0; 698 | defaultConfigurationName = Release; 699 | }; 700 | 83676DAF17A64844008B88EF /* Build configuration list for PBXNativeTarget "Weixin" */ = { 701 | isa = XCConfigurationList; 702 | buildConfigurations = ( 703 | 83676DB017A64844008B88EF /* Debug */, 704 | 83676DB117A64844008B88EF /* Release */, 705 | ); 706 | defaultConfigurationIsVisible = 0; 707 | defaultConfigurationName = Release; 708 | }; 709 | 83676DB217A64844008B88EF /* Build configuration list for PBXNativeTarget "WeixinTests" */ = { 710 | isa = XCConfigurationList; 711 | buildConfigurations = ( 712 | 83676DB317A64844008B88EF /* Debug */, 713 | 83676DB417A64844008B88EF /* Release */, 714 | ); 715 | defaultConfigurationIsVisible = 0; 716 | defaultConfigurationName = Release; 717 | }; 718 | /* End XCConfigurationList section */ 719 | }; 720 | rootObject = 83676D7617A64844008B88EF /* Project object */; 721 | } 722 | -------------------------------------------------------------------------------- /Weixin.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Weixin.xcodeproj/xcuserdata/aladdin.xcuserdatad/xcschemes/Weixin.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 62 | 68 | 69 | 70 | 71 | 72 | 73 | 79 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /Weixin.xcodeproj/xcuserdata/aladdin.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Weixin.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 83676D7D17A64844008B88EF 16 | 17 | primary 18 | 19 | 20 | 83676D9E17A64844008B88EF 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Weixin/AZAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AZAppDelegate.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 7/29/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "AZWebView.h" 12 | @interface AZAppDelegate : NSObject { 13 | NSPanel * _imagePanel; 14 | } 15 | 16 | @property (assign) IBOutlet NSWindow *window; 17 | @property (weak) IBOutlet AZWebView *webView; 18 | @property (weak) IBOutlet NSView *toolBar; 19 | //@property (weak) IBOutlet NSButton *sponsor; 20 | //@property (weak) IBOutlet NSButton *donate; 21 | @property (assign) BOOL hasNew; 22 | 23 | - (void)changeBackground:(WebView *)sender; 24 | - (IBAction)shareCurrentMusic:(id)sender; 25 | - (IBAction)donateToAladdin:(id)sender; 26 | - (IBAction)nextBackground:(id)sender; 27 | - (IBAction)lastBackground:(id)sender; 28 | - (IBAction)reloadWX:(id)sender; 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Weixin/AZAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AZAppDelegate.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 7/29/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "AZAppDelegate.h" 10 | #import 11 | #import 12 | #import "AZWebView.h" 13 | #import "iTunes.h" 14 | #import "AZThemeManager.h" 15 | #import "NSButton+Style.h" 16 | #import "AZLocalScript.h" 17 | #import "NSString+NSString_decode.h" 18 | @implementation AZAppDelegate 19 | 20 | 21 | 22 | - (IBAction)shareCurrentMusic:(id)sender{ 23 | iTunesApplication *itunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; 24 | // 25 | NSString * jsString = [NSString stringWithFormat:@"$(\"textarea#textInput\").val(\"%@\");$(\"a.chatSend\").click()",[[itunes currentTrack] name]]; 26 | [self.webView stringByEvaluatingJavaScriptFromString:jsString]; 27 | } 28 | - (IBAction)nextBackground:(id)sender{ 29 | [[AZThemeManager sharedManager] actionToNext]; 30 | [self changeBackground:self.webView]; 31 | } 32 | - (IBAction)lastBackground:(id)sender{ 33 | [[AZThemeManager sharedManager] actionToLast]; 34 | [self changeBackground:self.webView]; 35 | } 36 | 37 | - (IBAction)donateToAladdin:(id)sender{ 38 | 39 | NSBeginAlertSheet(@"赞助作者一点猫粮吧?", 40 | @"好,去捐赠!", 41 | nil, 42 | @"不够好,算了", 43 | self.window, 44 | self, 45 | @selector(sheetDidEnd:returnCode:contextInfo:), 46 | @selector(sheetDidDismiss:returnCode:contextInfo:), 47 | (__bridge void *)(sender), 48 | @"虽然这个App很简单,但还是考虑赞助给Aladdin和他的12只猫猫吧!如有建议和bug请联系微信号:Aladdin"); 49 | } 50 | - (IBAction)reloadWX:(id)sender{ 51 | [self.webView.mainFrame reloadFromOrigin]; 52 | } 53 | #pragma mark alertDelegate START 54 | - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo{ 55 | if (returnCode == NSAlertDefaultReturn){ 56 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://me.alipay.com/ialaddin"]]; 57 | } 58 | } 59 | - (void)sheetDidDismiss:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo{ 60 | 61 | } 62 | #pragma mark alertDelegate END 63 | 64 | - (void)registerShortCuts{ 65 | MASShortcut *shortcut = [MASShortcut shortcutWithKeyCode:kVK_ANSI_X modifierFlags:NSEventModifierFlagCommand|NSEventModifierFlagControl]; 66 | [[MASShortcutMonitor sharedMonitor] registerShortcut:shortcut withAction:^{ 67 | [self.window orderFront:nil]; 68 | [NSApp activateIgnoringOtherApps:YES]; 69 | if([self.window isMiniaturized]) 70 | { 71 | [self.window deminiaturize:self]; 72 | } 73 | }]; 74 | } 75 | 76 | - (void)addWeixinToolBar{ 77 | self.toolBar.alphaValue = 0.3; 78 | [self.toolBar addTrackingRect:self.toolBar.bounds owner:self userData:NULL assumeInside:YES]; 79 | } 80 | 81 | - (void)mouseEntered:(NSEvent *)theEvent{ 82 | [[self.toolBar animator] setAlphaValue:0.7]; 83 | [[self.toolBar animator] setFrameOrigin:NSMakePoint(0,0)]; 84 | } 85 | - (void)mouseExited:(NSEvent *)theEvent{ 86 | [[self.toolBar animator] setAlphaValue:0.3]; 87 | [[self.toolBar animator] setFrameOrigin:NSMakePoint(0, -70)]; 88 | } 89 | 90 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 91 | { 92 | 93 | [[self.window windowController] setShouldCascadeWindows:NO]; 94 | [self.window setFrameAutosaveName:[self.window representedFilename]]; 95 | 96 | [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; 97 | [self registerShortCuts]; 98 | NSURLRequest *request = [NSURLRequest requestWithURL: 99 | [NSURL URLWithString:@"https://web.wechat.com/?lang=zh_CN"]]; 100 | [self.webView.mainFrame loadRequest:request]; 101 | [self addWeixinToolBar]; 102 | 103 | 104 | } 105 | 106 | - (void)applicationWillBecomeActive:(NSNotification *)notification{ 107 | self.hasNew = NO; 108 | [NSApp dockTile].badgeLabel = nil; 109 | } 110 | - (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{ 111 | [self.window orderFront:nil]; 112 | [NSApp activateIgnoringOtherApps:YES]; 113 | return YES; 114 | } 115 | #pragma mark WebFrameLoadDelegate START 116 | - (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame{ 117 | DLog(@"%s %@",__PRETTY_FUNCTION__,title); 118 | if ([title hasSuffix:@")"]) { 119 | NSString * badgeString = [[[[title componentsSeparatedByString:@"("] objectAtIndex:1] componentsSeparatedByString:@")"] objectAtIndex:0]; 120 | if ([badgeString isEqualToString:[NSApp dockTile].badgeLabel]) { 121 | return; 122 | }else{ 123 | DLog(@"%@",badgeString); 124 | [NSApp dockTile].badgeLabel = badgeString; 125 | } 126 | } 127 | if (![title hasSuffix:@")"]|| self.hasNew) { 128 | return; 129 | } 130 | 131 | NSUserNotification *notification = [[NSUserNotification alloc] init]; 132 | notification.title = @"小伙伴发来新的微信"; 133 | notification.informativeText = title; 134 | notification.soundName = NSUserNotificationDefaultSoundName; 135 | 136 | [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; 137 | self.hasNew = YES; 138 | 139 | } 140 | - (NSString * )cssStringWithFileName:(NSString *)filename{ 141 | NSStringEncoding * encoding = NULL; 142 | //$('head').append(''); 143 | NSString * cssFileContent = [NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:filename withExtension:@"css"] 144 | usedEncoding:encoding 145 | error:nil]; 146 | NSString * cssString = [NSString stringWithFormat:@"''",cssFileContent]; 147 | 148 | return cssString; 149 | } 150 | - (void)loadLocalJavaScript:(WebView * )sender{ 151 | NSString * js = [NSString stringWithFormat:@"$.getScript('http://%@local.js',function(){newFun('\"Checking new script\"');})",[AZThemeManager sharedManager].localhostPath]; 152 | 153 | [sender stringByEvaluatingJavaScriptFromString:js]; 154 | } 155 | - (void)changeBackground:(WebView *)sender { 156 | 157 | NSString* css = [NSString stringWithFormat:@"\"@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){ body { background-image:url(%@) no-repeat;background-size:auto auto;}} body { background-image:url(%@) no-repeat;background-size:auto auto;}\"",[AZThemeManager sharedManager].currentBackground,[AZThemeManager sharedManager].currentBackground]; 158 | DLog(@"css:\n %@",css); 159 | NSString* js = [NSString stringWithFormat: 160 | @"var styleNode = document.createElement('style');\n" 161 | "styleNode.type = \"text/css\";\n" 162 | "var styleText = document.createTextNode(%@);\n" 163 | "styleNode.appendChild(styleText);\n" 164 | "document.getElementsByTagName('body')[0].appendChild(styleNode);\n",css]; 165 | DLog(@"js:\n%@",js); 166 | 167 | NSString * js2 = [NSString stringWithFormat:@"$('body').css(\"background-image\",\"url(%@)\")",[AZThemeManager sharedManager].currentBackground]; 168 | [self.webView stringByEvaluatingJavaScriptFromString:js2]; 169 | 170 | // NSString * js3 = [NSString stringWithFormat:@"$('body').css(\"background-size\",\"auto 100%%\")"]; 171 | // [self.webView stringByEvaluatingJavaScriptFromString:js3]; 172 | 173 | } 174 | 175 | - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame{ 176 | NSScrollView *mainScrollView = [(AZWebView*)sender mainScrollView]; 177 | [mainScrollView setVerticalScrollElasticity:NSScrollElasticityNone]; 178 | [mainScrollView setHorizontalScrollElasticity:NSScrollElasticityNone]; 179 | 180 | DLog(@"%@",[sender stringByEvaluatingJavaScriptFromString:@"$(\".footer\").hide()"]); 181 | 182 | [self changeBackground:sender]; 183 | [self loadLocalJavaScript:sender]; 184 | AZLocalScript * localScript = [AZLocalScript scriptWithLocalFileName:@"local.js"]; 185 | WebScriptObject * win = sender.windowScriptObject; 186 | [win setValue:localScript forKey:@"localScript"]; 187 | 188 | } 189 | 190 | #pragma mark WebFrameLoadDelegate END 191 | 192 | #pragma mark WebFrameLoadDelegate START 193 | - (id)webView:(WebView *)sender identifierForInitialRequest:(NSURLRequest *)request fromDataSource:(WebDataSource *)dataSource{ 194 | NSString * urlString = [request.URL absoluteString]; 195 | if ([urlString hasPrefix:@"https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmedia"]) { 196 | NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES); 197 | NSString * downloadPath = [paths firstObject]; 198 | NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 199 | AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 200 | 201 | NSURL *URL = [NSURL URLWithString:urlString]; 202 | NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 203 | 204 | NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) 205 | { 206 | NSLog(@"Progress: %f", downloadProgress.fractionCompleted); 207 | 208 | } destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { 209 | NSURL *documentsDirectoryURL = [NSURL URLWithString:downloadPath]; 210 | return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; 211 | } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { 212 | NSData * data = [NSData dataWithContentsOfURL:[response URL]]; 213 | NSString * filePathString = [filePath absoluteString]; 214 | NSString * filePathDecodeString = [[filePathString stringByDecodingURLFormat] stringByDecodingURLFormat]; 215 | [data writeToFile:filePathDecodeString options:NSDataWritingAtomic error:&error]; 216 | }]; 217 | [downloadTask resume]; 218 | 219 | } 220 | return dataSource; 221 | } 222 | #pragma mark WebFrameLoadDelegate END 223 | 224 | 225 | 226 | #pragma mark WebUIDelegate START 227 | 228 | - (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener 229 | { 230 | // Create the File Open Dialog class. 231 | NSOpenPanel* openDlg = [NSOpenPanel openPanel]; 232 | 233 | // Enable the selection of files in the dialog. 234 | [openDlg setCanChooseFiles:YES]; 235 | 236 | // Enable the selection of directories in the dialog. 237 | [openDlg setCanChooseDirectories:NO]; 238 | 239 | if ( [openDlg runModal] == NSOKButton ) 240 | { 241 | NSArray* files = [[openDlg URLs]valueForKey:@"relativePath"]; 242 | [resultListener chooseFilenames:files]; 243 | } 244 | 245 | } 246 | #pragma mark WebUIDelegate END 247 | 248 | #pragma mark WebPolicyDelegate START 249 | - (void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation 250 | request:(NSURLRequest *)request 251 | newFrameName:(NSString *)frameName 252 | decisionListener:(id)listener{ 253 | WebFrame * frame = [actionInformation objectForKey:@"WebElementFrame"]; 254 | NSString * html = [[frame webView] stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]; 255 | DLog(@"%s %@ \n %@ \n %@\n %@",__PRETTY_FUNCTION__,actionInformation,request,frameName,html); 256 | 257 | NSString * url = [[request URL] absoluteString]; 258 | NSString * targetUrl = nil; 259 | if ([url hasPrefix:@"https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxcheckurl"]) { 260 | NSArray * coms = [url componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"?&"]]; 261 | 262 | for (NSString * item in coms) { 263 | NSArray * itemComs = [item componentsSeparatedByString:@"="]; 264 | if ([itemComs count] == 2) { 265 | if ([[itemComs firstObject] isEqualToString:@"requrl"]) { 266 | targetUrl = [[itemComs lastObject] stringByDecodingURLFormat]; 267 | break; 268 | } 269 | } 270 | } 271 | } 272 | if (targetUrl&&targetUrl.length > 0 ) { 273 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:targetUrl]]; 274 | } 275 | } 276 | #pragma mark WebPolicyDelegate END 277 | @end 278 | -------------------------------------------------------------------------------- /Weixin/AZLocalScript.h: -------------------------------------------------------------------------------- 1 | // 2 | // AZLocalScript.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/7/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AZLocalScript : NSObject{ 12 | NSString * _url; 13 | } 14 | @property (nonatomic,strong) NSString * url; 15 | 16 | 17 | +(id)scriptWithLocalFileName:(NSString * )fileName; 18 | 19 | 20 | #pragma mark -- 21 | #pragma mark for JS 22 | - (void)testFoo:(NSString *) string; 23 | - (void)getImageUrl:(NSString *) urlString withCookie:(NSString *) cookieString; 24 | #pragma mark -- 25 | @end 26 | -------------------------------------------------------------------------------- /Weixin/AZLocalScript.m: -------------------------------------------------------------------------------- 1 | // 2 | // AZLocalScript.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/7/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "AZLocalScript.h" 10 | #import "AZThemeManager.h" 11 | #import "NSImage+File.h" 12 | @implementation AZLocalScript 13 | @synthesize url = _url; 14 | +(id)scriptWithLocalFileName:(NSString * )fileName{ 15 | AZLocalScript * local = [[AZLocalScript alloc] init]; 16 | local.url = [NSString stringWithFormat:@"http://%@%@",[AZThemeManager sharedManager].localhostPath,fileName]; 17 | return local; 18 | } 19 | - (void) testFoo:(NSString *) string{ 20 | ALog(@"%@",string); 21 | } 22 | - (void)getImageUrl:(NSString *) urlString withCookie:(NSString *) cookieString{ 23 | ALog(@"%@ %@",urlString,cookieString); 24 | NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 25 | initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://web.wechat.com%@",urlString]]]; 26 | [request setHTTPMethod:@"GET"]; 27 | [request setValue:cookieString forHTTPHeaderField:@"Cookie"]; 28 | [request setValue:@"https://web.wechat.com/?lang=zh_CN" forHTTPHeaderField:@"Referer"]; 29 | 30 | 31 | [NSURLConnection sendAsynchronousRequest:request 32 | queue:[[NSOperationQueue alloc] init] 33 | completionHandler:^(NSURLResponse *response, 34 | NSData *data, 35 | NSError *error) 36 | { 37 | NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 38 | if ([data length] >0 && error == nil && [httpResponse statusCode] == 200) 39 | { 40 | 41 | NSImage *image = [[NSImage alloc] initWithData:data]; 42 | [image saveAsJpegWithPath:[NSString stringWithFormat:@"%@/%@",NSTemporaryDirectory(),[[request URL] lastPathComponent]]]; 43 | 44 | } 45 | }]; 46 | } 47 | 48 | 49 | + (NSString *) webScriptNameForSelector:(SEL)sel 50 | { 51 | NSString * name; 52 | if (sel == @selector(testFoo:)) 53 | name = @"testFoo"; 54 | if (sel == @selector(getImageUrl:withCookie:)) { 55 | name = @"getImageUrlWithCookie"; 56 | } 57 | 58 | return name; 59 | } 60 | 61 | + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector 62 | { 63 | if (aSelector == @selector(testFoo:)) return NO; 64 | if (aSelector == @selector(getImageUrl:withCookie:)) return NO; 65 | return YES; 66 | } 67 | 68 | + (BOOL)isKeyExcludedFromWebScript:(const char *)name{ 69 | return NO; 70 | } 71 | @end 72 | -------------------------------------------------------------------------------- /Weixin/AZWebView.h: -------------------------------------------------------------------------------- 1 | // 2 | // AZWebView.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 19/07/2017. 6 | // Copyright © 2017 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AZWebView : WebView 12 | - (NSScrollView *)mainScrollView; 13 | @end 14 | -------------------------------------------------------------------------------- /Weixin/AZWebView.m: -------------------------------------------------------------------------------- 1 | // 2 | // AZWebView.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 19/07/2017. 6 | // Copyright © 2017 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "AZWebView.h" 10 | 11 | @implementation AZWebView 12 | 13 | - (NSScrollView *)mainScrollView { 14 | return [[[[self mainFrame] frameView] documentView] enclosingScrollView]; // can be nil 15 | } 16 | @end 17 | -------------------------------------------------------------------------------- /Weixin/Category/NSButton+Style.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Style.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/2/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSButton (Style) 12 | - (void)setTitle:(NSString*)title withColor:(NSColor*)color; 13 | - (void)setTitleColor:(NSColor*)color; 14 | @end 15 | -------------------------------------------------------------------------------- /Weixin/Category/NSButton+Style.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Style.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/2/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "NSButton+Style.h" 10 | 11 | @implementation NSButton (Style) 12 | - (void)setTitle:(NSString*)title withColor:(NSColor*)color { 13 | 14 | NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 15 | 16 | [style setAlignment:NSCenterTextAlignment]; 17 | 18 | NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:color, NSForegroundColorAttributeName, style, NSParagraphStyleAttributeName, nil]; 19 | 20 | NSAttributedString *attrString = [[NSAttributedString alloc]initWithString:title attributes:attrsDictionary]; 21 | 22 | [self setAttributedTitle:attrString]; 23 | 24 | } 25 | 26 | - (void)setTitleColor:(NSColor*)color { 27 | 28 | NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; 29 | 30 | [style setAlignment:NSCenterTextAlignment]; 31 | 32 | NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:color, NSForegroundColorAttributeName, style, NSParagraphStyleAttributeName, nil]; 33 | 34 | NSAttributedString *attrString = [[NSAttributedString alloc]initWithString:self.title attributes:attrsDictionary]; 35 | 36 | [self setAttributedTitle:attrString]; 37 | 38 | 39 | } 40 | @end 41 | -------------------------------------------------------------------------------- /Weixin/Category/NSImage+File.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSImage+File.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/9/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSImage (File) 12 | - (void) saveAsJpegWithPath:(NSString *)filePath; 13 | @end 14 | -------------------------------------------------------------------------------- /Weixin/Category/NSImage+File.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSImage+File.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/9/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "NSImage+File.h" 10 | 11 | @implementation NSImage (File) 12 | 13 | - (void) saveAsJpegWithPath:(NSString *)filePath { 14 | NSData *imageData = [self TIFFRepresentation]; 15 | NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imageData]; 16 | 17 | CGFloat compressionFactor = 1.0; 18 | NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:compressionFactor] 19 | forKey:NSImageCompressionFactor]; 20 | imageData = [imageRep representationUsingType:NSJPEGFileType properties:imageProps]; 21 | [imageData writeToFile:filePath atomically:NO]; 22 | } 23 | 24 | @end -------------------------------------------------------------------------------- /Weixin/Category/NSUserDefaults+IntValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+IntValue.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/3/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSUserDefaults (IntValue) 12 | - (NSInteger)intValueForKey:(NSString *)keyString; 13 | @end 14 | -------------------------------------------------------------------------------- /Weixin/Category/NSUserDefaults+IntValue.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSUserDefaults+IntValue.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 9/3/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "NSUserDefaults+IntValue.h" 10 | 11 | @implementation NSUserDefaults (IntValue) 12 | - (NSInteger)intValueForKey:(NSString *)keyString{ 13 | NSString * value = [[NSUserDefaults standardUserDefaults] objectForKey:keyString]; 14 | if (!value) { 15 | value = @"0"; 16 | [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithFormat:@"%li",[value integerValue]] forKey:keyString]; 17 | [[NSUserDefaults standardUserDefaults] synchronize]; 18 | return [value intValue]; 19 | 20 | } 21 | return [value integerValue]; 22 | } 23 | @end 24 | -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256 copy 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256 copy 2.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256 copy 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256 copy 3.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256 copy 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256 copy 4.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256 copy 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256 copy 5.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256 copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256 copy.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/Images.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /Weixin/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "size" : "16x16", 10 | "idiom" : "mac", 11 | "filename" : "256 copy 5.png", 12 | "scale" : "2x" 13 | }, 14 | { 15 | "size" : "32x32", 16 | "idiom" : "mac", 17 | "filename" : "256 copy 4.png", 18 | "scale" : "1x" 19 | }, 20 | { 21 | "size" : "32x32", 22 | "idiom" : "mac", 23 | "filename" : "256 copy 3.png", 24 | "scale" : "2x" 25 | }, 26 | { 27 | "size" : "128x128", 28 | "idiom" : "mac", 29 | "filename" : "256 copy 2.png", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "size" : "128x128", 34 | "idiom" : "mac", 35 | "filename" : "256 copy.png", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "size" : "256x256", 40 | "idiom" : "mac", 41 | "filename" : "256.png", 42 | "scale" : "1x" 43 | }, 44 | { 45 | "idiom" : "mac", 46 | "size" : "256x256", 47 | "scale" : "2x" 48 | } 49 | ], 50 | "info" : { 51 | "version" : 1, 52 | "author" : "xcode" 53 | } 54 | } -------------------------------------------------------------------------------- /Weixin/NSString+NSString_decode.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+NSString_decode.h 3 | // Weixin 4 | // 5 | // Created by Aladdin on 19/07/2017. 6 | // Copyright © 2017 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (NSString_decode) 12 | - (NSString *)stringByDecodingURLFormat; 13 | @end 14 | -------------------------------------------------------------------------------- /Weixin/NSString+NSString_decode.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+NSString_decode.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 19/07/2017. 6 | // Copyright © 2017 iAladdin. All rights reserved. 7 | // 8 | 9 | #import "NSString+NSString_decode.h" 10 | 11 | @implementation NSString (NSString_decode) 12 | - (NSString *)stringByDecodingURLFormat 13 | { 14 | NSString *result = [(NSString *)self stringByReplacingOccurrencesOfString:@"+" withString:@" "]; 15 | result = [result stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 16 | return result; 17 | } 18 | @end 19 | -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/12NfRQ.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/12NfRQ.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/1QfnS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/1QfnS.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/Backgrounds.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Name 6 | 言叶之庭 7 | Backgrounds 8 | 9 | 1QfnS.jpg 10 | 12NfRQ.jpg 11 | GR40.jpg 12 | NJ96f.jpg 13 | Q3uc0.jpg 14 | txRtU.jpg 15 | uYbU3.jpg 16 | wGJjf.jpg 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/GR40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/GR40.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/NJ96f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/NJ96f.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/Q3uc0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/Q3uc0.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/txRtU.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/txRtU.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/uYbU3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/uYbU3.jpg -------------------------------------------------------------------------------- /Weixin/The_Garden_of_Words.bpack/wGJjf.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/The_Garden_of_Words.bpack/wGJjf.jpg -------------------------------------------------------------------------------- /Weixin/Weixin-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | zh_CN 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | me.iAladdin.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.4.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.4.1 23 | LSApplicationCategoryType 24 | public.app-category.social-networking 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSHumanReadableCopyright 28 | Copyright © 2013 iAladdin. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | SUFeedURL 34 | http://ialaddin.github.io/wx-update.xml 35 | SUPublicDSAKeyFile 36 | dsa_pub.pem 37 | NSAppTransportSecurity 38 | 39 | NSAllowsArbitraryLoads 40 | 41 | NSAllowsArbitraryLoadsInWebContent 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Weixin/Weixin-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | 10 | #endif 11 | 12 | #ifdef DEBUG 13 | # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) 14 | #else 15 | # define DLog(...) 16 | #endif 17 | 18 | // ALog always displays output regardless of the DEBUG setting 19 | #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) -------------------------------------------------------------------------------- /Weixin/dsa_pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIDOzCCAi4GByqGSM44BAEwggIhAoIBAQDdDdVoXvDLBwpYo5b8m6MQd7DRcFqh 3 | 86nXyVpCnQJ8ukZuTvdEESzOekuHvYqMhdVDYMYahcZsTHFojG1AZvPJ/XXeJMm/ 4 | r0K/yg7WvqTI/e/rt2j/MRs8IZnJW8d19U6cMs8gzXzcyNEHKokmjzDy9qHn9u5C 5 | dm0paIzuzNRmdgKNfv97Nhh0q3WQ+Gh+fyylkpiCUvMLoNkipPNVJ8TneI6eClWT 6 | Wzc1VKicOfplwOg8LziVWN93KD9ICk4tQluVXMBCHQlIMHg01vvP/cR0/sJFVPs4 7 | aIYgPd5rPmCZQ12iojsNVfBdbpTGhH3VD8+c/BGLz0m03sIITFOlYZOzAhUAn8Vi 8 | QtRhYaCcMkrOnMv5wN/dsm0CggEBAJM2sxEuddn7kikKYPYAqEdnr6IkzrHnYa7b 9 | 3jFoys8upuoUwQZ8R+7GWOteKKBDa0Ddg+y/b2d7+8EcfBbizDiT5/EEL/+r3SNJ 10 | 7CoBSErE7F7/P8laCtKiU5pEVXZZFtGUHbq86fhHe5FuaNMFoi/dG6z+47lJp0vU 11 | xtm5TjyyO9k3AezYBgImXadl2Y0xHcbphCUtbyOaq7WsoeQwWP3Bp3pP8wuTWOWu 12 | +1vuN01IsCpYjMgqVXwvIFpwl2fw4QeDjB1JpKnea+ouvINJACQV7taIcJmPoNDW 13 | 8PgDwY87yZvcw4lpGoztwkD9w2T+4ySMNCmpy75jnCUFu8KHImwDggEFAAKCAQB/ 14 | +/ae7DrL/ZrjRV6MJwfK9TFRtRM8sMyn92M/YitJfmd6L7de+gl1gvW8Z25MbKTP 15 | BE2WXRfupoa2fTXvtDAVt6DdY8icQiYBAu1eFbXQhQSImkxL6oS+J4k0asM2CrMO 16 | apleidXgUfrZ9zKR24mMYBDFsGEzp+SNvK35b9AFRiNr3m8NpFoyzwK1FNPxX6L8 17 | wnof3zVN4k2N9mLLu4HRD2FSHd39dZnMCDWMRRWDmbTszPED5Gq2zOoK3q/wls22 18 | Arx90kU31SLTISrU8dYbW+hqX7LuhusqK+UdrvEzc241WrIZjHbod596AqW7bHyM 19 | d32J2wMZv9WbNAei3Wyv 20 | -----END PUBLIC KEY----- 21 | -------------------------------------------------------------------------------- /Weixin/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1543 2 | {\fonttbl\f0\fnil\fcharset134 STHeitiSC-Light;\f1\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;\red38\green38\blue38;} 4 | {\*\expandedcolortbl;;\csgenericrgb\c14902\c14902\c14902;} 5 | {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid1\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}} 6 | {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} 7 | \paperw11900\paperh16840\vieww9600\viewh8400\viewkind0 8 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 9 | 10 | \f0\b\fs24 \cf0 \'d3\'d0\'ce\'ca\'cc\'e2\'bf\'c9\'d2\'d4\'c1\'aa\'cf\'b5 \'ce\'a2\'d0\'c5\'ba\'c5:Aladdin\ 11 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 12 | 13 | \f1 \cf0 \ 14 | Engineering: 15 | \b0 \ 16 | Aladdin\ 17 | \ 18 | 19 | \b Documentation: 20 | \b0 \ 21 | Aladdin\ 22 | \ 23 | 24 | \b SourceCode:\ 25 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 26 | \cf0 27 | \b0 https://github.com/iAladdin/Weixin-Mac\ 28 | \ 29 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 30 | 31 | \f0\b \cf0 \'b8\'d0\'d0\'bb\'be\'e8\'bf\'ee(\'c5\'c5\'c3\'fb\'ca\'b1\'bc\'e4\'cb\'b3\'d0\'f2\'a3\'ac\'c8\'e7\'cf\'a3\'cd\'fb\'c4\'e4\'c3\'fb\'c2\'e9\'b7\'b3\'ce\'a2\'d0\'c5\'c1\'aa\'cf\'b5\'ce\'d2)\'a3\'ba\ 32 | \pard\tx220\tx720\pardeftab720\li720\fi-720\partightenfactor0 33 | \ls1\ilvl0 34 | \f1\b0\fs30 \cf2 {\listtext 1. }lixiarong\ 35 | {\listtext 2. }fengdahui\ 36 | {\listtext 3. }huangyan\ 37 | {\listtext 4. }wujinchuan\ 38 | {\listtext 5. }linli\ 39 | {\listtext 6. }zhangyongxiang\ 40 | {\listtext 7. }zhenghao\ 41 | {\listtext 8. }zhangxin\ 42 | {\listtext 9. }zhangjunya\ 43 | {\listtext 10. }zhangshaozhi\ 44 | {\listtext 11. }panzicong\ 45 | {\listtext 12. }wukaifeng\ 46 | {\listtext 13. }liziqi\ 47 | {\listtext 14. }beijingminuowuxiankejiyouxiangongsi\ 48 | {\listtext 15. }heliang\ 49 | {\listtext 16. }lijingjun\ 50 | {\listtext 17. }chenzhongming\ 51 | {\listtext 18. }zhaoqing\ 52 | {\listtext 19. }wulei\ 53 | {\listtext 20. }wenying\ 54 | {\listtext 21. }hanchengyue\ 55 | {\listtext 22. }shenmengyao 56 | \f0\b\fs24 \cf0 \ 57 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 58 | \cf0 \ 59 | } -------------------------------------------------------------------------------- /Weixin/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Weixin/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/left.png -------------------------------------------------------------------------------- /Weixin/local.js: -------------------------------------------------------------------------------- 1 | var testVar = 'New JS loaded!'; 2 | 3 | console.log(testVar); 4 | 5 | function newFun(dynParam) 6 | { 7 | console.log('You just passed '+dynParam+ ' as parameter.'); 8 | } 9 | 10 | function replaceImgEvent{ 11 | var img = $('.cloudImg img')[0]; 12 | img.removeAttribute('click'); 13 | img.addEventListener('click',function(event){localScript.getImageUrlWithCookie(img.attributes['rawsrc'].value,document.cookie)}) 14 | } -------------------------------------------------------------------------------- /Weixin/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Weixin 4 | // 5 | // Created by Aladdin on 7/29/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /Weixin/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iAladdin/Weixin-Mac/177c0be733a05db14cabe74016926d0822d6e699/Weixin/right.png -------------------------------------------------------------------------------- /WeixinTests/WeixinTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | me.iAladdin.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /WeixinTests/WeixinTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // WeixinTests.m 3 | // WeixinTests 4 | // 5 | // Created by Aladdin on 7/29/13. 6 | // Copyright (c) 2013 iAladdin. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface WeixinTests : XCTestCase 12 | 13 | @end 14 | 15 | @implementation WeixinTests 16 | 17 | - (void)setUp 18 | { 19 | [super setUp]; 20 | 21 | // Set-up code here. 22 | } 23 | 24 | - (void)tearDown 25 | { 26 | // Tear-down code here. 27 | 28 | [super tearDown]; 29 | } 30 | 31 | - (void)testExample 32 | { 33 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /WeixinTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /iTunes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * iTunes.h 3 | */ 4 | 5 | #import 6 | #import 7 | 8 | 9 | @class iTunesPrintSettings, iTunesApplication, iTunesItem, iTunesAirPlayDevice, iTunesArtwork, iTunesEncoder, iTunesEQPreset, iTunesPlaylist, iTunesAudioCDPlaylist, iTunesLibraryPlaylist, iTunesRadioTunerPlaylist, iTunesSource, iTunesTrack, iTunesAudioCDTrack, iTunesFileTrack, iTunesSharedTrack, iTunesURLTrack, iTunesUserPlaylist, iTunesFolderPlaylist, iTunesVisual, iTunesWindow, iTunesBrowserWindow, iTunesEQWindow, iTunesPlaylistWindow; 10 | 11 | enum iTunesEKnd { 12 | iTunesEKndTrackListing = 'kTrk' /* a basic listing of tracks within a playlist */, 13 | iTunesEKndAlbumListing = 'kAlb' /* a listing of a playlist grouped by album */, 14 | iTunesEKndCdInsert = 'kCDi' /* a printout of the playlist for jewel case inserts */ 15 | }; 16 | typedef enum iTunesEKnd iTunesEKnd; 17 | 18 | enum iTunesEnum { 19 | iTunesEnumStandard = 'lwst' /* Standard PostScript error handling */, 20 | iTunesEnumDetailed = 'lwdt' /* print a detailed report of PostScript errors */ 21 | }; 22 | typedef enum iTunesEnum iTunesEnum; 23 | 24 | enum iTunesEPlS { 25 | iTunesEPlSStopped = 'kPSS', 26 | iTunesEPlSPlaying = 'kPSP', 27 | iTunesEPlSPaused = 'kPSp', 28 | iTunesEPlSFastForwarding = 'kPSF', 29 | iTunesEPlSRewinding = 'kPSR' 30 | }; 31 | typedef enum iTunesEPlS iTunesEPlS; 32 | 33 | enum iTunesERpt { 34 | iTunesERptOff = 'kRpO', 35 | iTunesERptOne = 'kRp1', 36 | iTunesERptAll = 'kAll' 37 | }; 38 | typedef enum iTunesERpt iTunesERpt; 39 | 40 | enum iTunesEVSz { 41 | iTunesEVSzSmall = 'kVSS', 42 | iTunesEVSzMedium = 'kVSM', 43 | iTunesEVSzLarge = 'kVSL' 44 | }; 45 | typedef enum iTunesEVSz iTunesEVSz; 46 | 47 | enum iTunesESrc { 48 | iTunesESrcLibrary = 'kLib', 49 | iTunesESrcIPod = 'kPod', 50 | iTunesESrcAudioCD = 'kACD', 51 | iTunesESrcMP3CD = 'kMCD', 52 | iTunesESrcRadioTuner = 'kTun', 53 | iTunesESrcSharedLibrary = 'kShd', 54 | iTunesESrcUnknown = 'kUnk' 55 | }; 56 | typedef enum iTunesESrc iTunesESrc; 57 | 58 | enum iTunesESrA { 59 | iTunesESrAAlbums = 'kSrL' /* albums only */, 60 | iTunesESrAAll = 'kAll' /* all text fields */, 61 | iTunesESrAArtists = 'kSrR' /* artists only */, 62 | iTunesESrAComposers = 'kSrC' /* composers only */, 63 | iTunesESrADisplayed = 'kSrV' /* visible text fields */, 64 | iTunesESrASongs = 'kSrS' /* song names only */ 65 | }; 66 | typedef enum iTunesESrA iTunesESrA; 67 | 68 | enum iTunesESpK { 69 | iTunesESpKNone = 'kNon', 70 | iTunesESpKBooks = 'kSpA', 71 | iTunesESpKFolder = 'kSpF', 72 | iTunesESpKGenius = 'kSpG', 73 | iTunesESpKITunesU = 'kSpU', 74 | iTunesESpKLibrary = 'kSpL', 75 | iTunesESpKMovies = 'kSpI', 76 | iTunesESpKMusic = 'kSpZ', 77 | iTunesESpKPodcasts = 'kSpP', 78 | iTunesESpKPurchasedMusic = 'kSpM', 79 | iTunesESpKTVShows = 'kSpT' 80 | }; 81 | typedef enum iTunesESpK iTunesESpK; 82 | 83 | enum iTunesEVdK { 84 | iTunesEVdKNone = 'kNon' /* not a video or unknown video kind */, 85 | iTunesEVdKHomeVideo = 'kVdH' /* home video track */, 86 | iTunesEVdKMovie = 'kVdM' /* movie track */, 87 | iTunesEVdKMusicVideo = 'kVdV' /* music video track */, 88 | iTunesEVdKTVShow = 'kVdT' /* TV show track */ 89 | }; 90 | typedef enum iTunesEVdK iTunesEVdK; 91 | 92 | enum iTunesERtK { 93 | iTunesERtKUser = 'kRtU' /* user-specified rating */, 94 | iTunesERtKComputed = 'kRtC' /* iTunes-computed rating */ 95 | }; 96 | typedef enum iTunesERtK iTunesERtK; 97 | 98 | enum iTunesEAPD { 99 | iTunesEAPDComputer = 'kAPC', 100 | iTunesEAPDAirPortExpress = 'kAPX', 101 | iTunesEAPDAppleTV = 'kAPT', 102 | iTunesEAPDAirPlayDevice = 'kAPO', 103 | iTunesEAPDUnknown = 'kAPU' 104 | }; 105 | typedef enum iTunesEAPD iTunesEAPD; 106 | 107 | 108 | 109 | /* 110 | * Standard Suite 111 | */ 112 | 113 | @interface iTunesPrintSettings : SBObject 114 | 115 | @property (readonly) NSInteger copies; // the number of copies of a document to be printed 116 | @property (readonly) BOOL collating; // Should printed copies be collated? 117 | @property (readonly) NSInteger startingPage; // the first page of the document to be printed 118 | @property (readonly) NSInteger endingPage; // the last page of the document to be printed 119 | @property (readonly) NSInteger pagesAcross; // number of logical pages laid across a physical page 120 | @property (readonly) NSInteger pagesDown; // number of logical pages laid out down a physical page 121 | @property (readonly) iTunesEnum errorHandling; // how errors are handled 122 | @property (copy, readonly) NSDate *requestedPrintTime; // the time at which the desktop printer should print the document 123 | @property (copy, readonly) NSArray *printerFeatures; // printer specific options 124 | @property (copy, readonly) NSString *faxNumber; // for fax number 125 | @property (copy, readonly) NSString *targetPrinter; // for target printer 126 | 127 | - (void) printPrintDialog:(BOOL)printDialog withProperties:(iTunesPrintSettings *)withProperties kind:(iTunesEKnd)kind theme:(NSString *)theme; // Print the specified object(s) 128 | - (void) close; // Close an object 129 | - (void) delete; // Delete an element from an object 130 | - (SBObject *) duplicateTo:(SBObject *)to; // Duplicate one or more object(s) 131 | - (BOOL) exists; // Verify if an object exists 132 | - (void) open; // open the specified object(s) 133 | - (void) playOnce:(BOOL)once; // play the current track or the specified track or file. 134 | 135 | @end 136 | 137 | 138 | 139 | /* 140 | * iTunes Suite 141 | */ 142 | 143 | // The application program 144 | @interface iTunesApplication : SBApplication 145 | 146 | - (SBElementArray *) AirPlayDevices; 147 | - (SBElementArray *) browserWindows; 148 | - (SBElementArray *) encoders; 149 | - (SBElementArray *) EQPresets; 150 | - (SBElementArray *) EQWindows; 151 | - (SBElementArray *) playlistWindows; 152 | - (SBElementArray *) sources; 153 | - (SBElementArray *) visuals; 154 | - (SBElementArray *) windows; 155 | 156 | @property (readonly) BOOL AirPlayEnabled; // is AirPlay currently enabled? 157 | @property (readonly) BOOL converting; // is a track currently being converted? 158 | @property (copy) NSArray *currentAirPlayDevices; // the currently selected AirPlay device(s) 159 | @property (copy) iTunesEncoder *currentEncoder; // the currently selected encoder (MP3, AIFF, WAV, etc.) 160 | @property (copy) iTunesEQPreset *currentEQPreset; // the currently selected equalizer preset 161 | @property (copy, readonly) iTunesPlaylist *currentPlaylist; // the playlist containing the currently targeted track 162 | @property (copy, readonly) NSString *currentStreamTitle; // the name of the current song in the playing stream (provided by streaming server) 163 | @property (copy, readonly) NSString *currentStreamURL; // the URL of the playing stream or streaming web site (provided by streaming server) 164 | @property (copy, readonly) iTunesTrack *currentTrack; // the current targeted track 165 | @property (copy) iTunesVisual *currentVisual; // the currently selected visual plug-in 166 | @property BOOL EQEnabled; // is the equalizer enabled? 167 | @property BOOL fixedIndexing; // true if all AppleScript track indices should be independent of the play order of the owning playlist. 168 | @property BOOL frontmost; // is iTunes the frontmost application? 169 | @property BOOL fullScreen; // are visuals displayed using the entire screen? 170 | @property (copy, readonly) NSString *name; // the name of the application 171 | @property BOOL mute; // has the sound output been muted? 172 | @property double playerPosition; // the player’s position within the currently playing track in seconds 173 | @property (readonly) iTunesEPlS playerState; // is iTunes stopped, paused, or playing? 174 | @property (copy, readonly) SBObject *selection; // the selection visible to the user 175 | @property NSInteger soundVolume; // the sound output volume (0 = minimum, 100 = maximum) 176 | @property (copy, readonly) NSString *version; // the version of iTunes 177 | @property BOOL visualsEnabled; // are visuals currently being displayed? 178 | @property iTunesEVSz visualSize; // the size of the displayed visual 179 | 180 | - (void) printPrintDialog:(BOOL)printDialog withProperties:(iTunesPrintSettings *)withProperties kind:(iTunesEKnd)kind theme:(NSString *)theme; // Print the specified object(s) 181 | - (void) run; // run iTunes 182 | - (void) quit; // quit iTunes 183 | - (iTunesTrack *) add:(NSArray *)x to:(SBObject *)to; // add one or more files to a playlist 184 | - (void) backTrack; // reposition to beginning of current track or go to previous track if already at start of current track 185 | - (iTunesTrack *) convert:(NSArray *)x; // convert one or more files or tracks 186 | - (void) fastForward; // skip forward in a playing track 187 | - (void) nextTrack; // advance to the next track in the current playlist 188 | - (void) pause; // pause playback 189 | - (void) playOnce:(BOOL)once; // play the current track or the specified track or file. 190 | - (void) playpause; // toggle the playing/paused state of the current track 191 | - (void) previousTrack; // return to the previous track in the current playlist 192 | - (void) resume; // disable fast forward/rewind and resume playback, if playing. 193 | - (void) rewind; // skip backwards in a playing track 194 | - (void) stop; // stop playback 195 | - (void) update; // update the specified iPod 196 | - (void) eject; // eject the specified iPod 197 | - (void) subscribe:(NSString *)x; // subscribe to a podcast feed 198 | - (void) updateAllPodcasts; // update all subscribed podcast feeds 199 | - (void) updatePodcast; // update podcast feed 200 | - (void) openLocation:(NSString *)x; // Opens a Music Store or audio stream URL 201 | 202 | @end 203 | 204 | // an item 205 | @interface iTunesItem : SBObject 206 | 207 | @property (copy, readonly) SBObject *container; // the container of the item 208 | - (NSInteger) id; // the id of the item 209 | @property (readonly) NSInteger index; // The index of the item in internal application order. 210 | @property (copy) NSString *name; // the name of the item 211 | @property (copy, readonly) NSString *persistentID; // the id of the item as a hexadecimal string. This id does not change over time. 212 | @property (copy) NSDictionary *properties; // every property of the item 213 | 214 | - (void) printPrintDialog:(BOOL)printDialog withProperties:(iTunesPrintSettings *)withProperties kind:(iTunesEKnd)kind theme:(NSString *)theme; // Print the specified object(s) 215 | - (void) close; // Close an object 216 | - (void) delete; // Delete an element from an object 217 | - (SBObject *) duplicateTo:(SBObject *)to; // Duplicate one or more object(s) 218 | - (BOOL) exists; // Verify if an object exists 219 | - (void) open; // open the specified object(s) 220 | - (void) playOnce:(BOOL)once; // play the current track or the specified track or file. 221 | - (void) reveal; // reveal and select a track or playlist 222 | 223 | @end 224 | 225 | // an AirPlay device 226 | @interface iTunesAirPlayDevice : iTunesItem 227 | 228 | @property (readonly) BOOL active; // is the device currently being played to? 229 | @property (readonly) BOOL available; // is the device currently available? 230 | @property (readonly) iTunesEAPD kind; // the kind of the device 231 | @property (copy, readonly) NSString *networkAddress; // the network (MAC) address of the device 232 | - (BOOL) protected; // is the device password- or passcode-protected? 233 | @property BOOL selected; // is the device currently selected? 234 | @property (readonly) BOOL supportsAudio; // does the device support audio playback? 235 | @property (readonly) BOOL supportsVideo; // does the device support video playback? 236 | @property NSInteger soundVolume; // the output volume for the device (0 = minimum, 100 = maximum) 237 | 238 | 239 | @end 240 | 241 | // a piece of art within a track 242 | @interface iTunesArtwork : iTunesItem 243 | 244 | @property (copy) NSImage *data; // data for this artwork, in the form of a picture 245 | @property (copy) NSString *objectDescription; // description of artwork as a string 246 | @property (readonly) BOOL downloaded; // was this artwork downloaded by iTunes? 247 | @property (copy, readonly) NSNumber *format; // the data format for this piece of artwork 248 | @property NSInteger kind; // kind or purpose of this piece of artwork 249 | @property (copy) NSData *rawData; // data for this artwork, in original format 250 | 251 | 252 | @end 253 | 254 | // converts a track to a specific file format 255 | @interface iTunesEncoder : iTunesItem 256 | 257 | @property (copy, readonly) NSString *format; // the data format created by the encoder 258 | 259 | 260 | @end 261 | 262 | // equalizer preset configuration 263 | @interface iTunesEQPreset : iTunesItem 264 | 265 | @property double band1; // the equalizer 32 Hz band level (-12.0 dB to +12.0 dB) 266 | @property double band2; // the equalizer 64 Hz band level (-12.0 dB to +12.0 dB) 267 | @property double band3; // the equalizer 125 Hz band level (-12.0 dB to +12.0 dB) 268 | @property double band4; // the equalizer 250 Hz band level (-12.0 dB to +12.0 dB) 269 | @property double band5; // the equalizer 500 Hz band level (-12.0 dB to +12.0 dB) 270 | @property double band6; // the equalizer 1 kHz band level (-12.0 dB to +12.0 dB) 271 | @property double band7; // the equalizer 2 kHz band level (-12.0 dB to +12.0 dB) 272 | @property double band8; // the equalizer 4 kHz band level (-12.0 dB to +12.0 dB) 273 | @property double band9; // the equalizer 8 kHz band level (-12.0 dB to +12.0 dB) 274 | @property double band10; // the equalizer 16 kHz band level (-12.0 dB to +12.0 dB) 275 | @property (readonly) BOOL modifiable; // can this preset be modified? 276 | @property double preamp; // the equalizer preamp level (-12.0 dB to +12.0 dB) 277 | @property BOOL updateTracks; // should tracks which refer to this preset be updated when the preset is renamed or deleted? 278 | 279 | 280 | @end 281 | 282 | // a list of songs/streams 283 | @interface iTunesPlaylist : iTunesItem 284 | 285 | - (SBElementArray *) tracks; 286 | 287 | @property (readonly) NSInteger duration; // the total length of all songs (in seconds) 288 | @property (copy) NSString *name; // the name of the playlist 289 | @property (copy, readonly) iTunesPlaylist *parent; // folder which contains this playlist (if any) 290 | @property BOOL shuffle; // play the songs in this playlist in random order? 291 | @property (readonly) long long size; // the total size of all songs (in bytes) 292 | @property iTunesERpt songRepeat; // playback repeat mode 293 | @property (readonly) iTunesESpK specialKind; // special playlist kind 294 | @property (copy, readonly) NSString *time; // the length of all songs in MM:SS format 295 | @property (readonly) BOOL visible; // is this playlist visible in the Source list? 296 | 297 | - (void) moveTo:(SBObject *)to; // Move playlist(s) to a new location 298 | - (iTunesTrack *) searchFor:(NSString *)for_ only:(iTunesESrA)only; // search a playlist for tracks matching the search string. Identical to entering search text in the Search field in iTunes. 299 | 300 | @end 301 | 302 | // a playlist representing an audio CD 303 | @interface iTunesAudioCDPlaylist : iTunesPlaylist 304 | 305 | - (SBElementArray *) audioCDTracks; 306 | 307 | @property (copy) NSString *artist; // the artist of the CD 308 | @property BOOL compilation; // is this CD a compilation album? 309 | @property (copy) NSString *composer; // the composer of the CD 310 | @property NSInteger discCount; // the total number of discs in this CD’s album 311 | @property NSInteger discNumber; // the index of this CD disc in the source album 312 | @property (copy) NSString *genre; // the genre of the CD 313 | @property NSInteger year; // the year the album was recorded/released 314 | 315 | 316 | @end 317 | 318 | // the master music library playlist 319 | @interface iTunesLibraryPlaylist : iTunesPlaylist 320 | 321 | - (SBElementArray *) fileTracks; 322 | - (SBElementArray *) URLTracks; 323 | - (SBElementArray *) sharedTracks; 324 | 325 | 326 | @end 327 | 328 | // the radio tuner playlist 329 | @interface iTunesRadioTunerPlaylist : iTunesPlaylist 330 | 331 | - (SBElementArray *) URLTracks; 332 | 333 | 334 | @end 335 | 336 | // a music source (music library, CD, device, etc.) 337 | @interface iTunesSource : iTunesItem 338 | 339 | - (SBElementArray *) audioCDPlaylists; 340 | - (SBElementArray *) libraryPlaylists; 341 | - (SBElementArray *) playlists; 342 | - (SBElementArray *) radioTunerPlaylists; 343 | - (SBElementArray *) userPlaylists; 344 | 345 | @property (readonly) long long capacity; // the total size of the source if it has a fixed size 346 | @property (readonly) long long freeSpace; // the free space on the source if it has a fixed size 347 | @property (readonly) iTunesESrc kind; 348 | 349 | - (void) update; // update the specified iPod 350 | - (void) eject; // eject the specified iPod 351 | 352 | @end 353 | 354 | // playable audio source 355 | @interface iTunesTrack : iTunesItem 356 | 357 | - (SBElementArray *) artworks; 358 | 359 | @property (copy) NSString *album; // the album name of the track 360 | @property (copy) NSString *albumArtist; // the album artist of the track 361 | @property NSInteger albumRating; // the rating of the album for this track (0 to 100) 362 | @property (readonly) iTunesERtK albumRatingKind; // the rating kind of the album rating for this track 363 | @property (copy) NSString *artist; // the artist/source of the track 364 | @property (readonly) NSInteger bitRate; // the bit rate of the track (in kbps) 365 | @property double bookmark; // the bookmark time of the track in seconds 366 | @property BOOL bookmarkable; // is the playback position for this track remembered? 367 | @property NSInteger bpm; // the tempo of this track in beats per minute 368 | @property (copy) NSString *category; // the category of the track 369 | @property (copy) NSString *comment; // freeform notes about the track 370 | @property BOOL compilation; // is this track from a compilation album? 371 | @property (copy) NSString *composer; // the composer of the track 372 | @property (readonly) NSInteger databaseID; // the common, unique ID for this track. If two tracks in different playlists have the same database ID, they are sharing the same data. 373 | @property (copy, readonly) NSDate *dateAdded; // the date the track was added to the playlist 374 | @property (copy) NSString *objectDescription; // the description of the track 375 | @property NSInteger discCount; // the total number of discs in the source album 376 | @property NSInteger discNumber; // the index of the disc containing this track on the source album 377 | @property (readonly) double duration; // the length of the track in seconds 378 | @property BOOL enabled; // is this track checked for playback? 379 | @property (copy) NSString *episodeID; // the episode ID of the track 380 | @property NSInteger episodeNumber; // the episode number of the track 381 | @property (copy) NSString *EQ; // the name of the EQ preset of the track 382 | @property double finish; // the stop time of the track in seconds 383 | @property BOOL gapless; // is this track from a gapless album? 384 | @property (copy) NSString *genre; // the music/audio genre (category) of the track 385 | @property (copy) NSString *grouping; // the grouping (piece) of the track. Generally used to denote movements within a classical work. 386 | @property (readonly) BOOL iTunesU; // is this track an iTunes U episode? 387 | @property (copy, readonly) NSString *kind; // a text description of the track 388 | @property (copy) NSString *longDescription; 389 | @property (copy) NSString *lyrics; // the lyrics of the track 390 | @property (copy, readonly) NSDate *modificationDate; // the modification date of the content of this track 391 | @property NSInteger playedCount; // number of times this track has been played 392 | @property (copy) NSDate *playedDate; // the date and time this track was last played 393 | @property (readonly) BOOL podcast; // is this track a podcast episode? 394 | @property NSInteger rating; // the rating of this track (0 to 100) 395 | @property (readonly) iTunesERtK ratingKind; // the rating kind of this track 396 | @property (copy, readonly) NSDate *releaseDate; // the release date of this track 397 | @property (readonly) NSInteger sampleRate; // the sample rate of the track (in Hz) 398 | @property NSInteger seasonNumber; // the season number of the track 399 | @property BOOL shufflable; // is this track included when shuffling? 400 | @property NSInteger skippedCount; // number of times this track has been skipped 401 | @property (copy) NSDate *skippedDate; // the date and time this track was last skipped 402 | @property (copy) NSString *show; // the show name of the track 403 | @property (copy) NSString *sortAlbum; // override string to use for the track when sorting by album 404 | @property (copy) NSString *sortArtist; // override string to use for the track when sorting by artist 405 | @property (copy) NSString *sortAlbumArtist; // override string to use for the track when sorting by album artist 406 | @property (copy) NSString *sortName; // override string to use for the track when sorting by name 407 | @property (copy) NSString *sortComposer; // override string to use for the track when sorting by composer 408 | @property (copy) NSString *sortShow; // override string to use for the track when sorting by show name 409 | @property (readonly) long long size; // the size of the track (in bytes) 410 | @property double start; // the start time of the track in seconds 411 | @property (copy, readonly) NSString *time; // the length of the track in MM:SS format 412 | @property NSInteger trackCount; // the total number of tracks on the source album 413 | @property NSInteger trackNumber; // the index of the track on the source album 414 | @property BOOL unplayed; // is this track unplayed? 415 | @property iTunesEVdK videoKind; // kind of video track 416 | @property NSInteger volumeAdjustment; // relative volume adjustment of the track (-100% to 100%) 417 | @property NSInteger year; // the year the track was recorded/released 418 | 419 | 420 | @end 421 | 422 | // a track on an audio CD 423 | @interface iTunesAudioCDTrack : iTunesTrack 424 | 425 | @property (copy, readonly) NSURL *location; // the location of the file represented by this track 426 | 427 | 428 | @end 429 | 430 | // a track representing an audio file (MP3, AIFF, etc.) 431 | @interface iTunesFileTrack : iTunesTrack 432 | 433 | @property (copy) NSURL *location; // the location of the file represented by this track 434 | 435 | - (void) refresh; // update file track information from the current information in the track’s file 436 | 437 | @end 438 | 439 | // a track residing in a shared library 440 | @interface iTunesSharedTrack : iTunesTrack 441 | 442 | 443 | @end 444 | 445 | // a track representing a network stream 446 | @interface iTunesURLTrack : iTunesTrack 447 | 448 | @property (copy) NSString *address; // the URL for this track 449 | 450 | - (void) download; // download podcast episode 451 | 452 | @end 453 | 454 | // custom playlists created by the user 455 | @interface iTunesUserPlaylist : iTunesPlaylist 456 | 457 | - (SBElementArray *) fileTracks; 458 | - (SBElementArray *) URLTracks; 459 | - (SBElementArray *) sharedTracks; 460 | 461 | @property BOOL shared; // is this playlist shared? 462 | @property (readonly) BOOL smart; // is this a Smart Playlist? 463 | 464 | 465 | @end 466 | 467 | // a folder that contains other playlists 468 | @interface iTunesFolderPlaylist : iTunesUserPlaylist 469 | 470 | 471 | @end 472 | 473 | // a visual plug-in 474 | @interface iTunesVisual : iTunesItem 475 | 476 | 477 | @end 478 | 479 | // any window 480 | @interface iTunesWindow : iTunesItem 481 | 482 | @property NSRect bounds; // the boundary rectangle for the window 483 | @property (readonly) BOOL closeable; // does the window have a close box? 484 | @property (readonly) BOOL collapseable; // does the window have a collapse (windowshade) box? 485 | @property BOOL collapsed; // is the window collapsed? 486 | @property NSPoint position; // the upper left position of the window 487 | @property (readonly) BOOL resizable; // is the window resizable? 488 | @property BOOL visible; // is the window visible? 489 | @property (readonly) BOOL zoomable; // is the window zoomable? 490 | @property BOOL zoomed; // is the window zoomed? 491 | 492 | 493 | @end 494 | 495 | // the main iTunes window 496 | @interface iTunesBrowserWindow : iTunesWindow 497 | 498 | @property BOOL minimized; // is the small player visible? 499 | @property (copy, readonly) SBObject *selection; // the selected songs 500 | @property (copy) iTunesPlaylist *view; // the playlist currently displayed in the window 501 | 502 | 503 | @end 504 | 505 | // the iTunes equalizer window 506 | @interface iTunesEQWindow : iTunesWindow 507 | 508 | @property BOOL minimized; // is the small EQ window visible? 509 | 510 | 511 | @end 512 | 513 | // a sub-window showing a single playlist 514 | @interface iTunesPlaylistWindow : iTunesWindow 515 | 516 | @property (copy, readonly) SBObject *selection; // the selected songs 517 | @property (copy, readonly) iTunesPlaylist *view; // the playlist displayed in the window 518 | 519 | 520 | @end 521 | 522 | --------------------------------------------------------------------------------