瀏覽代碼

Can launch at login. Version 1.5.0

Thomas Buck 11 年之前
父節點
當前提交
f86a544b53
共有 38 個檔案被更改,包括 529 行新增426 行删除
  1. 167
    153
      BaconBar.xcodeproj/project.pbxproj
  2. 10
    0
      BaconBar.xcodeproj/project.xcworkspace/xcuserdata/thomas.xcuserdatad/WorkspaceSettings.xcsettings
  3. 86
    0
      BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/BaconBarHelper.xcscheme
  4. 15
    5
      BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/RedditBar.xcscheme
  5. 15
    0
      BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/xcschememanagement.plist
  6. 15
    0
      BaconBarHelper/AppDelegate.h
  7. 40
    0
      BaconBarHelper/AppDelegate.m
  8. 13
    1
      BaconBarHelper/BaconBarHelper-Info.plist
  9. 9
    0
      BaconBarHelper/BaconBarHelper-Prefix.pch
  10. 8
    0
      BaconBarHelper/BaconBarHelper.entitlements
  11. 68
    0
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/Contents.json
  12. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_128x128.png
  13. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png
  14. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_16x16.png
  15. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png
  16. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_256x256.png
  17. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png
  18. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_32x32-1.png
  19. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png
  20. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_512x512.png
  21. 二進制
      BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png
  22. 0
    0
      BaconBarHelper/de.lproj/InfoPlist.strings
  23. 0
    0
      BaconBarHelper/en.lproj/InfoPlist.strings
  24. 14
    0
      BaconBarHelper/main.m
  25. 2
    2
      RedditBar/BaconBar-Info.plist
  26. 3
    0
      RedditBar/Base.lproj/Prefs.strings
  27. 33
    24
      RedditBar/Base.lproj/Prefs.xib
  28. 1
    0
      RedditBar/PrefController.h
  29. 8
    1
      RedditBar/PrefController.m
  30. 1
    0
      RedditBar/StateModel.h
  31. 14
    1
      RedditBar/StateModel.m
  32. 4
    1
      RedditBar/de.lproj/Prefs.strings
  33. 3
    0
      RedditBar/en.lproj/Prefs.strings
  34. 0
    34
      RedditBarTests/RedditBarTests.m
  35. 0
    21
      RedditBarTests/de.lproj/MainMenu.strings
  36. 0
    81
      RedditBarTests/de.lproj/Prefs.strings
  37. 0
    21
      RedditBarTests/en.lproj/MainMenu.strings
  38. 0
    81
      RedditBarTests/en.lproj/Prefs.strings

+ 167
- 153
BaconBar.xcodeproj/project.pbxproj 查看文件

@@ -12,6 +12,13 @@
12 12
 		E934191B184A47DE00D03488 /* Prefs.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9341919184A47DE00D03488 /* Prefs.xib */; };
13 13
 		E9A129B1184BD24000F50D1D /* RedditItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E9A129B0184BD24000F50D1D /* RedditItem.m */; };
14 14
 		E9B6773E184B73DC00850559 /* Reddit.m in Sources */ = {isa = PBXBuildFile; fileRef = E9B6773D184B73DC00850559 /* Reddit.m */; };
15
+		E9C32422186E49F000B41515 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9C32421186E49F000B41515 /* ServiceManagement.framework */; };
16
+		E9C32428186E4C8100B41515 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9CF1F20184961010004AE02 /* Cocoa.framework */; };
17
+		E9C3242E186E4C8100B41515 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E9C3242C186E4C8100B41515 /* InfoPlist.strings */; };
18
+		E9C32430186E4C8100B41515 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C3242F186E4C8100B41515 /* main.m */; };
19
+		E9C32437186E4C8100B41515 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32436186E4C8100B41515 /* AppDelegate.m */; };
20
+		E9C3243C186E4C8100B41515 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9C3243B186E4C8100B41515 /* Images.xcassets */; };
21
+		E9C32455186E4D1700B41515 /* BaconBarHelper.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = E9C32427186E4C8100B41515 /* BaconBarHelper.app */; };
15 22
 		E9CF1F21184961010004AE02 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9CF1F20184961010004AE02 /* Cocoa.framework */; };
16 23
 		E9CF1F2B184961010004AE02 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E9CF1F29184961010004AE02 /* InfoPlist.strings */; };
17 24
 		E9CF1F2D184961010004AE02 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CF1F2C184961010004AE02 /* main.m */; };
@@ -19,23 +26,22 @@
19 26
 		E9CF1F34184961010004AE02 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CF1F33184961010004AE02 /* AppDelegate.m */; };
20 27
 		E9CF1F37184961020004AE02 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9CF1F35184961020004AE02 /* MainMenu.xib */; };
21 28
 		E9CF1F39184961020004AE02 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9CF1F38184961020004AE02 /* Images.xcassets */; };
22
-		E9CF1F40184961020004AE02 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9CF1F3F184961020004AE02 /* XCTest.framework */; };
23
-		E9CF1F41184961020004AE02 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9CF1F20184961010004AE02 /* Cocoa.framework */; };
24
-		E9CF1F49184961020004AE02 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = E9CF1F47184961020004AE02 /* InfoPlist.strings */; };
25
-		E9CF1F4B184961020004AE02 /* RedditBarTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CF1F4A184961020004AE02 /* RedditBarTests.m */; };
26 29
 		E9CF1F5C1849685C0004AE02 /* PrefController.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CF1F5B1849685C0004AE02 /* PrefController.m */; };
27 30
 		E9F64A2E185E1E2900D6CA16 /* PrefWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E9F64A2D185E1E2900D6CA16 /* PrefWindow.m */; };
28 31
 /* End PBXBuildFile section */
29 32
 
30
-/* Begin PBXContainerItemProxy section */
31
-		E9CF1F42184961020004AE02 /* PBXContainerItemProxy */ = {
32
-			isa = PBXContainerItemProxy;
33
-			containerPortal = E9CF1F15184961010004AE02 /* Project object */;
34
-			proxyType = 1;
35
-			remoteGlobalIDString = E9CF1F1C184961010004AE02;
36
-			remoteInfo = RedditBar;
37
-		};
38
-/* End PBXContainerItemProxy section */
33
+/* Begin PBXCopyFilesBuildPhase section */
34
+		E9C32454186E4CF900B41515 /* CopyFiles */ = {
35
+			isa = PBXCopyFilesBuildPhase;
36
+			buildActionMask = 2147483647;
37
+			dstPath = Contents/Library/LoginItems;
38
+			dstSubfolderSpec = 1;
39
+			files = (
40
+				E9C32455186E4D1700B41515 /* BaconBarHelper.app in CopyFiles */,
41
+			);
42
+			runOnlyForDeploymentPostprocessing = 0;
43
+		};
44
+/* End PBXCopyFilesBuildPhase section */
39 45
 
40 46
 /* Begin PBXFileReference section */
41 47
 		E90E74B3184FAA0F00F38929 /* en */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -44,7 +50,6 @@
44 50
 		E90E74B8184FAADE00F38929 /* de */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
45 51
 		E90E74B9184FAADE00F38929 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
46 52
 		E90E74BA184FAADE00F38929 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = de; path = de.lproj/Credits.rtf; sourceTree = "<group>"; };
47
-		E90E74BB184FAADE00F38929 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
48 53
 		E9341912184A1A1A00D03488 /* StateModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StateModel.h; sourceTree = "<group>"; };
49 54
 		E9341913184A1A1A00D03488 /* StateModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StateModel.m; sourceTree = "<group>"; };
50 55
 		E934191A184A47DE00D03488 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Prefs.xib; sourceTree = "<group>"; };
@@ -54,6 +59,17 @@
54 59
 		E9A129B0184BD24000F50D1D /* RedditItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RedditItem.m; sourceTree = "<group>"; };
55 60
 		E9B6773C184B73DC00850559 /* Reddit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reddit.h; sourceTree = "<group>"; };
56 61
 		E9B6773D184B73DC00850559 /* Reddit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reddit.m; sourceTree = "<group>"; };
62
+		E9C32421186E49F000B41515 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; };
63
+		E9C32427186E4C8100B41515 /* BaconBarHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BaconBarHelper.app; sourceTree = BUILT_PRODUCTS_DIR; };
64
+		E9C3242B186E4C8100B41515 /* BaconBarHelper-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BaconBarHelper-Info.plist"; sourceTree = "<group>"; };
65
+		E9C3242D186E4C8100B41515 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
66
+		E9C3242F186E4C8100B41515 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
67
+		E9C32431186E4C8100B41515 /* BaconBarHelper-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BaconBarHelper-Prefix.pch"; sourceTree = "<group>"; };
68
+		E9C32435186E4C8100B41515 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
69
+		E9C32436186E4C8100B41515 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
70
+		E9C3243B186E4C8100B41515 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
71
+		E9C32456186E4D9B00B41515 /* BaconBarHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = BaconBarHelper.entitlements; sourceTree = "<group>"; };
72
+		E9C32457186E54D300B41515 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
57 73
 		E9CF1F1D184961010004AE02 /* BaconBar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BaconBar.app; sourceTree = BUILT_PRODUCTS_DIR; };
58 74
 		E9CF1F20184961010004AE02 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
59 75
 		E9CF1F23184961010004AE02 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@@ -68,11 +84,7 @@
68 84
 		E9CF1F33184961010004AE02 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
69 85
 		E9CF1F36184961020004AE02 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
70 86
 		E9CF1F38184961020004AE02 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
71
-		E9CF1F3E184961020004AE02 /* BaconBarTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BaconBarTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
72 87
 		E9CF1F3F184961020004AE02 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
73
-		E9CF1F46184961020004AE02 /* RedditBarTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "RedditBarTests-Info.plist"; sourceTree = "<group>"; };
74
-		E9CF1F48184961020004AE02 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
75
-		E9CF1F4A184961020004AE02 /* RedditBarTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RedditBarTests.m; sourceTree = "<group>"; };
76 88
 		E9CF1F5A1849685C0004AE02 /* PrefController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrefController.h; sourceTree = "<group>"; };
77 89
 		E9CF1F5B1849685C0004AE02 /* PrefController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrefController.m; sourceTree = "<group>"; };
78 90
 		E9F64A2B185D51C100D6CA16 /* RedditBar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = RedditBar.entitlements; sourceTree = "<group>"; };
@@ -81,31 +93,54 @@
81 93
 /* End PBXFileReference section */
82 94
 
83 95
 /* Begin PBXFrameworksBuildPhase section */
84
-		E9CF1F1A184961010004AE02 /* Frameworks */ = {
96
+		E9C32424186E4C8100B41515 /* Frameworks */ = {
85 97
 			isa = PBXFrameworksBuildPhase;
86 98
 			buildActionMask = 2147483647;
87 99
 			files = (
88
-				E9CF1F21184961010004AE02 /* Cocoa.framework in Frameworks */,
100
+				E9C32428186E4C8100B41515 /* Cocoa.framework in Frameworks */,
89 101
 			);
90 102
 			runOnlyForDeploymentPostprocessing = 0;
91 103
 		};
92
-		E9CF1F3B184961020004AE02 /* Frameworks */ = {
104
+		E9CF1F1A184961010004AE02 /* Frameworks */ = {
93 105
 			isa = PBXFrameworksBuildPhase;
94 106
 			buildActionMask = 2147483647;
95 107
 			files = (
96
-				E9CF1F41184961020004AE02 /* Cocoa.framework in Frameworks */,
97
-				E9CF1F40184961020004AE02 /* XCTest.framework in Frameworks */,
108
+				E9C32422186E49F000B41515 /* ServiceManagement.framework in Frameworks */,
109
+				E9CF1F21184961010004AE02 /* Cocoa.framework in Frameworks */,
98 110
 			);
99 111
 			runOnlyForDeploymentPostprocessing = 0;
100 112
 		};
101 113
 /* End PBXFrameworksBuildPhase section */
102 114
 
103 115
 /* Begin PBXGroup section */
116
+		E9C32429186E4C8100B41515 /* BaconBarHelper */ = {
117
+			isa = PBXGroup;
118
+			children = (
119
+				E9C32456186E4D9B00B41515 /* BaconBarHelper.entitlements */,
120
+				E9C32435186E4C8100B41515 /* AppDelegate.h */,
121
+				E9C32436186E4C8100B41515 /* AppDelegate.m */,
122
+				E9C3243B186E4C8100B41515 /* Images.xcassets */,
123
+				E9C3242A186E4C8100B41515 /* Supporting Files */,
124
+			);
125
+			path = BaconBarHelper;
126
+			sourceTree = "<group>";
127
+		};
128
+		E9C3242A186E4C8100B41515 /* Supporting Files */ = {
129
+			isa = PBXGroup;
130
+			children = (
131
+				E9C3242B186E4C8100B41515 /* BaconBarHelper-Info.plist */,
132
+				E9C3242C186E4C8100B41515 /* InfoPlist.strings */,
133
+				E9C3242F186E4C8100B41515 /* main.m */,
134
+				E9C32431186E4C8100B41515 /* BaconBarHelper-Prefix.pch */,
135
+			);
136
+			name = "Supporting Files";
137
+			sourceTree = "<group>";
138
+		};
104 139
 		E9CF1F14184961010004AE02 = {
105 140
 			isa = PBXGroup;
106 141
 			children = (
107 142
 				E9CF1F26184961010004AE02 /* RedditBar */,
108
-				E9CF1F44184961020004AE02 /* RedditBarTests */,
143
+				E9C32429186E4C8100B41515 /* BaconBarHelper */,
109 144
 				E9CF1F1F184961010004AE02 /* Frameworks */,
110 145
 				E9CF1F1E184961010004AE02 /* Products */,
111 146
 			);
@@ -115,7 +150,7 @@
115 150
 			isa = PBXGroup;
116 151
 			children = (
117 152
 				E9CF1F1D184961010004AE02 /* BaconBar.app */,
118
-				E9CF1F3E184961020004AE02 /* BaconBarTests.xctest */,
153
+				E9C32427186E4C8100B41515 /* BaconBarHelper.app */,
119 154
 			);
120 155
 			name = Products;
121 156
 			sourceTree = "<group>";
@@ -123,6 +158,7 @@
123 158
 		E9CF1F1F184961010004AE02 /* Frameworks */ = {
124 159
 			isa = PBXGroup;
125 160
 			children = (
161
+				E9C32421186E49F000B41515 /* ServiceManagement.framework */,
126 162
 				E9CF1F20184961010004AE02 /* Cocoa.framework */,
127 163
 				E9CF1F3F184961020004AE02 /* XCTest.framework */,
128 164
 				E9CF1F22184961010004AE02 /* Other Frameworks */,
@@ -177,27 +213,26 @@
177 213
 			name = "Supporting Files";
178 214
 			sourceTree = "<group>";
179 215
 		};
180
-		E9CF1F44184961020004AE02 /* RedditBarTests */ = {
181
-			isa = PBXGroup;
182
-			children = (
183
-				E9CF1F4A184961020004AE02 /* RedditBarTests.m */,
184
-				E9CF1F45184961020004AE02 /* Supporting Files */,
185
-			);
186
-			path = RedditBarTests;
187
-			sourceTree = "<group>";
188
-		};
189
-		E9CF1F45184961020004AE02 /* Supporting Files */ = {
190
-			isa = PBXGroup;
191
-			children = (
192
-				E9CF1F46184961020004AE02 /* RedditBarTests-Info.plist */,
193
-				E9CF1F47184961020004AE02 /* InfoPlist.strings */,
194
-			);
195
-			name = "Supporting Files";
196
-			sourceTree = "<group>";
197
-		};
198 216
 /* End PBXGroup section */
199 217
 
200 218
 /* Begin PBXNativeTarget section */
219
+		E9C32426186E4C8100B41515 /* BaconBarHelper */ = {
220
+			isa = PBXNativeTarget;
221
+			buildConfigurationList = E9C3244E186E4C8100B41515 /* Build configuration list for PBXNativeTarget "BaconBarHelper" */;
222
+			buildPhases = (
223
+				E9C32423186E4C8100B41515 /* Sources */,
224
+				E9C32424186E4C8100B41515 /* Frameworks */,
225
+				E9C32425186E4C8100B41515 /* Resources */,
226
+			);
227
+			buildRules = (
228
+			);
229
+			dependencies = (
230
+			);
231
+			name = BaconBarHelper;
232
+			productName = BaconBarHelper;
233
+			productReference = E9C32427186E4C8100B41515 /* BaconBarHelper.app */;
234
+			productType = "com.apple.product-type.application";
235
+		};
201 236
 		E9CF1F1C184961010004AE02 /* BaconBar */ = {
202 237
 			isa = PBXNativeTarget;
203 238
 			buildConfigurationList = E9CF1F4E184961020004AE02 /* Build configuration list for PBXNativeTarget "BaconBar" */;
@@ -207,6 +242,7 @@
207 242
 				E9341915184A3A6500D03488 /* ShellScript */,
208 243
 				E9CF1F1B184961010004AE02 /* Resources */,
209 244
 				E97FD65D185231D0006B5B3E /* ShellScript */,
245
+				E9C32454186E4CF900B41515 /* CopyFiles */,
210 246
 			);
211 247
 			buildRules = (
212 248
 			);
@@ -217,24 +253,6 @@
217 253
 			productReference = E9CF1F1D184961010004AE02 /* BaconBar.app */;
218 254
 			productType = "com.apple.product-type.application";
219 255
 		};
220
-		E9CF1F3D184961020004AE02 /* BaconBarTests */ = {
221
-			isa = PBXNativeTarget;
222
-			buildConfigurationList = E9CF1F51184961020004AE02 /* Build configuration list for PBXNativeTarget "BaconBarTests" */;
223
-			buildPhases = (
224
-				E9CF1F3A184961020004AE02 /* Sources */,
225
-				E9CF1F3B184961020004AE02 /* Frameworks */,
226
-				E9CF1F3C184961020004AE02 /* Resources */,
227
-			);
228
-			buildRules = (
229
-			);
230
-			dependencies = (
231
-				E9CF1F43184961020004AE02 /* PBXTargetDependency */,
232
-			);
233
-			name = BaconBarTests;
234
-			productName = RedditBarTests;
235
-			productReference = E9CF1F3E184961020004AE02 /* BaconBarTests.xctest */;
236
-			productType = "com.apple.product-type.bundle.unit-test";
237
-		};
238 256
 /* End PBXNativeTarget section */
239 257
 
240 258
 /* Begin PBXProject section */
@@ -244,7 +262,7 @@
244 262
 				LastUpgradeCheck = 0500;
245 263
 				ORGANIZATIONNAME = xythobuz;
246 264
 				TargetAttributes = {
247
-					E9CF1F1C184961010004AE02 = {
265
+					E9C32426186E4C8100B41515 = {
248 266
 						DevelopmentTeam = 2YRH3A6P3C;
249 267
 						SystemCapabilities = {
250 268
 							com.apple.Sandbox = {
@@ -252,8 +270,13 @@
252 270
 							};
253 271
 						};
254 272
 					};
255
-					E9CF1F3D184961020004AE02 = {
256
-						TestTargetID = E9CF1F1C184961010004AE02;
273
+					E9CF1F1C184961010004AE02 = {
274
+						DevelopmentTeam = 2YRH3A6P3C;
275
+						SystemCapabilities = {
276
+							com.apple.Sandbox = {
277
+								enabled = 1;
278
+							};
279
+						};
257 280
 					};
258 281
 				};
259 282
 			};
@@ -272,12 +295,21 @@
272 295
 			projectRoot = "";
273 296
 			targets = (
274 297
 				E9CF1F1C184961010004AE02 /* BaconBar */,
275
-				E9CF1F3D184961020004AE02 /* BaconBarTests */,
298
+				E9C32426186E4C8100B41515 /* BaconBarHelper */,
276 299
 			);
277 300
 		};
278 301
 /* End PBXProject section */
279 302
 
280 303
 /* Begin PBXResourcesBuildPhase section */
304
+		E9C32425186E4C8100B41515 /* Resources */ = {
305
+			isa = PBXResourcesBuildPhase;
306
+			buildActionMask = 2147483647;
307
+			files = (
308
+				E9C3242E186E4C8100B41515 /* InfoPlist.strings in Resources */,
309
+				E9C3243C186E4C8100B41515 /* Images.xcassets in Resources */,
310
+			);
311
+			runOnlyForDeploymentPostprocessing = 0;
312
+		};
281 313
 		E9CF1F1B184961010004AE02 /* Resources */ = {
282 314
 			isa = PBXResourcesBuildPhase;
283 315
 			buildActionMask = 2147483647;
@@ -291,14 +323,6 @@
291 323
 			);
292 324
 			runOnlyForDeploymentPostprocessing = 0;
293 325
 		};
294
-		E9CF1F3C184961020004AE02 /* Resources */ = {
295
-			isa = PBXResourcesBuildPhase;
296
-			buildActionMask = 2147483647;
297
-			files = (
298
-				E9CF1F49184961020004AE02 /* InfoPlist.strings in Resources */,
299
-			);
300
-			runOnlyForDeploymentPostprocessing = 0;
301
-		};
302 326
 /* End PBXResourcesBuildPhase section */
303 327
 
304 328
 /* Begin PBXShellScriptBuildPhase section */
@@ -331,6 +355,15 @@
331 355
 /* End PBXShellScriptBuildPhase section */
332 356
 
333 357
 /* Begin PBXSourcesBuildPhase section */
358
+		E9C32423186E4C8100B41515 /* Sources */ = {
359
+			isa = PBXSourcesBuildPhase;
360
+			buildActionMask = 2147483647;
361
+			files = (
362
+				E9C32437186E4C8100B41515 /* AppDelegate.m in Sources */,
363
+				E9C32430186E4C8100B41515 /* main.m in Sources */,
364
+			);
365
+			runOnlyForDeploymentPostprocessing = 0;
366
+		};
334 367
 		E9CF1F19184961010004AE02 /* Sources */ = {
335 368
 			isa = PBXSourcesBuildPhase;
336 369
 			buildActionMask = 2147483647;
@@ -345,24 +378,8 @@
345 378
 			);
346 379
 			runOnlyForDeploymentPostprocessing = 0;
347 380
 		};
348
-		E9CF1F3A184961020004AE02 /* Sources */ = {
349
-			isa = PBXSourcesBuildPhase;
350
-			buildActionMask = 2147483647;
351
-			files = (
352
-				E9CF1F4B184961020004AE02 /* RedditBarTests.m in Sources */,
353
-			);
354
-			runOnlyForDeploymentPostprocessing = 0;
355
-		};
356 381
 /* End PBXSourcesBuildPhase section */
357 382
 
358
-/* Begin PBXTargetDependency section */
359
-		E9CF1F43184961020004AE02 /* PBXTargetDependency */ = {
360
-			isa = PBXTargetDependency;
361
-			target = E9CF1F1C184961010004AE02 /* BaconBar */;
362
-			targetProxy = E9CF1F42184961020004AE02 /* PBXContainerItemProxy */;
363
-		};
364
-/* End PBXTargetDependency section */
365
-
366 383
 /* Begin PBXVariantGroup section */
367 384
 		E90E74B2184FAA0F00F38929 /* Localizable.strings */ = {
368 385
 			isa = PBXVariantGroup;
@@ -383,6 +400,15 @@
383 400
 			name = Prefs.xib;
384 401
 			sourceTree = "<group>";
385 402
 		};
403
+		E9C3242C186E4C8100B41515 /* InfoPlist.strings */ = {
404
+			isa = PBXVariantGroup;
405
+			children = (
406
+				E9C3242D186E4C8100B41515 /* en */,
407
+				E9C32457186E54D300B41515 /* de */,
408
+			);
409
+			name = InfoPlist.strings;
410
+			sourceTree = "<group>";
411
+		};
386 412
 		E9CF1F29184961010004AE02 /* InfoPlist.strings */ = {
387 413
 			isa = PBXVariantGroup;
388 414
 			children = (
@@ -411,18 +437,47 @@
411 437
 			name = MainMenu.xib;
412 438
 			sourceTree = "<group>";
413 439
 		};
414
-		E9CF1F47184961020004AE02 /* InfoPlist.strings */ = {
415
-			isa = PBXVariantGroup;
416
-			children = (
417
-				E9CF1F48184961020004AE02 /* en */,
418
-				E90E74BB184FAADE00F38929 /* de */,
419
-			);
420
-			name = InfoPlist.strings;
421
-			sourceTree = "<group>";
422
-		};
423 440
 /* End PBXVariantGroup section */
424 441
 
425 442
 /* Begin XCBuildConfiguration section */
443
+		E9C3244F186E4C8100B41515 /* Debug */ = {
444
+			isa = XCBuildConfiguration;
445
+			buildSettings = {
446
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
447
+				CODE_SIGN_ENTITLEMENTS = BaconBarHelper/BaconBarHelper.entitlements;
448
+				CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
449
+				COMBINE_HIDPI_IMAGES = YES;
450
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
451
+				GCC_PREFIX_HEADER = "BaconBarHelper/BaconBarHelper-Prefix.pch";
452
+				GCC_PREPROCESSOR_DEFINITIONS = (
453
+					"DEBUG=1",
454
+					"$(inherited)",
455
+				);
456
+				INFOPLIST_FILE = "BaconBarHelper/BaconBarHelper-Info.plist";
457
+				PRODUCT_NAME = "$(TARGET_NAME)";
458
+				PROVISIONING_PROFILE = "96C11281-B37D-4B03-89DD-AC0908449C25";
459
+				SKIP_INSTALL = YES;
460
+				WRAPPER_EXTENSION = app;
461
+			};
462
+			name = Debug;
463
+		};
464
+		E9C32450186E4C8100B41515 /* Release */ = {
465
+			isa = XCBuildConfiguration;
466
+			buildSettings = {
467
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
468
+				CODE_SIGN_ENTITLEMENTS = BaconBarHelper/BaconBarHelper.entitlements;
469
+				CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
470
+				COMBINE_HIDPI_IMAGES = YES;
471
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
472
+				GCC_PREFIX_HEADER = "BaconBarHelper/BaconBarHelper-Prefix.pch";
473
+				INFOPLIST_FILE = "BaconBarHelper/BaconBarHelper-Info.plist";
474
+				PRODUCT_NAME = "$(TARGET_NAME)";
475
+				PROVISIONING_PROFILE = "96C11281-B37D-4B03-89DD-AC0908449C25";
476
+				SKIP_INSTALL = YES;
477
+				WRAPPER_EXTENSION = app;
478
+			};
479
+			name = Release;
480
+		};
426 481
 		E9CF1F4C184961020004AE02 /* Debug */ = {
427 482
 			isa = XCBuildConfiguration;
428 483
 			buildSettings = {
@@ -496,15 +551,15 @@
496 551
 			buildSettings = {
497 552
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
498 553
 				CODE_SIGN_ENTITLEMENTS = RedditBar/RedditBar.entitlements;
499
-				CODE_SIGN_IDENTITY = "Mac Developer";
500
-				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
554
+				CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
555
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
501 556
 				COMBINE_HIDPI_IMAGES = YES;
502 557
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
503 558
 				GCC_PREFIX_HEADER = "RedditBar/BaconBar-Prefix.pch";
504 559
 				INFOPLIST_FILE = "RedditBar/BaconBar-Info.plist";
505 560
 				MACOSX_DEPLOYMENT_TARGET = 10.8;
506 561
 				PRODUCT_NAME = BaconBar;
507
-				PROVISIONING_PROFILE = "";
562
+				PROVISIONING_PROFILE = "96C11281-B37D-4B03-89DD-AC0908449C25";
508 563
 				WRAPPER_EXTENSION = app;
509 564
 			};
510 565
 			name = Debug;
@@ -514,62 +569,30 @@
514 569
 			buildSettings = {
515 570
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
516 571
 				CODE_SIGN_ENTITLEMENTS = RedditBar/RedditBar.entitlements;
517
-				CODE_SIGN_IDENTITY = "Mac Developer";
518
-				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
572
+				CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
573
+				"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application: Thomas Buck (2YRH3A6P3C)";
519 574
 				COMBINE_HIDPI_IMAGES = YES;
520 575
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
521 576
 				GCC_PREFIX_HEADER = "RedditBar/BaconBar-Prefix.pch";
522 577
 				INFOPLIST_FILE = "RedditBar/BaconBar-Info.plist";
523 578
 				MACOSX_DEPLOYMENT_TARGET = 10.8;
524 579
 				PRODUCT_NAME = BaconBar;
525
-				PROVISIONING_PROFILE = "";
580
+				PROVISIONING_PROFILE = "96C11281-B37D-4B03-89DD-AC0908449C25";
526 581
 				WRAPPER_EXTENSION = app;
527 582
 			};
528 583
 			name = Release;
529 584
 		};
530
-		E9CF1F52184961020004AE02 /* Debug */ = {
531
-			isa = XCBuildConfiguration;
532
-			buildSettings = {
533
-				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/RedditBar.app/Contents/MacOS/RedditBar";
534
-				COMBINE_HIDPI_IMAGES = YES;
535
-				FRAMEWORK_SEARCH_PATHS = (
536
-					"$(DEVELOPER_FRAMEWORKS_DIR)",
537
-					"$(inherited)",
538
-				);
539
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
540
-				GCC_PREFIX_HEADER = "RedditBar/RedditBar-Prefix.pch";
541
-				GCC_PREPROCESSOR_DEFINITIONS = (
542
-					"DEBUG=1",
543
-					"$(inherited)",
544
-				);
545
-				INFOPLIST_FILE = "RedditBarTests/RedditBarTests-Info.plist";
546
-				PRODUCT_NAME = BaconBarTests;
547
-				TEST_HOST = "$(BUNDLE_LOADER)";
548
-				WRAPPER_EXTENSION = xctest;
549
-			};
550
-			name = Debug;
551
-		};
552
-		E9CF1F53184961020004AE02 /* Release */ = {
553
-			isa = XCBuildConfiguration;
554
-			buildSettings = {
555
-				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/RedditBar.app/Contents/MacOS/RedditBar";
556
-				COMBINE_HIDPI_IMAGES = YES;
557
-				FRAMEWORK_SEARCH_PATHS = (
558
-					"$(DEVELOPER_FRAMEWORKS_DIR)",
559
-					"$(inherited)",
560
-				);
561
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
562
-				GCC_PREFIX_HEADER = "RedditBar/RedditBar-Prefix.pch";
563
-				INFOPLIST_FILE = "RedditBarTests/RedditBarTests-Info.plist";
564
-				PRODUCT_NAME = BaconBarTests;
565
-				TEST_HOST = "$(BUNDLE_LOADER)";
566
-				WRAPPER_EXTENSION = xctest;
567
-			};
568
-			name = Release;
569
-		};
570 585
 /* End XCBuildConfiguration section */
571 586
 
572 587
 /* Begin XCConfigurationList section */
588
+		E9C3244E186E4C8100B41515 /* Build configuration list for PBXNativeTarget "BaconBarHelper" */ = {
589
+			isa = XCConfigurationList;
590
+			buildConfigurations = (
591
+				E9C3244F186E4C8100B41515 /* Debug */,
592
+				E9C32450186E4C8100B41515 /* Release */,
593
+			);
594
+			defaultConfigurationIsVisible = 0;
595
+		};
573 596
 		E9CF1F18184961010004AE02 /* Build configuration list for PBXProject "BaconBar" */ = {
574 597
 			isa = XCConfigurationList;
575 598
 			buildConfigurations = (
@@ -588,15 +611,6 @@
588 611
 			defaultConfigurationIsVisible = 0;
589 612
 			defaultConfigurationName = Release;
590 613
 		};
591
-		E9CF1F51184961020004AE02 /* Build configuration list for PBXNativeTarget "BaconBarTests" */ = {
592
-			isa = XCConfigurationList;
593
-			buildConfigurations = (
594
-				E9CF1F52184961020004AE02 /* Debug */,
595
-				E9CF1F53184961020004AE02 /* Release */,
596
-			);
597
-			defaultConfigurationIsVisible = 0;
598
-			defaultConfigurationName = Release;
599
-		};
600 614
 /* End XCConfigurationList section */
601 615
 	};
602 616
 	rootObject = E9CF1F15184961010004AE02 /* Project object */;

+ 10
- 0
BaconBar.xcodeproj/project.xcworkspace/xcuserdata/thomas.xcuserdatad/WorkspaceSettings.xcsettings 查看文件

@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
6
+	<true/>
7
+	<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
8
+	<true/>
9
+</dict>
10
+</plist>

+ 86
- 0
BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/BaconBarHelper.xcscheme 查看文件

@@ -0,0 +1,86 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0500"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "E9C32426186E4C8100B41515"
18
+               BuildableName = "BaconBarHelper.app"
19
+               BlueprintName = "BaconBarHelper"
20
+               ReferencedContainer = "container:BaconBar.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+      </BuildActionEntries>
24
+   </BuildAction>
25
+   <TestAction
26
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
27
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
28
+      shouldUseLaunchSchemeArgsEnv = "YES"
29
+      buildConfiguration = "Debug">
30
+      <Testables>
31
+      </Testables>
32
+      <MacroExpansion>
33
+         <BuildableReference
34
+            BuildableIdentifier = "primary"
35
+            BlueprintIdentifier = "E9C32426186E4C8100B41515"
36
+            BuildableName = "BaconBarHelper.app"
37
+            BlueprintName = "BaconBarHelper"
38
+            ReferencedContainer = "container:BaconBar.xcodeproj">
39
+         </BuildableReference>
40
+      </MacroExpansion>
41
+   </TestAction>
42
+   <LaunchAction
43
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
44
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
45
+      launchStyle = "0"
46
+      useCustomWorkingDirectory = "NO"
47
+      buildConfiguration = "Debug"
48
+      ignoresPersistentStateOnLaunch = "NO"
49
+      debugDocumentVersioning = "YES"
50
+      allowLocationSimulation = "YES">
51
+      <BuildableProductRunnable>
52
+         <BuildableReference
53
+            BuildableIdentifier = "primary"
54
+            BlueprintIdentifier = "E9C32426186E4C8100B41515"
55
+            BuildableName = "BaconBarHelper.app"
56
+            BlueprintName = "BaconBarHelper"
57
+            ReferencedContainer = "container:BaconBar.xcodeproj">
58
+         </BuildableReference>
59
+      </BuildableProductRunnable>
60
+      <AdditionalOptions>
61
+      </AdditionalOptions>
62
+   </LaunchAction>
63
+   <ProfileAction
64
+      shouldUseLaunchSchemeArgsEnv = "YES"
65
+      savedToolIdentifier = ""
66
+      useCustomWorkingDirectory = "NO"
67
+      buildConfiguration = "Release"
68
+      debugDocumentVersioning = "YES">
69
+      <BuildableProductRunnable>
70
+         <BuildableReference
71
+            BuildableIdentifier = "primary"
72
+            BlueprintIdentifier = "E9C32426186E4C8100B41515"
73
+            BuildableName = "BaconBarHelper.app"
74
+            BlueprintName = "BaconBarHelper"
75
+            ReferencedContainer = "container:BaconBar.xcodeproj">
76
+         </BuildableReference>
77
+      </BuildableProductRunnable>
78
+   </ProfileAction>
79
+   <AnalyzeAction
80
+      buildConfiguration = "Debug">
81
+   </AnalyzeAction>
82
+   <ArchiveAction
83
+      buildConfiguration = "Release"
84
+      revealArchiveInOrganizer = "YES">
85
+   </ArchiveAction>
86
+</Scheme>

+ 15
- 5
BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/RedditBar.xcscheme 查看文件

@@ -15,7 +15,7 @@
15 15
             <BuildableReference
16 16
                BuildableIdentifier = "primary"
17 17
                BlueprintIdentifier = "E9CF1F1C184961010004AE02"
18
-               BuildableName = "RedditBar.app"
18
+               BuildableName = "BaconBar.app"
19 19
                BlueprintName = "BaconBar"
20 20
                ReferencedContainer = "container:BaconBar.xcodeproj">
21 21
             </BuildableReference>
@@ -33,17 +33,27 @@
33 33
             <BuildableReference
34 34
                BuildableIdentifier = "primary"
35 35
                BlueprintIdentifier = "E9CF1F3D184961020004AE02"
36
-               BuildableName = "RedditBarTests.xctest"
36
+               BuildableName = "BaconBarTests.xctest"
37 37
                BlueprintName = "BaconBarTests"
38 38
                ReferencedContainer = "container:BaconBar.xcodeproj">
39 39
             </BuildableReference>
40 40
          </TestableReference>
41
+         <TestableReference
42
+            skipped = "NO">
43
+            <BuildableReference
44
+               BuildableIdentifier = "primary"
45
+               BlueprintIdentifier = "E9C32440186E4C8100B41515"
46
+               BuildableName = "BaconBarHelperTests.xctest"
47
+               BlueprintName = "BaconBarHelperTests"
48
+               ReferencedContainer = "container:BaconBar.xcodeproj">
49
+            </BuildableReference>
50
+         </TestableReference>
41 51
       </Testables>
42 52
       <MacroExpansion>
43 53
          <BuildableReference
44 54
             BuildableIdentifier = "primary"
45 55
             BlueprintIdentifier = "E9CF1F1C184961010004AE02"
46
-            BuildableName = "RedditBar.app"
56
+            BuildableName = "BaconBar.app"
47 57
             BlueprintName = "BaconBar"
48 58
             ReferencedContainer = "container:BaconBar.xcodeproj">
49 59
          </BuildableReference>
@@ -62,7 +72,7 @@
62 72
          <BuildableReference
63 73
             BuildableIdentifier = "primary"
64 74
             BlueprintIdentifier = "E9CF1F1C184961010004AE02"
65
-            BuildableName = "RedditBar.app"
75
+            BuildableName = "BaconBar.app"
66 76
             BlueprintName = "BaconBar"
67 77
             ReferencedContainer = "container:BaconBar.xcodeproj">
68 78
          </BuildableReference>
@@ -86,7 +96,7 @@
86 96
          <BuildableReference
87 97
             BuildableIdentifier = "primary"
88 98
             BlueprintIdentifier = "E9CF1F1C184961010004AE02"
89
-            BuildableName = "RedditBar.app"
99
+            BuildableName = "BaconBar.app"
90 100
             BlueprintName = "BaconBar"
91 101
             ReferencedContainer = "container:BaconBar.xcodeproj">
92 102
          </BuildableReference>

+ 15
- 0
BaconBar.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/xcschememanagement.plist 查看文件

@@ -4,6 +4,11 @@
4 4
 <dict>
5 5
 	<key>SchemeUserState</key>
6 6
 	<dict>
7
+		<key>BaconBarHelper.xcscheme</key>
8
+		<dict>
9
+			<key>orderHint</key>
10
+			<integer>1</integer>
11
+		</dict>
7 12
 		<key>RedditBar.xcscheme</key>
8 13
 		<dict>
9 14
 			<key>orderHint</key>
@@ -12,6 +17,16 @@
12 17
 	</dict>
13 18
 	<key>SuppressBuildableAutocreation</key>
14 19
 	<dict>
20
+		<key>E9C32426186E4C8100B41515</key>
21
+		<dict>
22
+			<key>primary</key>
23
+			<true/>
24
+		</dict>
25
+		<key>E9C32440186E4C8100B41515</key>
26
+		<dict>
27
+			<key>primary</key>
28
+			<true/>
29
+		</dict>
15 30
 		<key>E9CF1F1C184961010004AE02</key>
16 31
 		<dict>
17 32
 			<key>primary</key>

+ 15
- 0
BaconBarHelper/AppDelegate.h 查看文件

@@ -0,0 +1,15 @@
1
+//
2
+//  AppDelegate.h
3
+//  BaconBarHelper
4
+//
5
+//  Created by Thomas Buck on 28.12.13.
6
+//  Copyright (c) 2013 xythobuz. All rights reserved.
7
+//
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+@interface AppDelegate : NSObject <NSApplicationDelegate>
12
+
13
+@property (assign) IBOutlet NSWindow *window;
14
+
15
+@end

+ 40
- 0
BaconBarHelper/AppDelegate.m 查看文件

@@ -0,0 +1,40 @@
1
+//
2
+//  AppDelegate.m
3
+//  BaconBarHelper
4
+//
5
+//  Created by Thomas Buck on 28.12.13.
6
+//  Copyright (c) 2013 xythobuz. All rights reserved.
7
+//
8
+
9
+#import "AppDelegate.h"
10
+
11
+@implementation AppDelegate
12
+
13
+-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
14
+{
15
+    // Check if main app is already running; if yes, do nothing and terminate helper app
16
+    BOOL alreadyRunning = NO;
17
+    NSString *appName = [(NSString *)([[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]) stringByReplacingOccurrencesOfString:@"Helper" withString:@""];
18
+    NSArray *running = [[NSWorkspace sharedWorkspace] runningApplications];
19
+    for (NSRunningApplication *app in running) {
20
+        if ([[app bundleIdentifier] isEqualToString:appName]) {
21
+            alreadyRunning = YES;
22
+        }
23
+    }
24
+    
25
+    if (!alreadyRunning) {
26
+        NSString *path = [[NSBundle mainBundle] bundlePath];
27
+        NSArray *p = [path pathComponents];
28
+        NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:p];
29
+        [pathComponents removeLastObject];
30
+        [pathComponents removeLastObject];
31
+        [pathComponents removeLastObject];
32
+        [pathComponents addObject:@"MacOS"];
33
+        [pathComponents addObject:@"BaconBar"];
34
+        NSString *newPath = [NSString pathWithComponents:pathComponents];
35
+        [[NSWorkspace sharedWorkspace] launchApplication:newPath];
36
+    }
37
+    [NSApp terminate:nil];
38
+}
39
+
40
+@end

RedditBarTests/BaconBarTests-Info.plist → BaconBarHelper/BaconBarHelper-Info.plist 查看文件

@@ -6,17 +6,29 @@
6 6
 	<string>en</string>
7 7
 	<key>CFBundleExecutable</key>
8 8
 	<string>${EXECUTABLE_NAME}</string>
9
+	<key>CFBundleIconFile</key>
10
+	<string></string>
9 11
 	<key>CFBundleIdentifier</key>
10 12
 	<string>xythobuz.${PRODUCT_NAME:rfc1034identifier}</string>
11 13
 	<key>CFBundleInfoDictionaryVersion</key>
12 14
 	<string>6.0</string>
15
+	<key>CFBundleName</key>
16
+	<string>${PRODUCT_NAME}</string>
13 17
 	<key>CFBundlePackageType</key>
14
-	<string>BNDL</string>
18
+	<string>APPL</string>
15 19
 	<key>CFBundleShortVersionString</key>
16 20
 	<string>1.0</string>
17 21
 	<key>CFBundleSignature</key>
18 22
 	<string>????</string>
19 23
 	<key>CFBundleVersion</key>
20 24
 	<string>1</string>
25
+	<key>LSBackgroundOnly</key>
26
+	<true/>
27
+	<key>LSMinimumSystemVersion</key>
28
+	<string>${MACOSX_DEPLOYMENT_TARGET}</string>
29
+	<key>NSHumanReadableCopyright</key>
30
+	<string>Copyright © 2013 xythobuz. All rights reserved.</string>
31
+	<key>NSPrincipalClass</key>
32
+	<string>NSApplication</string>
21 33
 </dict>
22 34
 </plist>

+ 9
- 0
BaconBarHelper/BaconBarHelper-Prefix.pch 查看文件

@@ -0,0 +1,9 @@
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 <Cocoa/Cocoa.h>
9
+#endif

+ 8
- 0
BaconBarHelper/BaconBarHelper.entitlements 查看文件

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>com.apple.security.app-sandbox</key>
6
+	<true/>
7
+</dict>
8
+</plist>

+ 68
- 0
BaconBarHelper/Images.xcassets/AppIcon.appiconset/Contents.json 查看文件

@@ -0,0 +1,68 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "size" : "16x16",
5
+      "idiom" : "mac",
6
+      "filename" : "icon_16x16.png",
7
+      "scale" : "1x"
8
+    },
9
+    {
10
+      "size" : "16x16",
11
+      "idiom" : "mac",
12
+      "filename" : "icon_16x16@2x.png",
13
+      "scale" : "2x"
14
+    },
15
+    {
16
+      "size" : "32x32",
17
+      "idiom" : "mac",
18
+      "filename" : "icon_32x32-1.png",
19
+      "scale" : "1x"
20
+    },
21
+    {
22
+      "size" : "32x32",
23
+      "idiom" : "mac",
24
+      "filename" : "icon_32x32@2x.png",
25
+      "scale" : "2x"
26
+    },
27
+    {
28
+      "size" : "128x128",
29
+      "idiom" : "mac",
30
+      "filename" : "icon_128x128.png",
31
+      "scale" : "1x"
32
+    },
33
+    {
34
+      "size" : "128x128",
35
+      "idiom" : "mac",
36
+      "filename" : "icon_128x128@2x.png",
37
+      "scale" : "2x"
38
+    },
39
+    {
40
+      "size" : "256x256",
41
+      "idiom" : "mac",
42
+      "filename" : "icon_256x256.png",
43
+      "scale" : "1x"
44
+    },
45
+    {
46
+      "size" : "256x256",
47
+      "idiom" : "mac",
48
+      "filename" : "icon_256x256@2x.png",
49
+      "scale" : "2x"
50
+    },
51
+    {
52
+      "size" : "512x512",
53
+      "idiom" : "mac",
54
+      "filename" : "icon_512x512.png",
55
+      "scale" : "1x"
56
+    },
57
+    {
58
+      "size" : "512x512",
59
+      "idiom" : "mac",
60
+      "filename" : "icon_512x512@2x.png",
61
+      "scale" : "2x"
62
+    }
63
+  ],
64
+  "info" : {
65
+    "version" : 1,
66
+    "author" : "xcode"
67
+  }
68
+}

二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_128x128.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_16x16.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_256x256.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_32x32-1.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_512x512.png 查看文件


二進制
BaconBarHelper/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png 查看文件


RedditBarTests/de.lproj/InfoPlist.strings → BaconBarHelper/de.lproj/InfoPlist.strings 查看文件


RedditBarTests/en.lproj/InfoPlist.strings → BaconBarHelper/en.lproj/InfoPlist.strings 查看文件


+ 14
- 0
BaconBarHelper/main.m 查看文件

@@ -0,0 +1,14 @@
1
+//
2
+//  main.m
3
+//  BaconBarHelper
4
+//
5
+//  Created by Thomas Buck on 28.12.13.
6
+//  Copyright (c) 2013 xythobuz. All rights reserved.
7
+//
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+int main(int argc, const char * argv[])
12
+{
13
+    return NSApplicationMain(argc, argv);
14
+}

+ 2
- 2
RedditBar/BaconBar-Info.plist 查看文件

@@ -17,11 +17,11 @@
17 17
 	<key>CFBundlePackageType</key>
18 18
 	<string>APPL</string>
19 19
 	<key>CFBundleShortVersionString</key>
20
-	<string>1.4.0</string>
20
+	<string>1.5.0</string>
21 21
 	<key>CFBundleSignature</key>
22 22
 	<string>????</string>
23 23
 	<key>CFBundleVersion</key>
24
-	<string>316</string>
24
+	<string>323</string>
25 25
 	<key>LSApplicationCategoryType</key>
26 26
 	<string>public.app-category.utilities</string>
27 27
 	<key>LSMinimumSystemVersion</key>

+ 3
- 0
RedditBar/Base.lproj/Prefs.strings 查看文件

@@ -41,6 +41,9 @@
41 41
 /* Class = "NSTextFieldCell"; title = "66"; ObjectID = "b76-4r-MEp"; */
42 42
 "b76-4r-MEp.title" = "66";
43 43
 
44
+/* Class = "NSButtonCell"; title = "Launch BaconBar on login"; ObjectID = "cVl-wa-cE9"; */
45
+"cVl-wa-cE9.title" = "Launch BaconBar on login";
46
+
44 47
 /* Class = "NSTextFieldCell"; title = "Filter:"; ObjectID = "coc-11-MQH"; */
45 48
 "coc-11-MQH.title" = "Filter:";
46 49
 

+ 33
- 24
RedditBar/Base.lproj/Prefs.xib 查看文件

@@ -8,6 +8,7 @@
8 8
         <customObject id="-2" userLabel="File's Owner" customClass="PrefController">
9 9
             <connections>
10 10
                 <outlet property="filterSelection" destination="FR2-RR-NOg" id="sOl-hW-dbV"/>
11
+                <outlet property="launchOnLogin" destination="NCg-tC-aiT" id="wvF-RC-DV3"/>
11 12
                 <outlet property="lengthField" destination="MAv-jO-hIv" id="tbQ-UG-2ew"/>
12 13
                 <outlet property="lengthStepper" destination="jxz-fQ-M1L" id="NK5-G4-9UJ"/>
13 14
                 <outlet property="password" destination="ARP-lb-J16" id="EDd-om-ciF"/>
@@ -30,14 +31,14 @@
30 31
         <window title="BaconBar Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" wantsToBeColor="NO" animationBehavior="default" id="1" customClass="PrefWindow">
31 32
             <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
32 33
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
33
-            <rect key="contentRect" x="196" y="240" width="340" height="430"/>
34
+            <rect key="contentRect" x="196" y="240" width="340" height="464"/>
34 35
             <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1058"/>
35 36
             <view key="contentView" id="2">
36
-                <rect key="frame" x="0.0" y="0.0" width="340" height="430"/>
37
+                <rect key="frame" x="0.0" y="0.0" width="340" height="464"/>
37 38
                 <autoresizingMask key="autoresizingMask"/>
38 39
                 <subviews>
39 40
                     <textField verticalHuggingPriority="750" id="0mi-88-o94">
40
-                        <rect key="frame" x="120" y="390" width="200" height="22"/>
41
+                        <rect key="frame" x="120" y="424" width="200" height="22"/>
41 42
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
42 43
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="xlI-hU-MqM">
43 44
                             <font key="font" metaFont="system"/>
@@ -46,7 +47,7 @@
46 47
                         </textFieldCell>
47 48
                     </textField>
48 49
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="f72-fM-yQc">
49
-                        <rect key="frame" x="18" y="395" width="96" height="17"/>
50
+                        <rect key="frame" x="18" y="429" width="96" height="17"/>
50 51
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
51 52
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Username: " id="GTO-OP-MYS">
52 53
                             <font key="font" metaFont="system"/>
@@ -55,7 +56,7 @@
55 56
                         </textFieldCell>
56 57
                     </textField>
57 58
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="JMQ-a6-DKC">
58
-                        <rect key="frame" x="18" y="361" width="96" height="17"/>
59
+                        <rect key="frame" x="18" y="395" width="96" height="17"/>
59 60
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
60 61
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Password:" id="m11-YF-fEa">
61 62
                             <font key="font" metaFont="system"/>
@@ -64,7 +65,7 @@
64 65
                         </textFieldCell>
65 66
                     </textField>
66 67
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="qFP-pd-32c">
67
-                        <rect key="frame" x="18" y="195" width="63" height="17"/>
68
+                        <rect key="frame" x="18" y="229" width="63" height="17"/>
68 69
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
69 70
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Items:" id="FNJ-RL-DXT">
70 71
                             <font key="font" metaFont="system"/>
@@ -73,7 +74,7 @@
73 74
                         </textFieldCell>
74 75
                     </textField>
75 76
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="O82-1u-lSr">
76
-                        <rect key="frame" x="152" y="195" width="63" height="17"/>
77
+                        <rect key="frame" x="152" y="229" width="63" height="17"/>
77 78
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
78 79
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Title:" id="Frl-AE-ROJ">
79 80
                             <font key="font" metaFont="system"/>
@@ -82,7 +83,7 @@
82 83
                         </textFieldCell>
83 84
                     </textField>
84 85
                     <secureTextField verticalHuggingPriority="750" id="ARP-lb-J16">
85
-                        <rect key="frame" x="120" y="358" width="200" height="22"/>
86
+                        <rect key="frame" x="120" y="392" width="200" height="22"/>
86 87
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
87 88
                         <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="We7-pG-rAt">
88 89
                             <font key="font" metaFont="system"/>
@@ -119,7 +120,7 @@ Gw
119 120
                         </connections>
120 121
                     </button>
121 122
                     <scrollView horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="8ew-wY-1Yh">
122
-                        <rect key="frame" x="20" y="220" width="300" height="100"/>
123
+                        <rect key="frame" x="20" y="254" width="300" height="100"/>
123 124
                         <autoresizingMask key="autoresizingMask"/>
124 125
                         <clipView key="contentView" copiesOnScroll="NO" id="ENU-Jw-8fO">
125 126
                             <rect key="frame" x="1" y="1" width="298" height="98"/>
@@ -148,7 +149,7 @@ Gw
148 149
                         </scroller>
149 150
                     </scrollView>
150 151
                     <button id="XZM-90-hQ8">
151
-                        <rect key="frame" x="18" y="327" width="280" height="25"/>
152
+                        <rect key="frame" x="18" y="361" width="280" height="25"/>
152 153
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
153 154
                         <buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="vW5-Cp-Bm1">
154 155
                             <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -159,7 +160,7 @@ Gw
159 160
                         </connections>
160 161
                     </button>
161 162
                     <textField verticalHuggingPriority="750" id="MAv-jO-hIv">
162
-                        <rect key="frame" x="87" y="192" width="38" height="22"/>
163
+                        <rect key="frame" x="87" y="226" width="38" height="22"/>
163 164
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
164 165
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="10" drawsBackground="YES" id="0SD-Tf-uZS">
165 166
                             <font key="font" metaFont="system"/>
@@ -172,7 +173,7 @@ Gw
172 173
                         </connections>
173 174
                     </textField>
174 175
                     <textField verticalHuggingPriority="750" id="qju-1J-OOV">
175
-                        <rect key="frame" x="221" y="192" width="38" height="22"/>
176
+                        <rect key="frame" x="221" y="226" width="38" height="22"/>
176 177
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
177 178
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="66" drawsBackground="YES" id="b76-4r-MEp">
178 179
                             <font key="font" metaFont="system"/>
@@ -185,7 +186,7 @@ Gw
185 186
                         </connections>
186 187
                     </textField>
187 188
                     <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="jxz-fQ-M1L">
188
-                        <rect key="frame" x="130" y="189" width="19" height="27"/>
189
+                        <rect key="frame" x="130" y="223" width="19" height="27"/>
189 190
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
190 191
                         <stepperCell key="cell" continuous="YES" alignment="left" minValue="1" maxValue="100" doubleValue="1" id="Gba-jV-Ouh"/>
191 192
                         <connections>
@@ -194,7 +195,7 @@ Gw
194 195
                         </connections>
195 196
                     </stepper>
196 197
                     <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="2aV-fo-xh7">
197
-                        <rect key="frame" x="264" y="189" width="19" height="27"/>
198
+                        <rect key="frame" x="264" y="223" width="19" height="27"/>
198 199
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
199 200
                         <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" doubleValue="1" id="BWQ-gm-H9h"/>
200 201
                         <connections>
@@ -203,11 +204,11 @@ Gw
203 204
                         </connections>
204 205
                     </stepper>
205 206
                     <progressIndicator canDrawConcurrently="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="vz0-tR-n1f">
206
-                        <rect key="frame" x="304" y="331" width="16" height="16"/>
207
+                        <rect key="frame" x="304" y="365" width="16" height="16"/>
207 208
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
208 209
                     </progressIndicator>
209 210
                     <button id="fRR-M9-szp">
210
-                        <rect key="frame" x="18" y="160" width="304" height="18"/>
211
+                        <rect key="frame" x="18" y="194" width="304" height="18"/>
211 212
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
212 213
                         <buttonCell key="cell" type="check" title="Show Subreddit after Title" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="nFK-xi-2F3">
213 214
                             <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -215,7 +216,7 @@ Gw
215 216
                         </buttonCell>
216 217
                     </button>
217 218
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="6zt-jq-NXJ">
218
-                        <rect key="frame" x="9" y="52" width="236" height="17"/>
219
+                        <rect key="frame" x="9" y="86" width="236" height="17"/>
219 220
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
220 221
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="PM Refresh (in Minutes):" id="cwK-wP-wB6">
221 222
                             <font key="font" metaFont="system"/>
@@ -224,14 +225,14 @@ Gw
224 225
                         </textFieldCell>
225 226
                     </textField>
226 227
                     <box autoresizesSubviews="NO" verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="paW-kV-tNF">
227
-                        <rect key="frame" x="14" y="77" width="316" height="5"/>
228
+                        <rect key="frame" x="14" y="111" width="316" height="5"/>
228 229
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
229 230
                         <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
230 231
                         <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
231 232
                         <font key="titleFont" metaFont="system"/>
232 233
                     </box>
233 234
                     <textField verticalHuggingPriority="750" id="2J7-SH-Grc">
234
-                        <rect key="frame" x="251" y="49" width="38" height="22"/>
235
+                        <rect key="frame" x="251" y="83" width="38" height="22"/>
235 236
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
236 237
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="5" drawsBackground="YES" id="gZN-n2-TGX">
237 238
                             <font key="font" metaFont="system"/>
@@ -244,7 +245,7 @@ Gw
244 245
                         </connections>
245 246
                     </textField>
246 247
                     <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="uaS-Xm-tIa">
247
-                        <rect key="frame" x="294" y="46" width="19" height="27"/>
248
+                        <rect key="frame" x="294" y="80" width="19" height="27"/>
248 249
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
249 250
                         <stepperCell key="cell" continuous="YES" alignment="left" minValue="1" maxValue="100" doubleValue="1" id="rTZ-Zs-1eO"/>
250 251
                         <connections>
@@ -253,7 +254,7 @@ Gw
253 254
                         </connections>
254 255
                     </stepper>
255 256
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="cec-PF-2Hn">
256
-                        <rect key="frame" x="18" y="130" width="130" height="17"/>
257
+                        <rect key="frame" x="18" y="164" width="130" height="17"/>
257 258
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
258 259
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Filter:" id="coc-11-MQH">
259 260
                             <font key="font" metaFont="system"/>
@@ -262,7 +263,7 @@ Gw
262 263
                         </textFieldCell>
263 264
                     </textField>
264 265
                     <popUpButton verticalHuggingPriority="750" id="FR2-RR-NOg">
265
-                        <rect key="frame" x="164" y="125" width="159" height="26"/>
266
+                        <rect key="frame" x="164" y="159" width="159" height="26"/>
266 267
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
267 268
                         <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="zJW-6u-fHd">
268 269
                             <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
@@ -280,7 +281,7 @@ Gw
280 281
                         </popUpButtonCell>
281 282
                     </popUpButton>
282 283
                     <button id="v96-KH-55h">
283
-                        <rect key="frame" x="18" y="106" width="304" height="18"/>
284
+                        <rect key="frame" x="18" y="140" width="304" height="18"/>
284 285
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
285 286
                         <buttonCell key="cell" type="check" title="Remove visited links" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="7KI-oO-Qcg">
286 287
                             <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@@ -291,13 +292,21 @@ Gw
291 292
                         </connections>
292 293
                     </button>
293 294
                     <button id="gmF-24-Psn">
294
-                        <rect key="frame" x="18" y="86" width="304" height="18"/>
295
+                        <rect key="frame" x="18" y="120" width="304" height="18"/>
295 296
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
296 297
                         <buttonCell key="cell" type="check" title="Reload after every visited link" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="twM-Jr-KGn">
297 298
                             <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
298 299
                             <font key="font" metaFont="system"/>
299 300
                         </buttonCell>
300 301
                     </button>
302
+                    <button id="NCg-tC-aiT">
303
+                        <rect key="frame" x="18" y="59" width="304" height="18"/>
304
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
305
+                        <buttonCell key="cell" type="check" title="Launch BaconBar on login" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="cVl-wa-cE9">
306
+                            <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
307
+                            <font key="font" metaFont="system"/>
308
+                        </buttonCell>
309
+                    </button>
301 310
                 </subviews>
302 311
             </view>
303 312
         </window>

+ 1
- 0
RedditBar/PrefController.h 查看文件

@@ -47,6 +47,7 @@
47 47
 @property (atomic, retain) IBOutlet NSPopUpButton *filterSelection;
48 48
 @property (atomic, retain) IBOutlet NSButton *removeVisited;
49 49
 @property (atomic, retain) IBOutlet NSButton *reloadAfterVisit;
50
+@property (atomic, retain) IBOutlet NSButton *launchOnLogin;
50 51
 
51 52
 @property (atomic, retain) NSObject *parent;
52 53
 @property (atomic, retain) StateModel *state;

+ 8
- 1
RedditBar/PrefController.m 查看文件

@@ -34,7 +34,7 @@
34 34
 NSString *modhashSetLiteral = @"__MODHASH__IS__SET__";
35 35
 NSString *subredditCharacters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_\n";
36 36
 
37
-@synthesize username, password, subscriptions, subreddits, win, parent, state, lengthField, lengthStepper, length, progress, showSubreddit, titleField, titleStepper, titleLength, refreshField, refreshStepper, refreshInterval, filterSelection, removeVisited, reloadAfterVisit;
37
+@synthesize username, password, subscriptions, subreddits, win, parent, state, lengthField, lengthStepper, length, progress, showSubreddit, titleField, titleStepper, titleLength, refreshField, refreshStepper, refreshInterval, filterSelection, removeVisited, reloadAfterVisit, launchOnLogin;
38 38
 
39 39
 -(Boolean)isValidList:(NSString *)input {
40 40
     NSCharacterSet *invalidChars = [[NSCharacterSet characterSetWithCharactersInString:subredditCharacters] invertedSet];
@@ -87,6 +87,7 @@ NSString *subredditCharacters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST
87 87
     } else {
88 88
         [reloadAfterVisit setState:0];
89 89
     }
90
+    [launchOnLogin setState:[NSNumber numberWithBool:state.startOnLogin].integerValue];
90 91
 }
91 92
 
92 93
 -(IBAction)buttonSave:(id)sender {
@@ -157,6 +158,11 @@ NSString *subredditCharacters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST
157 158
         reload = TRUE;
158 159
     else
159 160
         reload = FALSE;
161
+    Boolean start;
162
+    if (launchOnLogin.state != 0)
163
+        start = TRUE;
164
+    else
165
+        start = FALSE;
160 166
     
161 167
     state.username = username.stringValue;
162 168
     state.modhash = modhash;
@@ -169,6 +175,7 @@ NSString *subredditCharacters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST
169 175
     state.filter = [filterSelection titleOfSelectedItem];
170 176
     state.removeVisited = remove;
171 177
     state.reloadAfterVisit = reload;
178
+    state.startOnLogin = start;
172 179
     [(AppDelegate *)parent prefsDidSave];
173 180
     [win performClose:self];
174 181
 }

+ 1
- 0
RedditBar/StateModel.h 查看文件

@@ -42,6 +42,7 @@
42 42
 @property (atomic) Boolean removeVisited;
43 43
 @property (atomic) Boolean reloadAfterVisit;
44 44
 @property (atomic, retain) NSString *lastNotifiedPM;
45
+@property (atomic) Boolean startOnLogin;
45 46
 
46 47
 -(void)registerDefaultPreferences;
47 48
 -(void)savePreferences;

+ 14
- 1
RedditBar/StateModel.m 查看文件

@@ -27,10 +27,11 @@
27 27
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 28
  */
29 29
 #import "StateModel.h"
30
+#import <ServiceManagement/ServiceManagement.h>
30 31
 
31 32
 @implementation StateModel
32 33
 
33
-@synthesize username, modhash, useSubscriptions, subreddits, length, showSubreddit, titleLength, refreshInterval, filter, removeVisited, reloadAfterVisit, lastNotifiedPM;
34
+@synthesize username, modhash, useSubscriptions, subreddits, length, showSubreddit, titleLength, refreshInterval, filter, removeVisited, reloadAfterVisit, lastNotifiedPM, startOnLogin;
34 35
 
35 36
 NSString *s_username = @"username";
36 37
 NSString *s_modhash = @"modhash";
@@ -44,6 +45,7 @@ NSString *s_filter = @"filter";
44 45
 NSString *s_remove = @"remove";
45 46
 NSString *s_reload = @"reload";
46 47
 NSString *s_lastPM = @"lastNotifiedPM";
48
+NSString *s_startLogin = @"startOnLogin";
47 49
 
48 50
 -(void)registerDefaultPreferences {
49 51
     NSUserDefaults *store = [NSUserDefaults standardUserDefaults];
@@ -58,6 +60,7 @@ NSString *s_lastPM = @"lastNotifiedPM";
58 60
     [appDefaults setValue:[NSNumber numberWithBool:YES] forKey:s_remove];
59 61
     [appDefaults setValue:[NSNumber numberWithBool:YES] forKey:s_reload];
60 62
     [appDefaults setValue:@"" forKey:s_lastPM];
63
+    [appDefaults setValue:[NSNumber numberWithBool:NO] forKey:s_startLogin];
61 64
     [store registerDefaults:appDefaults];
62 65
 }
63 66
 
@@ -75,7 +78,16 @@ NSString *s_lastPM = @"lastNotifiedPM";
75 78
     [store setBool:removeVisited forKey:s_remove];
76 79
     [store setBool:reloadAfterVisit forKey:s_reload];
77 80
     [store setObject:lastNotifiedPM forKey:s_lastPM];
81
+    
78 82
     [store synchronize];
83
+    
84
+    // TODO start on login on or off
85
+    if (startOnLogin != [store boolForKey:s_startLogin]) {
86
+        NSString *appName = [NSString stringWithFormat:@"%@Helper", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]];
87
+        if (SMLoginItemSetEnabled((__bridge CFStringRef)appName, startOnLogin)) {
88
+            [store setBool:startOnLogin forKey:s_startLogin];
89
+        }
90
+    }
79 91
 }
80 92
 
81 93
 -(void)loadPreferences {
@@ -93,6 +105,7 @@ NSString *s_lastPM = @"lastNotifiedPM";
93 105
     removeVisited = [store boolForKey:s_remove];
94 106
     reloadAfterVisit = [store boolForKey:s_reload];
95 107
     lastNotifiedPM = [store stringForKey:s_lastPM];
108
+    startOnLogin = [store boolForKey:s_startLogin];
96 109
 }
97 110
 
98 111
 @end

+ 4
- 1
RedditBar/de.lproj/Prefs.strings 查看文件

@@ -1,5 +1,5 @@
1 1
 /* Class = "PrefWindow"; title = "BaconBar Preferences"; ObjectID = "1"; */
2
-"1.title" = "BaconBar Preferences";
2
+"1.title" = "BaconBar Einstellungen";
3 3
 
4 4
 /* Class = "NSTextFieldCell"; title = "10"; ObjectID = "0SD-Tf-uZS"; */
5 5
 "0SD-Tf-uZS.title" = "10";
@@ -40,6 +40,9 @@
40 40
 /* Class = "NSTextFieldCell"; title = "66"; ObjectID = "b76-4r-MEp"; */
41 41
 "b76-4r-MEp.title" = "66";
42 42
 
43
+/* Class = "NSButtonCell"; title = "Launch BaconBar on login"; ObjectID = "cVl-wa-cE9"; */
44
+"cVl-wa-cE9.title" = "BaconBar beim Login starten";
45
+
43 46
 /* Class = "NSTextFieldCell"; title = "Filter:"; ObjectID = "coc-11-MQH"; */
44 47
 "coc-11-MQH.title" = "Filter:";
45 48
 

+ 3
- 0
RedditBar/en.lproj/Prefs.strings 查看文件

@@ -40,6 +40,9 @@
40 40
 /* Class = "NSTextFieldCell"; title = "66"; ObjectID = "b76-4r-MEp"; */
41 41
 "b76-4r-MEp.title" = "66";
42 42
 
43
+/* Class = "NSButtonCell"; title = "Launch BaconBar on login"; ObjectID = "cVl-wa-cE9"; */
44
+"cVl-wa-cE9.title" = "Launch BaconBar on login";
45
+
43 46
 /* Class = "NSTextFieldCell"; title = "Filter:"; ObjectID = "coc-11-MQH"; */
44 47
 "coc-11-MQH.title" = "Filter:";
45 48
 

+ 0
- 34
RedditBarTests/RedditBarTests.m 查看文件

@@ -1,34 +0,0 @@
1
-//
2
-//  RedditBarTests.m
3
-//  RedditBarTests
4
-//
5
-//  Created by Thomas Buck on 30.11.13.
6
-//  Copyright (c) 2013 xythobuz. All rights reserved.
7
-//
8
-
9
-#import <XCTest/XCTest.h>
10
-
11
-@interface RedditBarTests : XCTestCase
12
-
13
-@end
14
-
15
-@implementation RedditBarTests
16
-
17
-- (void)setUp
18
-{
19
-    [super setUp];
20
-    // Put setup code here. This method is called before the invocation of each test method in the class.
21
-}
22
-
23
-- (void)tearDown
24
-{
25
-    // Put teardown code here. This method is called after the invocation of each test method in the class.
26
-    [super tearDown];
27
-}
28
-
29
-- (void)testExample
30
-{
31
-    XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32
-}
33
-
34
-@end

+ 0
- 21
RedditBarTests/de.lproj/MainMenu.strings 查看文件

@@ -1,21 +0,0 @@
1
-/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "1lW-9C-xt6"; */
2
-"1lW-9C-xt6.title" = "Preferences...";
3
-
4
-/* Class = "NSMenuItem"; title = "About BaconBar"; ObjectID = "4ah-qP-9eP"; */
5
-"4ah-qP-9eP.title" = "About BaconBar";
6
-
7
-/* Class = "NSMenuItem"; title = "PMs..."; ObjectID = "IM8-KI-MAc"; */
8
-"IM8-KI-MAc.title" = "PMs...";
9
-
10
-/* Class = "NSMenuItem"; title = "Reload"; ObjectID = "bQG-wq-9Zw"; */
11
-"bQG-wq-9Zw.title" = "Reload";
12
-
13
-/* Class = "NSMenuItem"; title = "Load next"; ObjectID = "e8u-nc-P6x"; */
14
-"e8u-nc-P6x.title" = "Load next";
15
-
16
-/* Class = "NSMenuItem"; title = "Loading..."; ObjectID = "jfb-mv-iN9"; */
17
-"jfb-mv-iN9.title" = "Loading...";
18
-
19
-/* Class = "NSMenuItem"; title = "Quit"; ObjectID = "oyC-3G-WEc"; */
20
-"oyC-3G-WEc.title" = "Quit";
21
-

+ 0
- 81
RedditBarTests/de.lproj/Prefs.strings 查看文件

@@ -1,81 +0,0 @@
1
-/* Class = "PrefWindow"; title = "BaconBar Preferences"; ObjectID = "1"; */
2
-"1.title" = "BaconBar Preferences";
3
-
4
-/* Class = "NSTextFieldCell"; title = "10"; ObjectID = "0SD-Tf-uZS"; */
5
-"0SD-Tf-uZS.title" = "10";
6
-
7
-/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "32T-3T-EcY"; */
8
-"32T-3T-EcY.title" = "Cut";
9
-
10
-/* Class = "NSButtonCell"; title = "Remove visited links"; ObjectID = "7KI-oO-Qcg"; */
11
-"7KI-oO-Qcg.title" = "Remove visited links";
12
-
13
-/* Class = "NSTextFieldCell"; title = "Items:"; ObjectID = "FNJ-RL-DXT"; */
14
-"FNJ-RL-DXT.title" = "Items:";
15
-
16
-/* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "Frl-AE-ROJ"; */
17
-"Frl-AE-ROJ.title" = "Title:";
18
-
19
-/* Class = "NSTextFieldCell"; title = "Username: "; ObjectID = "GTO-OP-MYS"; */
20
-"GTO-OP-MYS.title" = "Username: ";
21
-
22
-/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "IWp-hb-gSM"; */
23
-"IWp-hb-gSM.title" = "Main Menu";
24
-
25
-/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "IyX-7D-esH"; */
26
-"IyX-7D-esH.title" = "Undo";
27
-
28
-/* Class = "NSButtonCell"; title = "Save"; ObjectID = "Mqa-FJ-C43"; */
29
-"Mqa-FJ-C43.title" = "Save";
30
-
31
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "Ow7-gc-PGv"; */
32
-"Ow7-gc-PGv.title" = "OtherViews";
33
-
34
-/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "TjO-Z6-Vng"; */
35
-"TjO-Z6-Vng.title" = "Cancel";
36
-
37
-/* Class = "NSMenu"; title = "Edit"; ObjectID = "YpZ-Vi-h1u"; */
38
-"YpZ-Vi-h1u.title" = "Edit";
39
-
40
-/* Class = "NSTextFieldCell"; title = "66"; ObjectID = "b76-4r-MEp"; */
41
-"b76-4r-MEp.title" = "66";
42
-
43
-/* Class = "NSTextFieldCell"; title = "Filter:"; ObjectID = "coc-11-MQH"; */
44
-"coc-11-MQH.title" = "Filter:";
45
-
46
-/* Class = "NSTextFieldCell"; title = "PM Refresh (in Minutes):"; ObjectID = "cwK-wP-wB6"; */
47
-"cwK-wP-wB6.title" = "PM Refresh (in Minutes):";
48
-
49
-/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "czz-51-wxr"; */
50
-"czz-51-wxr.title" = "Edit";
51
-
52
-/* Class = "NSMenuItem"; title = "new"; ObjectID = "dxr-Ml-O8i"; */
53
-"dxr-Ml-O8i.title" = "new";
54
-
55
-/* Class = "NSTextFieldCell"; title = "5"; ObjectID = "gZN-n2-TGX"; */
56
-"gZN-n2-TGX.title" = "5";
57
-
58
-/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "j3h-hj-rfI"; */
59
-"j3h-hj-rfI.title" = "Paste";
60
-
61
-/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "m11-YF-fEa"; */
62
-"m11-YF-fEa.title" = "Password:";
63
-
64
-/* Class = "NSButtonCell"; title = "Show Subreddit after Title"; ObjectID = "nFK-xi-2F3"; */
65
-"nFK-xi-2F3.title" = "Show Subreddit after Title";
66
-
67
-/* Class = "NSBox"; title = "Box"; ObjectID = "paW-kV-tNF"; */
68
-"paW-kV-tNF.title" = "Box";
69
-
70
-/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "qSu-ha-DhM"; */
71
-"qSu-ha-DhM.title" = "Select All";
72
-
73
-/* Class = "NSMenuItem"; title = "hot"; ObjectID = "sKV-FZ-wbQ"; */
74
-"sKV-FZ-wbQ.title" = "hot";
75
-
76
-/* Class = "NSButtonCell"; title = "Reload after every visited link"; ObjectID = "twM-Jr-KGn"; */
77
-"twM-Jr-KGn.title" = "Reload after every visited link";
78
-
79
-/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "wSY-To-FDI"; */
80
-"wSY-To-FDI.title" = "Copy";
81
-

+ 0
- 21
RedditBarTests/en.lproj/MainMenu.strings 查看文件

@@ -1,21 +0,0 @@
1
-/* Class = "NSMenuItem"; title = "Preferences..."; ObjectID = "1lW-9C-xt6"; */
2
-"1lW-9C-xt6.title" = "Preferences...";
3
-
4
-/* Class = "NSMenuItem"; title = "About BaconBar"; ObjectID = "4ah-qP-9eP"; */
5
-"4ah-qP-9eP.title" = "About BaconBar";
6
-
7
-/* Class = "NSMenuItem"; title = "PMs..."; ObjectID = "IM8-KI-MAc"; */
8
-"IM8-KI-MAc.title" = "PMs...";
9
-
10
-/* Class = "NSMenuItem"; title = "Reload"; ObjectID = "bQG-wq-9Zw"; */
11
-"bQG-wq-9Zw.title" = "Reload";
12
-
13
-/* Class = "NSMenuItem"; title = "Load next"; ObjectID = "e8u-nc-P6x"; */
14
-"e8u-nc-P6x.title" = "Load next";
15
-
16
-/* Class = "NSMenuItem"; title = "Loading..."; ObjectID = "jfb-mv-iN9"; */
17
-"jfb-mv-iN9.title" = "Loading...";
18
-
19
-/* Class = "NSMenuItem"; title = "Quit"; ObjectID = "oyC-3G-WEc"; */
20
-"oyC-3G-WEc.title" = "Quit";
21
-

+ 0
- 81
RedditBarTests/en.lproj/Prefs.strings 查看文件

@@ -1,81 +0,0 @@
1
-/* Class = "PrefWindow"; title = "BaconBar Preferences"; ObjectID = "1"; */
2
-"1.title" = "BaconBar Preferences";
3
-
4
-/* Class = "NSTextFieldCell"; title = "10"; ObjectID = "0SD-Tf-uZS"; */
5
-"0SD-Tf-uZS.title" = "10";
6
-
7
-/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "32T-3T-EcY"; */
8
-"32T-3T-EcY.title" = "Cut";
9
-
10
-/* Class = "NSButtonCell"; title = "Remove visited links"; ObjectID = "7KI-oO-Qcg"; */
11
-"7KI-oO-Qcg.title" = "Remove visited links";
12
-
13
-/* Class = "NSTextFieldCell"; title = "Items:"; ObjectID = "FNJ-RL-DXT"; */
14
-"FNJ-RL-DXT.title" = "Items:";
15
-
16
-/* Class = "NSTextFieldCell"; title = "Title:"; ObjectID = "Frl-AE-ROJ"; */
17
-"Frl-AE-ROJ.title" = "Title:";
18
-
19
-/* Class = "NSTextFieldCell"; title = "Username: "; ObjectID = "GTO-OP-MYS"; */
20
-"GTO-OP-MYS.title" = "Username: ";
21
-
22
-/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "IWp-hb-gSM"; */
23
-"IWp-hb-gSM.title" = "Main Menu";
24
-
25
-/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "IyX-7D-esH"; */
26
-"IyX-7D-esH.title" = "Undo";
27
-
28
-/* Class = "NSButtonCell"; title = "Save"; ObjectID = "Mqa-FJ-C43"; */
29
-"Mqa-FJ-C43.title" = "Save";
30
-
31
-/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "Ow7-gc-PGv"; */
32
-"Ow7-gc-PGv.title" = "OtherViews";
33
-
34
-/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "TjO-Z6-Vng"; */
35
-"TjO-Z6-Vng.title" = "Cancel";
36
-
37
-/* Class = "NSMenu"; title = "Edit"; ObjectID = "YpZ-Vi-h1u"; */
38
-"YpZ-Vi-h1u.title" = "Edit";
39
-
40
-/* Class = "NSTextFieldCell"; title = "66"; ObjectID = "b76-4r-MEp"; */
41
-"b76-4r-MEp.title" = "66";
42
-
43
-/* Class = "NSTextFieldCell"; title = "Filter:"; ObjectID = "coc-11-MQH"; */
44
-"coc-11-MQH.title" = "Filter:";
45
-
46
-/* Class = "NSTextFieldCell"; title = "PM Refresh (in Minutes):"; ObjectID = "cwK-wP-wB6"; */
47
-"cwK-wP-wB6.title" = "PM Refresh (in Minutes):";
48
-
49
-/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "czz-51-wxr"; */
50
-"czz-51-wxr.title" = "Edit";
51
-
52
-/* Class = "NSMenuItem"; title = "new"; ObjectID = "dxr-Ml-O8i"; */
53
-"dxr-Ml-O8i.title" = "new";
54
-
55
-/* Class = "NSTextFieldCell"; title = "5"; ObjectID = "gZN-n2-TGX"; */
56
-"gZN-n2-TGX.title" = "5";
57
-
58
-/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "j3h-hj-rfI"; */
59
-"j3h-hj-rfI.title" = "Paste";
60
-
61
-/* Class = "NSTextFieldCell"; title = "Password:"; ObjectID = "m11-YF-fEa"; */
62
-"m11-YF-fEa.title" = "Password:";
63
-
64
-/* Class = "NSButtonCell"; title = "Show Subreddit after Title"; ObjectID = "nFK-xi-2F3"; */
65
-"nFK-xi-2F3.title" = "Show Subreddit after Title";
66
-
67
-/* Class = "NSBox"; title = "Box"; ObjectID = "paW-kV-tNF"; */
68
-"paW-kV-tNF.title" = "Box";
69
-
70
-/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "qSu-ha-DhM"; */
71
-"qSu-ha-DhM.title" = "Select All";
72
-
73
-/* Class = "NSMenuItem"; title = "hot"; ObjectID = "sKV-FZ-wbQ"; */
74
-"sKV-FZ-wbQ.title" = "hot";
75
-
76
-/* Class = "NSButtonCell"; title = "Reload after every visited link"; ObjectID = "twM-Jr-KGn"; */
77
-"twM-Jr-KGn.title" = "Reload after every visited link";
78
-
79
-/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "wSY-To-FDI"; */
80
-"wSY-To-FDI.title" = "Copy";
81
-

Loading…
取消
儲存