Compare commits
70 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 184f87b5d8 | |||
| 3d119373ac | |||
| 891424b084 | |||
| 716e226c62 | |||
| 91cfa93820 | |||
| 94c575f77e | |||
| 7a885c7530 | |||
| 29e2c935d3 | |||
| 1980330a46 | |||
| 832b1df415 | |||
| bf411cd291 | |||
| c946d78130 | |||
| d414d175a7 | |||
| 6bf1080f82 | |||
| b96acc8353 | |||
| 487c9aa91d | |||
| 706e546a1a | |||
| 77577c0fb9 | |||
| e136fd9b96 | |||
| 2364dd5348 | |||
| 1859b11eb8 | |||
| 3a180d52cf | |||
| 21626bfc19 | |||
| 35410babdf | |||
| c467ecee85 | |||
| 9a38e4e877 | |||
| cdd2bba2cc | |||
| f64cbde808 | |||
| 88291b8bda | |||
| 57e3af4583 | |||
| db26ffe28a | |||
| 1d33808cb9 | |||
| b570903bce | |||
| 5411d094ff | |||
| 1d534b1e07 | |||
| ad75161d07 | |||
| 4dc5130995 | |||
| d9f935e76f | |||
| 1d3eaf94b1 | |||
| b2bf822f76 | |||
| 63adfdb342 | |||
| fa0764e04b | |||
| e0c342c291 | |||
| 200c323225 | |||
| dc5974b1e5 | |||
| e1268114a9 | |||
| 835d860546 | |||
| ca2a0134d1 | |||
| 1a5286d567 | |||
| c78b363aed | |||
| 830628bb70 | |||
| 2e7b01e5d7 | |||
| 46d8ce7c57 | |||
| 2bae6bfa00 | |||
| 3a6af2920d | |||
| cbb87fa0e0 | |||
| 52162699c3 | |||
| 746e1b02a5 | |||
| 5b548b9507 | |||
| a3fd1e3023 | |||
| 3368d64376 | |||
| 1948bff0f5 | |||
| e30572a7f1 | |||
| 6ce1490fa9 | |||
| 4aadd80fe8 | |||
| aec4a42363 | |||
| a68912d9b2 | |||
| 2aa38d60cc | |||
| e23797f70a | |||
| 7a9daedc0e |
@@ -1 +1,70 @@
|
||||
WorkspaceSettings.xcsettings
|
||||
# Xcode
|
||||
#
|
||||
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||
|
||||
## User settings
|
||||
xcuserdata/
|
||||
|
||||
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
|
||||
*.xcscmblueprint
|
||||
*.xccheckout
|
||||
|
||||
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
|
||||
build/
|
||||
DerivedData/
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
|
||||
## App packaging
|
||||
*.ipa
|
||||
*.dSYM.zip
|
||||
*.dSYM
|
||||
|
||||
# CocoaPods
|
||||
#
|
||||
# We recommend against adding the Pods directory to your .gitignore. However
|
||||
# you should judge for yourself, the pros and cons are mentioned at:
|
||||
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
||||
#
|
||||
# Pods/
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from the Xcode workspace
|
||||
# *.xcworkspace
|
||||
|
||||
# Carthage
|
||||
#
|
||||
# Add this line if you want to avoid checking in source code from Carthage dependencies.
|
||||
# Carthage/Checkouts
|
||||
|
||||
Carthage/Build/
|
||||
|
||||
# fastlane
|
||||
#
|
||||
# It is recommended to not store the screenshots in the git repo.
|
||||
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
|
||||
# For more information about the recommended setup visit:
|
||||
# https://docs.fastlane.tools/best-practices/source-control/#source-control
|
||||
|
||||
fastlane/report.xml
|
||||
fastlane/Preview.html
|
||||
fastlane/screenshots/**/*.png
|
||||
fastlane/test_output
|
||||
|
||||
# Code Injection
|
||||
#
|
||||
# After new code Injection tools there's a generated folder /iOSInjectionProject
|
||||
# https://github.com/johnno1962/injectionforxcode
|
||||
|
||||
iOSInjectionProject/
|
||||
xcshareddata
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "Mousecape/Mousecape/external/Sparkle"]
|
||||
path = Mousecape/Mousecape/external/Sparkle
|
||||
url = https://github.com/sparkle-project/Sparkle.git
|
||||
@@ -3,15 +3,12 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objectVersion = 54;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
FA04886C189F58B1001F3AB5 /* Edit.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA048868189F58B1001F3AB5 /* Edit.xib */; };
|
||||
FA04886D189F58B1001F3AB5 /* Library.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA04886A189F58B1001F3AB5 /* Library.xib */; };
|
||||
FA14DE8D18CE596B00A73BF4 /* RBLClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA14DE8A18CE596B00A73BF4 /* RBLClipView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FA14DE8E18CE596B00A73BF4 /* RBLScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA14DE8C18CE596B00A73BF4 /* RBLScrollView.m */; };
|
||||
FA14DE9118CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FA14DE9018CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FA1DC01919527A73009E879C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA359844189DBA3800288163 /* SystemConfiguration.framework */; };
|
||||
FA1DC01A19527A79009E879C /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA254779189D85890038E1D9 /* ApplicationServices.framework */; };
|
||||
FA35983F189DA3BC00288163 /* MCPrefs.m in Sources */ = {isa = PBXBuildFile; fileRef = FA35983E189DA3BC00288163 /* MCPrefs.m */; };
|
||||
@@ -24,20 +21,28 @@
|
||||
FA5107E818A823BD00917185 /* MASPreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5107E318A823BD00917185 /* MASPreferencesWindowController.m */; };
|
||||
FA5107ED18A8253600917185 /* MCGeneralPreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5107EB18A8253600917185 /* MCGeneralPreferencesController.m */; };
|
||||
FA5107EE18A8253600917185 /* GeneralPreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA5107EC18A8253600917185 /* GeneralPreferences.xib */; };
|
||||
FA57339724954AB000103FCF /* RBLClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA57339124954AB000103FCF /* RBLClipView.m */; };
|
||||
FA57339824954AB000103FCF /* NSColor+RBLCGColorAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FA57339224954AB000103FCF /* NSColor+RBLCGColorAdditions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FA57339924954AB000103FCF /* RBLScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA57339624954AB000103FCF /* RBLScrollView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FA7582B8193D377300CE223C /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA7582B7193D377300CE223C /* ApplicationServices.framework */; };
|
||||
FA8FF76B189D664400750E51 /* restore.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF76A189D664400750E51 /* restore.m */; };
|
||||
FA8FF76E189D66CB00750E51 /* backup.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF76D189D66CB00750E51 /* backup.m */; };
|
||||
FA8FF771189D66D800750E51 /* apply.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF770189D66D800750E51 /* apply.m */; };
|
||||
FA8FF774189D67B100750E51 /* create.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF773189D67B100750E51 /* create.m */; };
|
||||
FA901D002C437ADD006983AA /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FADF013A198A2C7500006228 /* Sparkle.framework */; };
|
||||
FA901D012C437ADD006983AA /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FADF013A198A2C7500006228 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
FA9A48AB2353C6EF009CF05E /* NSBitmapImageRep+ColorSpace.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */; };
|
||||
FAAEF8F4189EB32700145DF8 /* BTRClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = FAAEF8F1189EB32700145DF8 /* BTRClipView.m */; };
|
||||
FAAEF8F5189EB32700145DF8 /* BTRScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = FAAEF8F3189EB32700145DF8 /* BTRScrollView.m */; };
|
||||
FAAEF8F7189EB34700145DF8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAAEF8F6189EB34700145DF8 /* QuartzCore.framework */; };
|
||||
FAAEF94E189EFC9300145DF8 /* create.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF773189D67B100750E51 /* create.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FAAEF94F189EFC9600145DF8 /* backup.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF76D189D66CB00750E51 /* backup.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FAAEF950189EFC9800145DF8 /* apply.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF770189D66D800750E51 /* apply.m */; };
|
||||
FAAEF950189EFC9800145DF8 /* apply.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF770189D66D800750E51 /* apply.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FAAEF951189F0CC300145DF8 /* restore.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF76A189D664400750E51 /* restore.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FAAEF957189F4ED300145DF8 /* scale.m in Sources */ = {isa = PBXBuildFile; fileRef = FAAEF956189F4ED300145DF8 /* scale.m */; };
|
||||
FAAEF958189F4F8200145DF8 /* scale.m in Sources */ = {isa = PBXBuildFile; fileRef = FAAEF956189F4ED300145DF8 /* scale.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
FABA44D421D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */; };
|
||||
FABA44D521D9D947009B10D9 /* NSBitmapImageRep+ColorSpace.m in Sources */ = {isa = PBXBuildFile; fileRef = FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */; };
|
||||
FAC69F65189D603C00BC829D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FAC69F64189D603C00BC829D /* Cocoa.framework */; };
|
||||
FAC69F6F189D603C00BC829D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = FAC69F6D189D603C00BC829D /* InfoPlist.strings */; };
|
||||
FAC69F71189D603C00BC829D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69F70189D603C00BC829D /* main.m */; };
|
||||
@@ -46,7 +51,6 @@
|
||||
FAC69F7B189D603C00BC829D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = FAC69F79189D603C00BC829D /* MainMenu.xib */; };
|
||||
FAC69F7D189D603C00BC829D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAC69F7C189D603C00BC829D /* Images.xcassets */; };
|
||||
FAC69FB1189D608900BC829D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FB0189D608900BC829D /* main.m */; };
|
||||
FAC69FB5189D608900BC829D /* mousecloak.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FAC69FB4189D608900BC829D /* mousecloak.1 */; };
|
||||
FAC69FD4189D609B00BC829D /* GBCommandLineParser.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FCF189D609B00BC829D /* GBCommandLineParser.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
|
||||
FAC69FD5189D609B00BC829D /* GBOptionsHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FD1189D609B00BC829D /* GBOptionsHelper.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
|
||||
FAC69FD6189D609B00BC829D /* GBSettings.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FD3189D609B00BC829D /* GBSettings.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
|
||||
@@ -90,16 +94,117 @@
|
||||
remoteGlobalIDString = FAC69FAC189D608900BC829D;
|
||||
remoteInfo = mousecloak;
|
||||
};
|
||||
FA901CF22C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 726B2B5D1C645FC900388755;
|
||||
remoteInfo = "UI Tests";
|
||||
};
|
||||
FA901CF42C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 722954B41D04ADAF00ECF9CA;
|
||||
remoteInfo = fileop;
|
||||
};
|
||||
FA901CF62C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5AE13FB31E0D9E07000D2C2C;
|
||||
remoteInfo = generate_appcast;
|
||||
};
|
||||
FA901CF82C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5AB8F19F214DA72000A1187F;
|
||||
remoteInfo = generate_keys;
|
||||
};
|
||||
FA901CFA2C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5A5ADED7214EDE4900DF0099;
|
||||
remoteInfo = sign_update;
|
||||
};
|
||||
FA901CFC2C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = EA4311EA229D651300A5503D;
|
||||
remoteInfo = bsdiff;
|
||||
};
|
||||
FA901CFE2C437914006983AA /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = EA4311A0229D5FBC00A5503D;
|
||||
remoteInfo = ed25519;
|
||||
};
|
||||
FADF0139198A2C7500006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
|
||||
remoteInfo = Sparkle;
|
||||
};
|
||||
FADF013B198A2C7500006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 61B5F90209C4CEE200B25A18;
|
||||
remoteInfo = "Sparkle Test App";
|
||||
};
|
||||
FADF013D198A2C7500006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 612279D90DB5470200AB99EA;
|
||||
remoteInfo = "Sparkle Unit Tests";
|
||||
};
|
||||
FADF013F198A2C7500006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5D06E8D00FD68C7C005AE3F6;
|
||||
remoteInfo = BinaryDelta;
|
||||
};
|
||||
FADF0141198A2C7500006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 55C14BB7136EEF1500649790;
|
||||
remoteInfo = Autoupdate;
|
||||
};
|
||||
FADF0144198A2CA100006228 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
|
||||
remoteInfo = Sparkle;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
FA901D022C437ADD006983AA /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
FA901D012C437ADD006983AA /* Sparkle.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
FAC69FAB189D608900BC829D /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
FAC69FB5189D608900BC829D /* mousecloak.1 in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
@@ -130,12 +235,6 @@
|
||||
/* Begin PBXFileReference section */
|
||||
FA048869189F58B1001F3AB5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Edit.xib; sourceTree = "<group>"; };
|
||||
FA04886B189F58B1001F3AB5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Library.xib; sourceTree = "<group>"; };
|
||||
FA14DE8918CE596B00A73BF4 /* RBLClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RBLClipView.h; sourceTree = "<group>"; };
|
||||
FA14DE8A18CE596B00A73BF4 /* RBLClipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLClipView.m; sourceTree = "<group>"; };
|
||||
FA14DE8B18CE596B00A73BF4 /* RBLScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RBLScrollView.h; sourceTree = "<group>"; };
|
||||
FA14DE8C18CE596B00A73BF4 /* RBLScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLScrollView.m; sourceTree = "<group>"; };
|
||||
FA14DE8F18CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSColor+RBLCGColorAdditions.h"; sourceTree = "<group>"; };
|
||||
FA14DE9018CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSColor+RBLCGColorAdditions.m"; sourceTree = "<group>"; };
|
||||
FA1DC01719527A56009E879C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
FA254779189D85890038E1D9 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; };
|
||||
FA35983D189DA3BC00288163 /* MCPrefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCPrefs.h; sourceTree = "<group>"; };
|
||||
@@ -152,6 +251,16 @@
|
||||
FA5107EA18A8253600917185 /* MCGeneralPreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MCGeneralPreferencesController.h; path = Preferences/MCGeneralPreferencesController.h; sourceTree = "<group>"; };
|
||||
FA5107EB18A8253600917185 /* MCGeneralPreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MCGeneralPreferencesController.m; path = Preferences/MCGeneralPreferencesController.m; sourceTree = "<group>"; };
|
||||
FA5107EC18A8253600917185 /* GeneralPreferences.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = GeneralPreferences.xib; path = Preferences/GeneralPreferences.xib; sourceTree = "<group>"; };
|
||||
FA57338B2495473A00103FCF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = "<group>"; };
|
||||
FA57338D2495474200103FCF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Library.strings; sourceTree = "<group>"; };
|
||||
FA57338F2495474800103FCF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Edit.strings; sourceTree = "<group>"; };
|
||||
FA57339124954AB000103FCF /* RBLClipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLClipView.m; sourceTree = "<group>"; };
|
||||
FA57339224954AB000103FCF /* NSColor+RBLCGColorAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSColor+RBLCGColorAdditions.m"; sourceTree = "<group>"; };
|
||||
FA57339324954AB000103FCF /* RBLScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RBLScrollView.h; sourceTree = "<group>"; };
|
||||
FA57339424954AB000103FCF /* RBLClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RBLClipView.h; sourceTree = "<group>"; };
|
||||
FA57339524954AB000103FCF /* NSColor+RBLCGColorAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSColor+RBLCGColorAdditions.h"; sourceTree = "<group>"; };
|
||||
FA57339624954AB000103FCF /* RBLScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RBLScrollView.m; sourceTree = "<group>"; };
|
||||
FA5733A32495667900103FCF /* Mousecape.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mousecape.entitlements; sourceTree = "<group>"; };
|
||||
FA7582B7193D377300CE223C /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = ../../../../../../../../../System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<group>"; };
|
||||
FA8FF769189D663B00750E51 /* restore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = restore.h; sourceTree = "<group>"; };
|
||||
FA8FF76A189D664400750E51 /* restore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = restore.m; sourceTree = "<group>"; };
|
||||
@@ -168,6 +277,8 @@
|
||||
FAAEF8F6189EB34700145DF8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
FAAEF955189F4ECC00145DF8 /* scale.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scale.h; sourceTree = "<group>"; };
|
||||
FAAEF956189F4ED300145DF8 /* scale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = scale.m; sourceTree = "<group>"; };
|
||||
FABA44D221D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSBitmapImageRep+ColorSpace.h"; sourceTree = "<group>"; };
|
||||
FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSBitmapImageRep+ColorSpace.m"; sourceTree = "<group>"; };
|
||||
FAC69F61189D603C00BC829D /* Mousecape.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mousecape.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FAC69F64189D603C00BC829D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
FAC69F67189D603C00BC829D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
@@ -187,7 +298,6 @@
|
||||
FAC69FAD189D608900BC829D /* mousecloak */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mousecloak; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FAC69FB0189D608900BC829D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
FAC69FB3189D608900BC829D /* mousecloak-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "mousecloak-Prefix.pch"; sourceTree = "<group>"; };
|
||||
FAC69FB4189D608900BC829D /* mousecloak.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = mousecloak.1; sourceTree = "<group>"; };
|
||||
FAC69FBA189D609B00BC829D /* CarbonHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CarbonHelpers.h; sourceTree = "<group>"; };
|
||||
FAC69FBB189D609B00BC829D /* CGSAccessibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGSAccessibility.h; sourceTree = "<group>"; };
|
||||
FAC69FBC189D609B00BC829D /* CGSCIFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGSCIFilter.h; sourceTree = "<group>"; };
|
||||
@@ -218,6 +328,7 @@
|
||||
FADBC15018CE51C000B9510F /* DTScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTScrollView.m; sourceTree = "<group>"; };
|
||||
FADBC15218CE535200B9510F /* MCCapePreviewItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCCapePreviewItem.h; sourceTree = "<group>"; };
|
||||
FADBC15318CE535200B9510F /* MCCapePreviewItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MCCapePreviewItem.m; sourceTree = "<group>"; };
|
||||
FADF012E198A2C7400006228 /* Sparkle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Sparkle.xcodeproj; path = Sparkle/Sparkle.xcodeproj; sourceTree = "<group>"; };
|
||||
FAE5D54919526F82007620DE /* com.alexzielenski.mousecloakhelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = com.alexzielenski.mousecloakhelper.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FAE5D54C19526F82007620DE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
FAE5D57519527245007620DE /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
@@ -260,6 +371,7 @@
|
||||
files = (
|
||||
FAAEF8F7189EB34700145DF8 /* QuartzCore.framework in Frameworks */,
|
||||
FA35984D189DC55A00288163 /* ServiceManagement.framework in Frameworks */,
|
||||
FA901D002C437ADD006983AA /* Sparkle.framework in Frameworks */,
|
||||
FA359849189DC40100288163 /* Security.framework in Frameworks */,
|
||||
FAC69F65189D603C00BC829D /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
@@ -287,19 +399,6 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
FA14DE8818CE596B00A73BF4 /* Rebel */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA14DE8918CE596B00A73BF4 /* RBLClipView.h */,
|
||||
FA14DE8A18CE596B00A73BF4 /* RBLClipView.m */,
|
||||
FA14DE8B18CE596B00A73BF4 /* RBLScrollView.h */,
|
||||
FA14DE8C18CE596B00A73BF4 /* RBLScrollView.m */,
|
||||
FA14DE8F18CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.h */,
|
||||
FA14DE9018CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.m */,
|
||||
);
|
||||
path = Rebel;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA5107DD18A823BD00917185 /* MASPreferences */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -321,10 +420,24 @@
|
||||
name = Preferences;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA57339024954AB000103FCF /* Rebel */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA57339124954AB000103FCF /* RBLClipView.m */,
|
||||
FA57339224954AB000103FCF /* NSColor+RBLCGColorAdditions.m */,
|
||||
FA57339324954AB000103FCF /* RBLScrollView.h */,
|
||||
FA57339424954AB000103FCF /* RBLClipView.h */,
|
||||
FA57339524954AB000103FCF /* NSColor+RBLCGColorAdditions.h */,
|
||||
FA57339624954AB000103FCF /* RBLScrollView.m */,
|
||||
);
|
||||
path = Rebel;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAAEF8EE189EB32700145DF8 /* external */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA14DE8818CE596B00A73BF4 /* Rebel */,
|
||||
FADF012E198A2C7400006228 /* Sparkle.xcodeproj */,
|
||||
FA57339024954AB000103FCF /* Rebel */,
|
||||
FADBC14E18CE51C000B9510F /* DTScrollView */,
|
||||
FA5107DD18A823BD00917185 /* MASPreferences */,
|
||||
FAAEF8EF189EB32700145DF8 /* BTRKit */,
|
||||
@@ -395,6 +508,7 @@
|
||||
FAC69F6A189D603C00BC829D /* Mousecape */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA5733A32495667900103FCF /* Mousecape.entitlements */,
|
||||
FAEE650818A047E8003AA182 /* categories */,
|
||||
FAEE650D18A047E8003AA182 /* controllers */,
|
||||
FAEE651C18A047E8003AA182 /* models */,
|
||||
@@ -448,8 +562,9 @@
|
||||
FAAEF955189F4ECC00145DF8 /* scale.h */,
|
||||
FAAEF956189F4ED300145DF8 /* scale.m */,
|
||||
FAC69FCB189D609B00BC829D /* NSCursor_Private.h */,
|
||||
FAC69FB4189D608900BC829D /* mousecloak.1 */,
|
||||
FAC69FB2189D608900BC829D /* Supporting Files */,
|
||||
FABA44D221D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.h */,
|
||||
FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */,
|
||||
);
|
||||
path = mousecloak;
|
||||
sourceTree = "<group>";
|
||||
@@ -515,6 +630,25 @@
|
||||
path = DTScrollView;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FADF012F198A2C7400006228 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FADF013A198A2C7500006228 /* Sparkle.framework */,
|
||||
FADF013C198A2C7500006228 /* Sparkle Test App.app */,
|
||||
FADF013E198A2C7500006228 /* Sparkle Unit Tests.xctest */,
|
||||
FADF0140198A2C7500006228 /* BinaryDelta */,
|
||||
FADF0142198A2C7500006228 /* Autoupdate.app */,
|
||||
FA901CF32C437914006983AA /* UI Tests.xctest */,
|
||||
FA901CF52C437914006983AA /* fileop */,
|
||||
FA901CF72C437914006983AA /* generate_appcast */,
|
||||
FA901CF92C437914006983AA /* generate_keys */,
|
||||
FA901CFB2C437914006983AA /* sign_update */,
|
||||
FA901CFD2C437914006983AA /* libbsdiff.a */,
|
||||
FA901CFF2C437914006983AA /* libed25519.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAE5D54A19526F82007620DE /* mousecloakHelper */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -618,10 +752,12 @@
|
||||
FA359841189DAAF900288163 /* Build Number */,
|
||||
FAE5D57D1952734F007620DE /* Copy Tool */,
|
||||
FAE5D57F1952737F007620DE /* Copy Helper */,
|
||||
FA901D022C437ADD006983AA /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
FADF0145198A2CA100006228 /* PBXTargetDependency */,
|
||||
FA359847189DBEB700288163 /* PBXTargetDependency */,
|
||||
);
|
||||
name = Mousecape;
|
||||
@@ -669,30 +805,44 @@
|
||||
FAC69F59189D603C00BC829D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = YES;
|
||||
CLASSPREFIX = MC;
|
||||
LastUpgradeCheck = 0600;
|
||||
LastUpgradeCheck = 1500;
|
||||
ORGANIZATIONNAME = "Alex Zielenski";
|
||||
TargetAttributes = {
|
||||
FAC69F60189D603C00BC829D = {
|
||||
DevelopmentTeam = 3GD8ABJ22W;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
FAC69FAC189D608900BC829D = {
|
||||
DevelopmentTeam = 3GD8ABJ22W;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
FAE5D54819526F82007620DE = {
|
||||
CreatedOnToolsVersion = 6.0;
|
||||
DevelopmentTeam = 3GD8ABJ22W;
|
||||
ProvisioningStyle = Automatic;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = FAC69F5C189D603C00BC829D /* Build configuration list for PBXProject "Mousecape" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
no,
|
||||
);
|
||||
mainGroup = FAC69F58189D603C00BC829D;
|
||||
productRefGroup = FAC69F62189D603C00BC829D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = FADF012F198A2C7400006228 /* Products */;
|
||||
ProjectRef = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
FAC69F60189D603C00BC829D /* Mousecape */,
|
||||
@@ -702,6 +852,93 @@
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
FA901CF32C437914006983AA /* UI Tests.xctest */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
path = "UI Tests.xctest";
|
||||
remoteRef = FA901CF22C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CF52C437914006983AA /* fileop */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = "compiled.mach-o.executable";
|
||||
path = fileop;
|
||||
remoteRef = FA901CF42C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CF72C437914006983AA /* generate_appcast */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = "compiled.mach-o.executable";
|
||||
path = generate_appcast;
|
||||
remoteRef = FA901CF62C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CF92C437914006983AA /* generate_keys */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = "compiled.mach-o.executable";
|
||||
path = generate_keys;
|
||||
remoteRef = FA901CF82C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CFB2C437914006983AA /* sign_update */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = "compiled.mach-o.executable";
|
||||
path = sign_update;
|
||||
remoteRef = FA901CFA2C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CFD2C437914006983AA /* libbsdiff.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libbsdiff.a;
|
||||
remoteRef = FA901CFC2C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FA901CFF2C437914006983AA /* libed25519.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libed25519.a;
|
||||
remoteRef = FA901CFE2C437914006983AA /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FADF013A198A2C7500006228 /* Sparkle.framework */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.framework;
|
||||
path = Sparkle.framework;
|
||||
remoteRef = FADF0139198A2C7500006228 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FADF013C198A2C7500006228 /* Sparkle Test App.app */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.application;
|
||||
path = "Sparkle Test App.app";
|
||||
remoteRef = FADF013B198A2C7500006228 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FADF013E198A2C7500006228 /* Sparkle Unit Tests.xctest */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.cfbundle;
|
||||
path = "Sparkle Unit Tests.xctest";
|
||||
remoteRef = FADF013D198A2C7500006228 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FADF0140198A2C7500006228 /* BinaryDelta */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = "compiled.mach-o.executable";
|
||||
path = BinaryDelta;
|
||||
remoteRef = FADF013F198A2C7500006228 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FADF0142198A2C7500006228 /* Autoupdate.app */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = wrapper.application;
|
||||
path = Autoupdate.app;
|
||||
remoteRef = FADF0141198A2C7500006228 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
FAC69F5F189D603C00BC829D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
@@ -730,7 +967,8 @@
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
FA359841189DAAF900288163 /* Build Number */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
alwaysOutOfDate = 1;
|
||||
buildActionMask = 8;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
@@ -738,9 +976,9 @@
|
||||
name = "Build Number";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "#!/bin/bash\n\nbuildPlist=${INFOPLIST_FILE}\nCFBundleVersion=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" $buildPlist)\nBuildNumberINCR=$((CFBundleVersion + 1))\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $BuildNumberINCR\" $buildPlist\n";
|
||||
shellScript = "#!/bin/bash\n\nbuildPlist=${INFOPLIST_FILE}\nCFBundleVersion=$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" $buildPlist)\nBuildNumberINCR=$((CFBundleVersion + 1))\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion $BuildNumberINCR\" $buildPlist\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString $BuildNumberINCR\" $buildPlist\n\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
@@ -749,6 +987,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FABA44D521D9D947009B10D9 /* NSBitmapImageRep+ColorSpace.m in Sources */,
|
||||
FAEE653018A047E8003AA182 /* MCLibraryViewController.m in Sources */,
|
||||
FAEE653618A047E8003AA182 /* MMAnimatingImageView.m in Sources */,
|
||||
FAEE653318A047E8003AA182 /* MCCursorLibrary.m in Sources */,
|
||||
@@ -759,18 +998,18 @@
|
||||
FAAEF94E189EFC9300145DF8 /* create.m in Sources */,
|
||||
FAEE652C18A047E8003AA182 /* MCEditDetailController.m in Sources */,
|
||||
FAAEF94F189EFC9600145DF8 /* backup.m in Sources */,
|
||||
FA57339724954AB000103FCF /* RBLClipView.m in Sources */,
|
||||
FA5107ED18A8253600917185 /* MCGeneralPreferencesController.m in Sources */,
|
||||
FAAEF951189F0CC300145DF8 /* restore.m in Sources */,
|
||||
FA57339824954AB000103FCF /* NSColor+RBLCGColorAdditions.m in Sources */,
|
||||
FAAEF950189EFC9800145DF8 /* apply.m in Sources */,
|
||||
FAEE652918A047E8003AA182 /* NSFileManager+DirectoryLocations.m in Sources */,
|
||||
FA14DE9118CE59A600A73BF4 /* NSColor+RBLCGColorAdditions.m in Sources */,
|
||||
FA5107E818A823BD00917185 /* MASPreferencesWindowController.m in Sources */,
|
||||
FAEE652D18A047E8003AA182 /* MCEditListController.m in Sources */,
|
||||
FAC69F71189D603C00BC829D /* main.m in Sources */,
|
||||
FAEE653218A047E8003AA182 /* MCCursor.m in Sources */,
|
||||
FAAEF958189F4F8200145DF8 /* scale.m in Sources */,
|
||||
FAEE653418A047E8003AA182 /* MCFormatters.m in Sources */,
|
||||
FA14DE8E18CE596B00A73BF4 /* RBLScrollView.m in Sources */,
|
||||
FAAEF8F4189EB32700145DF8 /* BTRClipView.m in Sources */,
|
||||
FAAEF8F5189EB32700145DF8 /* BTRScrollView.m in Sources */,
|
||||
FAC69FDC189D636700BC829D /* MCDefs.m in Sources */,
|
||||
@@ -778,9 +1017,9 @@
|
||||
FA359840189DA3C100288163 /* MCPrefs.m in Sources */,
|
||||
FAEE652B18A047E8003AA182 /* MCEditCapeController.m in Sources */,
|
||||
FADBC15418CE535200B9510F /* MCCapePreviewItem.m in Sources */,
|
||||
FA57339924954AB000103FCF /* RBLScrollView.m in Sources */,
|
||||
FAEE652A18A047E8003AA182 /* NSOrderedSet+AZSortedInsert.m in Sources */,
|
||||
FADBC15118CE51C000B9510F /* DTScrollView.m in Sources */,
|
||||
FA14DE8D18CE596B00A73BF4 /* RBLClipView.m in Sources */,
|
||||
FAEE653518A047E8003AA182 /* MCCapeCellView.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -801,6 +1040,7 @@
|
||||
FAC69FDD189D636700BC829D /* MCDefs.m in Sources */,
|
||||
FAC69FD4189D609B00BC829D /* GBCommandLineParser.m in Sources */,
|
||||
FA8FF774189D67B100750E51 /* create.m in Sources */,
|
||||
FABA44D421D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -816,6 +1056,7 @@
|
||||
FAE5D5701952700B007620DE /* apply.m in Sources */,
|
||||
FAE5D5721952700B007620DE /* listen.m in Sources */,
|
||||
FAE5D578195272DD007620DE /* scale.m in Sources */,
|
||||
FA9A48AB2353C6EF009CF05E /* NSBitmapImageRep+ColorSpace.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -827,6 +1068,11 @@
|
||||
target = FAC69FAC189D608900BC829D /* mousecloak */;
|
||||
targetProxy = FA359846189DBEB700288163 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FADF0145198A2CA100006228 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = Sparkle;
|
||||
targetProxy = FADF0144198A2CA100006228 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
@@ -834,6 +1080,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FA048869189F58B1001F3AB5 /* Base */,
|
||||
FA57338F2495474800103FCF /* en */,
|
||||
);
|
||||
name = Edit.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -842,6 +1089,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FA04886B189F58B1001F3AB5 /* Base */,
|
||||
FA57338D2495474200103FCF /* en */,
|
||||
);
|
||||
name = Library.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -866,6 +1114,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FAC69F7A189D603C00BC829D /* Base */,
|
||||
FA57338B2495473A00103FCF /* en */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -877,22 +1126,40 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = YES;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"PROJECT_DIR=\\\"\"$(PROJECT_DIR)\"\\\"",
|
||||
@@ -906,9 +1173,9 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx10.9;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -916,23 +1183,40 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = YES;
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "Developer ID Application";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "PROJECT_DIR=\\\"\"$(PROJECT_DIR)\"\\\"";
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
@@ -940,21 +1224,32 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
SDKROOT = macosx10.9;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.13;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
FAC69F93189D603C00BC829D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon2;
|
||||
CODE_SIGN_ENTITLEMENTS = Mousecape/Mousecape.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Mousecape/Mousecape-Prefix.pch";
|
||||
INFOPLIST_FILE = "Mousecape/Mousecape-Info.plist";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.9;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST))",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.alexzielenski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -962,13 +1257,24 @@
|
||||
FAC69F94189D603C00BC829D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon2;
|
||||
CODE_SIGN_ENTITLEMENTS = Mousecape/Mousecape.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Mousecape/Mousecape-Prefix.pch";
|
||||
INFOPLIST_FILE = "Mousecape/Mousecape-Info.plist";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.9;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(LD_RUNPATH_SEARCH_PATHS_$(IS_MACCATALYST))",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.alexzielenski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
@@ -977,6 +1283,12 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
@@ -989,6 +1301,8 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -996,6 +1310,12 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@@ -1004,6 +1324,8 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -1013,8 +1335,14 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
@@ -1029,9 +1357,15 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
INFOPLIST_FILE = mousecloakHelper/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
METAL_ENABLE_DEBUG_INFO = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${PRODUCT_NAME}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -1041,9 +1375,15 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
@@ -1054,9 +1394,15 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
INFOPLIST_FILE = mousecloakHelper/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
METAL_ENABLE_DEBUG_INFO = NO;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "${PRODUCT_NAME}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Bucket
|
||||
type = "1"
|
||||
version = "2.0">
|
||||
</Bucket>
|
||||
@@ -1,96 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0500"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69F60189D603C00BC829D"
|
||||
BuildableName = "Mousecape.app"
|
||||
BlueprintName = "Mousecape"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69F81189D603C00BC829D"
|
||||
BuildableName = "MousecapeTests.xctest"
|
||||
BlueprintName = "MousecapeTests"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69F60189D603C00BC829D"
|
||||
BuildableName = "Mousecape.app"
|
||||
BlueprintName = "Mousecape"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69F60189D603C00BC829D"
|
||||
BuildableName = "Mousecape.app"
|
||||
BlueprintName = "Mousecape"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69F60189D603C00BC829D"
|
||||
BuildableName = "Mousecape.app"
|
||||
BlueprintName = "Mousecape"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0500"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69FAC189D608900BC829D"
|
||||
BuildableName = "mousecloak"
|
||||
BlueprintName = "mousecloak"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69FAC189D608900BC829D"
|
||||
BuildableName = "mousecloak"
|
||||
BlueprintName = "mousecloak"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69FAC189D608900BC829D"
|
||||
BuildableName = "mousecloak"
|
||||
BlueprintName = "mousecloak"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAC69FAC189D608900BC829D"
|
||||
BuildableName = "mousecloak"
|
||||
BlueprintName = "mousecloak"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,86 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0600"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAE5D54819526F82007620DE"
|
||||
BuildableName = "com.alexzielenski.mousecloakhelper.app"
|
||||
BlueprintName = "com.alexzielenski.mousecloakhelper"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAE5D54819526F82007620DE"
|
||||
BuildableName = "com.alexzielenski.mousecloakhelper.app"
|
||||
BlueprintName = "com.alexzielenski.mousecloakhelper"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAE5D54819526F82007620DE"
|
||||
BuildableName = "com.alexzielenski.mousecloakhelper.app"
|
||||
BlueprintName = "com.alexzielenski.mousecloakhelper"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "FAE5D54819526F82007620DE"
|
||||
BuildableName = "com.alexzielenski.mousecloakhelper.app"
|
||||
BlueprintName = "com.alexzielenski.mousecloakhelper"
|
||||
ReferencedContainer = "container:Mousecape.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Mousecape.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>mousecloak.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>mousecloakHelper.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>FAC69F60189D603C00BC829D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>FAC69F81189D603C00BC829D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>FAC69F9B189D605300BC829D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>FAC69FAC189D608900BC829D</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>FAE5D54819526F82007620DE</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>FAE5D55A19526F82007620DE</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6154.21" systemVersion="13D65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6154.21"/>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MCEditWindowController">
|
||||
@@ -14,38 +16,38 @@
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="1" customClass="NSPanel">
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="1" customClass="NSPanel">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="525" height="297"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
|
||||
<value key="minSize" type="size" width="500" height="310"/>
|
||||
<rect key="contentRect" x="196" y="240" width="525" height="296"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="500" height="296"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="297"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<splitView canDrawConcurrently="YES" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3cj-R9-WKK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="297"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="296"/>
|
||||
<subviews>
|
||||
<customView id="IHY-vi-Wpr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="297"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<scrollView canDrawConcurrently="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="34" horizontalPageScroll="10" verticalLineScroll="34" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2UQ-R4-qJn">
|
||||
<rect key="frame" x="0.0" y="22" width="135" height="275"/>
|
||||
<rect key="frame" x="0.0" y="22" width="135" height="274"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="ame-2S-JV7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="275"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="274"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="32" rowSizeStyle="automatic" viewBased="YES" id="MU4-Yh-0PJ">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="274"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn editable="NO" width="132" minWidth="40" maxWidth="1000" id="B1d-Yp-OOR">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -61,7 +63,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="tn7-kB-Fvu">
|
||||
<rect key="frame" x="6" y="8" width="120" height="17"/>
|
||||
<rect key="frame" x="6" y="8" width="120" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="8we-kW-bNk">
|
||||
<font key="font" metaFont="systemBold"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -91,7 +93,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="W6i-Uv-3TI">
|
||||
<rect key="frame" x="6" y="0.0" width="120" height="17"/>
|
||||
<rect key="frame" x="6" y="1" width="120" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="8bB-Ws-20v">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -124,10 +126,10 @@
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="ARR-bd-5zK">
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ARR-bd-5zK">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="3rZ-7d-Mro">
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3rZ-7d-Mro">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
@@ -146,10 +148,10 @@
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="w4h-lB-jLi">
|
||||
<rect key="frame" x="22" y="0.0" width="22" height="22"/>
|
||||
<rect key="frame" x="22" y="0.0" width="22" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="22" id="L21-Ci-myo"/>
|
||||
<constraint firstAttribute="height" constant="22" id="M80-94-gpJ"/>
|
||||
<constraint firstAttribute="height" constant="20" id="M80-94-gpJ"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="HjH-hq-TxT">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
@@ -159,14 +161,11 @@
|
||||
<action selector="removeAction:" target="oUs-Nv-PHw" id="JjR-lV-zwz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="UJO-Hw-fRK">
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="UJO-Hw-fRK">
|
||||
<rect key="frame" x="0.0" y="19" width="135" height="5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="NYz-xn-F0g"/>
|
||||
</constraints>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<font key="titleFont" metaFont="system"/>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
@@ -181,13 +180,13 @@
|
||||
<constraint firstItem="w4h-lB-jLi" firstAttribute="leading" secondItem="0ps-WH-ASN" secondAttribute="trailing" id="oqH-vB-hO8"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="bottom" secondItem="w4h-lB-jLi" secondAttribute="bottom" id="sWe-gf-GX0"/>
|
||||
<constraint firstItem="2UQ-R4-qJn" firstAttribute="leading" secondItem="IHY-vi-Wpr" secondAttribute="leading" id="thB-tX-fKx"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="height" secondItem="w4h-lB-jLi" secondAttribute="height" id="uJj-nv-0fc"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="height" secondItem="w4h-lB-jLi" secondAttribute="height" constant="2" id="uJj-nv-0fc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="2UQ-R4-qJn" secondAttribute="bottom" constant="22" id="vLX-hs-yVP"/>
|
||||
</constraints>
|
||||
</customView>
|
||||
<customView fixedFrame="YES" id="fzz-Li-KC6">
|
||||
<rect key="frame" x="136" y="0.0" width="389" height="297"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="136" y="0.0" width="389" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</customView>
|
||||
</subviews>
|
||||
<holdingPriorities>
|
||||
@@ -210,7 +209,7 @@
|
||||
<binding destination="oUs-Nv-PHw" name="title" keyPath="cursorLibrary.name" id="RKE-nQ-CzI"/>
|
||||
<outlet property="delegate" destination="-2" id="4"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="399.5" y="275.5"/>
|
||||
<point key="canvasLocation" x="139.5" y="555.5"/>
|
||||
</window>
|
||||
<viewController title="List" id="oUs-Nv-PHw" customClass="MCEditListController">
|
||||
<connections>
|
||||
@@ -237,43 +236,43 @@
|
||||
<rect key="frame" x="0.0" y="0.0" width="504" height="321"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X2i-rg-HDg">
|
||||
<rect key="frame" x="18" y="259" width="62" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X2i-rg-HDg">
|
||||
<rect key="frame" x="18" y="261" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Author:" id="Oyi-AW-60U">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yyn-IO-TkO">
|
||||
<rect key="frame" x="18" y="209" width="62" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yyn-IO-TkO">
|
||||
<rect key="frame" x="18" y="213" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Version:" id="98i-gH-tf4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ELX-ej-rTb">
|
||||
<rect key="frame" x="18" y="234" width="62" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ELX-ej-rTb">
|
||||
<rect key="frame" x="18" y="237" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Identifier:" id="Xzj-Uq-4bW">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CTE-6h-rbf">
|
||||
<rect key="frame" x="18" y="284" width="62" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CTE-6h-rbf">
|
||||
<rect key="frame" x="18" y="285" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Name:" id="oMS-dL-nZj">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bim-1a-xuh">
|
||||
<rect key="frame" x="86" y="281" width="398" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bim-1a-xuh">
|
||||
<rect key="frame" x="86" y="282" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="07X-ce-vmv">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
@@ -281,11 +280,11 @@
|
||||
<outlet property="nextKeyView" destination="xy3-2B-C0h" id="kJW-OZ-1NO"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xy3-2B-C0h">
|
||||
<rect key="frame" x="86" y="256" width="398" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xy3-2B-C0h">
|
||||
<rect key="frame" x="86" y="258" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="fmY-Bj-OnI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
@@ -293,11 +292,11 @@
|
||||
<outlet property="nextKeyView" destination="XYx-UL-WbM" id="74w-oc-ff2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="XYx-UL-WbM">
|
||||
<rect key="frame" x="86" y="231" width="398" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XYx-UL-WbM">
|
||||
<rect key="frame" x="86" y="234" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="sjK-hK-kfo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
@@ -309,11 +308,11 @@
|
||||
<outlet property="nextKeyView" destination="car-it-RsL" id="uaw-jj-8AW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="car-it-RsL">
|
||||
<rect key="frame" x="86" y="206" width="398" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="car-it-RsL">
|
||||
<rect key="frame" x="86" y="210" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="qW0-CC-89l">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
@@ -321,16 +320,16 @@
|
||||
<outlet property="nextKeyView" destination="MJr-Jz-5Cq" id="sfZ-oa-g3c"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i5v-yD-weq">
|
||||
<rect key="frame" x="18" y="184" width="62" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="i5v-yD-weq">
|
||||
<rect key="frame" x="18" y="189" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Retina:" id="HFS-GR-guB">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MJr-Jz-5Cq">
|
||||
<rect key="frame" x="84" y="182" width="18" height="18"/>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="MJr-Jz-5Cq">
|
||||
<rect key="frame" x="84" y="186" width="18" height="18"/>
|
||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="overlaps" state="on" inset="2" id="Ma9-Ke-hYa">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -345,6 +344,7 @@
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="bim-1a-xuh" secondAttribute="leading" id="0xF-zq-ScD"/>
|
||||
<constraint firstAttribute="trailing" secondItem="XYx-UL-WbM" secondAttribute="trailing" constant="20" id="2FH-UV-gN8"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="width" secondItem="xy3-2B-C0h" secondAttribute="width" id="5Ga-DV-3Po"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="MJr-Jz-5Cq" secondAttribute="trailing" constant="20" symbolic="YES" id="6NT-lK-p2E"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="width" secondItem="XYx-UL-WbM" secondAttribute="width" id="78w-Rp-5Kn"/>
|
||||
<constraint firstItem="bim-1a-xuh" firstAttribute="top" secondItem="WMR-Vn-IHF" secondAttribute="top" constant="18" id="7md-u2-mQL"/>
|
||||
<constraint firstAttribute="trailing" secondItem="car-it-RsL" secondAttribute="trailing" constant="20" id="8og-5G-f3t"/>
|
||||
@@ -376,6 +376,7 @@
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="top" secondItem="XYx-UL-WbM" secondAttribute="bottom" constant="3" id="ol9-vF-CGP"/>
|
||||
<constraint firstItem="MJr-Jz-5Cq" firstAttribute="top" secondItem="car-it-RsL" secondAttribute="bottom" constant="8" id="rTY-Fr-65b"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="width" secondItem="yyn-IO-TkO" secondAttribute="width" id="sb9-dg-qOh"/>
|
||||
<constraint firstItem="i5v-yD-weq" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="WMR-Vn-IHF" secondAttribute="leading" constant="20" symbolic="YES" id="wYl-BB-jBi"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="trailing" secondItem="xy3-2B-C0h" secondAttribute="trailing" id="wpN-fF-mXb"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="trailing" secondItem="bim-1a-xuh" secondAttribute="trailing" id="wtJ-Bc-d9Z"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="XYx-UL-WbM" secondAttribute="leading" id="yFH-4V-CiS"/>
|
||||
@@ -383,48 +384,49 @@
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="bim-1a-xuh" id="YxQ-sZ-TFh"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="139" y="157"/>
|
||||
</customView>
|
||||
<customView id="o0X-1i-ZgL" userLabel="Detail">
|
||||
<rect key="frame" x="0.0" y="0.0" width="509" height="321"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Dm8-Mj-s5f">
|
||||
<rect key="frame" x="18" y="284" width="103" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Dm8-Mj-s5f">
|
||||
<rect key="frame" x="18" y="285" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Type:" id="dy9-JM-4d7">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D5V-CV-BuE">
|
||||
<rect key="frame" x="18" y="259" width="103" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D5V-CV-BuE">
|
||||
<rect key="frame" x="18" y="261" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Frames:" id="G4c-OI-avP">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zEj-zS-uzh">
|
||||
<rect key="frame" x="18" y="234" width="103" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zEj-zS-uzh">
|
||||
<rect key="frame" x="18" y="237" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Frame Duration:" id="5Wb-pc-8jV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aso-MD-Alm">
|
||||
<rect key="frame" x="18" y="209" width="103" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aso-MD-Alm">
|
||||
<rect key="frame" x="18" y="213" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Hot Spot:" id="dcq-3r-2DB">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yz7-y5-TxE">
|
||||
<rect key="frame" x="127" y="277" width="362" height="25"/>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yz7-y5-TxE">
|
||||
<rect key="frame" x="126" y="278" width="363" height="23"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="gKl-8J-X0X">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" title="OtherViews" id="j3S-Me-3x5"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
@@ -440,84 +442,96 @@
|
||||
<outlet property="nextKeyView" destination="rms-zC-s1M" id="yfu-3L-R4w"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rms-zC-s1M">
|
||||
<rect key="frame" x="127" y="254" width="362" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rms-zC-s1M">
|
||||
<rect key="frame" x="126" y="256" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="1" drawsBackground="YES" id="tKY-dX-ibT">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" positiveFormat="#" negativeFormat="#" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" decimalSeparator="." groupingSeparator="," currencyDecimalSeparator="." plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix="" negativePrefix="-" negativeSuffix="" id="JEt-qW-Py5">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="24"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameCount" id="E0q-ga-ftR"/>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameCount" id="05V-RH-y2o">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="VbK-WJ-M0L" id="y5I-kM-hNq"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VbK-WJ-M0L">
|
||||
<rect key="frame" x="127" y="229" width="362" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VbK-WJ-M0L">
|
||||
<rect key="frame" x="126" y="232" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="0.0" drawsBackground="YES" id="pqX-MB-QME">
|
||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#.################" negativeFormat="#.################" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" maximumFractionDigits="16" decimalSeparator="." groupingSeparator="," currencyDecimalSeparator="." plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix="" negativePrefix="-" negativeSuffix="" id="QTS-o7-aVO">
|
||||
<real key="minimum" value="0.0"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameDuration" id="I6z-BZ-xhp"/>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameDuration" id="pBC-y0-ehq">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="Qcr-83-Tz0" id="gYj-Hj-Txi"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qcr-83-Tz0">
|
||||
<rect key="frame" x="127" y="204" width="362" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Qcr-83-Tz0">
|
||||
<rect key="frame" x="126" y="208" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="{0,0}" drawsBackground="YES" id="BWu-hw-sDX">
|
||||
<customFormatter key="formatter" id="hAv-1z-0Jg" customClass="MCPointFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.hotSpot" id="aFb-fI-aHw"/>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.hotSpot" id="7E7-XS-E4D">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="wdB-yr-r6Y" id="Smn-hK-iP2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="75v-aw-FbU">
|
||||
<rect key="frame" x="140" y="98" width="23" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="75v-aw-FbU">
|
||||
<rect key="frame" x="140" y="104" width="21" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="1x" id="FZ3-qB-kDI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hoi-Pr-5wz">
|
||||
<rect key="frame" x="196" y="98" width="23" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hoi-Pr-5wz">
|
||||
<rect key="frame" x="195" y="104" width="23" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="2x" id="WI8-sV-4D6">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="CWo-oD-OZX">
|
||||
<rect key="frame" x="253" y="98" width="23" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CWo-oD-OZX">
|
||||
<rect key="frame" x="251" y="104" width="23" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="5x" id="4fS-Q1-prn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ryz-mP-wNx">
|
||||
<rect key="frame" x="306" y="98" width="31" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ryz-mP-wNx">
|
||||
<rect key="frame" x="304" y="104" width="29" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="10x" id="8fp-Ws-ruA">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ggE-Pd-aWo" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="183" y="123" width="49" height="48"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="ggE-Pd-aWo" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="182" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
@@ -526,8 +540,8 @@
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="Q6h-vm-kaw"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="G3t-wd-E5Y" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="240" y="123" width="49" height="48"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="G3t-wd-E5Y" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="238" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
@@ -536,8 +550,8 @@
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="VPL-GA-4fS"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4hN-Nm-B7Z" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="297" y="123" width="49" height="48"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="4hN-Nm-B7Z" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="294" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
@@ -546,20 +560,20 @@
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="fp1-eX-JUN"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OAt-gN-EX5">
|
||||
<rect key="frame" x="18" y="184" width="103" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OAt-gN-EX5">
|
||||
<rect key="frame" x="18" y="189" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Size:" id="FrC-7p-0Bq">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wdB-yr-r6Y">
|
||||
<rect key="frame" x="127" y="179" width="362" height="22"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wdB-yr-r6Y">
|
||||
<rect key="frame" x="126" y="184" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="{0,0}" drawsBackground="YES" id="OmM-g8-Kyd">
|
||||
<customFormatter key="formatter" id="wEf-m3-oYM" customClass="MCSizeFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
@@ -567,8 +581,8 @@
|
||||
<outlet property="nextKeyView" destination="yz7-y5-TxE" id="9Cb-FK-ium"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<customView misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="j7v-U4-eMe" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="127" y="123" width="48" height="48"/>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="j7v-U4-eMe" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="126" y="128" width="48" height="48"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="48" id="MeC-cf-abQ"/>
|
||||
<constraint firstAttribute="height" constant="48" id="VAO-nl-ZmQ"/>
|
||||
@@ -640,6 +654,7 @@
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="yz7-y5-TxE" id="WHy-Vl-LGY"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="715" y="459"/>
|
||||
</customView>
|
||||
<menu id="vy8-Pj-2Jg">
|
||||
<items>
|
||||
@@ -672,10 +687,11 @@
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="139" y="286"/>
|
||||
</menu>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="8" height="8"/>
|
||||
<image name="NSRemoveTemplate" width="8" height="8"/>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -1,42 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6154.21" systemVersion="13D65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6154.21"/>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MCLibraryWindowController">
|
||||
<connections>
|
||||
<outlet property="appliedAccessory" destination="3Ui-b0-Yod" id="2Ik-Bo-djE"/>
|
||||
<outlet property="libraryViewController" destination="zL4-Ay-t4Q" id="DE1-rb-MWQ"/>
|
||||
<outlet property="progressBar" destination="F5l-qD-fvC" id="VNK-If-Tfi"/>
|
||||
<outlet property="progressField" destination="Ui8-vk-7P8" id="Esy-lZ-9RN"/>
|
||||
<outlet property="window" destination="1" id="3"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<window title="Mousecape" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" frameAutosaveName="LibraryWindow" animationBehavior="default" id="1">
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Mousecape" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" frameAutosaveName="LibraryWindow" animationBehavior="default" id="1">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="711" height="311"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="502" height="310"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<scrollView canDrawConcurrently="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="84" horizontalPageScroll="10" verticalLineScroll="84" verticalPageScroll="10" translatesAutoresizingMaskIntoConstraints="NO" id="2Io-MC-n6O" customClass="BTRScrollView">
|
||||
<scrollView wantsLayer="YES" canDrawConcurrently="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="84" horizontalPageScroll="10" verticalLineScroll="84" verticalPageScroll="10" translatesAutoresizingMaskIntoConstraints="NO" id="2Io-MC-n6O" customClass="BTRScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<clipView key="contentView" copiesOnScroll="NO" id="VhH-tn-4Sf" customClass="BTRClipView">
|
||||
<clipView key="contentView" wantsLayer="YES" copiesOnScroll="NO" id="VhH-tn-4Sf" customClass="BTRClipView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="72" rowSizeStyle="automatic" viewBased="YES" id="dPn-85-uPK">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="12"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="708" minWidth="40" maxWidth="9999" id="CBK-sD-upn">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
@@ -51,8 +55,8 @@
|
||||
<rect key="frame" x="1" y="6" width="708" height="72"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hfe-RO-hVE">
|
||||
<rect key="frame" x="18" y="55" width="97" height="17"/>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Hfe-RO-hVE">
|
||||
<rect key="frame" x="18" y="56" width="96" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="0kt-g0-cQb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -62,17 +66,6 @@
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.name" id="YHc-x9-wXk"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bEa-BS-ghQ">
|
||||
<rect key="frame" x="115" y="55" width="48" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Subtitle" id="NXa-Ze-OX2">
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
<color key="textColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.author" id="D3x-S0-YIW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="jdV-zx-iTs">
|
||||
<rect key="frame" x="634" y="52" width="16" height="16"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="applied" id="bwh-k2-aAS"/>
|
||||
@@ -88,9 +81,9 @@
|
||||
</binding>
|
||||
</connections>
|
||||
</imageView>
|
||||
<scrollView canDrawConcurrently="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasVerticalScroller="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="odP-lr-hJH" customClass="DTScrollView">
|
||||
<rect key="frame" x="20" y="3" width="668" height="44"/>
|
||||
<clipView key="contentView" copiesOnScroll="NO" id="pc3-Zb-Oqk">
|
||||
<scrollView wantsLayer="YES" canDrawConcurrently="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasVerticalScroller="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="odP-lr-hJH" customClass="DTScrollView">
|
||||
<rect key="frame" x="20" y="4" width="668" height="44"/>
|
||||
<clipView key="contentView" wantsLayer="YES" copiesOnScroll="NO" id="pc3-Zb-Oqk" customClass="RBLClipView">
|
||||
<rect key="frame" x="1" y="1" width="666" height="42"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
@@ -104,28 +97,51 @@
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="KzC-9x-FvO"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="mwj-HT-8PV">
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="mwj-HT-8PV">
|
||||
<rect key="frame" x="1" y="144" width="233" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="cCy-Hj-b5W">
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="cCy-Hj-b5W">
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="143"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OUy-kz-p7o">
|
||||
<rect key="frame" x="118" y="58" width="15" height="11"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="by" id="jWt-I0-CSL">
|
||||
<font key="font" metaFont="label" size="9"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bEa-BS-ghQ">
|
||||
<rect key="frame" x="133" y="56" width="49" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Subtitle" id="NXa-Ze-OX2">
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
<color key="textColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.author" id="D3x-S0-YIW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="jdV-zx-iTs" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="bEa-BS-ghQ" secondAttribute="trailing" constant="8" symbolic="YES" id="26b-X6-0Yk"/>
|
||||
<constraint firstItem="Hfe-RO-hVE" firstAttribute="leading" secondItem="syZ-Eq-Lt2" secondAttribute="leading" constant="20" symbolic="YES" id="OHp-3c-ujO"/>
|
||||
<constraint firstItem="QMa-EX-Son" firstAttribute="leading" secondItem="jdV-zx-iTs" secondAttribute="trailing" constant="8" symbolic="YES" id="QfE-A7-Oc8"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="leading" secondItem="Hfe-RO-hVE" secondAttribute="trailing" constant="4" id="WVM-Wd-XXI"/>
|
||||
<constraint firstItem="jdV-zx-iTs" firstAttribute="centerY" secondItem="QMa-EX-Son" secondAttribute="centerY" id="YLI-IS-v1N"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="firstBaseline" secondItem="OUy-kz-p7o" secondAttribute="firstBaseline" id="Yif-mq-VLO"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="baseline" secondItem="Hfe-RO-hVE" secondAttribute="baseline" id="bCc-gQ-FVG"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="leading" secondItem="OUy-kz-p7o" secondAttribute="trailing" constant="4" id="eYj-8T-6Xr"/>
|
||||
<constraint firstItem="OUy-kz-p7o" firstAttribute="leading" secondItem="Hfe-RO-hVE" secondAttribute="trailing" constant="8" id="eeG-7o-lDi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="odP-lr-hJH" secondAttribute="trailing" constant="20" symbolic="YES" id="fnI-G1-FZh"/>
|
||||
<constraint firstItem="odP-lr-hJH" firstAttribute="leading" secondItem="syZ-Eq-Lt2" secondAttribute="leading" constant="20" symbolic="YES" id="joq-b0-pEr"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QMa-EX-Son" secondAttribute="trailing" constant="20" symbolic="YES" id="oL8-Zy-vvE"/>
|
||||
<constraint firstItem="QMa-EX-Son" firstAttribute="top" secondItem="syZ-Eq-Lt2" secondAttribute="top" constant="3" id="oPR-SR-Gh8"/>
|
||||
<constraint firstItem="odP-lr-hJH" firstAttribute="top" secondItem="Hfe-RO-hVE" secondAttribute="bottom" constant="8" symbolic="YES" id="r5F-n8-O3W"/>
|
||||
<constraint firstItem="Hfe-RO-hVE" firstAttribute="top" secondItem="syZ-Eq-Lt2" secondAttribute="top" id="wWd-7q-n1a"/>
|
||||
<constraint firstItem="OUy-kz-p7o" firstAttribute="firstBaseline" secondItem="Hfe-RO-hVE" secondAttribute="firstBaseline" id="yX1-CS-CfT"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="appliedImageView" destination="jdV-zx-iTs" id="4DM-pV-X1T"/>
|
||||
@@ -146,12 +162,11 @@
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="uK0-YP-77b">
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="uK0-YP-77b">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="q1a-eU-6AV">
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="q1a-eU-6AV">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
@@ -166,7 +181,7 @@
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="4"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="591.5" y="159.5"/>
|
||||
<point key="canvasLocation" x="-39" y="187"/>
|
||||
</window>
|
||||
<viewController title="Library" id="zL4-Ay-t4Q" customClass="MCLibraryViewController">
|
||||
<connections>
|
||||
@@ -211,15 +226,16 @@ CA
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="9" y="-116"/>
|
||||
</menu>
|
||||
<customView id="3Ui-b0-Yod" userLabel="Accessory">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cSP-XN-7we">
|
||||
<rect key="frame" x="-2" y="3" width="245" height="14"/>
|
||||
<rect key="frame" x="-2" y="4" width="245" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Applied Cursor: None" usesSingleLineMode="YES" id="vZ3-2R-psO">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<font key="font" metaFont="message" size="11"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
@@ -242,11 +258,44 @@ CA
|
||||
<constraint firstItem="cSP-XN-7we" firstAttribute="centerY" secondItem="3Ui-b0-Yod" secondAttribute="centerY" id="U7A-WI-2JG"/>
|
||||
<constraint firstItem="cSP-XN-7we" firstAttribute="leading" secondItem="3Ui-b0-Yod" secondAttribute="leading" id="eoA-bD-pz5"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="499" y="-594"/>
|
||||
</customView>
|
||||
<view id="smV-Cs-4aH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<point key="canvasLocation" x="499" y="-311"/>
|
||||
</view>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="DeD-dq-yBF" customClass="NSPanel">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="272" y="172" width="452" height="58"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="me1-hA-pTT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="452" height="58"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<progressIndicator maxValue="100" indeterminate="YES" style="bar" translatesAutoresizingMaskIntoConstraints="NO" id="F5l-qD-fvC">
|
||||
<rect key="frame" x="15" y="19" width="348" height="20"/>
|
||||
</progressIndicator>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ui8-vk-7P8">
|
||||
<rect key="frame" x="369" y="22" width="70" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="000 of 129" id="sq0-HM-mp6">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="F5l-qD-fvC" firstAttribute="leading" secondItem="me1-hA-pTT" secondAttribute="leading" constant="15" id="1rr-uN-NwK"/>
|
||||
<constraint firstItem="F5l-qD-fvC" firstAttribute="centerY" secondItem="Ui8-vk-7P8" secondAttribute="centerY" constant="0.5" id="FgD-90-fQk"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Ui8-vk-7P8" secondAttribute="trailing" constant="15" id="OgP-qZ-5ss"/>
|
||||
<constraint firstItem="Ui8-vk-7P8" firstAttribute="leading" secondItem="F5l-qD-fvC" secondAttribute="trailing" constant="8" id="Q6O-6O-84O"/>
|
||||
<constraint firstAttribute="centerY" secondItem="F5l-qD-fvC" secondAttribute="centerY" id="yZk-CB-OJj"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="499" y="-470"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="HDTemplate" width="30" height="18"/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6154.21" systemVersion="13D65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6185.11" systemVersion="13E28" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6154.21"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6185.11"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
@@ -10,7 +10,7 @@
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<menu title="AMainMenu" systemMenu="main" id="29">
|
||||
<items>
|
||||
<menuItem title="Mousecape" id="56">
|
||||
@@ -32,6 +32,9 @@
|
||||
</menuItem>
|
||||
<menuItem title="Check for Updates..." id="igk-i0-oH0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="checkForUpdates:" target="1HC-av-0d2" id="TKL-G4-NhR"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Install Helper Tool" id="Ui2-VN-tbP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
@@ -370,6 +373,12 @@ CA
|
||||
<action selector="restoreCape:" target="494" id="2ve-Ez-ktd"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Dump Cursors…" id="CYY-iE-0bP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="dumpCapeAction:" target="-1" id="B89-Hc-T1C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
@@ -417,5 +426,6 @@ CA
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="420" customClass="NSFontManager"/>
|
||||
<customObject id="1HC-av-0d2" customClass="SUUpdater"/>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
@@ -1,53 +1,63 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-10 (dragged).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "16x16",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-9 (dragged).png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-8 (dragged).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "32x32",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-7 (dragged).png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-6 (dragged).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-5 (dragged).png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-4 (dragged).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-3 (dragged).png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-2 (dragged).png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "mac",
|
||||
"size" : "512x512",
|
||||
"idiom" : "mac",
|
||||
"filename" : "Mousecape-1 (dragged).png",
|
||||
"scale" : "2x"
|
||||
}
|
||||
],
|
||||
|
||||
|
After Width: | Height: | Size: 676 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 216 KiB |
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon_16x16 copy.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_16x16@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "16x16"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_32x32.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_32x32@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "32x32"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_128.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_128x128@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "128x128"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_256.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "256@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "256x256"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_512.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "1x",
|
||||
"size" : "512x512"
|
||||
},
|
||||
{
|
||||
"filename" : "icon_512@2x.png",
|
||||
"idiom" : "mac",
|
||||
"scale" : "2x",
|
||||
"size" : "512x512"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 981 B |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 704 KiB |
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,17 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x",
|
||||
"filename" : "HDTemplate.png"
|
||||
"filename" : "HDTemplate.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x",
|
||||
"filename" : "HDTemplate@2x.png"
|
||||
"filename" : "HDTemplate@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
@@ -2,13 +2,17 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x",
|
||||
"filename" : "SDTemplate.png"
|
||||
"filename" : "SDTemplate.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x",
|
||||
"filename" : "SDTemplate@2x.png"
|
||||
"filename" : "SDTemplate@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
@@ -2,13 +2,17 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x",
|
||||
"filename" : "applied.png"
|
||||
"filename" : "applied.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x",
|
||||
"filename" : "applied@2x.png"
|
||||
"filename" : "applied@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
@@ -2,13 +2,17 @@
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x",
|
||||
"filename" : "dz.png"
|
||||
"filename" : "dz.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x",
|
||||
"filename" : "dz@2x.png"
|
||||
"filename" : "dz@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
|
||||
@@ -24,10 +24,19 @@
|
||||
@implementation MCAppDelegate
|
||||
@dynamic preferencesWindowController;
|
||||
|
||||
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
|
||||
self.libraryWindowController = [[MCLibraryWindowController alloc] initWithWindowNibName:@"Library"];
|
||||
[self.libraryWindowController loadWindow];
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||
[self configureHelperToolMenuItem];
|
||||
self.libraryWindowController = [[MCLibraryWindowController alloc] initWithWindowNibName:@"Library"];
|
||||
[self.libraryWindowController showWindow:self];
|
||||
|
||||
// Re-apply currently applied cape
|
||||
if (self.libraryWindowController.libraryViewController.libraryController.appliedCape != NULL) {
|
||||
[self.libraryWindowController.libraryViewController.libraryController applyCape:self.libraryWindowController.libraryViewController.libraryController.appliedCape];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
|
||||
@@ -47,7 +56,9 @@
|
||||
CFDictionaryRef dict = SMJobCopyDictionary(kSMDomainUserLaunchd, CFSTR("com.alexzielenski.mousecloakhelper"));
|
||||
|
||||
[self.toggleHelperItem setTag: dict ? 1 : 0];
|
||||
[self.toggleHelperItem setTitle:self.toggleHelperItem.tag ? @"Uninstall Helper Tool" : @"Install Helper Tool"];
|
||||
[self.toggleHelperItem setTitle:self.toggleHelperItem.tag ?
|
||||
NSLocalizedString(@"Uninstall Helper Tool", "Uninstall Helper Tool Menu Item") :
|
||||
NSLocalizedString(@"Install Helper Tool", "Install Helper Tool Menu Item")];
|
||||
|
||||
if (dict)
|
||||
CFRelease(dict);
|
||||
@@ -67,17 +78,25 @@
|
||||
if (success && self.toggleHelperItem.tag == 0) {
|
||||
// Successfully Installed
|
||||
[self.toggleHelperItem setTag: 1];
|
||||
[self.toggleHelperItem setTitle:@"Uninstall Helper Tool"];
|
||||
[self.toggleHelperItem setTitle:NSLocalizedString(@"Uninstall Helper Tool", "Uninstall Helper Tool Menu Item")];
|
||||
|
||||
NSRunAlertPanel(@"Sucess", @"The Mousecape helper was successfully installed", @"Sweet", @"Thanks", nil);
|
||||
NSRunAlertPanel(NSLocalizedString(@"Sucess", "Helper Tool Install Result Title Success"),
|
||||
NSLocalizedString(@"The Mousecape helper was successfully installed", "Helper Tool Install Success Result useless description"),
|
||||
NSLocalizedString(@"Sweet", "Helper Tool Install Result Gratitude 1"),
|
||||
NSLocalizedString(@"Thanks", "Helper Tool Install Result Gratitude 2"), nil);
|
||||
} else if (success) {
|
||||
// Successfully Uninstalled
|
||||
[self.toggleHelperItem setTag: 0];
|
||||
[self.toggleHelperItem setTitle:@"Install Helper Tool"];
|
||||
[self.toggleHelperItem setTitle:NSLocalizedString(@"Install Helper Tool", "Install Helper Tool Menu Item")];
|
||||
|
||||
NSRunAlertPanel(@"Sucess", @"The Mousecape helper was successfully uninstalled", @"Sweet", @"Thanks", nil);
|
||||
NSRunAlertPanel(NSLocalizedString(@"Sucess", "Helper Tool Uninstall Result Title Success"),
|
||||
NSLocalizedString(@"The Mousecape helper was successfully uninstalled", "Helper Tool Uninstall Success Result useless description"),
|
||||
NSLocalizedString(@"Sweet", "Helper Tool Uninstall Result Gratitude 1"),
|
||||
NSLocalizedString(@"Thanks", "Helper Tool Uninstall Result Gratitude 2"), nil);
|
||||
} else {
|
||||
NSRunAlertPanel(@"Failure", @"The action did not complete successfully", @"Fuck", nil, nil);
|
||||
NSRunAlertPanel(NSLocalizedString(@"Failure", "Helper Tool Result Title Failure"),
|
||||
NSLocalizedString(@"The action did not complete successfully", "Helper Tool Result Useless Failure Description"),
|
||||
NSLocalizedString(@"Fuck", "Helper Tool Result Failure Expletive"), nil, nil);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -86,7 +105,7 @@
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSViewController *general = [[MCGeneralPreferencesController alloc] init];
|
||||
_preferencesWindowController = [[MASPreferencesWindowController alloc] initWithViewControllers:@[ general ] title:NSLocalizedString(@"Preferences", nil)];
|
||||
_preferencesWindowController = [[MASPreferencesWindowController alloc] initWithViewControllers:@[ general ] title:NSLocalizedString(@"Preferences", "Preferences Window Title")];
|
||||
});
|
||||
|
||||
return _preferencesWindowController;
|
||||
@@ -100,16 +119,16 @@
|
||||
|
||||
- (IBAction)convertCape:(id)sender {
|
||||
NSOpenPanel *panel = [NSOpenPanel openPanel];
|
||||
panel.allowedFileTypes = @[ @"MightyMouse" ];
|
||||
panel.title = @"Import";
|
||||
panel.message = @"Choose a MightyMouse file to import";
|
||||
panel.prompt = @"Import";
|
||||
panel.allowedFileTypes = @[ @"MightyMouse" ];
|
||||
panel.title = NSLocalizedString(@"Import", "MightyMouse Import Panel Title");
|
||||
panel.message = NSLocalizedString(@"Choose a MightyMouse file to import", "MightyMouse Import Panel useless description");
|
||||
panel.prompt = NSLocalizedString(@"Import", "MightyMouse Import Panel Prompt");
|
||||
if ([panel runModal] == NSFileHandlingPanelOKButton) {
|
||||
NSString *name = panel.URL.lastPathComponent.stringByDeletingPathExtension;
|
||||
NSDictionary *metadata = @{
|
||||
@"name": name,
|
||||
@"version": @1.0,
|
||||
@"author": @"Unknown",
|
||||
@"author": NSLocalizedString(@"Unknown", "MightyMouse Import Default Author"),
|
||||
@"identifier": [NSString stringWithFormat:@"local.import.%@.%f", name, [NSDate timeIntervalSinceReferenceDate]]
|
||||
};
|
||||
|
||||
@@ -125,10 +144,10 @@
|
||||
|
||||
- (IBAction)openDocument:(id)sender {
|
||||
NSOpenPanel *panel = [NSOpenPanel openPanel];
|
||||
panel.allowedFileTypes = @[ @"cape" ];
|
||||
panel.title = @"Import";
|
||||
panel.message = @"Choose a Mousecape to import";
|
||||
panel.prompt = @"Import";
|
||||
panel.allowedFileTypes = @[ @"cape" ];
|
||||
panel.title = NSLocalizedString(@"Import", "Mousecape Import Title");
|
||||
panel.message = NSLocalizedString(@"Choose a Mousecape to import", "Mousecape Import useless description");
|
||||
panel.prompt = NSLocalizedString(@"Import", "Mousecape Import Prompt");
|
||||
if ([panel runModal] == NSFileHandlingPanelOKButton) {
|
||||
[self.libraryWindowController.libraryViewController.libraryController importCapeAtURL:panel.URL];
|
||||
}
|
||||
|
||||
@@ -25,10 +25,8 @@
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.alexzielenski.${PRODUCT_NAME:rfc1034identifier}</string>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -36,21 +34,63 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.3</string>
|
||||
<string>1820</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1329</string>
|
||||
<string>1820</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Alex Zielenski. All rights reserved.</string>
|
||||
<string>Copyright © 2014-2024 Alex Zielenski. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>SUEnableAutomaticChecks</key>
|
||||
<true/>
|
||||
<key>SUFeedURL</key>
|
||||
<string>https://raw.githubusercontent.com/alexzielenski/Mousecape/master/appcast_signed.xml</string>
|
||||
<key>SUPublicEDKey</key>
|
||||
<string>-----BEGIN PUBLIC KEY-----
|
||||
MIIGSDCCBDoGByqGSM44BAEwggQtAoICAQDabiG7CQ9Dvx3JAsgDSEqBNuu5MGbl
|
||||
kdX6h+aOQ6z9RJvf2m3sL+GGR/7uv/lE+KhSupdIt1kboGzpo4re8dWrf06wc1yH
|
||||
jvupIdx/GnMDKZr3qm4j0w5VmyVSx7o8CBZ04O1AE1iC7fcThfh75mkiv8ljLjwr
|
||||
Q/QTp7X4xje2qDBFeJSvC6VEw85+6AdueROi/6H8PmrK+/rC6S9y3s8sJGHrOA7l
|
||||
hdpPabJWGGekq5jTaY10h8d7F02+WqV4P72BL5KjXoZySurHTr4ATf1uavj03pOP
|
||||
Jh2TJemOjSibbu6fflvOnOVDHR/4djY9lXp9ZgkazywzWUksN7IvDLK+Niehp9lD
|
||||
6HY37he1WdPqx7Jn32EjFpLnhgPxveYw4CnWXxnX4y6rwkQmJ0hTnmW/bgXcnO3+
|
||||
Fl4XYZpxuZKj+rD+SLX0SdFeUr0UmQeWEF6g9h02rovJ9vsRTcaz9L2H2vBkMFML
|
||||
xAfEG3HyrZBfw+e8+Hjv81qXN3Ey9OTJAyL4yJa4B4xvLfXtQ6vNjRHLvgavCG7y
|
||||
Dc6Ifr5MMxdnObf8YUQe1eSwpM5X5u/AAjHA6zswwv1vI9w/lr+nOg0IyjPTK6jV
|
||||
EvAzQLa5KqPWllHWsR7v6dZPLblWyFNWY+Z+Bq+rAQIr9gIrlxF+XKxanqZTBlg9
|
||||
zS9lS/4Vr0RhMwIhAP+RpFYVPF3Z9d+WhcKjs1bNjErzomp8+IPCqd2onpanAoIC
|
||||
AQDLhx28iJ+BHHmpD7wmLbRx9xRoZiSGFTK5r6q05aTxAG7So+Q1oXKISHuBGMg0
|
||||
4WHS2d92Z4ZSSYMOeqxD2t+irhDDyBpH23D4CuV6aEsI4f4IW5Z3BFL+IpxH1DRn
|
||||
bjvuk0MzUh6rQWbIDeNkmS9bR7i1EHzssSvqbJdBLwtDxFkI38I0THiCrEFy0yFz
|
||||
OvzfKkqgOEkmLgntl6MoLL8SBT+YGF35FQ6wBpLAXs/TPGrFDjCjpppPHg+gcsdO
|
||||
lYKttw273+L3WBCQ3SKwfFfhYi2Ox7I2bwPxNyaGJ11GZP/dS3nDJqA8LtFnd30Z
|
||||
0O6j0HUucVUKzts5iPE8cDjK7a8CR+geuZ15ZiW14C7eMdOZNxqvrzYeilgGKTKr
|
||||
BaNMERzsE3GuFYcWntk+0LjuocsKVtfICYpNEwfPsL2PTezd3NiBahJuYxwfTT1j
|
||||
4sfdXAWGHLTmRkMFYoV8/+tPlClIsYU57rR2QfTab+QeWoFG/Ipmc7JfpI+KENR8
|
||||
yRNHvzoQy7b0MVlMfeMPflNzfZoFPrgDQm3RKgzqckoKNhWlxX+4Tnt2kC4wv7f6
|
||||
XREMcoukQz2qtLeGNV0Zc3ri4hVFsDNeeEOtpzY0/xbEuUD5YyZ5rHqpk6mOZJkj
|
||||
4SZ8B+E7kGYtQv926kmUAnF150b9JECdpCY+nFDmRVdb3QOCAgYAAoICAQCCIC0h
|
||||
6KOybuVCgWTV22CsZVUK+792104vg1+a1TgIaxwthsWK7KZbntyF1045nM9ELrOw
|
||||
ZK+8T7G+fAClWO5uCqGpDB9pzmpAvFpLzrNCdtlvMrj/TvHLkOCZaNeOZBfkPUxi
|
||||
vLCoA4eh/nEKCk1oDJ0Y0M2a/meAD1VZFJKpPGr+sQpbJ4LvMQyfzbiZe1UcOOoD
|
||||
rIgfuMWk80oWJwnGBCXzqPHNCzAONhvATskmLEohH/H9Jw803JltSfMj5g0h5v8G
|
||||
8yBUZ1rFxmMCul5pPrzWUvSFVDJLbfclzv+4umAwy4af7/X5j0XrR061kN6LyTTb
|
||||
cBWvAsOeIJnuX8vqh/TovjZtxBy69TiyH/gbCi2tRQb+AklYLoMjtq7TjklWyyQk
|
||||
pCO+vQNo6acchseqbnFQjJWPox2vfFfwWYUPZNmZXNzVrw4BZLY/RW0b/TN1axrH
|
||||
JBvwYfzf+KfzIXnKfrSwN4QjqemoL5ZqmVGuztOcKwpQCQ4Qf17JA/wnUWusizah
|
||||
+J/6J3kwKhiBZAuHwdGWCDDiHJs2bQsIYIjIS07S4MYQUyBqKE2KjzRvuFH4H2f/
|
||||
ROaayrx/Zgk6sGQ8vImbEFDDBHEb1GBWVtjRFOLaQtajm5f/dZNct5jpfZS6PcTc
|
||||
RZOH9X9yruIOFGUnkmBWrfTWnpHoaYlIJ2nlRw==
|
||||
-----END PUBLIC KEY-----
|
||||
</string>
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict/>
|
||||
</plist>
|
||||
@@ -0,0 +1,32 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf100
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\expandedcolortbl;;}
|
||||
\vieww9600\viewh8400\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
|
||||
\f0\b\fs24 \cf0 Engineering:
|
||||
\f1\b0 \
|
||||
Alex Zielenski\
|
||||
{\field{\*\fldinst{HYPERLINK "http://alexzielenski.com"}}{\fldrslt http://alexzielenski.com}}\
|
||||
\
|
||||
|
||||
\f0\b Icon:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
|
||||
|
||||
\f1\b0 \cf0 Allan Nyholm Nielson\
|
||||
{\field{\*\fldinst{HYPERLINK "https://www.deviantart.com/allannyholm"}}{\fldrslt https://www.deviantart.com/allannyholm}}\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
\cf0 \
|
||||
|
||||
\f0\b Testing:
|
||||
\f1\b0 \
|
||||
Justin Ayles\
|
||||
\
|
||||
|
||||
\f0\b With special thanks to:
|
||||
\f1\b0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "http://maxrudberg.com"}}{\fldrslt \cf0 Max Rudberg}}\
|
||||
Mom & Dad\
|
||||
}
|
||||
@@ -0,0 +1,695 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MCEditWindowController">
|
||||
<connections>
|
||||
<outlet property="detailView" destination="fzz-Li-KC6" id="o4X-5d-9UA"/>
|
||||
<outlet property="editCapeController" destination="Bu6-lg-x1j" id="K0b-fF-JHE"/>
|
||||
<outlet property="editDetailController" destination="tMj-cQ-hK0" id="i1B-Pa-vlp"/>
|
||||
<outlet property="editListController" destination="oUs-Nv-PHw" id="C2e-6f-Mpe"/>
|
||||
<outlet property="window" destination="1" id="3"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="1" customClass="NSPanel">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="525" height="296"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="500" height="296"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<splitView canDrawConcurrently="YES" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3cj-R9-WKK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="525" height="296"/>
|
||||
<subviews>
|
||||
<customView id="IHY-vi-Wpr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<scrollView canDrawConcurrently="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="34" horizontalPageScroll="10" verticalLineScroll="34" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2UQ-R4-qJn">
|
||||
<rect key="frame" x="0.0" y="22" width="135" height="274"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="ame-2S-JV7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="274"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="32" rowSizeStyle="automatic" viewBased="YES" id="MU4-Yh-0PJ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="274"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn editable="NO" width="132" minWidth="40" maxWidth="1000" id="B1d-Yp-OOR">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="EOd-L3-If3">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MCCursorLibrary" id="ti0-Bq-1rU">
|
||||
<rect key="frame" x="1" y="1" width="132" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="tn7-kB-Fvu">
|
||||
<rect key="frame" x="6" y="8" width="120" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="8we-kW-bNk">
|
||||
<font key="font" metaFont="systemBold"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="backgroundStyle">
|
||||
<integer key="value" value="2"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="ti0-Bq-1rU" name="value" keyPath="objectValue.name" id="t1G-Uv-n0y"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="tn7-kB-Fvu" secondAttribute="trailing" constant="8" id="ilO-BE-fhh"/>
|
||||
<constraint firstAttribute="centerY" secondItem="tn7-kB-Fvu" secondAttribute="centerY" id="xFa-kX-vgG"/>
|
||||
<constraint firstItem="tn7-kB-Fvu" firstAttribute="leading" secondItem="ti0-Bq-1rU" secondAttribute="leading" constant="8" id="zRO-gF-Fjk"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="tn7-kB-Fvu" id="EIu-dF-vgX"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="MCCursor" id="ldl-Zk-KLa">
|
||||
<rect key="frame" x="1" y="35" width="132" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="W6i-Uv-3TI">
|
||||
<rect key="frame" x="6" y="1" width="120" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="8bB-Ws-20v">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="ldl-Zk-KLa" name="value" keyPath="objectValue.name" id="OuH-uQ-nFp"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerY" secondItem="W6i-Uv-3TI" secondAttribute="centerY" id="JPw-Qf-DNs"/>
|
||||
<constraint firstItem="W6i-Uv-3TI" firstAttribute="leading" secondItem="ldl-Zk-KLa" secondAttribute="leading" constant="8" id="WvV-tP-TPf"/>
|
||||
<constraint firstAttribute="trailing" secondItem="W6i-Uv-3TI" secondAttribute="trailing" constant="8" id="zV0-3Z-fAD"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="textField" destination="W6i-Uv-3TI" id="rCr-ZD-nty"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="oUs-Nv-PHw" id="ur0-Pm-oqJ"/>
|
||||
<outlet property="delegate" destination="oUs-Nv-PHw" id="GMA-yd-uCn"/>
|
||||
<outlet property="menu" destination="vy8-Pj-2Jg" id="4S4-YC-adi"/>
|
||||
<outlet property="nextKeyView" destination="fzz-Li-KC6" id="Mg7-QD-IZj"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ARR-bd-5zK">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3rZ-7d-Mro">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="0ps-WH-ASN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="22" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="22" id="Fdb-xA-sn9"/>
|
||||
<constraint firstAttribute="height" constant="22" id="iNY-lh-RsQ"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSAddTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="xv7-ZP-O2C">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="addAction:" target="oUs-Nv-PHw" id="QeK-Mq-YfI"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="w4h-lB-jLi">
|
||||
<rect key="frame" x="22" y="0.0" width="22" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="22" id="L21-Ci-myo"/>
|
||||
<constraint firstAttribute="height" constant="20" id="M80-94-gpJ"/>
|
||||
</constraints>
|
||||
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="HjH-hq-TxT">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="removeAction:" target="oUs-Nv-PHw" id="JjR-lV-zwz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="UJO-Hw-fRK">
|
||||
<rect key="frame" x="0.0" y="19" width="135" height="5"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="NYz-xn-F0g"/>
|
||||
</constraints>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="UJO-Hw-fRK" secondAttribute="trailing" id="1nr-pf-XFQ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="UJO-Hw-fRK" secondAttribute="bottom" constant="21" id="6Ak-tM-Cac"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="width" secondItem="w4h-lB-jLi" secondAttribute="width" id="97v-Rq-d09"/>
|
||||
<constraint firstAttribute="bottom" secondItem="0ps-WH-ASN" secondAttribute="bottom" id="Afn-3d-zKF"/>
|
||||
<constraint firstItem="UJO-Hw-fRK" firstAttribute="leading" secondItem="IHY-vi-Wpr" secondAttribute="leading" id="C8U-9e-Hyh"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2UQ-R4-qJn" secondAttribute="trailing" id="LC4-J4-2bn"/>
|
||||
<constraint firstItem="2UQ-R4-qJn" firstAttribute="top" secondItem="IHY-vi-Wpr" secondAttribute="top" id="NyE-Z9-XCc"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="leading" secondItem="IHY-vi-Wpr" secondAttribute="leading" id="kvW-tW-AQF"/>
|
||||
<constraint firstItem="w4h-lB-jLi" firstAttribute="leading" secondItem="0ps-WH-ASN" secondAttribute="trailing" id="oqH-vB-hO8"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="bottom" secondItem="w4h-lB-jLi" secondAttribute="bottom" id="sWe-gf-GX0"/>
|
||||
<constraint firstItem="2UQ-R4-qJn" firstAttribute="leading" secondItem="IHY-vi-Wpr" secondAttribute="leading" id="thB-tX-fKx"/>
|
||||
<constraint firstItem="0ps-WH-ASN" firstAttribute="height" secondItem="w4h-lB-jLi" secondAttribute="height" constant="2" id="uJj-nv-0fc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="2UQ-R4-qJn" secondAttribute="bottom" constant="22" id="vLX-hs-yVP"/>
|
||||
</constraints>
|
||||
</customView>
|
||||
<customView fixedFrame="YES" id="fzz-Li-KC6">
|
||||
<rect key="frame" x="136" y="0.0" width="389" height="296"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</customView>
|
||||
</subviews>
|
||||
<holdingPriorities>
|
||||
<real value="250"/>
|
||||
<real value="250"/>
|
||||
</holdingPriorities>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="lwv-X3-bDm"/>
|
||||
</connections>
|
||||
</splitView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="3cj-R9-WKK" firstAttribute="leading" secondItem="2" secondAttribute="leading" id="4E6-iP-FpE"/>
|
||||
<constraint firstItem="3cj-R9-WKK" firstAttribute="top" secondItem="2" secondAttribute="top" id="Eam-bF-EPz"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3cj-R9-WKK" secondAttribute="trailing" id="IT0-Rw-fmh"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3cj-R9-WKK" secondAttribute="bottom" id="znR-CB-aDB"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<binding destination="oUs-Nv-PHw" name="title" keyPath="cursorLibrary.name" id="RKE-nQ-CzI"/>
|
||||
<outlet property="delegate" destination="-2" id="4"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="139.5" y="555.5"/>
|
||||
</window>
|
||||
<viewController title="List" id="oUs-Nv-PHw" customClass="MCEditListController">
|
||||
<connections>
|
||||
<outlet property="tableView" destination="MU4-Yh-0PJ" id="TRg-C6-MaW"/>
|
||||
<outlet property="view" destination="MU4-Yh-0PJ" id="xHm-2x-mvT"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<viewController title="Detail" id="tMj-cQ-hK0" customClass="MCEditDetailController">
|
||||
<connections>
|
||||
<outlet property="rep1000View" destination="4hN-Nm-B7Z" id="8iU-1v-yGH"/>
|
||||
<outlet property="rep100View" destination="j7v-U4-eMe" id="X5D-KB-JVI"/>
|
||||
<outlet property="rep200View" destination="ggE-Pd-aWo" id="oJ3-3i-3SZ"/>
|
||||
<outlet property="rep500View" destination="G3t-wd-E5Y" id="u1Y-3n-iRc"/>
|
||||
<outlet property="typePopUpButton" destination="yz7-y5-TxE" id="0Lj-Ty-Oea"/>
|
||||
<outlet property="view" destination="o0X-1i-ZgL" id="fn8-Is-pBo"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<viewController title="Cape" id="Bu6-lg-x1j" customClass="MCEditCapeController">
|
||||
<connections>
|
||||
<outlet property="view" destination="WMR-Vn-IHF" id="tlm-o5-run"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<customView id="WMR-Vn-IHF" userLabel="Cape">
|
||||
<rect key="frame" x="0.0" y="0.0" width="504" height="321"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X2i-rg-HDg">
|
||||
<rect key="frame" x="18" y="261" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Author:" id="Oyi-AW-60U">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yyn-IO-TkO">
|
||||
<rect key="frame" x="18" y="213" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Version:" id="98i-gH-tf4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ELX-ej-rTb">
|
||||
<rect key="frame" x="18" y="237" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Identifier:" id="Xzj-Uq-4bW">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CTE-6h-rbf">
|
||||
<rect key="frame" x="18" y="285" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Name:" id="oMS-dL-nZj">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bim-1a-xuh">
|
||||
<rect key="frame" x="86" y="282" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="07X-ce-vmv">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Bu6-lg-x1j" name="value" keyPath="cursorLibrary.name" id="QlS-r9-svX"/>
|
||||
<outlet property="nextKeyView" destination="xy3-2B-C0h" id="kJW-OZ-1NO"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xy3-2B-C0h">
|
||||
<rect key="frame" x="86" y="258" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="fmY-Bj-OnI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Bu6-lg-x1j" name="value" keyPath="cursorLibrary.author" id="CfA-df-u6f"/>
|
||||
<outlet property="nextKeyView" destination="XYx-UL-WbM" id="74w-oc-ff2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XYx-UL-WbM">
|
||||
<rect key="frame" x="86" y="234" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="sjK-hK-kfo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="Bu6-lg-x1j" name="value" keyPath="cursorLibrary.identifier" id="Vdx-1W-Guz">
|
||||
<dictionary key="options">
|
||||
<bool key="NSValidatesImmediately" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="car-it-RsL" id="uaw-jj-8AW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="car-it-RsL">
|
||||
<rect key="frame" x="86" y="210" width="398" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="qW0-CC-89l">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="oUs-Nv-PHw" name="value" keyPath="cursorLibrary.version" id="pHV-5a-ce5"/>
|
||||
<outlet property="nextKeyView" destination="MJr-Jz-5Cq" id="sfZ-oa-g3c"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="i5v-yD-weq">
|
||||
<rect key="frame" x="18" y="189" width="62" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Retina:" id="HFS-GR-guB">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button translatesAutoresizingMaskIntoConstraints="NO" id="MJr-Jz-5Cq">
|
||||
<rect key="frame" x="84" y="186" width="18" height="18"/>
|
||||
<buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="overlaps" state="on" inset="2" id="Ma9-Ke-hYa">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="Bu6-lg-x1j" name="value" keyPath="cursorLibrary.hiDPI" id="jnk-dy-w9m"/>
|
||||
<outlet property="nextKeyView" destination="bim-1a-xuh" id="flN-6L-Vpz"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="bim-1a-xuh" secondAttribute="leading" id="0xF-zq-ScD"/>
|
||||
<constraint firstAttribute="trailing" secondItem="XYx-UL-WbM" secondAttribute="trailing" constant="20" id="2FH-UV-gN8"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="width" secondItem="xy3-2B-C0h" secondAttribute="width" id="5Ga-DV-3Po"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="MJr-Jz-5Cq" secondAttribute="trailing" constant="20" symbolic="YES" id="6NT-lK-p2E"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="width" secondItem="XYx-UL-WbM" secondAttribute="width" id="78w-Rp-5Kn"/>
|
||||
<constraint firstItem="bim-1a-xuh" firstAttribute="top" secondItem="WMR-Vn-IHF" secondAttribute="top" constant="18" id="7md-u2-mQL"/>
|
||||
<constraint firstAttribute="trailing" secondItem="car-it-RsL" secondAttribute="trailing" constant="20" id="8og-5G-f3t"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="leading" secondItem="yyn-IO-TkO" secondAttribute="leading" id="A71-62-pAd"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="trailing" secondItem="X2i-rg-HDg" secondAttribute="trailing" id="B5V-w4-E4R"/>
|
||||
<constraint firstItem="xy3-2B-C0h" firstAttribute="top" secondItem="bim-1a-xuh" secondAttribute="bottom" constant="3" id="Ba8-n2-AJY"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="trailing" secondItem="ELX-ej-rTb" secondAttribute="trailing" id="CUf-rI-rpu"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="width" secondItem="X2i-rg-HDg" secondAttribute="width" id="D9Z-q0-phl"/>
|
||||
<constraint firstItem="ELX-ej-rTb" firstAttribute="top" secondItem="X2i-rg-HDg" secondAttribute="bottom" constant="8" id="DLd-62-Iep"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="width" secondItem="ELX-ej-rTb" secondAttribute="width" id="DNc-Oi-qtL"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="leading" secondItem="X2i-rg-HDg" secondAttribute="leading" id="Dzm-RT-QGr"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="leading" secondItem="ELX-ej-rTb" secondAttribute="leading" id="H6H-IO-OIS"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="trailing" secondItem="yyn-IO-TkO" secondAttribute="trailing" id="Iox-22-dSy"/>
|
||||
<constraint firstItem="yyn-IO-TkO" firstAttribute="top" secondItem="ELX-ej-rTb" secondAttribute="bottom" constant="8" id="IxV-Aj-Agw"/>
|
||||
<constraint firstItem="yyn-IO-TkO" firstAttribute="trailing" secondItem="i5v-yD-weq" secondAttribute="trailing" id="JJ3-CQ-MYe"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="top" secondItem="WMR-Vn-IHF" secondAttribute="top" constant="20" symbolic="YES" id="Nav-P8-ewc"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="xy3-2B-C0h" secondAttribute="leading" id="Ofe-x8-Iz6"/>
|
||||
<constraint firstItem="yyn-IO-TkO" firstAttribute="width" secondItem="i5v-yD-weq" secondAttribute="width" id="Pbq-09-PEz"/>
|
||||
<constraint firstAttribute="trailing" secondItem="xy3-2B-C0h" secondAttribute="trailing" constant="20" id="QaY-Yd-7ki"/>
|
||||
<constraint firstAttribute="trailing" secondItem="bim-1a-xuh" secondAttribute="trailing" constant="20" id="Qgd-dL-t4L"/>
|
||||
<constraint firstItem="XYx-UL-WbM" firstAttribute="top" secondItem="xy3-2B-C0h" secondAttribute="bottom" constant="3" id="S7k-zO-aLb"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="width" secondItem="bim-1a-xuh" secondAttribute="width" id="Scq-gg-9Mp"/>
|
||||
<constraint firstItem="bim-1a-xuh" firstAttribute="leading" secondItem="CTE-6h-rbf" secondAttribute="trailing" constant="8" symbolic="YES" id="V76-cY-GEg"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="trailing" secondItem="XYx-UL-WbM" secondAttribute="trailing" id="YTL-Eq-h2J"/>
|
||||
<constraint firstItem="X2i-rg-HDg" firstAttribute="top" secondItem="CTE-6h-rbf" secondAttribute="bottom" constant="8" id="b3A-aW-7fb"/>
|
||||
<constraint firstItem="i5v-yD-weq" firstAttribute="top" secondItem="yyn-IO-TkO" secondAttribute="bottom" constant="8" id="dGT-5B-B1c"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="MJr-Jz-5Cq" secondAttribute="leading" id="e2s-Um-zcp"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="leading" secondItem="WMR-Vn-IHF" secondAttribute="leading" constant="20" symbolic="YES" id="g0a-i4-KIf"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="top" secondItem="XYx-UL-WbM" secondAttribute="bottom" constant="3" id="ol9-vF-CGP"/>
|
||||
<constraint firstItem="MJr-Jz-5Cq" firstAttribute="top" secondItem="car-it-RsL" secondAttribute="bottom" constant="8" id="rTY-Fr-65b"/>
|
||||
<constraint firstItem="CTE-6h-rbf" firstAttribute="width" secondItem="yyn-IO-TkO" secondAttribute="width" id="sb9-dg-qOh"/>
|
||||
<constraint firstItem="i5v-yD-weq" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="WMR-Vn-IHF" secondAttribute="leading" constant="20" symbolic="YES" id="wYl-BB-jBi"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="trailing" secondItem="xy3-2B-C0h" secondAttribute="trailing" id="wpN-fF-mXb"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="trailing" secondItem="bim-1a-xuh" secondAttribute="trailing" id="wtJ-Bc-d9Z"/>
|
||||
<constraint firstItem="car-it-RsL" firstAttribute="leading" secondItem="XYx-UL-WbM" secondAttribute="leading" id="yFH-4V-CiS"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="bim-1a-xuh" id="YxQ-sZ-TFh"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="139" y="157"/>
|
||||
</customView>
|
||||
<customView id="o0X-1i-ZgL" userLabel="Detail">
|
||||
<rect key="frame" x="0.0" y="0.0" width="509" height="321"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Dm8-Mj-s5f">
|
||||
<rect key="frame" x="18" y="285" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Type:" id="dy9-JM-4d7">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D5V-CV-BuE">
|
||||
<rect key="frame" x="18" y="261" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Frames:" id="G4c-OI-avP">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zEj-zS-uzh">
|
||||
<rect key="frame" x="18" y="237" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Frame Duration:" id="5Wb-pc-8jV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aso-MD-Alm">
|
||||
<rect key="frame" x="18" y="213" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Hot Spot:" id="dcq-3r-2DB">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yz7-y5-TxE">
|
||||
<rect key="frame" x="126" y="278" width="363" height="23"/>
|
||||
<popUpButtonCell key="cell" type="roundTextured" bezelStyle="texturedRounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="gKl-8J-X0X">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" title="OtherViews" id="j3S-Me-3x5"/>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="selectedValue" keyPath="cursor.identifier" id="2aq-Lm-1Lm">
|
||||
<dictionary key="options">
|
||||
<string key="NSMultipleValuesPlaceholder">Unknown</string>
|
||||
<string key="NSNoSelectionPlaceholder">Unknown</string>
|
||||
<string key="NSNotApplicablePlaceholder">Unknown</string>
|
||||
<string key="NSNullPlaceholder">Unknown</string>
|
||||
<string key="NSValueTransformerName">MCCursorTypeValueTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="rms-zC-s1M" id="yfu-3L-R4w"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rms-zC-s1M">
|
||||
<rect key="frame" x="126" y="256" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="1" drawsBackground="YES" id="tKY-dX-ibT">
|
||||
<numberFormatter key="formatter" formatterBehavior="default10_4" positiveFormat="#" negativeFormat="#" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" decimalSeparator="." groupingSeparator="," currencyDecimalSeparator="." plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix="" negativePrefix="-" negativeSuffix="" id="JEt-qW-Py5">
|
||||
<real key="minimum" value="1"/>
|
||||
<real key="maximum" value="24"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameCount" id="05V-RH-y2o">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="VbK-WJ-M0L" id="y5I-kM-hNq"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VbK-WJ-M0L">
|
||||
<rect key="frame" x="126" y="232" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="0.0" drawsBackground="YES" id="pqX-MB-QME">
|
||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#.################" negativeFormat="#.################" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" maximumFractionDigits="16" decimalSeparator="." groupingSeparator="," currencyDecimalSeparator="." plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix="" negativePrefix="-" negativeSuffix="" id="QTS-o7-aVO">
|
||||
<real key="minimum" value="0.0"/>
|
||||
</numberFormatter>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.frameDuration" id="pBC-y0-ehq">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="Qcr-83-Tz0" id="gYj-Hj-Txi"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Qcr-83-Tz0">
|
||||
<rect key="frame" x="126" y="208" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="{0,0}" drawsBackground="YES" id="BWu-hw-sDX">
|
||||
<customFormatter key="formatter" id="hAv-1z-0Jg" customClass="MCPointFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.hotSpot" id="7E7-XS-E4D">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<outlet property="nextKeyView" destination="wdB-yr-r6Y" id="Smn-hK-iP2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="75v-aw-FbU">
|
||||
<rect key="frame" x="140" y="104" width="21" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="1x" id="FZ3-qB-kDI">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hoi-Pr-5wz">
|
||||
<rect key="frame" x="195" y="104" width="23" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="2x" id="WI8-sV-4D6">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CWo-oD-OZX">
|
||||
<rect key="frame" x="251" y="104" width="23" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="5x" id="4fS-Q1-prn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ryz-mP-wNx">
|
||||
<rect key="frame" x="304" y="104" width="29" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="10x" id="8fp-Ws-ruA">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="ggE-Pd-aWo" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="182" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="Q6h-vm-kaw"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="G3t-wd-E5Y" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="238" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="VPL-GA-4fS"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="4hN-Nm-B7Z" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="294" y="128" width="48" height="48"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="fp1-eX-JUN"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OAt-gN-EX5">
|
||||
<rect key="frame" x="18" y="189" width="102" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Size:" id="FrC-7p-0Bq">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wdB-yr-r6Y">
|
||||
<rect key="frame" x="126" y="184" width="363" height="21"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="{0,0}" drawsBackground="YES" id="OmM-g8-Kyd">
|
||||
<customFormatter key="formatter" id="wEf-m3-oYM" customClass="MCSizeFormatter"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="tMj-cQ-hK0" name="value" keyPath="cursor.size" id="dXp-5z-YR6"/>
|
||||
<outlet property="nextKeyView" destination="yz7-y5-TxE" id="9Cb-FK-ium"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<customView translatesAutoresizingMaskIntoConstraints="NO" id="j7v-U4-eMe" customClass="MMAnimatingImageView">
|
||||
<rect key="frame" x="126" y="128" width="48" height="48"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="48" id="MeC-cf-abQ"/>
|
||||
<constraint firstAttribute="height" constant="48" id="VAO-nl-ZmQ"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldShowHotSpot" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="shouldAllowDragging" value="YES"/>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="tMj-cQ-hK0" id="YBU-cQ-gUX"/>
|
||||
</connections>
|
||||
</customView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="CWo-oD-OZX" firstAttribute="top" secondItem="G3t-wd-E5Y" secondAttribute="bottom" constant="8" id="3wX-8h-O6z"/>
|
||||
<constraint firstItem="D5V-CV-BuE" firstAttribute="top" secondItem="rms-zC-s1M" secondAttribute="top" id="43J-XT-GHl"/>
|
||||
<constraint firstItem="Dm8-Mj-s5f" firstAttribute="top" secondItem="yz7-y5-TxE" secondAttribute="top" id="4iw-ff-qi7"/>
|
||||
<constraint firstItem="aso-MD-Alm" firstAttribute="top" secondItem="zEj-zS-uzh" secondAttribute="bottom" constant="8" symbolic="YES" id="5Wt-dl-pef"/>
|
||||
<constraint firstItem="rms-zC-s1M" firstAttribute="leading" secondItem="VbK-WJ-M0L" secondAttribute="leading" id="5dM-sY-h4p"/>
|
||||
<constraint firstItem="j7v-U4-eMe" firstAttribute="leading" secondItem="wdB-yr-r6Y" secondAttribute="leading" id="7xA-ei-9JR"/>
|
||||
<constraint firstItem="zEj-zS-uzh" firstAttribute="leading" secondItem="D5V-CV-BuE" secondAttribute="leading" id="8Cv-6e-Tzx"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="height" secondItem="4hN-Nm-B7Z" secondAttribute="height" id="8qD-iY-MRu"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="width" secondItem="ggE-Pd-aWo" secondAttribute="width" id="ASq-Gp-wuC"/>
|
||||
<constraint firstItem="OAt-gN-EX5" firstAttribute="top" secondItem="wdB-yr-r6Y" secondAttribute="top" id="Adr-uG-x9t"/>
|
||||
<constraint firstItem="4hN-Nm-B7Z" firstAttribute="leading" secondItem="G3t-wd-E5Y" secondAttribute="trailing" constant="8" id="AlK-6b-Sni"/>
|
||||
<constraint firstItem="j7v-U4-eMe" firstAttribute="top" secondItem="wdB-yr-r6Y" secondAttribute="bottom" constant="8" id="BW4-UU-kQB"/>
|
||||
<constraint firstItem="75v-aw-FbU" firstAttribute="centerX" secondItem="j7v-U4-eMe" secondAttribute="centerX" id="ClP-It-NEr"/>
|
||||
<constraint firstItem="D5V-CV-BuE" firstAttribute="top" secondItem="Dm8-Mj-s5f" secondAttribute="bottom" constant="8" symbolic="YES" id="EWh-4Q-i3w"/>
|
||||
<constraint firstItem="rms-zC-s1M" firstAttribute="leading" secondItem="D5V-CV-BuE" secondAttribute="trailing" constant="8" symbolic="YES" id="JaG-3Y-FgQ"/>
|
||||
<constraint firstItem="Hoi-Pr-5wz" firstAttribute="centerX" secondItem="ggE-Pd-aWo" secondAttribute="centerX" id="Lm2-Ms-dVL"/>
|
||||
<constraint firstItem="rms-zC-s1M" firstAttribute="trailing" secondItem="yz7-y5-TxE" secondAttribute="trailing" id="MKf-wc-NLL"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="top" secondItem="ggE-Pd-aWo" secondAttribute="top" id="NM5-rE-34J"/>
|
||||
<constraint firstItem="Qcr-83-Tz0" firstAttribute="leading" secondItem="aso-MD-Alm" secondAttribute="trailing" constant="8" symbolic="YES" id="NO1-Yp-z3e"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="width" secondItem="j7v-U4-eMe" secondAttribute="width" id="NvM-wM-1NF"/>
|
||||
<constraint firstItem="OAt-gN-EX5" firstAttribute="width" secondItem="aso-MD-Alm" secondAttribute="width" id="PX5-Da-w21"/>
|
||||
<constraint firstItem="Dm8-Mj-s5f" firstAttribute="top" secondItem="o0X-1i-ZgL" secondAttribute="top" constant="20" symbolic="YES" id="R6W-ih-OYh"/>
|
||||
<constraint firstItem="zEj-zS-uzh" firstAttribute="leading" secondItem="aso-MD-Alm" secondAttribute="leading" id="RsR-Ul-Ou2"/>
|
||||
<constraint firstItem="D5V-CV-BuE" firstAttribute="leading" secondItem="Dm8-Mj-s5f" secondAttribute="leading" id="S08-SQ-GJR"/>
|
||||
<constraint firstItem="Qcr-83-Tz0" firstAttribute="top" secondItem="aso-MD-Alm" secondAttribute="top" id="SxH-Ps-hpM"/>
|
||||
<constraint firstItem="VbK-WJ-M0L" firstAttribute="leading" secondItem="zEj-zS-uzh" secondAttribute="trailing" constant="8" symbolic="YES" id="UXO-ZW-ccB"/>
|
||||
<constraint firstItem="ggE-Pd-aWo" firstAttribute="leading" secondItem="j7v-U4-eMe" secondAttribute="trailing" constant="8" id="VHK-Y8-lMy"/>
|
||||
<constraint firstItem="VbK-WJ-M0L" firstAttribute="trailing" secondItem="rms-zC-s1M" secondAttribute="trailing" id="Vxm-cc-Nuz"/>
|
||||
<constraint firstItem="wdB-yr-r6Y" firstAttribute="leading" secondItem="OAt-gN-EX5" secondAttribute="trailing" constant="8" symbolic="YES" id="WLf-wT-t5d"/>
|
||||
<constraint firstItem="zEj-zS-uzh" firstAttribute="top" secondItem="D5V-CV-BuE" secondAttribute="bottom" constant="8" symbolic="YES" id="X0Y-Zf-ilJ"/>
|
||||
<constraint firstItem="wdB-yr-r6Y" firstAttribute="trailing" secondItem="Qcr-83-Tz0" secondAttribute="trailing" id="Yac-TY-Rux"/>
|
||||
<constraint firstItem="75v-aw-FbU" firstAttribute="top" secondItem="j7v-U4-eMe" secondAttribute="bottom" constant="8" id="Yah-L4-Jlp"/>
|
||||
<constraint firstItem="Dm8-Mj-s5f" firstAttribute="leading" secondItem="o0X-1i-ZgL" secondAttribute="leading" constant="20" symbolic="YES" id="ZQi-nH-fRj"/>
|
||||
<constraint firstItem="CWo-oD-OZX" firstAttribute="centerX" secondItem="G3t-wd-E5Y" secondAttribute="centerX" id="ZcC-5o-S4M"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="width" secondItem="4hN-Nm-B7Z" secondAttribute="width" id="bMf-aA-2io"/>
|
||||
<constraint firstItem="Qcr-83-Tz0" firstAttribute="trailing" secondItem="VbK-WJ-M0L" secondAttribute="trailing" id="e7u-an-cyO"/>
|
||||
<constraint firstItem="Ryz-mP-wNx" firstAttribute="top" secondItem="4hN-Nm-B7Z" secondAttribute="bottom" constant="8" id="eDV-Li-crv"/>
|
||||
<constraint firstItem="yz7-y5-TxE" firstAttribute="leading" secondItem="Dm8-Mj-s5f" secondAttribute="trailing" constant="8" symbolic="YES" id="etw-9O-zNS"/>
|
||||
<constraint firstItem="VbK-WJ-M0L" firstAttribute="leading" secondItem="Qcr-83-Tz0" secondAttribute="leading" id="gnA-Qx-Vmj"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="height" secondItem="ggE-Pd-aWo" secondAttribute="height" id="huK-Kq-0Iu"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="leading" secondItem="ggE-Pd-aWo" secondAttribute="trailing" constant="8" id="i75-6i-VPd"/>
|
||||
<constraint firstItem="OAt-gN-EX5" firstAttribute="top" secondItem="aso-MD-Alm" secondAttribute="bottom" constant="8" id="itU-V0-MaU"/>
|
||||
<constraint firstItem="Ryz-mP-wNx" firstAttribute="centerX" secondItem="4hN-Nm-B7Z" secondAttribute="centerX" id="jGh-SC-Nxg"/>
|
||||
<constraint firstItem="zEj-zS-uzh" firstAttribute="top" secondItem="VbK-WJ-M0L" secondAttribute="top" id="k7D-La-IeE"/>
|
||||
<constraint firstItem="wdB-yr-r6Y" firstAttribute="top" secondItem="Qcr-83-Tz0" secondAttribute="bottom" constant="3" id="kIE-fx-9LE"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="height" secondItem="j7v-U4-eMe" secondAttribute="height" id="kyf-78-kT0"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="top" secondItem="j7v-U4-eMe" secondAttribute="top" id="lhV-oy-6Mm"/>
|
||||
<constraint firstItem="OAt-gN-EX5" firstAttribute="leading" secondItem="aso-MD-Alm" secondAttribute="leading" id="lp9-nD-Nnz"/>
|
||||
<constraint firstItem="wdB-yr-r6Y" firstAttribute="width" secondItem="Qcr-83-Tz0" secondAttribute="width" id="lyT-KO-eXf"/>
|
||||
<constraint firstItem="yz7-y5-TxE" firstAttribute="leading" secondItem="rms-zC-s1M" secondAttribute="leading" id="thH-qo-cIr"/>
|
||||
<constraint firstItem="G3t-wd-E5Y" firstAttribute="top" secondItem="4hN-Nm-B7Z" secondAttribute="top" id="tvs-VW-0YR"/>
|
||||
<constraint firstAttribute="trailing" secondItem="yz7-y5-TxE" secondAttribute="trailing" constant="20" symbolic="YES" id="wma-6s-J2b"/>
|
||||
<constraint firstItem="Hoi-Pr-5wz" firstAttribute="top" secondItem="ggE-Pd-aWo" secondAttribute="bottom" constant="8" id="wr2-0t-CVH"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="nextKeyView" destination="yz7-y5-TxE" id="WHy-Vl-LGY"/>
|
||||
</connections>
|
||||
</customView>
|
||||
<menu id="vy8-Pj-2Jg">
|
||||
<items>
|
||||
<menuItem title="New Cursor" tag="-1" id="KQs-oD-CRg">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="addAction:" target="oUs-Nv-PHw" id="Vbo-8k-sGO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Remove Cursor" tag="-1" id="gnE-s8-eO8">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="removeAction:" target="oUs-Nv-PHw" id="QmX-eg-rb3"/>
|
||||
<binding destination="oUs-Nv-PHw" name="enabled" keyPath="selectedObject" id="v5P-WH-Wea">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNotNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Duplicate" tag="-1" id="swO-bv-qRE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="duplicateAction:" target="oUs-Nv-PHw" id="z4d-84-N6g"/>
|
||||
<binding destination="oUs-Nv-PHw" name="enabled" keyPath="selectedObject" id="Q5o-HW-cMv">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNotNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="11" height="11"/>
|
||||
<image name="NSRemoveTemplate" width="11" height="11"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -0,0 +1,303 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MCLibraryWindowController">
|
||||
<connections>
|
||||
<outlet property="appliedAccessory" destination="3Ui-b0-Yod" id="2Ik-Bo-djE"/>
|
||||
<outlet property="libraryViewController" destination="zL4-Ay-t4Q" id="DE1-rb-MWQ"/>
|
||||
<outlet property="progressBar" destination="F5l-qD-fvC" id="VNK-If-Tfi"/>
|
||||
<outlet property="progressField" destination="Ui8-vk-7P8" id="Esy-lZ-9RN"/>
|
||||
<outlet property="window" destination="1" id="3"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Mousecape" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" frameAutosaveName="LibraryWindow" animationBehavior="default" id="1">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="711" height="311"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="502" height="310"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<scrollView canDrawConcurrently="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="84" horizontalPageScroll="10" verticalLineScroll="84" verticalPageScroll="10" translatesAutoresizingMaskIntoConstraints="NO" id="2Io-MC-n6O" customClass="BTRScrollView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<clipView key="contentView" copiesOnScroll="NO" id="VhH-tn-4Sf" customClass="BTRClipView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="72" rowSizeStyle="automatic" viewBased="YES" id="dPn-85-uPK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="711" height="311"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="12"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="708" minWidth="40" maxWidth="9999" id="CBK-sD-upn">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="bXC-ob-CUQ">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView id="syZ-Eq-Lt2" customClass="MCCapeCellView">
|
||||
<rect key="frame" x="1" y="6" width="708" height="72"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="Hfe-RO-hVE">
|
||||
<rect key="frame" x="18" y="56" width="96" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="0kt-g0-cQb">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.name" id="YHc-x9-wXk"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="jdV-zx-iTs">
|
||||
<rect key="frame" x="634" y="52" width="16" height="16"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="applied" id="bwh-k2-aAS"/>
|
||||
</imageView>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QMa-EX-Son">
|
||||
<rect key="frame" x="658" y="51" width="30" height="18"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="HDTemplate" id="LsJ-S8-jwy"/>
|
||||
<connections>
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.hiDPI" id="LcB-QZ-MhG">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">MCHDValueTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</imageView>
|
||||
<scrollView canDrawConcurrently="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasVerticalScroller="NO" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="odP-lr-hJH" customClass="DTScrollView">
|
||||
<rect key="frame" x="20" y="4" width="668" height="44"/>
|
||||
<clipView key="contentView" copiesOnScroll="NO" id="pc3-Zb-Oqk">
|
||||
<rect key="frame" x="1" y="1" width="666" height="42"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<collectionView id="dyM-T9-60O">
|
||||
<rect key="frame" x="0.0" y="0.0" width="666" height="42"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</collectionView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="KzC-9x-FvO"/>
|
||||
</constraints>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="mwj-HT-8PV">
|
||||
<rect key="frame" x="1" y="144" width="233" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="cCy-Hj-b5W">
|
||||
<rect key="frame" x="-100" y="-100" width="15" height="143"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OUy-kz-p7o">
|
||||
<rect key="frame" x="118" y="58" width="15" height="11"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="by" id="jWt-I0-CSL">
|
||||
<font key="font" metaFont="label" size="9"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bEa-BS-ghQ">
|
||||
<rect key="frame" x="133" y="56" width="49" height="14"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Subtitle" id="NXa-Ze-OX2">
|
||||
<font key="font" metaFont="smallSystemBold"/>
|
||||
<color key="textColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="syZ-Eq-Lt2" name="value" keyPath="objectValue.author" id="D3x-S0-YIW"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="Hfe-RO-hVE" firstAttribute="leading" secondItem="syZ-Eq-Lt2" secondAttribute="leading" constant="20" symbolic="YES" id="OHp-3c-ujO"/>
|
||||
<constraint firstItem="QMa-EX-Son" firstAttribute="leading" secondItem="jdV-zx-iTs" secondAttribute="trailing" constant="8" symbolic="YES" id="QfE-A7-Oc8"/>
|
||||
<constraint firstItem="jdV-zx-iTs" firstAttribute="centerY" secondItem="QMa-EX-Son" secondAttribute="centerY" id="YLI-IS-v1N"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="firstBaseline" secondItem="OUy-kz-p7o" secondAttribute="firstBaseline" id="Yif-mq-VLO"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="baseline" secondItem="Hfe-RO-hVE" secondAttribute="baseline" id="bCc-gQ-FVG"/>
|
||||
<constraint firstItem="bEa-BS-ghQ" firstAttribute="leading" secondItem="OUy-kz-p7o" secondAttribute="trailing" constant="4" id="eYj-8T-6Xr"/>
|
||||
<constraint firstItem="OUy-kz-p7o" firstAttribute="leading" secondItem="Hfe-RO-hVE" secondAttribute="trailing" constant="8" id="eeG-7o-lDi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="odP-lr-hJH" secondAttribute="trailing" constant="20" symbolic="YES" id="fnI-G1-FZh"/>
|
||||
<constraint firstItem="odP-lr-hJH" firstAttribute="leading" secondItem="syZ-Eq-Lt2" secondAttribute="leading" constant="20" symbolic="YES" id="joq-b0-pEr"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QMa-EX-Son" secondAttribute="trailing" constant="20" symbolic="YES" id="oL8-Zy-vvE"/>
|
||||
<constraint firstItem="QMa-EX-Son" firstAttribute="top" secondItem="syZ-Eq-Lt2" secondAttribute="top" constant="3" id="oPR-SR-Gh8"/>
|
||||
<constraint firstItem="odP-lr-hJH" firstAttribute="top" secondItem="Hfe-RO-hVE" secondAttribute="bottom" constant="8" symbolic="YES" id="r5F-n8-O3W"/>
|
||||
<constraint firstItem="Hfe-RO-hVE" firstAttribute="top" secondItem="syZ-Eq-Lt2" secondAttribute="top" id="wWd-7q-n1a"/>
|
||||
<constraint firstItem="OUy-kz-p7o" firstAttribute="firstBaseline" secondItem="Hfe-RO-hVE" secondAttribute="firstBaseline" id="yX1-CS-CfT"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="appliedImageView" destination="jdV-zx-iTs" id="4DM-pV-X1T"/>
|
||||
<outlet property="collectionView" destination="dyM-T9-60O" id="eOd-8D-OEK"/>
|
||||
<outlet property="resolutionImageView" destination="QMa-EX-Son" id="Tr1-E9-rir"/>
|
||||
<outlet property="subtitleField" destination="bEa-BS-ghQ" id="yeA-RV-Aoi"/>
|
||||
<outlet property="textField" destination="Hfe-RO-hVE" id="LWw-Ls-hnr"/>
|
||||
<outlet property="titleField" destination="Hfe-RO-hVE" id="y7O-VO-62y"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="zL4-Ay-t4Q" id="0iM-HK-P70"/>
|
||||
<outlet property="delegate" destination="zL4-Ay-t4Q" id="riV-4x-e3X"/>
|
||||
<outlet property="menu" destination="zpf-M9-Nd1" id="lfG-VA-TTS"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="uK0-YP-77b">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="q1a-eU-6AV">
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="2Io-MC-n6O" secondAttribute="bottom" id="Cbd-gK-nbr"/>
|
||||
<constraint firstItem="2Io-MC-n6O" firstAttribute="top" secondItem="2" secondAttribute="top" id="GZN-yG-wKe"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2Io-MC-n6O" secondAttribute="trailing" id="Nej-8C-Hrd"/>
|
||||
<constraint firstItem="2Io-MC-n6O" firstAttribute="leading" secondItem="2" secondAttribute="leading" id="chC-8B-nJc"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="4"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-39" y="187"/>
|
||||
</window>
|
||||
<viewController title="Library" id="zL4-Ay-t4Q" customClass="MCLibraryViewController">
|
||||
<connections>
|
||||
<outlet property="contextMenu" destination="zpf-M9-Nd1" id="jgh-ez-9dF"/>
|
||||
<outlet property="tableView" destination="dPn-85-uPK" id="Gbg-WA-ju6"/>
|
||||
<outlet property="view" destination="2" id="zf4-7d-uPj"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<menu id="zpf-M9-Nd1">
|
||||
<items>
|
||||
<menuItem title="Apply" tag="-1" id="aI1-E0-bnW">
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
<connections>
|
||||
<action selector="applyCapeAction:" target="-1" id="KHK-0n-gS3"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" tag="-1" keyEquivalent="e" id="HJc-SX-JjZ">
|
||||
<connections>
|
||||
<action selector="editCapeAction:" target="-1" id="xUA-Zj-ToX"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Duplicate" tag="-1" keyEquivalent="S" id="PhG-Ll-nqz">
|
||||
<connections>
|
||||
<action selector="duplicateCapeAction:" target="-1" id="3xf-LP-P1p"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Remove" tag="-1" id="Aig-wl-ivn">
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
CA
|
||||
</string>
|
||||
<connections>
|
||||
<action selector="removeCapeAction:" target="-1" id="Psf-74-zsG"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="A7P-y0-FBc"/>
|
||||
<menuItem title="Show in Finder" tag="-1" id="2WM-EN-kiI">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showCapeAction:" target="-1" id="iF0-eu-Du4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="9" y="-116"/>
|
||||
</menu>
|
||||
<customView id="3Ui-b0-Yod" userLabel="Accessory">
|
||||
<rect key="frame" x="0.0" y="0.0" width="251" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cSP-XN-7we">
|
||||
<rect key="frame" x="-2" y="4" width="245" height="14"/>
|
||||
<textFieldCell key="cell" controlSize="small" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" alignment="right" title="Applied Cursor: None" usesSingleLineMode="YES" id="vZ3-2R-psO">
|
||||
<font key="font" metaFont="message" size="11"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="backgroundStyle">
|
||||
<integer key="value" value="2"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="zL4-Ay-t4Q" name="value" keyPath="libraryController.appliedCape.name" id="tSr-qw-vw1">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">MCAppliedCapeValueTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="cSP-XN-7we" secondAttribute="trailing" constant="10" id="OsL-1s-qgU"/>
|
||||
<constraint firstItem="cSP-XN-7we" firstAttribute="centerY" secondItem="3Ui-b0-Yod" secondAttribute="centerY" id="U7A-WI-2JG"/>
|
||||
<constraint firstItem="cSP-XN-7we" firstAttribute="leading" secondItem="3Ui-b0-Yod" secondAttribute="leading" id="eoA-bD-pz5"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="499" y="-594"/>
|
||||
</customView>
|
||||
<view id="smV-Cs-4aH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="100" height="100"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<point key="canvasLocation" x="499" y="-311"/>
|
||||
</view>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="DeD-dq-yBF" customClass="NSPanel">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="272" y="172" width="452" height="58"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="me1-hA-pTT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="452" height="58"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<progressIndicator maxValue="100" indeterminate="YES" style="bar" translatesAutoresizingMaskIntoConstraints="NO" id="F5l-qD-fvC">
|
||||
<rect key="frame" x="15" y="19" width="348" height="20"/>
|
||||
</progressIndicator>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ui8-vk-7P8">
|
||||
<rect key="frame" x="369" y="22" width="70" height="16"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="000 of 129" id="sq0-HM-mp6">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="F5l-qD-fvC" firstAttribute="leading" secondItem="me1-hA-pTT" secondAttribute="leading" constant="15" id="1rr-uN-NwK"/>
|
||||
<constraint firstItem="F5l-qD-fvC" firstAttribute="centerY" secondItem="Ui8-vk-7P8" secondAttribute="centerY" constant="0.5" id="FgD-90-fQk"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Ui8-vk-7P8" secondAttribute="trailing" constant="15" id="OgP-qZ-5ss"/>
|
||||
<constraint firstItem="Ui8-vk-7P8" firstAttribute="leading" secondItem="F5l-qD-fvC" secondAttribute="trailing" constant="8" id="Q6O-6O-84O"/>
|
||||
<constraint firstAttribute="centerY" secondItem="F5l-qD-fvC" secondAttribute="centerY" id="yZk-CB-OJj"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<point key="canvasLocation" x="499" y="-470"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="HDTemplate" width="30" height="18"/>
|
||||
<image name="applied" width="16" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -0,0 +1,431 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6185.11" systemVersion="13E28" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6185.11"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="494" id="495"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<menu title="AMainMenu" systemMenu="main" id="29">
|
||||
<items>
|
||||
<menuItem title="Mousecape" id="56">
|
||||
<menu key="submenu" title="Mousecape" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About Mousecape" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="236">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129">
|
||||
<connections>
|
||||
<action selector="showPreferences:" target="-1" id="lNW-tH-IKS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check for Updates..." id="igk-i0-oH0">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="checkForUpdates:" target="1HC-av-0d2" id="TKL-G4-NhR"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Install Helper Tool" id="Ui2-VN-tbP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleInstall:" target="-1" id="Ppc-Jw-bxU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="143">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="131">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="144">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Mousecape" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="367"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="368"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="370"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Quit Mousecape" keyEquivalent="q" id="136">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-3" id="449"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="83">
|
||||
<menu key="submenu" title="File" id="81">
|
||||
<items>
|
||||
<menuItem title="New Cape" keyEquivalent="n" id="82">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="-1" id="I3c-Gd-Cqc"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Import Cape" keyEquivalent="o" id="kdx-d9-Lek">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="-1" id="2Qd-t2-zEv"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Import MightyMouse" keyEquivalent="i" id="l3B-n8-21Z">
|
||||
<connections>
|
||||
<action selector="convertCape:" target="494" id="vs2-8F-92y"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="79">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="73">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="193"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save…" keyEquivalent="s" id="75">
|
||||
<connections>
|
||||
<action selector="saveDocument:" target="-1" id="362"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Revert to Saved" id="112">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="revertDocumentToSaved:" target="-1" id="364"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="217">
|
||||
<menu key="submenu" title="Edit" id="205">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="207">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="223"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="215">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="231"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="206">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="199">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="228"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="197">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="224"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="203">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="226"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="485">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteAsPlainText:" target="-1" id="486"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="202">
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="235"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="198">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="232"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="214">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Find" id="218">
|
||||
<menu key="submenu" title="Find" id="220">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="241"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="534">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="535"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="487"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="488"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" id="221">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="489"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="216">
|
||||
<menu key="submenu" title="Spelling and Grammar" id="200">
|
||||
<items>
|
||||
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="204">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="230"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Document Now" keyEquivalent=";" id="201">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="225"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="453"/>
|
||||
<menuItem title="Check Spelling While Typing" id="219">
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="346">
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Correct Spelling Automatically" id="454">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="456"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="348">
|
||||
<menu key="submenu" title="Substitutions" id="349">
|
||||
<items>
|
||||
<menuItem title="Show Substitutions" id="457">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="458"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="459"/>
|
||||
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Dashes" id="460">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="461"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Text Replacement" id="462">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticTextReplacement:" target="-1" id="463"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Transformations" id="450">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Transformations" id="451">
|
||||
<items>
|
||||
<menuItem title="Make Upper Case" id="452">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="uppercaseWord:" target="-1" id="464"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Lower Case" id="465">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowercaseWord:" target="-1" id="468"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Capitalize" id="466">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="capitalizeWord:" target="-1" id="467"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="211">
|
||||
<menu key="submenu" title="Speech" id="212">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="196">
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="233"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="195">
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="227"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Capes" id="g8O-f8-aKi">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Capes" id="ttR-pS-Pk1">
|
||||
<items>
|
||||
<menuItem title="Apply Cape" id="ieJ-T1-eH7">
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
<connections>
|
||||
<action selector="applyCapeAction:" target="-1" id="RAI-pM-j7M"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Edit Cape" keyEquivalent="e" id="5qb-Dw-38q">
|
||||
<connections>
|
||||
<action selector="editCapeAction:" target="-1" id="E2d-D2-Hj9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Remove Cape" id="LHh-1u-bK8">
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
CA
|
||||
</string>
|
||||
<connections>
|
||||
<action selector="removeCapeAction:" target="-1" id="RE5-YE-iAt"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Duplicate Cape" keyEquivalent="S" id="d9b-6w-ubr">
|
||||
<connections>
|
||||
<action selector="duplicateCapeAction:" target="-1" id="Nj7-Uf-gOO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check for Updates" hidden="YES" keyEquivalent="u" id="XTi-86-ese">
|
||||
<connections>
|
||||
<action selector="checkCapeAction:" target="-1" id="q4O-FG-Rle"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="EOT-Rk-oU3"/>
|
||||
<menuItem title="Show in Finder" id="PAd-kz-Eoi">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="showCapeAction:" target="-1" id="9mC-pd-eiq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Restore Defaults" keyEquivalent="r" id="uCE-YB-8VL">
|
||||
<connections>
|
||||
<action selector="restoreCape:" target="494" id="2ve-Ez-ktd"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Dump Cursors…" id="CYY-iE-0bP">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="dumpCapeAction:" target="-1" id="B89-Hc-T1C"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="19">
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="24">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="37"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="239">
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="240"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="92">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="5">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="39"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="490">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="491">
|
||||
<items>
|
||||
<menuItem title="Mousecape Help" keyEquivalent="?" id="492">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="493"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
<customObject id="494" customClass="MCAppDelegate">
|
||||
<connections>
|
||||
<outlet property="toggleHelperItem" destination="Ui2-VN-tbP" id="31d-Xd-wNX"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="420" customClass="NSFontManager"/>
|
||||
<customObject id="1HC-av-0d2" customClass="SUUpdater"/>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -0,0 +1,32 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf100
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\expandedcolortbl;;}
|
||||
\vieww9600\viewh8400\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
|
||||
\f0\b\fs24 \cf0 Engineering:
|
||||
\f1\b0 \
|
||||
Alex Zielenski\
|
||||
{\field{\*\fldinst{HYPERLINK "http://alexzielenski.com"}}{\fldrslt http://alexzielenski.com}}\
|
||||
\
|
||||
|
||||
\f0\b Icon:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
|
||||
|
||||
\f1\b0 \cf0 Allan Nyholm Nielson\
|
||||
{\field{\*\fldinst{HYPERLINK "https://www.deviantart.com/allannyholm"}}{\fldrslt https://www.deviantart.com/allannyholm}}\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
\cf0 \
|
||||
|
||||
\f0\b Testing:
|
||||
\f1\b0 \
|
||||
Justin Ayles\
|
||||
\
|
||||
|
||||
\f0\b With special thanks to:
|
||||
\f1\b0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "http://maxrudberg.com"}}{\fldrslt \cf0 Max Rudberg}}\
|
||||
Mom & Dad\
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
Localizable.strings
|
||||
Mousecape
|
||||
|
||||
Created by Alexander Zielenski on 6/13/20.
|
||||
Copyright © 2020 Alex Zielenski. All rights reserved.
|
||||
*/
|
||||
@@ -0,0 +1,4 @@
|
||||
/* Bundle name */
|
||||
"CFBundleName" = "com.alexzielenski.mousecloakhelper";
|
||||
/* Copyright (human-readable) */
|
||||
"NSHumanReadableCopyright" = "Copyright © 2014 Alex Zielenski. All rights reserved.";
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"developmentRegion" : "en",
|
||||
"targetLocale" : "en",
|
||||
"toolInfo" : {
|
||||
"toolBuildNumber" : "11E503a",
|
||||
"toolID" : "com.apple.dt.xcode",
|
||||
"toolName" : "Xcode",
|
||||
"toolVersion" : "11.4.1"
|
||||
},
|
||||
"version" : "1.0"
|
||||
}
|
||||
@@ -1,22 +1,32 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf200
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf2512
|
||||
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica-Bold;\f1\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\expandedcolortbl;;}
|
||||
\vieww9600\viewh8400\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
|
||||
\f0\b\fs24 \cf0 Engineering:
|
||||
\b0 \
|
||||
\f1\b0 \
|
||||
Alex Zielenski\
|
||||
{\field{\*\fldinst{HYPERLINK "http://alexzielenski.com"}}{\fldrslt http://alexzielenski.com}}\
|
||||
\
|
||||
|
||||
\b Testing:
|
||||
\b0 \
|
||||
\f0\b Icons and Testing:\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
|
||||
|
||||
\f1\b0 \cf0 Allan Nyholm Nielsen\
|
||||
{\field{\*\fldinst{HYPERLINK "https://www.deviantart.com/allannyholm"}}{\fldrslt https://www.deviantart.com/allannyholm}}\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
\cf0 \
|
||||
|
||||
\f0\b Testing:
|
||||
\f1\b0 \
|
||||
Justin Ayles\
|
||||
\
|
||||
|
||||
\b With special thanks to:
|
||||
\b0 \
|
||||
{\field{\*\fldinst{HYPERLINK "http://maxrudberg.com"}}{\fldrslt Max Rudberg}}\
|
||||
\f0\b With special thanks to:
|
||||
\f1\b0 \
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "http://maxrudberg.com"}}{\fldrslt \cf0 Max Rudberg}}\
|
||||
Mom & Dad\
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Window"; ObjectID = "1"; */
|
||||
"1.title" = "Window";
|
||||
|
||||
/* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Unknown"; ObjectID = "2aq-Lm-1Lm"; */
|
||||
"2aq-Lm-1Lm.ibShadowedIsNilPlaceholder" = "Unknown";
|
||||
|
||||
/* Class = "CocoaBindingsConnection"; ibShadowedMultipleValuesPlaceholder = "Unknown"; ObjectID = "2aq-Lm-1Lm"; */
|
||||
"2aq-Lm-1Lm.ibShadowedMultipleValuesPlaceholder" = "Unknown";
|
||||
|
||||
/* Class = "CocoaBindingsConnection"; ibShadowedNoSelectionPlaceholder = "Unknown"; ObjectID = "2aq-Lm-1Lm"; */
|
||||
"2aq-Lm-1Lm.ibShadowedNoSelectionPlaceholder" = "Unknown";
|
||||
|
||||
/* Class = "CocoaBindingsConnection"; ibShadowedNotApplicablePlaceholder = "Unknown"; ObjectID = "2aq-Lm-1Lm"; */
|
||||
"2aq-Lm-1Lm.ibShadowedNotApplicablePlaceholder" = "Unknown";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "5x"; ObjectID = "4fS-Q1-prn"; */
|
||||
"4fS-Q1-prn.title" = "5x";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Frame Duration:"; ObjectID = "5Wb-pc-8jV"; */
|
||||
"5Wb-pc-8jV.title" = "Frame Duration:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "8bB-Ws-20v"; */
|
||||
"8bB-Ws-20v.title" = "Table View Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "10x"; ObjectID = "8fp-Ws-ruA"; */
|
||||
"8fp-Ws-ruA.title" = "10x";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "8we-kW-bNk"; */
|
||||
"8we-kW-bNk.title" = "Table View Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Version:"; ObjectID = "98i-gH-tf4"; */
|
||||
"98i-gH-tf4.title" = "Version:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; placeholderString = "{0,0}"; ObjectID = "BWu-hw-sDX"; */
|
||||
"BWu-hw-sDX.placeholderString" = "{0,0}";
|
||||
|
||||
/* Class = "NSViewController"; title = "Cape"; ObjectID = "Bu6-lg-x1j"; */
|
||||
"Bu6-lg-x1j.title" = "Cape";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "EOd-L3-If3"; */
|
||||
"EOd-L3-If3.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "1x"; ObjectID = "FZ3-qB-kDI"; */
|
||||
"FZ3-qB-kDI.title" = "1x";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Size:"; ObjectID = "FrC-7p-0Bq"; */
|
||||
"FrC-7p-0Bq.title" = "Size:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Frames:"; ObjectID = "G4c-OI-avP"; */
|
||||
"G4c-OI-avP.title" = "Frames:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Retina:"; ObjectID = "HFS-GR-guB"; */
|
||||
"HFS-GR-guB.title" = "Retina:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "New Cursor"; ObjectID = "KQs-oD-CRg"; */
|
||||
"KQs-oD-CRg.title" = "New Cursor";
|
||||
|
||||
/* Class = "NSTextFieldCell"; placeholderString = "{0,0}"; ObjectID = "OmM-g8-Kyd"; */
|
||||
"OmM-g8-Kyd.placeholderString" = "{0,0}";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Author:"; ObjectID = "Oyi-AW-60U"; */
|
||||
"Oyi-AW-60U.title" = "Author:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "2x"; ObjectID = "WI8-sV-4D6"; */
|
||||
"WI8-sV-4D6.title" = "2x";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "Xzj-Uq-4bW"; */
|
||||
"Xzj-Uq-4bW.title" = "Identifier:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Hot Spot:"; ObjectID = "dcq-3r-2DB"; */
|
||||
"dcq-3r-2DB.title" = "Hot Spot:";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Type:"; ObjectID = "dy9-JM-4d7"; */
|
||||
"dy9-JM-4d7.title" = "Type:";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Cursor"; ObjectID = "gnE-s8-eO8"; */
|
||||
"gnE-s8-eO8.title" = "Remove Cursor";
|
||||
|
||||
/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "j3S-Me-3x5"; */
|
||||
"j3S-Me-3x5.title" = "OtherViews";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Name:"; ObjectID = "oMS-dL-nZj"; */
|
||||
"oMS-dL-nZj.title" = "Name:";
|
||||
|
||||
/* Class = "NSViewController"; title = "List"; ObjectID = "oUs-Nv-PHw"; */
|
||||
"oUs-Nv-PHw.title" = "List";
|
||||
|
||||
/* Class = "NSTextFieldCell"; placeholderString = "0.0"; ObjectID = "pqX-MB-QME"; */
|
||||
"pqX-MB-QME.placeholderString" = "0.0";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Duplicate"; ObjectID = "swO-bv-qRE"; */
|
||||
"swO-bv-qRE.title" = "Duplicate";
|
||||
|
||||
/* Class = "NSTextFieldCell"; placeholderString = "1"; ObjectID = "tKY-dX-ibT"; */
|
||||
"tKY-dX-ibT.placeholderString" = "1";
|
||||
|
||||
/* Class = "NSViewController"; title = "Detail"; ObjectID = "tMj-cQ-hK0"; */
|
||||
"tMj-cQ-hK0.title" = "Detail";
|
||||
@@ -0,0 +1,42 @@
|
||||
|
||||
/* Class = "NSWindow"; title = "Mousecape"; ObjectID = "1"; */
|
||||
"1.title" = "Mousecape";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Table View Cell"; ObjectID = "0kt-g0-cQb"; */
|
||||
"0kt-g0-cQb.title" = "Table View Cell";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "2WM-EN-kiI"; */
|
||||
"2WM-EN-kiI.title" = "Show in Finder";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove"; ObjectID = "Aig-wl-ivn"; */
|
||||
"Aig-wl-ivn.title" = "Remove";
|
||||
|
||||
/* Class = "NSWindow"; title = "Window"; ObjectID = "DeD-dq-yBF"; */
|
||||
"DeD-dq-yBF.title" = "Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "HJc-SX-JjZ"; */
|
||||
"HJc-SX-JjZ.title" = "Edit";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Subtitle"; ObjectID = "NXa-Ze-OX2"; */
|
||||
"NXa-Ze-OX2.title" = "Subtitle";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Duplicate"; ObjectID = "PhG-Ll-nqz"; */
|
||||
"PhG-Ll-nqz.title" = "Duplicate";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Apply"; ObjectID = "aI1-E0-bnW"; */
|
||||
"aI1-E0-bnW.title" = "Apply";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "bXC-ob-CUQ"; */
|
||||
"bXC-ob-CUQ.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "by"; ObjectID = "jWt-I0-CSL"; */
|
||||
"jWt-I0-CSL.title" = "by";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "000 of 129"; ObjectID = "sq0-HM-mp6"; */
|
||||
"sq0-HM-mp6.title" = "000 of 129";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Applied Cursor: None"; ObjectID = "vZ3-2R-psO"; */
|
||||
"vZ3-2R-psO.title" = "Applied Cursor: None";
|
||||
|
||||
/* Class = "NSViewController"; title = "Library"; ObjectID = "zL4-Ay-t4Q"; */
|
||||
"zL4-Ay-t4Q.title" = "Library";
|
||||
@@ -0,0 +1,243 @@
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */
|
||||
"5.title" = "Bring All to Front";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */
|
||||
"19.title" = "Window";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */
|
||||
"23.title" = "Minimize";
|
||||
|
||||
/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */
|
||||
"24.title" = "Window";
|
||||
|
||||
/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */
|
||||
"29.title" = "AMainMenu";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mousecape"; ObjectID = "56"; */
|
||||
"56.title" = "Mousecape";
|
||||
|
||||
/* Class = "NSMenu"; title = "Mousecape"; ObjectID = "57"; */
|
||||
"57.title" = "Mousecape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "About Mousecape"; ObjectID = "58"; */
|
||||
"58.title" = "About Mousecape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Close"; ObjectID = "73"; */
|
||||
"73.title" = "Close";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Save…"; ObjectID = "75"; */
|
||||
"75.title" = "Save…";
|
||||
|
||||
/* Class = "NSMenu"; title = "File"; ObjectID = "81"; */
|
||||
"81.title" = "File";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "New Cape"; ObjectID = "82"; */
|
||||
"82.title" = "New Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "File"; ObjectID = "83"; */
|
||||
"83.title" = "File";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Revert to Saved"; ObjectID = "112"; */
|
||||
"112.title" = "Revert to Saved";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "129"; */
|
||||
"129.title" = "Preferences…";
|
||||
|
||||
/* Class = "NSMenu"; title = "Services"; ObjectID = "130"; */
|
||||
"130.title" = "Services";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Services"; ObjectID = "131"; */
|
||||
"131.title" = "Services";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hide Mousecape"; ObjectID = "134"; */
|
||||
"134.title" = "Hide Mousecape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Quit Mousecape"; ObjectID = "136"; */
|
||||
"136.title" = "Quit Mousecape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */
|
||||
"145.title" = "Hide Others";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */
|
||||
"150.title" = "Show All";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "195"; */
|
||||
"195.title" = "Stop Speaking";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "196"; */
|
||||
"196.title" = "Start Speaking";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */
|
||||
"197.title" = "Copy";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "198"; */
|
||||
"198.title" = "Select All";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */
|
||||
"199.title" = "Cut";
|
||||
|
||||
/* Class = "NSMenu"; title = "Spelling and Grammar"; ObjectID = "200"; */
|
||||
"200.title" = "Spelling and Grammar";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "201"; */
|
||||
"201.title" = "Check Document Now";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */
|
||||
"202.title" = "Delete";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "203"; */
|
||||
"203.title" = "Paste";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "204"; */
|
||||
"204.title" = "Show Spelling and Grammar";
|
||||
|
||||
/* Class = "NSMenu"; title = "Edit"; ObjectID = "205"; */
|
||||
"205.title" = "Edit";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "207"; */
|
||||
"207.title" = "Undo";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "208"; */
|
||||
"208.title" = "Find Next";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "209"; */
|
||||
"209.title" = "Find…";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "210"; */
|
||||
"210.title" = "Jump to Selection";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "211"; */
|
||||
"211.title" = "Speech";
|
||||
|
||||
/* Class = "NSMenu"; title = "Speech"; ObjectID = "212"; */
|
||||
"212.title" = "Speech";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "213"; */
|
||||
"213.title" = "Find Previous";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "215"; */
|
||||
"215.title" = "Redo";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "216"; */
|
||||
"216.title" = "Spelling and Grammar";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */
|
||||
"217.title" = "Edit";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Find"; ObjectID = "218"; */
|
||||
"218.title" = "Find";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "219"; */
|
||||
"219.title" = "Check Spelling While Typing";
|
||||
|
||||
/* Class = "NSMenu"; title = "Find"; ObjectID = "220"; */
|
||||
"220.title" = "Find";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "221"; */
|
||||
"221.title" = "Use Selection for Find";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */
|
||||
"239.title" = "Zoom";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "346"; */
|
||||
"346.title" = "Check Grammar With Spelling";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "348"; */
|
||||
"348.title" = "Substitutions";
|
||||
|
||||
/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "349"; */
|
||||
"349.title" = "Substitutions";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "350"; */
|
||||
"350.title" = "Smart Copy/Paste";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "351"; */
|
||||
"351.title" = "Smart Quotes";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "354"; */
|
||||
"354.title" = "Smart Links";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "450"; */
|
||||
"450.title" = "Transformations";
|
||||
|
||||
/* Class = "NSMenu"; title = "Transformations"; ObjectID = "451"; */
|
||||
"451.title" = "Transformations";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "452"; */
|
||||
"452.title" = "Make Upper Case";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "454"; */
|
||||
"454.title" = "Correct Spelling Automatically";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "457"; */
|
||||
"457.title" = "Show Substitutions";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "460"; */
|
||||
"460.title" = "Smart Dashes";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "462"; */
|
||||
"462.title" = "Text Replacement";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "465"; */
|
||||
"465.title" = "Make Lower Case";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "466"; */
|
||||
"466.title" = "Capitalize";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "485"; */
|
||||
"485.title" = "Paste and Match Style";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Help"; ObjectID = "490"; */
|
||||
"490.title" = "Help";
|
||||
|
||||
/* Class = "NSMenu"; title = "Help"; ObjectID = "491"; */
|
||||
"491.title" = "Help";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Mousecape Help"; ObjectID = "492"; */
|
||||
"492.title" = "Mousecape Help";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "534"; */
|
||||
"534.title" = "Find and Replace…";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Edit Cape"; ObjectID = "5qb-Dw-38q"; */
|
||||
"5qb-Dw-38q.title" = "Edit Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Dump Cursors…"; ObjectID = "CYY-iE-0bP"; */
|
||||
"CYY-iE-0bP.title" = "Dump Cursors…";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Remove Cape"; ObjectID = "LHh-1u-bK8"; */
|
||||
"LHh-1u-bK8.title" = "Remove Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Show in Finder"; ObjectID = "PAd-kz-Eoi"; */
|
||||
"PAd-kz-Eoi.title" = "Show in Finder";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Install Helper Tool"; ObjectID = "Ui2-VN-tbP"; */
|
||||
"Ui2-VN-tbP.title" = "Install Helper Tool";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check for Updates"; ObjectID = "XTi-86-ese"; */
|
||||
"XTi-86-ese.title" = "Check for Updates";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Duplicate Cape"; ObjectID = "d9b-6w-ubr"; */
|
||||
"d9b-6w-ubr.title" = "Duplicate Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Capes"; ObjectID = "g8O-f8-aKi"; */
|
||||
"g8O-f8-aKi.title" = "Capes";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Apply Cape"; ObjectID = "ieJ-T1-eH7"; */
|
||||
"ieJ-T1-eH7.title" = "Apply Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Check for Updates..."; ObjectID = "igk-i0-oH0"; */
|
||||
"igk-i0-oH0.title" = "Check for Updates...";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Import Cape"; ObjectID = "kdx-d9-Lek"; */
|
||||
"kdx-d9-Lek.title" = "Import Cape";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Import MightyMouse"; ObjectID = "l3B-n8-21Z"; */
|
||||
"l3B-n8-21Z.title" = "Import MightyMouse";
|
||||
|
||||
/* Class = "NSMenu"; title = "Capes"; ObjectID = "ttR-pS-Pk1"; */
|
||||
"ttR-pS-Pk1.title" = "Capes";
|
||||
|
||||
/* Class = "NSMenuItem"; title = "Restore Defaults"; ObjectID = "uCE-YB-8VL"; */
|
||||
"uCE-YB-8VL.title" = "Restore Defaults";
|
||||
@@ -17,7 +17,7 @@
|
||||
@interface RBLClipView : NSClipView
|
||||
|
||||
// The backing layer for this view.
|
||||
@property (nonatomic, strong) CAScrollLayer *layer;
|
||||
@property (atomic, strong) CAScrollLayer *layer;
|
||||
|
||||
// Whether the content in this view is opaque.
|
||||
//
|
||||
|
||||
@@ -14,10 +14,11 @@
|
||||
- (NSUInteger)indexForInsertingObject:(id)anObject sortedUsingfunction:(NSInteger (*)(id, id, void *))compare context:(void *)context; {
|
||||
NSUInteger index = 0;
|
||||
NSUInteger topIndex = [self count];
|
||||
IMP objectAtIndexImp = [self methodForSelector:@selector(objectAtIndex:)];
|
||||
// IMP objectAtIndexImp = [self methodForSelector:@selector(objectAtIndex:)];
|
||||
while (index < topIndex) {
|
||||
NSUInteger midIndex = (index + topIndex) / 2;
|
||||
id testObject = objectAtIndexImp(self, @selector(objectAtIndex:), midIndex);
|
||||
id testObject = [self objectAtIndex:midIndex];
|
||||
// id testObject = objectAtIndexImp(self, @selector(objectAtIndex:), midIndex);
|
||||
if (compare(anObject, testObject, context) > 0) {
|
||||
index = midIndex + 1;
|
||||
} else {
|
||||
@@ -28,7 +29,8 @@
|
||||
}
|
||||
|
||||
static NSComparisonResult cw_SelectorCompare(id a, id b, void* aSelector) {
|
||||
return (NSComparisonResult)objc_msgSend(a, (SEL)aSelector, b);
|
||||
return (NSComparisonResult)[a performSelector:aSelector withObject:b];
|
||||
// return (NSComparisonResult)objc_msgSend(a, (SEL)aSelector, b);
|
||||
}
|
||||
|
||||
static NSComparisonResult az_comparatorCompare(id a, id b, NSComparator comparator) {
|
||||
@@ -54,7 +56,8 @@ static IMP cw_ascendingImp = NULL;
|
||||
static NSComparisonResult cw_DescriptorCompare(id a, id b, void* descriptors) {
|
||||
NSComparisonResult result = NSOrderedSame;
|
||||
for (NSSortDescriptor* sortDescriptor in (NSArray *)descriptors) {
|
||||
result = (NSComparisonResult)cw_compareObjectToObjectImp(sortDescriptor, @selector(compareObject:toObject:), a, b);
|
||||
result = [sortDescriptor compareObject:a toObject:b];
|
||||
// result = (NSComparisonResult)cw_compareObjectToObjectImp(sortDescriptor, @selector(compareObject:toObject:), a, b);
|
||||
if (result != NSOrderedSame) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if ([inKeyPath isEqualToString:@"cursorLibrary.identifier"]) {
|
||||
BOOL valid = [self.cursorLibrary.library capesWithIdentifier:*ioValue].count == 0;
|
||||
if (!valid) {
|
||||
*outError = [NSError errorWithDomain:MCErrorDomain code:MCErrorMultipleCursorIdentifiersCode userInfo:@{ NSLocalizedDescriptionKey: @"A cape with this identifier already exists" }];
|
||||
*outError = [NSError errorWithDomain:MCErrorDomain code:MCErrorMultipleCursorIdentifiersCode userInfo:@{ NSLocalizedDescriptionKey: NSLocalizedString(@"A cape with this identifier already exists", "Duplicate cape identifier error") }];
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
@@ -64,8 +64,14 @@
|
||||
}
|
||||
|
||||
- (void)imageView:(MMAnimatingImageView *)imageView didAcceptDroppedImages:(NSArray *)images {
|
||||
CGFloat scale = imageView.scale;
|
||||
[self.cursor setRepresentation:images.lastObject forScale:cursorScaleForScale(scale)];
|
||||
MCCursorScale scale = cursorScaleForScale(imageView.scale);
|
||||
|
||||
if (NSEvent.modifierFlags == NSAlternateKeyMask) {
|
||||
[self.cursor addFrame:[MCCursor composeRepresentationWithFrames:images] forScale:scale];
|
||||
} else {
|
||||
[self.cursor setRepresentation:[MCCursor composeRepresentationWithFrames:images] forScale:scale];
|
||||
self.cursor.frameCount = images.count;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)imageView:(MMAnimatingImageView *)imageView didDragOutImage:(NSImage *)image {
|
||||
|
||||
@@ -78,10 +78,10 @@ const char MCCursorNameContext;
|
||||
NSUInteger index = [self.cursors indexForInsertingObject:lib sortedUsingComparator:self.class.sortComparator];
|
||||
NSIndexSet *indices = [NSIndexSet indexSetWithIndex:index];
|
||||
|
||||
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:indices forKey:@"capes"];
|
||||
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:indices forKey:@"cursors"];
|
||||
[self.cursors insertObject:lib atIndex:index];
|
||||
[self startObservingCursor:lib];
|
||||
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:indices forKey:@"capes"];
|
||||
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:indices forKey:@"cursors"];
|
||||
[self.tableView insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:index + 1] withAnimation:NSTableViewAnimationSlideUp];
|
||||
}
|
||||
} else if (kind == NSKeyValueChangeRemoval) {
|
||||
@@ -90,10 +90,10 @@ const char MCCursorNameContext;
|
||||
|
||||
if (index != NSNotFound) {
|
||||
NSIndexSet *indices = [NSIndexSet indexSetWithIndex:index];
|
||||
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:indices forKey:@"capes"];
|
||||
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:indices forKey:@"cursors"];
|
||||
[self stopObservingCursor:lib];
|
||||
[self.cursors removeObjectAtIndex:index];
|
||||
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:indices forKey:@"capes"];
|
||||
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:indices forKey:@"cursors"];
|
||||
[self.tableView removeRowsAtIndexes:[NSIndexSet indexSetWithIndex:index + 1] withAnimation:NSTableViewAnimationSlideUp | NSTableViewAnimationEffectFade];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,17 @@
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSBeginAlertSheet(@"Do you want to save your changes?", @"Save", @"Cancel", @"Discard Changes", self.window, self, NULL, @selector(sheetDidDismiss:returnCode:contextInfo:), (__bridge void *)nextLibrary, @"Your changes will be discarded if you don't save them.");
|
||||
NSBeginAlertSheet(
|
||||
NSLocalizedString(@"Do you want to save your changes?", "Save Prompt Title"),
|
||||
NSLocalizedString(@"Save", "Save Prompt Button"),
|
||||
NSLocalizedString(@"Cancel", "Save Prompt Button"),
|
||||
NSLocalizedString(@"Discard Changes", "Save Prompt Button"),
|
||||
self.window,
|
||||
self,
|
||||
NULL,
|
||||
@selector(sheetDidDismiss:returnCode:contextInfo:),
|
||||
(__bridge void *)nextLibrary,
|
||||
NSLocalizedString(@"Your changes will be discarded if you don't save them.", "Save prompt threat"));
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
- (NSURL *)URLForCape:(MCCursorLibrary *)cape;
|
||||
|
||||
- (NSSet *)capesWithIdentifier:(NSString *)identifier;
|
||||
- (BOOL)dumpCursorsWithProgressBlock:(BOOL (^)(NSUInteger current, NSUInteger total))block;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@
|
||||
#import "NSOrderedSet+AZSortedInsert.h"
|
||||
#import "apply.h"
|
||||
#import "restore.h"
|
||||
|
||||
const char MCLibraryIdentifierContext;
|
||||
#import "create.h"
|
||||
|
||||
@interface MCLibraryController ()
|
||||
@property (nonatomic, readwrite, strong) NSUndoManager *undoManager;
|
||||
@@ -19,18 +18,21 @@ const char MCLibraryIdentifierContext;
|
||||
@property (readwrite, copy) NSURL *libraryURL;
|
||||
@property (readwrite, weak) MCCursorLibrary *appliedCape;
|
||||
- (void)loadLibrary;
|
||||
- (void)willSaveNotification:(NSNotification *)note;
|
||||
@end
|
||||
|
||||
@implementation MCLibraryController
|
||||
|
||||
- (NSURL *)URLForCape:(MCCursorLibrary *)cape {
|
||||
return [NSURL fileURLWithPathComponents:@[ self.libraryURL.path, [cape.identifier stringByAppendingPathExtension:@"cape"] ]];
|
||||
return [NSURL fileURLWithPathComponents:@[ self.libraryURL.path, [cape.identifier stringByAppendingPathExtension:@"cape"] ]];;
|
||||
}
|
||||
|
||||
- (instancetype)initWithURL:(NSURL *)url {
|
||||
if ((self = [self init])) {
|
||||
self.libraryURL = url;
|
||||
self.undoManager = [[NSUndoManager alloc] init];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willSaveNotification:) name:MCLibraryWillSaveNotificationName object:nil];
|
||||
[self loadLibrary];
|
||||
}
|
||||
|
||||
@@ -64,17 +66,14 @@ const char MCLibraryIdentifierContext;
|
||||
}
|
||||
|
||||
- (void)importCapeAtURL:(NSURL *)url {
|
||||
MCCursorLibrary *lib = [MCCursorLibrary cursorLibraryWithContentsOfURL:url];
|
||||
NSURL *destinationURL = [self URLForCape:lib];
|
||||
NSError *error = nil;
|
||||
[[NSFileManager defaultManager] copyItemAtURL:lib.fileURL toURL:destinationURL error:&error];
|
||||
if (!error) {
|
||||
lib.fileURL = destinationURL;
|
||||
[self addCape:lib];
|
||||
}
|
||||
[self importCape:[MCCursorLibrary cursorLibraryWithContentsOfURL:url]];
|
||||
}
|
||||
|
||||
- (void)importCape:(MCCursorLibrary *)lib {
|
||||
if ([[self.capes valueForKeyPath:@"identifier"] containsObject:lib.identifier]) {
|
||||
lib.identifier = [lib.identifier stringByAppendingFormat:@".%@", UUID()];
|
||||
}
|
||||
|
||||
lib.fileURL = [self URLForCape:lib];
|
||||
[lib writeToFile:lib.fileURL.path atomically:NO];
|
||||
|
||||
@@ -83,7 +82,7 @@ const char MCLibraryIdentifierContext;
|
||||
|
||||
|
||||
- (void)addCape:(MCCursorLibrary *)cape {
|
||||
if ([self.capes containsObject:cape]) {
|
||||
if ([self.capes containsObject:cape] || [[self.capes valueForKeyPath:@"identifier"] containsObject:cape.identifier]) {
|
||||
NSLog(@"Not adding %@ to the library because an object with that identifier already exists", cape.identifier);
|
||||
return;
|
||||
}
|
||||
@@ -95,18 +94,18 @@ const char MCLibraryIdentifierContext;
|
||||
|
||||
NSSet *change = [NSSet setWithObject:cape];
|
||||
[self willChangeValueForKey:@"capes" withSetMutation:NSKeyValueUnionSetMutation usingObjects:change];
|
||||
|
||||
[cape addObserver:self forKeyPath:@"identifier" options:NSKeyValueObservingOptionOld context:(void *)&MCLibraryIdentifierContext];
|
||||
|
||||
|
||||
cape.library = self;
|
||||
[self.capes addObject:cape];
|
||||
|
||||
|
||||
[[self.undoManager prepareWithInvocationTarget:self] removeCape:cape];
|
||||
if (!self.undoManager.isUndoing) {
|
||||
[self.undoManager setActionName:[@"Add " stringByAppendingString:cape.name]];
|
||||
}
|
||||
|
||||
[self didChangeValueForKey:@"capes" withSetMutation:NSKeyValueUnionSetMutation usingObjects:change];
|
||||
|
||||
[cape.undoManager removeAllActions];
|
||||
}
|
||||
|
||||
|
||||
@@ -116,9 +115,7 @@ const char MCLibraryIdentifierContext;
|
||||
[self willChangeValueForKey:@"capes" withSetMutation:NSKeyValueMinusSetMutation usingObjects:change];
|
||||
if (cape == self.appliedCape)
|
||||
[self restoreCape];
|
||||
|
||||
[cape removeObserver:self forKeyPath:@"identifier" context:(void *)&MCLibraryIdentifierContext];
|
||||
|
||||
|
||||
if (cape.library == self)
|
||||
cape.library = nil;
|
||||
|
||||
@@ -155,21 +152,33 @@ const char MCLibraryIdentifierContext;
|
||||
return [self.capes filteredSetUsingPredicate:pred];
|
||||
}
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
||||
if (context == &MCLibraryIdentifierContext) {
|
||||
// change the file url to reflect the new identifier
|
||||
MCCursorLibrary *cape = object;
|
||||
NSURL *oldURL = cape.fileURL;
|
||||
[cape setFileURL:[self URLForCape:cape]];
|
||||
|
||||
NSError *error = nil;
|
||||
[[NSFileManager defaultManager] moveItemAtURL:oldURL toURL:cape.fileURL error:&error];
|
||||
if (error) {
|
||||
NSLog(@"Failed to rename the identifier of the cape %@. Reverting to %@...", cape.identifier, change[NSKeyValueChangeOldKey]);
|
||||
cape.identifier = change[NSKeyValueChangeOldKey];
|
||||
cape.fileURL = [self URLForCape:cape];
|
||||
}
|
||||
- (void)willSaveNotification:(NSNotification *)note {
|
||||
MCCursorLibrary *cape = note.object;
|
||||
NSURL *oldURL = cape.fileURL;
|
||||
[cape setFileURL:[self URLForCape:cape]];
|
||||
NSError *error = nil;
|
||||
[[NSFileManager defaultManager] removeItemAtURL:oldURL error:&error];
|
||||
|
||||
if (error) {
|
||||
NSLog(@"error removing cape after rename: %@", error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (BOOL)dumpCursorsWithProgressBlock:(BOOL (^)(NSUInteger current, NSUInteger total))block {
|
||||
NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:
|
||||
[NSString stringWithFormat: @"%@ (%f).cape",
|
||||
NSLocalizedString(@"Mousecape Dump", @"Mousecape dump cursor file name"),
|
||||
NSDate.date.timeIntervalSince1970]];
|
||||
if (dumpCursorsToFile(path, block)) {
|
||||
__weak MCLibraryController *weakSelf = self;
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[weakSelf importCapeAtURL:[NSURL fileURLWithPath:path]];
|
||||
});
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -122,6 +122,11 @@ const char MCLibraryNameContext;
|
||||
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:indices forKey:@"capes"];
|
||||
|
||||
[self.tableView removeRowsAtIndexes:indices withAnimation:NSTableViewAnimationSlideUp | NSTableViewAnimationEffectFade];
|
||||
|
||||
if (self.editWindowController.cursorLibrary == lib) {
|
||||
self.editWindowController.cursorLibrary = nil;
|
||||
[self.editWindowController close];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,10 @@
|
||||
#import "MCLibraryViewController.h"
|
||||
|
||||
@interface MCLibraryWindowController : NSWindowController <NSWindowDelegate>
|
||||
@property (assign) IBOutlet MCLibraryViewController *libraryViewController;
|
||||
@property (assign) IBOutlet NSView *appliedAccessory;
|
||||
@property (weak) IBOutlet MCLibraryViewController *libraryViewController;
|
||||
@property (weak) IBOutlet NSView *appliedAccessory;
|
||||
@property (weak) IBOutlet NSProgressIndicator *progressBar;
|
||||
@property (weak) IBOutlet NSTextField *progressField;
|
||||
@end
|
||||
|
||||
@interface MCAppliedCapeValueTransformer : NSValueTransformer
|
||||
|
||||
@@ -14,6 +14,10 @@
|
||||
|
||||
@implementation MCLibraryWindowController
|
||||
|
||||
- (void)awakeFromNib {
|
||||
[self composeAccessory];
|
||||
}
|
||||
|
||||
- (id)initWithWindow:(NSWindow *)window {
|
||||
if ((self = [super initWithWindow:window])) {
|
||||
|
||||
@@ -22,9 +26,9 @@
|
||||
}
|
||||
|
||||
- (void)windowDidLoad {
|
||||
NSLog(@"window load");
|
||||
[super windowDidLoad];
|
||||
[self composeAccessory];
|
||||
|
||||
}
|
||||
|
||||
- (NSString *)windowNibName {
|
||||
@@ -124,6 +128,30 @@
|
||||
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:@[ cape.fileURL ]];
|
||||
}
|
||||
|
||||
- (IBAction)dumpCapeAction:(NSMenuItem *)sender {
|
||||
[self.window beginSheet:self.progressBar.window completionHandler:nil];
|
||||
__weak MCLibraryWindowController *weakSelf = self;
|
||||
self.progressBar.doubleValue = 0.0;
|
||||
[self.progressBar setIndeterminate:NO];
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
|
||||
[weakSelf.libraryViewController.libraryController dumpCursorsWithProgressBlock:^BOOL (NSUInteger current, NSUInteger total) {
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
weakSelf.progressField.stringValue = [NSString stringWithFormat:@"%lu %@ %lu", (unsigned long)current, NSLocalizedString(@"of", @"Dump cursor progress separator (eg: 5 of 129)"), (unsigned long)total];
|
||||
weakSelf.progressBar.minValue = 0;
|
||||
weakSelf.progressBar.maxValue = total;
|
||||
weakSelf.progressBar.doubleValue = current;
|
||||
});
|
||||
return YES;
|
||||
}];
|
||||
|
||||
dispatch_sync(dispatch_get_main_queue(), ^{
|
||||
[weakSelf.window endSheet:self.progressBar.window];
|
||||
[[NSCursor arrowCursor] set];
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MCAppliedCapeValueTransformer
|
||||
@@ -133,7 +161,9 @@
|
||||
}
|
||||
|
||||
- (id)transformedValue:(id)value {
|
||||
return [NSLocalizedString(@"Applied Cape: ", @"Accessory label for applied cape") stringByAppendingString:value ? value : NSLocalizedString(@"None", @"Accessory label for when no cape is applied")];
|
||||
return [
|
||||
NSLocalizedString(@"Applied Cape: ", @"Accessory label for applied cape")
|
||||
stringByAppendingString:value ? value : NSLocalizedString(@"None", @"Window Titlebar Accessory label for when no cape is applied")];
|
||||
}
|
||||
|
||||
@end
|
||||
@end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6154.17" systemVersion="14A261i" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6205" systemVersion="13E28" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment version="1070" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6154.17"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6205"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="MCGeneralPreferencesController">
|
||||
@@ -11,36 +11,64 @@
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customView id="1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="118"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="143"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<slider verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JRx-YT-ae7">
|
||||
<rect key="frame" x="18" y="19" width="392" height="27"/>
|
||||
<sliderCell key="cell" continuous="YES" state="on" alignment="left" minValue="1" maxValue="16" doubleValue="1" tickMarkPosition="below" numberOfTickMarks="16" sliderType="linear" id="osm-63-Q66"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ndv-TL-Pur">
|
||||
<rect key="frame" x="18" y="106" width="48" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="I am... " id="a3X-1e-eOG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8pe-9P-fa1">
|
||||
<rect key="frame" x="68" y="102" width="94" height="25"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="Hdu-Yg-F0d">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
<segment label="right" selected="YES"/>
|
||||
<segment label="left" tag="1"/>
|
||||
</segments>
|
||||
</segmentedCell>
|
||||
<connections>
|
||||
<binding destination="Dw0-Gt-5ak" name="selectedIndex" keyPath="values.MCHandedness" id="ZqA-zg-dh2">
|
||||
<dictionary key="options">
|
||||
<integer key="NSMultipleValuesPlaceholder" value="0"/>
|
||||
<integer key="NSNoSelectionPlaceholder" value="0"/>
|
||||
<integer key="NSNotApplicablePlaceholder" value="0"/>
|
||||
<integer key="NSNullPlaceholder" value="0"/>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JRx-YT-ae7">
|
||||
<rect key="frame" x="18" y="15" width="392" height="25"/>
|
||||
<sliderCell key="cell" continuous="YES" state="on" alignment="left" minValue="0.5" maxValue="16" doubleValue="1" tickMarkPosition="below" numberOfTickMarks="16" sliderType="linear" id="osm-63-Q66"/>
|
||||
<connections>
|
||||
<binding destination="-2" name="value" keyPath="cursorScale" id="PlF-RW-V9z"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hg4-8F-fVE">
|
||||
<rect key="frame" x="20" y="52" width="82" height="17"/>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hg4-8F-fVE">
|
||||
<rect key="frame" x="20" y="48" width="82" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Cursor Scale" id="gxo-nh-UCg">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yjb-oM-v3t">
|
||||
<rect key="frame" x="18" y="81" width="265" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double Clicks capes" id="mFs-6l-Guo">
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yjb-oM-v3t">
|
||||
<rect key="frame" x="18" y="77" width="90" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Double Clicks" id="mFs-6l-Guo">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<segmentedControl verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZYi-xB-wBd">
|
||||
<rect key="frame" x="119" y="75" width="111" height="25"/>
|
||||
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ZYi-xB-wBd">
|
||||
<rect key="frame" x="114" y="72" width="111" height="25"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="texturedSquare" trackingMode="selectOne" id="oXj-Hj-PSJ">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
@@ -59,8 +87,11 @@
|
||||
</binding>
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QBy-dj-wZ4">
|
||||
<rect key="frame" x="416" y="25" width="44" height="19"/>
|
||||
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QBy-dj-wZ4">
|
||||
<rect key="frame" x="416" y="21" width="44" height="19"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="44" id="6CD-yu-I0l"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="nlB-rR-gpk">
|
||||
<numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#0.00" negativeFormat="#0.00" usesGroupingSeparator="NO" paddingCharacter="*" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="2" minimumFractionDigits="2" maximumFractionDigits="2" decimalSeparator="." groupingSeparator="," currencyDecimalSeparator="." plusSign="+" minusSign="-" notANumberSymbol="NaN" perMillSymbol="‰" percentSymbol="%" exponentSymbol="E" positivePrefix="" positiveSuffix="" negativePrefix="-" negativeSuffix="" id="ZjS-1g-txf">
|
||||
<real key="minimum" value="0.5"/>
|
||||
@@ -74,7 +105,46 @@
|
||||
<binding destination="-2" name="value" keyPath="cursorScale" id="ffZ-zU-mYh"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BrD-CT-ISu">
|
||||
<rect key="frame" x="168" y="106" width="51" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="handed" id="L0R-Jd-0pF">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Mx2-2f-xxz">
|
||||
<rect key="frame" x="231" y="77" width="40" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="capes" id="PAA-Qd-rHg">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="ZYi-xB-wBd" firstAttribute="leading" secondItem="yjb-oM-v3t" secondAttribute="trailing" constant="8" id="75E-3R-Wci"/>
|
||||
<constraint firstItem="yjb-oM-v3t" firstAttribute="top" secondItem="Ndv-TL-Pur" secondAttribute="bottom" constant="12" id="8sY-OX-BJr"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QBy-dj-wZ4" secondAttribute="trailing" constant="20" id="AzN-Bd-09M"/>
|
||||
<constraint firstItem="yjb-oM-v3t" firstAttribute="leading" secondItem="Ndv-TL-Pur" secondAttribute="leading" id="BbZ-Ge-lTF"/>
|
||||
<constraint firstItem="hg4-8F-fVE" firstAttribute="leading" secondItem="JRx-YT-ae7" secondAttribute="leading" constant="2" id="Fc0-NM-Trw"/>
|
||||
<constraint firstItem="BrD-CT-ISu" firstAttribute="centerY" secondItem="8pe-9P-fa1" secondAttribute="centerY" id="Hg2-I1-obt"/>
|
||||
<constraint firstItem="QBy-dj-wZ4" firstAttribute="leading" secondItem="JRx-YT-ae7" secondAttribute="trailing" constant="8" id="JVR-o1-2YY"/>
|
||||
<constraint firstItem="Mx2-2f-xxz" firstAttribute="centerY" secondItem="ZYi-xB-wBd" secondAttribute="centerY" constant="-0.5" id="M1O-2Z-BQG"/>
|
||||
<constraint firstItem="ZYi-xB-wBd" firstAttribute="top" secondItem="8pe-9P-fa1" secondAttribute="bottom" constant="8" symbolic="YES" id="MxX-Qk-iHu"/>
|
||||
<constraint firstItem="Mx2-2f-xxz" firstAttribute="leading" secondItem="ZYi-xB-wBd" secondAttribute="trailing" constant="8" id="Ocg-tR-hZA"/>
|
||||
<constraint firstItem="hg4-8F-fVE" firstAttribute="top" secondItem="yjb-oM-v3t" secondAttribute="bottom" constant="12" id="P7d-eI-p1C"/>
|
||||
<constraint firstItem="BrD-CT-ISu" firstAttribute="leading" secondItem="8pe-9P-fa1" secondAttribute="trailing" constant="8" id="Rb5-Nu-xUh"/>
|
||||
<constraint firstItem="8pe-9P-fa1" firstAttribute="leading" secondItem="Ndv-TL-Pur" secondAttribute="trailing" constant="4" id="UkQ-8L-CRg"/>
|
||||
<constraint firstItem="Ndv-TL-Pur" firstAttribute="leading" secondItem="1" secondAttribute="leading" constant="20" id="Z9v-C6-xzG"/>
|
||||
<constraint firstItem="Ndv-TL-Pur" firstAttribute="top" secondItem="1" secondAttribute="top" constant="20" id="c2R-ME-mbU"/>
|
||||
<constraint firstItem="yjb-oM-v3t" firstAttribute="centerY" secondItem="ZYi-xB-wBd" secondAttribute="centerY" constant="-0.5" id="eQr-KJ-ljI"/>
|
||||
<constraint firstAttribute="bottom" secondItem="JRx-YT-ae7" secondAttribute="bottom" constant="16" id="eeD-OM-YJ7"/>
|
||||
<constraint firstItem="Ndv-TL-Pur" firstAttribute="centerY" secondItem="8pe-9P-fa1" secondAttribute="centerY" id="gJN-ub-C95"/>
|
||||
<constraint firstItem="yjb-oM-v3t" firstAttribute="leading" secondItem="hg4-8F-fVE" secondAttribute="leading" constant="-2" id="jMe-as-UYa"/>
|
||||
<constraint firstItem="QBy-dj-wZ4" firstAttribute="centerY" secondItem="JRx-YT-ae7" secondAttribute="centerY" constant="-3.5" id="mBD-l8-aHL"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="311" y="408.5"/>
|
||||
</customView>
|
||||
<userDefaultsController representsSharedInstance="YES" id="Dw0-Gt-5ak"/>
|
||||
</objects>
|
||||
|
||||
@@ -33,11 +33,13 @@ extern MCCursorScale cursorScaleForScale(CGFloat scale);
|
||||
|
||||
- (void)setRepresentation:(NSImageRep *)imageRep forScale:(MCCursorScale)scale;
|
||||
- (void)removeRepresentationForScale:(MCCursorScale)scale;
|
||||
- (void)addFrame:(NSImageRep *)frame forScale:(MCCursorScale)scale;
|
||||
|
||||
- (NSImageRep *)representationForScale:(MCCursorScale)scale;
|
||||
- (NSImageRep *)representationWithScale:(CGFloat)scale;
|
||||
|
||||
- (NSDictionary *)dictionaryRepresentation;
|
||||
+ (NSImageRep *)composeRepresentationWithFrames:(NSArray *)frames;
|
||||
|
||||
// Derived Properties
|
||||
- (NSImage *)imageWithAllReps;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MCCursor.h"
|
||||
|
||||
#import "NSBitmapImageRep+ColorSpace.h"
|
||||
MCCursorScale cursorScaleForScale(CGFloat scale) {
|
||||
if (scale < 0.0)
|
||||
return MCCursorScaleNone;
|
||||
@@ -16,7 +16,8 @@ MCCursorScale cursorScaleForScale(CGFloat scale) {
|
||||
}
|
||||
|
||||
@interface MCCursor ()
|
||||
@property (readwrite, strong) NSMutableDictionary *representations;
|
||||
@property (readwrite, strong) NSMutableDictionary<NSString *, NSBitmapImageRep *> *representations;
|
||||
- (NSInteger)framesForScale:(MCCursorScale)scale;
|
||||
- (BOOL)_readFromDictionary:(NSDictionary *)dictionary ofVersion:(CGFloat)version;
|
||||
@end
|
||||
|
||||
@@ -97,16 +98,18 @@ MCCursorScale cursorScaleForScale(CGFloat scale) {
|
||||
self.frameCount = frameCount.unsignedIntegerValue;
|
||||
self.frameDuration = frameDuration.doubleValue;
|
||||
self.hotSpot = NSMakePoint(hotSpotX.doubleValue, hotSpotY.doubleValue);
|
||||
self.size = NSMakeSize(pointsWide.doubleValue, pointsHigh.doubleValue);
|
||||
// self.repeatCount = repeatCount.unsignedIntegerValue;
|
||||
|
||||
for (NSData *data in reps) {
|
||||
// data in v2.0 documents are saved as PNGs
|
||||
NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithData:data];
|
||||
rep.size = NSMakeSize(self.size.width, self.size.height * self.frameCount);
|
||||
[self setRepresentation:rep forScale:cursorScaleForScale(rep.pixelsWide / self.size.width)];
|
||||
|
||||
[self setRepresentation:rep.retaggedSRGBSpace forScale:cursorScaleForScale(rep.pixelsWide / pointsWide.doubleValue)];
|
||||
}
|
||||
|
||||
self.size = NSMakeSize(pointsWide.doubleValue, pointsHigh.doubleValue);
|
||||
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
@@ -126,7 +129,7 @@ MCCursorScale cursorScaleForScale(CGFloat scale) {
|
||||
NSMutableArray *pngs = [NSMutableArray array];
|
||||
for (NSString *key in self.representations) {
|
||||
NSBitmapImageRep *rep = self.representations[key];
|
||||
pngs[pngs.count] = [rep representationUsingType:NSPNGFileType properties:nil];
|
||||
pngs[pngs.count] = [rep.ensuredSRGBSpace TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0];
|
||||
}
|
||||
|
||||
drep[MCCursorDictionaryRepresentationsKey] = pngs;
|
||||
@@ -176,25 +179,97 @@ MCCursorScale cursorScaleForScale(CGFloat scale) {
|
||||
[super setValue:value forUndefinedKey:key];
|
||||
}
|
||||
|
||||
- (void)setRepresentation:(NSImageRep *)imageRep forScale:(MCCursorScale)scale {
|
||||
- (void)setRepresentation:(NSBitmapImageRep *)imageRep forScale:(MCCursorScale)scale {
|
||||
[self willChangeValueForKey:@"representations"];
|
||||
|
||||
NSString *key = [@"cursorRep" stringByAppendingFormat:@"%lu", scale];
|
||||
[self willChangeValueForKey:key];
|
||||
if (imageRep)
|
||||
[self.representations setObject:imageRep forKey:@(scale)];
|
||||
[self.representations setObject:imageRep forKey:[NSString stringWithFormat:@"%lu", (unsigned long)scale, nil]];
|
||||
else
|
||||
[self.representations removeObjectForKey:@(scale)];
|
||||
[self.representations removeObjectForKey:[NSString stringWithFormat:@"%lu", (unsigned long)scale, nil]];
|
||||
|
||||
if (self.representations.count == 1) {
|
||||
// This is the first object, set the image size to this
|
||||
NSSize size = NSMakeSize((double)imageRep.pixelsWide / (scale / 100.0), (double)imageRep.pixelsHigh / self.frameCount / (scale / 100.0));
|
||||
if (!NSEqualSizes(size, NSZeroSize)) {
|
||||
self.size = size;
|
||||
}
|
||||
}
|
||||
|
||||
[self didChangeValueForKey:key];
|
||||
[self didChangeValueForKey:@"representations"];
|
||||
}
|
||||
|
||||
- (void)addFrame:(NSImageRep *)frame forScale:(MCCursorScale)scale {
|
||||
NSImageRep *rep = [self representationForScale:scale];
|
||||
NSImageRep *newRep = [self.class composeRepresentationWithFrames:@[ rep, frame ]];
|
||||
|
||||
NSInteger frames = newRep.pixelsHigh / self.size.height;
|
||||
|
||||
if (self.frameCount < frames) {
|
||||
self.frameCount = frames;
|
||||
}
|
||||
|
||||
[self setRepresentation:newRep forScale:scale];
|
||||
}
|
||||
|
||||
+ (NSBitmapImageRep *)composeRepresentationWithFrames:(NSArray<NSBitmapImageRep *> *)frames {
|
||||
if (frames.count == 0)
|
||||
return nil;
|
||||
if (frames.count == 1)
|
||||
return frames.firstObject;
|
||||
|
||||
NSUInteger height = [[frames valueForKeyPath:@"@sum.pixelsHigh"] unsignedIntegerValue];
|
||||
NSUInteger width = [(NSImageRep *)frames[0] pixelsWide];
|
||||
|
||||
NSBitmapImageRep *newRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
|
||||
pixelsWide:width
|
||||
pixelsHigh:height
|
||||
bitsPerSample:8
|
||||
samplesPerPixel:4
|
||||
hasAlpha:YES
|
||||
isPlanar:NO
|
||||
colorSpaceName:NSCalibratedRGBColorSpace
|
||||
bytesPerRow:4 * width
|
||||
bitsPerPixel:32];
|
||||
NSGraphicsContext *ctx = [NSGraphicsContext graphicsContextWithBitmapImageRep:newRep];
|
||||
[NSGraphicsContext saveGraphicsState];
|
||||
[NSGraphicsContext setCurrentContext:ctx];
|
||||
|
||||
NSUInteger currentY = 0;
|
||||
for (NSInteger idx = frames.count - 1; idx >= 0; idx--) {
|
||||
NSBitmapImageRep *rep = frames[idx];
|
||||
if (rep.pixelsWide != width) {
|
||||
NSLog(@"Can't create representation from images of different widths");
|
||||
return nil;
|
||||
}
|
||||
|
||||
[rep drawInRect:NSMakeRect(0, currentY, rep.pixelsWide, rep.pixelsHigh)
|
||||
fromRect:NSZeroRect
|
||||
operation:NSCompositingOperationSourceOver
|
||||
fraction:1.0
|
||||
respectFlipped:YES
|
||||
hints:nil];
|
||||
|
||||
currentY += rep.pixelsHigh;
|
||||
}
|
||||
|
||||
[NSGraphicsContext restoreGraphicsState];
|
||||
|
||||
return newRep;
|
||||
}
|
||||
|
||||
- (NSInteger)framesForScale:(MCCursorScale)scale {
|
||||
return [self representationForScale:scale].pixelsHigh / self.size.height;
|
||||
}
|
||||
|
||||
- (void)removeRepresentationForScale:(MCCursorScale)scale {
|
||||
[self setRepresentation:nil forScale:scale];
|
||||
}
|
||||
|
||||
- (NSImageRep *)representationForScale:(MCCursorScale)scale {
|
||||
return self.representations[@(scale)];
|
||||
return self.representations[[NSString stringWithFormat:@"%lu", (unsigned long)scale, nil]];
|
||||
}
|
||||
|
||||
- (NSImageRep *)representationWithScale:(CGFloat)scale {
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "MCCursor.h"
|
||||
|
||||
extern NSString *const MCLibraryWillSaveNotificationName;
|
||||
extern NSString *const MCLibraryDidSaveNotificationName;
|
||||
|
||||
@class MCLibraryController;
|
||||
@interface MCCursorLibrary : NSObject <NSCopying>
|
||||
@property (nonatomic, copy) NSString *name;
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
|
||||
#import "MCCursorLibrary.h"
|
||||
|
||||
NSString *const MCLibraryWillSaveNotificationName = @"MCLibraryWillSave";
|
||||
NSString *const MCLibraryDidSaveNotificationName = @"MCLibraryDidSave";
|
||||
|
||||
@interface MCCursorLibrary ()
|
||||
@property (nonatomic, strong) NSUndoManager *undoManager;
|
||||
@property (nonatomic, readwrite, strong) NSMutableSet *cursors;
|
||||
@property (nonatomic, assign) NSUInteger changeCount;
|
||||
@property (nonatomic, assign) NSUInteger lastChangeCount;
|
||||
@property (nonatomic, strong) NSArray *observers;
|
||||
@property (nonatomic, copy) NSString *oldIdentifier;
|
||||
|
||||
- (BOOL)_readFromDictionary:(NSDictionary *)dictionary;
|
||||
- (void)addCursorsFromDictionary:(NSDictionary *)cursorDicts ofVersion:(CGFloat)doubleVersion;
|
||||
@@ -24,19 +28,35 @@
|
||||
- (void)startObservingCursor:(MCCursor *)cursor;
|
||||
- (void)stopObservingCursor:(MCCursor *)cursor;
|
||||
|
||||
+ (NSArray *)cursorUndoProperties;
|
||||
+ (NSArray *)undoProperties;
|
||||
+ (NSDictionary<NSString *, NSString *> *)cursorUndoProperties;
|
||||
+ (NSDictionary<NSString *, NSString *> *)undoProperties;
|
||||
@end
|
||||
|
||||
@implementation MCCursorLibrary
|
||||
@dynamic dirty;
|
||||
|
||||
+ (NSArray *)undoProperties {
|
||||
return @[ @"identifier", @"name", @"author", @"hiDPI", @"version", @"inCloud" ];
|
||||
+ (NSDictionary<NSString *, NSString *> *)undoProperties {
|
||||
return @{
|
||||
@"identifier": NSLocalizedString(@"identifier", @"Undo change cape identifier suffix"),
|
||||
@"name": NSLocalizedString(@"name", @"Undo change cape name suffix"),
|
||||
@"author": NSLocalizedString(@"author", @"Undo change cape author suffix"),
|
||||
@"hiDPI": NSLocalizedString(@"hiDPI", @"Undo change cape hidpi suffix"),
|
||||
@"version": NSLocalizedString(@"version", @"Undo change cape version suffix")
|
||||
};
|
||||
}
|
||||
|
||||
+ (NSArray *)cursorUndoProperties {
|
||||
return @[ @"identifier", @"frameDuration", @"frameCount", @"size", @"hotSpot", @"cursorRep100", @"cursorRep200", @"cursorRep500", @"cursorRep1000" ];
|
||||
+ (NSDictionary<NSString *, NSString *> *)cursorUndoProperties {
|
||||
return @{
|
||||
@"identifier" : NSLocalizedString(@"cursor type", @"Undo change cursor type suffix"),
|
||||
@"frameDuration": NSLocalizedString(@"frame duration", @"Undo change cursor frame duraiton suffix"),
|
||||
@"frameCount" : NSLocalizedString(@"frame count", @"Undo change cursor frame count suffix"),
|
||||
@"size" : NSLocalizedString(@"dimensions", @"Undo change cursor image dimensions suffix"),
|
||||
@"hotSpot" : NSLocalizedString(@"hotspot", @"Undo change cursor hotspot suffix"),
|
||||
@"cursorRep100" : NSLocalizedString(@"1x Representation", @"Undo change cursor 1x rep suffix"),
|
||||
@"cursorRep200" : NSLocalizedString(@"2x Rep", "Undo change cursor 2x rep suffix"),
|
||||
@"cursorRep500" : NSLocalizedString(@"2x Rep", "Undo change cursor 5x rep suffix"),
|
||||
@"cursorRep1000": NSLocalizedString(@"2x Rep", "Undo change cursor 10x rep suffix")
|
||||
};
|
||||
}
|
||||
|
||||
+ (MCCursorLibrary *)cursorLibraryWithContentsOfFile:(NSString *)path {
|
||||
@@ -103,14 +123,14 @@
|
||||
|
||||
self.observers = @[ob1, ob2, ob3];
|
||||
|
||||
self.name = @"Unnamed";
|
||||
self.author = NSUserName();
|
||||
self.hiDPI = NO;
|
||||
self.inCloud = NO;
|
||||
self.identifier = [NSString stringWithFormat:@"local.%@.Unnamed.%f", self.author, [NSDate timeIntervalSinceReferenceDate]];
|
||||
self.version = @1.0;
|
||||
self.cursors = [NSMutableSet set];
|
||||
self.changeCount = 0;
|
||||
self.name = NSLocalizedString(@"Unnamed", "Default New Cape Name");
|
||||
self.author = NSUserName();
|
||||
self.hiDPI = NO;
|
||||
self.inCloud = NO;
|
||||
self.identifier = [NSString stringWithFormat:@"local.%@.Unnamed.%f", self.author, [NSDate timeIntervalSinceReferenceDate]];
|
||||
self.version = @1.0;
|
||||
self.cursors = [NSMutableSet set];
|
||||
self.changeCount = 0;
|
||||
self.lastChangeCount = 0;
|
||||
[self startObservingProperties];
|
||||
}
|
||||
@@ -230,10 +250,12 @@ const char MCCursorPropertiesContext;
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
||||
if (context == &MCCursorLibraryPropertiesContext || context == &MCCursorPropertiesContext) {
|
||||
NSString *decamelized = [keyPath stringByReplacingOccurrencesOfString:@"([a-z])([A-Z])"
|
||||
withString:@"$1 $2"
|
||||
options:NSRegularExpressionSearch
|
||||
range:NSMakeRange(0, keyPath.length)];
|
||||
NSString *decamelized = NULL;
|
||||
if (context == &MCCursorLibraryPropertiesContext) {
|
||||
decamelized = [self.class undoProperties][keyPath];
|
||||
} else {
|
||||
decamelized = [self.class cursorUndoProperties][keyPath];
|
||||
}
|
||||
|
||||
id oldValue = change[NSKeyValueChangeOldKey];
|
||||
if ([oldValue isKindOfClass:[NSNull class]])
|
||||
@@ -242,7 +264,11 @@ const char MCCursorPropertiesContext;
|
||||
[[self.undoManager prepareWithInvocationTarget: object] setValue:oldValue forKeyPath:keyPath];
|
||||
|
||||
if (!self.undoManager.isUndoing) {
|
||||
[self.undoManager setActionName:[[@"Change " stringByAppendingString:decamelized] capitalizedString]];
|
||||
[self.undoManager setActionName:[[NSLocalizedString(@"Change ", "Undo Change Prefix") stringByAppendingString:decamelized] capitalizedString]];
|
||||
}
|
||||
|
||||
if ([keyPath isEqualToString:@"identifier"]) {
|
||||
self.oldIdentifier = oldValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -275,7 +301,7 @@ const char MCCursorPropertiesContext;
|
||||
|
||||
[[self.undoManager prepareWithInvocationTarget:self] removeCursor:cursor];
|
||||
if (!self.undoManager.isUndoing) {
|
||||
[self.undoManager setActionName:@"Add Cursor"];
|
||||
[self.undoManager setActionName:NSLocalizedString(@"Add Cursor", "Add Cursor Undo Title")];
|
||||
}
|
||||
|
||||
[self willChangeValueForKey:@"cursors" withSetMutation:NSKeyValueUnionSetMutation usingObjects:change];
|
||||
@@ -289,7 +315,7 @@ const char MCCursorPropertiesContext;
|
||||
|
||||
[[self.undoManager prepareWithInvocationTarget:self] addCursor:cursor];
|
||||
if (!self.undoManager.isUndoing) {
|
||||
[self.undoManager setActionName:@"Remove Cursor"];
|
||||
[self.undoManager setActionName:NSLocalizedString(@"Remove Cursor", @"Remove Cursor Undo Title")];
|
||||
}
|
||||
|
||||
[self willChangeValueForKey:@"cursors" withSetMutation:NSKeyValueMinusSetMutation usingObjects:change];
|
||||
@@ -345,19 +371,21 @@ const char MCCursorPropertiesContext;
|
||||
|
||||
if (duplicates.count > 0) {
|
||||
return [NSError errorWithDomain:MCErrorDomain code:MCErrorMultipleCursorIdentifiersCode userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedString(@"Save failed", nil),
|
||||
NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedString(@"Multiple cursors with the name(s): %@ exist.", nil), duplicates] }];
|
||||
NSLocalizedDescriptionKey: NSLocalizedString(@"Save failed", @"New Cape Failure Title"),
|
||||
NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedString(@"Multiple cursors with the name(s): %@ exist.", @"New Cape Failure Duplicate cursor name error"), duplicates] }];
|
||||
}
|
||||
|
||||
// [self.undoManager removeAllActions];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MCLibraryWillSaveNotificationName object:self];
|
||||
|
||||
BOOL success = [self writeToFile:self.fileURL.path atomically:NO];
|
||||
if (success) {
|
||||
[self updateChangeCount:NSChangeCleared];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:MCLibraryDidSaveNotificationName object:self];
|
||||
return nil;
|
||||
}
|
||||
return [NSError errorWithDomain:MCErrorDomain code:MCErrorWriteFailCode userInfo:@{
|
||||
NSLocalizedDescriptionKey: NSLocalizedString(@"Save failed", nil),
|
||||
NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"Error writing cape to disk.", nil) }];
|
||||
NSLocalizedDescriptionKey: NSLocalizedString(@"Save failed", @"New Cape Failure Title"),
|
||||
NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"Error writing cape to disk.", @"New Cape Filure Filesystem Error") }];
|
||||
}
|
||||
|
||||
- (void)updateChangeCount:(NSDocumentChangeType)change {
|
||||
|
||||
@@ -9,12 +9,18 @@
|
||||
#import "MCCapeCellView.h"
|
||||
#import "MCCapePreviewItem.h"
|
||||
|
||||
@interface MCCapeCellView ()
|
||||
@end
|
||||
|
||||
@interface MCSortValueTransformer : NSValueTransformer
|
||||
@end
|
||||
|
||||
@implementation MCCapeCellView
|
||||
|
||||
- (void)viewDidMoveToWindow {
|
||||
self.collectionView.itemPrototype = [MCCapePreviewItem new];
|
||||
[self.collectionView bind:NSContentBinding toObject:self withKeyPath:@"objectValue.cursors" options:nil];
|
||||
|
||||
[self.collectionView bind:NSContentBinding toObject:self withKeyPath:@"objectValue.cursors" options:@{ NSValueTransformerBindingOption: [MCSortValueTransformer new] }];
|
||||
|
||||
self.collectionView.minItemSize = self.collectionView.itemPrototype.view.frame.size;
|
||||
self.collectionView.maxItemSize = self.collectionView.minItemSize;
|
||||
}
|
||||
@@ -25,6 +31,18 @@
|
||||
|
||||
@end
|
||||
|
||||
@implementation MCSortValueTransformer
|
||||
|
||||
+ (Class)transformedValueClass {
|
||||
return [NSSet class];
|
||||
}
|
||||
|
||||
- (NSArray *)transformedValue:(NSSet *)value {
|
||||
return [value sortedArrayUsingDescriptors: @[ [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)] ]];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MCHDValueTransformer
|
||||
|
||||
+ (Class)transformedValueClass {
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
#import "MMAnimatingImageView.h"
|
||||
|
||||
@interface MCCapePreviewItem : NSCollectionViewItem
|
||||
@property (nonatomic, assign) IBOutlet MMAnimatingImageView *animatingImageView;
|
||||
@property (nonatomic, weak) IBOutlet MMAnimatingImageView *animatingImageView;
|
||||
@end
|
||||
|
||||
@@ -26,13 +26,17 @@
|
||||
[self.animatingImageView bind:@"image" toObject:self withKeyPath:@"representedObject.imageWithAllReps" options:nil];
|
||||
[self.animatingImageView bind:@"frameCount" toObject:self withKeyPath:@"representedObject.frameCount" options:nil];
|
||||
[self.animatingImageView bind:@"frameDuration" toObject:self withKeyPath:@"representedObject.frameDuration" options:nil];
|
||||
|
||||
[self.animatingImageView bind:@"shouldFlipHorizontally"
|
||||
toObject:[NSUserDefaults standardUserDefaults]
|
||||
withKeyPath:MCPreferencesHandednessKey
|
||||
options:nil];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[self.animatingImageView unbind:@"shouldFlipHorizontally"];
|
||||
[self.animatingImageView unbind:@"image"];
|
||||
[self.animatingImageView unbind:@"frameCount"];
|
||||
[self.animatingImageView unbind:@"frameDuration"];
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
@property (assign) NSInteger frameCount;
|
||||
@property (assign) CGFloat scale; // set to 0.0 if you want to inherit window scale
|
||||
@property (assign) NSPoint hotSpot;
|
||||
@property (assign) BOOL shouldFlipHorizontally;
|
||||
@property (weak) IBOutlet id <MMAnimatingImageViewDelegate> delegate;
|
||||
@property (assign) BOOL shouldAnimate;
|
||||
@property (assign) BOOL shouldShowHotSpot;
|
||||
|
||||
@@ -9,14 +9,17 @@
|
||||
#import "MMAnimatingImageView.h"
|
||||
#import "MCSpriteLayer.h"
|
||||
|
||||
#define SHOULDCOPY NSEvent.modifierFlags & NSEventModifierFlagOption
|
||||
|
||||
const char MCInvalidateContext;
|
||||
|
||||
@interface MMAnimatingImageView ()
|
||||
@interface MMAnimatingImageView () <CALayerDelegate>
|
||||
@property (weak) MCSpriteLayer *spriteLayer;
|
||||
@property (weak) CALayer *hotSpotLayer;
|
||||
- (void)_initialize;
|
||||
- (void)_invalidateFrame;
|
||||
- (void)_invalidateAnimation;
|
||||
- (void)_resetTransform;
|
||||
- (void)registerTypes;
|
||||
- (void)_dragAnimationEnded:(id)sender;
|
||||
@end
|
||||
@@ -59,10 +62,10 @@ const char MCInvalidateContext;
|
||||
self.layer.delegate = self;
|
||||
|
||||
CALayer *hotSpotLayer = [CALayer layer];
|
||||
hotSpotLayer.bounds = CGRectMake(0, 0, 4, 4);
|
||||
hotSpotLayer.bounds = CGRectMake(0, 0, 3, 3);
|
||||
hotSpotLayer.backgroundColor = [[NSColor redColor] CGColor];
|
||||
hotSpotLayer.autoresizingMask = kCALayerNotSizable;
|
||||
hotSpotLayer.anchorPoint = CGPointMake(0, 0);
|
||||
hotSpotLayer.anchorPoint = CGPointMake(0.5, 0.5);
|
||||
hotSpotLayer.borderColor = [[NSColor blackColor] CGColor];
|
||||
hotSpotLayer.borderWidth = 0.5;
|
||||
[self.layer addSublayer:hotSpotLayer];
|
||||
@@ -82,6 +85,7 @@ const char MCInvalidateContext;
|
||||
[self addObserver:self forKeyPath:@"frameCount" options:0 context:(void *)&MCInvalidateContext];
|
||||
[self addObserver:self forKeyPath:@"frameDuration" options:0 context:(void *)&MCInvalidateContext];
|
||||
[self addObserver:self forKeyPath:@"shouldAnimate" options:0 context:NULL];
|
||||
[self addObserver:self forKeyPath:@"shouldFlipHorizontally" options:0 context:NULL];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
@@ -91,6 +95,7 @@ const char MCInvalidateContext;
|
||||
[self removeObserver:self forKeyPath:@"frameCount"];
|
||||
[self removeObserver:self forKeyPath:@"frameDuration"];
|
||||
[self removeObserver:self forKeyPath:@"shouldAnimate"];
|
||||
[self removeObserver:self forKeyPath:@"shouldFlipHorizontally"];
|
||||
}
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
|
||||
@@ -102,6 +107,8 @@ const char MCInvalidateContext;
|
||||
[self _invalidateAnimation];
|
||||
} else if ([keyPath isEqualToString:@"shouldAnimate"]) {
|
||||
[self _invalidateAnimation];
|
||||
} else if ([keyPath isEqualToString:@"shouldFlipHorizontally"]) {
|
||||
[self _resetTransform];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +118,7 @@ const char MCInvalidateContext;
|
||||
|
||||
// Tell OSX that our view can accept images to be dragged in
|
||||
- (void)registerTypes {
|
||||
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSPasteboardTypeTIFF, NSPasteboardTypePNG, NSFilenamesPboardType, nil]];
|
||||
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSPasteboardTypeTIFF, NSFilenamesPboardType, nil]];
|
||||
}
|
||||
|
||||
- (void)viewDidMoveToWindow {
|
||||
@@ -132,6 +139,14 @@ const char MCInvalidateContext;
|
||||
|
||||
#pragma mark - Invalidators
|
||||
|
||||
- (void)_resetTransform {
|
||||
if (self.shouldFlipHorizontally) {
|
||||
self.layer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(-1, 0, 0, 1, self.layer.bounds.size.width, 0));
|
||||
} else {
|
||||
self.layer.transform = CATransform3DIdentity;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_invalidateFrame {
|
||||
CGFloat scale = self.scale;
|
||||
if (!self.scale || !self.image) {
|
||||
@@ -155,11 +170,13 @@ const char MCInvalidateContext;
|
||||
CGSize effectiveSize = CGSizeMake(self.image.size.width, self.image.size.height / self.frameCount);
|
||||
CGRect effectiveRect = CGRectIntegral(CGRectMake(self.layer.frame.size.width / 2.0 - effectiveSize.width / 2.0, self.layer.frame.size.height / 2.0 + effectiveSize.height / 2.0, effectiveSize.width, effectiveSize.height));
|
||||
|
||||
self.hotSpotLayer.position = CGPointMake(ceil(CGRectGetMinX(effectiveRect) + self.hotSpot.x - self.hotSpotLayer.frame.size.width / 2), ceil(CGRectGetMinY(effectiveRect) - self.hotSpot.y - self.hotSpotLayer.frame.size.height / 2));
|
||||
self.hotSpotLayer.position = CGPointMake(CGRectGetMinX(effectiveRect) + self.hotSpot.x, CGRectGetMinY(effectiveRect) - self.hotSpot.y);
|
||||
self.hotSpotLayer.opacity = 1.0;
|
||||
} else {
|
||||
self.hotSpotLayer.opacity = 0.0;
|
||||
}
|
||||
|
||||
[self _resetTransform];
|
||||
}
|
||||
|
||||
- (void)_invalidateAnimation {
|
||||
@@ -187,34 +204,45 @@ const char MCInvalidateContext;
|
||||
|
||||
#pragma mark - NSDraggingSource
|
||||
|
||||
- (void)draggingSession:(NSDraggingSession *)session willBeginAtPoint:(NSPoint)screenPoint {
|
||||
}
|
||||
|
||||
- (NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
|
||||
if (context == NSDraggingContextWithinApplication && self.shouldAllowDragging)
|
||||
return NSDragOperationCopy;
|
||||
if (self.shouldAllowDragging)
|
||||
return NSDragOperationEvery;
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
|
||||
- (void)draggingSession:(NSDraggingSession *)session endedAtPoint:(NSPoint)screenPoint operation:(NSDragOperation)operation {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(imageView:didDragOutImage:)] && operation == NSDragOperationNone && !NSPointInRect(screenPoint, self.window.frame)) {
|
||||
[[NSCursor currentCursor] pop];
|
||||
NSShowAnimationEffect(NSAnimationEffectPoof, screenPoint, NSZeroSize, self, @selector(_dragAnimationEnded:), nil);
|
||||
[self.delegate imageView:self didDragOutImage:self.image];
|
||||
if (!NSPointInRect(screenPoint, self.window.frame)) {
|
||||
if (SHOULDCOPY) {
|
||||
[self _dragAnimationEnded:self];
|
||||
} else if (self.delegate && [self.delegate respondsToSelector:@selector(imageView:didDragOutImage:)]) {
|
||||
NSShowAnimationEffect(NSAnimationEffectPoof, screenPoint, NSZeroSize, self, @selector(_dragAnimationEnded:), nil);
|
||||
[self.delegate imageView:self didDragOutImage:self.image];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_dragAnimationEnded:(id)sender {
|
||||
[[NSCursor arrowCursor] push];
|
||||
[[NSCursor arrowCursor] set];
|
||||
}
|
||||
|
||||
- (void)draggingSession:(NSDraggingSession *)session movedToPoint:(NSPoint)screenPoint {
|
||||
if (!NSPointInRect(screenPoint, self.window.frame)) {
|
||||
[[NSCursor disappearingItemCursor] push];
|
||||
if (SHOULDCOPY)
|
||||
[[NSCursor dragCopyCursor] set];
|
||||
else
|
||||
[[NSCursor disappearingItemCursor] set];
|
||||
} else if ([NSCursor currentCursor] == [NSCursor disappearingItemCursor]) {
|
||||
[[NSCursor currentCursor] pop];
|
||||
[self _dragAnimationEnded:self];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)ignoreModifierKeysForDraggingSession:(NSDraggingSession *)session {
|
||||
return YES;
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {
|
||||
@@ -226,7 +254,7 @@ const char MCInvalidateContext;
|
||||
return;
|
||||
|
||||
NSPasteboardItem *pbItem = [NSPasteboardItem new];
|
||||
[pbItem setDataProvider:self forTypes:@[ NSPasteboardTypePNG, NSPasteboardTypeTIFF, @"public.image" ]];
|
||||
[pbItem setDataProvider:self forTypes:@[ NSPasteboardTypePNG, NSPasteboardTypeTIFF, @"public.image", (__bridge NSString *)kPasteboardTypeFileURLPromise ]];
|
||||
|
||||
NSDraggingItem *dragItem = [[NSDraggingItem alloc] initWithPasteboardWriter:pbItem];
|
||||
|
||||
@@ -249,12 +277,20 @@ const char MCInvalidateContext;
|
||||
- (void)pasteboard:(NSPasteboard *)sender item:(NSPasteboardItem *)item provideDataForType:(NSString *)type {
|
||||
if ([type compare: NSPasteboardTypeTIFF] == NSOrderedSame) {
|
||||
[sender setData:[self.image TIFFRepresentation] forType:NSPasteboardTypeTIFF];
|
||||
|
||||
} else if ([type compare: NSPasteboardTypePNG] == NSOrderedSame) {
|
||||
[sender setData:[self.image.representations.lastObject representationUsingType:NSPNGFileType properties:nil] forType:NSPasteboardTypePNG];
|
||||
} else if ([type compare:@"public.image"] == NSOrderedSame) {
|
||||
[sender writeObjects:@[ self.image ]];
|
||||
} else if ([type compare:(__bridge NSString *)kPasteboardTypeFileURLPromise] == NSOrderedSame && SHOULDCOPY) {
|
||||
NSURL *url = [[NSURL URLWithString:[item stringForType:@"com.apple.pastelocation"]] URLByAppendingPathComponent:[NSString stringWithFormat:@"Mousecape Image (%f).tiff", NSDate.date.timeIntervalSince1970]];
|
||||
NSImageRep *rep =self.image.representations.firstObject;
|
||||
|
||||
if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
|
||||
NSBitmapImageRep* bitmap = (NSBitmapImageRep*)rep;
|
||||
[[bitmap TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0] writeToFile:url.path atomically:NO];
|
||||
} else {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - NSDragDestination
|
||||
@@ -266,10 +302,10 @@ const char MCInvalidateContext;
|
||||
// Only thing we have to do here is confirm that the dragged file is an image. We use NSImage's +canInitWithPasteboard: and we also check to see there is only one item being dragged
|
||||
if ([self.delegate conformsToProtocol:@protocol(MMAnimatingImageViewDelegate)] && // No point in accepting the drop if the delegate doesn't support it/exist
|
||||
[NSImage canInitWithPasteboard:sender.draggingPasteboard] && // Only Accept Images
|
||||
sender.draggingPasteboard.pasteboardItems.count == 1 &&
|
||||
self.shouldAllowDragging) { // Only accept one item
|
||||
return [self.delegate imageView:self draggingEntered:sender];
|
||||
self.shouldAllowDragging) {
|
||||
return [self.delegate imageView:self draggingEntered:sender];
|
||||
}
|
||||
|
||||
return NSDragOperationNone;
|
||||
}
|
||||
|
||||
@@ -284,27 +320,28 @@ const char MCInvalidateContext;
|
||||
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
|
||||
if ([self.delegate conformsToProtocol:@protocol(MMAnimatingImageViewDelegate)] && // Only do the operation if a delegate exists to actually set the image.
|
||||
[self.delegate imageView:self shouldPerformDragOperation:sender]) { // Only do the operation if a delegate wants us to do the operation.
|
||||
|
||||
|
||||
// Get the image from the pasteboard
|
||||
NSImage *im = [[NSImage alloc] initWithPasteboard:sender.draggingPasteboard];
|
||||
|
||||
// Make an array of the valid drops (NSBitmapImageRep)
|
||||
NSMutableArray *acceptedDrops = [NSMutableArray arrayWithCapacity:im.representations.count];
|
||||
for (NSImageRep *rep in im.representations) {
|
||||
if (![rep isKindOfClass:[NSBitmapImageRep class]]) // We don't want PDFs
|
||||
continue;
|
||||
|
||||
[acceptedDrops addObject:rep];
|
||||
|
||||
}
|
||||
NSArray *imageArray = [sender.draggingPasteboard readObjectsForClasses:@[[NSImage class], [NSURL class]] options:nil];
|
||||
NSMutableArray *acceptedDrops = [NSMutableArray arrayWithCapacity:imageArray.count];
|
||||
for (NSInteger idx = 0; idx < imageArray.count; idx++) {
|
||||
id obj = imageArray[idx];
|
||||
if ([obj isKindOfClass:[NSImage class]]) {
|
||||
[acceptedDrops addObject:[[obj representations] firstObject]];
|
||||
} else {
|
||||
// NSURL
|
||||
[acceptedDrops addObject:[NSImageRep imageRepWithContentsOfURL:obj]];
|
||||
}
|
||||
}
|
||||
|
||||
if (acceptedDrops.count > 0) {
|
||||
// We already confirmed that the delegate conforms to the protocol above. Now we can let the delegate
|
||||
// decide what to do with the dropped images.
|
||||
[self.delegate imageView:self didAcceptDroppedImages:acceptedDrops];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
|
||||
@@ -38,7 +38,7 @@ CG_EXTERN CGError CoreCursorCopyImages(CGSConnectionID cid, CGSCursorID cursorID
|
||||
#pragma mark - Cursor APIs reversed by Alex Zielenski on Lion 10.7.3
|
||||
#pragma mark -
|
||||
|
||||
CG_EXTERN CGError CGSIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool *registered) __attribute__((weak_import));
|
||||
//CG_EXTERN CGError CGSIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool *registered) __attribute__((weak_import));
|
||||
|
||||
#if defined(MAC_OS_X_VERSION_10_8)
|
||||
CG_EXTERN CGError CGSCopyRegisteredCursorImages(CGSConnectionID cid, char *cursorName, CGSize *imageSize, CGPoint *hotSpot, NSUInteger *frameCount, CGFloat *frameDuration, CFArrayRef *imageArray);
|
||||
@@ -49,7 +49,7 @@ CG_EXTERN CGError CGSGetRegisteredCursorImages(CGSConnectionID cid, char *cursor
|
||||
|
||||
// Verified, stable
|
||||
/*! Registers a cursor in the current CGSConnection or globally */
|
||||
CG_EXTERN CGError CGSRegisterCursorWithImages(CGSConnectionID cid, char *cursorName, bool setGlobally, bool instantly, NSUInteger frameCount, CFArrayRef imageArray, CGSize cursorSize, CGPoint hotspot, int *seed, CGRect bounds, CGFloat frameDuration, NSInteger repeatCount);
|
||||
CG_EXTERN CGError CGSRegisterCursorWithImages(CGSConnectionID cid, char *cursorName, bool setGlobally, bool instantly, CGSize cursorSize, CGPoint hotspot, NSUInteger frameCount, CGFloat frameDuration, CFArrayRef imageArray, int *seed);
|
||||
|
||||
CG_EXTERN CGError CGSSetSystemDefinedCursor(CGSConnectionID cid, CGSCursorID cursor);
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ extern const NSString *MCCursorDictionaryPointsWideKey;
|
||||
extern const NSString *MCCursorDictionaryPointsHighKey;
|
||||
extern const NSString *MCCursorDictionaryRepresentationsKey;
|
||||
|
||||
extern NSDictionary *cursorMap();
|
||||
extern NSDictionary *cursorMap(void);
|
||||
extern NSString *nameForCursorIdentifier(NSString *identifier);
|
||||
extern NSString *cursorIdentifierForName(NSString *name);
|
||||
|
||||
@@ -68,8 +68,8 @@ extern NSString *UUID(void);
|
||||
extern NSDictionary *capeWithIdentifier(NSString *identifier);
|
||||
extern void CGImageWriteToFile(CGImageRef image, CFStringRef path);
|
||||
extern NSData *pngDataForImage(id image);
|
||||
extern NSString *MMGet();
|
||||
extern NSString *MMGet(NSString *prompt);
|
||||
|
||||
extern CGError MCIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool *registered);
|
||||
|
||||
#endif
|
||||
extern BOOL MCCursorIsPointer(NSString *identifier);
|
||||
#endif
|
||||
|
||||
@@ -85,7 +85,7 @@ void CGImageWriteToFile(CGImageRef image, CFStringRef path) {
|
||||
|
||||
NSData *pngDataForImage(id image) {
|
||||
if ([image isKindOfClass:[NSBitmapImageRep class]]) {
|
||||
return [(NSBitmapImageRep *)image representationUsingType:NSPNGFileType properties:nil];
|
||||
return [(NSBitmapImageRep *)image TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0];
|
||||
}
|
||||
|
||||
// CGImage
|
||||
@@ -130,7 +130,7 @@ NSDictionary *capeWithIdentifier(NSString *identifier) {
|
||||
return dict;
|
||||
}
|
||||
|
||||
NSDictionary *cursorMap() {
|
||||
extern NSDictionary *cursorMap() {
|
||||
static NSDictionary *cursorNameMap = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
@@ -202,10 +202,10 @@ NSString *cursorIdentifierForName(NSString *name) {
|
||||
return UUID();
|
||||
}
|
||||
|
||||
extern CGError MCIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool *registered) {
|
||||
if (CGSIsCursorRegistered != NULL) {
|
||||
return CGSIsCursorRegistered(cid, cursorName, registered);
|
||||
}
|
||||
CGError MCIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool *registered) {
|
||||
// if (CGSIsCursorRegistered != NULL) {
|
||||
// return CGSIsCursorRegistered(cid, cursorName, registered);
|
||||
// }
|
||||
|
||||
size_t size = 0;
|
||||
CGError err = 0;
|
||||
@@ -215,3 +215,14 @@ extern CGError MCIsCursorRegistered(CGSConnectionID cid, char *cursorName, bool
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
BOOL MCCursorIsPointer(NSString *identifier) {
|
||||
static NSArray *pointers = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSDictionary *c = cursorMap();
|
||||
pointers = [@[ [c allKeysForObject:@"Alias"][0], [c allKeysForObject:@"Arrow"][0], [c allKeysForObject:@"Busy"][0], [c allKeysForObject:@"Closed"][0], [c allKeysForObject:@"Copy Drag"][0], [c allKeysForObject:@"Counting Down"][0], [c allKeysForObject:@"Counting Up"][0], [c allKeysForObject:@"Counting Up/Down"][0], [c allKeysForObject:@"Ctx Menu"][0], [c allKeysForObject:@"Forbidden"][0], [c allKeysForObject:@"Link"][0], [c allKeysForObject:@"Move"][0], [c allKeysForObject:@"Open"][0], [c allKeysForObject:@"Pointing"][0], [c allKeysForObject:@"Poof"][0], [c allKeysForObject:@"Wait"][0], [c allKeysForObject:@"Zoom In"][0], [c allKeysForObject:@"Zoom Out"] ] retain];
|
||||
});
|
||||
|
||||
return [pointers containsObject:identifier];
|
||||
}
|
||||
|
||||
@@ -15,10 +15,11 @@ extern NSString *MCPreferencesAppliedCursorKey;
|
||||
extern NSString *MCPreferencesAppliedClickActionKey;
|
||||
extern NSString *MCPreferencesCursorScaleKey;
|
||||
extern NSString *MCPreferencesDoubleActionKey;
|
||||
extern NSString *MCPreferencesHandednessKey;
|
||||
extern NSString *MCSuppressDeleteLibraryConfirmationKey;
|
||||
extern NSString *MCSuppressDeleteCursorConfirmationKey;
|
||||
extern id MCDefaultFor(NSString *key, NSString *user, NSString *host);
|
||||
#define MCDefault(key) MCDefaultFor(key, (__bridge NSString *)kCFPreferencesCurrentUser, (__bridge NSString *)kCFPreferencesCurrentHost)
|
||||
extern id MCDefault(NSString *key);
|
||||
#define MCFlag(key) [MCDefault(key) boolValue]
|
||||
|
||||
extern void MCSetDefaultFor(id value, NSString *key, NSString *user, NSString *host);
|
||||
|
||||
@@ -12,6 +12,7 @@ NSString *MCPreferencesAppliedCursorKey = @"MCAppliedCursor";
|
||||
NSString *MCPreferencesAppliedClickActionKey = @"MCLibraryClickAction";
|
||||
NSString *MCPreferencesCursorScaleKey = @"MCCursorScale";
|
||||
NSString *MCPreferencesDoubleActionKey = @"MCDoubleAction";
|
||||
NSString *MCPreferencesHandednessKey = @"MCHandedness";
|
||||
NSString *MCSuppressDeleteLibraryConfirmationKey = @"MCSuppressDeleteLibraryConfirmationKey";
|
||||
NSString *MCSuppressDeleteCursorConfirmationKey = @"MCSuppressDeleteCursorConfirmationKey";
|
||||
id MCDefaultFor(NSString *key, NSString *user, NSString *host) {
|
||||
@@ -19,8 +20,12 @@ id MCDefaultFor(NSString *key, NSString *user, NSString *host) {
|
||||
return [value autorelease];
|
||||
}
|
||||
|
||||
void MCSetDefaultFor(id value, NSString *key, NSString *user, NSString *host) {
|
||||
CFPreferencesSetValue((CFStringRef)key, (CFPropertyListRef)value, (CFStringRef)kMCDomain, (CFStringRef)user, (CFStringRef)host);
|
||||
// CFPreferencesSynchronize((CFStringRef)kMCDomain, (CFStringRef)user, (CFStringRef)host);
|
||||
id MCDefault(NSString *key) {
|
||||
return [(id)CFPreferencesCopyAppValue((CFStringRef)key, (CFStringRef)kMCDomain) autorelease];
|
||||
}
|
||||
|
||||
void MCSetDefaultFor(id value, NSString *key, NSString *user, NSString *host) {
|
||||
CFPreferencesSetValue((CFStringRef)key, (CFPropertyListRef)value, (CFStringRef)kMCDomain, (CFStringRef)user, (CFStringRef)host);
|
||||
// CFPreferencesSynchronize((CFStringRef)kMCDomain, (CFStringRef)user, (CFStringRef)host);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// NSBitmapImageRep+ColorSpace.h
|
||||
// mousecloak
|
||||
//
|
||||
// Created by Alexander Zielenski on 12/30/18.
|
||||
// Copyright © 2018 Alex Zielenski. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSBitmapImageRep (ColorSpace)
|
||||
|
||||
- (NSBitmapImageRep *)retaggedSRGBSpace;
|
||||
- (NSBitmapImageRep *)ensuredSRGBSpace;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,36 @@
|
||||
//
|
||||
// NSBitmapImageRep+ColorSpace.m
|
||||
// mousecloak
|
||||
//
|
||||
// Created by Alexander Zielenski on 12/30/18.
|
||||
// Copyright © 2018 Alex Zielenski. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSBitmapImageRep+ColorSpace.h"
|
||||
|
||||
@implementation NSBitmapImageRep (ColorSpace)
|
||||
|
||||
// Must be careful with this because the PNGFileType representationForType of NSBitmapImageRep
|
||||
// does not encode the colorspace :(
|
||||
- (NSBitmapImageRep *)ensuredSRGBSpace {
|
||||
NSColorSpace *targetSpace = [NSColorSpace sRGBColorSpace];
|
||||
if (self.colorSpace != NULL) {
|
||||
if (self.colorSpace.numberOfColorComponents == 1) {
|
||||
targetSpace = [NSColorSpace genericGamma22GrayColorSpace];
|
||||
}
|
||||
}
|
||||
return [self bitmapImageRepByConvertingToColorSpace:targetSpace
|
||||
renderingIntent:NSColorRenderingIntentDefault];
|
||||
}
|
||||
|
||||
- (NSBitmapImageRep *)retaggedSRGBSpace {
|
||||
NSColorSpace *targetSpace = [NSColorSpace sRGBColorSpace];
|
||||
if (self.colorSpace != NULL) {
|
||||
if (self.colorSpace.numberOfColorComponents == 1) {
|
||||
targetSpace = [NSColorSpace genericGamma22GrayColorSpace];
|
||||
}
|
||||
}
|
||||
return [self bitmapImageRepByRetaggingWithColorSpace:targetSpace];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -10,7 +10,7 @@
|
||||
#define Mousecape_apply_h
|
||||
|
||||
extern BOOL applyCursorForIdentifier(NSUInteger frameCount, CGFloat frameDuration, CGPoint hotSpot, CGSize size, NSArray *images, NSString *ident, NSUInteger repeatCount);
|
||||
extern BOOL applyCapeForIdentifier(NSDictionary *cursor, NSString *identifier);
|
||||
extern BOOL applyCapeForIdentifier(NSDictionary *cursor, NSString *identifier, BOOL restore);
|
||||
extern BOOL applyCape(NSDictionary *dictionary);
|
||||
extern BOOL applyCapeAtPath(NSString *path);
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#import "backup.h"
|
||||
#import "restore.h"
|
||||
#import "MCPrefs.h"
|
||||
#import "NSBitmapImageRep+ColorSpace.h"
|
||||
|
||||
BOOL applyCursorForIdentifier(NSUInteger frameCount, CGFloat frameDuration, CGPoint hotSpot, CGSize size, NSArray *images, NSString *ident, NSUInteger repeatCount) {
|
||||
if (frameCount > 24 || frameCount < 1) {
|
||||
@@ -18,27 +19,29 @@ BOOL applyCursorForIdentifier(NSUInteger frameCount, CGFloat frameDuration, CGPo
|
||||
}
|
||||
|
||||
char *idenfifier = (char *)ident.UTF8String;
|
||||
int seed;
|
||||
int seed = 0;
|
||||
CGError err = CGSRegisterCursorWithImages(CGSMainConnectionID(),
|
||||
idenfifier,
|
||||
true,
|
||||
true,
|
||||
frameCount,
|
||||
(__bridge CFArrayRef)images,
|
||||
size,
|
||||
hotSpot,
|
||||
&seed,
|
||||
CGRectMake(hotSpot.x, hotSpot.y, size.width, size.height),
|
||||
frameCount,
|
||||
frameDuration,
|
||||
0);
|
||||
(__bridge CFArrayRef)images,
|
||||
&seed);
|
||||
|
||||
return (err == kCGErrorSuccess);
|
||||
}
|
||||
|
||||
BOOL applyCapeForIdentifier(NSDictionary *cursor, NSString *identifier) {
|
||||
if (!cursor)
|
||||
BOOL applyCapeForIdentifier(NSDictionary *cursor, NSString *identifier, BOOL restore) {
|
||||
if (!cursor || !identifier) {
|
||||
NSLog(@"bad seed");
|
||||
return NO;
|
||||
|
||||
}
|
||||
|
||||
BOOL lefty = MCFlag(MCPreferencesHandednessKey);
|
||||
BOOL pointer = MCCursorIsPointer(identifier);
|
||||
NSNumber *frameCount = cursor[MCCursorDictionaryFrameCountKey];
|
||||
NSNumber *frameDuration = cursor[MCCursorDictionaryFrameDuratiomKey];
|
||||
// NSNumber *repeatCount = cursor[MCCursorDictionaryRepeatCountKey];
|
||||
@@ -48,27 +51,60 @@ BOOL applyCapeForIdentifier(NSDictionary *cursor, NSString *identifier) {
|
||||
CGSize size = CGSizeMake([cursor[MCCursorDictionaryPointsWideKey] doubleValue],
|
||||
[cursor[MCCursorDictionaryPointsHighKey] doubleValue]);
|
||||
NSArray *reps = cursor[MCCursorDictionaryRepresentationsKey];
|
||||
|
||||
NSMutableArray *images = [NSMutableArray array];
|
||||
|
||||
|
||||
if (lefty && !restore && pointer) {
|
||||
MMLog("Lefty mode for %s", identifier.UTF8String);
|
||||
hotSpot.x = size.width - hotSpot.x - 1;
|
||||
}
|
||||
|
||||
for (id object in reps) {
|
||||
CFTypeID type = CFGetTypeID((__bridge CFTypeRef)object);
|
||||
|
||||
// special case if array has a type of CGImage already there is no need to convert it
|
||||
NSBitmapImageRep *rep;
|
||||
if (type == CGImageGetTypeID()) {
|
||||
images[images.count] = object;
|
||||
continue;
|
||||
rep = [[[NSBitmapImageRep alloc] initWithCGImage:(__bridge CGImageRef)object] autorelease];
|
||||
} else {
|
||||
rep = [[[NSBitmapImageRep alloc] initWithData:object] autorelease];
|
||||
}
|
||||
rep = rep.retaggedSRGBSpace;
|
||||
|
||||
if (!lefty || restore || !pointer) {
|
||||
// special case if array has a type of CGImage already there is no need to convert it
|
||||
if (type == CGImageGetTypeID()) {
|
||||
images[images.count] = object;
|
||||
continue;
|
||||
}
|
||||
|
||||
images[images.count] = (__bridge id)[rep CGImage];
|
||||
|
||||
} else {
|
||||
NSBitmapImageRep *newRep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
|
||||
pixelsWide:rep.pixelsWide
|
||||
pixelsHigh:rep.pixelsHigh
|
||||
bitsPerSample:8
|
||||
samplesPerPixel:4
|
||||
hasAlpha:YES
|
||||
isPlanar:NO
|
||||
colorSpaceName:NSCalibratedRGBColorSpace
|
||||
bytesPerRow:4 * rep.pixelsWide
|
||||
bitsPerPixel:32] autorelease];
|
||||
NSGraphicsContext *ctx = [NSGraphicsContext graphicsContextWithBitmapImageRep:newRep];
|
||||
[NSGraphicsContext saveGraphicsState];
|
||||
[NSGraphicsContext setCurrentContext:ctx];
|
||||
NSAffineTransform *transform = [NSAffineTransform transform];
|
||||
[transform translateXBy:rep.pixelsWide yBy:0];
|
||||
[transform scaleXBy:-1 yBy:1];
|
||||
[transform concat];
|
||||
|
||||
[rep drawInRect:NSMakeRect(0, 0, rep.pixelsWide, rep.pixelsHigh)
|
||||
fromRect:NSZeroRect
|
||||
operation:NSCompositingOperationSourceOver
|
||||
fraction:1.0
|
||||
respectFlipped:NO
|
||||
hints:nil];
|
||||
[NSGraphicsContext restoreGraphicsState];
|
||||
images[images.count] = (__bridge id)[newRep CGImage];
|
||||
}
|
||||
|
||||
CFDataRef pngData = (__bridge CFDataRef)object;
|
||||
|
||||
CGDataProviderRef pngProvider = CGDataProviderCreateWithCFData(pngData);
|
||||
CGImageRef rep = CGImageCreateWithPNGDataProvider(pngProvider, NULL, false, kCGRenderingIntentDefault);
|
||||
CGDataProviderRelease(pngProvider);
|
||||
|
||||
images[images.count] = (__bridge id)rep;
|
||||
|
||||
CGImageRelease(rep);
|
||||
}
|
||||
|
||||
return applyCursorForIdentifier(frameCount.unsignedIntegerValue, frameDuration.doubleValue, hotSpot, size, images, identifier, 0);
|
||||
@@ -89,7 +125,7 @@ BOOL applyCape(NSDictionary *dictionary) {
|
||||
NSDictionary *cape = cursors[key];
|
||||
MMLog("Hooking for %s", key.UTF8String);
|
||||
|
||||
BOOL success = applyCapeForIdentifier(cape, key);
|
||||
BOOL success = applyCapeForIdentifier(cape, key, NO);
|
||||
if (!success) {
|
||||
MMLog(BOLD RED "Failed to hook identifier %s for some unknown reason. Bailing out..." RESET, key.UTF8String);
|
||||
return NO;
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
|
||||
extern NSString *backupStringForIdentifier(NSString *identifier);
|
||||
extern void backupCursorForIdentifier(NSString *ident);
|
||||
extern void backupAllCursors();
|
||||
extern void backupAllCursors(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,7 +29,7 @@ void backupCursorForIdentifier(NSString *ident) {
|
||||
return;
|
||||
|
||||
NSDictionary *cape = capeWithIdentifier(ident);
|
||||
(void)applyCapeForIdentifier(cape, backupIdent);
|
||||
(void)applyCapeForIdentifier(cape, backupIdent, YES);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
extern NSError *createCape(NSString *input, NSString *output, BOOL convert);
|
||||
|
||||
extern NSDictionary *processedCapeWithIdentifier(NSString *identifier);
|
||||
extern void dumpCursorsToFile(NSString *path);
|
||||
extern void dumpCursorsToFolder(NSString *path);
|
||||
extern BOOL dumpCursorsToFile(NSString *path, BOOL (^progress)(NSUInteger current, NSUInteger total));
|
||||
extern BOOL dumpCursorsToFolder(NSString *path, BOOL (^progress)(NSUInteger current, NSUInteger total));
|
||||
|
||||
extern NSDictionary *createCapeFromDirectory(NSString *path);
|
||||
extern NSDictionary *createCapeFromMightyMouse(NSDictionary *mightyMouse, NSDictionary *metadata);
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#import "create.h"
|
||||
#import "NSCursor_Private.h"
|
||||
#import "NSBitmapImageRep+ColorSpace.h"
|
||||
|
||||
NSError *createCape(NSString *input, NSString *output, BOOL convert) {
|
||||
NSDictionary *cape;
|
||||
@@ -111,9 +112,8 @@ NSDictionary *createCapeFromDirectory(NSString *path) {
|
||||
continue;
|
||||
|
||||
NSBitmapImageRep *image = [NSBitmapImageRep imageRepWithData:[NSData dataWithContentsOfFile:repPath]];
|
||||
|
||||
if (image) {
|
||||
NSData *pngData = [image representationUsingType:NSPNGFileType properties:nil];
|
||||
NSData *pngData = [image.ensuredSRGBSpace TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0];
|
||||
[representations addObject:pngData];
|
||||
}
|
||||
|
||||
@@ -186,12 +186,12 @@ NSDictionary *createCapeFromMightyMouse(NSDictionary *mightyMouse, NSDictionary
|
||||
samplesPerPixel:spp.integerValue
|
||||
hasAlpha:YES
|
||||
isPlanar:NO
|
||||
colorSpaceName:NSDeviceRGBColorSpace
|
||||
colorSpaceName:NSCalibratedRGBColorSpace
|
||||
bitmapFormat:NSAlphaFirstBitmapFormat | kCGBitmapByteOrder32Big
|
||||
bytesPerRow:bpr.integerValue
|
||||
bitsPerPixel:bpp.integerValue];
|
||||
|
||||
currentCursor[MCCursorDictionaryRepresentationsKey] = @[ [rep representationUsingType:NSPNGFileType properties:nil] ];
|
||||
currentCursor[MCCursorDictionaryRepresentationsKey] = @[ [rep.ensuredSRGBSpace TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0] ];
|
||||
currentCursor[MCCursorDictionaryPointsWideKey] = wide;
|
||||
currentCursor[MCCursorDictionaryPointsHighKey] = high;
|
||||
currentCursor[MCCursorDictionaryHotSpotXKey] = hotX;
|
||||
@@ -246,14 +246,17 @@ NSDictionary *processedCapeWithIdentifier(NSString *identifier) {
|
||||
NSMutableArray *reps = [NSMutableArray array];
|
||||
|
||||
for (id image in cursors) {
|
||||
reps[reps.count] = pngDataForImage(image);
|
||||
CGImageRef im = (__bridge CGImageRef)image;
|
||||
NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initWithCGImage:im];
|
||||
|
||||
reps[reps.count] = pngDataForImage(rep.ensuredSRGBSpace);
|
||||
}
|
||||
|
||||
dict[MCCursorDictionaryRepresentationsKey] = reps;
|
||||
return dict;
|
||||
}
|
||||
|
||||
void dumpCursorsToFile(NSString *path) {
|
||||
BOOL dumpCursorsToFile(NSString *path, BOOL (^progress)(NSUInteger current, NSUInteger total)) {
|
||||
MMLog("Dumping cursors...");
|
||||
|
||||
float originalScale;
|
||||
@@ -261,17 +264,34 @@ void dumpCursorsToFile(NSString *path) {
|
||||
|
||||
CGSSetCursorScale(CGSMainConnectionID(), 16.0);
|
||||
CGSHideCursor(CGSMainConnectionID());
|
||||
|
||||
|
||||
NSInteger total = 9 + 45;
|
||||
NSInteger current = 0;
|
||||
|
||||
NSMutableDictionary *cursors = [NSMutableDictionary dictionary];
|
||||
NSUInteger i = 0;
|
||||
NSString *key = nil;
|
||||
while ((key = defaultCursors[i]) != nil) {
|
||||
if (progress) {
|
||||
current = i;
|
||||
|
||||
if (!progress(current, total)) {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
MMLog("Gathering data for %s", key.UTF8String);
|
||||
cursors[key] = processedCapeWithIdentifier(key);
|
||||
i++;
|
||||
}
|
||||
|
||||
for (int x = 0x0; x < 0x100; x++) {
|
||||
for (int x = 0; x < 45; x++) {
|
||||
if (progress) {
|
||||
current = i + x;
|
||||
|
||||
if (!progress(current, total)) {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
NSString *key = [@"com.apple.cursor." stringByAppendingFormat:@"%d", x];
|
||||
CoreCursorSet(CGSMainConnectionID(), x);
|
||||
|
||||
@@ -283,7 +303,11 @@ void dumpCursorsToFile(NSString *path) {
|
||||
|
||||
cursors[key] = cape;
|
||||
}
|
||||
|
||||
|
||||
if (progress) {
|
||||
progress(total, total);
|
||||
}
|
||||
|
||||
NSMutableDictionary *cape = [NSMutableDictionary dictionary];
|
||||
cape[MCCursorDictionaryAuthorKey] = @"Apple, Inc.";
|
||||
cape[MCCursorDictionaryCapeNameKey] = @"Cursor Dump";
|
||||
@@ -298,10 +322,10 @@ void dumpCursorsToFile(NSString *path) {
|
||||
CGSSetCursorScale(CGSMainConnectionID(), originalScale);
|
||||
CGSShowCursor(CGSMainConnectionID());
|
||||
|
||||
[cape writeToFile:path atomically:NO];
|
||||
return [cape writeToFile:path atomically:NO];
|
||||
}
|
||||
|
||||
extern void dumpCursorsToFolder(NSString *path) {
|
||||
BOOL dumpCursorsToFolder(NSString *path, BOOL (^progress)(NSUInteger current, NSUInteger total)) {
|
||||
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
MMLog("Dumping cursors...");
|
||||
@@ -311,11 +335,19 @@ extern void dumpCursorsToFolder(NSString *path) {
|
||||
|
||||
CGSSetCursorScale(CGSMainConnectionID(), 16.0);
|
||||
CGSHideCursor(CGSMainConnectionID());
|
||||
|
||||
|
||||
NSInteger total = 9 + 45;
|
||||
NSInteger current = 0;
|
||||
|
||||
NSUInteger i = 0;
|
||||
NSString *key = nil;
|
||||
while ((key = defaultCursors[i]) != nil) {
|
||||
current = i;
|
||||
if (progress) {
|
||||
if (!progress(current, total)) {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
MMLog("Gathering data for %s", key.UTF8String);
|
||||
NSDictionary *cape = processedCapeWithIdentifier(key);
|
||||
|
||||
@@ -323,7 +355,13 @@ extern void dumpCursorsToFolder(NSString *path) {
|
||||
i++;
|
||||
}
|
||||
|
||||
for (int x = 0x0; x < 0x100; x++) {
|
||||
for (int x = 0; x < 45; x++) {
|
||||
current = i + x;
|
||||
if (progress) {
|
||||
if (!progress(current, total)) {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
NSString *key = [@"com.apple.cursor." stringByAppendingFormat:@"%d", x];
|
||||
CoreCursorSet(CGSMainConnectionID(), x);
|
||||
|
||||
@@ -336,10 +374,14 @@ extern void dumpCursorsToFolder(NSString *path) {
|
||||
[[cape[MCCursorDictionaryRepresentationsKey] lastObject] writeToFile:[[path stringByAppendingPathComponent:key] stringByAppendingPathExtension:@"png"] atomically:NO];
|
||||
}
|
||||
|
||||
|
||||
if (progress) {
|
||||
progress(total, total);
|
||||
}
|
||||
|
||||
CGSSetCursorScale(CGSMainConnectionID(), originalScale);
|
||||
CGSShowCursor(CGSMainConnectionID());
|
||||
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
extern void exportCape(NSDictionary *cape, NSString *destination) {
|
||||
@@ -354,4 +396,4 @@ extern void exportCape(NSDictionary *cape, NSString *destination) {
|
||||
[data writeToFile:[destination stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%lu.png", key, (unsigned long)idx]] atomically:NO];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ int main(int argc, char * argv[]) {
|
||||
options.applicationVersion = ^{ return @"2.0"; };
|
||||
options.applicationBuild = ^{ return @""; };
|
||||
options.printHelpHeader = ^{ return @(BOLD WHITE "%APPNAME v%APPVERSION" RESET); };
|
||||
options.printHelpFooter = ^{ return @(BOLD WHITE "Copyright © 2013-14 Alex Zielenski" RESET); };
|
||||
options.printHelpFooter = ^{ return @(BOLD WHITE "Copyright © 2013-20 Alex Zielenski" RESET); };
|
||||
|
||||
GBCommandLineParser *parser = [[[GBCommandLineParser alloc] init] autorelease];
|
||||
[options registerOptionsToCommandLineParser:parser];
|
||||
@@ -81,7 +81,7 @@ int main(int argc, char * argv[]) {
|
||||
MMLog(BOLD RED "Missing value for command line option %s, try --help!" RESET, option.UTF8String);
|
||||
break;
|
||||
case GBParseFlagArgument:
|
||||
[settings addArgument:value];
|
||||
[settings setObject:@YES forKey:value];
|
||||
break;
|
||||
case GBParseFlagOption:
|
||||
[settings setObject:value forKey:option];
|
||||
@@ -161,7 +161,10 @@ int main(int argc, char * argv[]) {
|
||||
goto fin;
|
||||
|
||||
} else if (dump) {
|
||||
dumpCursorsToFile([settings objectForKey:@"dump"]);
|
||||
dumpCursorsToFile([settings objectForKey:@"dump"], ^BOOL (NSUInteger progress, NSUInteger total) {
|
||||
MMLog("Dumped %lu of %lu", (unsigned long)progress, (unsigned long)total);
|
||||
return YES;
|
||||
});
|
||||
} else if (scale) {
|
||||
NSNumber *number = [settings objectForKey:@"scale"];
|
||||
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
|
||||
.\"See Also:
|
||||
.\"man mdoc.samples for a complete listing of options
|
||||
.\"man mdoc for the short list of editing options
|
||||
.\"/usr/share/misc/mdoc.template
|
||||
.Dd 2/1/14 \" DATE
|
||||
.Dt mousecloak 1 \" Program name and manual section number
|
||||
.Os Darwin
|
||||
.Sh NAME \" Section Header - required - don't modify
|
||||
.Nm mousecloak,
|
||||
.\" The following lines are read in generating the apropos(man -k) database. Use only key
|
||||
.\" words here as the database is built based on the words here and in the .ND line.
|
||||
.Nm Other_name_for_same_program(),
|
||||
.Nm Yet another name for the same program.
|
||||
.\" Use .Nm macro to designate other names for the documented program.
|
||||
.Nd This line parsed for whatis database.
|
||||
.Sh SYNOPSIS \" Section Header - required - don't modify
|
||||
.Nm
|
||||
.Op Fl abcd \" [-abcd]
|
||||
.Op Fl a Ar path \" [-a path]
|
||||
.Op Ar file \" [file]
|
||||
.Op Ar \" [file ...]
|
||||
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
|
||||
arg2 ... \" Arguments
|
||||
.Sh DESCRIPTION \" Section Header - required - don't modify
|
||||
Use the .Nm macro to refer to your program throughout the man page like such:
|
||||
.Nm
|
||||
Underlining is accomplished with the .Ar macro like this:
|
||||
.Ar underlined text .
|
||||
.Pp \" Inserts a space
|
||||
A list of items with descriptions:
|
||||
.Bl -tag -width -indent \" Begins a tagged list
|
||||
.It item a \" Each item preceded by .It macro
|
||||
Description of item a
|
||||
.It item b
|
||||
Description of item b
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
A list of flags and their descriptions:
|
||||
.Bl -tag -width -indent \" Differs from above in tag removed
|
||||
.It Fl a \"-a flag as a list item
|
||||
Description of -a flag
|
||||
.It Fl b
|
||||
Description of -b flag
|
||||
.El \" Ends the list
|
||||
.Pp
|
||||
.\" .Sh ENVIRONMENT \" May not be needed
|
||||
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_1
|
||||
.\" Description of ENV_VAR_1
|
||||
.\" .It Ev ENV_VAR_2
|
||||
.\" Description of ENV_VAR_2
|
||||
.\" .El
|
||||
.Sh FILES \" File used or created by the topic of the man page
|
||||
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
|
||||
.It Pa /usr/share/file_name
|
||||
FILE_1 description
|
||||
.It Pa /Users/joeuser/Library/really_long_file_name
|
||||
FILE_2 description
|
||||
.El \" Ends the list
|
||||
.\" .Sh DIAGNOSTICS \" May not be needed
|
||||
.\" .Bl -diag
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .It Diagnostic Tag
|
||||
.\" Diagnostic informtion here.
|
||||
.\" .El
|
||||
.Sh SEE ALSO
|
||||
.\" List links in ascending order by section, alphabetically within a section.
|
||||
.\" Please do not reference files that do not exist without filing a bug report
|
||||
.Xr a 1 ,
|
||||
.Xr b 1 ,
|
||||
.Xr c 1 ,
|
||||
.Xr a 2 ,
|
||||
.Xr b 2 ,
|
||||
.Xr a 3 ,
|
||||
.Xr b 3
|
||||
.\" .Sh BUGS \" Document known, unremedied bugs
|
||||
.\" .Sh HISTORY \" Document history if command behaves in a unique manner
|
||||
@@ -11,6 +11,6 @@
|
||||
|
||||
extern NSString *restoreStringForIdentifier(NSString *identifier);
|
||||
extern void restoreCursorForIdentifier(NSString *ident);
|
||||
extern void resetAllCursors();
|
||||
extern void resetAllCursors(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@ void restoreCursorForIdentifier(NSString *ident) {
|
||||
|
||||
MMLog("Restoring cursor %s from %s", restoreIdent.UTF8String, ident.UTF8String);
|
||||
if (cape && registered) {
|
||||
applyCapeForIdentifier(cape, restoreIdent);
|
||||
applyCapeForIdentifier(cape, restoreIdent, YES);
|
||||
}
|
||||
|
||||
CGSRemoveRegisteredCursor(CGSMainConnectionID(), (char *)ident.UTF8String, false);
|
||||
@@ -44,7 +44,12 @@ void resetAllCursors() {
|
||||
MMLog("Restoring core cursors...");
|
||||
if (CoreCursorUnregisterAll(CGSMainConnectionID()) == 0) {
|
||||
MCSetDefault(NULL, MCPreferencesAppliedCursorKey);
|
||||
|
||||
for (int x = 0; x < 45; x++) {
|
||||
CoreCursorSet(CGSMainConnectionID(), x);
|
||||
}
|
||||
|
||||
MMLog(BOLD GREEN "Successfully restored all cursors." RESET);
|
||||
} else
|
||||
MMLog(BOLD RED "Received an error while restoring core cursors." RESET);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
#ifndef Mousecape_scale_h
|
||||
#define Mousecape_scale_h
|
||||
|
||||
extern float cursorScale();
|
||||
extern float defaultCursorScale();
|
||||
extern float cursorScale(void);
|
||||
extern float defaultCursorScale(void);
|
||||
extern BOOL setCursorScale(float scale);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -22,10 +22,10 @@
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>LSBackgroundOnly</key>
|
||||
<true/>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>LSUIElement</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Alex Zielenski. All rights reserved.</string>
|
||||
</dict>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
Privacy Policy
|
||||
|
||||
Alexander S Zielenski built the Mousecape app as an Open Source app. This SERVICE is provided by Alexander S Zielenski at no cost and is intended for use as is.
|
||||
|
||||
This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
|
||||
|
||||
If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
|
||||
|
||||
The entire distributed copy of Mousecape made available by Alexander Zielenski henceforth
|
||||
shall be referred to as "the app".
|
||||
|
||||
Information Collection and Use
|
||||
|
||||
The app does not collect or share any information. If files produced by the app
|
||||
with personal information are shared it is because a file was shared by the creator.
|
||||
|
||||
The app does not use third party services that may collect information used to identify you.
|
||||
|
||||
Log Data
|
||||
|
||||
The app collects no logs.
|
||||
|
||||
Service Providers
|
||||
|
||||
Mousecape has no third party affiliates.
|
||||
|
||||
Children’s Privacy
|
||||
|
||||
These Services do not address anyone under the age of 13. Parents and guardians
|
||||
should make sure children do not share their "cape" files produced by the app
|
||||
with personal information inside for safety.
|
||||
|
||||
Changes to This Privacy Policy
|
||||
|
||||
I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes.
|
||||
|
||||
Since I have no means of notifying you of updates it is incumbent upon you to visit when you download a new version of Mousecape.
|
||||
|
||||
This policy is effective as of 2020-06-13
|
||||
|
||||
Contact Us
|
||||
|
||||
If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at support@alexzielenski.com.
|
||||