Refactor + OS X Preference Window

This commit is contained in:
automactic 2016-05-17 11:37:45 -04:00
parent 00e4b2d587
commit 566d0e45b1
11 changed files with 504 additions and 73 deletions

View File

@ -32,7 +32,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
lazy var managedObjectModel: NSManagedObjectModel = {
// The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model.
let modelURL = NSBundle.mainBundle().URLForResource("Kiwix_OSX", withExtension: "momd")!
let modelURL = NSBundle.mainBundle().URLForResource("Kiwix", withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()

View File

@ -0,0 +1,22 @@
//
// PreferenceGeneralController.swift
// Kiwix
//
// Created by Chris Li on 5/17/16.
// Copyright © 2016 Chris. All rights reserved.
//
import Cocoa
class PreferenceGeneralController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear() {
super.viewDidAppear()
view.window?.title = LocalizedStrings.General
}
}

View File

@ -0,0 +1,22 @@
//
// PreferenceLibraryController.swift
// Kiwix
//
// Created by Chris Li on 5/17/16.
// Copyright © 2016 Chris. All rights reserved.
//
import Cocoa
class PreferenceLibraryController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear() {
super.viewDidAppear()
view.window?.title = LocalizedStrings.Library
}
}

View File

@ -22,6 +22,8 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.reference</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="6198" systemVersion="14A297b" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6198"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
<plugIn identifier="com.apple.WebKitIBPlugin" version="10117"/>
</dependencies>
<scenes>
<!--Application-->
@ -10,9 +11,9 @@
<application id="hnw-xV-0zn" sceneMemberID="viewController">
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="Kiwix-OSX" id="1Xt-HY-uBw">
<menuItem title="Kiwix" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Kiwix-OSX" systemMenu="apple" id="uQy-DD-JDr">
<menu key="submenu" title="Kiwix" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About Kiwix-OSX" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
@ -21,7 +22,11 @@
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
<connections>
<segue destination="0uS-zt-hL7" kind="show" id="MF8-Lt-DfH"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
@ -641,12 +646,12 @@
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
</connections>
</application>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModuleProvider="target"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Kiwix" customModuleProvider="target"/>
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="0.0"/>
<point key="canvasLocation" x="75" y="-58"/>
</scene>
<!--Window Controller - Window-->
<!--Window Controller-->
<scene sceneID="R2V-B0-nI4">
<objects>
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
@ -657,25 +662,190 @@
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
</window>
<connections>
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
<segue destination="Bc3-Gr-z7B" kind="relationship" relationship="window.shadowedContentViewController" id="x58-mz-pzK"/>
</connections>
</windowController>
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="250"/>
</scene>
<!--View Controller-->
<scene sceneID="hIz-AP-VOD">
<!--Preference-->
<scene sceneID="OeB-C7-dy8">
<objects>
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" id="m2S-Jp-Qdl">
<rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
<controllerPlaceholder storyboardName="Preference" id="0uS-zt-hL7" sceneMemberID="viewController"/>
<customObject id="KIZ-as-t5e" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="545.5" y="-205"/>
</scene>
<!--Split View Controller-->
<scene sceneID="HY0-Co-pxT">
<objects>
<splitViewController showSeguePresentationStyle="single" id="Bc3-Gr-z7B" sceneMemberID="viewController">
<splitViewItems>
<splitViewItem id="9PM-o2-vvO"/>
<splitViewItem id="RaI-Bd-zBZ"/>
</splitViewItems>
<splitView key="splitView" dividerStyle="thin" vertical="YES" id="lbj-dX-v7L">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
</splitView>
<connections>
<segue destination="tfg-Zj-pd1" kind="relationship" relationship="splitItems" id="m15-3C-jnA"/>
<segue destination="VDf-Vd-Z3l" kind="relationship" relationship="splitItems" id="6Lr-Vq-N3C"/>
</connections>
</splitViewController>
<customObject id="B9w-SS-p0L" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="730"/>
</scene>
<!--View Controller-->
<scene sceneID="gz5-Y2-oEU">
<objects>
<viewController id="tfg-Zj-pd1" sceneMemberID="viewController">
<view key="view" id="kg5-l3-cuF">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Kb-Gd-oW1">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<clipView key="contentView" id="lIV-Nv-pAC">
<rect key="frame" x="1" y="0.0" width="448" height="299"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="R2L-RE-J6E" viewBased="YES" id="TeC-hJ-1bi">
<rect key="frame" x="0.0" y="0.0" width="448" height="276"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="116" minWidth="40" maxWidth="1000" id="5KJ-5t-Z65">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="AYc-bA-MYj">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="fwU-Uh-GG7">
<rect key="frame" x="1" y="1" width="116" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KLl-mo-vQP">
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="K4l-YB-7Se">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="KLl-mo-vQP" id="uXn-ds-mRP"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
<tableColumn width="326" minWidth="40" maxWidth="1000" id="xMW-oz-ScE">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="fOZ-pK-abv">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="VK5-jl-hWS">
<rect key="frame" x="120" y="1" width="326" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JlH-CC-pxM">
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Zyv-fQ-LSL">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="JlH-CC-pxM" id="lsK-f4-78J"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
</tableView>
</subviews>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<constraints>
<constraint firstAttribute="width" constant="450" id="oFJ-3j-nSF"/>
</constraints>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="1AM-jb-mIA">
<rect key="frame" x="1" y="46" width="80.5" height="16"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="6fz-oA-Ygk">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="R2L-RE-J6E">
<rect key="frame" x="0.0" y="0.0" width="448" height="23"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="3Kb-Gd-oW1" secondAttribute="trailing" id="C2p-fW-mNs"/>
<constraint firstItem="3Kb-Gd-oW1" firstAttribute="top" secondItem="kg5-l3-cuF" secondAttribute="top" id="I6i-jZ-MbO"/>
<constraint firstAttribute="bottom" secondItem="3Kb-Gd-oW1" secondAttribute="bottom" id="iCA-2k-pYm"/>
<constraint firstItem="3Kb-Gd-oW1" firstAttribute="leading" secondItem="kg5-l3-cuF" secondAttribute="leading" id="lCr-td-29P"/>
</constraints>
</view>
</viewController>
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
<customObject id="Fe4-pm-CxO" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="655"/>
<point key="canvasLocation" x="882" y="439"/>
</scene>
<!--View Controller-->
<scene sceneID="Ks8-tQ-UPW">
<objects>
<viewController id="VDf-Vd-Z3l" sceneMemberID="viewController">
<view key="view" id="nhu-gs-rmS">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<webView translatesAutoresizingMaskIntoConstraints="NO" id="ATx-nW-erd">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<constraints>
<constraint firstAttribute="width" constant="450" id="1Ps-eh-Eg3"/>
</constraints>
<webPreferences key="preferences" defaultFontSize="16" defaultFixedFontSize="13" minimumFontSize="0">
<nil key="identifier"/>
</webPreferences>
</webView>
</subviews>
<constraints>
<constraint firstItem="ATx-nW-erd" firstAttribute="leading" secondItem="nhu-gs-rmS" secondAttribute="leading" id="aMO-Eb-d2y"/>
<constraint firstItem="ATx-nW-erd" firstAttribute="top" secondItem="nhu-gs-rmS" secondAttribute="top" id="asQ-VB-Stl"/>
<constraint firstAttribute="bottom" secondItem="ATx-nW-erd" secondAttribute="bottom" id="bAA-mS-6TT"/>
<constraint firstAttribute="trailing" secondItem="ATx-nW-erd" secondAttribute="trailing" id="eLW-Qn-ZTD"/>
</constraints>
</view>
</viewController>
<customObject id="m7P-Hs-Oe6" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="882" y="800"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="Kio-KL-wPs">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<scenes>
<!--Window Controller-->
<scene sceneID="v33-Mz-LqE">
<objects>
<windowController id="Kio-KL-wPs" sceneMemberID="viewController">
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="h9d-Gt-JRD">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="245" y="310" width="480" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/>
</window>
<connections>
<segue destination="7pl-K6-hNJ" kind="relationship" relationship="window.shadowedContentViewController" id="Zzf-0n-GMf"/>
</connections>
</windowController>
<customObject id="HSV-wV-QGC" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="260" y="466"/>
</scene>
<!--Preference Tab Controller-->
<scene sceneID="Dbm-Id-NVA">
<objects>
<tabViewController tabStyle="toolbar" id="7pl-K6-hNJ" customClass="PreferenceTabController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
<tabViewItems>
<tabViewItem identifier="" id="s0I-nm-qvU"/>
<tabViewItem identifier="" id="6Ma-nT-q8a"/>
</tabViewItems>
<tabView key="tabView" type="noTabsNoBorder" id="dfa-AW-Wad">
<rect key="frame" x="0.0" y="4" width="450" height="296"/>
<autoresizingMask key="autoresizingMask"/>
<font key="font" metaFont="message"/>
<tabViewItems/>
</tabView>
<connections>
<segue destination="PXZ-te-UpF" kind="relationship" relationship="tabItems" id="HhZ-gO-s1Y"/>
<segue destination="XTo-0v-8Mo" kind="relationship" relationship="tabItems" id="ayq-rh-d8T"/>
</connections>
</tabViewController>
<customObject id="8iJ-gc-gLa" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="871" y="459"/>
</scene>
<!--Preference General Controller-->
<scene sceneID="Q8W-Hz-cVz">
<objects>
<viewController id="PXZ-te-UpF" customClass="PreferenceGeneralController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" id="9Nb-wd-cXl">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="vNR-m1-BLO" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1541" y="276"/>
</scene>
<!--Preference Library Controller-->
<scene sceneID="4pt-g8-X7Q">
<objects>
<viewController id="XTo-0v-8Mo" customClass="PreferenceLibraryController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" id="Vc4-Ch-0AI">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="a7J-AX-cmn" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1541" y="637"/>
</scene>
</scenes>
</document>

View File

@ -73,7 +73,7 @@
9711879B1CEB546C00B9909D /* CoreDataExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 971187991CEB546C00B9909D /* CoreDataExtension.swift */; };
9711879D1CEB577400B9909D /* StringTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9711879C1CEB577400B9909D /* StringTools.swift */; };
9711879E1CEB577400B9909D /* StringTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9711879C1CEB577400B9909D /* StringTools.swift */; };
9711879F1CEB58BF00B9909D /* LocalizedStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58891C1CD1DB0077AE47 /* LocalizedStrings.swift */; };
971187A91CEB694400B9909D /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 971187A81CEB694400B9909D /* WebKit.framework */; };
9714D8D71C6E5C2600AABCA7 /* LTBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9714D8D61C6E5C2600AABCA7 /* LTBarButtonItem.swift */; };
97163D2B1CD7CEFA008BE2D6 /* WebViewVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97163D2A1CD7CEFA008BE2D6 /* WebViewVC.swift */; };
97163D2F1CD7DF1A008BE2D6 /* DownloaderLearnMore.html in Resources */ = {isa = PBXBuildFile; fileRef = 97163D2E1CD7DF1A008BE2D6 /* DownloaderLearnMore.html */; };
@ -91,7 +91,6 @@
973BCCEC1CEB3FA400F10B44 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCCEB1CEB3FA400F10B44 /* AppDelegate.swift */; };
973BCCEE1CEB3FA400F10B44 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCCED1CEB3FA400F10B44 /* ViewController.swift */; };
973BCCF31CEB3FA400F10B44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 973BCCF21CEB3FA400F10B44 /* Assets.xcassets */; };
973BCCF61CEB3FA400F10B44 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 973BCCF41CEB3FA400F10B44 /* Main.storyboard */; };
973BCD011CEB3FA500F10B44 /* Kiwix_OSXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD001CEB3FA500F10B44 /* Kiwix_OSXTests.swift */; };
973BCD0C1CEB3FA500F10B44 /* Kiwix_OSXUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973BCD0B1CEB3FA500F10B44 /* Kiwix_OSXUITests.swift */; };
973BCD191CEB402900F10B44 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 973BCD171CEB402900F10B44 /* Info.plist */; };
@ -107,6 +106,11 @@
974570F41C2DABB500680E43 /* ZIMMultiReaderAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974570F31C2DABB500680E43 /* ZIMMultiReaderAPI.swift */; };
974570F81C2DE67A00680E43 /* KiwixURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 974570F71C2DE67A00680E43 /* KiwixURLProtocol.swift */; };
9749A1B11C43064A000F2D1E /* BookmarkTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9749A1B01C43064A000F2D1E /* BookmarkTBVC.swift */; };
975334C91CEB6A3D007ED50B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 975334C81CEB6A3D007ED50B /* Main.storyboard */; };
975334CB1CEB6A43007ED50B /* Preference.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 975334CA1CEB6A43007ED50B /* Preference.storyboard */; };
975334D01CEB6AE3007ED50B /* PreferenceGeneralController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975334CF1CEB6AE3007ED50B /* PreferenceGeneralController.swift */; };
975334D21CEB6B01007ED50B /* PreferenceLibraryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975334D11CEB6B01007ED50B /* PreferenceLibraryController.swift */; };
975334D41CEB6EED007ED50B /* PreferenceTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975334D31CEB6EED007ED50B /* PreferenceTabController.swift */; };
97546E961CAEBC2C002FE3FD /* SearchTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97546E951CAEBC2C002FE3FD /* SearchTabController.swift */; };
975952EA1C5EA47B004F7E76 /* BookCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975952E91C5EA47B004F7E76 /* BookCollectionCell.swift */; };
9768957C1CB6A7D300F02686 /* SearchScopeSelectTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9768957B1CB6A7D300F02686 /* SearchScopeSelectTBVC.swift */; };
@ -130,7 +134,6 @@
978C58841C1CCE4D0077AE47 /* LanguageTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58831C1CCE4D0077AE47 /* LanguageTBVC.swift */; };
978C58861C1CD08F0077AE47 /* Setting.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 978C58851C1CD08F0077AE47 /* Setting.storyboard */; };
978C58881C1CD0F50077AE47 /* SettingTBVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58871C1CD0F50077AE47 /* SettingTBVC.swift */; };
978C588A1C1CD1DB0077AE47 /* LocalizedStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58891C1CD1DB0077AE47 /* LocalizedStrings.swift */; };
978C58961C1CD86E0077AE47 /* Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C588E1C1CD86E0077AE47 /* Language.swift */; };
978C58981C1CD86E0077AE47 /* Book.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58901C1CD86E0077AE47 /* Book.swift */; };
978C589C1C1CD86E0077AE47 /* Article.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978C58941C1CD86E0077AE47 /* Article.swift */; };
@ -302,6 +305,7 @@
9711878C1CEB541100B9909D /* Kiwix.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Kiwix.xcdatamodel; sourceTree = "<group>"; };
971187991CEB546C00B9909D /* CoreDataExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CoreDataExtension.swift; path = Kiwix/CoreData/CoreDataExtension.swift; sourceTree = "<group>"; };
9711879C1CEB577400B9909D /* StringTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringTools.swift; sourceTree = "<group>"; };
971187A81CEB694400B9909D /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/WebKit.framework; sourceTree = DEVELOPER_DIR; };
9714D8D61C6E5C2600AABCA7 /* LTBarButtonItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LTBarButtonItem.swift; sourceTree = "<group>"; };
97163D2A1CD7CEFA008BE2D6 /* WebViewVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewVC.swift; sourceTree = "<group>"; };
97163D2E1CD7DF1A008BE2D6 /* DownloaderLearnMore.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = DownloaderLearnMore.html; path = HelpDocuments/DownloaderLearnMore.html; sourceTree = "<group>"; };
@ -320,7 +324,6 @@
973BCCEB1CEB3FA400F10B44 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "Kiwix-OSX/AppDelegate.swift"; sourceTree = SOURCE_ROOT; };
973BCCED1CEB3FA400F10B44 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = "Kiwix-OSX/ViewController.swift"; sourceTree = SOURCE_ROOT; };
973BCCF21CEB3FA400F10B44 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = "Kiwix-OSX/Assets.xcassets"; sourceTree = SOURCE_ROOT; };
973BCCF51CEB3FA400F10B44 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
973BCCF71CEB3FA400F10B44 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Kiwix-OSX/Info.plist"; sourceTree = SOURCE_ROOT; };
973BCCFC1CEB3FA400F10B44 /* Kiwix-OSXTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Kiwix-OSXTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
973BCD001CEB3FA500F10B44 /* Kiwix_OSXTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Kiwix_OSXTests.swift; sourceTree = "<group>"; };
@ -341,6 +344,11 @@
974570F31C2DABB500680E43 /* ZIMMultiReaderAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZIMMultiReaderAPI.swift; sourceTree = "<group>"; };
974570F71C2DE67A00680E43 /* KiwixURLProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KiwixURLProtocol.swift; sourceTree = "<group>"; };
9749A1B01C43064A000F2D1E /* BookmarkTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookmarkTBVC.swift; sourceTree = "<group>"; };
975334C81CEB6A3D007ED50B /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = "Kiwix-OSX/StoryBoards/Main.storyboard"; sourceTree = SOURCE_ROOT; };
975334CA1CEB6A43007ED50B /* Preference.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Preference.storyboard; path = "Kiwix-OSX/StoryBoards/Preference.storyboard"; sourceTree = SOURCE_ROOT; };
975334CF1CEB6AE3007ED50B /* PreferenceGeneralController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PreferenceGeneralController.swift; path = "Kiwix-OSX/Controllers/PreferenceGeneralController.swift"; sourceTree = SOURCE_ROOT; };
975334D11CEB6B01007ED50B /* PreferenceLibraryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PreferenceLibraryController.swift; path = "Kiwix-OSX/Controllers/PreferenceLibraryController.swift"; sourceTree = SOURCE_ROOT; };
975334D31CEB6EED007ED50B /* PreferenceTabController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferenceTabController.swift; sourceTree = "<group>"; };
97546E951CAEBC2C002FE3FD /* SearchTabController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchTabController.swift; sourceTree = "<group>"; };
975952E91C5EA47B004F7E76 /* BookCollectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BookCollectionCell.swift; sourceTree = "<group>"; };
9768957B1CB6A7D300F02686 /* SearchScopeSelectTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchScopeSelectTBVC.swift; sourceTree = "<group>"; };
@ -364,7 +372,6 @@
978C58831C1CCE4D0077AE47 /* LanguageTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageTBVC.swift; sourceTree = "<group>"; };
978C58851C1CD08F0077AE47 /* Setting.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Setting.storyboard; sourceTree = "<group>"; };
978C58871C1CD0F50077AE47 /* SettingTBVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingTBVC.swift; sourceTree = "<group>"; };
978C58891C1CD1DB0077AE47 /* LocalizedStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalizedStrings.swift; sourceTree = "<group>"; };
978C588E1C1CD86E0077AE47 /* Language.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Language.swift; path = Kiwix/CoreData/Language.swift; sourceTree = "<group>"; };
978C58901C1CD86E0077AE47 /* Book.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = Book.swift; path = Kiwix/CoreData/Book.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
978C58941C1CD86E0077AE47 /* Article.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Article.swift; path = Kiwix/CoreData/Article.swift; sourceTree = "<group>"; };
@ -450,6 +457,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
971187A91CEB694400B9909D /* WebKit.framework in Frameworks */,
971187631CEB512F00B9909D /* libicuuc.55.dylib in Frameworks */,
971187611CEB512F00B9909D /* libicutest.55.dylib in Frameworks */,
9711875D1CEB512F00B9909D /* libicui18n.55.dylib in Frameworks */,
@ -617,6 +625,24 @@
path = Kiwix;
sourceTree = "<group>";
};
971187AA1CEB69D500B9909D /* Controllers */ = {
isa = PBXGroup;
children = (
975334CE1CEB6AB0007ED50B /* Preference */,
973BCCED1CEB3FA400F10B44 /* ViewController.swift */,
);
name = Controllers;
sourceTree = "<group>";
};
971187AB1CEB69DF00B9909D /* StoryBoards */ = {
isa = PBXGroup;
children = (
975334C81CEB6A3D007ED50B /* Main.storyboard */,
975334CA1CEB6A43007ED50B /* Preference.storyboard */,
);
name = StoryBoards;
sourceTree = "<group>";
};
97163D321CD7E79F008BE2D6 /* Help Docs */ = {
isa = PBXGroup;
children = (
@ -670,8 +696,6 @@
978C58A31C1CFD8B0077AE47 /* Lib */,
978C58791C1CCC920077AE47 /* Supporting */,
97A2AB891C1B80FF00052E74 /* Products */,
97A2ABA21C1B80FF00052E74 /* Kiwix-iOSTests */,
97A2ABAD1C1B810000052E74 /* Kiwix-UITests */,
);
name = iOS;
sourceTree = "<group>";
@ -722,6 +746,38 @@
name = Bookmark;
sourceTree = "<group>";
};
975334CC1CEB6A4D007ED50B /* Supporting */ = {
isa = PBXGroup;
children = (
973BCCF21CEB3FA400F10B44 /* Assets.xcassets */,
973BCCF71CEB3FA400F10B44 /* Info.plist */,
);
name = Supporting;
sourceTree = "<group>";
};
975334CD1CEB6A78007ED50B /* Others */ = {
isa = PBXGroup;
children = (
973BCCFF1CEB3FA500F10B44 /* Kiwix-OSXTests */,
973BCD0A1CEB3FA500F10B44 /* Kiwix-OSXUITests */,
97A2ABA21C1B80FF00052E74 /* Kiwix-iOSTests */,
97A2ABAD1C1B810000052E74 /* Kiwix-iOSUITests */,
784457131AE044F91977B64B /* Pods */,
CFDF64EC6F9DB861DEEB91A0 /* Frameworks */,
);
name = Others;
sourceTree = "<group>";
};
975334CE1CEB6AB0007ED50B /* Preference */ = {
isa = PBXGroup;
children = (
975334D31CEB6EED007ED50B /* PreferenceTabController.swift */,
975334CF1CEB6AE3007ED50B /* PreferenceGeneralController.swift */,
975334D11CEB6B01007ED50B /* PreferenceLibraryController.swift */,
);
name = Preference;
sourceTree = "<group>";
};
9768957A1CB6A35E00F02686 /* Dashboard */ = {
isa = PBXGroup;
children = (
@ -824,7 +880,6 @@
children = (
97EE24EF1C2078A400DFC672 /* Extension */,
97E891681CA976E90001CA32 /* FileManager.swift */,
978C58891C1CD1DB0077AE47 /* LocalizedStrings.swift */,
974570F71C2DE67A00680E43 /* KiwixURLProtocol.swift */,
971904A41CA3204B002E9CFF /* Network */,
97E5712A1CA0525300FF4F1D /* Operation */,
@ -887,8 +942,7 @@
973BCD1F1CEB412E00F10B44 /* Shared */,
97A2AB8A1C1B80FF00052E74 /* OS X */,
973BCCE41CEB3EDE00F10B44 /* iOS */,
784457131AE044F91977B64B /* Pods */,
CFDF64EC6F9DB861DEEB91A0 /* Frameworks */,
975334CD1CEB6A78007ED50B /* Others */,
);
sourceTree = "<group>";
};
@ -909,12 +963,9 @@
isa = PBXGroup;
children = (
973BCCEB1CEB3FA400F10B44 /* AppDelegate.swift */,
973BCCED1CEB3FA400F10B44 /* ViewController.swift */,
973BCCF21CEB3FA400F10B44 /* Assets.xcassets */,
973BCCF41CEB3FA400F10B44 /* Main.storyboard */,
973BCCF71CEB3FA400F10B44 /* Info.plist */,
973BCCFF1CEB3FA500F10B44 /* Kiwix-OSXTests */,
973BCD0A1CEB3FA500F10B44 /* Kiwix-OSXUITests */,
971187AA1CEB69D500B9909D /* Controllers */,
975334CC1CEB6A4D007ED50B /* Supporting */,
971187AB1CEB69DF00B9909D /* StoryBoards */,
);
name = "OS X";
path = Kiwix;
@ -930,13 +981,13 @@
path = KiwixTests;
sourceTree = "<group>";
};
97A2ABAD1C1B810000052E74 /* Kiwix-UITests */ = {
97A2ABAD1C1B810000052E74 /* Kiwix-iOSUITests */ = {
isa = PBXGroup;
children = (
973BCD1B1CEB403700F10B44 /* Info.plist */,
973BCD1C1CEB403700F10B44 /* KiwixUITests.swift */,
);
name = "Kiwix-UITests";
name = "Kiwix-iOSUITests";
path = KiwixUITests;
sourceTree = "<group>";
};
@ -1043,6 +1094,7 @@
CFDF64EC6F9DB861DEEB91A0 /* Frameworks */ = {
isa = PBXGroup;
children = (
971187A81CEB694400B9909D /* WebKit.framework */,
9711871D1CEB449A00B9909D /* libz.tbd */,
9711871B1CEB448400B9909D /* libz.tbd */,
6693AC18F86E44ABA71C3201 /* Pods_Kiwix.framework */,
@ -1232,7 +1284,8 @@
buildActionMask = 2147483647;
files = (
973BCCF31CEB3FA400F10B44 /* Assets.xcassets in Resources */,
973BCCF61CEB3FA400F10B44 /* Main.storyboard in Resources */,
975334C91CEB6A3D007ED50B /* Main.storyboard in Resources */,
975334CB1CEB6A43007ED50B /* Preference.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1344,10 +1397,13 @@
buildActionMask = 2147483647;
files = (
971187941CEB541A00B9909D /* Article.swift in Sources */,
975334D01CEB6AE3007ED50B /* PreferenceGeneralController.swift in Sources */,
975334D41CEB6EED007ED50B /* PreferenceTabController.swift in Sources */,
971187981CEB542500B9909D /* Language+CoreDataProperties.swift in Sources */,
9711878E1CEB541100B9909D /* Kiwix.xcdatamodeld in Sources */,
9711873A1CEB510900B9909D /* stringTools.cpp in Sources */,
971187961CEB542500B9909D /* DownloadTask+CoreDataProperties.swift in Sources */,
975334D21CEB6B01007ED50B /* PreferenceLibraryController.swift in Sources */,
971187971CEB542500B9909D /* Article+CoreDataProperties.swift in Sources */,
9711879E1CEB577400B9909D /* StringTools.swift in Sources */,
971187381CEB510900B9909D /* reader.cpp in Sources */,
@ -1357,7 +1413,6 @@
9711878F1CEB541600B9909D /* 1.5.xcmappingmodel in Sources */,
973BCCEE1CEB3FA400F10B44 /* ViewController.swift in Sources */,
973BCCEC1CEB3FA400F10B44 /* AppDelegate.swift in Sources */,
9711879F1CEB58BF00B9909D /* LocalizedStrings.swift in Sources */,
971187311CEB50FC00B9909D /* ZimReader.mm in Sources */,
971187911CEB541A00B9909D /* Book.swift in Sources */,
971187901CEB541600B9909D /* MigrationPolicy.swift in Sources */,
@ -1452,7 +1507,6 @@
9779987B1C1E1C9600B1DD5E /* Extensions.swift in Sources */,
97E0672A1C52AD050079C13C /* MainVCLoading.swift in Sources */,
977998761C1E0B7900B1DD5E /* DownloadTask.swift in Sources */,
978C588A1C1CD1DB0077AE47 /* LocalizedStrings.swift in Sources */,
97E570FD1CA0500400FF4F1D /* BlockObserver.swift in Sources */,
975952EA1C5EA47B004F7E76 /* BookCollectionCell.swift in Sources */,
97E5711A1CA0500400FF4F1D /* OperationObserver.swift in Sources */,
@ -1557,15 +1611,6 @@
path = Localization;
sourceTree = "<group>";
};
973BCCF41CEB3FA400F10B44 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
973BCCF51CEB3FA400F10B44 /* Base */,
);
name = Main.storyboard;
path = "Kiwix-OSX";
sourceTree = SOURCE_ROOT;
};
97A2AB971C1B80FF00052E74 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
@ -1598,7 +1643,7 @@
"$(PROJECT_DIR)/Kiwix/libkiwix/shared",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
PRODUCT_BUNDLE_IDENTIFIER = "org.kiwix.Kiwix-OSX";
PRODUCT_BUNDLE_IDENTIFIER = org.kiwix.osx;
PRODUCT_NAME = Kiwix;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Kiwix/Kiwix-Bridging-Header.h";
@ -1627,7 +1672,7 @@
"$(PROJECT_DIR)/Kiwix/libkiwix/shared",
);
MACOSX_DEPLOYMENT_TARGET = 10.10;
PRODUCT_BUNDLE_IDENTIFIER = "org.kiwix.Kiwix-OSX";
PRODUCT_BUNDLE_IDENTIFIER = org.kiwix.osx;
PRODUCT_NAME = Kiwix;
SDKROOT = macosx;
SWIFT_OBJC_BRIDGING_HEADER = "Kiwix/Kiwix-Bridging-Header.h";

View File

@ -1,24 +0,0 @@
//
// LocalizedStrings.swift
// Kiwix
//
// Created by Chris on 12/12/15.
// Copyright © 2015 Chris. All rights reserved.
//
class LocalizedStrings {
// Basic
class var yes: String {return NSLocalizedString("Yes", comment: "Basic")}
class var no: String {return NSLocalizedString("No", comment: "Basic")}
class var on: String {return NSLocalizedString("On", comment: "Basic")}
class var off: String {return NSLocalizedString("Off", comment: "Basic")}
class var and: String {return NSLocalizedString("and", comment: "Basic")}
class var ok: String {return NSLocalizedString("OK", comment: "Basic")}
class var cancel: String {return NSLocalizedString("Cancel", comment: "Basic")}
class var others: String {return NSLocalizedString("Others", comment: "Basic")}
class var unknown: String {return NSLocalizedString("Unknown", comment: "Basic")}
class var disabled: String {return NSLocalizedString("Disabled", comment: "Basic")}
class var remove: String {return NSLocalizedString("Remove", comment: "Basic")}
class var delete: String {return NSLocalizedString("Delete", comment: "Basic")}
class var refreshing: String {return NSLocalizedString("Refreshing...", comment: "Basic")}
}

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="Kio-KL-wPs">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<scenes>
<!--Window Controller-->
<scene sceneID="v33-Mz-LqE">
<objects>
<windowController showSeguePresentationStyle="single" id="Kio-KL-wPs" sceneMemberID="viewController">
<window key="window" title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="h9d-Gt-JRD">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="245" y="310" width="480" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/>
</window>
<connections>
<segue destination="wWZ-Ix-dFj" kind="relationship" relationship="window.shadowedContentViewController" id="igc-Cl-Wr7"/>
</connections>
</windowController>
<customObject id="HSV-wV-QGC" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="260" y="466"/>
</scene>
<!--Tab View Controller-->
<scene sceneID="ycI-0q-fkH">
<objects>
<tabViewController tabStyle="toolbar" id="wWZ-Ix-dFj" sceneMemberID="viewController">
<tabViewItems>
<tabViewItem identifier="" id="cpt-Bg-91n"/>
<tabViewItem identifier="" id="XXQ-1F-h6Y"/>
</tabViewItems>
<tabView key="tabView" type="noTabsNoBorder" id="Pi2-9N-oPg">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
<font key="font" metaFont="message"/>
<tabViewItems/>
</tabView>
<connections>
<segue destination="yMh-Y8-So7" kind="relationship" relationship="tabItems" id="3Og-Mu-kUi"/>
<segue destination="NuP-ag-eAf" kind="relationship" relationship="tabItems" id="Gzb-1Q-ghB"/>
</connections>
</tabViewController>
<customObject id="6aP-pQ-vm6" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="831" y="459"/>
</scene>
<!--View Controller-->
<scene sceneID="chw-lW-ckj">
<objects>
<viewController id="yMh-Y8-So7" sceneMemberID="viewController">
<view key="view" id="mDl-vU-28J">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="6mp-o4-MxV" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1479" y="291"/>
</scene>
<!--View Controller-->
<scene sceneID="A6I-Se-OCJ">
<objects>
<viewController id="NuP-ag-eAf" sceneMemberID="viewController">
<view key="view" id="j09-lg-Ed5">
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="qUz-dP-BFu" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1479" y="652"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,23 @@
//
// PreferenceTabController.swift
// Kiwix
//
// Created by Chris Li on 5/17/16.
// Copyright © 2016 Chris. All rights reserved.
//
import Cocoa
class PreferenceTabController: NSTabViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear() {
super.viewWillAppear()
tabViewItems[0].label = LocalizedStrings.General
tabViewItems[1].label = LocalizedStrings.Library
}
}

View File

@ -48,3 +48,24 @@ extension String {
}
}
class LocalizedStrings {
// Basic
class var yes: String {return NSLocalizedString("Yes", comment: "Basic")}
class var no: String {return NSLocalizedString("No", comment: "Basic")}
class var on: String {return NSLocalizedString("On", comment: "Basic")}
class var off: String {return NSLocalizedString("Off", comment: "Basic")}
class var and: String {return NSLocalizedString("and", comment: "Basic")}
class var ok: String {return NSLocalizedString("OK", comment: "Basic")}
class var cancel: String {return NSLocalizedString("Cancel", comment: "Basic")}
class var others: String {return NSLocalizedString("Others", comment: "Basic")}
class var unknown: String {return NSLocalizedString("Unknown", comment: "Basic")}
class var disabled: String {return NSLocalizedString("Disabled", comment: "Basic")}
class var remove: String {return NSLocalizedString("Remove", comment: "Basic")}
class var delete: String {return NSLocalizedString("Delete", comment: "Basic")}
class var refreshing: String {return NSLocalizedString("Refreshing...", comment: "Basic")}
// MARK: - OS X
class var General: String {return NSLocalizedString("General", comment: "OS X, Preference")}
class var Library: String {return NSLocalizedString("Library", comment: "OS X, Preference")}
}