Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6192f76605 | ||
|
|
3ace169549 | ||
|
|
039c7bc734 | ||
|
|
0c9b128cfe | ||
|
|
55aeea5222 | ||
|
|
fc640250d8 | ||
|
|
1071c55eef | ||
|
|
b7df436a5d |
57
CHANGELOG.md
Normal file
57
CHANGELOG.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project does NOT adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
|
||||||
|
## [0.9.3] - 2019-03-14
|
||||||
|
### Added
|
||||||
|
- Changelog
|
||||||
|
- UI: Show body tag in article tooltip if abstract tag is empty
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 'Update all feeds' will shows unread items count properly during update
|
||||||
|
- Fixed update for feeds where all article URLs point to the same resource (issue: #3)
|
||||||
|
|
||||||
|
|
||||||
|
## [0.9.2] - 2019-03-07
|
||||||
|
### Added
|
||||||
|
- Limit number of articles that are displayed in feed menu (issue: #2)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Cmd+Q in preferences will close the window instead of quitting the application
|
||||||
|
- Crash when libxml2 encountered and set an error
|
||||||
|
- libxml2 will ignore lower ascii characters (0x00–0x1F)
|
||||||
|
|
||||||
|
|
||||||
|
## [0.9.1] - 2019-02-14
|
||||||
|
### Added
|
||||||
|
- Mark single article as un/read (hold down option key and click on article)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Mouse click on 'Done' button, while entering a new feed URL, will start download properly
|
||||||
|
- Use guid url if link is not set (issue: #1)
|
||||||
|
- Issue with feeds not being detected if XML tags start after 4kb
|
||||||
|
- Support uppercase schemes (e.g., 'FEED:')
|
||||||
|
- UI: Hide 'Next update in -25yrs'
|
||||||
|
- UI: Show alert after click on 'Fix Cache'
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Auto increment build number
|
||||||
|
- Removed static images for group icon, default feed icon, and warning icon
|
||||||
|
- Remove html tags from abstract on save (not on display)
|
||||||
|
|
||||||
|
|
||||||
|
## [0.9] - 2019-02-11
|
||||||
|
Initial release
|
||||||
|
|
||||||
|
|
||||||
|
[Unreleased]: https://github.com/relikd/baRSS/compare/v0.9.2...HEAD
|
||||||
|
[0.9.3]: https://github.com/relikd/baRSS/compare/v0.9.2...v0.9.3
|
||||||
|
[0.9.2]: https://github.com/relikd/baRSS/compare/v0.9.1...v0.9.2
|
||||||
|
[0.9.1]: https://github.com/relikd/baRSS/compare/v0.9...v0.9.1
|
||||||
|
[0.9]: https://github.com/relikd/baRSS/compare/e1f36514a8aa2d5fb9a575b6eb19adc2ce4a04d9...v0.9
|
||||||
@@ -1 +1 @@
|
|||||||
github "relikd/RSXML" "e6caf2dad24d57de167aba476822ead7ea72d3b0"
|
github "relikd/RSXML" "401f470ab00ab656843162e002e111331b001824"
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -28,6 +28,18 @@ This project uses a modified version of Brent Simmons [RSXML](https://github.com
|
|||||||
RSXML is licensed under a MIT license (same as this project).
|
RSXML is licensed under a MIT license (same as this project).
|
||||||
|
|
||||||
|
|
||||||
|
Install
|
||||||
|
-------
|
||||||
|
|
||||||
|
Easy way: go to [releases](https://github.com/relikd/baRSS/releases) and downloaded the latest version.
|
||||||
|
|
||||||
|
### Build from source
|
||||||
|
|
||||||
|
You'll need Xcode and [Carthage](https://github.com/Carthage/Carthage#installing-carthage). The latter is optional, you can build the [RSXML](https://github.com/relikd/RSXML) library from source instead. Carthage just makes it more convenient.
|
||||||
|
Download and unzip this project, navigate to the root folder and run `carthage bootstrap --platform macOS`.
|
||||||
|
|
||||||
|
That's it. Open Xcode and build the project. Note, there are some compiler flags that append 'beta' to the development release. If you prefer the optimized release version go to `Product > Archive`.
|
||||||
|
|
||||||
|
|
||||||
Hidden options
|
Hidden options
|
||||||
--------------
|
--------------
|
||||||
@@ -44,6 +56,11 @@ With this Terminal command you can customize this number:
|
|||||||
|
|
||||||
3) If you hold down the option key and click on an article item, you can mark a single item (un-)read.
|
3) If you hold down the option key and click on an article item, you can mark a single item (un-)read.
|
||||||
|
|
||||||
|
4) Limit number of displayed articles in feed menu.
|
||||||
|
**Note:** unread count for feed and group may be different than the unread items inside (if unread articles are omitted).
|
||||||
|
|
||||||
|
```defaults write de.relikd.baRSS articlesInMenuLimit -int 40```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ToDo
|
ToDo
|
||||||
|
|||||||
@@ -106,6 +106,7 @@
|
|||||||
546FC4462118A8E6007CC3A3 /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
|
546FC4462118A8E6007CC3A3 /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
|
||||||
5477D34C21233C62002BA27F /* FeedGroup+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FeedGroup+Ext.h"; sourceTree = "<group>"; };
|
5477D34C21233C62002BA27F /* FeedGroup+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FeedGroup+Ext.h"; sourceTree = "<group>"; };
|
||||||
5477D34D21233C62002BA27F /* FeedGroup+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "FeedGroup+Ext.m"; sourceTree = "<group>"; };
|
5477D34D21233C62002BA27F /* FeedGroup+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "FeedGroup+Ext.m"; sourceTree = "<group>"; };
|
||||||
|
54892F1D2235285700271CBA /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
|
||||||
5496B50F214D6275003ED4ED /* UserPrefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserPrefs.h; sourceTree = "<group>"; };
|
5496B50F214D6275003ED4ED /* UserPrefs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserPrefs.h; sourceTree = "<group>"; };
|
||||||
5496B510214D6275003ED4ED /* UserPrefs.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserPrefs.m; sourceTree = "<group>"; };
|
5496B510214D6275003ED4ED /* UserPrefs.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserPrefs.m; sourceTree = "<group>"; };
|
||||||
54A07A7D220E04CF00082C51 /* NSFetchRequest+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSFetchRequest+Ext.h"; sourceTree = "<group>"; };
|
54A07A7D220E04CF00082C51 /* NSFetchRequest+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSFetchRequest+Ext.h"; sourceTree = "<group>"; };
|
||||||
@@ -251,6 +252,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
540CD14821C094A2004AB594 /* README.md */,
|
540CD14821C094A2004AB594 /* README.md */,
|
||||||
|
54892F1D2235285700271CBA /* CHANGELOG.md */,
|
||||||
54ACC27E21061B3B0020715F /* baRSS */,
|
54ACC27E21061B3B0020715F /* baRSS */,
|
||||||
54CC042D2162532800A48795 /* baRSS-Helper */,
|
54CC042D2162532800A48795 /* baRSS-Helper */,
|
||||||
54ACC27D21061B3B0020715F /* Products */,
|
54ACC27D21061B3B0020715F /* Products */,
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ static NSEventModifierFlags fnKeyFlags = NSEventModifierFlagShift | NSEventModif
|
|||||||
case 'c': if ([self sendAction:@selector(copy:) to:nil from:self]) return; break;
|
case 'c': if ([self sendAction:@selector(copy:) to:nil from:self]) return; break;
|
||||||
case 'v': if ([self sendAction:@selector(paste:) to:nil from:self]) return; break;
|
case 'v': if ([self sendAction:@selector(paste:) to:nil from:self]) return; break;
|
||||||
case 'a': if ([self sendAction:@selector(selectAll:) to:nil from:self]) return; break;
|
case 'a': if ([self sendAction:@selector(selectAll:) to:nil from:self]) return; break;
|
||||||
case 'q': if ([self sendAction:@selector(terminate:) to:nil from:self]) return; break;
|
case 'q': if ([self sendAction:@selector(performClose:) to:nil from:self]) return; break;
|
||||||
case 'w': if ([self sendAction:@selector(performClose:) to:nil from:self]) return; break;
|
case 'w': if ([self sendAction:@selector(performClose:) to:nil from:self]) return; break;
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wundeclared-selector"
|
#pragma clang diagnostic ignored "-Wundeclared-selector"
|
||||||
|
|||||||
@@ -92,9 +92,9 @@
|
|||||||
self.group.name = obj.title;
|
self.group.name = obj.title;
|
||||||
|
|
||||||
// Add and remove articles
|
// Add and remove articles
|
||||||
NSMutableSet<NSString*> *urls = [[self.articles valueForKeyPath:@"link"] mutableCopy];
|
NSMutableSet<FeedArticle*> *oldSet = [self.articles mutableCopy];
|
||||||
NSInteger diff = [self addMissingArticles:obj updateLinks:urls]; // will remove links in 'urls' that should be kept
|
NSInteger diff = [self addMissingArticles:obj withOldSet:oldSet]; // will remove items that should be kept
|
||||||
diff -= [self deleteArticlesWithLink:urls]; // remove old, outdated articles
|
diff -= [self deleteArticlesWithOldSet:oldSet]; // remove old, outdated articles
|
||||||
// Get new total article count and post unread-count-change notification
|
// Get new total article count and post unread-count-change notification
|
||||||
if (flag && diff != 0) {
|
if (flag && diff != 0) {
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationTotalUnreadCountChanged object:@(diff)];
|
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationTotalUnreadCountChanged object:@(diff)];
|
||||||
@@ -108,9 +108,10 @@
|
|||||||
New articles should be in ascending order without any gaps in between.
|
New articles should be in ascending order without any gaps in between.
|
||||||
If new article is disjunct from the article before, assume a deleted article re-appeared and mark it as read.
|
If new article is disjunct from the article before, assume a deleted article re-appeared and mark it as read.
|
||||||
|
|
||||||
@param urls Input will be used to identify new articles. Output will contain URLs that aren't present in the feed anymore.
|
@param oldSet Input will be used to identify new articles.
|
||||||
|
Output contains articles that aren't present in the feed anymore and should be deleted.
|
||||||
*/
|
*/
|
||||||
- (NSInteger)addMissingArticles:(RSParsedFeed*)obj updateLinks:(NSMutableSet<NSString*>*)urls {
|
- (NSInteger)addMissingArticles:(RSParsedFeed*)obj withOldSet:(NSMutableSet<FeedArticle*>*)oldSet {
|
||||||
NSInteger newOnes = 0;
|
NSInteger newOnes = 0;
|
||||||
int32_t currentIndex = [[self.articles valueForKeyPath:@"@min.sortIndex"] intValue];
|
int32_t currentIndex = [[self.articles valueForKeyPath:@"@min.sortIndex"] intValue];
|
||||||
FeedArticle *lastInserted = nil;
|
FeedArticle *lastInserted = nil;
|
||||||
@@ -118,10 +119,10 @@
|
|||||||
|
|
||||||
for (RSParsedArticle *article in [obj.articles reverseObjectEnumerator]) {
|
for (RSParsedArticle *article in [obj.articles reverseObjectEnumerator]) {
|
||||||
// reverse enumeration ensures correct article order
|
// reverse enumeration ensures correct article order
|
||||||
if ([urls containsObject:article.link]) {
|
FeedArticle *storedArticle = [self findArticle:article inSet:oldSet];
|
||||||
[urls removeObject:article.link];
|
if (storedArticle) {
|
||||||
FeedArticle *storedArticle = [self findArticleWithLink:article.link]; // TODO: use two synced arrays?
|
[oldSet removeObject:storedArticle];
|
||||||
if (storedArticle && storedArticle.sortIndex != currentIndex) {
|
if (storedArticle.sortIndex != currentIndex) {
|
||||||
storedArticle.sortIndex = currentIndex;
|
storedArticle.sortIndex = currentIndex;
|
||||||
}
|
}
|
||||||
hasGapBetweenNewArticles = YES;
|
hasGapBetweenNewArticles = YES;
|
||||||
@@ -146,26 +147,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Delete all items where @c link matches one of the URLs in the @c NSSet.
|
Delete all articles from core data, that are still in the oldSet.
|
||||||
*/
|
*/
|
||||||
- (NSUInteger)deleteArticlesWithLink:(NSMutableSet<NSString*>*)urls {
|
- (NSUInteger)deleteArticlesWithOldSet:(NSMutableSet<FeedArticle*>*)oldSet {
|
||||||
if (!urls || urls.count == 0)
|
if (!oldSet || oldSet.count == 0)
|
||||||
return 0;
|
return 0;
|
||||||
NSUInteger c = 0;
|
NSUInteger c = 0;
|
||||||
for (FeedArticle *fa in self.articles) {
|
for (FeedArticle *fa in oldSet) {
|
||||||
if ([urls containsObject:fa.link]) {
|
|
||||||
[urls removeObject:fa.link];
|
|
||||||
if (fa.unread) ++c;
|
if (fa.unread) ++c;
|
||||||
// TODO: keep unread articles?
|
// TODO: keep unread articles?
|
||||||
[self.managedObjectContext deleteObject:fa];
|
[self.managedObjectContext deleteObject:fa];
|
||||||
if (urls.count == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
NSSet<FeedArticle*> *delArticles = [self.managedObjectContext deletedObjects];
|
|
||||||
if (delArticles.count > 0) {
|
|
||||||
[self removeArticles:delArticles];
|
|
||||||
}
|
}
|
||||||
|
if (oldSet.count > 0)
|
||||||
|
[self removeArticles:oldSet];
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,12 +177,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Iterate over all Articles and return the one where @c .link matches. Or @c nil if no matching article found.
|
Iterate over oldSet and return the one where @c link and @c guid matches. Or @c nil if no matching article found.
|
||||||
*/
|
*/
|
||||||
- (FeedArticle*)findArticleWithLink:(NSString*)url {
|
- (FeedArticle*)findArticle:(RSParsedArticle*)article inSet:(NSSet<FeedArticle*>*)oldSet {
|
||||||
for (FeedArticle *a in self.articles) {
|
NSString *searchLink = article.link;
|
||||||
if ([a.link isEqualToString:url])
|
NSString *searchGuid = article.guid;
|
||||||
return a;
|
BOOL linkIsNil = (searchLink == nil);
|
||||||
|
BOOL guidIsNil = (searchGuid == nil);
|
||||||
|
for (FeedArticle *old in oldSet) {
|
||||||
|
if ((linkIsNil && old.link == nil) || [old.link isEqualToString:searchLink]) {
|
||||||
|
if ((guidIsNil && old.guid == nil) || [old.guid isEqualToString:searchGuid])
|
||||||
|
return old;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
item.title = [self shortArticleName];
|
item.title = [self shortArticleName];
|
||||||
item.enabled = (self.link.length > 0);
|
item.enabled = (self.link.length > 0);
|
||||||
item.state = (self.unread && [UserPrefs defaultYES:@"feedTickMark"] ? NSControlStateValueOn : NSControlStateValueOff);
|
item.state = (self.unread && [UserPrefs defaultYES:@"feedTickMark"] ? NSControlStateValueOn : NSControlStateValueOff);
|
||||||
item.toolTip = self.abstract;
|
item.toolTip = (self.abstract ? self.abstract : self.body); // fall back to body (html)
|
||||||
item.representedObject = self.objectID;
|
item.representedObject = self.objectID;
|
||||||
item.target = [self class];
|
item.target = [self class];
|
||||||
item.action = @selector(didClickOnMenuItem:);
|
item.action = @selector(didClickOnMenuItem:);
|
||||||
|
|||||||
@@ -34,7 +34,9 @@
|
|||||||
self.errorCount = 0;
|
self.errorCount = 0;
|
||||||
int16_t n = self.errorCount + 1; // always increment errorCount (can be used to indicate bad feeds)
|
int16_t n = self.errorCount + 1; // always increment errorCount (can be used to indicate bad feeds)
|
||||||
// TODO: remove logging
|
// TODO: remove logging
|
||||||
|
#ifdef DEBUG
|
||||||
NSLog(@"ERROR: Feed download failed: %@ (errorCount: %d)", self.url, n);
|
NSLog(@"ERROR: Feed download failed: %@ (errorCount: %d)", self.url, n);
|
||||||
|
#endif
|
||||||
if ([self.scheduled timeIntervalSinceNow] > 30) // forced, early update. Scheduled is still in the futute.
|
if ([self.scheduled timeIntervalSinceNow] > 30) // forced, early update. Scheduled is still in the futute.
|
||||||
return; // Keep error counter low. Not enough time has passed (e.g., temporary server outage)
|
return; // Keep error counter low. Not enough time has passed (e.g., temporary server outage)
|
||||||
NSTimeInterval retryWaitTime = pow(2, (n > 13 ? 13 : n)) * 60; // 2^N (between: 2 minutes and 5.7 days)
|
NSTimeInterval retryWaitTime = pow(2, (n > 13 ? 13 : n)) * 60; // 2^N (between: 2 minutes and 5.7 days)
|
||||||
|
|||||||
@@ -123,7 +123,9 @@ static BOOL _nextUpdateIsForced = NO;
|
|||||||
Called when schedule timer runs out (earliest @c .schedule date). Or if forced by user request.
|
Called when schedule timer runs out (earliest @c .schedule date). Or if forced by user request.
|
||||||
*/
|
*/
|
||||||
+ (void)updateTimerCallback {
|
+ (void)updateTimerCallback {
|
||||||
|
#ifdef DEBUG
|
||||||
NSLog(@"fired");
|
NSLog(@"fired");
|
||||||
|
#endif
|
||||||
BOOL updateAll = _nextUpdateIsForced;
|
BOOL updateAll = _nextUpdateIsForced;
|
||||||
_nextUpdateIsForced = NO;
|
_nextUpdateIsForced = NO;
|
||||||
|
|
||||||
@@ -229,6 +231,7 @@ static BOOL _nextUpdateIsForced = NO;
|
|||||||
}
|
}
|
||||||
if (!error) { // metaBlock may set error
|
if (!error) { // metaBlock may set error
|
||||||
RSFeedParser *parser = [RSFeedParser parserWithXMLData:xml];
|
RSFeedParser *parser = [RSFeedParser parserWithXMLData:xml];
|
||||||
|
parser.dontStopOnLowerAsciiBytes = YES;
|
||||||
result = [parser parseSync:&error];
|
result = [parser parseSync:&error];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,7 +305,7 @@ static BOOL _nextUpdateIsForced = NO;
|
|||||||
needsNotification = YES;
|
needsNotification = YES;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[StoreCoordinator saveContext:moc andParent:NO];
|
[StoreCoordinator saveContext:moc andParent:YES];
|
||||||
if (needsNotification)
|
if (needsNotification)
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationFeedUpdated object:oid];
|
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationFeedUpdated object:oid];
|
||||||
if (block) block(success);
|
if (block) block(success);
|
||||||
@@ -399,7 +402,7 @@ static BOOL _nextUpdateIsForced = NO;
|
|||||||
[self downloadFavicon:faviconURL finished:^(NSImage *img) {
|
[self downloadFavicon:faviconURL finished:^(NSImage *img) {
|
||||||
Feed *f = [moc objectWithID:oid];
|
Feed *f = [moc objectWithID:oid];
|
||||||
if (f && [f setIconImage:img]) {
|
if (f && [f setIconImage:img]) {
|
||||||
[StoreCoordinator saveContext:moc andParent:NO];
|
[StoreCoordinator saveContext:moc andParent:YES];
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationFeedIconUpdated object:oid];
|
[[NSNotificationCenter defaultCenter] postNotificationName:kNotificationFeedIconUpdated object:oid];
|
||||||
}
|
}
|
||||||
if (block) block();
|
if (block) block();
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>0.9.1</string>
|
<string>0.9.3</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1032</string>
|
<string>1153</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
<key>LSUIElement</key>
|
<key>LSUIElement</key>
|
||||||
|
|||||||
@@ -23,5 +23,5 @@
|
|||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
@interface SettingsGeneral : NSViewController
|
@interface SettingsGeneral : NSViewController
|
||||||
|
@property (assign) IBOutlet NSView *appearanceView;
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="SettingsGeneral">
|
<customObject id="-2" userLabel="File's Owner" customClass="SettingsGeneral">
|
||||||
<connections>
|
<connections>
|
||||||
|
<outlet property="appearanceView" destination="Wwh-0p-tPi" id="51l-Wp-k0J"/>
|
||||||
<outlet property="popupDefaultRSSReader" destination="tJe-jL-nUu" id="DUq-ti-Drf"/>
|
<outlet property="popupDefaultRSSReader" destination="tJe-jL-nUu" id="DUq-ti-Drf"/>
|
||||||
<outlet property="popupHttpApplication" destination="BcN-gW-jBg" id="X2r-Nn-igN"/>
|
<outlet property="popupHttpApplication" destination="BcN-gW-jBg" id="X2r-Nn-igN"/>
|
||||||
<outlet property="view" destination="mbb-wD-pDD" id="Syb-4w-ekh"/>
|
<outlet property="view" destination="mbb-wD-pDD" id="Syb-4w-ekh"/>
|
||||||
@@ -37,287 +38,8 @@
|
|||||||
</binding>
|
</binding>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Eyy-w7-79K">
|
|
||||||
<rect key="frame" x="18" y="209" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Z56-ik-iHk">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalUpdateAll" id="FrQ-u0-lFo">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Xbr-a8-v9X">
|
|
||||||
<rect key="frame" x="18" y="187" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="FT6-me-ACu">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalOpenUnread" id="c20-0p-cPb">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kO5-iF-mZX">
|
|
||||||
<rect key="frame" x="44" y="187" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="4uj-0i-drs">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupOpenUnread" id="mCn-aE-DwT">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZVR-xf-ZeB">
|
|
||||||
<rect key="frame" x="70" y="187" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="tQ4-MK-ghd">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedOpenUnread" id="Qyh-BN-P74">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lAu-qx-vWl">
|
|
||||||
<rect key="frame" x="18" y="165" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="8Ko-Cq-fCy">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalMarkRead" id="uiO-3M-xfT">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hAY-eb-Ygs">
|
|
||||||
<rect key="frame" x="44" y="165" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="vBc-4I-hsa">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupMarkRead" id="YLZ-t8-Jbk">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TfV-CA-pjd">
|
|
||||||
<rect key="frame" x="70" y="165" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="OPa-de-9M3">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedMarkRead" id="mYj-26-0OV">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eKg-IL-v85">
|
|
||||||
<rect key="frame" x="18" y="143" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="K4h-ul-R6b">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalMarkUnread" id="drp-87-kfY">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="z97-Z3-YRK">
|
|
||||||
<rect key="frame" x="44" y="143" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="bYm-jJ-lA7">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupMarkUnread" id="bJP-0I-l7t">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yGm-6r-8xg">
|
|
||||||
<rect key="frame" x="70" y="143" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="KHI-ra-F11">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedMarkUnread" id="mRu-7M-3bu">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QYu-9A-RSx">
|
|
||||||
<rect key="frame" x="18" y="121" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="NHd-8Y-lgR">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="changeMenuBarIconSetting:" target="-2" id="2Eq-PQ-ffr"/>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalUnreadCount" id="dyl-pE-j2k">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iGf-ZI-o6t">
|
|
||||||
<rect key="frame" x="44" y="121" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fhA-hO-eSv">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupUnreadCount" id="Mg5-xJ-L3n">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ezY-pZ-WN7">
|
|
||||||
<rect key="frame" x="70" y="121" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="PgG-Pm-s9M">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedUnreadCount" id="hnm-Q2-kbs">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4Z4-ko-oj2">
|
|
||||||
<rect key="frame" x="70" y="99" width="22" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="3cL-4f-90v">
|
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedTickMark" id="xKL-Lh-tBL">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fey-RP-7wF">
|
|
||||||
<rect key="frame" x="96" y="210" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Update all feeds" id="Yy6-xr-m0l">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VhY-mw-Rej">
|
|
||||||
<rect key="frame" x="96" y="188" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Open all unread" id="lVL-bb-uA6">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qFU-En-OSw">
|
|
||||||
<rect key="frame" x="96" y="166" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mark all read" id="XD8-5a-Hlg">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oFG-IQ-p9b">
|
|
||||||
<rect key="frame" x="96" y="144" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mark all unread" id="PJI-mv-AnH">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tjr-Of-qZE">
|
|
||||||
<rect key="frame" x="96" y="122" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Number of unread items" id="JZc-eZ-uTe">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="K4q-A1-Fi9">
|
|
||||||
<rect key="frame" x="96" y="100" width="206" height="17"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tick mark unread items" id="a7h-dX-8Vg">
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</textFieldCell>
|
|
||||||
</textField>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sG-NO-OJz">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2sG-NO-OJz">
|
||||||
<rect key="frame" x="18" y="49" width="133" height="17"/>
|
<rect key="frame" x="18" y="254" width="133" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Open URLs with:" id="vNb-i3-dvE">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Open URLs with:" id="vNb-i3-dvE">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -326,8 +48,8 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BcN-gW-jBg">
|
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BcN-gW-jBg">
|
||||||
<rect key="frame" x="155" y="44" width="148" height="26"/>
|
<rect key="frame" x="155" y="249" width="148" height="26"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
<popUpButtonCell key="cell" type="push" title="-- list --" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="qW6-vv-pdE" id="R91-En-pHg">
|
<popUpButtonCell key="cell" type="push" title="-- list --" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="qW6-vv-pdE" id="R91-En-pHg">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -341,61 +63,8 @@
|
|||||||
<action selector="changeHttpApplication:" target="-2" id="Cyb-ab-VNu"/>
|
<action selector="changeHttpApplication:" target="-2" id="Cyb-ab-VNu"/>
|
||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<customView toolTip="Show in menu bar" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="P4Y-i1-MGE" customClass="SettingsIconGlobal">
|
|
||||||
<rect key="frame" x="20" y="235" width="18" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
|
||||||
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
|
||||||
<real key="value" value="40"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</customView>
|
|
||||||
<customView toolTip="Show in group menu" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SKf-Y7-8xS" customClass="SettingsIconGroup">
|
|
||||||
<rect key="frame" x="46" y="235" width="18" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
|
||||||
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
|
||||||
<real key="value" value="40"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</customView>
|
|
||||||
<customView toolTip="Show in feed menu" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="18m-2g-bqW" customClass="RSSIcon">
|
|
||||||
<rect key="frame" x="72" y="235" width="18" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<userDefinedRuntimeAttributes>
|
|
||||||
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
|
||||||
<real key="value" value="40"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
|
||||||
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</userDefinedRuntimeAttribute>
|
|
||||||
</userDefinedRuntimeAttributes>
|
|
||||||
</customView>
|
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Tec-F3-9cE">
|
|
||||||
<rect key="frame" x="18" y="271" width="284" height="18"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<buttonCell key="cell" type="check" title="Tint menu bar icon on unread" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="19k-mc-RLe">
|
|
||||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
|
||||||
<font key="font" metaFont="system"/>
|
|
||||||
</buttonCell>
|
|
||||||
<connections>
|
|
||||||
<action selector="changeMenuBarIconSetting:" target="-2" id="HYX-cD-a5Z"/>
|
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.tintMenuBarIcon" id="WON-AK-QIa">
|
|
||||||
<dictionary key="options">
|
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
|
||||||
<integer key="NSNullPlaceholder" value="1"/>
|
|
||||||
</dictionary>
|
|
||||||
</binding>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TC5-cu-zUi">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TC5-cu-zUi">
|
||||||
<rect key="frame" x="18" y="22" width="133" height="17"/>
|
<rect key="frame" x="18" y="227" width="133" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Default RSS Reader:" id="wvK-Oz-Kk3">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Default RSS Reader:" id="wvK-Oz-Kk3">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -404,8 +73,8 @@
|
|||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tJe-jL-nUu">
|
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tJe-jL-nUu">
|
||||||
<rect key="frame" x="155" y="17" width="148" height="26"/>
|
<rect key="frame" x="155" y="222" width="148" height="26"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
<popUpButtonCell key="cell" type="push" title="-- list --" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="4Gg-hZ-mh4" id="saR-9h-TWE">
|
<popUpButtonCell key="cell" type="push" title="-- list --" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="4Gg-hZ-mh4" id="saR-9h-TWE">
|
||||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="menu"/>
|
<font key="font" metaFont="menu"/>
|
||||||
@@ -420,8 +89,8 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QwE-M7-q2R">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QwE-M7-q2R">
|
||||||
<rect key="frame" x="206" y="279" width="100" height="32"/>
|
<rect key="frame" x="151" y="13" width="155" height="32"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||||
<buttonCell key="cell" type="push" title="Fix Cache" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ady-2s-Ggm">
|
<buttonCell key="cell" type="push" title="Fix Cache" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ady-2s-Ggm">
|
||||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
@@ -430,15 +99,354 @@
|
|||||||
<action selector="fixCache:" target="-2" id="gbM-hA-UVF"/>
|
<action selector="fixCache:" target="-2" id="gbM-hA-UVF"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MrI-IA-Ruj">
|
</subviews>
|
||||||
<rect key="frame" x="70" y="77" width="22" height="18"/>
|
<point key="canvasLocation" x="33" y="-153.5"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
</customView>
|
||||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="ixW-l7-SDZ">
|
<customView id="Wwh-0p-tPi" userLabel="Appearance View">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="327"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="c5z-lV-vas">
|
||||||
|
<rect key="frame" x="18" y="241" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="fhM-ZU-dqf">
|
||||||
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</buttonCell>
|
</buttonCell>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedShortNames" id="E0p-Yy-3lu">
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalUpdateAll" id="ObW-85-BJh">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qwe-HI-3qV">
|
||||||
|
<rect key="frame" x="18" y="219" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="PFz-Ow-r4F">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalOpenUnread" id="1gJ-DS-qv0">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ROH-bm-RYb">
|
||||||
|
<rect key="frame" x="44" y="219" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="z0G-PF-7X4">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupOpenUnread" id="IVo-sw-mcs">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="a64-GA-uqO">
|
||||||
|
<rect key="frame" x="70" y="219" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="5lC-Kd-cxG">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedOpenUnread" id="3NW-RY-kOa">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IAr-hA-5en">
|
||||||
|
<rect key="frame" x="18" y="197" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="pfa-9f-faM">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalMarkRead" id="ZwQ-Dn-ocg">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HVG-vG-GIU">
|
||||||
|
<rect key="frame" x="44" y="197" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="oje-pE-GW8">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupMarkRead" id="hya-HG-RtW">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gtu-6h-y3W">
|
||||||
|
<rect key="frame" x="70" y="197" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="t0S-h2-fFL">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedMarkRead" id="ILe-xm-ITh">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="utE-1U-oPJ">
|
||||||
|
<rect key="frame" x="18" y="175" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="HwB-CY-h1x">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalMarkUnread" id="vc4-oK-5yY">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6wd-KD-Vq2">
|
||||||
|
<rect key="frame" x="44" y="175" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="9UH-v7-h2R">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupMarkUnread" id="bUj-qA-Wnt">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="upF-tg-Zfs">
|
||||||
|
<rect key="frame" x="70" y="175" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="8d6-wr-mdT">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedMarkUnread" id="0ES-Df-AI3">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="E0O-SU-lzt">
|
||||||
|
<rect key="frame" x="18" y="153" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Vyz-7h-H3B">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="changeMenuBarIconSetting:" target="-2" id="0aa-UD-1gK"/>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.globalUnreadCount" id="2hk-H9-Oac">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vye-pf-bkq">
|
||||||
|
<rect key="frame" x="44" y="153" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="dRK-ge-IL7">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.groupUnreadCount" id="y2V-ws-n4p">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fmJ-ac-dcb">
|
||||||
|
<rect key="frame" x="70" y="153" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Nwc-Rx-Wbu">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedUnreadCount" id="OhX-uY-UA2">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ijX-fP-IQG">
|
||||||
|
<rect key="frame" x="70" y="131" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="CiI-wC-qa8">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedTickMark" id="Aia-Br-J5d">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ibh-Ob-COI">
|
||||||
|
<rect key="frame" x="96" y="242" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Update all feeds" id="mqk-td-Ely">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MAh-pk-fPm">
|
||||||
|
<rect key="frame" x="96" y="220" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Open all unread" id="3Wk-Ys-6Dg">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fue-A5-JZt">
|
||||||
|
<rect key="frame" x="96" y="198" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mark all read" id="qYo-AP-Ima">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1d6-T8-AME">
|
||||||
|
<rect key="frame" x="96" y="176" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Mark all unread" id="sp9-DH-f2e">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hQY-zw-PVG">
|
||||||
|
<rect key="frame" x="96" y="154" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Number of unread items" id="fya-vs-MV6">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QZ1-Mq-gky">
|
||||||
|
<rect key="frame" x="96" y="132" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tick mark unread items" id="IYd-BL-Sc8">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<customView toolTip="Show in menu bar" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0hm-pR-8ua" customClass="SettingsIconGlobal">
|
||||||
|
<rect key="frame" x="20" y="289" width="18" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
||||||
|
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
||||||
|
<real key="value" value="40"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</customView>
|
||||||
|
<customView toolTip="Show in group menu" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lfC-et-W8m" customClass="SettingsIconGroup">
|
||||||
|
<rect key="frame" x="46" y="289" width="18" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
||||||
|
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
||||||
|
<real key="value" value="40"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</customView>
|
||||||
|
<customView toolTip="Show in feed menu" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7Gn-Uq-6lG" customClass="RSSIcon">
|
||||||
|
<rect key="frame" x="72" y="289" width="18" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="roundness">
|
||||||
|
<real key="value" value="40"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="color" keyPath="color">
|
||||||
|
<color key="value" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</customView>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Jug-kR-uf7">
|
||||||
|
<rect key="frame" x="18" y="263" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="JGj-fV-11r">
|
||||||
|
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="changeMenuBarIconSetting:" target="-2" id="QXH-tb-Egy"/>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.tintMenuBarIcon" id="1N3-KQ-wbC">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="1"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i0v-Fd-POW">
|
||||||
|
<rect key="frame" x="70" y="109" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="Wsi-Zb-ug5">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedShortNames" id="dny-kJ-AZM">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
<integer key="NSNullPlaceholder" value="0"/>
|
<integer key="NSNullPlaceholder" value="0"/>
|
||||||
@@ -446,17 +454,51 @@
|
|||||||
</binding>
|
</binding>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<textField toolTip="Truncate article title after 60 characters" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="u6A-qA-zxZ">
|
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="saw-1G-eHz">
|
||||||
<rect key="frame" x="96" y="78" width="206" height="17"/>
|
<rect key="frame" x="70" y="87" width="22" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" inset="2" id="8LB-X9-2tl">
|
||||||
|
<behavior key="behavior" pushIn="YES" changeContents="YES" lightByContents="YES"/>
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
</buttonCell>
|
||||||
|
<connections>
|
||||||
|
<binding destination="iU7-KA-nY5" name="value" keyPath="values.feedLimitArticles" id="Hd2-Pr-n6T">
|
||||||
|
<dictionary key="options">
|
||||||
|
<bool key="NSAllowsEditingMultipleValuesSelection" value="NO"/>
|
||||||
|
<integer key="NSNullPlaceholder" value="0"/>
|
||||||
|
</dictionary>
|
||||||
|
</binding>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<textField toolTip="Truncate article title after 60 characters" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="p7p-HI-ePS">
|
||||||
|
<rect key="frame" x="96" y="110" width="206" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Short article names" id="Fh4-U9-Rnv">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Short article names" id="S8K-hH-Ssj">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField toolTip="Display at most 40 articles in feed menu" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="b3d-WG-MiJ">
|
||||||
|
<rect key="frame" x="96" y="88" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Limit number of articles" id="vjz-OI-S9j">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X7N-1T-bmw">
|
||||||
|
<rect key="frame" x="96" y="264" width="206" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Tint menu bar icon on unread" id="edV-Xi-cpf">
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
</textField>
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<point key="canvasLocation" x="140" y="-155.5"/>
|
<point key="canvasLocation" x="404" y="-154"/>
|
||||||
</customView>
|
</customView>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -32,4 +32,5 @@
|
|||||||
|
|
||||||
+ (NSUInteger)openFewLinksLimit; // Change with: 'defaults write de.relikd.baRSS openFewLinksLimit -int 10'
|
+ (NSUInteger)openFewLinksLimit; // Change with: 'defaults write de.relikd.baRSS openFewLinksLimit -int 10'
|
||||||
+ (NSUInteger)shortArticleNamesLimit; // Change with: 'defaults write de.relikd.baRSS shortArticleNamesLimit -int 50'
|
+ (NSUInteger)shortArticleNamesLimit; // Change with: 'defaults write de.relikd.baRSS shortArticleNamesLimit -int 50'
|
||||||
|
+ (NSUInteger)articlesInMenuLimit; // Change with: 'defaults write de.relikd.baRSS articlesInMenuLimit -int 40'
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -68,13 +68,21 @@
|
|||||||
#pragma mark - Hidden Plist Properties -
|
#pragma mark - Hidden Plist Properties -
|
||||||
|
|
||||||
/// @return The limit on how many links should be opened at the same time, if user holds the option key.
|
/// @return The limit on how many links should be opened at the same time, if user holds the option key.
|
||||||
|
/// Default: @c 10
|
||||||
+ (NSUInteger)openFewLinksLimit {
|
+ (NSUInteger)openFewLinksLimit {
|
||||||
return (NSUInteger)[self defaultInt:10 forKey:@"openFewLinksLimit"];
|
return (NSUInteger)[self defaultInt:10 forKey:@"openFewLinksLimit"];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @return The limit on when to truncate article titles (Short names setting must be active).
|
/// @return The limit on when to truncate article titles (Short names setting must be active).
|
||||||
|
/// Default: @c 60
|
||||||
+ (NSUInteger)shortArticleNamesLimit {
|
+ (NSUInteger)shortArticleNamesLimit {
|
||||||
return (NSUInteger)[self defaultInt:60 forKey:@"shortArticleNamesLimit"];
|
return (NSUInteger)[self defaultInt:60 forKey:@"shortArticleNamesLimit"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @return The maximum number of articles displayed per feed (Limit articles setting must be active).
|
||||||
|
/// Default: @c 40
|
||||||
|
+ (NSUInteger)articlesInMenuLimit {
|
||||||
|
return (NSUInteger)[self defaultInt:40 forKey:@"articlesInMenuLimit"];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
self.window.contentView = self.settingsGeneral.view;
|
self.window.contentView = self.settingsGeneral.view;
|
||||||
} else if ([sender.itemIdentifier isEqualToString:@"tabFeeds"]) {
|
} else if ([sender.itemIdentifier isEqualToString:@"tabFeeds"]) {
|
||||||
self.window.contentView = self.settingsFeeds.view;
|
self.window.contentView = self.settingsFeeds.view;
|
||||||
|
} else if ([sender.itemIdentifier isEqualToString:@"tabAppearance"]) {
|
||||||
|
if (self.settingsGeneral.view.frame.size.width > 0) {
|
||||||
|
// using side effect when reading settingsGeneral.view -> will load appearanceView too.
|
||||||
|
// TODO: generate view programmatically
|
||||||
|
self.window.contentView = nil;
|
||||||
|
}
|
||||||
|
self.window.contentView = self.settingsGeneral.appearanceView;
|
||||||
} else if ([sender.itemIdentifier isEqualToString:@"tabAbout"]) {
|
} else if ([sender.itemIdentifier isEqualToString:@"tabAbout"]) {
|
||||||
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
|
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
|
||||||
self.lblAppName.objectValue = infoDict[@"CFBundleName"];
|
self.lblAppName.objectValue = infoDict[@"CFBundleName"];
|
||||||
|
|||||||
@@ -38,6 +38,11 @@
|
|||||||
<action selector="tabClicked:" target="-2" id="MVF-hq-6H4"/>
|
<action selector="tabClicked:" target="-2" id="MVF-hq-6H4"/>
|
||||||
</connections>
|
</connections>
|
||||||
</toolbarItem>
|
</toolbarItem>
|
||||||
|
<toolbarItem implicitItemIdentifier="BC213BA1-C1C5-4EBA-8282-769344192482" explicitItemIdentifier="tabAppearance" label="Appearance" paletteLabel="Appearance" tag="-1" image="NSFontPanel" selectable="YES" id="5gP-ck-qVK">
|
||||||
|
<connections>
|
||||||
|
<action selector="tabClicked:" target="-2" id="BXs-NU-zQM"/>
|
||||||
|
</connections>
|
||||||
|
</toolbarItem>
|
||||||
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="kda-e8-akS"/>
|
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="kda-e8-akS"/>
|
||||||
<toolbarItem implicitItemIdentifier="7A0CF54C-C0BA-4E1D-9CD7-39FD39A6BA5A" explicitItemIdentifier="tabAbout" label="About" paletteLabel="About" tag="-1" image="NSInfo" selectable="YES" id="kob-4t-J64">
|
<toolbarItem implicitItemIdentifier="7A0CF54C-C0BA-4E1D-9CD7-39FD39A6BA5A" explicitItemIdentifier="tabAbout" label="About" paletteLabel="About" tag="-1" image="NSInfo" selectable="YES" id="kob-4t-J64">
|
||||||
<connections>
|
<connections>
|
||||||
@@ -48,6 +53,7 @@
|
|||||||
<defaultToolbarItems>
|
<defaultToolbarItems>
|
||||||
<toolbarItem reference="WDq-RJ-C3X"/>
|
<toolbarItem reference="WDq-RJ-C3X"/>
|
||||||
<toolbarItem reference="atT-AS-vmR"/>
|
<toolbarItem reference="atT-AS-vmR"/>
|
||||||
|
<toolbarItem reference="5gP-ck-qVK"/>
|
||||||
<toolbarItem reference="kda-e8-akS"/>
|
<toolbarItem reference="kda-e8-akS"/>
|
||||||
<toolbarItem reference="kob-4t-J64"/>
|
<toolbarItem reference="kob-4t-J64"/>
|
||||||
</defaultToolbarItems>
|
</defaultToolbarItems>
|
||||||
@@ -769,6 +775,7 @@ Cg
|
|||||||
</objects>
|
</objects>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="NSApplicationIcon" width="128" height="128"/>
|
<image name="NSApplicationIcon" width="128" height="128"/>
|
||||||
|
<image name="NSFontPanel" width="32" height="32"/>
|
||||||
<image name="NSInfo" width="32" height="32"/>
|
<image name="NSInfo" width="32" height="32"/>
|
||||||
<image name="NSPreferencesGeneral" width="32" height="32"/>
|
<image name="NSPreferencesGeneral" width="32" height="32"/>
|
||||||
<image name="NSUserAccounts" width="32" height="32"/>
|
<image name="NSUserAccounts" width="32" height="32"/>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#import "BarMenu.h"
|
#import "BarMenu.h"
|
||||||
#import "Constants.h"
|
#import "Constants.h"
|
||||||
|
#import "UserPrefs.h"
|
||||||
#import "NSMenu+Ext.h"
|
#import "NSMenu+Ext.h"
|
||||||
#import "BarStatusItem.h"
|
#import "BarStatusItem.h"
|
||||||
#import "MapUnreadTotal.h"
|
#import "MapUnreadTotal.h"
|
||||||
@@ -105,8 +106,14 @@
|
|||||||
/// Generate items for @c FeedArticles menu.
|
/// Generate items for @c FeedArticles menu.
|
||||||
- (void)setArticles:(NSArray<FeedArticle*>*)sortedList forMenu:(NSMenu*)menu {
|
- (void)setArticles:(NSArray<FeedArticle*>*)sortedList forMenu:(NSMenu*)menu {
|
||||||
[menu insertDefaultHeader];
|
[menu insertDefaultHeader];
|
||||||
|
NSUInteger mc = 0;
|
||||||
|
if ([UserPrefs defaultNO:@"feedLimitArticles"]) {
|
||||||
|
mc = [UserPrefs articlesInMenuLimit];
|
||||||
|
}
|
||||||
for (FeedArticle *fa in sortedList) {
|
for (FeedArticle *fa in sortedList) {
|
||||||
[menu addItem:[fa newMenuItem]];
|
[menu addItem:[fa newMenuItem]];
|
||||||
|
if (--mc == 0) // if mc==0 then unsigned int will underflow and turn into INT_MAX
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
|
UnreadTotal *uct = self.unreadMap[menu.titleIndexPath];
|
||||||
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
|
[menu setHeaderHasUnread:(uct.unread > 0) hasRead:(uct.unread < uct.total)];
|
||||||
@@ -147,6 +154,7 @@
|
|||||||
[self.unreadMap updateAllCounts:updated forPath:feed.indexPath];
|
[self.unreadMap updateAllCounts:updated forPath:feed.indexPath];
|
||||||
// 2. rebuild articles menu if it is open
|
// 2. rebuild articles menu if it is open
|
||||||
if (item.submenu.isFeedMenu) { // menu item is visible
|
if (item.submenu.isFeedMenu) { // menu item is visible
|
||||||
|
item.image = [feed iconImage16];
|
||||||
item.enabled = (feed.articles.count > 0);
|
item.enabled = (feed.articles.count > 0);
|
||||||
if (item.submenu.numberOfItems > 0) { // replace articles menu
|
if (item.submenu.numberOfItems > 0) { // replace articles menu
|
||||||
[item.submenu removeAllItems];
|
[item.submenu removeAllItems];
|
||||||
|
|||||||
Reference in New Issue
Block a user