├── Manual.xcodeproj ├── xcuserdata │ └── .gitignore ├── project.xcworkspace │ ├── xcuserdata │ │ └── .gitignore │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── Manual.xccheckout ├── xcshareddata │ └── xcschemes │ │ └── Manual.xcscheme └── project.pbxproj ├── .travis.yml ├── Archive ├── Manual-1.0.1.pkg ├── Manual-1.0.4.pkg └── README.md ├── Install └── Manual-1.0.5.pkg ├── Manual.iconset ├── icon_16x16.png ├── icon_32x32.png ├── icon_128x128.png ├── icon_256x256.png ├── icon_512x512.png ├── icon_128x128@2x.png ├── icon_16x16@2x.png ├── icon_256x256@2x.png ├── icon_32x32@2x.png └── icon_512x512@2x.png ├── .gitignore ├── Manual ├── Manual-Info.plist ├── en.lproj │ └── InfoPlist.strings ├── main.m ├── Manual-Prefix.pch ├── Classes │ ├── BackgroundView.h │ ├── ManualCell.h │ ├── SearchField.h │ ├── MainWindowController+NSOutlineViewDelegate.h │ ├── SearchFieldProtocol.h │ ├── MainWindowController+NSOutlineViewDataSource.h │ ├── MainWindowController+SearchFieldDelegate.h │ ├── AboutWindowController.h │ ├── Debug.m │ ├── ManualCell.m │ ├── ManualHelper.h │ ├── MainWindowController+Private.h │ ├── ApplicationDelegate.h │ ├── SearchField.m │ ├── ManualPage.h │ ├── MainWindowController+SearchFieldDelegate.m │ ├── AboutWindowController.m │ ├── MainWindowController.h │ ├── MainWindowController+Private.m │ ├── Debug.h │ ├── BackgroundView.m │ ├── ApplicationDelegate.m │ ├── MainWindowController+NSOutlineViewDelegate.m │ ├── MainWindowController+NSOutlineViewDataSource.m │ ├── ManualHelper.m │ ├── ManualPage.m │ └── MainWindowController.m ├── UI │ └── en.lproj │ │ ├── Localizable.strings │ │ ├── AboutWindow.xib │ │ └── MainWindow.xib └── warnings.h ├── todo.md ├── README.md └── todo.html /Manual.xcodeproj/xcuserdata/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /Manual.xcodeproj/project.xcworkspace/xcuserdata/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | xcode_project: Manual.xcodeproj 3 | xcode_scheme: Manual 4 | -------------------------------------------------------------------------------- /Archive/Manual-1.0.1.pkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Archive/Manual-1.0.1.pkg -------------------------------------------------------------------------------- /Archive/Manual-1.0.4.pkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Archive/Manual-1.0.4.pkg -------------------------------------------------------------------------------- /Install/Manual-1.0.5.pkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Install/Manual-1.0.5.pkg -------------------------------------------------------------------------------- /Manual.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_16x16.png -------------------------------------------------------------------------------- /Manual.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_32x32.png -------------------------------------------------------------------------------- /Manual.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_128x128.png -------------------------------------------------------------------------------- /Manual.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_256x256.png -------------------------------------------------------------------------------- /Manual.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_512x512.png -------------------------------------------------------------------------------- /Manual.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /Manual.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /Manual.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /Manual.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /Manual.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/macmade/Manual/HEAD/Manual.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/*.udb 2 | Build Manual Package/ 3 | Bugs/ 4 | Doc/ 5 | .com.apple.timemachine.supported 6 | Manual.mpkg/ 7 | 8 | -------------------------------------------------------------------------------- /Archive/README.md: -------------------------------------------------------------------------------- 1 | **On 2014/09/01 the original Manual 1.0.1 (from the ITunes App store) was placed herein for historical purposes as well as a version to compare against for legacy functionally understanding. ** -------------------------------------------------------------------------------- /Manual.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Manual/Manual-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | Manual 11 | CFBundleIdentifier 12 | com.xs-labs.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0.5 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 82 25 | LSApplicationCategoryType 26 | public.app-category.utilities 27 | LSMinimumSystemVersion 28 | ${MACOSX_DEPLOYMENT_TARGET} 29 | NSHumanReadableCopyright 30 | Copyright © 2011 eosgarden. All rights reserved. 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | NSApplication 35 | 36 | 37 | -------------------------------------------------------------------------------- /Manual.xcodeproj/project.xcworkspace/xcshareddata/Manual.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | F918DFFD-FAD1-46A8-9453-A4525C520BBF 9 | IDESourceControlProjectName 10 | Manual 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 352784C359DFBBE9064BAC495B9BAEBBD34AF15E 14 | https://github.com/macmade/Manual 15 | 16 | IDESourceControlProjectPath 17 | Manual.xcodeproj/project.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 352784C359DFBBE9064BAC495B9BAEBBD34AF15E 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/macmade/Manual 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 352784C359DFBBE9064BAC495B9BAEBBD34AF15E 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 352784C359DFBBE9064BAC495B9BAEBBD34AF15E 36 | IDESourceControlWCCName 37 | Manual 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Manual/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file InfoPlist.strings 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | 37 | -------------------------------------------------------------------------------- /Manual/main.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file main.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | int main( int argc, const char * argv[] ) 37 | { 38 | return NSApplicationMain( argc, ( const char ** )argv ); 39 | } 40 | -------------------------------------------------------------------------------- /Manual/Manual-Prefix.pch: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header Manual-Prefix.pch 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | #ifdef __OBJC__ 37 | 38 | #import 39 | #import "warnings.h" 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Manual/Classes/BackgroundView.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | @interface BackgroundView: NSView 31 | { 32 | @private 33 | 34 | NSColor * _backgroundColor; 35 | NSColor * _borderColor; 36 | } 37 | 38 | @property( atomic, readwrite, retain ) NSColor * backgroundColor; 39 | @property( atomic, readwrite, retain ) NSColor * borderColor; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Manual/Classes/ManualCell.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header ManualCell.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @interface ManualCell: NSCell 37 | { 38 | @protected 39 | 40 | 41 | 42 | @private 43 | 44 | id _ManualCell_Resreved[ 5 ] __attribute__( ( unused ) ); 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Manual/Classes/SearchField.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header SearchField.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @interface SearchField: NSSearchField 37 | { 38 | @protected 39 | 40 | 41 | 42 | @private 43 | 44 | id _SearchField_Reserved[ 5 ] __attribute__( ( unused ) ); 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+NSOutlineViewDelegate.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+NSOutlineViewDelegate.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | #import "MainWindowController.h" 37 | 38 | @interface MainWindowController( NSOutlineViewDelegate ) < NSOutlineViewDelegate > 39 | 40 | 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Manual/Classes/SearchFieldProtocol.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header SearchFieldProtocol.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @class SearchField; 37 | 38 | @protocol SearchFieldProtocol < NSTextFieldDelegate > 39 | 40 | @optional 41 | 42 | - ( void )searchFieldValueDidChange: ( SearchField * )searchField; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+NSOutlineViewDataSource.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+NSOutlineViewDataSource.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | #import "MainWindowController.h" 37 | 38 | @interface MainWindowController( NSOutlineViewDataSource ) < NSOutlineViewDataSource > 39 | 40 | 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+SearchFieldDelegate.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+SearchFieldDelegate.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | #import "MainWindowController.h" 37 | #import "SearchFieldProtocol.h" 38 | 39 | @interface MainWindowController( SearchFieldDelegate ) < SearchFieldProtocol > 40 | 41 | 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Manual/Classes/AboutWindowController.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | @class BackgroundView; 31 | 32 | @interface AboutWindowController: NSWindowController 33 | { 34 | @private 35 | 36 | BackgroundView * _backgroundView; 37 | NSTextField * _versionText; 38 | } 39 | 40 | @property( nonatomic, readwrite, retain ) IBOutlet BackgroundView * backgroundView; 41 | @property( nonatomic, readwrite, retain ) IBOutlet NSTextField * versionText; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Manual/Classes/Debug.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+NSOutlineViewDelegate.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // 37 | // Debug.m 38 | // Manual 39 | // 40 | // Created by Marty Turner on 19/05/2014. 41 | // 42 | 43 | #import "Debug.h" 44 | 45 | @implementation Debug 46 | 47 | // This is just a place-holder for the .h file macros. 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Manual/Classes/ManualCell.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file ManualCell.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | 41 | #import "ManualCell.h" 42 | 43 | @implementation ManualCell 44 | 45 | - ( id )init 46 | { 47 | //NSLOG_FUNCNAME; 48 | 49 | if( ( self = [ super init ] ) ) 50 | {} 51 | 52 | return self; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Manual/Classes/ManualHelper.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header ManualHelper.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @interface ManualHelper: NSObject 37 | { 38 | @protected 39 | 40 | NSMutableDictionary * _sections; 41 | 42 | @private 43 | 44 | id _ManualHelper_Reserved[ 5 ] __attribute__( ( unused ) ); 45 | } 46 | 47 | @property( atomic, readonly ) NSMutableDictionary * sections; 48 | 49 | + ( ManualHelper * )sharedInstance; 50 | - ( void )getAllManualPages; 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+Private.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+Private.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | #import "MainWindowController.h" 37 | 38 | @interface MainWindowController( Private ) 39 | 40 | - ( void )didEndSheet: ( NSWindow * )sheet returnCode: ( NSInteger )returnCode contextInfo: ( void * )contextInfo; 41 | - ( void )sectionsMenuSelectionDidChange: ( id )sender; 42 | - ( void )mainWindowDidResize: ( NSNotification * )notification; 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Manual/Classes/ApplicationDelegate.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header ApplicationDelegate.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @class AboutWindowController; 37 | @class MainWindowController; 38 | 39 | @interface ApplicationDelegate: NSObject 40 | { 41 | @protected 42 | 43 | AboutWindowController * _aboutWindowController; 44 | MainWindowController * _mainWindowController; 45 | 46 | @private 47 | 48 | id _ApplicationDelegate_Reserved[ 5 ] __attribute__( ( unused ) ); 49 | } 50 | 51 | - ( IBAction)showAboutWindow: ( id )sender; 52 | 53 | @end 54 | -------------------------------------------------------------------------------- /Manual/Classes/SearchField.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file SearchField.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "SearchField.h" 41 | #import "SearchFieldProtocol.h" 42 | 43 | @implementation SearchField 44 | 45 | - ( void )textDidChange: ( NSNotification * )notification 46 | { 47 | //NSLOG_FUNCNAME; 48 | 49 | ( void )notification; 50 | 51 | if( self.delegate != nil && [ self.delegate respondsToSelector: @selector( searchFieldValueDidChange: ) ] ) 52 | { 53 | [ self.delegate performSelector: @selector( searchFieldValueDidChange: ) ]; 54 | } 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /Manual/Classes/ManualPage.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header ManualPage.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @interface ManualPage: NSObject 37 | { 38 | @protected 39 | 40 | NSString * _section; 41 | NSString * _name; 42 | NSString * _about; 43 | NSString * _contents; 44 | NSUInteger _contentsWidth; 45 | 46 | @private 47 | 48 | id _Manual_Reserved[ 5 ] __attribute__( ( unused ) ); 49 | } 50 | 51 | @property( atomic, readonly ) NSString * section; 52 | @property( atomic, readonly ) NSString * name; 53 | @property( atomic, readonly ) NSString * about; 54 | @property( atomic, readonly ) NSString * contents; 55 | 56 | + ( ManualPage * )manualWithName: ( NSString * )n section: ( NSString * )s; 57 | - ( id )initWithName: ( NSString * )n section: ( NSString * )s; 58 | - ( NSString * )contentsForWidth: ( NSUInteger )width; 59 | 60 | @end 61 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+SearchFieldDelegate.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file MainWindowController+SearchFieldDelegate.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "MainWindowController+SearchFieldDelegate.h" 41 | #import "MainWindowController+NSOutlineViewDelegate.h" 42 | 43 | @implementation MainWindowController( SearchFieldDelegate ) 44 | 45 | - ( void )searchFieldValueDidChange: ( SearchField * )searchField 46 | { 47 | //NSLOG_FUNCNAME; 48 | 49 | NSNotification * nilNotify = nil; 50 | 51 | ( void )searchField; 52 | 53 | [ _outlineView reloadData ]; 54 | 55 | _outlineViewShouldNotBecomeFirstResponder = YES; 56 | 57 | [ self outlineViewSelectionDidChange: nilNotify ]; 58 | 59 | _outlineViewShouldNotBecomeFirstResponder = NO; 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /Manual/Classes/AboutWindowController.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | // uncomment this to log the class/method name in each method 31 | //#define LOGFUNCNAME 32 | 33 | #import "Debug.h" 34 | #import "AboutWindowController.h" 35 | #import "BackgroundView.h" 36 | 37 | @implementation AboutWindowController 38 | 39 | @synthesize backgroundView = _backgroundView; 40 | @synthesize versionText = _versionText; 41 | 42 | - ( id )init 43 | { 44 | //NSLOG_FUNCNAME; 45 | 46 | return [ self initWithWindowNibName: @"AboutWindow" owner: self ]; 47 | } 48 | 49 | - ( void )dealloc 50 | { 51 | //NSLOG_FUNCNAME; 52 | 53 | [ _backgroundView release ]; 54 | [ _versionText release ]; 55 | 56 | [ super dealloc ]; 57 | } 58 | 59 | - ( void )awakeFromNib 60 | { 61 | NSString * version; 62 | 63 | version = [ [ [ NSBundle mainBundle ] infoDictionary ] objectForKey: @"CFBundleShortVersionString" ]; 64 | 65 | _backgroundView.backgroundColor = [ NSColor whiteColor ]; 66 | _versionText.stringValue = [ NSString stringWithFormat: NSLocalizedString( @"Version", nil ), version ]; 67 | } 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController.h 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | @interface MainWindowController: NSWindowController 37 | { 38 | @protected 39 | 40 | NSWindow * _loadingWindow; 41 | NSProgressIndicator * _progressBar; 42 | NSOutlineView * _outlineView; 43 | NSSearchField * _searchField; 44 | NSPopUpButton * _sectionsMenu; 45 | NSTextView * _textView; 46 | NSTextField * _label; 47 | NSMutableArray * _cells; 48 | NSArray * _sections; 49 | NSInteger _currentSection; 50 | BOOL _outlineViewShouldNotBecomeFirstResponder; 51 | 52 | @private 53 | 54 | id _MainWindowController_Reserved[ 5 ] __attribute__( ( unused ) ); 55 | } 56 | 57 | @property( nonatomic, readwrite, retain ) IBOutlet NSWindow * loadingWindow; 58 | @property( nonatomic, readwrite, retain ) IBOutlet NSProgressIndicator * progressBar; 59 | @property( nonatomic, readwrite, retain ) IBOutlet NSOutlineView * outlineView; 60 | @property( nonatomic, readwrite, retain ) IBOutlet NSSearchField * searchField; 61 | @property( nonatomic, readwrite, retain ) IBOutlet NSPopUpButton * sectionsMenu; 62 | @property( nonatomic, readwrite, retain ) IBOutlet NSTextView * textView; 63 | @property( nonatomic, readwrite, retain ) IBOutlet NSTextField * label; 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+Private.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file MainWindowController+Private.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "MainWindowController+Private.h" 41 | #import "MainWindowController+NSOutlineViewDelegate.h" 42 | 43 | @implementation MainWindowController( Private ) 44 | 45 | - ( void )didEndSheet: ( NSWindow * )sheet returnCode: ( NSInteger )returnCode contextInfo: ( void * )contextInfo 46 | { 47 | //NSLOG_FUNCNAME; 48 | ( void )sheet; 49 | ( void )returnCode; 50 | ( void )contextInfo; 51 | 52 | [ sheet orderOut: self ]; 53 | } 54 | 55 | - ( void )sectionsMenuSelectionDidChange: ( id )sender 56 | { 57 | //NSLOG_FUNCNAME; 58 | 59 | ( void )sender; 60 | 61 | NSNotification *nilNotify = nil; 62 | 63 | _currentSection = [ ( NSPopUpButton * )sender selectedTag ]; 64 | 65 | [ _outlineView reloadData ]; 66 | [ _outlineView selectRowIndexes: [ NSIndexSet indexSetWithIndex: 0 ] byExtendingSelection: NO ]; 67 | [ self outlineViewSelectionDidChange: nilNotify ]; 68 | 69 | self.window.title = [ NSString stringWithFormat: @"%@ - %@", NSLocalizedString( @"WindowTitle", nil ), _sectionsMenu.selectedItem.title ]; 70 | } 71 | 72 | - ( void )mainWindowDidResize: ( NSNotification * )notification 73 | { 74 | //NSLOG_FUNCNAME; 75 | 76 | [ self outlineViewSelectionDidChange: notification ]; 77 | } 78 | 79 | @end 80 | -------------------------------------------------------------------------------- /Manual.xcodeproj/xcshareddata/xcschemes/Manual.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /Manual/UI/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file Localizable.strings 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | "AllSections" = "All sections"; 37 | "Section" = "Section %@"; 38 | "Section-1" = "General user commands"; 39 | "Section-1m" = "DTrace tools"; 40 | "Section-1ssl" = "OpenSSL tools"; 41 | "Section-1tcl" = "Tcl tools"; 42 | "Section-2" = "UNIX system calls"; 43 | "Section-3" = "C library routines"; 44 | "Section-3cc" = "Common Crypto API"; 45 | "Section-3pcap" = "Packet capture library"; 46 | "Section-3pm" = "Perl modules"; 47 | "Section-3ssl" = "OpenSSL library routines"; 48 | "Section-3tcl" = "Tcl/Tk library routines"; 49 | "Section-3x" = "Curses-related library routines"; 50 | "Section-4" = "Special files and sockets"; 51 | "Section-5" = "File formats and conventions"; 52 | "Section-5ssl" = "SSL-specific configuration file formats"; 53 | "Section-6" = "Games"; 54 | "Section-7" = "Miscellaneous documentation"; 55 | "Section-7ssl" = "Miscellaneous SSL documentation"; 56 | "Section-8" = "System administration tools and techniques"; 57 | "Section-9" = "Kernel and programming style"; 58 | "Section-n" = "Tcl/Tk"; 59 | "Section-ntcl" = "Tcl/Tk"; 60 | "Section-plist" = "Property lists"; 61 | "Section-legacy" = "Legacy documentation"; 62 | "UnknownSection" = "Unknown section"; 63 | "WindowTitle" = "Manual Pages"; 64 | "Version" = "Version %@"; 65 | -------------------------------------------------------------------------------- /Manual/Classes/Debug.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @header MainWindowController+NSOutlineViewDelegate.h 32 | * @copyright (c) 2013, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // 37 | // Debug.h 38 | // Manual 39 | // 40 | // Created by Marty Turner on 19/05/2014. 41 | // Copyright (c) 2014 DigiDNA. All rights reserved. 42 | // 43 | 44 | // 45 | // There are four basic ways to use the LOGFUNCNAME/NSLOG_FUNCAME macros: 46 | // 47 | // 1. At the top of a source-file. This will cause all functions in the .m file 48 | // to emit their function names using NSLog in the console output window. 49 | // Note that by default the LOGFUNCNAME macro has been defined in all 50 | // functions within this project. 51 | // 52 | // 2. Set LOGFUNCNAME just in a given function. This can allow you to see 53 | // function call traffic in oft unused functions thus allowing them to be 54 | // traced when called. 55 | // 56 | // 3. Unset LOGFUNCNAME in functions that are frequently called. This will 57 | // lessen the output to the console (and speed up the execution of the 58 | // program). 59 | // 60 | // 4. Set or Unset LOGFUNCNAME at the top of the source file. This will allow 61 | // seeing (or not0 call to all functions in the source file. 62 | // 63 | // 5, In Project or Target at the project level, in the "Preprocessor" section 64 | // set LOGFUNCNAME=1 65 | // 66 | // TBD Note too that defining a DEBUG or RELEASE build in the project will 67 | // turn on or off respectively LOGFUNCNAME output for the entire project. 68 | // For performance reasons, it is best to NOT use function call logging in a 69 | // production (i.e. RELASE) build. 70 | // 71 | 72 | #import 73 | 74 | @interface Debug : NSObject 75 | 76 | #if defined(LOGFUNCNAME) && defined(DEBUG) 77 | #define NSLOG_FUNCNAME NSLog(@"%s", __PRETTY_FUNCTION__) 78 | #else // DEBUG 79 | #define NSLOG_FUNCNAME 80 | #endif // LOGFUNCNAME 81 | 82 | @end 83 | -------------------------------------------------------------------------------- /Manual/Classes/BackgroundView.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | // uncomment this to log the class/method name in each method 31 | //#define LOGFUNCNAME 32 | 33 | #import "Debug.h" 34 | #import "BackgroundView.h" 35 | 36 | @implementation BackgroundView 37 | 38 | - ( void )dealloc 39 | { 40 | //NSLOG_FUNCNAME; 41 | 42 | [ _backgroundColor release ]; 43 | [ _borderColor release ]; 44 | 45 | [ super dealloc ]; 46 | } 47 | 48 | - ( NSColor * )backgroundColor 49 | { 50 | //NSLOG_FUNCNAME; 51 | 52 | @synchronized( self ) 53 | { 54 | return _backgroundColor; 55 | } 56 | } 57 | 58 | - ( void )setBackgroundColor: ( NSColor * )color 59 | { 60 | //NSLOG_FUNCNAME; 61 | 62 | @synchronized( self ) 63 | { 64 | if( color != _backgroundColor ) 65 | { 66 | [ _backgroundColor release ]; 67 | 68 | _backgroundColor = [ color retain ]; 69 | 70 | [ self setNeedsDisplay: YES ]; 71 | } 72 | } 73 | } 74 | 75 | - ( NSColor * )borderColor 76 | { 77 | //NSLOG_FUNCNAME; 78 | 79 | @synchronized( self ) 80 | { 81 | return _borderColor; 82 | } 83 | } 84 | 85 | - ( void )setBorderColor: ( NSColor * )color 86 | { 87 | //NSLOG_FUNCNAME; 88 | 89 | @synchronized( self ) 90 | { 91 | if( color != _borderColor ) 92 | { 93 | [ _borderColor release ]; 94 | 95 | _borderColor = [ color retain ]; 96 | 97 | [ self setNeedsDisplay: YES ]; 98 | } 99 | } 100 | } 101 | 102 | - ( void )drawRect: ( NSRect )rect 103 | { 104 | //NSLOG_FUNCNAME; 105 | 106 | if( _backgroundColor != nil ) 107 | { 108 | [ _backgroundColor setFill ]; 109 | 110 | NSRectFill( rect ); 111 | } 112 | 113 | if( _borderColor != nil ) 114 | { 115 | { 116 | NSBezierPath * path; 117 | NSGradient * gradient; 118 | NSRect subrect; 119 | 120 | subrect = rect; 121 | subrect.origin.x += 1; 122 | subrect.origin.y += 1; 123 | subrect.size.width -= 2; 124 | subrect.size.height -= 2; 125 | 126 | path = [ NSBezierPath bezierPathWithRect: rect ]; 127 | 128 | [ path appendBezierPath: [ NSBezierPath bezierPathWithRect: subrect ] ]; 129 | [ path setWindingRule: NSEvenOddWindingRule ]; 130 | 131 | gradient = [ [ NSGradient alloc ] initWithColorsAndLocations: _borderColor, ( CGFloat )0, nil ]; 132 | 133 | [ gradient drawInBezierPath: path angle: ( CGFloat )0 ]; 134 | [ gradient release ]; 135 | } 136 | } 137 | 138 | [ super drawRect: rect ]; 139 | } 140 | 141 | @end 142 | -------------------------------------------------------------------------------- /Manual/Classes/ApplicationDelegate.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file ApplicationDelegate.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class;method in a methods in this source file 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "ApplicationDelegate.h" 41 | #import "AboutWindowController.h" 42 | #import "MainWindowController.h" 43 | 44 | @implementation ApplicationDelegate 45 | 46 | - ( void )dealloc 47 | { 48 | //NSLOG_FUNCNAME; 49 | [ _aboutWindowController release ]; 50 | [ _mainWindowController release ]; 51 | 52 | [ super dealloc ]; 53 | } 54 | 55 | - ( void )applicationDidFinishLaunching: ( NSNotification * )notification 56 | { 57 | //NSLOG_FUNCNAME; 58 | 59 | //TODO006 - attempt to stop right margin truncation when printed 60 | //TODO007 - setVerticalPagination needed to be NSAutoPagination 61 | NSPrintInfo *currentNSPrintInfo = [NSPrintInfo sharedPrintInfo]; 62 | [currentNSPrintInfo setHorizontalPagination:NSFitPagination]; 63 | [currentNSPrintInfo setVerticalPagination:NSAutoPagination]; 64 | 65 | ( void )notification; 66 | 67 | _mainWindowController = [ MainWindowController new ]; 68 | 69 | [ _mainWindowController.window center ]; 70 | [ _mainWindowController showWindow: nil ]; 71 | } 72 | 73 | - ( NSApplicationTerminateReply )applicationShouldTerminate: ( NSApplication * )sender 74 | { 75 | //NSLOG_FUNCNAME; 76 | 77 | ( void )sender; 78 | 79 | return NSTerminateNow; 80 | } 81 | 82 | - ( BOOL )applicationShouldTerminateAfterLastWindowClosed: ( NSApplication * )sender 83 | { 84 | //NSLOG_FUNCNAME; 85 | 86 | ( void )sender; 87 | 88 | return YES; 89 | } 90 | 91 | - ( IBAction)showAboutWindow: ( id )sender 92 | { 93 | //NSLOG_FUNCNAME; 94 | 95 | if( _aboutWindowController == nil ) 96 | { 97 | _aboutWindowController = [ AboutWindowController new ]; 98 | } 99 | 100 | [ _aboutWindowController.window center ]; 101 | [ _aboutWindowController showWindow: sender ]; 102 | } 103 | 104 | - ( BOOL )applicationWillTerminate: ( NSApplication * )sender 105 | { 106 | //NSLOG_FUNCNAME; 107 | 108 | ( void )sender; 109 | 110 | return YES; 111 | } 112 | 113 | - ( BOOL )applicationDidHide: ( NSApplication * )sender 114 | { 115 | //NSLOG_FUNCNAME; 116 | 117 | ( void )sender; 118 | 119 | return YES; 120 | } 121 | 122 | - ( BOOL )applicationDidUnhide: ( NSApplication * )sender 123 | { 124 | //NSLOG_FUNCNAME; 125 | 126 | ( void )sender; 127 | 128 | return YES; 129 | } 130 | 131 | - ( BOOL )applicationDidResignActive: ( NSApplication * )sender 132 | { 133 | //NSLOG_FUNCNAME; 134 | 135 | ( void )sender; 136 | 137 | return YES; 138 | } 139 | 140 | - ( BOOL )applicationDidBecomeActive: ( NSApplication * )sender 141 | { 142 | //NSLOG_FUNCNAME; 143 | 144 | ( void )sender; 145 | 146 | return YES; 147 | } 148 | 149 | 150 | @end 151 | -------------------------------------------------------------------------------- /todo.md: -------------------------------------------------------------------------------- 1 | #Todo Items 2 | 3 | The items in this document outline work still to be done (bugs or enhancements); the following sections outline the work-item structure. Note that "ToDo" items include bugs or new/changed features (bugs will normally be higher priority). 4 | 5 | **Note** that as of 2014/09/01 a Bugzilla database has been created and will be maintained by Marty Turner on one of his local systems; from here on, BZ numbers will be included in work items. 6 | 7 | ##Introduction 8 | 9 | This simple "to do list" is to be used to not only track improvements or fixes to the code, but also as a placeholder for planned activities so that all developers involved are aware of what is being planned. Additions, changes, or deletions (hopefully first discussed before doing so on the latter) are welcome by any participants in the project. 10 | 11 | The proposed priority scheme which would allow better handling of any "to do work" is as follows: 12 | 13 | **URGENT** this category will not exist in this project due to the fact it exists in Github. 14 | 15 | **HIGH** The identified work item is deemed to be high priority. If at all possible, the work item will be included in the next release of the project contents. 16 | 17 | **MEDIUM** the identified work is deemed to be medium priority. It will be included only if the developers in the project believe that it is important enough to spend time on (which should elevate it to HIGH priority) 18 | 19 | **LOW** the identified work item is deemed to be low priority. It will most likely only be included when escalated to a MEDIUM or a HIGH priority (or if the project developers involved are learning the code or just bored ;-) ). 20 | 21 | ##Open Work Items 22 | 23 | **TODO003**: Sort the "All Selections" drop-down so they are easier to read. (LOW) 24 | 25 | **TODO008** The Search function (upper right of main window) can be very slow. This is because as one types, the searched man pages are continually refreshed. This can result in viewing a very slow list in the left most window pane. (Bugzilla 10) 26 | 27 | **TODO009** Manual displays only the first man page when duplicate man pages exist. (A simple example of this can be created by installing multiple copies of Xcode, using makewhatis to build whatis databases in each man directory, and then adding those other whatis databases to /etc/man.conf.) (Bugzilla 11) 28 | 29 | ##Completed Work Items 30 | 31 | **TODO001**: Add a print facility per accepted Apple UI conventions. (HIGH) 32 | *This was already in place as of version 1.02 courtesy of the author but did not work in version 1.01 (the File > Print selection was greyed out and thus unelectable).* *Fixed in 1.0.2*. 33 | 34 | **TODO002**: Modify Edit > Find to hold the found selection highlighting longer than it is now (less than .5 sec or less so it seems). This will help denote the found item much better. (HIGH) COMPLETED 2014/05/17 *Fixed in 1.0.3*. 35 | 36 | **TODO006**: The "Print" function is truncating paragraph text on the right margin of the printed output. **NOTE** that setting **MANWIDTH** other than its default is **NOT** a soliton to this problem as that causes print formatting problems.) (HIGH) COMPLETED 20140830 *Fixed in 1.0.4*. 37 | 38 | **TODO007** Print very narrow only on some displayed man pages after fix for 39 | TODO006 (Bugzilla 9). While most man page text output continued to 40 | print correctly after TODO006, some (such as a2p/a2x), were printed out as 41 | a very long/narrow column (small font) which was almost unreadable. (HIGH) COMPLETED 20140915 Bugzilla 9 "Fixed in 1.0.5" 42 | 43 | **TODO004**: Determine/fix why "xcodebuild" man is not found when "xcode-select" is. Determine what else might be missing as well and fix that too. (MEDIUM) COMPLETED 20140923 Bugzilla 6 "Fixed in 1.0.5" 44 | 45 | **TODO005**: Determine/fix why the MacPorts "man port" is not found. (LOW) COMPLETED 2014/09/23 Bugzilla 7 "Fixed in 1.0.5" (duplicate of TODO004) 46 | 47 | ##Test Plan 48 | 49 | Presently, the test plan can be considered as very loosely planned. The currently assigned developer (Marty Turner) has tested each version release of this project on Snow Leopard (10.6), Lion (10.7), Mountain Lion (10.8), Mavericks (10.9) and Yosemite (10.10). As subsequent Mac OS X versions are released by Apple, they will be added to this list. 50 | 51 | ###Testing Scope 52 | The planned testing involves manually testing and observation of key features of the Manual application. That is, simply navigating through each series of key user interface features and noting visually if they work as expected. There is currently no plan to create a series of documented test steps; the assumption will be that the developer or developers involved know enough about the functionality of the project to test it in a "reasonably" thorough manner. Although it is a good idea to formally document test procedures, it is not within the scope of the support of this project based on its current state as accessible in Github. 53 | 54 | **Note** that as of 2014/09/01 all bugs, features, and issues related to the project will be documented in a Bugzilla database; some means of making it available here will be performed as time permits (else, contact the developer). 55 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+NSOutlineViewDelegate.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file MainWindowController+NSOutlineViewDelegate.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "MainWindowController+NSOutlineViewDelegate.h" 41 | #import "ManualPage.h" 42 | 43 | @implementation MainWindowController( NSOutlineViewDelegate ) 44 | 45 | - ( void )outlineViewSelectionDidChange: ( NSNotification * )notification 46 | { 47 | //NSLOG_FUNCNAME; 48 | 49 | NSCell * cell; 50 | ManualPage * page; 51 | NSString * contents; 52 | NSMutableArray * lines; 53 | NSString * line; 54 | NSMutableAttributedString * attributedLine; 55 | NSMutableAttributedString * attributedContents; 56 | 57 | ( void )notification; 58 | 59 | if( [ _cells count ] == 0 ) 60 | { 61 | return; 62 | } 63 | 64 | cell = [ _cells objectAtIndex: ( NSUInteger )[ _outlineView selectedRow ] ]; 65 | page = ( ManualPage * )cell.representedObject; 66 | contents = [ page contentsForWidth: ( NSUInteger )( _textView.frame.size.width / 6 ) ]; 67 | lines = [ [ contents componentsSeparatedByString: @"\n" ] mutableCopy ]; 68 | attributedContents = [ [ NSMutableAttributedString alloc ] init ]; 69 | 70 | [ _label setStringValue: [ NSString stringWithFormat: @"%@ (%@) - %@", page.name, page.section, page.about ] ]; 71 | 72 | for( line in lines ) 73 | { 74 | attributedLine = [ [ NSMutableAttributedString alloc ] initWithString: [ line stringByAppendingString: @"\n" ] ]; 75 | 76 | if( [ line length ] > 0 && ( [ line characterAtIndex: 0 ] == 9 || [ line characterAtIndex: 0 ] == 32 ) ) 77 | { 78 | [ attributedLine removeAttribute: NSFontAttributeName range: NSMakeRange( 0, [ attributedLine length ] ) ]; 79 | [ attributedLine addAttribute: NSFontAttributeName value: [ NSFont fontWithName: @"Menlo" size: ( CGFloat )10 ] range: NSMakeRange( 0, [ attributedLine length ] ) ]; 80 | } 81 | else 82 | { 83 | [ attributedLine removeAttribute: NSFontAttributeName range: NSMakeRange( 0, [ attributedLine length ] ) ]; 84 | [ attributedLine addAttribute: NSFontAttributeName value: [ NSFont boldSystemFontOfSize: ( CGFloat )12 ] range: NSMakeRange( 0, [ attributedLine length ] ) ]; 85 | } 86 | 87 | [ attributedContents insertAttributedString: attributedLine atIndex: [ attributedContents length ] ]; 88 | [ attributedLine release ]; 89 | } 90 | 91 | [ _textView.textStorage setAttributedString: attributedContents ]; 92 | 93 | // Make sure the highlight stays even though we have set incremental searching in the xib 94 | NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:_textView.selectedTextAttributes]; 95 | [dict setObject:[NSColor blackColor] forKey:@"NSColor"]; 96 | [dict setObject:[NSColor yellowColor] forKey:@"NSBackgroundColor"]; 97 | _textView.selectedTextAttributes = dict; 98 | 99 | [ lines release ]; 100 | [ attributedContents release ]; 101 | 102 | if( _outlineViewShouldNotBecomeFirstResponder == NO ) 103 | { 104 | [ _outlineView becomeFirstResponder ]; 105 | [ self.window makeFirstResponder: _outlineView ]; 106 | } 107 | } 108 | 109 | @end 110 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController+NSOutlineViewDataSource.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file MainWindowController+NSOutlineViewDataSource.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "MainWindowController+NSOutlineViewDataSource.h" 41 | #import "ManualHelper.h" 42 | #import "ManualPage.h" 43 | #import "ManualCell.h" 44 | 45 | @implementation MainWindowController( NSOutlineViewDataSource ) 46 | 47 | - ( NSInteger )outlineView: ( NSOutlineView * )outlineView numberOfChildrenOfItem: ( id )item 48 | { 49 | //NSLOG_FUNCNAME; 50 | 51 | NSMutableArray * pages; 52 | NSDictionary * sections; 53 | NSString * section; 54 | ManualPage * page; 55 | NSCell * cell; 56 | NSRange range; 57 | 58 | ( void )outlineView; 59 | 60 | [ _cells removeAllObjects ]; 61 | 62 | if( item != nil ) 63 | { 64 | return 0; 65 | } 66 | 67 | sections = [ [ ManualHelper sharedInstance ] sections ]; 68 | 69 | if( _sectionsMenu.selectedTag == -1 ) 70 | { 71 | pages = [ NSMutableArray arrayWithCapacity: 1000 ]; 72 | 73 | for( section in sections ) 74 | { 75 | [ pages addObjectsFromArray: [ sections objectForKey: section ] ]; 76 | 77 | if( _currentSection != -1 ) 78 | { 79 | [ pages sortUsingComparator: ^( id obj1, id obj2 ) 80 | { 81 | ManualPage * p1; 82 | ManualPage * p2; 83 | 84 | p1 = ( ManualPage * )obj1; 85 | p2 = ( ManualPage * )obj2; 86 | 87 | return [ p1.name caseInsensitiveCompare: p2.name ]; 88 | } 89 | ]; 90 | } 91 | } 92 | } 93 | else 94 | { 95 | pages = [ sections objectForKey: [ _sections objectAtIndex: ( NSUInteger )( _sectionsMenu.selectedTag ) ] ]; 96 | } 97 | 98 | for( page in pages ) 99 | { 100 | if( _searchField.stringValue.length > 0 ) 101 | { 102 | range = [ page.name rangeOfString: _searchField.stringValue options: NSCaseInsensitiveSearch ]; 103 | 104 | if( range.length == 0 ) 105 | { 106 | continue; 107 | } 108 | } 109 | 110 | cell = [ ManualCell new ]; 111 | cell.representedObject = page; 112 | 113 | [ _cells addObject: cell ]; 114 | [ cell release ]; 115 | } 116 | 117 | return ( NSInteger )[ _cells count ]; 118 | } 119 | 120 | - ( BOOL )outlineView: ( NSOutlineView * )outlineView isItemExpandable: ( id )item 121 | { 122 | //NSLOG_FUNCNAME; 123 | 124 | ( void )outlineView; 125 | ( void )item; 126 | 127 | return NO; 128 | } 129 | 130 | - ( id )outlineView: ( NSOutlineView * )outlineView child: ( NSInteger )index ofItem: ( id )item 131 | { 132 | //NSLOG_FUNCNAME; 133 | 134 | ( void )outlineView; 135 | ( void )item; 136 | 137 | if( item != nil ) 138 | { 139 | return nil; 140 | } 141 | 142 | return [ _cells objectAtIndex: ( NSUInteger )index ]; 143 | } 144 | 145 | - ( id )outlineView: ( NSOutlineView * )outlineView objectValueForTableColumn: ( NSTableColumn * )tableColumn byItem: ( id )item 146 | { 147 | //NSLOG_FUNCNAME; 148 | 149 | NSCell * cell; 150 | ManualPage * page; 151 | 152 | ( void )outlineView; 153 | ( void )tableColumn; 154 | 155 | cell = ( NSCell * )item; 156 | page = ( ManualPage * )cell.representedObject; 157 | 158 | if( [ _sectionsMenu selectedTag ] == -1 ) 159 | { 160 | return [ NSString stringWithFormat: @"%@ (%@)", page.name, page.section ]; 161 | } 162 | 163 | return page.name; 164 | } 165 | 166 | @end 167 | -------------------------------------------------------------------------------- /Manual/Classes/ManualHelper.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file ManualHelper.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "ManualHelper.h" 41 | #import "ManualPage.h" 42 | 43 | static ManualHelper * __sharedInstance = nil; 44 | 45 | @implementation ManualHelper 46 | 47 | @synthesize sections = _sections; 48 | 49 | + ( ManualHelper * )sharedInstance 50 | { 51 | //NSLOG_FUNCNAME; 52 | 53 | @synchronized( self ) 54 | { 55 | if( __sharedInstance == nil ) 56 | { 57 | __sharedInstance = [ [ super allocWithZone: NULL ] init ]; 58 | } 59 | } 60 | 61 | return __sharedInstance; 62 | } 63 | 64 | + ( id )allocWithZone:( NSZone * )zone 65 | { 66 | //NSLOG_FUNCNAME; 67 | 68 | ( void )zone; 69 | 70 | @synchronized( self ) 71 | { 72 | return [ [ self sharedInstance ] retain ]; 73 | } 74 | } 75 | 76 | - ( id )copyWithZone:( NSZone * )zone 77 | { 78 | //NSLOG_FUNCNAME; 79 | 80 | ( void )zone; 81 | 82 | return self; 83 | } 84 | 85 | - ( id )retain 86 | { 87 | //NSLOG_FUNCNAME; 88 | 89 | return self; 90 | } 91 | 92 | - ( NSUInteger )retainCount 93 | { 94 | //NSLOG_FUNCNAME; 95 | 96 | return UINT_MAX; 97 | } 98 | 99 | - ( oneway void )release 100 | { } 101 | 102 | - ( id )autorelease 103 | { 104 | //NSLOG_FUNCNAME; 105 | 106 | return self; 107 | } 108 | 109 | - ( id )init 110 | { 111 | //NSLOG_FUNCNAME; 112 | 113 | if( ( self = [ super init ] ) ) 114 | { 115 | _sections = [ [ NSMutableDictionary dictionaryWithCapacity: 25 ] retain ]; 116 | } 117 | 118 | return self; 119 | } 120 | 121 | - ( void )dealloc 122 | { 123 | //NSLOG_FUNCNAME; 124 | 125 | [ _sections release ]; 126 | 127 | [ super dealloc ]; 128 | } 129 | 130 | - ( void )getAllManualPages 131 | { 132 | //NSLOG_FUNCNAME; 133 | 134 | NSTask * task; 135 | NSPipe * p; 136 | NSData * data; 137 | NSString * str; 138 | NSArray * lines; 139 | NSString * line; 140 | NSString * man; 141 | NSString * section; 142 | ManualPage * manual; 143 | NSRange range; 144 | 145 | @autoreleasepool 146 | { 147 | task = [ NSTask new ]; 148 | p = [ NSPipe pipe ]; 149 | 150 | [ task setLaunchPath: @"/bin/zsh" ]; 151 | [ task setArguments: [ NSArray arrayWithObjects: @"-cl", @"apropos . | awk '{print $1}'", nil ] ]; 152 | [ task setStandardOutput: p ]; 153 | 154 | [ task launch ]; 155 | 156 | data = [ [ p fileHandleForReading ] readDataToEndOfFile ]; 157 | 158 | [ task waitUntilExit ]; 159 | 160 | str = [ [ NSString alloc ] initWithData: data encoding: NSUTF8StringEncoding ]; 161 | lines = [ str componentsSeparatedByString: @"\n" ]; 162 | lines = [ lines sortedArrayUsingSelector: @selector( localizedCaseInsensitiveCompare: ) ]; 163 | 164 | for( line in lines ) 165 | { 166 | if( [ line length ] == 0 ) 167 | { 168 | continue; 169 | } 170 | 171 | range = [ line rangeOfString: @"(" options: NSBackwardsSearch ]; 172 | 173 | @try 174 | { 175 | man = [ line substringToIndex: range.location ]; 176 | section = [ line substringFromIndex: range.location + 1 ]; 177 | range = [ section rangeOfString: @")" ]; 178 | section = [ section substringToIndex: range.location ]; 179 | } 180 | @catch( NSException * e ) 181 | { 182 | ( void )e; 183 | 184 | continue; 185 | } 186 | 187 | if( [ _sections objectForKey: section ] == nil ) 188 | { 189 | [ _sections setObject: [ NSMutableArray arrayWithCapacity: 100 ] forKey: section ]; 190 | } 191 | 192 | manual = [ ManualPage manualWithName: man section: section ]; 193 | 194 | [ [ _sections objectForKey: section ] addObject: manual ]; 195 | } 196 | } 197 | } 198 | 199 | @end 200 | -------------------------------------------------------------------------------- /Manual/Classes/ManualPage.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file ManualPage.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class/method name in each method 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "ManualPage.h" 41 | 42 | @implementation ManualPage 43 | 44 | @synthesize section = _section; 45 | @synthesize name = _name; 46 | 47 | 48 | + ( ManualPage * )manualWithName: ( NSString * )n section: ( NSString * )s 49 | { 50 | //NSLOG_FUNCNAME; 51 | 52 | ManualPage * man; 53 | 54 | man = [ [ ManualPage alloc ] initWithName: n section: s ]; 55 | 56 | return [ man autorelease ]; 57 | } 58 | 59 | - ( id )init 60 | { 61 | //NSLOG_FUNCNAME; 62 | 63 | if( ( self = [ super init ] ) ) 64 | { 65 | _contentsWidth = 80; 66 | } 67 | 68 | return self; 69 | } 70 | 71 | - ( id )initWithName: ( NSString * )n section: ( NSString * )s 72 | { 73 | //NSLOG_FUNCNAME; 74 | 75 | if( ( self = [ self init ] ) ) 76 | { 77 | _section = [ s copy ]; 78 | _name = [ n copy ]; 79 | } 80 | 81 | return self; 82 | } 83 | 84 | - ( void )dealloc 85 | { 86 | //NSLOG_FUNCNAME; 87 | 88 | [ _section release ]; 89 | [ _name release ]; 90 | [ _about release ]; 91 | [ _contents release ]; 92 | 93 | [ super dealloc ]; 94 | } 95 | 96 | - ( NSString * )description 97 | { 98 | //NSLOG_FUNCNAME; 99 | 100 | return [ [ super description ] stringByAppendingFormat: @" - %@ (%@)", _name, _section ]; 101 | } 102 | 103 | - ( NSString * )contentsForWidth: ( NSUInteger )width 104 | { 105 | //NSLOG_FUNCNAME; 106 | 107 | _contentsWidth = width; 108 | 109 | return self.contents; 110 | } 111 | 112 | - ( NSString * )contents 113 | { 114 | //NSLOG_FUNCNAME; 115 | 116 | NSTask * t; 117 | NSPipe * p; 118 | NSData * d; 119 | NSString * s; 120 | 121 | @autoreleasepool 122 | { 123 | t = [ NSTask new ]; 124 | p = [ NSPipe pipe ]; 125 | 126 | [ t setLaunchPath: @"/bin/zsh" ]; 127 | [ t setArguments: [ NSArray arrayWithObjects: @"-c", [ NSString stringWithFormat: @"man %@ %@ | col -b | awk '{print $0}'", _section, _name ], nil ] ]; 128 | [ t setStandardOutput: p ]; 129 | [ t setEnvironment: [ NSDictionary dictionaryWithObjectsAndKeys: [ NSString stringWithFormat: @"%lu", _contentsWidth ], @"MANWIDTH", nil ] ]; 130 | 131 | [ t launch ]; 132 | 133 | d = [ [ p fileHandleForReading ] readDataToEndOfFile ]; 134 | 135 | [ t waitUntilExit ]; 136 | 137 | s = [ [ NSString alloc ] initWithData: d encoding: NSUTF8StringEncoding ]; 138 | 139 | [ t release ]; 140 | 141 | _contents = s; 142 | 143 | return _contents; 144 | } 145 | } 146 | 147 | - ( NSString * )about 148 | { 149 | NSTask * t; 150 | NSPipe * p; 151 | NSData * d; 152 | NSString * s; 153 | NSArray * lines; 154 | NSRange range; 155 | 156 | @autoreleasepool 157 | { 158 | if( _about != nil ) 159 | { 160 | return _about; 161 | } 162 | 163 | t = [ NSTask new ]; 164 | p = [ NSPipe pipe ]; 165 | 166 | [ t setLaunchPath: @"/bin/zsh" ]; 167 | [ t setArguments: [ NSArray arrayWithObjects: @"-c", [ NSString stringWithFormat: @"whatis ^%@\\(%@\\)", _name, _section ], nil ] ]; 168 | [ t setStandardOutput: p ]; 169 | 170 | [ t launch ]; 171 | 172 | d = [ [ p fileHandleForReading ] readDataToEndOfFile ]; 173 | 174 | [ t waitUntilExit ]; 175 | 176 | s = [ [ NSString alloc ] initWithData: d encoding: NSUTF8StringEncoding ]; 177 | lines = [ s componentsSeparatedByString: @"\n" ]; 178 | 179 | [ s release ]; 180 | [ t release ]; 181 | 182 | s = [ lines objectAtIndex: 0 ]; 183 | range = [ s rangeOfString: @"- " ]; 184 | 185 | @try 186 | { 187 | s = [ s substringFromIndex: range.location + 1 ]; 188 | s = [ s stringByTrimmingCharactersInSet: [ NSCharacterSet whitespaceCharacterSet ] ]; 189 | } 190 | @catch( NSException * e ) 191 | { 192 | ( void )e; 193 | 194 | s = nil; 195 | } 196 | 197 | _about = [ s copy ]; 198 | 199 | return _about; 200 | } 201 | } 202 | 203 | @end 204 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Manual 2 | ====== 3 | 4 | [![Build Status](https://img.shields.io/travis/macmade/Manual.svg?branch=master&style=flat)](https://travis-ci.org/macmade/Manual) 5 | [![Issues](http://img.shields.io/github/issues/macmade/Manual.svg?style=flat)](https://github.com/macmade/Manual/issues) 6 | ![Status](https://img.shields.io/badge/status-active-brightgreen.svg?style=flat) 7 | ![License](https://img.shields.io/badge/license-bsd-brightgreen.svg?style=flat) 8 | [![Contact](https://img.shields.io/badge/contact-@macmade-blue.svg?style=flat)](https://twitter.com/macmade) 9 | [![Donate-Patreon](https://img.shields.io/badge/donate-patreon-yellow.svg?style=flat)](https://patreon.com/macmade) 10 | [![Donate-Gratipay](https://img.shields.io/badge/donate-gratipay-yellow.svg?style=flat)](https://www.gratipay.com/macmade) 11 | [![Donate-Paypal](https://img.shields.io/badge/donate-paypal-yellow.svg?style=flat)](https://paypal.me/xslabs) 12 | 13 | About 14 | ----- 15 | 16 | **Manual is a GUI front-end for viewing UNIX manual pages.** 17 | 18 | Manual automatically searches your computer for all available manuals, and displays them in a nice way, ordered by sections. 19 | 20 | **Features** 21 | - Live search for specific manual pages 22 | - Search and highlight in manual contents 23 | - Printing support 24 | - Filtering by sections 25 | 26 | Screenshot 27 | ---------- 28 | 29 | ![Screenshot](http://www.xs-labs.com/uploads/image/misc/manual.png) 30 | 31 | Project Status 32 | -------------- 33 | 34 | Manual used to be available on the AppStore, but was removed when the eosgarden.com website closed. 35 | 36 | It's now available freely on GitHub, and is maintained by [**Marty Turner**](http://www.linkedin.com/in/martyturner), who kindly proposed himself for this task. 37 | Thanks Martin : ) 38 | 39 | License 40 | ------- 41 | 42 | Manual is released under the terms of the [**BSD**](http://en.wikipedia.org/wiki/BSD_licenses) license. 43 | 44 | Repository Info 45 | ---------------- 46 | 47 | Owner: Jean-David Gadina - XS-Labs 48 | Maintainer: Marty Turner (Twitter @mdturner) 49 | Web: www.xs-labs.com 50 | Blog: www.noxeos.com 51 | Twitter: @macmade 52 | GitHub: github.com/macmade 53 | LinkedIn: ch.linkedin.com/in/macmade/ 54 | StackOverflow: stackoverflow.com/users/182676/macmade 55 | 56 | Installation 57 | ------------ 58 | If you would rather just run it rather than building Manual from its source, you can double click on the Manual.pkg file in the "Installation" directory and the installation of Manual will start (default /Applications on your Mac's main HDD). 59 | 60 | Man Pages Missing In Manual Displays 61 | -------------------------------------------------------- 62 | 63 | If you run into problems where Manual does not find it can find with the "man" command prompt command, then you will need to perform a few steps per the following paragraphs to investigate why this is so. 64 | 65 | 1. At a command prompt enter the following command to determine where the man page that you are trying to locate is and if the “whatis” database knows about it (i.e. one that that is not available via the Manual application): 66 | 67 | man -w man-page-name #shows the location where the man page should exist 68 | whatis man-page-name # whatis should know about it too 69 | 70 | 2. If a man page does exist using the above man or whatis command output, then the problem is most likely related to an out of date "whatis" database or an improperly set up /private/etc/man.conf file which defines to the man, whatis, and apropos commands where to look for man pages you are searching for. Also, if you use the MANPATH environment variable to locate man pages which you have set up yourself, then you may need to include the man page you are looking for with all the rest that the system man page locations in /private/etc/man.conf. Using the following “makewhatis” command, you can rebuild the "whatis" database(s) using the man page search hierarchy defined /private/etc/man.conf. (Note that makewhatis defaults to only rebuilding what you specify to it or defaults defined in /private/etc/man.conf): 71 | 72 | /usr/libexec/makewhatis -v (the “v” outputs extra info which may help) 73 | 74 | Example man page locations:

75 | /usr/share/man (system man page default location)

76 | /opt/share/man (used by MacPorts etc.)

77 | /Application/xcode.app…man (some versions of Xcode have newer man pages) 78 | 79 | 3. Once you have the man page lookup hierarchy set up to your expectations using the “makewhatis” command, then you can use the following "whatis" at a command prompt to determine if you have actually fixed the problem of a missing man page within the Manual application: 80 | 81 | whatis man-page-name 82 | 83 | 84 | Missing Man Page Example 85 | --------------------------------------- 86 | Another problem the Manual application maintainer ran in to was that the Xcode “xcodebuild” man page while accessible via “man -w xcodebuild” was not found with the “whatis’ command. Since the Manual application uses the “whatis” command to locate man page content, the xcodebuild man page output was not present in Manual.It turned out that the first few lines of the xcodebuild man page were corrupted; this could be seen in /usr/libexec/makewhatis output using the "-v" (verbose) option. The visible results were a message from makewhatis saying it encountered "junk" output. Once corrected, the xcodebuild man page could be once again be viewed via whatis (and thus, with the Manual application). 87 | 88 | Reporting Problems or Posing Queries 89 | ---------------------------- 90 | Should you find the need to report a problem, please provide the following minimal documentation so that your reported problem/query can be more quickly and accurately answered: 91 | 92 | 1. Provide a concise and as accurate as possible description of the problem and make sure you state what your exception is regarding what you want done or answered. 93 | 94 | 2. If reporting a problem, please provide [screen shots](http://support.apple.com/kb/ht5775) of what you see as a problem. 95 | 96 | 3. If reporting a problem or a query regarding how you think Manual might/should behave, then please provide a copy of your /Private/etc/man.conf file. 97 | 98 | 4. If reporting problem, please provide any contents you might have regarding the $MANPATH or related MAN environment variables (see man man for details). 99 | 100 | 5. If reporting a problem regarding a specific man page or pages, then please provide a 'man -w man-page-name' text copy of the pages in question. 101 | 102 | e.g. man -w sed

103 | /usr/share/man/man1/sed.1 104 | 105 | All of this relevant information should be provided when you first open your [issue](https://github.com/macmade/Manual/issues). 106 | 107 | Thanks in advance for your help; the information you provide should help accelerate a satisfactory response. 108 | 109 | Mac OS X Systems Verification 110 | ------------------------------------ 111 | Manual has been successfully tested on Mac OS X versions 10.6 (Snow Leopard) through 10.15 (Catalina). 112 | -------------------------------------------------------------------------------- /Manual/Classes/MainWindowController.m: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /*! 31 | * @file AboutWindowController.m 32 | * @copyright (c) 2013-2014, Jean-David Gadina - www.xs-labs.com 33 | * @abstract ... 34 | */ 35 | 36 | // uncomment this to log the class;method in a methods in this source file 37 | //#define LOGFUNCNAME 38 | 39 | #import "Debug.h" 40 | #import "MainWindowController.h" 41 | #import "MainWindowController+Private.h" 42 | #import "MainWindowController+NSOutlineViewDelegate.h" 43 | #import "MainWindowController+NSOutlineViewDataSource.h" 44 | #import "MainWindowController+SearchFieldDelegate.h" 45 | #import "ManualHelper.h" 46 | 47 | @implementation MainWindowController 48 | 49 | @synthesize loadingWindow = _loadingWindow; 50 | @synthesize progressBar = _progressBar; 51 | @synthesize outlineView = _outlineView; 52 | @synthesize searchField = _searchField; 53 | @synthesize sectionsMenu = _sectionsMenu; 54 | @synthesize textView = _textView; 55 | @synthesize label = _label; 56 | 57 | - ( id )init 58 | { 59 | //NSLOG_FUNCNAME; 60 | 61 | if( ( self = [ super initWithWindowNibName: @"MainWindow" ] ) ) 62 | { 63 | _cells = [ [ NSMutableArray arrayWithCapacity: 1000 ] retain ]; 64 | _currentSection = -10; 65 | } 66 | 67 | return self; 68 | } 69 | 70 | - ( void )dealloc 71 | { 72 | //NSLOG_FUNCNAME; 73 | 74 | [ _loadingWindow release ]; 75 | [ _progressBar release ]; 76 | [ _outlineView release ]; 77 | [ _searchField release ]; 78 | [ _sectionsMenu release ]; 79 | [ _textView release ]; 80 | [ _label release ]; 81 | [ _cells release ]; 82 | [ _sections release ]; 83 | 84 | [ super dealloc ]; 85 | } 86 | 87 | - ( void )awakeFromNib 88 | { 89 | //NSLOG_FUNCNAME; 90 | 91 | [ _searchField setDelegate: (id)self ]; 92 | [ _label setStringValue: @"" ]; 93 | [ _loadingWindow setPreventsApplicationTerminationWhenModal: NO ]; 94 | [ _progressBar startAnimation: nil ]; 95 | 96 | [ self.window setContentBorderThickness: ( CGFloat )25 forEdge: NSMinYEdge ]; 97 | [ ( NSNotificationCenter * )[ NSNotificationCenter defaultCenter ] addObserver: self selector: @selector( mainWindowDidResize: ) name: NSWindowDidEndLiveResizeNotification object: self.window ]; 98 | } 99 | 100 | - ( void )showWindow: ( id )sender 101 | { 102 | //NSLOG_FUNCNAME; 103 | 104 | [ super showWindow: sender ]; 105 | [ NSApp beginSheet: _loadingWindow modalForWindow: self.window modalDelegate: self didEndSelector: @selector( didEndSheet: returnCode: contextInfo: ) contextInfo: nil ]; 106 | 107 | dispatch_async 108 | ( 109 | dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), 110 | ^ 111 | { 112 | NSString * section; 113 | NSString * sectionKey; 114 | NSString * sectionDescription; 115 | NSInteger i; 116 | 117 | [ [ ManualHelper sharedInstance ] getAllManualPages ]; 118 | 119 | [ _sectionsMenu setTarget: self ]; 120 | [ _sectionsMenu setAction: @selector( sectionsMenuSelectionDidChange: ) ]; 121 | [ _sectionsMenu addItemWithTitle: NSLocalizedString( @"AllSections", nil ) ]; 122 | [ [ _sectionsMenu itemAtIndex: 0 ] setTag: -1 ]; 123 | [ _sectionsMenu.menu addItem: [ NSMenuItem separatorItem ] ]; 124 | 125 | _sections = [ [ [ [ [ ManualHelper sharedInstance ] sections ] allKeys ] sortedArrayUsingSelector: @selector( localizedCaseInsensitiveCompare: ) ] retain ]; 126 | 127 | i = 0; 128 | 129 | for( section in _sections ) 130 | { 131 | sectionKey = [ NSString stringWithFormat: @"Section-%@", section ]; 132 | sectionDescription = NSLocalizedString( sectionKey, nil ); 133 | 134 | if( [ sectionDescription isEqualToString: sectionKey ] ) 135 | { 136 | sectionDescription = NSLocalizedString( @"UnknownSection", nil ); 137 | } 138 | 139 | [ _sectionsMenu addItemWithTitle: [ NSString stringWithFormat: @"%@ - %@ (%lu)", sectionDescription, section, [ [ [ [ ManualHelper sharedInstance ] sections ] objectForKey: section ] count ] ] ]; 140 | [ [ _sectionsMenu itemAtIndex: i + 2 ] setTag: i ]; 141 | 142 | i++; 143 | } 144 | 145 | self.window.title = [ NSString stringWithFormat: @"%@ - %@", NSLocalizedString( @"WindowTitle", nil ), _sectionsMenu.selectedItem.title ]; 146 | 147 | [ NSThread sleepForTimeInterval: 0.5 ]; 148 | 149 | [ _outlineView performSelector: @selector( setDelegate: ) onThread: [ NSThread mainThread ] withObject: self waitUntilDone: YES ]; 150 | [ _outlineView performSelector: @selector( setDataSource: ) onThread: [ NSThread mainThread ] withObject: self waitUntilDone: YES ]; 151 | 152 | [ NSApp performSelector: @selector( endSheet: ) onThread: [ NSThread mainThread ] withObject: _loadingWindow waitUntilDone: NO ]; 153 | } 154 | ); 155 | } 156 | 157 | @end 158 | -------------------------------------------------------------------------------- /Manual/UI/en.lproj/AboutWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /Manual/warnings.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2012, Jean-David Gadina - www.xs-labs.com 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions are met: 7 | * 8 | * - Redistributions of source code must retain the above copyright notice, 9 | * this list of conditions and the following disclaimer. 10 | * - Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * - Neither the name of 'Jean-David Gadina' nor the names of its 14 | * contributors may be used to endorse or promote products derived from 15 | * this software without specific prior written permission. 16 | * 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | * POSSIBILITY OF SUCH DAMAGE. 28 | ******************************************************************************/ 29 | 30 | /* $Id$ */ 31 | 32 | #ifndef __WARNINGS_H__ 33 | #define __WARNINGS_H__ 34 | 35 | #ifndef __clang__ 36 | 37 | #error "Please consider using Clang as compiler!" 38 | 39 | #else 40 | 41 | #pragma clang diagnostic fatal "-Wabi" 42 | #pragma clang diagnostic fatal "-Waddress-of-temporary" 43 | #pragma clang diagnostic fatal "-Waddress" 44 | #pragma clang diagnostic fatal "-Waggregate-return" 45 | #pragma clang diagnostic fatal "-Wall" 46 | #pragma clang diagnostic fatal "-Wambiguous-member-template" 47 | //#pragma clang diagnostic fatal "-Warc-abi" 48 | #pragma clang diagnostic fatal "-Warc-non-pod-memaccess" 49 | #pragma clang diagnostic fatal "-Warc-retain-cycles" 50 | #pragma clang diagnostic fatal "-Warc-unsafe-retained-assign" 51 | #pragma clang diagnostic fatal "-Warc" 52 | #pragma clang diagnostic fatal "-Watomic-properties" 53 | #pragma clang diagnostic fatal "-Wattributes" 54 | #pragma clang diagnostic fatal "-Wavailability" 55 | #pragma clang diagnostic fatal "-Wbad-function-cast" 56 | #pragma clang diagnostic fatal "-Wbind-to-temporary-copy" 57 | #pragma clang diagnostic fatal "-Wbitwise-op-parentheses" 58 | #pragma clang diagnostic fatal "-Wbool-conversions" 59 | #pragma clang diagnostic fatal "-Wbuiltin-macro-redefined" 60 | #pragma clang diagnostic fatal "-Wc++-compat" 61 | #pragma clang diagnostic fatal "-Wc++0x-compat" 62 | #pragma clang diagnostic fatal "-Wc++0x-extensions" 63 | #pragma clang diagnostic fatal "-Wcast-align" 64 | #pragma clang diagnostic fatal "-Wcast-qual" 65 | #pragma clang diagnostic fatal "-Wchar-align" 66 | #pragma clang diagnostic fatal "-Wchar-subscripts" 67 | #pragma clang diagnostic fatal "-Wcomment" 68 | #pragma clang diagnostic fatal "-Wcomments" 69 | #pragma clang diagnostic fatal "-Wconditional-uninitialized" 70 | #pragma clang diagnostic fatal "-Wconversion" 71 | #pragma clang diagnostic fatal "-Wctor-dtor-privacy" 72 | #pragma clang diagnostic fatal "-Wcustom-atomic-properties" 73 | #pragma clang diagnostic fatal "-Wdeclaration-after-statement" 74 | #pragma clang diagnostic fatal "-Wdelegating-ctor-cycles" 75 | #pragma clang diagnostic fatal "-Wdelete-non-virtual-dtor" 76 | #pragma clang diagnostic fatal "-Wdeprecated-declarations" 77 | #pragma clang diagnostic fatal "-Wdeprecated-implementations" 78 | #pragma clang diagnostic fatal "-Wdeprecated-writable-strings" 79 | #pragma clang diagnostic fatal "-Wdeprecated" 80 | #pragma clang diagnostic fatal "-Wdisabled-optimization" 81 | #pragma clang diagnostic fatal "-Wdiscard-qual" 82 | #pragma clang diagnostic fatal "-Wdiv-by-zero" 83 | #pragma clang diagnostic fatal "-Wduplicate-method-arg" 84 | #pragma clang diagnostic fatal "-Weffc++" 85 | #pragma clang diagnostic fatal "-Wempty-body" 86 | #pragma clang diagnostic fatal "-Wendif-labels" 87 | #pragma clang diagnostic fatal "-Wexit-time-destructors" 88 | #pragma clang diagnostic fatal "-Wextra-tokens" 89 | #pragma clang diagnostic fatal "-Wextra" 90 | #pragma clang diagnostic fatal "-Wformat-extra-args" 91 | #pragma clang diagnostic fatal "-Wformat-nonliteral" 92 | #pragma clang diagnostic fatal "-Wformat-zero-length" 93 | #pragma clang diagnostic fatal "-Wformat" 94 | #pragma clang diagnostic fatal "-Wformat=2" 95 | #pragma clang diagnostic fatal "-Wfour-char-constants" 96 | #pragma clang diagnostic fatal "-Wglobal-constructors" 97 | #pragma clang diagnostic fatal "-Wgnu-designator" 98 | #pragma clang diagnostic fatal "-Wgnu" 99 | #pragma clang diagnostic fatal "-Wheader-hygiene" 100 | #pragma clang diagnostic fatal "-Widiomatic-parentheses" 101 | #pragma clang diagnostic fatal "-Wignored-qualifiers" 102 | #pragma clang diagnostic fatal "-Wimplicit-atomic-properties" 103 | #pragma clang diagnostic fatal "-Wimplicit-function-declaration" 104 | #pragma clang diagnostic fatal "-Wimplicit-int" 105 | #pragma clang diagnostic fatal "-Wimplicit" 106 | #pragma clang diagnostic fatal "-Wimport" 107 | #pragma clang diagnostic fatal "-Wincompatible-pointer-types" 108 | #pragma clang diagnostic fatal "-Winit-self" 109 | #pragma clang diagnostic fatal "-Winitializer-overrides" 110 | #pragma clang diagnostic fatal "-Winline" 111 | #pragma clang diagnostic fatal "-Wint-to-pointer-cast" 112 | #pragma clang diagnostic fatal "-Winvalid-offsetof" 113 | #pragma clang diagnostic fatal "-Winvalid-pch" 114 | #pragma clang diagnostic fatal "-Wlarge-by-value-copy" 115 | #pragma clang diagnostic fatal "-Wliteral-range" 116 | #pragma clang diagnostic fatal "-Wlocal-type-template-args" 117 | #pragma clang diagnostic fatal "-Wlogical-op-parentheses" 118 | #pragma clang diagnostic fatal "-Wlong-long" 119 | #pragma clang diagnostic fatal "-Wmain" 120 | #pragma clang diagnostic fatal "-Wmicrosoft" 121 | #pragma clang diagnostic fatal "-Wmismatched-tags" 122 | #pragma clang diagnostic fatal "-Wmissing-braces" 123 | #pragma clang diagnostic fatal "-Wmissing-declarations" 124 | #pragma clang diagnostic fatal "-Wmissing-field-initializers" 125 | #pragma clang diagnostic fatal "-Wmissing-format-attribute" 126 | #pragma clang diagnostic fatal "-Wmissing-include-dirs" 127 | #pragma clang diagnostic fatal "-Wmissing-noreturn" 128 | #pragma clang diagnostic fatal "-Wmost" 129 | #pragma clang diagnostic fatal "-Wmultichar" 130 | #pragma clang diagnostic fatal "-Wnested-externs" 131 | #pragma clang diagnostic fatal "-Wnewline-eof" 132 | #pragma clang diagnostic fatal "-Wnon-gcc" 133 | #pragma clang diagnostic fatal "-Wnon-virtual-dtor" 134 | #pragma clang diagnostic fatal "-Wnonnull" 135 | #pragma clang diagnostic fatal "-Wnonportable-cfstrings" 136 | #pragma clang diagnostic fatal "-Wnull-dereference" 137 | #pragma clang diagnostic fatal "-Wobjc-nonunified-exceptions" 138 | #pragma clang diagnostic fatal "-Wold-style-cast" 139 | #pragma clang diagnostic fatal "-Wold-style-definition" 140 | #pragma clang diagnostic fatal "-Wout-of-line-declaration" 141 | #pragma clang diagnostic fatal "-Woverflow" 142 | #pragma clang diagnostic fatal "-Woverlength-strings" 143 | #pragma clang diagnostic fatal "-Woverloaded-virtual" 144 | #pragma clang diagnostic fatal "-Wpacked" 145 | #pragma clang diagnostic fatal "-Wparentheses" 146 | #pragma clang diagnostic fatal "-Wpointer-arith" 147 | #pragma clang diagnostic fatal "-Wpointer-to-int-cast" 148 | #pragma clang diagnostic fatal "-Wprotocol" 149 | //#pragma clang diagnostic fatal "-Wreadonly-setter-attrs" 150 | #pragma clang diagnostic fatal "-Wredundant-decls" 151 | #pragma clang diagnostic fatal "-Wreorder" 152 | #pragma clang diagnostic fatal "-Wreturn-type" 153 | #pragma clang diagnostic fatal "-Wself-assign" 154 | #pragma clang diagnostic fatal "-Wsemicolon-before-method-body" 155 | #pragma clang diagnostic fatal "-Wsequence-point" 156 | #pragma clang diagnostic fatal "-Wshadow" 157 | #pragma clang diagnostic fatal "-Wshorten-64-to-32" 158 | #pragma clang diagnostic fatal "-Wsign-compare" 159 | #pragma clang diagnostic fatal "-Wsign-promo" 160 | #pragma clang diagnostic fatal "-Wsizeof-array-argument" 161 | #pragma clang diagnostic fatal "-Wstack-protector" 162 | #pragma clang diagnostic fatal "-Wstrict-aliasing" 163 | #pragma clang diagnostic fatal "-Wstrict-overflow" 164 | #pragma clang diagnostic fatal "-Wstrict-prototypes" 165 | #pragma clang diagnostic fatal "-Wstrict-selector-match" 166 | #pragma clang diagnostic fatal "-Wsuper-class-method-mismatch" 167 | #pragma clang diagnostic fatal "-Wswitch-default" 168 | #pragma clang diagnostic fatal "-Wswitch-enum" 169 | #pragma clang diagnostic fatal "-Wswitch" 170 | #pragma clang diagnostic fatal "-Wsynth" 171 | #pragma clang diagnostic fatal "-Wtautological-compare" 172 | #pragma clang diagnostic fatal "-Wtrigraphs" 173 | #pragma clang diagnostic fatal "-Wtype-limits" 174 | #pragma clang diagnostic fatal "-Wundeclared-selector" 175 | #pragma clang diagnostic fatal "-Wuninitialized" 176 | #pragma clang diagnostic fatal "-Wunknown-pragmas" 177 | #pragma clang diagnostic fatal "-Wunnamed-type-template-args" 178 | #pragma clang diagnostic fatal "-Wunneeded-internal-declaration" 179 | #pragma clang diagnostic fatal "-Wunneeded-member-function" 180 | #pragma clang diagnostic fatal "-Wunused-argument" 181 | #pragma clang diagnostic fatal "-Wunused-exception-parameter" 182 | #pragma clang diagnostic fatal "-Wunused-function" 183 | #pragma clang diagnostic fatal "-Wunused-label" 184 | #pragma clang diagnostic fatal "-Wunused-member-function" 185 | #pragma clang diagnostic fatal "-Wunused-parameter" 186 | #pragma clang diagnostic fatal "-Wunused-value" 187 | #pragma clang diagnostic fatal "-Wunused-variable" 188 | #pragma clang diagnostic fatal "-Wunused" 189 | #pragma clang diagnostic fatal "-Wused-but-marked-unused" 190 | #pragma clang diagnostic fatal "-Wvector-conversions" 191 | #pragma clang diagnostic fatal "-Wvla" 192 | #pragma clang diagnostic fatal "-Wvolatile-register-var" 193 | #pragma clang diagnostic fatal "-Wwrite-strings" 194 | 195 | /* Not wanted: */ 196 | 197 | #pragma clang diagnostic ignored "-Wpadded" 198 | #pragma clang diagnostic ignored "-Wselector" 199 | #pragma clang diagnostic ignored "-Wvariadic-macros" 200 | 201 | /* 202 | * Not recognized by Apple implementation: 203 | * 204 | * #pragma clang diagnostic fatal "-Wdefault-arg-special-member" 205 | * #pragma clang diagnostic fatal "-Wauto-import" 206 | * #pragma clang diagnostic fatal "-Wbuiltin-requires-header" 207 | * #pragma clang diagnostic fatal "-Wc++0x-narrowing" 208 | * #pragma clang diagnostic fatal "-Wc++11-compat" 209 | * #pragma clang diagnostic fatal "-Wc++11-extensions" 210 | * #pragma clang diagnostic fatal "-Wc++11-narrowing" 211 | * #pragma clang diagnostic fatal "-Wc++98-compat-bind-to-temporary-copy" 212 | * #pragma clang diagnostic fatal "-Wc++98-compat-local-type-template-args" 213 | * #pragma clang diagnostic fatal "-Wc++98-compat-pedantic" 214 | * #pragma clang diagnostic fatal "-Wc++98-compat-unnamed-type-template-args" 215 | * #pragma clang diagnostic fatal "-Wc1x-extensions" 216 | * #pragma clang diagnostic fatal "-Wc99-extensions" 217 | * #pragma clang diagnostic fatal "-Wcatch-incomplete-type-extensions" 218 | * #pragma clang diagnostic fatal "-Wduplicate-method-match" 219 | * #pragma clang diagnostic fatal "-Wflexible-array-extensions" 220 | * #pragma clang diagnostic fatal "-Wmalformed-warning-check" 221 | * #pragma clang diagnostic fatal "-Wmissing-method-return-type" 222 | * #pragma clang diagnostic fatal "-Wmodule-build" 223 | * #pragma clang diagnostic fatal "-WNSObject-attribute" 224 | * #pragma clang diagnostic fatal "-Wnull-character" 225 | * #pragma clang diagnostic fatal "-Wobjc-missing-super-calls" 226 | * #pragma clang diagnostic fatal "-Wobjc-noncopy-retain-block-property" 227 | * #pragma clang diagnostic fatal "-Wobjc-property-implementation" 228 | * #pragma clang diagnostic fatal "-Wobjc-protocol-method-implementation" 229 | * #pragma clang diagnostic fatal "-Wobjc-readonly-with-setter-property" 230 | * #pragma clang diagnostic fatal "-Woverriding-method-mismatch" 231 | * #pragma clang diagnostic fatal "-Wsentinel" 232 | * #pragma clang diagnostic fatal "-Wunicode" 233 | * #pragma clang diagnostic fatal "-Wunused-comparison" 234 | * #pragma clang diagnostic fatal "-Wunused-result" 235 | * #pragma clang diagnostic fatal "-Wuser-defined-literals" 236 | */ 237 | 238 | #endif 239 | 240 | #endif /* __WARNINGS_H__ */ 241 | -------------------------------------------------------------------------------- /todo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | todo 6 | 7 | 8 | 9 | 496 | 497 | 498 |

499 |
500 |

Todo Items

501 | 502 |

The items in this document outline work still to be done (bugs or enhancements); the following sections outline the work-item structure. Note that “ToDo” items include bugs or new/changed features (bugs will normally be higher priority).

503 | 504 |

Note that as of 2014/09/01 a Bugzilla database has been created and will be maintained by Marty Turner on one of his local systems; from here on, BZ numbers will be included in work items.

505 | 506 |

Introduction

507 | 508 |

This simple “to do list” is to be used to not only track improvements or fixes to the code, but also as a placeholder for planned activities so that all developers involved are aware of what is being planned. Additions, changes, or deletions (hopefully first discussed before doing so on the latter) are welcome by any participants in the project.

509 | 510 |

The proposed priority scheme which would allow better handling of any “to do work” is as follows:

511 | 512 |

URGENT this category will not exist in this project due to the fact it exists in Github.

513 | 514 |

HIGH The identified work item is deemed to be high priority. If at all possible, the work item will be included in the next release of the project contents.

515 | 516 |

MEDIUM the identified work is deemed to be medium priority. It will be included only if the developers in the project believe that it is important enough to spend time on (which should elevate it to HIGH priority)

517 | 518 |

LOW the identified work item is deemed to be low priority. It will most likely only be included when escalated to a MEDIUM or a HIGH priority (or if the project developers involved are learning the code or just bored ;-) ).

519 | 520 |

Open Work Items

521 | 522 |

TODO003: Sort the “All Selections” drop-down so they are easier to read. (LOW)

523 | 524 |

Completed Work Items

525 | 526 |

TODO001: Add a print facility per accepted Apple UI conventions. (HIGH) 527 | This was already in place as of version 1.02 courtesy of the author but did not work in version 1.01 (the File > Print selection was greyed out and thus unelectable). Fixed in 1.0.2.

528 | 529 |

TODO002: Modify Edit > Find to hold the found selection highlighting longer than it is now (less than .5 sec or less so it seems). This will help denote the found item much better. (HIGH) COMPLETED 2014/05/17 Fixed in 1.0.3.

530 | 531 |

TODO006: The “Print” function is truncating paragraph text on the right margin of the printed output. NOTE that setting MANWIDTH other than its default is NOT a soliton to this problem as that causes print formatting problems.) (HIGH) COMPLETED 20140830 Fixed in 1.0.4.

532 | 533 |

TODO007 Print very narrow only on some displayed man pages after fix for 534 | TODO006 (Bugzilla 9). While most man page text output continued to 535 | print correctly after TODO006, some (such as a2p/a2x), were printed out as 536 | a very long/narrow column (small font) which was almost unreadable. (HIGH) COMPLETED 20140915 Bugzilla 9 “Fixed in 1.0.5”

537 | 538 |

TODO004: Determine/fix why “xcodebuild” man is not found when “xcode-select” is. Determine what else might be missing as well and fix that too. (MEDIUM) COMPLETED 20140923 Bugzilla 6 “Fixed in 1.0.5”

539 | 540 |

TODO005: Determine/fix why the MacPorts “man port” is not found. (LOW) COMPLETED 2014/09/23 Bugzilla 7 “Fixed in 1.0.5” (duplicate of TODO004)

541 | 542 |

Test Plan

543 | 544 |

Presently, the test plan can be considered as very loosely planned. The currently assigned developer (Marty Turner) has tested each version release of this project on Snow Leopard (10.6), Lion (10.7), Mountain Lion (10.8), Mavericks (10.9) and Yosemite (10.10). As subsequent Mac OS X versions are released by Apple, they will be added to this list.

545 | 546 |

Testing Scope

547 | 548 |

The planned testing involves manually testing and observation of key features of the Manual application. That is, simply navigating through each series of key user interface features and noting visually if they work as expected. There is currently no plan to create a series of documented test steps; the assumption will be that the developer or developers involved know enough about the functionality of the project to test it in a “reasonably” thorough manner. Although it is a good idea to formally document test procedures, it is not within the scope of the support of this project based on its current state as accessible in Github.

549 | 550 |

Note that as of 2014/09/01 all bugs, features, and issues related to the project will be documented in a Bugzilla database; some means of making it available here will be performed as time permits (else, contact the developer).

551 |
552 |
553 | 554 | -------------------------------------------------------------------------------- /Manual/UI/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 85 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | -------------------------------------------------------------------------------- /Manual.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 0513827F179496D100B578A9 /* BackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0513827E179496D100B578A9 /* BackgroundView.m */; }; 11 | 0513828117949D0600B578A9 /* Manual.iconset in Resources */ = {isa = PBXBuildFile; fileRef = 0513828017949D0600B578A9 /* Manual.iconset */; }; 12 | 0541C89617946BF600C820D7 /* MainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0541C89517946BF600C820D7 /* MainWindowController.m */; }; 13 | 0541C89A17946C8F00C820D7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0541C89817946C8F00C820D7 /* MainWindow.xib */; }; 14 | 0548DA1B14773CC70098659E /* MainWindowController+NSOutlineViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 0548DA1A14773CC70098659E /* MainWindowController+NSOutlineViewDataSource.m */; }; 15 | 0548DA1E14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0548DA1D14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.m */; }; 16 | 0556C8901477F75E009995D0 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0556C88E1477F75E009995D0 /* Localizable.strings */; }; 17 | 059AD79C14782062005F88B8 /* AboutWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 059AD79B14782062005F88B8 /* AboutWindowController.m */; }; 18 | 059AD7A01478206D005F88B8 /* AboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 059AD79E1478206D005F88B8 /* AboutWindow.xib */; }; 19 | 059AD7A3147827BF005F88B8 /* MainWindowController+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 059AD7A2147827BF005F88B8 /* MainWindowController+Private.m */; }; 20 | 059AD7A7147842E9005F88B8 /* ManualCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 059AD7A6147842E9005F88B8 /* ManualCell.m */; }; 21 | 059B61361477243A008C659D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 059B61351477243A008C659D /* Cocoa.framework */; }; 22 | 059B61401477243A008C659D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 059B613E1477243A008C659D /* InfoPlist.strings */; }; 23 | 059B61421477243A008C659D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 059B61411477243A008C659D /* main.m */; }; 24 | 059B616314772651008C659D /* ApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 059B615F14772651008C659D /* ApplicationDelegate.m */; }; 25 | 059B616414772651008C659D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 059B616114772651008C659D /* MainMenu.xib */; }; 26 | 059B616714772661008C659D /* ManualPage.m in Sources */ = {isa = PBXBuildFile; fileRef = 059B616614772661008C659D /* ManualPage.m */; }; 27 | 059B616A1477266F008C659D /* ManualHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 059B61691477266F008C659D /* ManualHelper.m */; }; 28 | 05FF840814788911006080A7 /* SearchField.m in Sources */ = {isa = PBXBuildFile; fileRef = 05FF840714788910006080A7 /* SearchField.m */; }; 29 | 05FF840C14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 05FF840B14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.m */; }; 30 | 40149D391929D8A200A17679 /* Debug.m in Sources */ = {isa = PBXBuildFile; fileRef = 40149D381929D8A200A17679 /* Debug.m */; }; 31 | /* End PBXBuildFile section */ 32 | 33 | /* Begin PBXFileReference section */ 34 | 0513827D179496D100B578A9 /* BackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundView.h; sourceTree = ""; }; 35 | 0513827E179496D100B578A9 /* BackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BackgroundView.m; sourceTree = ""; }; 36 | 0513828017949D0600B578A9 /* Manual.iconset */ = {isa = PBXFileReference; lastKnownFileType = folder.iconset; path = Manual.iconset; sourceTree = SOURCE_ROOT; }; 37 | 0541C89417946BF600C820D7 /* MainWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainWindowController.h; sourceTree = ""; }; 38 | 0541C89517946BF600C820D7 /* MainWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainWindowController.m; sourceTree = ""; }; 39 | 0541C89717946C2100C820D7 /* warnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = warnings.h; sourceTree = ""; }; 40 | 0541C89917946C8F00C820D7 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 41 | 0548DA1914773CC70098659E /* MainWindowController+NSOutlineViewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainWindowController+NSOutlineViewDataSource.h"; sourceTree = ""; }; 42 | 0548DA1A14773CC70098659E /* MainWindowController+NSOutlineViewDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainWindowController+NSOutlineViewDataSource.m"; sourceTree = ""; }; 43 | 0548DA1C14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainWindowController+NSOutlineViewDelegate.h"; sourceTree = ""; }; 44 | 0548DA1D14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainWindowController+NSOutlineViewDelegate.m"; sourceTree = ""; }; 45 | 0556C88F1477F75E009995D0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 46 | 059AD79A14782062005F88B8 /* AboutWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutWindowController.h; sourceTree = ""; }; 47 | 059AD79B14782062005F88B8 /* AboutWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutWindowController.m; sourceTree = ""; }; 48 | 059AD79F1478206D005F88B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/AboutWindow.xib; sourceTree = ""; }; 49 | 059AD7A1147827BF005F88B8 /* MainWindowController+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainWindowController+Private.h"; sourceTree = ""; }; 50 | 059AD7A2147827BF005F88B8 /* MainWindowController+Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainWindowController+Private.m"; sourceTree = ""; }; 51 | 059AD7A5147842E9005F88B8 /* ManualCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManualCell.h; sourceTree = ""; }; 52 | 059AD7A6147842E9005F88B8 /* ManualCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManualCell.m; sourceTree = ""; }; 53 | 059B61311477243A008C659D /* Manual.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Manual.app; sourceTree = BUILT_PRODUCTS_DIR; }; 54 | 059B61351477243A008C659D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 55 | 059B61381477243A008C659D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 56 | 059B61391477243A008C659D /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 57 | 059B613A1477243A008C659D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 58 | 059B613D1477243A008C659D /* Manual-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Manual-Info.plist"; sourceTree = ""; }; 59 | 059B613F1477243A008C659D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 60 | 059B61411477243A008C659D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 61 | 059B61431477243A008C659D /* Manual-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Manual-Prefix.pch"; sourceTree = ""; }; 62 | 059B615E14772651008C659D /* ApplicationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationDelegate.h; sourceTree = ""; }; 63 | 059B615F14772651008C659D /* ApplicationDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApplicationDelegate.m; sourceTree = ""; }; 64 | 059B616214772651008C659D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; 65 | 059B616514772661008C659D /* ManualPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManualPage.h; sourceTree = ""; }; 66 | 059B616614772661008C659D /* ManualPage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManualPage.m; sourceTree = ""; }; 67 | 059B61681477266F008C659D /* ManualHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManualHelper.h; sourceTree = ""; }; 68 | 059B61691477266F008C659D /* ManualHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManualHelper.m; sourceTree = ""; }; 69 | 05FF840614788910006080A7 /* SearchField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchField.h; sourceTree = ""; }; 70 | 05FF840714788910006080A7 /* SearchField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchField.m; sourceTree = ""; }; 71 | 05FF840914788A06006080A7 /* SearchFieldProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchFieldProtocol.h; sourceTree = ""; }; 72 | 05FF840A14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainWindowController+SearchFieldDelegate.h"; sourceTree = ""; }; 73 | 05FF840B14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainWindowController+SearchFieldDelegate.m"; sourceTree = ""; }; 74 | 40149D371929D8A200A17679 /* Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Debug.h; sourceTree = ""; }; 75 | 40149D381929D8A200A17679 /* Debug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Debug.m; sourceTree = ""; }; 76 | /* End PBXFileReference section */ 77 | 78 | /* Begin PBXFrameworksBuildPhase section */ 79 | 059B612E1477243A008C659D /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | 059B61361477243A008C659D /* Cocoa.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | /* End PBXFrameworksBuildPhase section */ 88 | 89 | /* Begin PBXGroup section */ 90 | 059B61261477243A008C659D = { 91 | isa = PBXGroup; 92 | children = ( 93 | 059B613B1477243A008C659D /* Manual */, 94 | 059B61341477243A008C659D /* Frameworks */, 95 | 059B61321477243A008C659D /* Products */, 96 | ); 97 | sourceTree = ""; 98 | }; 99 | 059B61321477243A008C659D /* Products */ = { 100 | isa = PBXGroup; 101 | children = ( 102 | 059B61311477243A008C659D /* Manual.app */, 103 | ); 104 | name = Products; 105 | sourceTree = ""; 106 | }; 107 | 059B61341477243A008C659D /* Frameworks */ = { 108 | isa = PBXGroup; 109 | children = ( 110 | 059B61351477243A008C659D /* Cocoa.framework */, 111 | 059B61371477243A008C659D /* Other Frameworks */, 112 | ); 113 | name = Frameworks; 114 | sourceTree = ""; 115 | }; 116 | 059B61371477243A008C659D /* Other Frameworks */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | 059B61381477243A008C659D /* AppKit.framework */, 120 | 059B61391477243A008C659D /* CoreData.framework */, 121 | 059B613A1477243A008C659D /* Foundation.framework */, 122 | ); 123 | name = "Other Frameworks"; 124 | sourceTree = ""; 125 | }; 126 | 059B613B1477243A008C659D /* Manual */ = { 127 | isa = PBXGroup; 128 | children = ( 129 | 059B615D14772651008C659D /* Classes */, 130 | 059B616014772651008C659D /* UI */, 131 | 059B613C1477243A008C659D /* Supporting Files */, 132 | ); 133 | path = Manual; 134 | sourceTree = ""; 135 | }; 136 | 059B613C1477243A008C659D /* Supporting Files */ = { 137 | isa = PBXGroup; 138 | children = ( 139 | 059B613D1477243A008C659D /* Manual-Info.plist */, 140 | 059B613E1477243A008C659D /* InfoPlist.strings */, 141 | 059B61411477243A008C659D /* main.m */, 142 | 059B61431477243A008C659D /* Manual-Prefix.pch */, 143 | 0541C89717946C2100C820D7 /* warnings.h */, 144 | ); 145 | name = "Supporting Files"; 146 | sourceTree = ""; 147 | }; 148 | 059B615D14772651008C659D /* Classes */ = { 149 | isa = PBXGroup; 150 | children = ( 151 | 059B615E14772651008C659D /* ApplicationDelegate.h */, 152 | 059B615F14772651008C659D /* ApplicationDelegate.m */, 153 | 0541C89417946BF600C820D7 /* MainWindowController.h */, 154 | 0541C89517946BF600C820D7 /* MainWindowController.m */, 155 | 059AD7A1147827BF005F88B8 /* MainWindowController+Private.h */, 156 | 059AD7A2147827BF005F88B8 /* MainWindowController+Private.m */, 157 | 05FF840A14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.h */, 158 | 05FF840B14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.m */, 159 | 0548DA1914773CC70098659E /* MainWindowController+NSOutlineViewDataSource.h */, 160 | 0548DA1A14773CC70098659E /* MainWindowController+NSOutlineViewDataSource.m */, 161 | 0548DA1C14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.h */, 162 | 0548DA1D14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.m */, 163 | 059AD79A14782062005F88B8 /* AboutWindowController.h */, 164 | 059AD79B14782062005F88B8 /* AboutWindowController.m */, 165 | 059B616514772661008C659D /* ManualPage.h */, 166 | 059B616614772661008C659D /* ManualPage.m */, 167 | 059B61681477266F008C659D /* ManualHelper.h */, 168 | 059B61691477266F008C659D /* ManualHelper.m */, 169 | 059AD7A5147842E9005F88B8 /* ManualCell.h */, 170 | 059AD7A6147842E9005F88B8 /* ManualCell.m */, 171 | 05FF840614788910006080A7 /* SearchField.h */, 172 | 05FF840714788910006080A7 /* SearchField.m */, 173 | 05FF840914788A06006080A7 /* SearchFieldProtocol.h */, 174 | 0513827D179496D100B578A9 /* BackgroundView.h */, 175 | 0513827E179496D100B578A9 /* BackgroundView.m */, 176 | 40149D371929D8A200A17679 /* Debug.h */, 177 | 40149D381929D8A200A17679 /* Debug.m */, 178 | ); 179 | path = Classes; 180 | sourceTree = ""; 181 | }; 182 | 059B616014772651008C659D /* UI */ = { 183 | isa = PBXGroup; 184 | children = ( 185 | 059B616114772651008C659D /* MainMenu.xib */, 186 | 0541C89817946C8F00C820D7 /* MainWindow.xib */, 187 | 059AD79E1478206D005F88B8 /* AboutWindow.xib */, 188 | 0556C88E1477F75E009995D0 /* Localizable.strings */, 189 | 0513828017949D0600B578A9 /* Manual.iconset */, 190 | ); 191 | path = UI; 192 | sourceTree = ""; 193 | }; 194 | /* End PBXGroup section */ 195 | 196 | /* Begin PBXNativeTarget section */ 197 | 059B61301477243A008C659D /* Manual */ = { 198 | isa = PBXNativeTarget; 199 | buildConfigurationList = 059B614F1477243A008C659D /* Build configuration list for PBXNativeTarget "Manual" */; 200 | buildPhases = ( 201 | 059B612D1477243A008C659D /* Sources */, 202 | 059B612E1477243A008C659D /* Frameworks */, 203 | 059B612F1477243A008C659D /* Resources */, 204 | 0558D15717949DDF003A6794 /* ShellScript */, 205 | ); 206 | buildRules = ( 207 | ); 208 | dependencies = ( 209 | ); 210 | name = Manual; 211 | productName = Manual; 212 | productReference = 059B61311477243A008C659D /* Manual.app */; 213 | productType = "com.apple.product-type.application"; 214 | }; 215 | /* End PBXNativeTarget section */ 216 | 217 | /* Begin PBXProject section */ 218 | 059B61281477243A008C659D /* Project object */ = { 219 | isa = PBXProject; 220 | attributes = { 221 | LastUpgradeCheck = 0600; 222 | ORGANIZATIONNAME = DigiDNA; 223 | }; 224 | buildConfigurationList = 059B612B1477243A008C659D /* Build configuration list for PBXProject "Manual" */; 225 | compatibilityVersion = "Xcode 3.2"; 226 | developmentRegion = English; 227 | hasScannedForEncodings = 0; 228 | knownRegions = ( 229 | en, 230 | ); 231 | mainGroup = 059B61261477243A008C659D; 232 | productRefGroup = 059B61321477243A008C659D /* Products */; 233 | projectDirPath = ""; 234 | projectRoot = ""; 235 | targets = ( 236 | 059B61301477243A008C659D /* Manual */, 237 | ); 238 | }; 239 | /* End PBXProject section */ 240 | 241 | /* Begin PBXResourcesBuildPhase section */ 242 | 059B612F1477243A008C659D /* Resources */ = { 243 | isa = PBXResourcesBuildPhase; 244 | buildActionMask = 2147483647; 245 | files = ( 246 | 059B61401477243A008C659D /* InfoPlist.strings in Resources */, 247 | 059B616414772651008C659D /* MainMenu.xib in Resources */, 248 | 0541C89A17946C8F00C820D7 /* MainWindow.xib in Resources */, 249 | 0556C8901477F75E009995D0 /* Localizable.strings in Resources */, 250 | 059AD7A01478206D005F88B8 /* AboutWindow.xib in Resources */, 251 | 0513828117949D0600B578A9 /* Manual.iconset in Resources */, 252 | ); 253 | runOnlyForDeploymentPostprocessing = 0; 254 | }; 255 | /* End PBXResourcesBuildPhase section */ 256 | 257 | /* Begin PBXShellScriptBuildPhase section */ 258 | 0558D15717949DDF003A6794 /* ShellScript */ = { 259 | isa = PBXShellScriptBuildPhase; 260 | buildActionMask = 2147483647; 261 | files = ( 262 | ); 263 | inputPaths = ( 264 | ); 265 | outputPaths = ( 266 | ); 267 | runOnlyForDeploymentPostprocessing = 0; 268 | shellPath = /bin/sh; 269 | shellScript = "#!/bin/bash\nplist=\"Manual/Manual-Info.plist\"\nrev=$(git rev-list master | wc -l)\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $rev\" \"$plist\""; 270 | }; 271 | /* End PBXShellScriptBuildPhase section */ 272 | 273 | /* Begin PBXSourcesBuildPhase section */ 274 | 059B612D1477243A008C659D /* Sources */ = { 275 | isa = PBXSourcesBuildPhase; 276 | buildActionMask = 2147483647; 277 | files = ( 278 | 059B61421477243A008C659D /* main.m in Sources */, 279 | 059B616314772651008C659D /* ApplicationDelegate.m in Sources */, 280 | 059B616714772661008C659D /* ManualPage.m in Sources */, 281 | 059B616A1477266F008C659D /* ManualHelper.m in Sources */, 282 | 0548DA1B14773CC70098659E /* MainWindowController+NSOutlineViewDataSource.m in Sources */, 283 | 40149D391929D8A200A17679 /* Debug.m in Sources */, 284 | 0548DA1E14773CD30098659E /* MainWindowController+NSOutlineViewDelegate.m in Sources */, 285 | 0541C89617946BF600C820D7 /* MainWindowController.m in Sources */, 286 | 059AD79C14782062005F88B8 /* AboutWindowController.m in Sources */, 287 | 059AD7A3147827BF005F88B8 /* MainWindowController+Private.m in Sources */, 288 | 0513827F179496D100B578A9 /* BackgroundView.m in Sources */, 289 | 059AD7A7147842E9005F88B8 /* ManualCell.m in Sources */, 290 | 05FF840814788911006080A7 /* SearchField.m in Sources */, 291 | 05FF840C14788A4B006080A7 /* MainWindowController+SearchFieldDelegate.m in Sources */, 292 | ); 293 | runOnlyForDeploymentPostprocessing = 0; 294 | }; 295 | /* End PBXSourcesBuildPhase section */ 296 | 297 | /* Begin PBXVariantGroup section */ 298 | 0541C89817946C8F00C820D7 /* MainWindow.xib */ = { 299 | isa = PBXVariantGroup; 300 | children = ( 301 | 0541C89917946C8F00C820D7 /* en */, 302 | ); 303 | name = MainWindow.xib; 304 | sourceTree = ""; 305 | }; 306 | 0556C88E1477F75E009995D0 /* Localizable.strings */ = { 307 | isa = PBXVariantGroup; 308 | children = ( 309 | 0556C88F1477F75E009995D0 /* en */, 310 | ); 311 | name = Localizable.strings; 312 | sourceTree = ""; 313 | }; 314 | 059AD79E1478206D005F88B8 /* AboutWindow.xib */ = { 315 | isa = PBXVariantGroup; 316 | children = ( 317 | 059AD79F1478206D005F88B8 /* en */, 318 | ); 319 | name = AboutWindow.xib; 320 | sourceTree = ""; 321 | }; 322 | 059B613E1477243A008C659D /* InfoPlist.strings */ = { 323 | isa = PBXVariantGroup; 324 | children = ( 325 | 059B613F1477243A008C659D /* en */, 326 | ); 327 | name = InfoPlist.strings; 328 | sourceTree = ""; 329 | }; 330 | 059B616114772651008C659D /* MainMenu.xib */ = { 331 | isa = PBXVariantGroup; 332 | children = ( 333 | 059B616214772651008C659D /* en */, 334 | ); 335 | name = MainMenu.xib; 336 | sourceTree = ""; 337 | }; 338 | /* End PBXVariantGroup section */ 339 | 340 | /* Begin XCBuildConfiguration section */ 341 | 059B614D1477243A008C659D /* Debug */ = { 342 | isa = XCBuildConfiguration; 343 | buildSettings = { 344 | ALWAYS_SEARCH_USER_PATHS = NO; 345 | CLANG_ANALYZER_DEADCODE_DEADSTORES = YES; 346 | CLANG_ANALYZER_GCD = YES; 347 | CLANG_ANALYZER_MEMORY_MANAGEMENT = YES; 348 | CLANG_ANALYZER_OBJC_ATSYNC = YES; 349 | CLANG_ANALYZER_OBJC_COLLECTIONS = YES; 350 | CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES = YES; 351 | CLANG_ANALYZER_OBJC_NSCFERROR = YES; 352 | CLANG_ANALYZER_OBJC_SELF_INIT = YES; 353 | CLANG_ANALYZER_OBJC_UNUSED_IVARS = YES; 354 | CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; 355 | CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS = YES; 356 | CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP = YES; 357 | CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; 358 | CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; 359 | CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN = YES; 360 | CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK = YES; 361 | CLANG_ANALYZER_SECURITY_KEYCHAIN_API = YES; 362 | CLANG_WARN_BOOL_CONVERSION = YES; 363 | CLANG_WARN_CONSTANT_CONVERSION = YES; 364 | CLANG_WARN_CXX0X_EXTENSIONS = YES; 365 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 366 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 367 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 368 | CLANG_WARN_EMPTY_BODY = YES; 369 | CLANG_WARN_ENUM_CONVERSION = YES; 370 | CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; 371 | CLANG_WARN_INT_CONVERSION = YES; 372 | CLANG_WARN_OBJCPP_ARC_ABI = YES; 373 | CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; 374 | CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; 375 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 376 | CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; 377 | CLANG_WARN_OBJC_RECEIVER_WEAK = YES; 378 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES; 379 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 380 | CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; 381 | CLANG_WARN_UNREACHABLE_CODE = YES; 382 | CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES; 383 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 384 | CODE_SIGN_IDENTITY = ""; 385 | COPY_PHASE_STRIP = NO; 386 | ENABLE_STRICT_OBJC_MSGSEND = YES; 387 | GCC_C_LANGUAGE_STANDARD = c99; 388 | GCC_DYNAMIC_NO_PIC = NO; 389 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 390 | GCC_OPTIMIZATION_LEVEL = s; 391 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 392 | GCC_PREFIX_HEADER = "Manual/Manual-Prefix.pch"; 393 | GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; 394 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 395 | GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; 396 | GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; 397 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 398 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 399 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 400 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 401 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES; 402 | GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; 403 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES; 404 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 405 | GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES; 406 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 407 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES; 408 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; 409 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; 410 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; 411 | GCC_WARN_INHIBIT_ALL_WARNINGS = NO; 412 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; 413 | GCC_WARN_MISSING_PARENTHESES = YES; 414 | GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO; 415 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; 416 | GCC_WARN_PEDANTIC = YES; 417 | GCC_WARN_SHADOW = YES; 418 | GCC_WARN_SIGN_COMPARE = YES; 419 | GCC_WARN_STRICT_SELECTOR_MATCH = YES; 420 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; 421 | GCC_WARN_UNDECLARED_SELECTOR = YES; 422 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 423 | GCC_WARN_UNKNOWN_PRAGMAS = YES; 424 | GCC_WARN_UNUSED_FUNCTION = YES; 425 | GCC_WARN_UNUSED_LABEL = YES; 426 | GCC_WARN_UNUSED_PARAMETER = YES; 427 | GCC_WARN_UNUSED_VALUE = YES; 428 | GCC_WARN_UNUSED_VARIABLE = YES; 429 | MACOSX_DEPLOYMENT_TARGET = 10.6; 430 | ONLY_ACTIVE_ARCH = YES; 431 | PROVISIONING_PROFILE = ""; 432 | SDKROOT = macosx; 433 | }; 434 | name = Debug; 435 | }; 436 | 059B614E1477243A008C659D /* Release */ = { 437 | isa = XCBuildConfiguration; 438 | buildSettings = { 439 | ALWAYS_SEARCH_USER_PATHS = NO; 440 | CLANG_ANALYZER_DEADCODE_DEADSTORES = YES; 441 | CLANG_ANALYZER_GCD = YES; 442 | CLANG_ANALYZER_MEMORY_MANAGEMENT = YES; 443 | CLANG_ANALYZER_OBJC_ATSYNC = YES; 444 | CLANG_ANALYZER_OBJC_COLLECTIONS = YES; 445 | CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES = YES; 446 | CLANG_ANALYZER_OBJC_NSCFERROR = YES; 447 | CLANG_ANALYZER_OBJC_SELF_INIT = YES; 448 | CLANG_ANALYZER_OBJC_UNUSED_IVARS = YES; 449 | CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; 450 | CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS = YES; 451 | CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP = YES; 452 | CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; 453 | CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; 454 | CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN = YES; 455 | CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK = YES; 456 | CLANG_ANALYZER_SECURITY_KEYCHAIN_API = YES; 457 | CLANG_WARN_BOOL_CONVERSION = YES; 458 | CLANG_WARN_CONSTANT_CONVERSION = YES; 459 | CLANG_WARN_CXX0X_EXTENSIONS = YES; 460 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 461 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; 462 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 463 | CLANG_WARN_EMPTY_BODY = YES; 464 | CLANG_WARN_ENUM_CONVERSION = YES; 465 | CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; 466 | CLANG_WARN_INT_CONVERSION = YES; 467 | CLANG_WARN_OBJCPP_ARC_ABI = YES; 468 | CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE = YES; 469 | CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES = YES; 470 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 471 | CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS = YES; 472 | CLANG_WARN_OBJC_RECEIVER_WEAK = YES; 473 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES; 474 | CLANG_WARN_OBJC_ROOT_CLASS = YES; 475 | CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; 476 | CLANG_WARN_UNREACHABLE_CODE = YES; 477 | CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES; 478 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 479 | CODE_SIGN_IDENTITY = ""; 480 | COPY_PHASE_STRIP = YES; 481 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 482 | ENABLE_STRICT_OBJC_MSGSEND = YES; 483 | GCC_C_LANGUAGE_STANDARD = c99; 484 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 485 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 486 | GCC_PREFIX_HEADER = "Manual/Manual-Prefix.pch"; 487 | GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; 488 | GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; 489 | GCC_TREAT_WARNINGS_AS_ERRORS = YES; 490 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 491 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 492 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 493 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES; 494 | GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; 495 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES; 496 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 497 | GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES; 498 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 499 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES; 500 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES; 501 | GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES; 502 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES; 503 | GCC_WARN_INHIBIT_ALL_WARNINGS = NO; 504 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; 505 | GCC_WARN_MISSING_PARENTHESES = YES; 506 | GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO; 507 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; 508 | GCC_WARN_PEDANTIC = YES; 509 | GCC_WARN_SHADOW = YES; 510 | GCC_WARN_SIGN_COMPARE = YES; 511 | GCC_WARN_STRICT_SELECTOR_MATCH = YES; 512 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; 513 | GCC_WARN_UNDECLARED_SELECTOR = YES; 514 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 515 | GCC_WARN_UNKNOWN_PRAGMAS = YES; 516 | GCC_WARN_UNUSED_FUNCTION = YES; 517 | GCC_WARN_UNUSED_LABEL = YES; 518 | GCC_WARN_UNUSED_PARAMETER = YES; 519 | GCC_WARN_UNUSED_VALUE = YES; 520 | GCC_WARN_UNUSED_VARIABLE = YES; 521 | MACOSX_DEPLOYMENT_TARGET = 10.6; 522 | ONLY_ACTIVE_ARCH = NO; 523 | PROVISIONING_PROFILE = ""; 524 | SDKROOT = macosx; 525 | }; 526 | name = Release; 527 | }; 528 | 059B61501477243A008C659D /* Debug */ = { 529 | isa = XCBuildConfiguration; 530 | buildSettings = { 531 | COMBINE_HIDPI_IMAGES = YES; 532 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 533 | GCC_PREFIX_HEADER = "Manual/Manual-Prefix.pch"; 534 | INFOPLIST_FILE = "Manual/Manual-Info.plist"; 535 | ONLY_ACTIVE_ARCH = NO; 536 | PRODUCT_NAME = "$(TARGET_NAME)"; 537 | WRAPPER_EXTENSION = app; 538 | }; 539 | name = Debug; 540 | }; 541 | 059B61511477243A008C659D /* Release */ = { 542 | isa = XCBuildConfiguration; 543 | buildSettings = { 544 | COMBINE_HIDPI_IMAGES = YES; 545 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 546 | GCC_PREFIX_HEADER = "Manual/Manual-Prefix.pch"; 547 | INFOPLIST_FILE = "Manual/Manual-Info.plist"; 548 | ONLY_ACTIVE_ARCH = NO; 549 | PRODUCT_NAME = "$(TARGET_NAME)"; 550 | WRAPPER_EXTENSION = app; 551 | }; 552 | name = Release; 553 | }; 554 | /* End XCBuildConfiguration section */ 555 | 556 | /* Begin XCConfigurationList section */ 557 | 059B612B1477243A008C659D /* Build configuration list for PBXProject "Manual" */ = { 558 | isa = XCConfigurationList; 559 | buildConfigurations = ( 560 | 059B614D1477243A008C659D /* Debug */, 561 | 059B614E1477243A008C659D /* Release */, 562 | ); 563 | defaultConfigurationIsVisible = 0; 564 | defaultConfigurationName = Release; 565 | }; 566 | 059B614F1477243A008C659D /* Build configuration list for PBXNativeTarget "Manual" */ = { 567 | isa = XCConfigurationList; 568 | buildConfigurations = ( 569 | 059B61501477243A008C659D /* Debug */, 570 | 059B61511477243A008C659D /* Release */, 571 | ); 572 | defaultConfigurationIsVisible = 0; 573 | defaultConfigurationName = Release; 574 | }; 575 | /* End XCConfigurationList section */ 576 | }; 577 | rootObject = 059B61281477243A008C659D /* Project object */; 578 | } 579 | --------------------------------------------------------------------------------