diff --git a/.gitignore b/.gitignore index 86043d16..aeda64a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,10 @@ .DS_Store *.pyc +*.so build/ +cache/ dist/ +dist-* app/deps/Sparkle* # cds garbage @@ -12,3 +15,5 @@ test.py # Xcode user files project.xcworkspace xcuserdata +DerivedData/ +Xcode/ diff --git a/PlotDevice.xcodeproj/project.pbxproj b/PlotDevice.xcodeproj/project.pbxproj index 932929b3..947e77c2 100644 --- a/PlotDevice.xcodeproj/project.pbxproj +++ b/PlotDevice.xcodeproj/project.pbxproj @@ -19,13 +19,12 @@ 2A66ECEF18A99328002903DE /* underscore-1.5.2.min.js in Copy Editor Scripts */ = {isa = PBXBuildFile; fileRef = 2A66ECE218A992BD002903DE /* underscore-1.5.2.min.js */; }; 2A7AF5C818D2AFAA00F8FFC2 /* examples in Resources */ = {isa = PBXBuildFile; fileRef = 2A7AF5C718D2AFAA00F8FFC2 /* examples */; }; 2A93AE751903326E00C6144D /* placeholder.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 2A93AE731903326E00C6144D /* placeholder.pdf */; }; - 2AA40EBF184BF9CB00981ADC /* libpython2.7.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AA40EBE184BF9CB00981ADC /* libpython2.7.dylib */; }; 2ABBB2FA1854018B001C4E0A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABBB2F91854018B001C4E0A /* AVFoundation.framework */; }; 2ABBB2FC18540246001C4E0A /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABBB2FB18540246001C4E0A /* CoreVideo.framework */; }; 2ABBB2FE185402AC001C4E0A /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ABBB2FD185402AC001C4E0A /* CoreMedia.framework */; }; 2ABDB76B1867D8160069EFC3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ABDB7681867D8160069EFC3 /* main.m */; }; 2ABDB76E1867D8BB0069EFC3 /* plotdevice-app.py in Resources */ = {isa = PBXBuildFile; fileRef = 2ABDB7671867D8160069EFC3 /* plotdevice-app.py */; }; - 2ABDB7741867D9970069EFC3 /* plotdevice in Copy 'plotdevice' Tool */ = {isa = PBXBuildFile; fileRef = 2ABDB7721867D9920069EFC3 /* plotdevice */; }; + 2ABDB7741867D9970069EFC3 /* plotdevice in Copy 'plotdevice' and 'bplotdevice' Tools */ = {isa = PBXBuildFile; fileRef = 2ABDB7721867D9920069EFC3 /* plotdevice */; }; 611CC49810BA8B9E00B55455 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 611CC48110BA8B9E00B55455 /* Credits.rtf */; }; 611CC49C10BA8B9E00B55455 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 611CC48910BA8B9E00B55455 /* InfoPlist.strings */; }; 611CC4A110BA8B9E00B55455 /* PlotDevice.icns in Resources */ = {isa = PBXBuildFile; fileRef = 611CC49310BA8B9E00B55455 /* PlotDevice.icns */; }; @@ -37,6 +36,10 @@ 6155D9F413E2B79E00675A92 /* CHANGES.md in Resources */ = {isa = PBXBuildFile; fileRef = 6155D9F213E2B79E00675A92 /* CHANGES.md */; }; 6155D9F513E2B79E00675A92 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 6155D9F313E2B79E00675A92 /* README.md */; }; 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; + CF0CB1E21975B76A00511DC8 /* plotdevice-term.py in Resources */ = {isa = PBXBuildFile; fileRef = CF0CB1E11975B76A00511DC8 /* plotdevice-term.py */; }; + CFA6011D1977493700D8E07B /* bplotdevice in Resources */ = {isa = PBXBuildFile; fileRef = CFA6011C1977493700D8E07B /* bplotdevice */; }; + CFA6011E1977494500D8E07B /* bplotdevice in Copy 'plotdevice' and 'bplotdevice' Tools */ = {isa = PBXBuildFile; fileRef = CFA6011C1977493700D8E07B /* bplotdevice */; }; + CFF01E861979B49F00907EEA /* Python in Frameworks */ = {isa = PBXBuildFile; fileRef = CFF01E851979B49F00907EEA /* Python */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -68,15 +71,16 @@ name = "Copy Editor Scripts"; runOnlyForDeploymentPostprocessing = 0; }; - 2ABDB76F1867D9560069EFC3 /* Copy 'plotdevice' Tool */ = { + 2ABDB76F1867D9560069EFC3 /* Copy 'plotdevice' and 'bplotdevice' Tools */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 12; files = ( - 2ABDB7741867D9970069EFC3 /* plotdevice in Copy 'plotdevice' Tool */, + CFA6011E1977494500D8E07B /* bplotdevice in Copy 'plotdevice' and 'bplotdevice' Tools */, + 2ABDB7741867D9970069EFC3 /* plotdevice in Copy 'plotdevice' and 'bplotdevice' Tools */, ); - name = "Copy 'plotdevice' Tool"; + name = "Copy 'plotdevice' and 'bplotdevice' Tools"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ @@ -94,7 +98,6 @@ 2A294467185E575F00E9F650 /* document.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = document.py; sourceTree = ""; }; 2A294468185E575F00E9F650 /* preferences.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = preferences.py; sourceTree = ""; }; 2A32957218C59D0A00EEDD1C /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = ""; }; - 2A32957418C59D0A00EEDD1C /* fsevents.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = fsevents.py; sourceTree = ""; }; 2A32957518C59D0A00EEDD1C /* geometry.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = geometry.py; sourceTree = ""; }; 2A32957718C59D0A00EEDD1C /* io.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = io.py; sourceTree = ""; }; 2A32957918C59D0A00EEDD1C /* pathmatics.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = pathmatics.py; sourceTree = ""; }; @@ -110,7 +113,6 @@ 2A7AF5C718D2AFAA00F8FFC2 /* examples */ = {isa = PBXFileReference; lastKnownFileType = folder; path = examples; sourceTree = ""; }; 2A827CC91859E9FE00A126BA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 2A93AE741903326E00C6144D /* English */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = English; path = Resources/English.lproj/placeholder.pdf; sourceTree = ""; }; - 2AA40EBE184BF9CB00981ADC /* libpython2.7.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpython2.7.dylib; path = ../../../../../../usr/lib/libpython2.7.dylib; sourceTree = ""; }; 2ABBB2F91854018B001C4E0A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2ABBB2FB18540246001C4E0A /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 2ABBB2FD185402AC001C4E0A /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; @@ -118,7 +120,7 @@ 2ABDB7681867D8160069EFC3 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = app/main.m; sourceTree = ""; }; 2ABDB7691867D8160069EFC3 /* PlotDevice_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlotDevice_Prefix.pch; path = app/PlotDevice_Prefix.pch; sourceTree = ""; }; 2ABDB76C1867D8210069EFC3 /* PlotDevice-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "PlotDevice-Info.plist"; sourceTree = ""; }; - 2ABDB7721867D9920069EFC3 /* plotdevice */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = plotdevice; path = app/plotdevice; sourceTree = ""; }; + 2ABDB7721867D9920069EFC3 /* plotdevice */ = {isa = PBXFileReference; explicitFileType = text.script.python; fileEncoding = 4; name = plotdevice; path = app/plotdevice; sourceTree = ""; }; 2ABDB7751867EB520069EFC3 /* app.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = app.py; sourceTree = ""; }; 2ABDB7761867EB520069EFC3 /* views.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = views.py; sourceTree = ""; }; 2AC07CB618EF8E7D00B75879 /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = ""; }; @@ -142,8 +144,6 @@ 611CC49310BA8B9E00B55455 /* PlotDevice.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = PlotDevice.icns; path = Resources/PlotDevice.icns; sourceTree = ""; }; 611CC49410BA8B9E00B55455 /* PlotDeviceFile.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = PlotDeviceFile.icns; path = Resources/PlotDeviceFile.icns; sourceTree = ""; }; 611CC4AF10BA8C1B00B55455 /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = ""; }; - 611CC4BB10BA8C1B00B55455 /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = ""; }; - 611CC4BC10BA8C1B00B55455 /* pathmatics.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = pathmatics.py; sourceTree = ""; }; 611CC4D710BA8C1B00B55455 /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = ""; }; 611CC4D910BA8C1B00B55455 /* kgp.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = kgp.py; sourceTree = ""; }; 611CC4DA10BA8C1B00B55455 /* ottobot.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = ottobot.py; sourceTree = ""; }; @@ -154,6 +154,14 @@ 6155D9F213E2B79E00675A92 /* CHANGES.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGES.md; sourceTree = ""; }; 6155D9F313E2B79E00675A92 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = ""; }; 8D15AC370486D014006FF6A4 /* PlotDevice.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PlotDevice.app; sourceTree = BUILT_PRODUCTS_DIR; }; + CF0CB1E11975B76A00511DC8 /* plotdevice-term.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = "plotdevice-term.py"; path = "app/plotdevice-term.py"; sourceTree = ""; }; + CF1C6CCE1975E87800C6C330 /* load-cache.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "load-cache.sh"; sourceTree = ""; }; + CF1C6CCF1975E87800C6C330 /* required-wheels.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "required-wheels.txt"; sourceTree = ""; }; + CF61A9FF196DF61600BDFF1D /* relpath.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = relpath.sh; sourceTree = ""; }; + CFA6011C1977493700D8E07B /* bplotdevice */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = bplotdevice; path = app/bplotdevice; sourceTree = ""; }; + CFC5106C197545210046C918 /* urlcache.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = urlcache.sh; sourceTree = ""; }; + CFC5106D197545210046C918 /* download.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = download.sh; sourceTree = ""; }; + CFF01E851979B49F00907EEA /* Python */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = Python; path = /System/Library/Frameworks/Python.framework/Versions/2.7/Python; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -161,7 +169,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2AA40EBF184BF9CB00981ADC /* libpython2.7.dylib in Frameworks */, + CFF01E861979B49F00907EEA /* Python in Frameworks */, 2ABBB2FC18540246001C4E0A /* CoreVideo.framework in Frameworks */, 2ABBB2FE185402AC001C4E0A /* CoreMedia.framework in Frameworks */, 2ABBB2FA1854018B001C4E0A /* AVFoundation.framework in Frameworks */, @@ -177,7 +185,6 @@ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( - 2AA40EBE184BF9CB00981ADC /* libpython2.7.dylib */, 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; @@ -199,7 +206,7 @@ 8D15AC370486D014006FF6A4 /* PlotDevice.app */, ); name = Products; - sourceTree = ""; + sourceTree = SOURCE_ROOT; }; 2A15C44018A20971006BDFF0 /* ui */ = { isa = PBXGroup; @@ -226,7 +233,6 @@ isa = PBXGroup; children = ( 2A32957218C59D0A00EEDD1C /* __init__.py */, - 2A32957418C59D0A00EEDD1C /* fsevents.py */, 2A32957518C59D0A00EEDD1C /* geometry.py */, 2A32957718C59D0A00EEDD1C /* io.py */, 2A32957918C59D0A00EEDD1C /* pathmatics.py */, @@ -242,6 +248,7 @@ 611CC4AE10BA8C1B00B55455 /* plotdevice */, 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, 2A37F4B8FDCFA73011CA2CEA /* Resources */, + CF61A9FC196DF5DC00BDFF1D /* etc */, 2A7AF5C718D2AFAA00F8FFC2 /* examples */, 2A64AB46195F4E78001E4E69 /* deps */, 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, @@ -253,6 +260,8 @@ 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( + CFA6011C1977493700D8E07B /* bplotdevice */, + CF0CB1E11975B76A00511DC8 /* plotdevice-term.py */, 2ABDB7671867D8160069EFC3 /* plotdevice-app.py */, 2ABDB7681867D8160069EFC3 /* main.m */, 2ABDB7691867D8160069EFC3 /* PlotDevice_Prefix.pch */, @@ -284,6 +293,7 @@ 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + CFF01E851979B49F00907EEA /* Python */, 2AEE843D18B5603900CF91D4 /* CoreText.framework */, 2A15C42C18A1FA14006BDFF0 /* WebKit.framework */, 2A591FEF185C17D200D1833D /* Security.framework */, @@ -331,7 +341,6 @@ 2AC07CD818EF8EC500B75879 /* context.py */, 2AC07CB518EF8E7D00B75879 /* gfx */, 2A32957118C59D0A00EEDD1C /* lib */, - 611CC4BA10BA8C1B00B55455 /* geo */, 611CC4C410BA8C1B00B55455 /* gui */, 2A294457185E539400E9F650 /* run */, 611CC4D610BA8C1B00B55455 /* util */, @@ -339,15 +348,6 @@ path = plotdevice; sourceTree = ""; }; - 611CC4BA10BA8C1B00B55455 /* geo */ = { - isa = PBXGroup; - children = ( - 611CC4BB10BA8C1B00B55455 /* __init__.py */, - 611CC4BC10BA8C1B00B55455 /* pathmatics.py */, - ); - path = geo; - sourceTree = ""; - }; 611CC4C410BA8C1B00B55455 /* gui */ = { isa = PBXGroup; children = ( @@ -374,6 +374,18 @@ path = util; sourceTree = ""; }; + CF61A9FC196DF5DC00BDFF1D /* etc */ = { + isa = PBXGroup; + children = ( + CF1C6CCE1975E87800C6C330 /* load-cache.sh */, + CF1C6CCF1975E87800C6C330 /* required-wheels.txt */, + CFC5106C197545210046C918 /* urlcache.sh */, + CFC5106D197545210046C918 /* download.sh */, + CF61A9FF196DF61600BDFF1D /* relpath.sh */, + ); + path = etc; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -385,9 +397,10 @@ 2A15C43718A20929006BDFF0 /* Copy Editor Assets */, 2A66ECEA18A99303002903DE /* Copy Editor Scripts */, 2A758E411957B7CE003ECF9D /* Copy PlotDevice Module */, - 2ABDB76F1867D9560069EFC3 /* Copy 'plotdevice' Tool */, + 2ABDB76F1867D9560069EFC3 /* Copy 'plotdevice' and 'bplotdevice' Tools */, 8D15AC300486D014006FF6A4 /* Sources */, 8D15AC330486D014006FF6A4 /* Frameworks */, + CFC51073197545B90046C918 /* Install Wheelhouse Packages to App Bundle */, ); buildRules = ( ); @@ -433,6 +446,7 @@ 2ABDB76E1867D8BB0069EFC3 /* plotdevice-app.py in Resources */, 611CC49810BA8B9E00B55455 /* Credits.rtf in Resources */, 611CC49C10BA8B9E00B55455 /* InfoPlist.strings in Resources */, + CF0CB1E21975B76A00511DC8 /* plotdevice-term.py in Resources */, 611CC4A110BA8B9E00B55455 /* PlotDevice.icns in Resources */, 2A93AE751903326E00C6144D /* placeholder.pdf in Resources */, 611CC4A210BA8B9E00B55455 /* PlotDeviceFile.icns in Resources */, @@ -440,6 +454,7 @@ 611CC5A810BA919A00B55455 /* PlotDevicePreferences.xib in Resources */, 611CC68010BAA08300B55455 /* MainMenu.xib in Resources */, 611CC68710BAA0A600B55455 /* AskString.xib in Resources */, + CFA6011D1977493700D8E07B /* bplotdevice in Resources */, 2A7AF5C818D2AFAA00F8FFC2 /* examples in Resources */, 6155D9F413E2B79E00675A92 /* CHANGES.md in Resources */, 6155D9F513E2B79E00675A92 /* README.md in Resources */, @@ -461,7 +476,23 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# let the setup script handle updating\n/usr/bin/python setup.py build\n\n# copy the up-to-date module contents into the app bundle\nEXT_DIR=\"$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/python/\"\nmkdir -p $EXT_DIR\nditto build/lib/plotdevice \"$EXT_DIR/plotdevice\"\n\n# make sure everything has a .pyc (so code-signing doesn't break on first run)\n/usr/bin/python -m compileall \"$EXT_DIR/plotdevice\""; + shellScript = "python=\"/usr/bin/python\"\nif [ -x /usr/local/bin/python ]; then\n python=\"/usr/local/bin/python\"\nfi\n\n# let the setup script handle updating\neval \"${python} setup.py build\"\n\n# copy the up-to-date module contents into the app bundle\nEXT_DIR=\"$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/python/\"\nmkdir -p $EXT_DIR\nditto build/lib/plotdevice \"$EXT_DIR/plotdevice\"\n\n# make sure everything has a .pyc (so code-signing doesn't break on first run)\neval \"${python} -m compileall ${EXT_DIR}/plotdevice\""; + showEnvVarsInLog = 0; + }; + CFC51073197545B90046C918 /* Install Wheelhouse Packages to App Bundle */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Install Wheelhouse Packages to App Bundle"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "python=\"/usr/bin/python\"\nif [ -x /usr/local/bin/python ]; then\npython=\"/usr/local/bin/python\"\nfi\n\n# let the setup script handle wheelhousing\neval \"${python} setup.py wheelhouse\"\n"; + showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -549,10 +580,13 @@ C05733C808A9546B00998B17 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; + ALWAYS_SEARCH_USER_PATHS = YES; COMBINE_HIDPI_IMAGES = YES; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)"; + CONFIGURATION_BUILD_DIR = dist; COPY_PHASE_STRIP = NO; + DEPLOYMENT_LOCATION = NO; + DEPLOYMENT_POSTPROCESSING = NO; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; @@ -561,58 +595,77 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7, + /usr/include/python2.7, ); INFOPLIST_FILE = "app/PlotDevice-Info.plist"; INSTALL_PATH = /Applications; - LIBRARY_SEARCH_PATHS = /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config; + LIBRARY_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7"; MACOSX_DEPLOYMENT_TARGET = 10.9; - ONLY_ACTIVE_ARCH = NO; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ""; PRODUCT_NAME = PlotDevice; SDKROOT = macosx; + VALID_ARCHS = x86_64; }; name = Debug; }; C05733C908A9546B00998B17 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; + ALWAYS_SEARCH_USER_PATHS = YES; COMBINE_HIDPI_IMAGES = YES; CONFIGURATION_BUILD_DIR = dist; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEPLOYMENT_LOCATION = NO; + DEPLOYMENT_POSTPROCESSING = NO; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = app/PlotDevice_Prefix.pch; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7, + /usr/include/python2.7, ); INFOPLIST_FILE = "app/PlotDevice-Info.plist"; INSTALL_PATH = /Applications; - LIBRARY_SEARCH_PATHS = /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config; + LIBRARY_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7"; MACOSX_DEPLOYMENT_TARGET = 10.9; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = ""; PRODUCT_NAME = PlotDevice; SDKROOT = macosx; + VALID_ARCHS = x86_64; }; name = Release; }; C05733CC08A9546B00998B17 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + COPY_PHASE_STRIP = NO; + "DEBUG_INFORMATION_FORMAT[sdk=*]" = ""; + FRAMEWORK_SEARCH_PATHS = ""; MACOSX_DEPLOYMENT_TARGET = 10.9; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = PlotDevice; + SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES; + STRIP_INSTALLED_PRODUCT = NO; + VALID_ARCHS = x86_64; + "VALID_ARCHS[sdk=*]" = x86_64; }; name = Debug; }; C05733CD08A9546B00998B17 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + "DEBUG_INFORMATION_FORMAT[sdk=*]" = ""; + FRAMEWORK_SEARCH_PATHS = ""; MACOSX_DEPLOYMENT_TARGET = 10.9; + ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = PlotDevice; + SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = YES; + VALID_ARCHS = x86_64; + "VALID_ARCHS[sdk=*]" = x86_64; }; name = Release; }; diff --git a/app/PlotDevice_Prefix.pch b/app/PlotDevice_Prefix.pch index f29f26f6..bdbe44d5 100644 --- a/app/PlotDevice_Prefix.pch +++ b/app/PlotDevice_Prefix.pch @@ -5,3 +5,7 @@ #ifdef __OBJC__ #import #endif + +#ifndef PLOTDEVICE_PYTHON + #define PLOTDEVICE_PYTHON "/usr/bin/python" +#endif diff --git a/app/Resources/English.lproj/MainMenu.xib b/app/Resources/English.lproj/MainMenu.xib index 91e0ae34..39d6fd11 100644 --- a/app/Resources/English.lproj/MainMenu.xib +++ b/app/Resources/English.lproj/MainMenu.xib @@ -1,5 +1,5 @@ - + @@ -441,6 +441,12 @@ CQ