From 70312aa75c15a18a8dcaf14ad15679e4a15c3403 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 13 Apr 2019 16:18:54 -0700 Subject: [PATCH] Major folder and project tree restructuring. --- LICENSE | 2 +- {NetNewsWire => Mac}/AppDefaults.swift | 0 {NetNewsWire => Mac}/AppDelegate.swift | 0 {NetNewsWire => Mac}/AppImages.swift | 0 {NetNewsWire => Mac}/AppNotifications.swift | 0 .../Base.lproj/AddFeedFromListSheet.xib | 0 .../Base.lproj/AddFeedSheet.xib | 0 .../Base.lproj/AddFolderSheet.xib | 0 .../Base.lproj/Main.storyboard | 0 .../Base.lproj/MainWindow.storyboard | 0 .../Base.lproj/Preferences.storyboard | 0 .../Base.lproj/RenameSheet.xib | 0 {NetNewsWire => Mac}/Browser.swift | 0 .../CrashReportWindowController.swift | 0 .../CrashReporter/CrashReporter.swift | 0 .../CrashReporter/CrashReporterWindow.xib | 0 ...ltinSmartFeedInspectorViewController.swift | 0 .../FeedInspectorViewController.swift | 0 .../FolderInspectorViewController.swift | 0 .../Inspector/Inspector.storyboard | 0 .../Inspector/InspectorWindowController.swift | 0 .../NothingInspectorViewController.swift | 0 .../AddFeed/AddFeedController.swift | 0 .../AddFeed/AddFeedWindowController.swift | 0 .../FolderTreeControllerDelegate.swift | 0 .../MainWindow/AddFeed/FolderTreeMenu.swift | 0 .../AddFeed/InitialFeedDownloader.swift | 0 .../AddFolder/AddFolderWindowController.swift | 0 .../MainWindow/Detail/ArticleRenderer.swift | 0 .../Detail/DetailContainerView.swift | 0 .../Detail/DetailStatusBarView.swift | 0 .../Detail/DetailViewController.swift | 0 .../MainWindow/Detail/DetailWebView.swift | 0 .../Detail/DetailWebViewController.swift | 0 .../Keyboard/DetailKeyboardDelegate.swift | 0 .../Keyboard/DetailKeyboardShortcuts.plist | 0 .../MainWindow/Detail/styleSheet.css | 0 .../MainWindow/Detail/template.html | 0 .../Keyboard/GlobalKeyboardShortcuts.plist | 0 .../Keyboard/MainWIndowKeyboardHandler.swift | 0 .../MainWindow/MainWindowController.swift | 0 .../MainWindow/SharingServiceDelegate.swift | 0 .../SharingServicePickerDelegate.swift | 0 .../MainWindow/Sidebar/Cell/SidebarCell.swift | 0 .../Sidebar/Cell/SidebarCellAppearance.swift | 0 .../Sidebar/Cell/SidebarCellLayout.swift | 0 .../Sidebar/FolderPasteboardWriter.swift | 0 .../Keyboard/SidebarKeyboardDelegate.swift | 0 .../Keyboard/SidebarKeyboardShortcuts.plist | 0 .../MainWindow/Sidebar/PasteboardFeed.swift | 0 .../Renaming/RenameWindowController.swift | 0 .../Sidebar/SidebarOutlineDataSource.swift | 0 .../Sidebar/SidebarOutlineView.swift | 0 .../Sidebar/SidebarStatusBarView.swift | 0 .../SidebarTreeControllerDelegate.swift | 0 ...idebarViewController+ContextualMenus.swift | 0 .../Sidebar/SidebarViewController.swift | 0 .../MainWindow/Sidebar/UnreadCountView.swift | 0 .../MainWindow/Timeline/ArticleArray.swift | 0 .../Timeline/ArticlePasteboardWriter.swift | 0 .../Cell/MultilineTextFieldSizer.swift | 0 .../Cell/SingleLineTextFieldSizer.swift | 0 .../Cell/TimelineCellAppearance.swift | 0 .../Timeline/Cell/TimelineCellData.swift | 0 .../Timeline/Cell/TimelineCellLayout.swift | 0 .../Cell/TimelineStringFormatter.swift | 0 .../Timeline/Cell/TimelineTableCellView.swift | 0 .../Timeline/Cell/UnreadIndicatorView.swift | 0 .../Keyboard/TimelineKeyboardDelegate.swift | 0 .../Keyboard/TimelineKeyboardShortcuts.plist | 0 .../Timeline/TimelineContainerView.swift | 0 .../TimelineContainerViewController.swift | 0 .../Timeline/TimelineTableRowView.swift | 0 .../Timeline/TimelineTableView.swift | 0 .../MainWindow/Timeline/TimelineTableView.xib | 0 ...melineViewController+ContextualMenus.swift | 0 .../Timeline/TimelineViewController.swift | 0 .../AccountsControlsBackgroundView.swift | 0 .../AccountsPreferencesViewController.swift | 0 .../Accounts/AccountsTableCellView.swift | 0 .../AccountsTableViewBackgroundView.swift | 0 .../Accounts/Local/LocalAccount.xib | 0 ...ocalAccountPreferencesViewController.swift | 0 .../AdvancedPreferencesViewController.swift | 0 .../GeneralPrefencesViewController.swift | 0 .../PreferencesWindowController.swift | 0 .../AppIcon-December.appiconset/Contents.json | 0 .../icon_128x128.png | Bin .../icon_128x128@2x.png | Bin .../icon_16x16.png | Bin .../icon_16x16@2x.png | Bin .../icon_256x256.png | Bin .../icon_256x256@2x.png | Bin .../icon_32x32.png | Bin .../icon_32x32@2x.png | Bin .../icon_512x512.png | Bin .../icon_512x512@2x.png | Bin .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon_128x128.png | Bin .../AppIcon.appiconset/icon_128x128@2x.png | Bin .../AppIcon.appiconset/icon_16x16.png | Bin .../AppIcon.appiconset/icon_16x16@2x.png | Bin .../AppIcon.appiconset/icon_256x256.png | Bin .../AppIcon.appiconset/icon_256x256@2x.png | Bin .../AppIcon.appiconset/icon_32x32.png | Bin .../AppIcon.appiconset/icon_32x32@2x.png | Bin .../AppIcon.appiconset/icon_512x512.png | Bin .../AppIcon.appiconset/icon_512x512@2x.png | Bin .../Resources}/Assets.xcassets/Contents.json | 0 .../Contents.json | 0 .../Contents.json | 0 .../Contents.json | 0 .../action.imageset/Contents.json | 0 .../action.imageset/action.png | Bin .../action.imageset/action@2x.png | Bin .../markAllRead.imageset/Contents.json | 0 .../markAllRead.imageset/markAllRead.png | Bin .../markAllRead.imageset/markAllRead@2x.png | Bin .../markRead.imageset/Contents.json | 0 .../markRead.imageset/markRead.png | Bin .../markRead.imageset/markRead@2x.png | Bin .../markUnread.imageset/Contents.json | 0 .../markUnread.imageset/markUnread.png | Bin .../markUnread.imageset/markUnread@2x.png | Bin .../newFolder.imageset/Contents.json | 0 .../newFolder.imageset/newFolder.png | Bin .../newFolder.imageset/newFolder@2x.png | Bin .../nextUnread.imageset/Contents.json | 0 .../nextUnread.imageset/nextUnread.png | Bin .../nextUnread.imageset/nextUnread@2x.png | Bin .../openInBrowser.imageset/Contents.json | 0 .../openInBrowser.imageset/openInBrowser.png | Bin .../openInBrowser@2x.png | Bin .../star.imageset/Contents.json | 0 .../Assets.xcassets/star.imageset/star.png | Bin .../Assets.xcassets/star.imageset/star@2x.png | Bin .../timelineStar.imageset/Contents.json | 0 .../timelineStar.imageset/timelineStar.png | Bin .../timelineStar.imageset/timelineStar@2x.png | Bin .../unstar.imageset/Contents.json | 0 .../unstar.imageset/unstar.png | Bin .../unstar.imageset/unstar@2x.png | Bin {NetNewsWire => Mac}/Resources/Credits.rtf | 0 .../Resources/EvergreenLarge.png | Bin {NetNewsWire => Mac/Resources}/Info.plist | 0 .../KeyboardShortcuts/KeyboardShortcuts.html | 0 .../Resources}/NetNewsWire.entitlements | 0 .../Resources/NetNewsWire.sdef | 0 .../SafariExtensionViewController.xib | 0 .../SafariExtension}/Info.plist | 0 .../SafariExtensionHandler.swift | 0 .../SafariExtensionViewController.swift | 0 .../Subscribe_to_Feed.entitlements | 0 .../SafariExtension}/ToolbarItemIcon.pdf | Bin .../SafariExtension}/ToolbarItemIcon.sketch | Bin .../netnewswire-subscribe-to-feed.js | 0 .../Scriptability/Account+Scriptability.swift | 0 .../AppDelegate+Scriptability.swift | 0 .../Scriptability/Article+Scriptability.swift | 0 .../Scriptability/Author+Scriptability.swift | 0 .../Scriptability/Feed+Scriptability.swift | 0 .../Scriptability/Folder+Scriptability.swift | 0 .../MainWindowController+Scriptability.swift | 0 .../NSApplication+Scriptability.swift | 0 .../NSScriptCommand+NetNewsWire.swift | 0 .../Scriptability/ScriptingObject.swift | 0 .../ScriptingObjectContainer.swift | 0 NetNewsWire.xcodeproj/project.pbxproj | 646 ++++++++---------- .../DatabaseWindow/DatabaseWindow.storyboard | 285 -------- .../DatabaseWindowController.swift | 19 - NetNewsWire/Dinosaurs/DinosaursWindow.xib | 228 ------- .../Dinosaurs/DinosaursWindowController.swift | 35 - NetNewsWire/FeedList/FeedList.plist | 361 ---------- NetNewsWire/FeedList/FeedList.storyboard | 193 ------ NetNewsWire/FeedList/FeedListFeed.swift | 117 ---- NetNewsWire/FeedList/FeedListFolder.swift | 38 -- .../FeedList/FeedListOutlineView.swift | 30 - .../FeedListTreeControllerDelegate.swift | 129 ---- .../FeedList/FeedListViewController.swift | 248 ------- .../FeedList/FeedListWindowController.swift | 22 - .../UnusedIn1.0/FeedListControlsView.swift | 15 - .../FeedListKeyboardDelegate.swift | 20 - .../FeedListSplitViewController.swift | 27 - NetNewsWire/Info-MAS.plist | 63 -- .../AddFeedFromListWindowController.swift | 122 ---- NetNewsWire/Resources/MAS/Credits.rtf | 42 -- .../ArticleStyles/ArticleStyle.swift | 0 .../ArticleStyles/ArticleStylesManager.swift | 0 .../Commands}/DeleteFromSidebarCommand.swift | 0 .../MarkCommandValidationStatus.swift | 0 .../Commands}/MarkStatusCommand.swift | 0 .../Commands}/SendToMarsEditCommand.swift | 0 .../Commands}/SendToMicroBlogCommand.swift | 0 .../Data/ArticleUtilities.swift | 0 .../Data/SmallIconProvider.swift | 0 .../Exporters}/OPMLExporter.swift | 0 .../Extensions/NSView-Extensions.swift | 0 .../Extensions/Node-Extensions.swift | 0 .../Extensions/RSImage-Extensions.swift | 0 .../Favicons/FaviconDownloader.swift | 0 .../Favicons/FaviconURLFinder.swift | 0 .../Favicons/SingleFaviconDownloader.swift | 0 .../FeedFinder/FeedFinder.swift | 0 .../FeedFinder/FeedSpecifier.swift | 0 .../FeedFinder/HTMLFeedFinder.swift | 0 .../HTMLMetadata/HTMLMetadataDownloader.swift | 0 .../Images/AuthorAvatarDownloader.swift | 0 .../Images/FeaturedImageDownloader.swift | 0 .../Images/FeedIconDownloader.swift | 0 .../Images/ImageDownloader.swift | 0 .../Images/RSHTMLMetadata+Extension.swift | 0 .../Importers}/DefaultFeeds.opml | 0 .../Importers}/DefaultFeedsImporter.swift | 0 .../Importers}/OPMLImporter.swift | 0 .../SmartFeeds/PseudoFeed.swift | 0 .../SmartFeeds/SearchFeedDelegate.swift | 0 .../SmartFeeds/SmartFeed.swift | 0 .../SmartFeedPasteboardWriter.swift | 0 .../SmartFeeds/SmartFeedsController.swift | 0 .../SmartFeeds/StarredFeedDelegate.swift | 0 .../SmartFeeds/TodayFeedDelegate.swift | 0 .../SmartFeeds/UnreadFeed.swift | 0 .../Notes => Technotes}/HelpMenu.markdown | 0 .../NetNewsWire-iOSTests}/Info.plist | 0 .../NetNewsWire_iOSTests.swift | 0 .../NetNewsWireTests}/Info.plist | 0 .../NetNewsWireTests}/NetNewsWireTests.swift | 0 .../AppleScriptXCTestCase.swift | 0 ...ppleEventDescriptor+UserRecordFields.swift | 0 .../ScriptingTests/ScriptingTests.swift | 0 ...tablishMainWindowStartingState.applescript | 0 .../scripts/selectAFeed.applescript | 0 .../scripts/selectAnArticle.applescript | 0 .../testCurrentArticleIsNil.applescript | 0 .../scripts/testFeedExists.applescript | 0 .../scripts/testFeedOPML.applescript | 0 .../scripts/testGenericScript.applescript | 0 .../scripts/testGetURL.applescript | 0 ...stIterativeCreateAndDeleteFeed.applescript | 0 .../testNameAndUrlOfEveryFeed.applescript | 0 .../scripts/testNameOfAuthors.applescript | 0 .../scripts/testNameOfEveryFolder.applescript | 0 .../testTitleOfArticlesWhose.applescript | 0 .../testURLsOfCurrentArticle.applescript | 0 .../scripts/uiScriptingTestSetup.applescript | 0 {NetNewsWire-iOS => iOS}/AppDelegate.swift | 0 .../Base.lproj/LaunchScreen.storyboard | 0 .../Base.lproj/Main.storyboard | 0 .../DetailViewController.swift | 0 .../MasterViewController.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../Resources}/Assets.xcassets/Contents.json | 0 {NetNewsWire-iOS => iOS/Resources}/Info.plist | 0 253 files changed, 296 insertions(+), 2346 deletions(-) rename {NetNewsWire => Mac}/AppDefaults.swift (100%) rename {NetNewsWire => Mac}/AppDelegate.swift (100%) rename {NetNewsWire => Mac}/AppImages.swift (100%) rename {NetNewsWire => Mac}/AppNotifications.swift (100%) rename {NetNewsWire => Mac}/Base.lproj/AddFeedFromListSheet.xib (100%) rename {NetNewsWire => Mac}/Base.lproj/AddFeedSheet.xib (100%) rename {NetNewsWire => Mac}/Base.lproj/AddFolderSheet.xib (100%) rename {NetNewsWire => Mac}/Base.lproj/Main.storyboard (100%) rename {NetNewsWire => Mac}/Base.lproj/MainWindow.storyboard (100%) rename {NetNewsWire => Mac}/Base.lproj/Preferences.storyboard (100%) rename {NetNewsWire => Mac}/Base.lproj/RenameSheet.xib (100%) rename {NetNewsWire => Mac}/Browser.swift (100%) rename {NetNewsWire => Mac}/CrashReporter/CrashReportWindowController.swift (100%) rename {NetNewsWire => Mac}/CrashReporter/CrashReporter.swift (100%) rename {NetNewsWire => Mac}/CrashReporter/CrashReporterWindow.xib (100%) rename {NetNewsWire => Mac}/Inspector/BuiltinSmartFeedInspectorViewController.swift (100%) rename {NetNewsWire => Mac}/Inspector/FeedInspectorViewController.swift (100%) rename {NetNewsWire => Mac}/Inspector/FolderInspectorViewController.swift (100%) rename {NetNewsWire => Mac}/Inspector/Inspector.storyboard (100%) rename {NetNewsWire => Mac}/Inspector/InspectorWindowController.swift (100%) rename {NetNewsWire => Mac}/Inspector/NothingInspectorViewController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFeed/AddFeedController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFeed/AddFeedWindowController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFeed/FolderTreeControllerDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFeed/FolderTreeMenu.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFeed/InitialFeedDownloader.swift (100%) rename {NetNewsWire => Mac}/MainWindow/AddFolder/AddFolderWindowController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/ArticleRenderer.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/DetailContainerView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/DetailStatusBarView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/DetailViewController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/DetailWebView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/DetailWebViewController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/Keyboard/DetailKeyboardDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/Keyboard/DetailKeyboardShortcuts.plist (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/styleSheet.css (100%) rename {NetNewsWire => Mac}/MainWindow/Detail/template.html (100%) rename {NetNewsWire => Mac}/MainWindow/Keyboard/GlobalKeyboardShortcuts.plist (100%) rename {NetNewsWire => Mac}/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift (100%) rename {NetNewsWire => Mac}/MainWindow/MainWindowController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/SharingServiceDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/SharingServicePickerDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Cell/SidebarCell.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Cell/SidebarCellAppearance.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Cell/SidebarCellLayout.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/FolderPasteboardWriter.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Keyboard/SidebarKeyboardShortcuts.plist (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/PasteboardFeed.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/Renaming/RenameWindowController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarOutlineDataSource.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarOutlineView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarStatusBarView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarTreeControllerDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/SidebarViewController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Sidebar/UnreadCountView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/ArticleArray.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/ArticlePasteboardWriter.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/MultilineTextFieldSizer.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/SingleLineTextFieldSizer.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/TimelineCellAppearance.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/TimelineCellData.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/TimelineCellLayout.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/TimelineStringFormatter.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/TimelineTableCellView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Cell/UnreadIndicatorView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/Keyboard/TimelineKeyboardShortcuts.plist (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineContainerView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineContainerViewController.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineTableRowView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineTableView.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineTableView.xib (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift (100%) rename {NetNewsWire => Mac}/MainWindow/Timeline/TimelineViewController.swift (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/AccountsControlsBackgroundView.swift (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/AccountsPreferencesViewController.swift (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/AccountsTableCellView.swift (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/AccountsTableViewBackgroundView.swift (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/Local/LocalAccount.xib (100%) rename {NetNewsWire => Mac}/Preferences/Accounts/Local/LocalAccountPreferencesViewController.swift (100%) rename {NetNewsWire => Mac}/Preferences/Advanced/AdvancedPreferencesViewController.swift (100%) rename {NetNewsWire => Mac}/Preferences/General/GeneralPrefencesViewController.swift (100%) rename {NetNewsWire => Mac}/Preferences/PreferencesWindowController.swift (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_128x128.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_128x128@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_16x16.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_16x16@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_256x256.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_256x256@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_32x32.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_32x32@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_512x512.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon-December.appiconset/icon_512x512@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_128x128.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_16x16.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_256x256.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_32x32.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_512x512.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png (100%) rename {NetNewsWire-iOS => Mac/Resources}/Assets.xcassets/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/DetailStatusBarBackground.colorset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/SidebarUnreadCountBackground.colorset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/SidebarUnreadCountText.colorset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/action.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/action.imageset/action.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/action.imageset/action@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markAllRead.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markAllRead.imageset/markAllRead.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markAllRead.imageset/markAllRead@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markRead.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markRead.imageset/markRead.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markRead.imageset/markRead@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markUnread.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markUnread.imageset/markUnread.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/markUnread.imageset/markUnread@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/newFolder.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/newFolder.imageset/newFolder.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/newFolder.imageset/newFolder@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/nextUnread.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/nextUnread.imageset/nextUnread.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/nextUnread.imageset/nextUnread@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/openInBrowser.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/openInBrowser.imageset/openInBrowser.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/openInBrowser.imageset/openInBrowser@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/star.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/star.imageset/star.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/star.imageset/star@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/timelineStar.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/timelineStar.imageset/timelineStar.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/unstar.imageset/Contents.json (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/unstar.imageset/unstar.png (100%) rename {NetNewsWire => Mac/Resources}/Assets.xcassets/unstar.imageset/unstar@2x.png (100%) rename {NetNewsWire => Mac}/Resources/Credits.rtf (100%) rename {NetNewsWire => Mac}/Resources/EvergreenLarge.png (100%) rename {NetNewsWire => Mac/Resources}/Info.plist (100%) rename {NetNewsWire => Mac}/Resources/KeyboardShortcuts/KeyboardShortcuts.html (100%) rename {NetNewsWire => Mac/Resources}/NetNewsWire.entitlements (100%) rename {NetNewsWire => Mac}/Resources/NetNewsWire.sdef (100%) rename {Safari Extension => Mac/SafariExtension}/Base.lproj/SafariExtensionViewController.xib (100%) rename {Safari Extension => Mac/SafariExtension}/Info.plist (100%) rename {Safari Extension => Mac/SafariExtension}/SafariExtensionHandler.swift (100%) rename {Safari Extension => Mac/SafariExtension}/SafariExtensionViewController.swift (100%) rename {Safari Extension => Mac/SafariExtension}/Subscribe_to_Feed.entitlements (100%) rename {Safari Extension => Mac/SafariExtension}/ToolbarItemIcon.pdf (100%) rename {Safari Extension => Mac/SafariExtension}/ToolbarItemIcon.sketch (100%) rename {Safari Extension => Mac/SafariExtension}/netnewswire-subscribe-to-feed.js (100%) rename {NetNewsWire => Mac}/Scriptability/Account+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/AppDelegate+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/Article+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/Author+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/Feed+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/Folder+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/MainWindowController+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/NSApplication+Scriptability.swift (100%) rename {NetNewsWire => Mac}/Scriptability/NSScriptCommand+NetNewsWire.swift (100%) rename {NetNewsWire => Mac}/Scriptability/ScriptingObject.swift (100%) rename {NetNewsWire => Mac}/Scriptability/ScriptingObjectContainer.swift (100%) delete mode 100644 NetNewsWire/DatabaseWindow/DatabaseWindow.storyboard delete mode 100644 NetNewsWire/DatabaseWindow/DatabaseWindowController.swift delete mode 100644 NetNewsWire/Dinosaurs/DinosaursWindow.xib delete mode 100644 NetNewsWire/Dinosaurs/DinosaursWindowController.swift delete mode 100644 NetNewsWire/FeedList/FeedList.plist delete mode 100644 NetNewsWire/FeedList/FeedList.storyboard delete mode 100644 NetNewsWire/FeedList/FeedListFeed.swift delete mode 100644 NetNewsWire/FeedList/FeedListFolder.swift delete mode 100644 NetNewsWire/FeedList/FeedListOutlineView.swift delete mode 100644 NetNewsWire/FeedList/FeedListTreeControllerDelegate.swift delete mode 100644 NetNewsWire/FeedList/FeedListViewController.swift delete mode 100644 NetNewsWire/FeedList/FeedListWindowController.swift delete mode 100644 NetNewsWire/FeedList/UnusedIn1.0/FeedListControlsView.swift delete mode 100644 NetNewsWire/FeedList/UnusedIn1.0/FeedListKeyboardDelegate.swift delete mode 100644 NetNewsWire/FeedList/UnusedIn1.0/FeedListSplitViewController.swift delete mode 100644 NetNewsWire/Info-MAS.plist delete mode 100644 NetNewsWire/MainWindow/AddFeed/AddFeedFromListWindowController.swift delete mode 100644 NetNewsWire/Resources/MAS/Credits.rtf rename {NetNewsWire => Shared}/ArticleStyles/ArticleStyle.swift (100%) rename {NetNewsWire => Shared}/ArticleStyles/ArticleStylesManager.swift (100%) rename {Commands => Shared/Commands}/DeleteFromSidebarCommand.swift (100%) rename {Commands => Shared/Commands}/MarkCommandValidationStatus.swift (100%) rename {Commands => Shared/Commands}/MarkStatusCommand.swift (100%) rename {Commands => Shared/Commands}/SendToMarsEditCommand.swift (100%) rename {Commands => Shared/Commands}/SendToMicroBlogCommand.swift (100%) rename {NetNewsWire => Shared}/Data/ArticleUtilities.swift (100%) rename {NetNewsWire => Shared}/Data/SmallIconProvider.swift (100%) rename {Exporters => Shared/Exporters}/OPMLExporter.swift (100%) rename {NetNewsWire => Shared}/Extensions/NSView-Extensions.swift (100%) rename {NetNewsWire => Shared}/Extensions/Node-Extensions.swift (100%) rename {NetNewsWire => Shared}/Extensions/RSImage-Extensions.swift (100%) rename {NetNewsWire => Shared}/Favicons/FaviconDownloader.swift (100%) rename {NetNewsWire => Shared}/Favicons/FaviconURLFinder.swift (100%) rename {NetNewsWire => Shared}/Favicons/SingleFaviconDownloader.swift (100%) rename {NetNewsWire => Shared}/FeedFinder/FeedFinder.swift (100%) rename {NetNewsWire => Shared}/FeedFinder/FeedSpecifier.swift (100%) rename {NetNewsWire => Shared}/FeedFinder/HTMLFeedFinder.swift (100%) rename {NetNewsWire => Shared}/HTMLMetadata/HTMLMetadataDownloader.swift (100%) rename {NetNewsWire => Shared}/Images/AuthorAvatarDownloader.swift (100%) rename {NetNewsWire => Shared}/Images/FeaturedImageDownloader.swift (100%) rename {NetNewsWire => Shared}/Images/FeedIconDownloader.swift (100%) rename {NetNewsWire => Shared}/Images/ImageDownloader.swift (100%) rename {NetNewsWire => Shared}/Images/RSHTMLMetadata+Extension.swift (100%) rename {Importers => Shared/Importers}/DefaultFeeds.opml (100%) rename {Importers => Shared/Importers}/DefaultFeedsImporter.swift (100%) rename {Importers => Shared/Importers}/OPMLImporter.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/PseudoFeed.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/SearchFeedDelegate.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/SmartFeed.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/SmartFeedPasteboardWriter.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/SmartFeedsController.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/StarredFeedDelegate.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/TodayFeedDelegate.swift (100%) rename {NetNewsWire => Shared}/SmartFeeds/UnreadFeed.swift (100%) rename {NetNewsWire/Notes => Technotes}/HelpMenu.markdown (100%) rename {NetNewsWire-iOSTests => Tests/NetNewsWire-iOSTests}/Info.plist (100%) rename {NetNewsWire-iOSTests => Tests/NetNewsWire-iOSTests}/NetNewsWire_iOSTests.swift (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/Info.plist (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/NetNewsWireTests.swift (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/AppleScriptXCTestCase.swift (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/NSAppleEventDescriptor+UserRecordFields.swift (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/ScriptingTests.swift (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/establishMainWindowStartingState.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/selectAFeed.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/selectAnArticle.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testCurrentArticleIsNil.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testFeedExists.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testFeedOPML.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testGenericScript.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testGetURL.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testIterativeCreateAndDeleteFeed.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testNameOfAuthors.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testNameOfEveryFolder.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/testURLsOfCurrentArticle.applescript (100%) rename {NetNewsWireTests => Tests/NetNewsWireTests}/ScriptingTests/scripts/uiScriptingTestSetup.applescript (100%) rename {NetNewsWire-iOS => iOS}/AppDelegate.swift (100%) rename {NetNewsWire-iOS => iOS}/Base.lproj/LaunchScreen.storyboard (100%) rename {NetNewsWire-iOS => iOS}/Base.lproj/Main.storyboard (100%) rename {NetNewsWire-iOS => iOS}/DetailViewController.swift (100%) rename {NetNewsWire-iOS => iOS}/MasterViewController.swift (100%) rename {NetNewsWire-iOS => iOS/Resources}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {NetNewsWire => iOS/Resources}/Assets.xcassets/Contents.json (100%) rename {NetNewsWire-iOS => iOS/Resources}/Info.plist (100%) diff --git a/LICENSE b/LICENSE index 5f3a4bbe5..61c1a5924 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 brentsimmons +Copyright (c) 2017-2019 Brent Simmons Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/NetNewsWire/AppDefaults.swift b/Mac/AppDefaults.swift similarity index 100% rename from NetNewsWire/AppDefaults.swift rename to Mac/AppDefaults.swift diff --git a/NetNewsWire/AppDelegate.swift b/Mac/AppDelegate.swift similarity index 100% rename from NetNewsWire/AppDelegate.swift rename to Mac/AppDelegate.swift diff --git a/NetNewsWire/AppImages.swift b/Mac/AppImages.swift similarity index 100% rename from NetNewsWire/AppImages.swift rename to Mac/AppImages.swift diff --git a/NetNewsWire/AppNotifications.swift b/Mac/AppNotifications.swift similarity index 100% rename from NetNewsWire/AppNotifications.swift rename to Mac/AppNotifications.swift diff --git a/NetNewsWire/Base.lproj/AddFeedFromListSheet.xib b/Mac/Base.lproj/AddFeedFromListSheet.xib similarity index 100% rename from NetNewsWire/Base.lproj/AddFeedFromListSheet.xib rename to Mac/Base.lproj/AddFeedFromListSheet.xib diff --git a/NetNewsWire/Base.lproj/AddFeedSheet.xib b/Mac/Base.lproj/AddFeedSheet.xib similarity index 100% rename from NetNewsWire/Base.lproj/AddFeedSheet.xib rename to Mac/Base.lproj/AddFeedSheet.xib diff --git a/NetNewsWire/Base.lproj/AddFolderSheet.xib b/Mac/Base.lproj/AddFolderSheet.xib similarity index 100% rename from NetNewsWire/Base.lproj/AddFolderSheet.xib rename to Mac/Base.lproj/AddFolderSheet.xib diff --git a/NetNewsWire/Base.lproj/Main.storyboard b/Mac/Base.lproj/Main.storyboard similarity index 100% rename from NetNewsWire/Base.lproj/Main.storyboard rename to Mac/Base.lproj/Main.storyboard diff --git a/NetNewsWire/Base.lproj/MainWindow.storyboard b/Mac/Base.lproj/MainWindow.storyboard similarity index 100% rename from NetNewsWire/Base.lproj/MainWindow.storyboard rename to Mac/Base.lproj/MainWindow.storyboard diff --git a/NetNewsWire/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard similarity index 100% rename from NetNewsWire/Base.lproj/Preferences.storyboard rename to Mac/Base.lproj/Preferences.storyboard diff --git a/NetNewsWire/Base.lproj/RenameSheet.xib b/Mac/Base.lproj/RenameSheet.xib similarity index 100% rename from NetNewsWire/Base.lproj/RenameSheet.xib rename to Mac/Base.lproj/RenameSheet.xib diff --git a/NetNewsWire/Browser.swift b/Mac/Browser.swift similarity index 100% rename from NetNewsWire/Browser.swift rename to Mac/Browser.swift diff --git a/NetNewsWire/CrashReporter/CrashReportWindowController.swift b/Mac/CrashReporter/CrashReportWindowController.swift similarity index 100% rename from NetNewsWire/CrashReporter/CrashReportWindowController.swift rename to Mac/CrashReporter/CrashReportWindowController.swift diff --git a/NetNewsWire/CrashReporter/CrashReporter.swift b/Mac/CrashReporter/CrashReporter.swift similarity index 100% rename from NetNewsWire/CrashReporter/CrashReporter.swift rename to Mac/CrashReporter/CrashReporter.swift diff --git a/NetNewsWire/CrashReporter/CrashReporterWindow.xib b/Mac/CrashReporter/CrashReporterWindow.xib similarity index 100% rename from NetNewsWire/CrashReporter/CrashReporterWindow.xib rename to Mac/CrashReporter/CrashReporterWindow.xib diff --git a/NetNewsWire/Inspector/BuiltinSmartFeedInspectorViewController.swift b/Mac/Inspector/BuiltinSmartFeedInspectorViewController.swift similarity index 100% rename from NetNewsWire/Inspector/BuiltinSmartFeedInspectorViewController.swift rename to Mac/Inspector/BuiltinSmartFeedInspectorViewController.swift diff --git a/NetNewsWire/Inspector/FeedInspectorViewController.swift b/Mac/Inspector/FeedInspectorViewController.swift similarity index 100% rename from NetNewsWire/Inspector/FeedInspectorViewController.swift rename to Mac/Inspector/FeedInspectorViewController.swift diff --git a/NetNewsWire/Inspector/FolderInspectorViewController.swift b/Mac/Inspector/FolderInspectorViewController.swift similarity index 100% rename from NetNewsWire/Inspector/FolderInspectorViewController.swift rename to Mac/Inspector/FolderInspectorViewController.swift diff --git a/NetNewsWire/Inspector/Inspector.storyboard b/Mac/Inspector/Inspector.storyboard similarity index 100% rename from NetNewsWire/Inspector/Inspector.storyboard rename to Mac/Inspector/Inspector.storyboard diff --git a/NetNewsWire/Inspector/InspectorWindowController.swift b/Mac/Inspector/InspectorWindowController.swift similarity index 100% rename from NetNewsWire/Inspector/InspectorWindowController.swift rename to Mac/Inspector/InspectorWindowController.swift diff --git a/NetNewsWire/Inspector/NothingInspectorViewController.swift b/Mac/Inspector/NothingInspectorViewController.swift similarity index 100% rename from NetNewsWire/Inspector/NothingInspectorViewController.swift rename to Mac/Inspector/NothingInspectorViewController.swift diff --git a/NetNewsWire/MainWindow/AddFeed/AddFeedController.swift b/Mac/MainWindow/AddFeed/AddFeedController.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFeed/AddFeedController.swift rename to Mac/MainWindow/AddFeed/AddFeedController.swift diff --git a/NetNewsWire/MainWindow/AddFeed/AddFeedWindowController.swift b/Mac/MainWindow/AddFeed/AddFeedWindowController.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFeed/AddFeedWindowController.swift rename to Mac/MainWindow/AddFeed/AddFeedWindowController.swift diff --git a/NetNewsWire/MainWindow/AddFeed/FolderTreeControllerDelegate.swift b/Mac/MainWindow/AddFeed/FolderTreeControllerDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFeed/FolderTreeControllerDelegate.swift rename to Mac/MainWindow/AddFeed/FolderTreeControllerDelegate.swift diff --git a/NetNewsWire/MainWindow/AddFeed/FolderTreeMenu.swift b/Mac/MainWindow/AddFeed/FolderTreeMenu.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFeed/FolderTreeMenu.swift rename to Mac/MainWindow/AddFeed/FolderTreeMenu.swift diff --git a/NetNewsWire/MainWindow/AddFeed/InitialFeedDownloader.swift b/Mac/MainWindow/AddFeed/InitialFeedDownloader.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFeed/InitialFeedDownloader.swift rename to Mac/MainWindow/AddFeed/InitialFeedDownloader.swift diff --git a/NetNewsWire/MainWindow/AddFolder/AddFolderWindowController.swift b/Mac/MainWindow/AddFolder/AddFolderWindowController.swift similarity index 100% rename from NetNewsWire/MainWindow/AddFolder/AddFolderWindowController.swift rename to Mac/MainWindow/AddFolder/AddFolderWindowController.swift diff --git a/NetNewsWire/MainWindow/Detail/ArticleRenderer.swift b/Mac/MainWindow/Detail/ArticleRenderer.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/ArticleRenderer.swift rename to Mac/MainWindow/Detail/ArticleRenderer.swift diff --git a/NetNewsWire/MainWindow/Detail/DetailContainerView.swift b/Mac/MainWindow/Detail/DetailContainerView.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/DetailContainerView.swift rename to Mac/MainWindow/Detail/DetailContainerView.swift diff --git a/NetNewsWire/MainWindow/Detail/DetailStatusBarView.swift b/Mac/MainWindow/Detail/DetailStatusBarView.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/DetailStatusBarView.swift rename to Mac/MainWindow/Detail/DetailStatusBarView.swift diff --git a/NetNewsWire/MainWindow/Detail/DetailViewController.swift b/Mac/MainWindow/Detail/DetailViewController.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/DetailViewController.swift rename to Mac/MainWindow/Detail/DetailViewController.swift diff --git a/NetNewsWire/MainWindow/Detail/DetailWebView.swift b/Mac/MainWindow/Detail/DetailWebView.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/DetailWebView.swift rename to Mac/MainWindow/Detail/DetailWebView.swift diff --git a/NetNewsWire/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/DetailWebViewController.swift rename to Mac/MainWindow/Detail/DetailWebViewController.swift diff --git a/NetNewsWire/MainWindow/Detail/Keyboard/DetailKeyboardDelegate.swift b/Mac/MainWindow/Detail/Keyboard/DetailKeyboardDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/Detail/Keyboard/DetailKeyboardDelegate.swift rename to Mac/MainWindow/Detail/Keyboard/DetailKeyboardDelegate.swift diff --git a/NetNewsWire/MainWindow/Detail/Keyboard/DetailKeyboardShortcuts.plist b/Mac/MainWindow/Detail/Keyboard/DetailKeyboardShortcuts.plist similarity index 100% rename from NetNewsWire/MainWindow/Detail/Keyboard/DetailKeyboardShortcuts.plist rename to Mac/MainWindow/Detail/Keyboard/DetailKeyboardShortcuts.plist diff --git a/NetNewsWire/MainWindow/Detail/styleSheet.css b/Mac/MainWindow/Detail/styleSheet.css similarity index 100% rename from NetNewsWire/MainWindow/Detail/styleSheet.css rename to Mac/MainWindow/Detail/styleSheet.css diff --git a/NetNewsWire/MainWindow/Detail/template.html b/Mac/MainWindow/Detail/template.html similarity index 100% rename from NetNewsWire/MainWindow/Detail/template.html rename to Mac/MainWindow/Detail/template.html diff --git a/NetNewsWire/MainWindow/Keyboard/GlobalKeyboardShortcuts.plist b/Mac/MainWindow/Keyboard/GlobalKeyboardShortcuts.plist similarity index 100% rename from NetNewsWire/MainWindow/Keyboard/GlobalKeyboardShortcuts.plist rename to Mac/MainWindow/Keyboard/GlobalKeyboardShortcuts.plist diff --git a/NetNewsWire/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift b/Mac/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift similarity index 100% rename from NetNewsWire/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift rename to Mac/MainWindow/Keyboard/MainWIndowKeyboardHandler.swift diff --git a/NetNewsWire/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift similarity index 100% rename from NetNewsWire/MainWindow/MainWindowController.swift rename to Mac/MainWindow/MainWindowController.swift diff --git a/NetNewsWire/MainWindow/SharingServiceDelegate.swift b/Mac/MainWindow/SharingServiceDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/SharingServiceDelegate.swift rename to Mac/MainWindow/SharingServiceDelegate.swift diff --git a/NetNewsWire/MainWindow/SharingServicePickerDelegate.swift b/Mac/MainWindow/SharingServicePickerDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/SharingServicePickerDelegate.swift rename to Mac/MainWindow/SharingServicePickerDelegate.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Cell/SidebarCell.swift b/Mac/MainWindow/Sidebar/Cell/SidebarCell.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Cell/SidebarCell.swift rename to Mac/MainWindow/Sidebar/Cell/SidebarCell.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Cell/SidebarCellAppearance.swift b/Mac/MainWindow/Sidebar/Cell/SidebarCellAppearance.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Cell/SidebarCellAppearance.swift rename to Mac/MainWindow/Sidebar/Cell/SidebarCellAppearance.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Cell/SidebarCellLayout.swift b/Mac/MainWindow/Sidebar/Cell/SidebarCellLayout.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Cell/SidebarCellLayout.swift rename to Mac/MainWindow/Sidebar/Cell/SidebarCellLayout.swift diff --git a/NetNewsWire/MainWindow/Sidebar/FolderPasteboardWriter.swift b/Mac/MainWindow/Sidebar/FolderPasteboardWriter.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/FolderPasteboardWriter.swift rename to Mac/MainWindow/Sidebar/FolderPasteboardWriter.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift b/Mac/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift rename to Mac/MainWindow/Sidebar/Keyboard/SidebarKeyboardDelegate.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Keyboard/SidebarKeyboardShortcuts.plist b/Mac/MainWindow/Sidebar/Keyboard/SidebarKeyboardShortcuts.plist similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Keyboard/SidebarKeyboardShortcuts.plist rename to Mac/MainWindow/Sidebar/Keyboard/SidebarKeyboardShortcuts.plist diff --git a/NetNewsWire/MainWindow/Sidebar/PasteboardFeed.swift b/Mac/MainWindow/Sidebar/PasteboardFeed.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/PasteboardFeed.swift rename to Mac/MainWindow/Sidebar/PasteboardFeed.swift diff --git a/NetNewsWire/MainWindow/Sidebar/Renaming/RenameWindowController.swift b/Mac/MainWindow/Sidebar/Renaming/RenameWindowController.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/Renaming/RenameWindowController.swift rename to Mac/MainWindow/Sidebar/Renaming/RenameWindowController.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarOutlineDataSource.swift b/Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarOutlineDataSource.swift rename to Mac/MainWindow/Sidebar/SidebarOutlineDataSource.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarOutlineView.swift b/Mac/MainWindow/Sidebar/SidebarOutlineView.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarOutlineView.swift rename to Mac/MainWindow/Sidebar/SidebarOutlineView.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarStatusBarView.swift b/Mac/MainWindow/Sidebar/SidebarStatusBarView.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarStatusBarView.swift rename to Mac/MainWindow/Sidebar/SidebarStatusBarView.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarTreeControllerDelegate.swift b/Mac/MainWindow/Sidebar/SidebarTreeControllerDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarTreeControllerDelegate.swift rename to Mac/MainWindow/Sidebar/SidebarTreeControllerDelegate.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift b/Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift rename to Mac/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift diff --git a/NetNewsWire/MainWindow/Sidebar/SidebarViewController.swift b/Mac/MainWindow/Sidebar/SidebarViewController.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/SidebarViewController.swift rename to Mac/MainWindow/Sidebar/SidebarViewController.swift diff --git a/NetNewsWire/MainWindow/Sidebar/UnreadCountView.swift b/Mac/MainWindow/Sidebar/UnreadCountView.swift similarity index 100% rename from NetNewsWire/MainWindow/Sidebar/UnreadCountView.swift rename to Mac/MainWindow/Sidebar/UnreadCountView.swift diff --git a/NetNewsWire/MainWindow/Timeline/ArticleArray.swift b/Mac/MainWindow/Timeline/ArticleArray.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/ArticleArray.swift rename to Mac/MainWindow/Timeline/ArticleArray.swift diff --git a/NetNewsWire/MainWindow/Timeline/ArticlePasteboardWriter.swift b/Mac/MainWindow/Timeline/ArticlePasteboardWriter.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/ArticlePasteboardWriter.swift rename to Mac/MainWindow/Timeline/ArticlePasteboardWriter.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/MultilineTextFieldSizer.swift b/Mac/MainWindow/Timeline/Cell/MultilineTextFieldSizer.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/MultilineTextFieldSizer.swift rename to Mac/MainWindow/Timeline/Cell/MultilineTextFieldSizer.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/SingleLineTextFieldSizer.swift b/Mac/MainWindow/Timeline/Cell/SingleLineTextFieldSizer.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/SingleLineTextFieldSizer.swift rename to Mac/MainWindow/Timeline/Cell/SingleLineTextFieldSizer.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/TimelineCellAppearance.swift b/Mac/MainWindow/Timeline/Cell/TimelineCellAppearance.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/TimelineCellAppearance.swift rename to Mac/MainWindow/Timeline/Cell/TimelineCellAppearance.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/TimelineCellData.swift b/Mac/MainWindow/Timeline/Cell/TimelineCellData.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/TimelineCellData.swift rename to Mac/MainWindow/Timeline/Cell/TimelineCellData.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/TimelineCellLayout.swift b/Mac/MainWindow/Timeline/Cell/TimelineCellLayout.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/TimelineCellLayout.swift rename to Mac/MainWindow/Timeline/Cell/TimelineCellLayout.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/TimelineStringFormatter.swift b/Mac/MainWindow/Timeline/Cell/TimelineStringFormatter.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/TimelineStringFormatter.swift rename to Mac/MainWindow/Timeline/Cell/TimelineStringFormatter.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/TimelineTableCellView.swift b/Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/TimelineTableCellView.swift rename to Mac/MainWindow/Timeline/Cell/TimelineTableCellView.swift diff --git a/NetNewsWire/MainWindow/Timeline/Cell/UnreadIndicatorView.swift b/Mac/MainWindow/Timeline/Cell/UnreadIndicatorView.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Cell/UnreadIndicatorView.swift rename to Mac/MainWindow/Timeline/Cell/UnreadIndicatorView.swift diff --git a/NetNewsWire/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift b/Mac/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift rename to Mac/MainWindow/Timeline/Keyboard/TimelineKeyboardDelegate.swift diff --git a/NetNewsWire/MainWindow/Timeline/Keyboard/TimelineKeyboardShortcuts.plist b/Mac/MainWindow/Timeline/Keyboard/TimelineKeyboardShortcuts.plist similarity index 100% rename from NetNewsWire/MainWindow/Timeline/Keyboard/TimelineKeyboardShortcuts.plist rename to Mac/MainWindow/Timeline/Keyboard/TimelineKeyboardShortcuts.plist diff --git a/NetNewsWire/MainWindow/Timeline/TimelineContainerView.swift b/Mac/MainWindow/Timeline/TimelineContainerView.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineContainerView.swift rename to Mac/MainWindow/Timeline/TimelineContainerView.swift diff --git a/NetNewsWire/MainWindow/Timeline/TimelineContainerViewController.swift b/Mac/MainWindow/Timeline/TimelineContainerViewController.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineContainerViewController.swift rename to Mac/MainWindow/Timeline/TimelineContainerViewController.swift diff --git a/NetNewsWire/MainWindow/Timeline/TimelineTableRowView.swift b/Mac/MainWindow/Timeline/TimelineTableRowView.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineTableRowView.swift rename to Mac/MainWindow/Timeline/TimelineTableRowView.swift diff --git a/NetNewsWire/MainWindow/Timeline/TimelineTableView.swift b/Mac/MainWindow/Timeline/TimelineTableView.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineTableView.swift rename to Mac/MainWindow/Timeline/TimelineTableView.swift diff --git a/NetNewsWire/MainWindow/Timeline/TimelineTableView.xib b/Mac/MainWindow/Timeline/TimelineTableView.xib similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineTableView.xib rename to Mac/MainWindow/Timeline/TimelineTableView.xib diff --git a/NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift b/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift rename to Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift diff --git a/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift similarity index 100% rename from NetNewsWire/MainWindow/Timeline/TimelineViewController.swift rename to Mac/MainWindow/Timeline/TimelineViewController.swift diff --git a/NetNewsWire/Preferences/Accounts/AccountsControlsBackgroundView.swift b/Mac/Preferences/Accounts/AccountsControlsBackgroundView.swift similarity index 100% rename from NetNewsWire/Preferences/Accounts/AccountsControlsBackgroundView.swift rename to Mac/Preferences/Accounts/AccountsControlsBackgroundView.swift diff --git a/NetNewsWire/Preferences/Accounts/AccountsPreferencesViewController.swift b/Mac/Preferences/Accounts/AccountsPreferencesViewController.swift similarity index 100% rename from NetNewsWire/Preferences/Accounts/AccountsPreferencesViewController.swift rename to Mac/Preferences/Accounts/AccountsPreferencesViewController.swift diff --git a/NetNewsWire/Preferences/Accounts/AccountsTableCellView.swift b/Mac/Preferences/Accounts/AccountsTableCellView.swift similarity index 100% rename from NetNewsWire/Preferences/Accounts/AccountsTableCellView.swift rename to Mac/Preferences/Accounts/AccountsTableCellView.swift diff --git a/NetNewsWire/Preferences/Accounts/AccountsTableViewBackgroundView.swift b/Mac/Preferences/Accounts/AccountsTableViewBackgroundView.swift similarity index 100% rename from NetNewsWire/Preferences/Accounts/AccountsTableViewBackgroundView.swift rename to Mac/Preferences/Accounts/AccountsTableViewBackgroundView.swift diff --git a/NetNewsWire/Preferences/Accounts/Local/LocalAccount.xib b/Mac/Preferences/Accounts/Local/LocalAccount.xib similarity index 100% rename from NetNewsWire/Preferences/Accounts/Local/LocalAccount.xib rename to Mac/Preferences/Accounts/Local/LocalAccount.xib diff --git a/NetNewsWire/Preferences/Accounts/Local/LocalAccountPreferencesViewController.swift b/Mac/Preferences/Accounts/Local/LocalAccountPreferencesViewController.swift similarity index 100% rename from NetNewsWire/Preferences/Accounts/Local/LocalAccountPreferencesViewController.swift rename to Mac/Preferences/Accounts/Local/LocalAccountPreferencesViewController.swift diff --git a/NetNewsWire/Preferences/Advanced/AdvancedPreferencesViewController.swift b/Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift similarity index 100% rename from NetNewsWire/Preferences/Advanced/AdvancedPreferencesViewController.swift rename to Mac/Preferences/Advanced/AdvancedPreferencesViewController.swift diff --git a/NetNewsWire/Preferences/General/GeneralPrefencesViewController.swift b/Mac/Preferences/General/GeneralPrefencesViewController.swift similarity index 100% rename from NetNewsWire/Preferences/General/GeneralPrefencesViewController.swift rename to Mac/Preferences/General/GeneralPrefencesViewController.swift diff --git a/NetNewsWire/Preferences/PreferencesWindowController.swift b/Mac/Preferences/PreferencesWindowController.swift similarity index 100% rename from NetNewsWire/Preferences/PreferencesWindowController.swift rename to Mac/Preferences/PreferencesWindowController.swift diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/Contents.json b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/Contents.json rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_128x128.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_128x128.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_128x128.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_128x128.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_128x128@2x.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_128x128@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_128x128@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_128x128@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_16x16.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_16x16.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_16x16.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_16x16.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_16x16@2x.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_16x16@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_16x16@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_16x16@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_256x256.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_256x256.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_256x256.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_256x256.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_256x256@2x.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_256x256@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_256x256@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_256x256@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_32x32.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_32x32.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_32x32.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_32x32.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_32x32@2x.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_32x32@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_32x32@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_32x32@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_512x512.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_512x512.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_512x512.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_512x512.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_512x512@2x.png b/Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_512x512@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon-December.appiconset/icon_512x512@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon-December.appiconset/icon_512x512@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/Contents.json b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_128x128.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_16x16.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_16x16.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_16x16.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_16x16.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_256x256.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_256x256.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_32x32.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_32x32.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_512x512.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_512x512.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512.png diff --git a/NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png rename to Mac/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png diff --git a/NetNewsWire-iOS/Assets.xcassets/Contents.json b/Mac/Resources/Assets.xcassets/Contents.json similarity index 100% rename from NetNewsWire-iOS/Assets.xcassets/Contents.json rename to Mac/Resources/Assets.xcassets/Contents.json diff --git a/NetNewsWire/Assets.xcassets/DetailStatusBarBackground.colorset/Contents.json b/Mac/Resources/Assets.xcassets/DetailStatusBarBackground.colorset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/DetailStatusBarBackground.colorset/Contents.json rename to Mac/Resources/Assets.xcassets/DetailStatusBarBackground.colorset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/SidebarUnreadCountBackground.colorset/Contents.json b/Mac/Resources/Assets.xcassets/SidebarUnreadCountBackground.colorset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/SidebarUnreadCountBackground.colorset/Contents.json rename to Mac/Resources/Assets.xcassets/SidebarUnreadCountBackground.colorset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/SidebarUnreadCountText.colorset/Contents.json b/Mac/Resources/Assets.xcassets/SidebarUnreadCountText.colorset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/SidebarUnreadCountText.colorset/Contents.json rename to Mac/Resources/Assets.xcassets/SidebarUnreadCountText.colorset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/action.imageset/Contents.json b/Mac/Resources/Assets.xcassets/action.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/action.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/action.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/action.imageset/action.png b/Mac/Resources/Assets.xcassets/action.imageset/action.png similarity index 100% rename from NetNewsWire/Assets.xcassets/action.imageset/action.png rename to Mac/Resources/Assets.xcassets/action.imageset/action.png diff --git a/NetNewsWire/Assets.xcassets/action.imageset/action@2x.png b/Mac/Resources/Assets.xcassets/action.imageset/action@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/action.imageset/action@2x.png rename to Mac/Resources/Assets.xcassets/action.imageset/action@2x.png diff --git a/NetNewsWire/Assets.xcassets/markAllRead.imageset/Contents.json b/Mac/Resources/Assets.xcassets/markAllRead.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/markAllRead.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/markAllRead.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/markAllRead.imageset/markAllRead.png b/Mac/Resources/Assets.xcassets/markAllRead.imageset/markAllRead.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markAllRead.imageset/markAllRead.png rename to Mac/Resources/Assets.xcassets/markAllRead.imageset/markAllRead.png diff --git a/NetNewsWire/Assets.xcassets/markAllRead.imageset/markAllRead@2x.png b/Mac/Resources/Assets.xcassets/markAllRead.imageset/markAllRead@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markAllRead.imageset/markAllRead@2x.png rename to Mac/Resources/Assets.xcassets/markAllRead.imageset/markAllRead@2x.png diff --git a/NetNewsWire/Assets.xcassets/markRead.imageset/Contents.json b/Mac/Resources/Assets.xcassets/markRead.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/markRead.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/markRead.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/markRead.imageset/markRead.png b/Mac/Resources/Assets.xcassets/markRead.imageset/markRead.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markRead.imageset/markRead.png rename to Mac/Resources/Assets.xcassets/markRead.imageset/markRead.png diff --git a/NetNewsWire/Assets.xcassets/markRead.imageset/markRead@2x.png b/Mac/Resources/Assets.xcassets/markRead.imageset/markRead@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markRead.imageset/markRead@2x.png rename to Mac/Resources/Assets.xcassets/markRead.imageset/markRead@2x.png diff --git a/NetNewsWire/Assets.xcassets/markUnread.imageset/Contents.json b/Mac/Resources/Assets.xcassets/markUnread.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/markUnread.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/markUnread.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/markUnread.imageset/markUnread.png b/Mac/Resources/Assets.xcassets/markUnread.imageset/markUnread.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markUnread.imageset/markUnread.png rename to Mac/Resources/Assets.xcassets/markUnread.imageset/markUnread.png diff --git a/NetNewsWire/Assets.xcassets/markUnread.imageset/markUnread@2x.png b/Mac/Resources/Assets.xcassets/markUnread.imageset/markUnread@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/markUnread.imageset/markUnread@2x.png rename to Mac/Resources/Assets.xcassets/markUnread.imageset/markUnread@2x.png diff --git a/NetNewsWire/Assets.xcassets/newFolder.imageset/Contents.json b/Mac/Resources/Assets.xcassets/newFolder.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/newFolder.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/newFolder.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/newFolder.imageset/newFolder.png b/Mac/Resources/Assets.xcassets/newFolder.imageset/newFolder.png similarity index 100% rename from NetNewsWire/Assets.xcassets/newFolder.imageset/newFolder.png rename to Mac/Resources/Assets.xcassets/newFolder.imageset/newFolder.png diff --git a/NetNewsWire/Assets.xcassets/newFolder.imageset/newFolder@2x.png b/Mac/Resources/Assets.xcassets/newFolder.imageset/newFolder@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/newFolder.imageset/newFolder@2x.png rename to Mac/Resources/Assets.xcassets/newFolder.imageset/newFolder@2x.png diff --git a/NetNewsWire/Assets.xcassets/nextUnread.imageset/Contents.json b/Mac/Resources/Assets.xcassets/nextUnread.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/nextUnread.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/nextUnread.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/nextUnread.imageset/nextUnread.png b/Mac/Resources/Assets.xcassets/nextUnread.imageset/nextUnread.png similarity index 100% rename from NetNewsWire/Assets.xcassets/nextUnread.imageset/nextUnread.png rename to Mac/Resources/Assets.xcassets/nextUnread.imageset/nextUnread.png diff --git a/NetNewsWire/Assets.xcassets/nextUnread.imageset/nextUnread@2x.png b/Mac/Resources/Assets.xcassets/nextUnread.imageset/nextUnread@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/nextUnread.imageset/nextUnread@2x.png rename to Mac/Resources/Assets.xcassets/nextUnread.imageset/nextUnread@2x.png diff --git a/NetNewsWire/Assets.xcassets/openInBrowser.imageset/Contents.json b/Mac/Resources/Assets.xcassets/openInBrowser.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/openInBrowser.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/openInBrowser.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/openInBrowser.imageset/openInBrowser.png b/Mac/Resources/Assets.xcassets/openInBrowser.imageset/openInBrowser.png similarity index 100% rename from NetNewsWire/Assets.xcassets/openInBrowser.imageset/openInBrowser.png rename to Mac/Resources/Assets.xcassets/openInBrowser.imageset/openInBrowser.png diff --git a/NetNewsWire/Assets.xcassets/openInBrowser.imageset/openInBrowser@2x.png b/Mac/Resources/Assets.xcassets/openInBrowser.imageset/openInBrowser@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/openInBrowser.imageset/openInBrowser@2x.png rename to Mac/Resources/Assets.xcassets/openInBrowser.imageset/openInBrowser@2x.png diff --git a/NetNewsWire/Assets.xcassets/star.imageset/Contents.json b/Mac/Resources/Assets.xcassets/star.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/star.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/star.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/star.imageset/star.png b/Mac/Resources/Assets.xcassets/star.imageset/star.png similarity index 100% rename from NetNewsWire/Assets.xcassets/star.imageset/star.png rename to Mac/Resources/Assets.xcassets/star.imageset/star.png diff --git a/NetNewsWire/Assets.xcassets/star.imageset/star@2x.png b/Mac/Resources/Assets.xcassets/star.imageset/star@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/star.imageset/star@2x.png rename to Mac/Resources/Assets.xcassets/star.imageset/star@2x.png diff --git a/NetNewsWire/Assets.xcassets/timelineStar.imageset/Contents.json b/Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/timelineStar.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/timelineStar.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/timelineStar.imageset/timelineStar.png b/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar.png similarity index 100% rename from NetNewsWire/Assets.xcassets/timelineStar.imageset/timelineStar.png rename to Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar.png diff --git a/NetNewsWire/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png b/Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png rename to Mac/Resources/Assets.xcassets/timelineStar.imageset/timelineStar@2x.png diff --git a/NetNewsWire/Assets.xcassets/unstar.imageset/Contents.json b/Mac/Resources/Assets.xcassets/unstar.imageset/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/unstar.imageset/Contents.json rename to Mac/Resources/Assets.xcassets/unstar.imageset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/unstar.imageset/unstar.png b/Mac/Resources/Assets.xcassets/unstar.imageset/unstar.png similarity index 100% rename from NetNewsWire/Assets.xcassets/unstar.imageset/unstar.png rename to Mac/Resources/Assets.xcassets/unstar.imageset/unstar.png diff --git a/NetNewsWire/Assets.xcassets/unstar.imageset/unstar@2x.png b/Mac/Resources/Assets.xcassets/unstar.imageset/unstar@2x.png similarity index 100% rename from NetNewsWire/Assets.xcassets/unstar.imageset/unstar@2x.png rename to Mac/Resources/Assets.xcassets/unstar.imageset/unstar@2x.png diff --git a/NetNewsWire/Resources/Credits.rtf b/Mac/Resources/Credits.rtf similarity index 100% rename from NetNewsWire/Resources/Credits.rtf rename to Mac/Resources/Credits.rtf diff --git a/NetNewsWire/Resources/EvergreenLarge.png b/Mac/Resources/EvergreenLarge.png similarity index 100% rename from NetNewsWire/Resources/EvergreenLarge.png rename to Mac/Resources/EvergreenLarge.png diff --git a/NetNewsWire/Info.plist b/Mac/Resources/Info.plist similarity index 100% rename from NetNewsWire/Info.plist rename to Mac/Resources/Info.plist diff --git a/NetNewsWire/Resources/KeyboardShortcuts/KeyboardShortcuts.html b/Mac/Resources/KeyboardShortcuts/KeyboardShortcuts.html similarity index 100% rename from NetNewsWire/Resources/KeyboardShortcuts/KeyboardShortcuts.html rename to Mac/Resources/KeyboardShortcuts/KeyboardShortcuts.html diff --git a/NetNewsWire/NetNewsWire.entitlements b/Mac/Resources/NetNewsWire.entitlements similarity index 100% rename from NetNewsWire/NetNewsWire.entitlements rename to Mac/Resources/NetNewsWire.entitlements diff --git a/NetNewsWire/Resources/NetNewsWire.sdef b/Mac/Resources/NetNewsWire.sdef similarity index 100% rename from NetNewsWire/Resources/NetNewsWire.sdef rename to Mac/Resources/NetNewsWire.sdef diff --git a/Safari Extension/Base.lproj/SafariExtensionViewController.xib b/Mac/SafariExtension/Base.lproj/SafariExtensionViewController.xib similarity index 100% rename from Safari Extension/Base.lproj/SafariExtensionViewController.xib rename to Mac/SafariExtension/Base.lproj/SafariExtensionViewController.xib diff --git a/Safari Extension/Info.plist b/Mac/SafariExtension/Info.plist similarity index 100% rename from Safari Extension/Info.plist rename to Mac/SafariExtension/Info.plist diff --git a/Safari Extension/SafariExtensionHandler.swift b/Mac/SafariExtension/SafariExtensionHandler.swift similarity index 100% rename from Safari Extension/SafariExtensionHandler.swift rename to Mac/SafariExtension/SafariExtensionHandler.swift diff --git a/Safari Extension/SafariExtensionViewController.swift b/Mac/SafariExtension/SafariExtensionViewController.swift similarity index 100% rename from Safari Extension/SafariExtensionViewController.swift rename to Mac/SafariExtension/SafariExtensionViewController.swift diff --git a/Safari Extension/Subscribe_to_Feed.entitlements b/Mac/SafariExtension/Subscribe_to_Feed.entitlements similarity index 100% rename from Safari Extension/Subscribe_to_Feed.entitlements rename to Mac/SafariExtension/Subscribe_to_Feed.entitlements diff --git a/Safari Extension/ToolbarItemIcon.pdf b/Mac/SafariExtension/ToolbarItemIcon.pdf similarity index 100% rename from Safari Extension/ToolbarItemIcon.pdf rename to Mac/SafariExtension/ToolbarItemIcon.pdf diff --git a/Safari Extension/ToolbarItemIcon.sketch b/Mac/SafariExtension/ToolbarItemIcon.sketch similarity index 100% rename from Safari Extension/ToolbarItemIcon.sketch rename to Mac/SafariExtension/ToolbarItemIcon.sketch diff --git a/Safari Extension/netnewswire-subscribe-to-feed.js b/Mac/SafariExtension/netnewswire-subscribe-to-feed.js similarity index 100% rename from Safari Extension/netnewswire-subscribe-to-feed.js rename to Mac/SafariExtension/netnewswire-subscribe-to-feed.js diff --git a/NetNewsWire/Scriptability/Account+Scriptability.swift b/Mac/Scriptability/Account+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/Account+Scriptability.swift rename to Mac/Scriptability/Account+Scriptability.swift diff --git a/NetNewsWire/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/AppDelegate+Scriptability.swift rename to Mac/Scriptability/AppDelegate+Scriptability.swift diff --git a/NetNewsWire/Scriptability/Article+Scriptability.swift b/Mac/Scriptability/Article+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/Article+Scriptability.swift rename to Mac/Scriptability/Article+Scriptability.swift diff --git a/NetNewsWire/Scriptability/Author+Scriptability.swift b/Mac/Scriptability/Author+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/Author+Scriptability.swift rename to Mac/Scriptability/Author+Scriptability.swift diff --git a/NetNewsWire/Scriptability/Feed+Scriptability.swift b/Mac/Scriptability/Feed+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/Feed+Scriptability.swift rename to Mac/Scriptability/Feed+Scriptability.swift diff --git a/NetNewsWire/Scriptability/Folder+Scriptability.swift b/Mac/Scriptability/Folder+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/Folder+Scriptability.swift rename to Mac/Scriptability/Folder+Scriptability.swift diff --git a/NetNewsWire/Scriptability/MainWindowController+Scriptability.swift b/Mac/Scriptability/MainWindowController+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/MainWindowController+Scriptability.swift rename to Mac/Scriptability/MainWindowController+Scriptability.swift diff --git a/NetNewsWire/Scriptability/NSApplication+Scriptability.swift b/Mac/Scriptability/NSApplication+Scriptability.swift similarity index 100% rename from NetNewsWire/Scriptability/NSApplication+Scriptability.swift rename to Mac/Scriptability/NSApplication+Scriptability.swift diff --git a/NetNewsWire/Scriptability/NSScriptCommand+NetNewsWire.swift b/Mac/Scriptability/NSScriptCommand+NetNewsWire.swift similarity index 100% rename from NetNewsWire/Scriptability/NSScriptCommand+NetNewsWire.swift rename to Mac/Scriptability/NSScriptCommand+NetNewsWire.swift diff --git a/NetNewsWire/Scriptability/ScriptingObject.swift b/Mac/Scriptability/ScriptingObject.swift similarity index 100% rename from NetNewsWire/Scriptability/ScriptingObject.swift rename to Mac/Scriptability/ScriptingObject.swift diff --git a/NetNewsWire/Scriptability/ScriptingObjectContainer.swift b/Mac/Scriptability/ScriptingObjectContainer.swift similarity index 100% rename from NetNewsWire/Scriptability/ScriptingObjectContainer.swift rename to Mac/Scriptability/ScriptingObjectContainer.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index ca303f084..6de334003 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -27,11 +27,7 @@ 840D617F2029031C009BC708 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D617E2029031C009BC708 /* AppDelegate.swift */; }; 840D61812029031C009BC708 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D61802029031C009BC708 /* MasterViewController.swift */; }; 840D61832029031C009BC708 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D61822029031C009BC708 /* DetailViewController.swift */; }; - 840D61862029031C009BC708 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 840D61842029031C009BC708 /* Main.storyboard */; }; - 840D61882029031D009BC708 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 840D61872029031D009BC708 /* Assets.xcassets */; }; - 840D618B2029031D009BC708 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 840D61892029031D009BC708 /* LaunchScreen.storyboard */; }; 840D61962029031D009BC708 /* NetNewsWire_iOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840D61952029031D009BC708 /* NetNewsWire_iOSTests.swift */; }; - 840F7C0821B4671B0057E851 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 840F7C0721B4671B0057E851 /* Credits.rtf */; }; 84162A152038C12C00035290 /* MarkCommandValidationStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84162A142038C12C00035290 /* MarkCommandValidationStatus.swift */; }; 841ABA4E20145E7300980E11 /* NothingInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841ABA4D20145E7300980E11 /* NothingInspectorViewController.swift */; }; 841ABA5E20145E9200980E11 /* FolderInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841ABA5D20145E9200980E11 /* FolderInspectorViewController.swift */; }; @@ -43,10 +39,6 @@ 8426119E1FCB6ED40086A189 /* HTMLMetadataDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8426119D1FCB6ED40086A189 /* HTMLMetadataDownloader.swift */; }; 842611A01FCB72600086A189 /* FeaturedImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8426119F1FCB72600086A189 /* FeaturedImageDownloader.swift */; }; 842611A21FCB769D0086A189 /* RSHTMLMetadata+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842611A11FCB769D0086A189 /* RSHTMLMetadata+Extension.swift */; }; - 842AE5B92241F37B004A742C /* AccountsControlsBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842AE5B72241F37B004A742C /* AccountsControlsBackgroundView.swift */; }; - 842AE5BB2241F37B004A742C /* AccountsPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842AE5B82241F37B004A742C /* AccountsPreferencesViewController.swift */; }; - 842AE5BF2241F396004A742C /* GeneralPrefencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842AE5BE2241F396004A742C /* GeneralPrefencesViewController.swift */; }; - 842AE5C32241F39C004A742C /* AdvancedPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842AE5C22241F39C004A742C /* AdvancedPreferencesViewController.swift */; }; 842E45CE1ED8C308000A8B52 /* AppNotifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */; }; 842E45DD1ED8C54B000A8B52 /* Browser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842E45DC1ED8C54B000A8B52 /* Browser.swift */; }; 8440C8AD2129F9F5002353D1 /* ArticlesDatabase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841D4D682106B3E100DD04E6 /* ArticlesDatabase.framework */; }; @@ -71,6 +63,13 @@ 8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8472058020142E8900AD578B /* FeedInspectorViewController.swift */; }; 8477ACBE22238E9500DF7F37 /* SearchFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8477ACBD22238E9500DF7F37 /* SearchFeedDelegate.swift */; }; 847E64A02262783000E00365 /* NSAppleEventDescriptor+UserRecordFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */; }; + 848362FD2262A30800DA1D35 /* styleSheet.css in Resources */ = {isa = PBXBuildFile; fileRef = 848362FC2262A30800DA1D35 /* styleSheet.css */; }; + 848362FF2262A30E00DA1D35 /* template.html in Resources */ = {isa = PBXBuildFile; fileRef = 848362FE2262A30E00DA1D35 /* template.html */; }; + 848363022262A3BD00DA1D35 /* AddFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */; }; + 848363052262A3CC00DA1D35 /* AddFolderSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */; }; + 848363082262A3DD00DA1D35 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 848363062262A3DD00DA1D35 /* Main.storyboard */; }; + 8483630B2262A3F000DA1D35 /* RenameSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 848363092262A3F000DA1D35 /* RenameSheet.xib */; }; + 8483630E2262A3FE00DA1D35 /* MainWindow.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8483630C2262A3FE00DA1D35 /* MainWindow.storyboard */; }; 848B937221C8C5540038DC0D /* CrashReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848B937121C8C5540038DC0D /* CrashReporter.swift */; }; 848D578E21543519005FFAD5 /* PasteboardFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D578D21543519005FFAD5 /* PasteboardFeed.swift */; }; 848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */; }; @@ -96,28 +95,18 @@ 849A977F1ED9EC42007D329B /* ArticleRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A977D1ED9EC42007D329B /* ArticleRenderer.swift */; }; 849A97801ED9EC42007D329B /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A977E1ED9EC42007D329B /* DetailViewController.swift */; }; 849A97831ED9EC63007D329B /* SidebarStatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97821ED9EC63007D329B /* SidebarStatusBarView.swift */; }; - 849A97851ED9ECCD007D329B /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97841ED9ECCD007D329B /* PreferencesWindowController.swift */; }; 849A97891ED9ECEF007D329B /* ArticleStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97871ED9ECEF007D329B /* ArticleStyle.swift */; }; 849A978A1ED9ECEF007D329B /* ArticleStylesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97881ED9ECEF007D329B /* ArticleStylesManager.swift */; }; 849A97981ED9EFAA007D329B /* Node-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97971ED9EFAA007D329B /* Node-Extensions.swift */; }; - 849A979C1ED9EFEB007D329B /* styleSheet.css in Resources */ = {isa = PBXBuildFile; fileRef = 849A979A1ED9EFEB007D329B /* styleSheet.css */; }; - 849A979D1ED9EFEB007D329B /* template.html in Resources */ = {isa = PBXBuildFile; fileRef = 849A979B1ED9EFEB007D329B /* template.html */; }; 849A979F1ED9F130007D329B /* SidebarCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A979E1ED9F130007D329B /* SidebarCell.swift */; }; 849A97A21ED9F180007D329B /* InitialFeedDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97A01ED9F180007D329B /* InitialFeedDownloader.swift */; }; 849A97A31ED9F180007D329B /* FolderTreeControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97A11ED9F180007D329B /* FolderTreeControllerDelegate.swift */; }; - 849A97A61ED9F94D007D329B /* Preferences.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 849A97A41ED9F94D007D329B /* Preferences.storyboard */; }; - 849A97A91ED9F9AA007D329B /* AddFeedSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 849A97A71ED9F9AA007D329B /* AddFeedSheet.xib */; }; - 849A97AC1ED9F9BC007D329B /* AddFolderSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 849A97AA1ED9F9BC007D329B /* AddFolderSheet.xib */; }; - 849A97B21ED9FA69007D329B /* MainWindow.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 849A97B01ED9FA69007D329B /* MainWindow.storyboard */; }; - 849C64641ED37A5D003D8FC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849C64631ED37A5D003D8FC0 /* AppDelegate.swift */; }; 849C64681ED37A5D003D8FC0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 849C64671ED37A5D003D8FC0 /* Assets.xcassets */; }; - 849C646B1ED37A5D003D8FC0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 849C64691ED37A5D003D8FC0 /* Main.storyboard */; }; 849EE70F203919360082A1EA /* AppImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849EE70E203919360082A1EA /* AppImages.swift */; }; 849EE72120391F560082A1EA /* SharingServicePickerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849EE72020391F560082A1EA /* SharingServicePickerDelegate.swift */; }; 84A14FF320048CA70046AD9A /* SendToMicroBlogCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A14FF220048CA70046AD9A /* SendToMicroBlogCommand.swift */; }; 84A1500520048DDF0046AD9A /* SendToMarsEditCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A1500420048DDF0046AD9A /* SendToMarsEditCommand.swift */; }; 84A37CB5201ECD610087C5AF /* RenameWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A37CB4201ECD610087C5AF /* RenameWindowController.swift */; }; - 84A37CBB201ECE590087C5AF /* RenameSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84A37CB9201ECE590087C5AF /* RenameSheet.xib */; }; 84A3EE5F223B667F00557320 /* DefaultFeeds.opml in Resources */ = {isa = PBXBuildFile; fileRef = 84A3EE52223B667F00557320 /* DefaultFeeds.opml */; }; 84A3EE61223B667F00557320 /* DefaultFeeds.opml in Resources */ = {isa = PBXBuildFile; fileRef = 84A3EE52223B667F00557320 /* DefaultFeeds.opml */; }; 84AD1EAA2031617300BC20B7 /* FolderPasteboardWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84AD1EA92031617300BC20B7 /* FolderPasteboardWriter.swift */; }; @@ -138,6 +127,25 @@ 84C37FB620DD8DBB00CA8CF5 /* RSParser.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84C37F8C20DD8CF800CA8CF5 /* RSParser.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 84C37FC520DD8E1D00CA8CF5 /* RSDatabase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84C37FC020DD8E0C00CA8CF5 /* RSDatabase.framework */; }; 84C37FC620DD8E1D00CA8CF5 /* RSDatabase.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 84C37FC020DD8E0C00CA8CF5 /* RSDatabase.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 84C9FC6722629B9000D921D6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC6622629B3900D921D6 /* AppDelegate.swift */; }; + 84C9FC7722629E1200D921D6 /* AdvancedPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC6B22629E1200D921D6 /* AdvancedPreferencesViewController.swift */; }; + 84C9FC7822629E1200D921D6 /* GeneralPrefencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC6D22629E1200D921D6 /* GeneralPrefencesViewController.swift */; }; + 84C9FC7922629E1200D921D6 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC6E22629E1200D921D6 /* PreferencesWindowController.swift */; }; + 84C9FC7A22629E1200D921D6 /* AccountsTableViewBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC7022629E1200D921D6 /* AccountsTableViewBackgroundView.swift */; }; + 84C9FC7B22629E1200D921D6 /* AccountsControlsBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC7122629E1200D921D6 /* AccountsControlsBackgroundView.swift */; }; + 84C9FC7C22629E1200D921D6 /* AccountsPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC7222629E1200D921D6 /* AccountsPreferencesViewController.swift */; }; + 84C9FC7D22629E1200D921D6 /* LocalAccount.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC7422629E1200D921D6 /* LocalAccount.xib */; }; + 84C9FC7E22629E1200D921D6 /* LocalAccountPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC7522629E1200D921D6 /* LocalAccountPreferencesViewController.swift */; }; + 84C9FC7F22629E1200D921D6 /* AccountsTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C9FC7622629E1200D921D6 /* AccountsTableCellView.swift */; }; + 84C9FC8222629E4800D921D6 /* Preferences.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8022629E4800D921D6 /* Preferences.storyboard */; }; + 84C9FC8C22629E8F00D921D6 /* KeyboardShortcuts.html in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8722629E8F00D921D6 /* KeyboardShortcuts.html */; }; + 84C9FC8D22629E8F00D921D6 /* EvergreenLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8822629E8F00D921D6 /* EvergreenLarge.png */; }; + 84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8922629E8F00D921D6 /* Credits.rtf */; }; + 84C9FC8F22629E8F00D921D6 /* NetNewsWire.sdef in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC8A22629E8F00D921D6 /* NetNewsWire.sdef */; }; + 84C9FC9D2262A1A900D921D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC9B2262A1A900D921D6 /* Assets.xcassets */; }; + 84C9FC9E2262A1A900D921D6 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC9C2262A1A900D921D6 /* Info.plist */; }; + 84C9FCA12262A1B300D921D6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FC9F2262A1B300D921D6 /* Main.storyboard */; }; + 84C9FCA42262A1B800D921D6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 84C9FCA22262A1B800D921D6 /* LaunchScreen.storyboard */; }; 84CC88181FE59CBF00644329 /* SmartFeedsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84CC88171FE59CBF00644329 /* SmartFeedsController.swift */; }; 84D52E951FE588BB00D14F5B /* DetailStatusBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */; }; 84DAEE301F86CAFE0058304B /* OPMLImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84DAEE2F1F86CAFE0058304B /* OPMLImporter.swift */; }; @@ -148,11 +156,6 @@ 84E8E0DB202EC49300562D8F /* TimelineViewController+ContextualMenus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E8E0DA202EC49300562D8F /* TimelineViewController+ContextualMenus.swift */; }; 84E8E0EB202F693600562D8F /* DetailWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E8E0EA202F693600562D8F /* DetailWebView.swift */; }; 84E95D241FB1087500552D99 /* ArticlePasteboardWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E95D231FB1087500552D99 /* ArticlePasteboardWriter.swift */; }; - 84EB381F1FBA8B9F000D2111 /* KeyboardShortcuts.html in Resources */ = {isa = PBXBuildFile; fileRef = 84EB38101FBA8B9F000D2111 /* KeyboardShortcuts.html */; }; - 84F1F0562242038B00DA0616 /* AccountsTableViewBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F1F0552242038B00DA0616 /* AccountsTableViewBackgroundView.swift */; }; - 84F1F0692243455C00DA0616 /* LocalAccount.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84F1F0682243455C00DA0616 /* LocalAccount.xib */; }; - 84F1F06C2243457C00DA0616 /* LocalAccountPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F1F06B2243457C00DA0616 /* LocalAccountPreferencesViewController.swift */; }; - 84F1F0702246C1D800DA0616 /* AccountsTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F1F06F2246C1D800DA0616 /* AccountsTableCellView.swift */; }; 84F204E01FAACBB30076E152 /* ArticleArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F204DF1FAACBB30076E152 /* ArticleArray.swift */; }; 84F2D5371FC22FCC00998D64 /* PseudoFeed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F2D5351FC22FCB00998D64 /* PseudoFeed.swift */; }; 84F2D5381FC22FCC00998D64 /* TodayFeedDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84F2D5361FC22FCB00998D64 /* TodayFeedDelegate.swift */; }; @@ -191,7 +194,6 @@ D5907D972004B7EB005947E5 /* Account+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5907D962004B7EB005947E5 /* Account+Scriptability.swift */; }; D5907DB22004BB37005947E5 /* ScriptingObjectContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5907DB12004BB37005947E5 /* ScriptingObjectContainer.swift */; }; D5A2678C20130ECF00A8D3C0 /* Author+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5A2678B20130ECF00A8D3C0 /* Author+Scriptability.swift */; }; - D5D1751220020B980047B29D /* NetNewsWire.sdef in Resources */ = {isa = PBXBuildFile; fileRef = D5D175012002039D0047B29D /* NetNewsWire.sdef */; }; D5E4CC54202C1361009B4FFC /* AppDelegate+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E4CC53202C1361009B4FFC /* AppDelegate+Scriptability.swift */; }; D5E4CC64202C1AC1009B4FFC /* MainWindowController+Scriptability.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5E4CC63202C1AC1009B4FFC /* MainWindowController+Scriptability.swift */; }; D5F4EDB5200744A700B9E363 /* ScriptingObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */; }; @@ -453,8 +455,6 @@ 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = DetailKeyboardShortcuts.plist; sourceTree = ""; }; 519B8D322143397200FA689C /* SharingServiceDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingServiceDelegate.swift; sourceTree = ""; }; 51EC114B2149FE3300B296E3 /* FolderTreeMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FolderTreeMenu.swift; path = AddFeed/FolderTreeMenu.swift; sourceTree = ""; }; - 51EC1194214A94AC00B296E3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = NetNewsWire/Base.lproj/AddFeedFromListSheet.xib; sourceTree = SOURCE_ROOT; }; - 51EC11A2214A990000B296E3 /* AddFeedFromListWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AddFeedFromListWindowController.swift; path = AddFeed/AddFeedFromListWindowController.swift; sourceTree = ""; }; 6581C73320CED60000F4AD34 /* Subscribe to Feed.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Subscribe to Feed.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 6581C73420CED60100F4AD34 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 6581C73720CED60100F4AD34 /* SafariExtensionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariExtensionHandler.swift; sourceTree = ""; }; @@ -464,7 +464,6 @@ 6581C73F20CED60100F4AD34 /* netnewswire-subscribe-to-feed.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "netnewswire-subscribe-to-feed.js"; sourceTree = ""; }; 6581C74120CED60100F4AD34 /* ToolbarItemIcon.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = ToolbarItemIcon.pdf; sourceTree = ""; }; 6581C74320CED60100F4AD34 /* Subscribe_to_Feed.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Subscribe_to_Feed.entitlements; sourceTree = ""; }; - 8403E75A201C4A79007F7246 /* FeedListKeyboardDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListKeyboardDelegate.swift; sourceTree = ""; }; 8405DD892213E0E3008CE1BF /* DetailContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailContainerView.swift; sourceTree = ""; }; 8405DD9822153B6B008CE1BF /* TimelineContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineContainerView.swift; sourceTree = ""; }; 8405DD9B22153BD7008CE1BF /* NSView-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSView-Extensions.swift"; sourceTree = ""; }; @@ -475,16 +474,9 @@ 840D617E2029031C009BC708 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 840D61802029031C009BC708 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = ""; }; 840D61822029031C009BC708 /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; - 840D61852029031C009BC708 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 840D61872029031D009BC708 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 840D618A2029031D009BC708 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 840D618C2029031D009BC708 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 840D61912029031D009BC708 /* NetNewsWire-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NetNewsWire-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 840D61952029031D009BC708 /* NetNewsWire_iOSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetNewsWire_iOSTests.swift; sourceTree = ""; }; 840D61972029031D009BC708 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 840F7C0721B4671B0057E851 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; name = Credits.rtf; path = NetNewsWire/Resources/Credits.rtf; sourceTree = SOURCE_ROOT; }; - 840F7C0921BCA1B10057E851 /* NetNewsWire.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = NetNewsWire.entitlements; path = NetNewsWire/NetNewsWire.entitlements; sourceTree = ""; }; - 840F7CC021BDAD2C0057E851 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; name = Credits.rtf; path = NetNewsWire/Resources/MAS/Credits.rtf; sourceTree = SOURCE_ROOT; }; 84162A142038C12C00035290 /* MarkCommandValidationStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkCommandValidationStatus.swift; sourceTree = ""; }; 841ABA4D20145E7300980E11 /* NothingInspectorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NothingInspectorViewController.swift; sourceTree = ""; }; 841ABA5D20145E9200980E11 /* FolderInspectorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolderInspectorViewController.swift; sourceTree = ""; }; @@ -496,15 +488,8 @@ 8426119D1FCB6ED40086A189 /* HTMLMetadataDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTMLMetadataDownloader.swift; sourceTree = ""; }; 8426119F1FCB72600086A189 /* FeaturedImageDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeaturedImageDownloader.swift; sourceTree = ""; }; 842611A11FCB769D0086A189 /* RSHTMLMetadata+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RSHTMLMetadata+Extension.swift"; sourceTree = ""; }; - 842AE5B72241F37B004A742C /* AccountsControlsBackgroundView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsControlsBackgroundView.swift; sourceTree = ""; }; - 842AE5B82241F37B004A742C /* AccountsPreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsPreferencesViewController.swift; sourceTree = ""; }; - 842AE5BE2241F396004A742C /* GeneralPrefencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPrefencesViewController.swift; sourceTree = ""; }; - 842AE5C22241F39C004A742C /* AdvancedPreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvancedPreferencesViewController.swift; sourceTree = ""; }; - 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppNotifications.swift; path = NetNewsWire/AppNotifications.swift; sourceTree = ""; }; - 842E45DC1ED8C54B000A8B52 /* Browser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Browser.swift; path = NetNewsWire/Browser.swift; sourceTree = ""; }; - 842E5ED12206B1010012DBE1 /* DatabaseWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseWindowController.swift; sourceTree = ""; }; - 842E5ED42206B1190012DBE1 /* DatabaseWindow.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = DatabaseWindow.storyboard; sourceTree = ""; }; - 843A3B5520311E7700BF76EC /* FeedListOutlineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListOutlineView.swift; sourceTree = ""; }; + 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppNotifications.swift; sourceTree = ""; }; + 842E45DC1ED8C54B000A8B52 /* Browser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Browser.swift; sourceTree = ""; }; 84411E701FE5FBFA004B527F /* SmallIconProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmallIconProvider.swift; sourceTree = ""; }; 8444C8F11FED81840051386C /* OPMLExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OPMLExporter.swift; sourceTree = ""; }; 844B5B581FE9FE4F00C7C76A /* SidebarKeyboardDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarKeyboardDelegate.swift; sourceTree = ""; }; @@ -512,7 +497,6 @@ 844B5B641FEA11F200C7C76A /* GlobalKeyboardShortcuts.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = GlobalKeyboardShortcuts.plist; sourceTree = ""; }; 844B5B661FEA18E300C7C76A /* MainWIndowKeyboardHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainWIndowKeyboardHandler.swift; sourceTree = ""; }; 844B5B681FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = SidebarKeyboardShortcuts.plist; sourceTree = ""; }; - 84513F8F1FAA63950023A1A9 /* FeedListControlsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListControlsView.swift; sourceTree = ""; }; 845213221FCA5B10003B6E93 /* ImageDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageDownloader.swift; sourceTree = ""; }; 845479871FEB77C000AD8B59 /* TimelineKeyboardShortcuts.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = TimelineKeyboardShortcuts.plist; sourceTree = ""; }; 845A29081FC74B8E007B49E3 /* SingleFaviconDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleFaviconDownloader.swift; sourceTree = ""; }; @@ -527,6 +511,13 @@ 847752FE2008879500D93690 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; 8477ACBD22238E9500DF7F37 /* SearchFeedDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchFeedDelegate.swift; sourceTree = ""; }; 847E64942262782F00E00365 /* NSAppleEventDescriptor+UserRecordFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSAppleEventDescriptor+UserRecordFields.swift"; sourceTree = ""; }; + 848362FC2262A30800DA1D35 /* styleSheet.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = styleSheet.css; sourceTree = ""; }; + 848362FE2262A30E00DA1D35 /* template.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = template.html; sourceTree = ""; }; + 848363012262A3BC00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddFeedSheet.xib; sourceTree = SOURCE_ROOT; }; + 848363042262A3CC00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddFolderSheet.xib; sourceTree = SOURCE_ROOT; }; + 848363072262A3DD00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 8483630A2262A3F000DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/RenameSheet.xib; sourceTree = SOURCE_ROOT; }; + 8483630D2262A3FE00DA1D35 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Mac/Base.lproj/MainWindow.storyboard; sourceTree = SOURCE_ROOT; }; 848B937121C8C5540038DC0D /* CrashReporter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrashReporter.swift; sourceTree = ""; }; 848D578D21543519005FFAD5 /* PasteboardFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasteboardFeed.swift; sourceTree = ""; }; 848F6AE41FC29CFA002D422E /* FaviconDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaviconDownloader.swift; sourceTree = ""; }; @@ -552,71 +543,66 @@ 849A977D1ED9EC42007D329B /* ArticleRenderer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleRenderer.swift; sourceTree = ""; }; 849A977E1ED9EC42007D329B /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; 849A97821ED9EC63007D329B /* SidebarStatusBarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SidebarStatusBarView.swift; sourceTree = ""; }; - 849A97841ED9ECCD007D329B /* PreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PreferencesWindowController.swift; path = NetNewsWire/Preferences/PreferencesWindowController.swift; sourceTree = ""; }; 849A97871ED9ECEF007D329B /* ArticleStyle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleStyle.swift; sourceTree = ""; }; 849A97881ED9ECEF007D329B /* ArticleStylesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleStylesManager.swift; sourceTree = ""; }; - 849A978C1ED9EE4D007D329B /* FeedListWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedListWindowController.swift; sourceTree = ""; }; 849A97971ED9EFAA007D329B /* Node-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Node-Extensions.swift"; sourceTree = ""; }; - 849A979A1ED9EFEB007D329B /* styleSheet.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; name = styleSheet.css; path = NetNewsWire/MainWindow/Detail/styleSheet.css; sourceTree = SOURCE_ROOT; }; - 849A979B1ED9EFEB007D329B /* template.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = template.html; path = NetNewsWire/MainWindow/Detail/template.html; sourceTree = SOURCE_ROOT; }; 849A979E1ED9F130007D329B /* SidebarCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SidebarCell.swift; sourceTree = ""; }; 849A97A01ED9F180007D329B /* InitialFeedDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = InitialFeedDownloader.swift; path = AddFeed/InitialFeedDownloader.swift; sourceTree = ""; }; 849A97A11ED9F180007D329B /* FolderTreeControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FolderTreeControllerDelegate.swift; path = AddFeed/FolderTreeControllerDelegate.swift; sourceTree = ""; }; - 849A97A51ED9F94D007D329B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = NetNewsWire/Base.lproj/Preferences.storyboard; sourceTree = ""; }; - 849A97A81ED9F9AA007D329B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = NetNewsWire/Base.lproj/AddFeedSheet.xib; sourceTree = SOURCE_ROOT; }; - 849A97AB1ED9F9BC007D329B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = NetNewsWire/Base.lproj/AddFolderSheet.xib; sourceTree = SOURCE_ROOT; }; - 849A97B11ED9FA69007D329B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = NetNewsWire/Base.lproj/MainWindow.storyboard; sourceTree = SOURCE_ROOT; }; 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NetNewsWire.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 849C64631ED37A5D003D8FC0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = NetNewsWire/AppDelegate.swift; sourceTree = ""; }; - 849C64671ED37A5D003D8FC0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = NetNewsWire/Assets.xcassets; sourceTree = ""; }; - 849C646A1ED37A5D003D8FC0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 849C646C1ED37A5D003D8FC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../Info.plist; sourceTree = ""; }; + 849C64671ED37A5D003D8FC0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 849C64711ED37A5D003D8FC0 /* NetNewsWireTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NetNewsWireTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 849EE70E203919360082A1EA /* AppImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppImages.swift; path = NetNewsWire/AppImages.swift; sourceTree = ""; }; + 849EE70E203919360082A1EA /* AppImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppImages.swift; sourceTree = ""; }; 849EE72020391F560082A1EA /* SharingServicePickerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingServicePickerDelegate.swift; sourceTree = ""; }; 84A14FF220048CA70046AD9A /* SendToMicroBlogCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendToMicroBlogCommand.swift; sourceTree = ""; }; 84A1500420048DDF0046AD9A /* SendToMarsEditCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendToMarsEditCommand.swift; sourceTree = ""; }; 84A37CB4201ECD610087C5AF /* RenameWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RenameWindowController.swift; sourceTree = ""; }; - 84A37CBA201ECE590087C5AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = NetNewsWire/Base.lproj/RenameSheet.xib; sourceTree = SOURCE_ROOT; }; 84A3EE52223B667F00557320 /* DefaultFeeds.opml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DefaultFeeds.opml; sourceTree = ""; }; - 84A6B6931FB8D43C006754AC /* DinosaursWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DinosaursWindow.xib; sourceTree = ""; }; - 84A6B6951FB8DBD2006754AC /* DinosaursWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DinosaursWindowController.swift; sourceTree = ""; }; 84AD1EA92031617300BC20B7 /* FolderPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FolderPasteboardWriter.swift; sourceTree = ""; }; 84AD1EB92031649C00BC20B7 /* SmartFeedPasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedPasteboardWriter.swift; sourceTree = ""; }; 84AD1EBB2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarOutlineDataSource.swift; sourceTree = ""; }; 84B7178B201E66580091657D /* SidebarViewController+ContextualMenus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "SidebarViewController+ContextualMenus.swift"; sourceTree = ""; }; - 84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListTreeControllerDelegate.swift; sourceTree = ""; }; - 84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFolder.swift; sourceTree = ""; }; - 84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListFeed.swift; sourceTree = ""; }; 84B99C9C1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteFromSidebarCommand.swift; sourceTree = ""; }; 84BAE64821CEDAF20046DB56 /* CrashReporterWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CrashReporterWindow.xib; sourceTree = ""; }; 84BBB12B20142A4700F054F5 /* Inspector.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Inspector.storyboard; sourceTree = ""; }; 84BBB12C20142A4700F054F5 /* InspectorWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InspectorWindowController.swift; sourceTree = ""; }; - 84C12A141FF5B0080009A267 /* FeedList.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = FeedList.storyboard; sourceTree = ""; }; 84C37F7A20DD8CF200CA8CF5 /* RSCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSCore.xcodeproj; path = submodules/RSCore/RSCore.xcodeproj; sourceTree = ""; }; 84C37F8620DD8CF800CA8CF5 /* RSParser.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSParser.xcodeproj; path = submodules/RSParser/RSParser.xcodeproj; sourceTree = ""; }; 84C37F8F20DD8CFD00CA8CF5 /* RSTree.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSTree.xcodeproj; path = submodules/RSTree/RSTree.xcodeproj; sourceTree = ""; }; 84C37F9820DD8D0400CA8CF5 /* RSWeb.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSWeb.xcodeproj; path = submodules/RSWeb/RSWeb.xcodeproj; sourceTree = ""; }; 84C37FB920DD8E0C00CA8CF5 /* RSDatabase.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSDatabase.xcodeproj; path = submodules/RSDatabase/RSDatabase.xcodeproj; sourceTree = ""; }; + 84C9FC6622629B3900D921D6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 84C9FC6B22629E1200D921D6 /* AdvancedPreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvancedPreferencesViewController.swift; sourceTree = ""; }; + 84C9FC6D22629E1200D921D6 /* GeneralPrefencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPrefencesViewController.swift; sourceTree = ""; }; + 84C9FC6E22629E1200D921D6 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; + 84C9FC7022629E1200D921D6 /* AccountsTableViewBackgroundView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsTableViewBackgroundView.swift; sourceTree = ""; }; + 84C9FC7122629E1200D921D6 /* AccountsControlsBackgroundView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsControlsBackgroundView.swift; sourceTree = ""; }; + 84C9FC7222629E1200D921D6 /* AccountsPreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsPreferencesViewController.swift; sourceTree = ""; }; + 84C9FC7422629E1200D921D6 /* LocalAccount.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocalAccount.xib; sourceTree = ""; }; + 84C9FC7522629E1200D921D6 /* LocalAccountPreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalAccountPreferencesViewController.swift; sourceTree = ""; }; + 84C9FC7622629E1200D921D6 /* AccountsTableCellView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsTableCellView.swift; sourceTree = ""; }; + 84C9FC8122629E4800D921D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Mac/Base.lproj/Preferences.storyboard; sourceTree = SOURCE_ROOT; }; + 84C9FC8722629E8F00D921D6 /* KeyboardShortcuts.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = KeyboardShortcuts.html; sourceTree = ""; }; + 84C9FC8822629E8F00D921D6 /* EvergreenLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EvergreenLarge.png; sourceTree = ""; }; + 84C9FC8922629E8F00D921D6 /* Credits.rtf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.rtf; path = Credits.rtf; sourceTree = ""; }; + 84C9FC8A22629E8F00D921D6 /* NetNewsWire.sdef */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = NetNewsWire.sdef; sourceTree = ""; }; + 84C9FC9022629ECB00D921D6 /* NetNewsWire.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NetNewsWire.entitlements; sourceTree = ""; }; + 84C9FC9122629F2200D921D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84C9FC9B2262A1A900D921D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 84C9FC9C2262A1A900D921D6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 84C9FCA02262A1B300D921D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 84C9FCA32262A1B800D921D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 84CBDDAE1FD3674C005A61AA /* Technotes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Technotes; sourceTree = ""; }; - 84CC08051FF5D2E000C0C0ED /* FeedListSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListSplitViewController.swift; sourceTree = ""; }; 84CC88171FE59CBF00644329 /* SmartFeedsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmartFeedsController.swift; sourceTree = ""; }; 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailStatusBarView.swift; sourceTree = ""; }; 84DAEE2F1F86CAFE0058304B /* OPMLImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OPMLImporter.swift; sourceTree = ""; }; 84E185B2203B74E500F69BFA /* SingleLineTextFieldSizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleLineTextFieldSizer.swift; sourceTree = ""; }; 84E185C2203BB12600F69BFA /* MultilineTextFieldSizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultilineTextFieldSizer.swift; sourceTree = ""; }; - 84E46C7C1F75EF7B005ECFB3 /* AppDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDefaults.swift; path = NetNewsWire/AppDefaults.swift; sourceTree = ""; }; + 84E46C7C1F75EF7B005ECFB3 /* AppDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDefaults.swift; sourceTree = ""; }; 84E850851FCB60CE0072EA88 /* AuthorAvatarDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorAvatarDownloader.swift; sourceTree = ""; }; 84E8E0DA202EC49300562D8F /* TimelineViewController+ContextualMenus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TimelineViewController+ContextualMenus.swift"; sourceTree = ""; }; 84E8E0EA202F693600562D8F /* DetailWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailWebView.swift; sourceTree = ""; }; - 84E95CF61FABB3C800552D99 /* FeedList.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = FeedList.plist; sourceTree = ""; }; 84E95D231FB1087500552D99 /* ArticlePasteboardWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticlePasteboardWriter.swift; sourceTree = ""; }; - 84EB38101FBA8B9F000D2111 /* KeyboardShortcuts.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = KeyboardShortcuts.html; sourceTree = ""; }; - 84F1F0552242038B00DA0616 /* AccountsTableViewBackgroundView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsTableViewBackgroundView.swift; sourceTree = ""; }; - 84F1F0682243455C00DA0616 /* LocalAccount.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LocalAccount.xib; sourceTree = ""; }; - 84F1F06B2243457C00DA0616 /* LocalAccountPreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAccountPreferencesViewController.swift; sourceTree = ""; }; - 84F1F06F2246C1D800DA0616 /* AccountsTableCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsTableCellView.swift; sourceTree = ""; }; - 84F204CD1FAACB660076E152 /* FeedListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedListViewController.swift; sourceTree = ""; }; 84F204DF1FAACBB30076E152 /* ArticleArray.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleArray.swift; sourceTree = ""; }; 84F2D5351FC22FCB00998D64 /* PseudoFeed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PseudoFeed.swift; sourceTree = ""; }; 84F2D5361FC22FCB00998D64 /* TodayFeedDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodayFeedDelegate.swift; sourceTree = ""; }; @@ -656,7 +642,6 @@ D5907D962004B7EB005947E5 /* Account+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Account+Scriptability.swift"; sourceTree = ""; }; D5907DB12004BB37005947E5 /* ScriptingObjectContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptingObjectContainer.swift; sourceTree = ""; }; D5A2678B20130ECF00A8D3C0 /* Author+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Author+Scriptability.swift"; sourceTree = ""; }; - D5D175012002039D0047B29D /* NetNewsWire.sdef */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = NetNewsWire.sdef; path = ../Resources/NetNewsWire.sdef; sourceTree = ""; }; D5E4CC53202C1361009B4FFC /* AppDelegate+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+Scriptability.swift"; sourceTree = ""; }; D5E4CC63202C1AC1009B4FFC /* MainWindowController+Scriptability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MainWindowController+Scriptability.swift"; sourceTree = ""; }; D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScriptingObject.swift; sourceTree = ""; }; @@ -721,7 +706,7 @@ path = Keyboard; sourceTree = ""; }; - 6581C73620CED60100F4AD34 /* Safari Extension */ = { + 6581C73620CED60100F4AD34 /* SafariExtension */ = { isa = PBXGroup; children = ( 6581C73720CED60100F4AD34 /* SafariExtensionHandler.swift */, @@ -732,21 +717,7 @@ 6581C74120CED60100F4AD34 /* ToolbarItemIcon.pdf */, 6581C74320CED60100F4AD34 /* Subscribe_to_Feed.entitlements */, ); - path = "Safari Extension"; - sourceTree = ""; - }; - 840D617D2029031C009BC708 /* NetNewsWire-iOS */ = { - isa = PBXGroup; - children = ( - 840D617E2029031C009BC708 /* AppDelegate.swift */, - 840D61802029031C009BC708 /* MasterViewController.swift */, - 840D61822029031C009BC708 /* DetailViewController.swift */, - 840D61842029031C009BC708 /* Main.storyboard */, - 840D61872029031D009BC708 /* Assets.xcassets */, - 840D61892029031D009BC708 /* LaunchScreen.storyboard */, - 840D618C2029031D009BC708 /* Info.plist */, - ); - path = "NetNewsWire-iOS"; + path = SafariExtension; sourceTree = ""; }; 840D61942029031D009BC708 /* NetNewsWire-iOSTests */ = { @@ -781,57 +752,13 @@ children = ( 8426119D1FCB6ED40086A189 /* HTMLMetadataDownloader.swift */, ); - name = HTMLMetadata; - path = NetNewsWire/HTMLMetadata; - sourceTree = ""; - }; - 842AE5B62241F37B004A742C /* Accounts */ = { - isa = PBXGroup; - children = ( - 842AE5B82241F37B004A742C /* AccountsPreferencesViewController.swift */, - 84F1F06F2246C1D800DA0616 /* AccountsTableCellView.swift */, - 842AE5B72241F37B004A742C /* AccountsControlsBackgroundView.swift */, - 84F1F0552242038B00DA0616 /* AccountsTableViewBackgroundView.swift */, - 84F1F0672243455C00DA0616 /* Local */, - ); - name = Accounts; - path = NetNewsWire/Preferences/Accounts; - sourceTree = ""; - }; - 842AE5BD2241F396004A742C /* General */ = { - isa = PBXGroup; - children = ( - 842AE5BE2241F396004A742C /* GeneralPrefencesViewController.swift */, - ); - name = General; - path = NetNewsWire/Preferences/General; - sourceTree = ""; - }; - 842AE5C12241F39C004A742C /* Advanced */ = { - isa = PBXGroup; - children = ( - 842AE5C22241F39C004A742C /* AdvancedPreferencesViewController.swift */, - ); - name = Advanced; - path = NetNewsWire/Preferences/Advanced; - sourceTree = ""; - }; - 842E45E01ED8C587000A8B52 /* Preferences */ = { - isa = PBXGroup; - children = ( - 849A97A41ED9F94D007D329B /* Preferences.storyboard */, - 849A97841ED9ECCD007D329B /* PreferencesWindowController.swift */, - 842AE5BD2241F396004A742C /* General */, - 842AE5B62241F37B004A742C /* Accounts */, - 842AE5C12241F39C004A742C /* Advanced */, - ); - name = Preferences; + path = HTMLMetadata; sourceTree = ""; }; 842E45E11ED8C681000A8B52 /* MainWindow */ = { isa = PBXGroup; children = ( - 849A97B01ED9FA69007D329B /* MainWindow.storyboard */, + 8483630C2262A3FE00DA1D35 /* MainWindow.storyboard */, 849A975D1ED9EB72007D329B /* MainWindowController.swift */, 519B8D322143397200FA689C /* SharingServiceDelegate.swift */, 849EE72020391F560082A1EA /* SharingServicePickerDelegate.swift */, @@ -842,18 +769,7 @@ 849A97551ED9EAC3007D329B /* Add Feed */, 849A97411ED9EAA9007D329B /* Add Folder */, ); - name = MainWindow; - path = NetNewsWire/MainWindow; - sourceTree = ""; - }; - 842E5EC42206B0D60012DBE1 /* DatabaseWindow */ = { - isa = PBXGroup; - children = ( - 842E5ED42206B1190012DBE1 /* DatabaseWindow.storyboard */, - 842E5ED12206B1010012DBE1 /* DatabaseWindowController.swift */, - ); - name = DatabaseWindow; - path = NetNewsWire/DatabaseWindow; + path = MainWindow; sourceTree = ""; }; 8444C9011FED81880051386C /* Exporters */ = { @@ -900,8 +816,7 @@ 8426119F1FCB72600086A189 /* FeaturedImageDownloader.swift */, 842611A11FCB769D0086A189 /* RSHTMLMetadata+Extension.swift */, ); - name = Images; - path = NetNewsWire/Images; + path = Images; sourceTree = ""; }; 845A29251FC928C7007B49E3 /* Cell */ = { @@ -942,8 +857,7 @@ 848B937121C8C5540038DC0D /* CrashReporter.swift */, 840BEE4021D70E64009BBAFA /* CrashReportWindowController.swift */, ); - name = CrashReporter; - path = NetNewsWire/CrashReporter; + path = CrashReporter; sourceTree = ""; }; 848F6AE31FC29CFA002D422E /* Favicons */ = { @@ -953,14 +867,13 @@ 845A29081FC74B8E007B49E3 /* SingleFaviconDownloader.swift */, 84FF69B01FC3793300DC198E /* FaviconURLFinder.swift */, ); - name = Favicons; - path = NetNewsWire/Favicons; + path = Favicons; sourceTree = ""; }; 849A97411ED9EAA9007D329B /* Add Folder */ = { isa = PBXGroup; children = ( - 849A97AA1ED9F9BC007D329B /* AddFolderSheet.xib */, + 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */, 849A97421ED9EAA9007D329B /* AddFolderWindowController.swift */, ); name = "Add Folder"; @@ -970,9 +883,7 @@ 849A97551ED9EAC3007D329B /* Add Feed */ = { isa = PBXGroup; children = ( - 51EC1193214A94AC00B296E3 /* AddFeedFromListSheet.xib */, - 51EC11A2214A990000B296E3 /* AddFeedFromListWindowController.swift */, - 849A97A71ED9F9AA007D329B /* AddFeedSheet.xib */, + 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */, 849A97511ED9EAC0007D329B /* AddFeedController.swift */, 849A97521ED9EAC0007D329B /* AddFeedWindowController.swift */, 849A97A01ED9F180007D329B /* InitialFeedDownloader.swift */, @@ -988,8 +899,7 @@ 849A97581ED9EB0D007D329B /* ArticleUtilities.swift */, 84411E701FE5FBFA004B527F /* SmallIconProvider.swift */, ); - name = Data; - path = NetNewsWire/Data; + path = Data; sourceTree = ""; }; 849A975F1ED9EB95007D329B /* Sidebar */ = { @@ -1053,8 +963,8 @@ 84E8E0EA202F693600562D8F /* DetailWebView.swift */, 849A977D1ED9EC42007D329B /* ArticleRenderer.swift */, 84D52E941FE588BB00D14F5B /* DetailStatusBarView.swift */, - 849A979A1ED9EFEB007D329B /* styleSheet.css */, - 849A979B1ED9EFEB007D329B /* template.html */, + 848362FC2262A30800DA1D35 /* styleSheet.css */, + 848362FE2262A30E00DA1D35 /* template.html */, 5127B235222B4849006D641D /* Keyboard */, ); path = Detail; @@ -1067,26 +977,9 @@ 849A97881ED9ECEF007D329B /* ArticleStylesManager.swift */, ); name = "Article Styles"; - path = NetNewsWire/ArticleStyles; + path = Shared/ArticleStyles; sourceTree = SOURCE_ROOT; }; - 849A978B1ED9EE4D007D329B /* Feed List */ = { - isa = PBXGroup; - children = ( - 84C12A141FF5B0080009A267 /* FeedList.storyboard */, - 849A978C1ED9EE4D007D329B /* FeedListWindowController.swift */, - 84F204CD1FAACB660076E152 /* FeedListViewController.swift */, - 843A3B5520311E7700BF76EC /* FeedListOutlineView.swift */, - 84B99C661FAE35E600ECDEDB /* FeedListTreeControllerDelegate.swift */, - 84B99C681FAE36B800ECDEDB /* FeedListFolder.swift */, - 84B99C6A1FAE370B00ECDEDB /* FeedListFeed.swift */, - 84E95CF61FABB3C800552D99 /* FeedList.plist */, - 84DC413A20310AEE00198AD4 /* UnusedIn1.0 */, - ); - name = "Feed List"; - path = NetNewsWire/FeedList; - sourceTree = ""; - }; 849A97961ED9EFAA007D329B /* Extensions */ = { isa = PBXGroup; children = ( @@ -1094,61 +987,18 @@ 8405DD9B22153BD7008CE1BF /* NSView-Extensions.swift */, 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */, ); - name = Extensions; - path = NetNewsWire/Extensions; - sourceTree = ""; - }; - 849A97991ED9EFB6007D329B /* Resources */ = { - isa = PBXGroup; - children = ( - 840F7C0721B4671B0057E851 /* Credits.rtf */, - 840F7CC021BDAD2C0057E851 /* Credits.rtf */, - D5D175012002039D0047B29D /* NetNewsWire.sdef */, - 849C646C1ED37A5D003D8FC0 /* Info.plist */, - 84EB380F1FBA8B9F000D2111 /* KeyboardShortcuts */, - ); - name = Resources; - path = NetNewsWire/Extensions; + path = Extensions; sourceTree = ""; }; 849C64571ED37A5D003D8FC0 = { isa = PBXGroup; children = ( - 840F7C0921BCA1B10057E851 /* NetNewsWire.entitlements */, 845B14A51FC2299E0013CF92 /* README.md */, 84CBDDAE1FD3674C005A61AA /* Technotes */, - 849C64671ED37A5D003D8FC0 /* Assets.xcassets */, - 849C64691ED37A5D003D8FC0 /* Main.storyboard */, - 849C64631ED37A5D003D8FC0 /* AppDelegate.swift */, - 84E46C7C1F75EF7B005ECFB3 /* AppDefaults.swift */, - 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */, - 849EE70E203919360082A1EA /* AppImages.swift */, - 842E45DC1ED8C54B000A8B52 /* Browser.swift */, - 84702AB31FA27AE8006B8943 /* Commands */, - 842E45E11ED8C681000A8B52 /* MainWindow */, - 84BBB12A20142A4700F054F5 /* Inspector */, - 842E45E01ED8C587000A8B52 /* Preferences */, - 849A97861ED9ECEF007D329B /* Article Styles */, - 84A6B6921FB8D43C006754AC /* Dinosaurs */, - 849A978B1ED9EE4D007D329B /* Feed List */, - 84DAEE201F86CAE00058304B /* Importers */, - 8444C9011FED81880051386C /* Exporters */, - 84F2D5341FC22FCB00998D64 /* SmartFeeds */, - 849A97561ED9EB0D007D329B /* Data */, - 84F3EE0420DEC97E003FADEB /* FeedFinder */, - 8426119C1FCB6ED40086A189 /* HTMLMetadata */, - 848F6AE31FC29CFA002D422E /* Favicons */, - 845213211FCA5B10003B6E93 /* Images */, - 849A97961ED9EFAA007D329B /* Extensions */, - D5907D6F2004AB67005947E5 /* Scriptability */, - 848B937021C8C5540038DC0D /* CrashReporter */, - 842E5EC42206B0D60012DBE1 /* DatabaseWindow */, - 849A97991ED9EFB6007D329B /* Resources */, - 84F9EACF213660A100CF2DE4 /* NetNewsWireTests */, - 840D617D2029031C009BC708 /* NetNewsWire-iOS */, - 840D61942029031D009BC708 /* NetNewsWire-iOSTests */, - 6581C73620CED60100F4AD34 /* Safari Extension */, - 84FB9A2C1EDCD6A4003D53B9 /* Frameworks */, + 84C9FC6522629B3900D921D6 /* Mac */, + 84C9FC922262A0E600D921D6 /* iOS */, + 84C9FC6822629C9A00D921D6 /* Shared */, + 84C9FCA52262A1E600D921D6 /* Tests */, D5907CDA2002F084005947E5 /* xcconfig */, 849C64611ED37A5D003D8FC0 /* Products */, 846E77301F6EF5D600A165E2 /* Account.xcodeproj */, @@ -1178,22 +1028,12 @@ 84A37CB3201ECD610087C5AF /* Renaming */ = { isa = PBXGroup; children = ( - 84A37CB9201ECE590087C5AF /* RenameSheet.xib */, + 848363092262A3F000DA1D35 /* RenameSheet.xib */, 84A37CB4201ECD610087C5AF /* RenameWindowController.swift */, ); path = Renaming; sourceTree = ""; }; - 84A6B6921FB8D43C006754AC /* Dinosaurs */ = { - isa = PBXGroup; - children = ( - 84A6B6931FB8D43C006754AC /* DinosaursWindow.xib */, - 84A6B6951FB8DBD2006754AC /* DinosaursWindowController.swift */, - ); - name = Dinosaurs; - path = NetNewsWire/Dinosaurs; - sourceTree = ""; - }; 84BBB12A20142A4700F054F5 /* Inspector */ = { isa = PBXGroup; children = ( @@ -1204,8 +1044,7 @@ 841ABA5F20145EC100980E11 /* BuiltinSmartFeedInspectorViewController.swift */, 841ABA4D20145E7300980E11 /* NothingInspectorViewController.swift */, ); - name = Inspector; - path = NetNewsWire/Inspector; + path = Inspector; sourceTree = ""; }; 84C37F7B20DD8CF200CA8CF5 /* Products */ = { @@ -1256,6 +1095,147 @@ name = Products; sourceTree = ""; }; + 84C9FC6522629B3900D921D6 /* Mac */ = { + isa = PBXGroup; + children = ( + 848363062262A3DD00DA1D35 /* Main.storyboard */, + 84C9FC6622629B3900D921D6 /* AppDelegate.swift */, + 84E46C7C1F75EF7B005ECFB3 /* AppDefaults.swift */, + 842E45CD1ED8C308000A8B52 /* AppNotifications.swift */, + 849EE70E203919360082A1EA /* AppImages.swift */, + 842E45DC1ED8C54B000A8B52 /* Browser.swift */, + 842E45E11ED8C681000A8B52 /* MainWindow */, + 84BBB12A20142A4700F054F5 /* Inspector */, + 84C9FC6922629E1200D921D6 /* Preferences */, + 848B937021C8C5540038DC0D /* CrashReporter */, + D5907D6F2004AB67005947E5 /* Scriptability */, + 6581C73620CED60100F4AD34 /* SafariExtension */, + 84C9FC8322629E8F00D921D6 /* Resources */, + 84FB9A2C1EDCD6A4003D53B9 /* Frameworks */, + ); + path = Mac; + sourceTree = ""; + }; + 84C9FC6822629C9A00D921D6 /* Shared */ = { + isa = PBXGroup; + children = ( + 84702AB31FA27AE8006B8943 /* Commands */, + 849A97861ED9ECEF007D329B /* Article Styles */, + 84DAEE201F86CAE00058304B /* Importers */, + 8444C9011FED81880051386C /* Exporters */, + 84F2D5341FC22FCB00998D64 /* SmartFeeds */, + 848F6AE31FC29CFA002D422E /* Favicons */, + 845213211FCA5B10003B6E93 /* Images */, + 8426119C1FCB6ED40086A189 /* HTMLMetadata */, + 84F3EE0420DEC97E003FADEB /* FeedFinder */, + 849A97561ED9EB0D007D329B /* Data */, + 849A97961ED9EFAA007D329B /* Extensions */, + ); + path = Shared; + sourceTree = ""; + }; + 84C9FC6922629E1200D921D6 /* Preferences */ = { + isa = PBXGroup; + children = ( + 84C9FC8022629E4800D921D6 /* Preferences.storyboard */, + 84C9FC6E22629E1200D921D6 /* PreferencesWindowController.swift */, + 84C9FC6A22629E1200D921D6 /* Advanced */, + 84C9FC6C22629E1200D921D6 /* General */, + 84C9FC6F22629E1200D921D6 /* Accounts */, + ); + path = Preferences; + sourceTree = ""; + }; + 84C9FC6A22629E1200D921D6 /* Advanced */ = { + isa = PBXGroup; + children = ( + 84C9FC6B22629E1200D921D6 /* AdvancedPreferencesViewController.swift */, + ); + path = Advanced; + sourceTree = ""; + }; + 84C9FC6C22629E1200D921D6 /* General */ = { + isa = PBXGroup; + children = ( + 84C9FC6D22629E1200D921D6 /* GeneralPrefencesViewController.swift */, + ); + path = General; + sourceTree = ""; + }; + 84C9FC6F22629E1200D921D6 /* Accounts */ = { + isa = PBXGroup; + children = ( + 84C9FC7022629E1200D921D6 /* AccountsTableViewBackgroundView.swift */, + 84C9FC7122629E1200D921D6 /* AccountsControlsBackgroundView.swift */, + 84C9FC7222629E1200D921D6 /* AccountsPreferencesViewController.swift */, + 84C9FC7322629E1200D921D6 /* Local */, + 84C9FC7622629E1200D921D6 /* AccountsTableCellView.swift */, + ); + path = Accounts; + sourceTree = ""; + }; + 84C9FC7322629E1200D921D6 /* Local */ = { + isa = PBXGroup; + children = ( + 84C9FC7422629E1200D921D6 /* LocalAccount.xib */, + 84C9FC7522629E1200D921D6 /* LocalAccountPreferencesViewController.swift */, + ); + path = Local; + sourceTree = ""; + }; + 84C9FC8322629E8F00D921D6 /* Resources */ = { + isa = PBXGroup; + children = ( + 849C64671ED37A5D003D8FC0 /* Assets.xcassets */, + 84C9FC8822629E8F00D921D6 /* EvergreenLarge.png */, + 84C9FC8922629E8F00D921D6 /* Credits.rtf */, + 84C9FC8A22629E8F00D921D6 /* NetNewsWire.sdef */, + 84C9FC9022629ECB00D921D6 /* NetNewsWire.entitlements */, + 84C9FC9122629F2200D921D6 /* Info.plist */, + 84C9FC8622629E8F00D921D6 /* KeyboardShortcuts */, + ); + path = Resources; + sourceTree = ""; + }; + 84C9FC8622629E8F00D921D6 /* KeyboardShortcuts */ = { + isa = PBXGroup; + children = ( + 84C9FC8722629E8F00D921D6 /* KeyboardShortcuts.html */, + ); + path = KeyboardShortcuts; + sourceTree = ""; + }; + 84C9FC922262A0E600D921D6 /* iOS */ = { + isa = PBXGroup; + children = ( + 84C9FCA22262A1B800D921D6 /* LaunchScreen.storyboard */, + 84C9FC9F2262A1B300D921D6 /* Main.storyboard */, + 840D617E2029031C009BC708 /* AppDelegate.swift */, + 840D61802029031C009BC708 /* MasterViewController.swift */, + 840D61822029031C009BC708 /* DetailViewController.swift */, + 84C9FC9A2262A1A900D921D6 /* Resources */, + ); + path = iOS; + sourceTree = ""; + }; + 84C9FC9A2262A1A900D921D6 /* Resources */ = { + isa = PBXGroup; + children = ( + 84C9FC9B2262A1A900D921D6 /* Assets.xcassets */, + 84C9FC9C2262A1A900D921D6 /* Info.plist */, + ); + path = Resources; + sourceTree = ""; + }; + 84C9FCA52262A1E600D921D6 /* Tests */ = { + isa = PBXGroup; + children = ( + 84F9EACF213660A100CF2DE4 /* NetNewsWireTests */, + 840D61942029031D009BC708 /* NetNewsWire-iOSTests */, + ); + path = Tests; + sourceTree = ""; + }; 84DAEE201F86CAE00058304B /* Importers */ = { isa = PBXGroup; children = ( @@ -1266,34 +1246,6 @@ path = Importers; sourceTree = ""; }; - 84DC413A20310AEE00198AD4 /* UnusedIn1.0 */ = { - isa = PBXGroup; - children = ( - 84CC08051FF5D2E000C0C0ED /* FeedListSplitViewController.swift */, - 8403E75A201C4A79007F7246 /* FeedListKeyboardDelegate.swift */, - 84513F8F1FAA63950023A1A9 /* FeedListControlsView.swift */, - ); - path = UnusedIn1.0; - sourceTree = ""; - }; - 84EB380F1FBA8B9F000D2111 /* KeyboardShortcuts */ = { - isa = PBXGroup; - children = ( - 84EB38101FBA8B9F000D2111 /* KeyboardShortcuts.html */, - ); - name = KeyboardShortcuts; - path = NetNewsWire/Resources/KeyboardShortcuts; - sourceTree = SOURCE_ROOT; - }; - 84F1F0672243455C00DA0616 /* Local */ = { - isa = PBXGroup; - children = ( - 84F1F0682243455C00DA0616 /* LocalAccount.xib */, - 84F1F06B2243457C00DA0616 /* LocalAccountPreferencesViewController.swift */, - ); - path = Local; - sourceTree = ""; - }; 84F2D5341FC22FCB00998D64 /* SmartFeeds */ = { isa = PBXGroup; children = ( @@ -1306,8 +1258,7 @@ 8477ACBD22238E9500DF7F37 /* SearchFeedDelegate.swift */, 84AD1EB92031649C00BC20B7 /* SmartFeedPasteboardWriter.swift */, ); - name = SmartFeeds; - path = NetNewsWire/SmartFeeds; + path = SmartFeeds; sourceTree = ""; }; 84F3EE0420DEC97E003FADEB /* FeedFinder */ = { @@ -1317,8 +1268,7 @@ 84F3EE0720DEC97E003FADEB /* FeedSpecifier.swift */, 84F3EE0820DEC97E003FADEB /* HTMLFeedFinder.swift */, ); - name = FeedFinder; - path = NetNewsWire/FeedFinder; + path = FeedFinder; sourceTree = ""; }; 84F9EACF213660A100CF2DE4 /* NetNewsWireTests */ = { @@ -1372,7 +1322,7 @@ 6581C73420CED60100F4AD34 /* Cocoa.framework */, ); name = Frameworks; - path = NetNewsWire/Extensions; + path = ../NetNewsWire/Extensions; sourceTree = ""; }; D5907CDA2002F084005947E5 /* xcconfig */ = { @@ -1402,8 +1352,7 @@ D5F4EDB4200744A700B9E363 /* ScriptingObject.swift */, D57BE6DF204CD35F00D11AAC /* NSScriptCommand+NetNewsWire.swift */, ); - name = Scriptability; - path = NetNewsWire/Scriptability; + path = Scriptability; sourceTree = ""; }; /* End PBXGroup section */ @@ -1760,10 +1709,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 840D618B2029031D009BC708 /* LaunchScreen.storyboard in Resources */, - 840D61882029031D009BC708 /* Assets.xcassets in Resources */, - 840D61862029031C009BC708 /* Main.storyboard in Resources */, + 84C9FCA12262A1B300D921D6 /* Main.storyboard in Resources */, + 84C9FCA42262A1B800D921D6 /* LaunchScreen.storyboard in Resources */, + 84C9FC9E2262A1A900D921D6 /* Info.plist in Resources */, 84A3EE61223B667F00557320 /* DefaultFeeds.opml in Resources */, + 84C9FC9D2262A1A900D921D6 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1778,27 +1728,28 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 84EB381F1FBA8B9F000D2111 /* KeyboardShortcuts.html in Resources */, 844B5B651FEA11F200C7C76A /* GlobalKeyboardShortcuts.plist in Resources */, + 84C9FC8D22629E8F00D921D6 /* EvergreenLarge.png in Resources */, 5127B23A222B4849006D641D /* DetailKeyboardShortcuts.plist in Resources */, 845479881FEB77C000AD8B59 /* TimelineKeyboardShortcuts.plist in Resources */, - 849A979D1ED9EFEB007D329B /* template.html in Resources */, - 849A97A91ED9F9AA007D329B /* AddFeedSheet.xib in Resources */, - 84F1F0692243455C00DA0616 /* LocalAccount.xib in Resources */, + 848362FF2262A30E00DA1D35 /* template.html in Resources */, + 848363082262A3DD00DA1D35 /* Main.storyboard in Resources */, + 84C9FC8F22629E8F00D921D6 /* NetNewsWire.sdef in Resources */, + 84C9FC7D22629E1200D921D6 /* LocalAccount.xib in Resources */, + 84C9FC8C22629E8F00D921D6 /* KeyboardShortcuts.html in Resources */, 844B5B691FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist in Resources */, 84A3EE5F223B667F00557320 /* DefaultFeeds.opml in Resources */, - 849A97AC1ED9F9BC007D329B /* AddFolderSheet.xib in Resources */, + 84C9FC8222629E4800D921D6 /* Preferences.storyboard in Resources */, 849C64681ED37A5D003D8FC0 /* Assets.xcassets in Resources */, - 849C646B1ED37A5D003D8FC0 /* Main.storyboard in Resources */, - 849A97B21ED9FA69007D329B /* MainWindow.storyboard in Resources */, - 840F7C0821B4671B0057E851 /* Credits.rtf in Resources */, - 849A979C1ED9EFEB007D329B /* styleSheet.css in Resources */, + 848362FD2262A30800DA1D35 /* styleSheet.css in Resources */, + 8483630B2262A3F000DA1D35 /* RenameSheet.xib in Resources */, + 848363052262A3CC00DA1D35 /* AddFolderSheet.xib in Resources */, 8405DDA222168920008CE1BF /* TimelineTableView.xib in Resources */, - 849A97A61ED9F94D007D329B /* Preferences.storyboard in Resources */, + 8483630E2262A3FE00DA1D35 /* MainWindow.storyboard in Resources */, 84BAE64921CEDAF20046DB56 /* CrashReporterWindow.xib in Resources */, - 84A37CBB201ECE590087C5AF /* RenameSheet.xib in Resources */, + 84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */, 84BBB12D20142A4700F054F5 /* Inspector.storyboard in Resources */, - D5D1751220020B980047B29D /* NetNewsWire.sdef in Resources */, + 848363022262A3BD00DA1D35 /* AddFeedSheet.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1881,9 +1832,7 @@ buildActionMask = 2147483647; files = ( 84F204E01FAACBB30076E152 /* ArticleArray.swift in Sources */, - 849C64641ED37A5D003D8FC0 /* AppDelegate.swift in Sources */, 848B937221C8C5540038DC0D /* CrashReporter.swift in Sources */, - 842AE5BB2241F37B004A742C /* AccountsPreferencesViewController.swift in Sources */, 84BBB12E20142A4700F054F5 /* InspectorWindowController.swift in Sources */, 84E46C7D1F75EF7B005ECFB3 /* AppDefaults.swift in Sources */, D5907D972004B7EB005947E5 /* Account+Scriptability.swift in Sources */, @@ -1905,7 +1854,6 @@ D5A2678C20130ECF00A8D3C0 /* Author+Scriptability.swift in Sources */, 84F2D5371FC22FCC00998D64 /* PseudoFeed.swift in Sources */, D57BE6E0204CD35F00D11AAC /* NSScriptCommand+NetNewsWire.swift in Sources */, - 842AE5BF2241F396004A742C /* GeneralPrefencesViewController.swift in Sources */, D553738B20186C20006D8857 /* Article+Scriptability.swift in Sources */, 845EE7C11FC2488C00854A1F /* SmartFeed.swift in Sources */, 84702AA41FA27AC0006B8943 /* MarkStatusCommand.swift in Sources */, @@ -1916,6 +1864,7 @@ 849A97671ED9EB96007D329B /* UnreadCountView.swift in Sources */, 840BEE4121D70E64009BBAFA /* CrashReportWindowController.swift in Sources */, 8426118A1FCB67AA0086A189 /* FeedIconDownloader.swift in Sources */, + 84C9FC7B22629E1200D921D6 /* AccountsControlsBackgroundView.swift in Sources */, 84162A152038C12C00035290 /* MarkCommandValidationStatus.swift in Sources */, 84E95D241FB1087500552D99 /* ArticlePasteboardWriter.swift in Sources */, 849A975B1ED9EB0D007D329B /* ArticleUtilities.swift in Sources */, @@ -1930,21 +1879,22 @@ 84A1500520048DDF0046AD9A /* SendToMarsEditCommand.swift in Sources */, D5907DB22004BB37005947E5 /* ScriptingObjectContainer.swift in Sources */, 849A978A1ED9ECEF007D329B /* ArticleStylesManager.swift in Sources */, - 84F1F06C2243457C00DA0616 /* LocalAccountPreferencesViewController.swift in Sources */, 8405DD8A2213E0E3008CE1BF /* DetailContainerView.swift in Sources */, 519B8D332143397200FA689C /* SharingServiceDelegate.swift in Sources */, 84E8E0DB202EC49300562D8F /* TimelineViewController+ContextualMenus.swift in Sources */, 849A97791ED9EC04007D329B /* TimelineStringFormatter.swift in Sources */, 84E185C3203BB12600F69BFA /* MultilineTextFieldSizer.swift in Sources */, 8477ACBE22238E9500DF7F37 /* SearchFeedDelegate.swift in Sources */, + 84C9FC7E22629E1200D921D6 /* LocalAccountPreferencesViewController.swift in Sources */, 8472058120142E8900AD578B /* FeedInspectorViewController.swift in Sources */, 84AD1EAA2031617300BC20B7 /* FolderPasteboardWriter.swift in Sources */, 84AD1EBC2032AF5C00BC20B7 /* SidebarOutlineDataSource.swift in Sources */, 845A29241FC9255E007B49E3 /* SidebarCellAppearance.swift in Sources */, + 84C9FC7F22629E1200D921D6 /* AccountsTableCellView.swift in Sources */, 84F3EE1620DEC97E003FADEB /* FeedFinder.swift in Sources */, 845EE7B11FC2366500854A1F /* StarredFeedDelegate.swift in Sources */, - 842AE5B92241F37B004A742C /* AccountsControlsBackgroundView.swift in Sources */, 848F6AE51FC29CFB002D422E /* FaviconDownloader.swift in Sources */, + 84C9FC7722629E1200D921D6 /* AdvancedPreferencesViewController.swift in Sources */, 84F3EE1820DEC97E003FADEB /* FeedSpecifier.swift in Sources */, 849EE72120391F560082A1EA /* SharingServicePickerDelegate.swift in Sources */, 849A97981ED9EFAA007D329B /* Node-Extensions.swift in Sources */, @@ -1959,12 +1909,13 @@ 844B5B671FEA18E300C7C76A /* MainWIndowKeyboardHandler.swift in Sources */, 848D578E21543519005FFAD5 /* PasteboardFeed.swift in Sources */, 849A97801ED9EC42007D329B /* DetailViewController.swift in Sources */, + 84C9FC6722629B9000D921D6 /* AppDelegate.swift in Sources */, + 84C9FC7A22629E1200D921D6 /* AccountsTableViewBackgroundView.swift in Sources */, 8426119E1FCB6ED40086A189 /* HTMLMetadataDownloader.swift in Sources */, 849A976E1ED9EBC8007D329B /* TimelineViewController.swift in Sources */, 849A97771ED9EC04007D329B /* TimelineCellData.swift in Sources */, 841ABA6020145EC100980E11 /* BuiltinSmartFeedInspectorViewController.swift in Sources */, D5E4CC54202C1361009B4FFC /* AppDelegate+Scriptability.swift in Sources */, - 84F1F0562242038B00DA0616 /* AccountsTableViewBackgroundView.swift in Sources */, D5F4EDB5200744A700B9E363 /* ScriptingObject.swift in Sources */, 84F3EE1A20DEC97E003FADEB /* HTMLFeedFinder.swift in Sources */, D5F4EDB920074D7C00B9E363 /* Folder+Scriptability.swift in Sources */, @@ -1975,25 +1926,25 @@ 849A977B1ED9EC04007D329B /* UnreadIndicatorView.swift in Sources */, 84B99C9D1FAE83C600ECDEDB /* DeleteFromSidebarCommand.swift in Sources */, 849A97541ED9EAC0007D329B /* AddFeedWindowController.swift in Sources */, - 84F1F0702246C1D800DA0616 /* AccountsTableCellView.swift in Sources */, 849A976D1ED9EBC8007D329B /* TimelineTableView.swift in Sources */, 84D52E951FE588BB00D14F5B /* DetailStatusBarView.swift in Sources */, D5E4CC64202C1AC1009B4FFC /* MainWindowController+Scriptability.swift in Sources */, + 84C9FC7922629E1200D921D6 /* PreferencesWindowController.swift in Sources */, 84411E711FE5FBFA004B527F /* SmallIconProvider.swift in Sources */, 844B5B591FE9FE4F00C7C76A /* SidebarKeyboardDelegate.swift in Sources */, + 84C9FC7C22629E1200D921D6 /* AccountsPreferencesViewController.swift in Sources */, 51EC114C2149FE3300B296E3 /* FolderTreeMenu.swift in Sources */, 849A97A31ED9F180007D329B /* FolderTreeControllerDelegate.swift in Sources */, 51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */, 845A29091FC74B8E007B49E3 /* SingleFaviconDownloader.swift in Sources */, - 849A97851ED9ECCD007D329B /* PreferencesWindowController.swift in Sources */, D5F4EDB720074D6500B9E363 /* Feed+Scriptability.swift in Sources */, 84E850861FCB60CE0072EA88 /* AuthorAvatarDownloader.swift in Sources */, 84E185B3203B74E500F69BFA /* SingleLineTextFieldSizer.swift in Sources */, 849A977A1ED9EC04007D329B /* TimelineTableCellView.swift in Sources */, 849A97761ED9EC04007D329B /* TimelineCellAppearance.swift in Sources */, - 842AE5C32241F39C004A742C /* AdvancedPreferencesViewController.swift in Sources */, 849A97A21ED9F180007D329B /* InitialFeedDownloader.swift in Sources */, 849A977F1ED9EC42007D329B /* ArticleRenderer.swift in Sources */, + 84C9FC7822629E1200D921D6 /* GeneralPrefencesViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2079,14 +2030,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 51EC1193214A94AC00B296E3 /* AddFeedFromListSheet.xib */ = { - isa = PBXVariantGroup; - children = ( - 51EC1194214A94AC00B296E3 /* Base */, - ); - name = AddFeedFromListSheet.xib; - sourceTree = ""; - }; 6581C73B20CED60100F4AD34 /* SafariExtensionViewController.xib */ = { isa = PBXVariantGroup; children = ( @@ -2095,69 +2038,68 @@ name = SafariExtensionViewController.xib; sourceTree = ""; }; - 840D61842029031C009BC708 /* Main.storyboard */ = { + 848363002262A3BC00DA1D35 /* AddFeedSheet.xib */ = { isa = PBXVariantGroup; children = ( - 840D61852029031C009BC708 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 840D61892029031D009BC708 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 840D618A2029031D009BC708 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - 849A97A41ED9F94D007D329B /* Preferences.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 849A97A51ED9F94D007D329B /* Base */, - ); - name = Preferences.storyboard; - sourceTree = ""; - }; - 849A97A71ED9F9AA007D329B /* AddFeedSheet.xib */ = { - isa = PBXVariantGroup; - children = ( - 849A97A81ED9F9AA007D329B /* Base */, + 848363012262A3BC00DA1D35 /* Base */, ); name = AddFeedSheet.xib; sourceTree = ""; }; - 849A97AA1ED9F9BC007D329B /* AddFolderSheet.xib */ = { + 848363032262A3CC00DA1D35 /* AddFolderSheet.xib */ = { isa = PBXVariantGroup; children = ( - 849A97AB1ED9F9BC007D329B /* Base */, + 848363042262A3CC00DA1D35 /* Base */, ); name = AddFolderSheet.xib; sourceTree = ""; }; - 849A97B01ED9FA69007D329B /* MainWindow.storyboard */ = { + 848363062262A3DD00DA1D35 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - 849A97B11ED9FA69007D329B /* Base */, + 848363072262A3DD00DA1D35 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 848363092262A3F000DA1D35 /* RenameSheet.xib */ = { + isa = PBXVariantGroup; + children = ( + 8483630A2262A3F000DA1D35 /* Base */, + ); + name = RenameSheet.xib; + sourceTree = ""; + }; + 8483630C2262A3FE00DA1D35 /* MainWindow.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8483630D2262A3FE00DA1D35 /* Base */, ); name = MainWindow.storyboard; sourceTree = ""; }; - 849C64691ED37A5D003D8FC0 /* Main.storyboard */ = { + 84C9FC8022629E4800D921D6 /* Preferences.storyboard */ = { isa = PBXVariantGroup; children = ( - 849C646A1ED37A5D003D8FC0 /* Base */, + 84C9FC8122629E4800D921D6 /* Base */, ); - name = Main.storyboard; - path = NetNewsWire; + name = Preferences.storyboard; sourceTree = ""; }; - 84A37CB9201ECE590087C5AF /* RenameSheet.xib */ = { + 84C9FC9F2262A1B300D921D6 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - 84A37CBA201ECE590087C5AF /* Base */, + 84C9FCA02262A1B300D921D6 /* Base */, ); - name = RenameSheet.xib; + name = Main.storyboard; + sourceTree = ""; + }; + 84C9FCA22262A1B800D921D6 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 84C9FCA32262A1B800D921D6 /* Base */, + ); + name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -2168,9 +2110,9 @@ baseConfigurationReference = D5907CE02002F0FA005947E5 /* NetNewsWire_target.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_ENTITLEMENTS = "Safari Extension/Subscribe_to_Feed.entitlements"; + CODE_SIGN_ENTITLEMENTS = Mac/SafariExtension/Subscribe_to_Feed.entitlements; CODE_SIGN_IDENTITY = "-"; - INFOPLIST_FILE = "Safari Extension/Info.plist"; + INFOPLIST_FILE = Mac/SafariExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ranchero.NetNewsWire-Evergreen.Subscribe-to-Feed"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2183,9 +2125,9 @@ baseConfigurationReference = D5907CE02002F0FA005947E5 /* NetNewsWire_target.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_ENTITLEMENTS = "Safari Extension/Subscribe_to_Feed.entitlements"; + CODE_SIGN_ENTITLEMENTS = Mac/SafariExtension/Subscribe_to_Feed.entitlements; ENABLE_HARDENED_RUNTIME = YES; - INFOPLIST_FILE = "Safari Extension/Info.plist"; + INFOPLIST_FILE = Mac/SafariExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ranchero.NetNewsWire-Evergreen.Subscribe-to-Feed"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -2478,8 +2420,9 @@ baseConfigurationReference = D5907CE02002F0FA005947E5 /* NetNewsWire_target.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_ENTITLEMENTS = NetNewsWire/NetNewsWire.entitlements; + CODE_SIGN_ENTITLEMENTS = Mac/Resources/NetNewsWire.entitlements; CODE_SIGN_IDENTITY = "-"; + INFOPLIST_FILE = Mac/Resources/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.14.4; PRODUCT_BUNDLE_IDENTIFIER = "com.ranchero.NetNewsWire-Evergreen"; @@ -2492,8 +2435,9 @@ baseConfigurationReference = D5907CE02002F0FA005947E5 /* NetNewsWire_target.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_ENTITLEMENTS = NetNewsWire/NetNewsWire.entitlements; + CODE_SIGN_ENTITLEMENTS = Mac/Resources/NetNewsWire.entitlements; ENABLE_HARDENED_RUNTIME = YES; + INFOPLIST_FILE = Mac/Resources/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.14.4; PRODUCT_BUNDLE_IDENTIFIER = "com.ranchero.NetNewsWire-Evergreen"; diff --git a/NetNewsWire/DatabaseWindow/DatabaseWindow.storyboard b/NetNewsWire/DatabaseWindow/DatabaseWindow.storyboard deleted file mode 100644 index b04b70530..000000000 --- a/NetNewsWire/DatabaseWindow/DatabaseWindow.storyboard +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NetNewsWire/DatabaseWindow/DatabaseWindowController.swift b/NetNewsWire/DatabaseWindow/DatabaseWindowController.swift deleted file mode 100644 index e20e8c046..000000000 --- a/NetNewsWire/DatabaseWindow/DatabaseWindowController.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// DatabaseWindowController.swift -// NetNewsWire -// -// Created by Brent Simmons on 2/2/19. -// Copyright © 2019 Ranchero Software. All rights reserved. -// - -import AppKit - -class DatabaseWindowController: NSWindowController { - - override func windowDidLoad() { - super.windowDidLoad() - - // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. - } - -} diff --git a/NetNewsWire/Dinosaurs/DinosaursWindow.xib b/NetNewsWire/Dinosaurs/DinosaursWindow.xib deleted file mode 100644 index 5eee96446..000000000 --- a/NetNewsWire/Dinosaurs/DinosaursWindow.xib +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NetNewsWire/Dinosaurs/DinosaursWindowController.swift b/NetNewsWire/Dinosaurs/DinosaursWindowController.swift deleted file mode 100644 index 4ecd4ca24..000000000 --- a/NetNewsWire/Dinosaurs/DinosaursWindowController.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// DinosaursWindowController.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/12/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import AppKit - -class DinosaursWindowController: NSWindowController { - - convenience init() { - - self.init(windowNibName: NSNib.Name(rawValue: "DinosaursWindow")) - } - - override func windowDidLoad() { - - } - - // MARK: - Actions - - @IBAction func openHomePage(_ sender: Any?) { - - } - - @IBAction func selectInMainWindow(_ sender: Any?) { - - } - - @IBAction func unsubscribe(_ sender: Any?) { - - } -} diff --git a/NetNewsWire/FeedList/FeedList.plist b/NetNewsWire/FeedList/FeedList.plist deleted file mode 100644 index e0cd82a38..000000000 --- a/NetNewsWire/FeedList/FeedList.plist +++ /dev/null @@ -1,361 +0,0 @@ - - - - - Mac and iOS - - - name - TidBITS - homePageURL - http://tidbits.org/ - url - http://tidbits.org/feeds/tidbits_blurb.rss - - - name - Michael Tsai - homePageURL - https://mjtsai.com/blog/ - url - https://mjtsai.com/blog/feed/ - - - name - 9to5Mac - homePageURL - https://9to5mac.com/ - url - https://9to5mac.com/feed/ - - - name - Macdrifter - homePageURL - http://www.macdrifter.com/ - url - http://www.macdrifter.com/feeds/all.atom.xml - - - name - Macworld - homePageURL - https://www.macworld.com/ - url - https://www.macworld.com/index.rss - - - name - Six Colors - homePageURL - https://www.sixcolors.com/ - url - https://feedpress.me/sixcolors - - - Software Companies - - - name - Flying Meat - homePageURL - http://flyingmeat.com/blog/ - url - http://flyingmeat.com/blog/feed.json - - - Blogs - - - name - Jason Kottke - homePageURL - https://kottke.org/ - url - http://feeds.kottke.org/main - - - name - Allen Pike - homePageURL - http://www.allenpike.com/ - url - http://www.allenpike.com/feed/ - - - name - And now it’s all this (Dr. Drang) - homePageURL - http://leancrew.com/all-this/ - url - http://leancrew.com/all-this/feed.json - - - name - Anil Dash - homePageURL - http://anildash.com/ - url - http://feeds.dashes.com/AnilDash - - - name - Ash Furrow - homePageURL - https://ashfurrow.com/ - url - https://ashfurrow.com/blog?format=rss - - - name - bbum's weblog-o-mat - homePageURL - http://www.friday.com/bbum - url - http://www.friday.com/bbum/feed/ - - - name - Brett Terpstra - homePageURL - http://brettterpstra.com/ - url - http://brettterpstra.com/atom.xml - - - name - Call Me Fishmeal (Wil Shipley) - homePageURL - http://blog.wilshipley.com/ - url - http://blog.wilshipley.com/rss.xml - - - name - carpeaqua - homePageURL - https://carpeaqua.com/ - url - https://carpeaqua.com/rss/ - - - name - Codeplease - homePageURL - http://codeplease.io/ - url - http://codeplease.io/rss/ - - - name - Collin Donnell - homePageURL - http://collindonnell.com/ - url - http://collindonnell.com/feed/json - - - name - Bitsplitting (Daniel Jalkut) - homePageURL - http://bitsplitting.org/ - url - http://bitsplitting.org/feed/ - - - name - _David Smith - homePageURL - https://david-smith.org/ - url - https://david-smith.org/atom.xml - - - name - Blog Posts About Stuff - homePageURL - http://nothe.purplellamas.net/ - url - http://nothe.purplellamas.net/index.xml - - - name - Liz Marley - homePageURL - https://medium.com/@emarley - url - https://medium.com/feed/@emarley - - - name - Demi Marshall - homePageURL - https://pewpewthespells.com/ramble.html - url - https://pewpewthespells.com/feed.xml - - - name - Veronica Ray - homePageURL - https://medium.com/@nerdonica - url - https://medium.com/feed/@nerdonica - - - name - Tess Rinearson - homePageURL - https://medium.com/@tessr - url - https://medium.com/feed/@tessr - - - name - jessysaurusrex - homePageURL - https://jessysaurusrex.com - url - https://jessysaurusrex.com/feed/ - - - name - Designated Nerd - homePageURL - http://designatednerd.com/blog/ - url - http://designatednerd.com/feed/ - - - name - Virginia Roberts - homePageURL - http://www.virginiaroberts.com/ - url - http://www.virginiaroberts.com/feed/ - - - News - - - name - Talking Points Memo - homePageURL - https://talkingpointsmemo.com/ - url - https://talkingpointsmemo.com/feed/all - - - TV - - - name - Doctor Who - homePageURL - http://www.bbc.co.uk/blogs/doctorwho - url - http://www.bbc.co.uk/blogs/doctorwho/rss - - - Programming - - - name - Swift Blog - Apple Developer - homePageURL - https://developer.apple.com/swift/blog/ - url - http://developer.apple.com/swift/blog/news.rss - - - name - NSHipster - homePageURL - http://nshipster.com/ - url - http://nshipster.com/feed.xml - - - name - Ray Wenderlich - homePageURL - https://www.raywenderlich.com/ - url - https://www.raywenderlich.com/feed - - - name - Indie Stack (Daniel Jalkut) - homePageURL - http://indiestack.com/ - url - http://indiestack.com/feed/json/ - - - name - Pointers Gone Wild - homePageURL - https://pointersgonewild.com/ - url - https://pointersgonewild.com/feed/ - - - name - Marcy Sutton - homePageURL - https://marcysutton.com/ - url - https://marcysutton.com/feed/ - - - name - Hillel Wayne - homePageURL - https://www.hillelwayne.com/ - url - https://www.hillelwayne.com/index.xml - - - Writers - - - name - Charles Stross - homePageURL - http://www.antipope.org/charlie/blog-static/ - url - http://www.antipope.org/charlie/blog-static/atom.xml - - - name - John Scalzi (Whatever) - homePageURL - https://whatever.scalzi.com/ - url - https://whatever.scalzi.com/feed/ - - - Seattle - - - name - My Ballard - homePageURL - http://www.myballard.com/ - url - http://feeds2.feedburner.com/myballard - - - Miscellaneous - - - name - Pinboard (popular bookmarks) - homePageURL - https://pinboard.in/popular/ - url - https://feeds.pinboard.in/rss/popular/ - - - - diff --git a/NetNewsWire/FeedList/FeedList.storyboard b/NetNewsWire/FeedList/FeedList.storyboard deleted file mode 100644 index 66d06568e..000000000 --- a/NetNewsWire/FeedList/FeedList.storyboard +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/NetNewsWire/FeedList/FeedListFeed.swift b/NetNewsWire/FeedList/FeedListFeed.swift deleted file mode 100644 index 76c692a8f..000000000 --- a/NetNewsWire/FeedList/FeedListFeed.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// FeedListFeed.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/4/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import Foundation -import RSCore -import RSParser -import RSWeb - -extension Notification.Name { - - public static let FeedListFeedDidBecomeAvailable = Notification.Name(rawValue: "FeedListFeedDidBecomeAvailable") -} - -final class FeedListFeed: Hashable, DisplayNameProvider { - - let name: String - let url: String - let homePageURL: String - var lastDownloadAttemptDate: Date? = nil - - var parsedFeed: ParsedFeed? = nil { - didSet { - postFeedListFeedDidBecomeAvailableNotification() - } - } - - var nameForDisplay: String { // DisplayNameProvider - return name - } - - init(name: String, url: String, homePageURL: String) { - - self.name = name - self.url = url - self.homePageURL = homePageURL - } - - private struct Key { - static let name = "name" - static let editedName = "editedName" // Used in DefaultFeeds.plist - static let url = "url" - static let homePageURL = "homePageURL" - } - - convenience init(dictionary: [String: String]) { - - let name = (dictionary[Key.name] ?? dictionary[Key.editedName])! - let url = dictionary[Key.url]! - let homePageURL = dictionary[Key.homePageURL]! - - self.init(name: name, url: url, homePageURL: homePageURL) - } - - func downloadIfNeeded() { - - // Not doing feed previews until after 1.0. - -// guard let lastDownloadAttemptDate = lastDownloadAttemptDate else { -// downloadFeed() -// return -// } -// -// let cutoffDate = Date().addingTimeInterval(-(30 * 60)) // 30 minutes in the past -// if lastDownloadAttemptDate < cutoffDate { -// downloadFeed() -// } - } - - // MARK: - Hashable - - public func hash(into hasher: inout Hasher) { - hasher.combine(url) - } - - // MARK: - Equatable - - static func ==(lhs: FeedListFeed, rhs: FeedListFeed) -> Bool { - - return lhs.url == rhs.url && lhs.name == rhs.name && lhs.homePageURL == rhs.homePageURL - } -} - -private extension FeedListFeed { - - func postFeedListFeedDidBecomeAvailableNotification() { - -// NotificationCenter.default.post(name: .FeedListFeedDidBecomeAvailable, object: self, userInfo: nil) - } - - func downloadFeed() { - -// lastDownloadAttemptDate = Date() -// guard let feedURL = URL(string: url) else { -// return -// } -// -// downloadUsingCache(feedURL) { (data, response, error) in -// -// guard let data = data, error == nil else { -// return -// } -// -// let parserData = ParserData(url: self.url, data: data) -// FeedParser.parse(parserData) { (parsedFeed, error) in -// -// if let parsedFeed = parsedFeed, parsedFeed.items.count > 0 { -// self.parsedFeed = parsedFeed -// } -// } -// } - } -} diff --git a/NetNewsWire/FeedList/FeedListFolder.swift b/NetNewsWire/FeedList/FeedListFolder.swift deleted file mode 100644 index 5cf3fe922..000000000 --- a/NetNewsWire/FeedList/FeedListFolder.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// FeedListFolder.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/4/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import Foundation -import RSCore -import Articles - -final class FeedListFolder: Hashable, DisplayNameProvider { - - let name: String - let feeds: Set - - var nameForDisplay: String { // DisplayNameProvider - return name - } - - init(name: String, feeds: Set) { - self.name = name - self.feeds = feeds - } - - // MARK: - Hashable - - public func hash(into hasher: inout Hasher) { - hasher.combine(name) - } - - // MARK: - Equatable - - static func ==(lhs: FeedListFolder, rhs: FeedListFolder) -> Bool { - return lhs.name == rhs.name && lhs.feeds == rhs.feeds - } -} diff --git a/NetNewsWire/FeedList/FeedListOutlineView.swift b/NetNewsWire/FeedList/FeedListOutlineView.swift deleted file mode 100644 index 066e641e6..000000000 --- a/NetNewsWire/FeedList/FeedListOutlineView.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// FeedListOutlineView.swift -// NetNewsWire -// -// Created by Brent Simmons on 2/11/18. -// Copyright © 2018 Ranchero Software. All rights reserved. -// - -import AppKit -import RSTree - -final class FeedListOutlineView: NSOutlineView { - - override func frameOfCell(atColumn column: Int, row: Int) -> NSRect { - - // Adjust top-level cells — they were too close to the disclosure indicator. - - var frame = super.frameOfCell(atColumn: column, row: row) - - let node = item(atRow: row) as! Node - guard let parentNode = node.parent, parentNode.isRoot else { - return frame - } - - let adjustment: CGFloat = 4.0 - frame.origin.x += adjustment - frame.size.width -= adjustment - return frame - } -} diff --git a/NetNewsWire/FeedList/FeedListTreeControllerDelegate.swift b/NetNewsWire/FeedList/FeedListTreeControllerDelegate.swift deleted file mode 100644 index d2a7a7d70..000000000 --- a/NetNewsWire/FeedList/FeedListTreeControllerDelegate.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// FeedListTreeControllerDelegate.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/4/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import Foundation -import RSTree -import RSCore - -// Folders and feeds that appear in the Feed Directory are pulled from three sources: -// 1. Feeds added in code here. (None, at least for now.) -// 2. Default feeds for new users — see DefaultFeeds.plist. -// 3. FeedList.plist — the main directory. Its top level is all folders. There are no sub-folders. -// It’s okay if there’s overlap: a feed may appear in multiple places. -// If there’s any problem with the data (wrong types), this will crash. By design. - -final class FeedListTreeControllerDelegate: TreeControllerDelegate { - - private let topLevelFeeds: Set - private let folders: Set - - init() { - -// let netnewswireNewsFeed = FeedListFeed(name: "NetNewsWire News", url: "https://nnw.ranchero.com/feed.json", homePageURL: "https://nnw.ranchero.com/") - self.topLevelFeeds = Set() //Set([netnewswireNewsFeedNewsFeed]) - - let defaultFeeds = FeedListReader.defaultFeeds() - let defaultFeedsFolder = FeedListFolder(name: NSLocalizedString("Default Feeds (for new users)", comment: "Feed Directory"), feeds: defaultFeeds) - - self.folders = Set(FeedListReader.folders() + [defaultFeedsFolder]) - } - - func treeController(treeController: TreeController, childNodesFor node: Node) -> [Node]? { - - if node.isRoot { - return childNodesForRootNode(node) - } - return childNodesForFolderNode(node) - } -} - -// MARK: - Private - -private extension FeedListTreeControllerDelegate { - - func childNodesForRootNode(_ rootNode: Node) -> [Node]? { - - let children = (Array(topLevelFeeds) as [AnyObject]) + (Array(folders) as [AnyObject]) - return childNodesForContainerNode(rootNode, children) - } - - func childNodesForFolderNode(_ folderNode: Node) -> [Node]? { - - let folder = folderNode.representedObject as! FeedListFolder - return childNodesForContainerNode(folderNode, Array(folder.feeds)) - } - - func childNodesForContainerNode(_ containerNode: Node, _ children: [AnyObject]) -> [Node]? { - - let nodes = unsortedNodes(parent: containerNode, children: children) - return nodes.sortedAlphabeticallyWithFoldersAtEnd() - } - - func unsortedNodes(parent: Node, children: [AnyObject]) -> [Node] { - - return children.map{ createNode(child: $0, parent: parent) } - } - - func createNode(child: AnyObject, parent: Node) -> Node { - - if let feed = child as? FeedListFeed { - return createNode(feed: feed, parent: parent) - } - let folder = child as! FeedListFolder - return createNode(folder: folder, parent: parent) - } - - func createNode(feed: FeedListFeed, parent: Node) -> Node { - - return Node(representedObject: feed, parent: parent) - } - - func createNode(folder: FeedListFolder, parent: Node) -> Node { - - let node = Node(representedObject: folder, parent: parent) - node.canHaveChildNodes = true - return node - } -} - -// MARK: - Loading from Disk - -private struct FeedListReader { - - static func folders() -> Set { - - return Set(foldersDictionary().map { (arg: (key: String, value: [[String : String]])) -> FeedListFolder in - - let (name, feedDictionaries) = arg - return FeedListFolder(name: name, feeds: feeds(with: feedDictionaries)) - }) - } - - static func defaultFeeds() -> Set { - - return feeds(with: defaultFeedDictionaries()) - } - - private static func defaultFeedDictionaries() -> [[String: String]] { - - let f = Bundle.main.path(forResource: "DefaultFeeds", ofType: "plist")! - return NSArray(contentsOfFile: f)! as! [[String: String]] - } - - private static func foldersDictionary() -> [String: [[String: String]]] { - - let f = Bundle.main.path(forResource: "FeedList", ofType: "plist")! - return NSDictionary(contentsOfFile: f)! as! [String: [[String: String]]] - } - - private static func feeds(with dictionaries: [[String: String]]) -> Set { - - return Set(dictionaries.map { FeedListFeed(dictionary: $0) }) - } -} - diff --git a/NetNewsWire/FeedList/FeedListViewController.swift b/NetNewsWire/FeedList/FeedListViewController.swift deleted file mode 100644 index b10f5b2b3..000000000 --- a/NetNewsWire/FeedList/FeedListViewController.swift +++ /dev/null @@ -1,248 +0,0 @@ -// -// FeedListViewController.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/1/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import AppKit -import RSTree -import RSCore - -extension Notification.Name { - - static let FeedListSidebarSelectionDidChange = Notification.Name(rawValue: "FeedListSidebarSelectionDidChange") -} - -struct FeedListUserInfoKey { - - static let selectedObject = "selectedObject" -} - -final class FeedListViewController: NSViewController { - - @IBOutlet var outlineView: NSOutlineView! - @IBOutlet var openHomePageButton: NSButton! - @IBOutlet var addToFeedsButton: NSButton! - - private var sidebarCellAppearance: SidebarCellAppearance! - private let treeControllerDelegate = FeedListTreeControllerDelegate() - lazy var treeController: TreeController = { - TreeController(delegate: treeControllerDelegate) - }() - - private var selectedNodes: [Node] { - if let nodes = outlineView.selectedItems as? [Node] { - return nodes - } - return [Node]() - } - - private var selectedObjects: [AnyObject] { - return selectedNodes.representedObjects() - } - - // MARK: NSViewController - - override func viewDidLoad() { - - view.translatesAutoresizingMaskIntoConstraints = false - - sidebarCellAppearance = SidebarCellAppearance(theme: appDelegate.currentTheme, fontSize: AppDefaults.shared.sidebarFontSize) - NotificationCenter.default.addObserver(self, selector: #selector(faviconDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil) - outlineView.needsLayout = true - updateUI() - } - - // MARK: - Notifications - - @objc func faviconDidBecomeAvailable(_ note: Notification) { - - configureAvailableCells() - } -} - -// MARK: Actions - -extension FeedListViewController { - - @IBAction func openHomePage(_ sender: Any?) { - - guard let homePageURL = singleSelectedHomePageURL() else { - return - } - Browser.open(homePageURL, inBackground: false) - } - - @IBAction func addToFeeds(_ sender: Any?) { - let selectedFeeds = selectedObjects.map { $0 as! FeedListFeed } - appDelegate.showAddFeedFromListOnMainWindow(selectedFeeds) - } - -} - -// MARK: - NSOutlineViewDataSource - -extension FeedListViewController: NSOutlineViewDataSource { - - func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int { - - return nodeForItem(item as AnyObject?).numberOfChildNodes - } - - func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any { - - return nodeForItem(item as AnyObject?).childNodes[index] - } - - func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool { - - return nodeForItem(item as AnyObject?).canHaveChildNodes - } - - private func nodeForItem(_ item: AnyObject?) -> Node { - - if item == nil { - return treeController.rootNode - } - return item as! Node - } -} - -// MARK: - NSOutlineViewDelegate - -extension FeedListViewController: NSOutlineViewDelegate { - - func outlineView(_ outlineView: NSOutlineView, viewFor tableColumn: NSTableColumn?, item: Any) -> NSView? { - - let cell = outlineView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "FeedListCell"), owner: self) as! SidebarCell - cell.translatesAutoresizingMaskIntoConstraints = false - let node = item as! Node - configure(cell, node) - - return cell - } - - func outlineViewSelectionDidChange(_ notification: Notification) { - - updateUI() - - let selectedRow = self.outlineView.selectedRow - - if selectedRow < 0 || selectedRow == NSNotFound { - postSidebarSelectionDidChangeNotification(nil) - return - } - - if let selectedNode = self.outlineView.item(atRow: selectedRow) as? Node { - postSidebarSelectionDidChangeNotification(selectedNode.representedObject) - } - } -} - -private extension FeedListViewController { - - func configure(_ cell: SidebarCell, _ node: Node) { - - cell.cellAppearance = sidebarCellAppearance - cell.objectValue = node - cell.name = nameFor(node) - cell.image = imageFor(node) - cell.shouldShowImage = true - } - - func imageFor(_ node: Node) -> NSImage? { - - if let _ = node.representedObject as? FeedListFolder { - return NSImage(named: NSImage.folderName) - } - else if let feed = node.representedObject as? FeedListFeed { - if let image = appDelegate.faviconDownloader.favicon(withHomePageURL: feed.homePageURL) { - return image - } - return AppImages.genericFeedImage - } - return nil - } - - func nameFor(_ node: Node) -> String { - - if let displayNameProvider = node.representedObject as? DisplayNameProvider { - return displayNameProvider.nameForDisplay - } - return "" - } - - func nodeForRow(_ row: Int) -> Node? { - - if row < 0 || row >= outlineView.numberOfRows { - return nil - } - - if let node = outlineView.item(atRow: row) as? Node { - return node - } - return nil - } - - func cellForRowView(_ rowView: NSTableRowView) -> SidebarCell? { - - return rowView.view(atColumn: 0) as? SidebarCell - } - - func configureAvailableCells() { - - outlineView.enumerateAvailableRowViews { (rowView: NSTableRowView, row: Int) -> Void in - - guard let cell = cellForRowView(rowView), let node = nodeForRow(row) else { - return - } - configure(cell, node) - } - } - - func postSidebarSelectionDidChangeNotification(_ selectedObject: Any?) { - - var userInfo = [AnyHashable: Any]() - - if let selectedObject = selectedObject { - userInfo[FeedListUserInfoKey.selectedObject] = selectedObject - } - - NotificationCenter.default.post(name: .FeedListSidebarSelectionDidChange, object: self, userInfo: userInfo) - } - - func updateUI() { - - updateButtons() - } - - func updateButtons() { - - let objects = selectedObjects - - if objects.isEmpty { - openHomePageButton.isEnabled = false - addToFeedsButton.isEnabled = false - return - } - - addToFeedsButton.isEnabled = true - - if let _ = singleSelectedHomePageURL() { - openHomePageButton.isEnabled = true - } - else { - openHomePageButton.isEnabled = false - } - } - - func singleSelectedHomePageURL() -> String? { - - guard selectedObjects.count == 1, let homePageURL = (selectedObjects.first! as? FeedListFeed)?.homePageURL, !homePageURL.isEmpty else { - return nil - } - return homePageURL - } -} diff --git a/NetNewsWire/FeedList/FeedListWindowController.swift b/NetNewsWire/FeedList/FeedListWindowController.swift deleted file mode 100644 index 457f41517..000000000 --- a/NetNewsWire/FeedList/FeedListWindowController.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// FeedListWindowController.swift -// NetNewsWire -// -// Created by Brent Simmons on 8/1/15. -// Copyright © 2015 Ranchero Software, LLC. All rights reserved. -// - -import AppKit - -class FeedListWindowController : NSWindowController { - - override func windowDidLoad() { - -// window!.appearance = NSAppearance(named: .vibrantDark) - - let windowAutosaveName = NSWindow.FrameAutosaveName(rawValue: "FeedDirectoryWindow") - window?.setFrameUsingName(windowAutosaveName, force: true) - } -} - - diff --git a/NetNewsWire/FeedList/UnusedIn1.0/FeedListControlsView.swift b/NetNewsWire/FeedList/UnusedIn1.0/FeedListControlsView.swift deleted file mode 100644 index 674994c57..000000000 --- a/NetNewsWire/FeedList/UnusedIn1.0/FeedListControlsView.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// FeedListControlsView.swift -// NetNewsWire -// -// Created by Brent Simmons on 11/1/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import AppKit - -// Unused, at least for now. - -@objc final class FeedListControlsView: NSView { - -} diff --git a/NetNewsWire/FeedList/UnusedIn1.0/FeedListKeyboardDelegate.swift b/NetNewsWire/FeedList/UnusedIn1.0/FeedListKeyboardDelegate.swift deleted file mode 100644 index bfd7ae083..000000000 --- a/NetNewsWire/FeedList/UnusedIn1.0/FeedListKeyboardDelegate.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// FeedListKeyboardDelegate.swift -// NetNewsWire -// -// Created by Brent Simmons on 1/26/18. -// Copyright © 2018 Ranchero Software. All rights reserved. -// - -import AppKit - -@objc final class FeedListTimelineKeyboardDelegate: NSObject, KeyboardDelegate { - - @IBOutlet weak var timelineViewController: TimelineViewController? - - func keydown(_ event: NSEvent, in view: NSView) -> Bool { - - // TODO - return false - } -} diff --git a/NetNewsWire/FeedList/UnusedIn1.0/FeedListSplitViewController.swift b/NetNewsWire/FeedList/UnusedIn1.0/FeedListSplitViewController.swift deleted file mode 100644 index 93e55b086..000000000 --- a/NetNewsWire/FeedList/UnusedIn1.0/FeedListSplitViewController.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// FeedListSplitViewController.swift -// NetNewsWire -// -// Created by Brent Simmons on 12/28/17. -// Copyright © 2017 Ranchero Software. All rights reserved. -// - -import AppKit - -class FeedListSplitViewController: NSSplitViewController { - - override func splitView(_ splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool { - - return false - } - - override func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt index: Int) -> Bool { - - return false - } - - override func splitView(_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool { - - return false - } -} diff --git a/NetNewsWire/Info-MAS.plist b/NetNewsWire/Info-MAS.plist deleted file mode 100644 index 0243d718b..000000000 --- a/NetNewsWire/Info-MAS.plist +++ /dev/null @@ -1,63 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - AppIcon - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 5.0d8 - CFBundleURLTypes - - - CFBundleTypeRole - Viewer - CFBundleURLName - RSS Feed - CFBundleURLSchemes - - feed - feeds - - - - CFBundleVersion - 522 - LSApplicationCategoryType - public.app-category.news - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSAppleEventsUsageDescription - NetNewsWire communicates with other apps on your Mac when you choose to share a news item. - NSAppleScriptEnabled - - NSHumanReadableCopyright - Copyright © 2002-2018 Ranchero Software. All rights reserved. - NSMainStoryboardFile - Main - NSPrincipalClass - NSApplication - OSAScriptingDefinition - NetNewsWire.sdef - SUFeedURL - https://ranchero.com/downloads/netnewswire-beta.xml - UserAgent - NetNewsWire (macOS; RSS Reader; https://ranchero.com/netnewswire/) - - diff --git a/NetNewsWire/MainWindow/AddFeed/AddFeedFromListWindowController.swift b/NetNewsWire/MainWindow/AddFeed/AddFeedFromListWindowController.swift deleted file mode 100644 index d27cd8e5c..000000000 --- a/NetNewsWire/MainWindow/AddFeed/AddFeedFromListWindowController.swift +++ /dev/null @@ -1,122 +0,0 @@ -// -// AddFeedFromListWindowController.swift -// NetNewsWire -// -// Created by Maurice Parker on 9/13/18. -// Copyright © 2018 Ranchero Software, LLC. All rights reserved. -// - -import AppKit -import RSCore -import RSTree -import Articles -import Account - - -class AddFeedFromListWindowController : NSWindowController { - - @IBOutlet weak var addFeedTextField: NSTextField! - @IBOutlet weak var folderPopupButton: NSPopUpButton! - - private var feedListFeeds: [FeedListFeed]? - private var hostWindow: NSWindow! - private var folderTreeController: TreeController? - - convenience init(_ feedListFeeds: [FeedListFeed]) { - self.init(windowNibName: NSNib.Name(rawValue: "AddFeedFromListSheet")) - self.feedListFeeds = feedListFeeds - } - - func runSheetOnWindow(_ w: NSWindow) { - hostWindow = w - if let sheetWindow = self.window { - hostWindow.beginSheet(sheetWindow) { (returnCode: NSApplication.ModalResponse) -> Void in - } - } - } - - override func windowDidLoad() { - - guard let feedListFeeds = feedListFeeds else { - assertionFailure("Feeds should have been passed in the initializer") - return - } - - if feedListFeeds.count == 1 { - addFeedTextField.stringValue = "Add \"\(feedListFeeds.first!.nameForDisplay)\"?" - } else { - addFeedTextField.stringValue = "Add \(feedListFeeds.count) feeds?" - } - - let rootNode = Node(representedObject: AccountManager.shared.localAccount, parent: nil) - rootNode.canHaveChildNodes = true - folderTreeController = TreeController(delegate: FolderTreeControllerDelegate(), rootNode: rootNode) - - folderPopupButton.menu = FolderTreeMenu.createFolderPopupMenu(with: folderTreeController!.rootNode) - - } - - - // MARK: Actions - - @IBAction func cancel(_ sender: Any?) { - if let sheetWindow = window { - hostWindow.endSheet(sheetWindow, returnCode: NSApplication.ModalResponse.cancel) - } - } - - @IBAction func addFeed(_ sender: Any?) { - - guard let container = folderPopupButton.selectedItem?.representedObject as? Container else { - assertionFailure("Expected the folderPopupButton to have a container.") - return - } - - guard let feedListFeeds = feedListFeeds else { - assertionFailure("Feeds should have been passed in the initializer") - return - } - - var account: Account? - var folder: Folder? - if container is Folder { - folder = (container as! Folder) - account = folder!.account - } else { - account = (container as! Account) - } - - for feedListFeed in feedListFeeds { - - if account!.hasFeed(withURL: feedListFeed.url) { - continue - } - - guard let feed = account!.createFeed(with: feedListFeed.nameForDisplay, editedName: nil, url: feedListFeed.url) else { - continue - } - - guard let url = URL(string: feedListFeed.url) else { - assertionFailure("Malformed URL string: \(feedListFeed.url).") - continue - } - - if account!.addFeed(feed, to: folder) { - NotificationCenter.default.post(name: .UserDidAddFeed, object: self, userInfo: [UserInfoKey.feed: feed]) - } - - InitialFeedDownloader.download(url) { (parsedFeed) in - if let parsedFeed = parsedFeed { - account!.update(feed, with: parsedFeed, {}) - } - } - - } - - if let sheetWindow = window { - hostWindow.endSheet(sheetWindow, returnCode: NSApplication.ModalResponse.OK) - } - - } - -} diff --git a/NetNewsWire/Resources/MAS/Credits.rtf b/NetNewsWire/Resources/MAS/Credits.rtf deleted file mode 100644 index 0ccb7be02..000000000 --- a/NetNewsWire/Resources/MAS/Credits.rtf +++ /dev/null @@ -1,42 +0,0 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf200 -{\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;\f1\fnil\fcharset0 LucidaGrande;} -{\colortbl;\red255\green255\blue255;\red0\green0\blue0;} -{\*\expandedcolortbl;;\cssrgb\c0\c0\c0\cname textColor;} -\vieww14060\viewh15660\viewkind0 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl360\slmult1\pardirnatural\partightenfactor0 - -\f0\b\fs22 \cf2 By Brent Simmons\ -{\field{\*\fldinst{HYPERLINK "http://inessential.com/"}}{\fldrslt inessential.com}} -\f1\b0 \ -\pard\pardeftab720\li360\sa60\partightenfactor0 -\cf2 \ -\pard\pardeftab720\sa60\partightenfactor0 - -\f0\b \cf2 Credits: -\f1\b0 \ -\pard\pardeftab720\li360\sa60\partightenfactor0 -\cf2 App icon and most other icons: {\field{\*\fldinst{HYPERLINK "https://twitter.com/BradEllis"}}{\fldrslt Brad Ellis}}\ -Major code contributors: {\field{\*\fldinst{HYPERLINK "https://github.com/olofhellman"}}{\fldrslt Olof Hellman}}, {\field{\*\fldinst{HYPERLINK "https://github.com/vincode-io"}}{\fldrslt Maurice Parker}}, and {\field{\*\fldinst{HYPERLINK "https://github.com/danielpunkass"}}{\fldrslt Daniel Jalkut\ -}}\ -\pard\pardeftab720\sa60\partightenfactor0 - -\f0\b \cf2 Acknowledgments: -\f1\b0 \ -\pard\pardeftab720\li360\sa60\partightenfactor0 -{\field{\*\fldinst{HYPERLINK "https://github.com/ccgus/fmdb"}}{\fldrslt \cf2 FMDB}} (greatest SQLite wrapper ever in history) is by {\field{\*\fldinst{HYPERLINK "http://flyingmeat.com/"}}{\fldrslt Flying Meat Software}}.\ -\ -\pard\pardeftab720\sa60\partightenfactor0 - -\f0\b \cf2 Thanks:\ -\pard\pardeftab720\li360\sa60\partightenfactor0 - -\f1\b0 \cf2 Thanks to Sheila and my family; thanks to my friends in Seattle and around the globe; thanks to my co-workers and friends at {\field{\*\fldinst{HYPERLINK "https://www.omnigroup.com/"}}{\fldrslt The Omni Group}}; thanks to the ever-patient and ever-awesome NetNewsWire beta testers.\ -\ -\pard\pardeftab720\sa60\partightenfactor0 - -\f0\b \cf2 Dedication:\ -\pard\pardeftab720\li360\sa60\partightenfactor0 - -\f1\b0 \cf2 NetNewsWire 5.0 is dedicated to Aaron Swartz, Derek Miller, and Alex King, who helped with earlier versions of NetNewsWire, who I miss.\ -\ -} \ No newline at end of file diff --git a/NetNewsWire/ArticleStyles/ArticleStyle.swift b/Shared/ArticleStyles/ArticleStyle.swift similarity index 100% rename from NetNewsWire/ArticleStyles/ArticleStyle.swift rename to Shared/ArticleStyles/ArticleStyle.swift diff --git a/NetNewsWire/ArticleStyles/ArticleStylesManager.swift b/Shared/ArticleStyles/ArticleStylesManager.swift similarity index 100% rename from NetNewsWire/ArticleStyles/ArticleStylesManager.swift rename to Shared/ArticleStyles/ArticleStylesManager.swift diff --git a/Commands/DeleteFromSidebarCommand.swift b/Shared/Commands/DeleteFromSidebarCommand.swift similarity index 100% rename from Commands/DeleteFromSidebarCommand.swift rename to Shared/Commands/DeleteFromSidebarCommand.swift diff --git a/Commands/MarkCommandValidationStatus.swift b/Shared/Commands/MarkCommandValidationStatus.swift similarity index 100% rename from Commands/MarkCommandValidationStatus.swift rename to Shared/Commands/MarkCommandValidationStatus.swift diff --git a/Commands/MarkStatusCommand.swift b/Shared/Commands/MarkStatusCommand.swift similarity index 100% rename from Commands/MarkStatusCommand.swift rename to Shared/Commands/MarkStatusCommand.swift diff --git a/Commands/SendToMarsEditCommand.swift b/Shared/Commands/SendToMarsEditCommand.swift similarity index 100% rename from Commands/SendToMarsEditCommand.swift rename to Shared/Commands/SendToMarsEditCommand.swift diff --git a/Commands/SendToMicroBlogCommand.swift b/Shared/Commands/SendToMicroBlogCommand.swift similarity index 100% rename from Commands/SendToMicroBlogCommand.swift rename to Shared/Commands/SendToMicroBlogCommand.swift diff --git a/NetNewsWire/Data/ArticleUtilities.swift b/Shared/Data/ArticleUtilities.swift similarity index 100% rename from NetNewsWire/Data/ArticleUtilities.swift rename to Shared/Data/ArticleUtilities.swift diff --git a/NetNewsWire/Data/SmallIconProvider.swift b/Shared/Data/SmallIconProvider.swift similarity index 100% rename from NetNewsWire/Data/SmallIconProvider.swift rename to Shared/Data/SmallIconProvider.swift diff --git a/Exporters/OPMLExporter.swift b/Shared/Exporters/OPMLExporter.swift similarity index 100% rename from Exporters/OPMLExporter.swift rename to Shared/Exporters/OPMLExporter.swift diff --git a/NetNewsWire/Extensions/NSView-Extensions.swift b/Shared/Extensions/NSView-Extensions.swift similarity index 100% rename from NetNewsWire/Extensions/NSView-Extensions.swift rename to Shared/Extensions/NSView-Extensions.swift diff --git a/NetNewsWire/Extensions/Node-Extensions.swift b/Shared/Extensions/Node-Extensions.swift similarity index 100% rename from NetNewsWire/Extensions/Node-Extensions.swift rename to Shared/Extensions/Node-Extensions.swift diff --git a/NetNewsWire/Extensions/RSImage-Extensions.swift b/Shared/Extensions/RSImage-Extensions.swift similarity index 100% rename from NetNewsWire/Extensions/RSImage-Extensions.swift rename to Shared/Extensions/RSImage-Extensions.swift diff --git a/NetNewsWire/Favicons/FaviconDownloader.swift b/Shared/Favicons/FaviconDownloader.swift similarity index 100% rename from NetNewsWire/Favicons/FaviconDownloader.swift rename to Shared/Favicons/FaviconDownloader.swift diff --git a/NetNewsWire/Favicons/FaviconURLFinder.swift b/Shared/Favicons/FaviconURLFinder.swift similarity index 100% rename from NetNewsWire/Favicons/FaviconURLFinder.swift rename to Shared/Favicons/FaviconURLFinder.swift diff --git a/NetNewsWire/Favicons/SingleFaviconDownloader.swift b/Shared/Favicons/SingleFaviconDownloader.swift similarity index 100% rename from NetNewsWire/Favicons/SingleFaviconDownloader.swift rename to Shared/Favicons/SingleFaviconDownloader.swift diff --git a/NetNewsWire/FeedFinder/FeedFinder.swift b/Shared/FeedFinder/FeedFinder.swift similarity index 100% rename from NetNewsWire/FeedFinder/FeedFinder.swift rename to Shared/FeedFinder/FeedFinder.swift diff --git a/NetNewsWire/FeedFinder/FeedSpecifier.swift b/Shared/FeedFinder/FeedSpecifier.swift similarity index 100% rename from NetNewsWire/FeedFinder/FeedSpecifier.swift rename to Shared/FeedFinder/FeedSpecifier.swift diff --git a/NetNewsWire/FeedFinder/HTMLFeedFinder.swift b/Shared/FeedFinder/HTMLFeedFinder.swift similarity index 100% rename from NetNewsWire/FeedFinder/HTMLFeedFinder.swift rename to Shared/FeedFinder/HTMLFeedFinder.swift diff --git a/NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift similarity index 100% rename from NetNewsWire/HTMLMetadata/HTMLMetadataDownloader.swift rename to Shared/HTMLMetadata/HTMLMetadataDownloader.swift diff --git a/NetNewsWire/Images/AuthorAvatarDownloader.swift b/Shared/Images/AuthorAvatarDownloader.swift similarity index 100% rename from NetNewsWire/Images/AuthorAvatarDownloader.swift rename to Shared/Images/AuthorAvatarDownloader.swift diff --git a/NetNewsWire/Images/FeaturedImageDownloader.swift b/Shared/Images/FeaturedImageDownloader.swift similarity index 100% rename from NetNewsWire/Images/FeaturedImageDownloader.swift rename to Shared/Images/FeaturedImageDownloader.swift diff --git a/NetNewsWire/Images/FeedIconDownloader.swift b/Shared/Images/FeedIconDownloader.swift similarity index 100% rename from NetNewsWire/Images/FeedIconDownloader.swift rename to Shared/Images/FeedIconDownloader.swift diff --git a/NetNewsWire/Images/ImageDownloader.swift b/Shared/Images/ImageDownloader.swift similarity index 100% rename from NetNewsWire/Images/ImageDownloader.swift rename to Shared/Images/ImageDownloader.swift diff --git a/NetNewsWire/Images/RSHTMLMetadata+Extension.swift b/Shared/Images/RSHTMLMetadata+Extension.swift similarity index 100% rename from NetNewsWire/Images/RSHTMLMetadata+Extension.swift rename to Shared/Images/RSHTMLMetadata+Extension.swift diff --git a/Importers/DefaultFeeds.opml b/Shared/Importers/DefaultFeeds.opml similarity index 100% rename from Importers/DefaultFeeds.opml rename to Shared/Importers/DefaultFeeds.opml diff --git a/Importers/DefaultFeedsImporter.swift b/Shared/Importers/DefaultFeedsImporter.swift similarity index 100% rename from Importers/DefaultFeedsImporter.swift rename to Shared/Importers/DefaultFeedsImporter.swift diff --git a/Importers/OPMLImporter.swift b/Shared/Importers/OPMLImporter.swift similarity index 100% rename from Importers/OPMLImporter.swift rename to Shared/Importers/OPMLImporter.swift diff --git a/NetNewsWire/SmartFeeds/PseudoFeed.swift b/Shared/SmartFeeds/PseudoFeed.swift similarity index 100% rename from NetNewsWire/SmartFeeds/PseudoFeed.swift rename to Shared/SmartFeeds/PseudoFeed.swift diff --git a/NetNewsWire/SmartFeeds/SearchFeedDelegate.swift b/Shared/SmartFeeds/SearchFeedDelegate.swift similarity index 100% rename from NetNewsWire/SmartFeeds/SearchFeedDelegate.swift rename to Shared/SmartFeeds/SearchFeedDelegate.swift diff --git a/NetNewsWire/SmartFeeds/SmartFeed.swift b/Shared/SmartFeeds/SmartFeed.swift similarity index 100% rename from NetNewsWire/SmartFeeds/SmartFeed.swift rename to Shared/SmartFeeds/SmartFeed.swift diff --git a/NetNewsWire/SmartFeeds/SmartFeedPasteboardWriter.swift b/Shared/SmartFeeds/SmartFeedPasteboardWriter.swift similarity index 100% rename from NetNewsWire/SmartFeeds/SmartFeedPasteboardWriter.swift rename to Shared/SmartFeeds/SmartFeedPasteboardWriter.swift diff --git a/NetNewsWire/SmartFeeds/SmartFeedsController.swift b/Shared/SmartFeeds/SmartFeedsController.swift similarity index 100% rename from NetNewsWire/SmartFeeds/SmartFeedsController.swift rename to Shared/SmartFeeds/SmartFeedsController.swift diff --git a/NetNewsWire/SmartFeeds/StarredFeedDelegate.swift b/Shared/SmartFeeds/StarredFeedDelegate.swift similarity index 100% rename from NetNewsWire/SmartFeeds/StarredFeedDelegate.swift rename to Shared/SmartFeeds/StarredFeedDelegate.swift diff --git a/NetNewsWire/SmartFeeds/TodayFeedDelegate.swift b/Shared/SmartFeeds/TodayFeedDelegate.swift similarity index 100% rename from NetNewsWire/SmartFeeds/TodayFeedDelegate.swift rename to Shared/SmartFeeds/TodayFeedDelegate.swift diff --git a/NetNewsWire/SmartFeeds/UnreadFeed.swift b/Shared/SmartFeeds/UnreadFeed.swift similarity index 100% rename from NetNewsWire/SmartFeeds/UnreadFeed.swift rename to Shared/SmartFeeds/UnreadFeed.swift diff --git a/NetNewsWire/Notes/HelpMenu.markdown b/Technotes/HelpMenu.markdown similarity index 100% rename from NetNewsWire/Notes/HelpMenu.markdown rename to Technotes/HelpMenu.markdown diff --git a/NetNewsWire-iOSTests/Info.plist b/Tests/NetNewsWire-iOSTests/Info.plist similarity index 100% rename from NetNewsWire-iOSTests/Info.plist rename to Tests/NetNewsWire-iOSTests/Info.plist diff --git a/NetNewsWire-iOSTests/NetNewsWire_iOSTests.swift b/Tests/NetNewsWire-iOSTests/NetNewsWire_iOSTests.swift similarity index 100% rename from NetNewsWire-iOSTests/NetNewsWire_iOSTests.swift rename to Tests/NetNewsWire-iOSTests/NetNewsWire_iOSTests.swift diff --git a/NetNewsWireTests/Info.plist b/Tests/NetNewsWireTests/Info.plist similarity index 100% rename from NetNewsWireTests/Info.plist rename to Tests/NetNewsWireTests/Info.plist diff --git a/NetNewsWireTests/NetNewsWireTests.swift b/Tests/NetNewsWireTests/NetNewsWireTests.swift similarity index 100% rename from NetNewsWireTests/NetNewsWireTests.swift rename to Tests/NetNewsWireTests/NetNewsWireTests.swift diff --git a/NetNewsWireTests/ScriptingTests/AppleScriptXCTestCase.swift b/Tests/NetNewsWireTests/ScriptingTests/AppleScriptXCTestCase.swift similarity index 100% rename from NetNewsWireTests/ScriptingTests/AppleScriptXCTestCase.swift rename to Tests/NetNewsWireTests/ScriptingTests/AppleScriptXCTestCase.swift diff --git a/NetNewsWireTests/ScriptingTests/NSAppleEventDescriptor+UserRecordFields.swift b/Tests/NetNewsWireTests/ScriptingTests/NSAppleEventDescriptor+UserRecordFields.swift similarity index 100% rename from NetNewsWireTests/ScriptingTests/NSAppleEventDescriptor+UserRecordFields.swift rename to Tests/NetNewsWireTests/ScriptingTests/NSAppleEventDescriptor+UserRecordFields.swift diff --git a/NetNewsWireTests/ScriptingTests/ScriptingTests.swift b/Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift similarity index 100% rename from NetNewsWireTests/ScriptingTests/ScriptingTests.swift rename to Tests/NetNewsWireTests/ScriptingTests/ScriptingTests.swift diff --git a/NetNewsWireTests/ScriptingTests/scripts/establishMainWindowStartingState.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/establishMainWindowStartingState.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/establishMainWindowStartingState.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/establishMainWindowStartingState.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/selectAFeed.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/selectAFeed.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/selectAFeed.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/selectAFeed.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/selectAnArticle.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/selectAnArticle.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/selectAnArticle.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/selectAnArticle.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testCurrentArticleIsNil.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testCurrentArticleIsNil.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testCurrentArticleIsNil.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testCurrentArticleIsNil.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedExists.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testFeedOPML.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testGenericScript.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testGenericScript.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testGenericScript.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testGenericScript.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testGetURL.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testGetURL.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testGetURL.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testGetURL.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testIterativeCreateAndDeleteFeed.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testIterativeCreateAndDeleteFeed.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testIterativeCreateAndDeleteFeed.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testIterativeCreateAndDeleteFeed.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testNameAndUrlOfEveryFeed.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfAuthors.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testNameOfEveryFolder.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfEveryFolder.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testNameOfEveryFolder.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testNameOfEveryFolder.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testTitleOfArticlesWhose.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/testURLsOfCurrentArticle.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/testURLsOfCurrentArticle.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/testURLsOfCurrentArticle.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/testURLsOfCurrentArticle.applescript diff --git a/NetNewsWireTests/ScriptingTests/scripts/uiScriptingTestSetup.applescript b/Tests/NetNewsWireTests/ScriptingTests/scripts/uiScriptingTestSetup.applescript similarity index 100% rename from NetNewsWireTests/ScriptingTests/scripts/uiScriptingTestSetup.applescript rename to Tests/NetNewsWireTests/ScriptingTests/scripts/uiScriptingTestSetup.applescript diff --git a/NetNewsWire-iOS/AppDelegate.swift b/iOS/AppDelegate.swift similarity index 100% rename from NetNewsWire-iOS/AppDelegate.swift rename to iOS/AppDelegate.swift diff --git a/NetNewsWire-iOS/Base.lproj/LaunchScreen.storyboard b/iOS/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from NetNewsWire-iOS/Base.lproj/LaunchScreen.storyboard rename to iOS/Base.lproj/LaunchScreen.storyboard diff --git a/NetNewsWire-iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard similarity index 100% rename from NetNewsWire-iOS/Base.lproj/Main.storyboard rename to iOS/Base.lproj/Main.storyboard diff --git a/NetNewsWire-iOS/DetailViewController.swift b/iOS/DetailViewController.swift similarity index 100% rename from NetNewsWire-iOS/DetailViewController.swift rename to iOS/DetailViewController.swift diff --git a/NetNewsWire-iOS/MasterViewController.swift b/iOS/MasterViewController.swift similarity index 100% rename from NetNewsWire-iOS/MasterViewController.swift rename to iOS/MasterViewController.swift diff --git a/NetNewsWire-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from NetNewsWire-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to iOS/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/NetNewsWire/Assets.xcassets/Contents.json b/iOS/Resources/Assets.xcassets/Contents.json similarity index 100% rename from NetNewsWire/Assets.xcassets/Contents.json rename to iOS/Resources/Assets.xcassets/Contents.json diff --git a/NetNewsWire-iOS/Info.plist b/iOS/Resources/Info.plist similarity index 100% rename from NetNewsWire-iOS/Info.plist rename to iOS/Resources/Info.plist