Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 01a8dd98b1 | |||
| eb3b5125fc | |||
| 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,69 @@
|
||||
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/
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "Mousecape/Mousecape/external/Sparkle"]
|
||||
path = Mousecape/Mousecape/external/Sparkle
|
||||
url = https://github.com/sparkle-project/Sparkle.git
|
||||
@@ -9,9 +9,6 @@
|
||||
/* 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,26 @@
|
||||
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 */; };
|
||||
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 */; };
|
||||
@@ -55,6 +58,8 @@
|
||||
FAC69FDD189D636700BC829D /* MCDefs.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FDB189D636700BC829D /* MCDefs.m */; };
|
||||
FADBC15118CE51C000B9510F /* DTScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = FADBC15018CE51C000B9510F /* DTScrollView.m */; };
|
||||
FADBC15418CE535200B9510F /* MCCapePreviewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = FADBC15318CE535200B9510F /* MCCapePreviewItem.m */; };
|
||||
FADF0143198A2C9200006228 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FADF013A198A2C7500006228 /* Sparkle.framework */; };
|
||||
FADF0147198A2CAD00006228 /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = FADF013A198A2C7500006228 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
FAE5D56C1952700B007620DE /* MCDefs.m in Sources */ = {isa = PBXBuildFile; fileRef = FAC69FDB189D636700BC829D /* MCDefs.m */; };
|
||||
FAE5D56D1952700B007620DE /* MCPrefs.m in Sources */ = {isa = PBXBuildFile; fileRef = FA35983E189DA3BC00288163 /* MCPrefs.m */; };
|
||||
FAE5D5701952700B007620DE /* apply.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8FF770189D66D800750E51 /* apply.m */; };
|
||||
@@ -90,6 +95,48 @@
|
||||
remoteGlobalIDString = FAC69FAC189D608900BC829D;
|
||||
remoteInfo = mousecloak;
|
||||
};
|
||||
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 */
|
||||
@@ -103,6 +150,17 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
FADF0146198A2CA600006228 /* Copy Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
FADF0147198A2CAD00006228 /* Sparkle.framework in Copy Frameworks */,
|
||||
);
|
||||
name = "Copy Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
FAE5D57D1952734F007620DE /* Copy Tool */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -130,12 +188,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 +204,15 @@
|
||||
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>"; };
|
||||
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 +229,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; };
|
||||
@@ -218,6 +281,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 +324,7 @@
|
||||
files = (
|
||||
FAAEF8F7189EB34700145DF8 /* QuartzCore.framework in Frameworks */,
|
||||
FA35984D189DC55A00288163 /* ServiceManagement.framework in Frameworks */,
|
||||
FADF0143198A2C9200006228 /* Sparkle.framework in Frameworks */,
|
||||
FA359849189DC40100288163 /* Security.framework in Frameworks */,
|
||||
FAC69F65189D603C00BC829D /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
@@ -287,19 +352,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 +373,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 */,
|
||||
@@ -450,6 +516,8 @@
|
||||
FAC69FCB189D609B00BC829D /* NSCursor_Private.h */,
|
||||
FAC69FB4189D608900BC829D /* mousecloak.1 */,
|
||||
FAC69FB2189D608900BC829D /* Supporting Files */,
|
||||
FABA44D221D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.h */,
|
||||
FABA44D321D9D7D0009B10D9 /* NSBitmapImageRep+ColorSpace.m */,
|
||||
);
|
||||
path = mousecloak;
|
||||
sourceTree = "<group>";
|
||||
@@ -515,6 +583,18 @@
|
||||
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 */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAE5D54A19526F82007620DE /* mousecloakHelper */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -618,10 +698,12 @@
|
||||
FA359841189DAAF900288163 /* Build Number */,
|
||||
FAE5D57D1952734F007620DE /* Copy Tool */,
|
||||
FAE5D57F1952737F007620DE /* Copy Helper */,
|
||||
FADF0146198A2CA600006228 /* Copy Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
FADF0145198A2CA100006228 /* PBXTargetDependency */,
|
||||
FA359847189DBEB700288163 /* PBXTargetDependency */,
|
||||
);
|
||||
name = Mousecape;
|
||||
@@ -670,29 +752,42 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
CLASSPREFIX = MC;
|
||||
LastUpgradeCheck = 0600;
|
||||
LastUpgradeCheck = 1140;
|
||||
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 +797,44 @@
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
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;
|
||||
@@ -749,6 +882,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 +893,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 +912,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 +935,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 +951,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 +963,11 @@
|
||||
target = FAC69FAC189D608900BC829D /* mousecloak */;
|
||||
targetProxy = FA359846189DBEB700288163 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FADF0145198A2CA100006228 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = Sparkle;
|
||||
targetProxy = FADF0144198A2CA100006228 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
@@ -834,6 +975,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FA048869189F58B1001F3AB5 /* Base */,
|
||||
FA57338F2495474800103FCF /* en */,
|
||||
);
|
||||
name = Edit.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -842,6 +984,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FA04886B189F58B1001F3AB5 /* Base */,
|
||||
FA57338D2495474200103FCF /* en */,
|
||||
);
|
||||
name = Library.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -866,6 +1009,7 @@
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
FAC69F7A189D603C00BC829D /* Base */,
|
||||
FA57338B2495473A00103FCF /* en */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
@@ -877,22 +1021,38 @@
|
||||
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_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;
|
||||
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)\"\\\"",
|
||||
@@ -908,7 +1068,7 @@
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx10.9;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -916,23 +1076,38 @@
|
||||
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_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;
|
||||
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;
|
||||
@@ -941,7 +1116,7 @@
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
SDKROOT = macosx10.9;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -949,12 +1124,19 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = 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";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.alexzielenski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
@@ -963,12 +1145,19 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = 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";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.alexzielenski.${PRODUCT_NAME:rfc1034identifier}";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
@@ -977,6 +1166,11 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
@@ -989,6 +1183,7 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -996,6 +1191,11 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_ARC = NO;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
DEVELOPMENT_TEAM = 3GD8ABJ22W;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@@ -1004,6 +1204,7 @@
|
||||
"$(PROJECT_DIR)/mousecloak/vendor",
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
@@ -1013,8 +1214,13 @@
|
||||
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;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "mousecloak/mousecloak-Prefix.pch";
|
||||
@@ -1031,7 +1237,9 @@
|
||||
INFOPLIST_FILE = mousecloakHelper/Info.plist;
|
||||
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 = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -1041,9 +1249,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 = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
COPY_PHASE_STRIP = 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";
|
||||
@@ -1056,7 +1269,9 @@
|
||||
INFOPLIST_FILE = mousecloakHelper/Info.plist;
|
||||
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 = "";
|
||||
};
|
||||
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 |
@@ -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" : {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"data" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "Mousecape.icns"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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,25 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.3</string>
|
||||
<string>0.0.6</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1329</string>
|
||||
<string>1782</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-2019 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.xml</string>
|
||||
<key>UTExportedTypeDeclarations</key>
|
||||
<array>
|
||||
<dict>
|
||||
|
||||
@@ -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,20 @@ 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)];
|
||||
|
||||
// PNGCodec ignores colorspace information. As an invariant to our cape files we make sure
|
||||
// all images are converted to sRGB so we retag it beforehand
|
||||
[self setRepresentation:rep.retaggedSRGBSpace forScale:cursorScaleForScale(rep.pixelsWide / pointsWide.doubleValue)];
|
||||
}
|
||||
|
||||
self.size = NSMakeSize(pointsWide.doubleValue, pointsHigh.doubleValue);
|
||||
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
@@ -126,7 +131,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 representationUsingType:NSPNGFileType properties:@{}];
|
||||
}
|
||||
|
||||
drep[MCCursorDictionaryRepresentationsKey] = pngs;
|
||||
@@ -176,25 +181,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];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,26 @@ 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];
|
||||
NSImageRep *rep =self.image.representations.lastObject;
|
||||
if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
|
||||
[sender setData:[(NSBitmapImageRep *)rep representationUsingType:NSPNGFileType properties:@{}] forType:NSPasteboardTypePNG];
|
||||
} else {
|
||||
// abort();
|
||||
}
|
||||
} 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).png", NSDate.date.timeIntervalSince1970]];
|
||||
NSImageRep *rep =self.image.representations.firstObject;
|
||||
|
||||
if ([rep isKindOfClass:[NSBitmapImageRep class]]) {
|
||||
[[(NSBitmapImageRep *)rep representationUsingType:NSPNGFileType properties:@{}] writeToFile:url.path atomically:NO];
|
||||
} else {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - NSDragDestination
|
||||
@@ -266,10 +308,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 +326,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);
|
||||
|
||||
@@ -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 representationUsingType:NSPNGFileType properties:@{}];
|
||||
}
|
||||
|
||||
// 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) {
|
||||
@@ -35,10 +36,14 @@ BOOL applyCursorForIdentifier(NSUInteger frameCount, CGFloat frameDuration, CGPo
|
||||
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 +53,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 +127,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 representationUsingType:NSPNGFileType properties:@{}];
|
||||
[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 representationUsingType:NSPNGFileType properties:@{}] ];
|
||||
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"];
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -3,11 +3,13 @@ Mousecape
|
||||
|
||||
A free cursor manager for Mac OS 10.8+ built using private, nonintrusive CoreGraphics APIs.
|
||||
|
||||

|
||||
|
||||
## How it works
|
||||
|
||||
Mousecape works by calling the API calls that Apple uses to initialize the system cursors in the system and it registers a daemon that will automatically apply the cursor on login and when cursors get unregistered.
|
||||
|
||||
It is unintrusive and works in the background. You just need to open, install the helper tool, apply your cursor and you're done!
|
||||
It is unintrusive and works in the background. You just need to open the app, click **Mousecape --> Install Helper Tool**, apply your cursor and you're done!
|
||||
|
||||
## Where do I get cursors?
|
||||
|
||||
@@ -19,13 +21,17 @@ There is an example cape file included in this Git Repo located [here for downlo
|
||||
|
||||
You can create a new cape document in the Mousecape app by hitting ⌘N (Command-N) and editing it with ⌘E. Click the "+" button to add cursors to customize and symply drag your images into the fields provided.
|
||||
|
||||
## How do animated cursors work?
|
||||
|
||||
When you want to animate a cursor, change the value in the frames field in the edit window and make sure frame duration is how you want it. Next, create an image that has all of your cursor frames stacked on top of each other vertically. Mousecape will traverse down the image for each frame, using a box the same size as whatever you put in the size field.
|
||||
|
||||
## How can I say thanks?
|
||||
|
||||
Tell your friends.
|
||||
|
||||
## Where can I get a copy of this sweet tool?
|
||||
|
||||
In the [releases section](https://github.com/alexzielenski/Mousecape/releases) of this GitHub page. There are stable reases there. **The current version is 0.0.3**.
|
||||
In the [releases section](https://github.com/alexzielenski/Mousecape/releases) of this GitHub page. There are stable reases there. **The current version is 0.0.5**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<channel>
|
||||
<title>Mousecape Changelog</title>
|
||||
<link>https://raw.githubusercontent.com/alexzielenski/Mousecape/master/appcast.xml</link>
|
||||
<description>Most recent changes with links to updates.</description>
|
||||
<language>en</language>
|
||||
<item>
|
||||
<title>Version 1813</title>
|
||||
<description>
|
||||
<![CDATA[
|
||||
<ul>
|
||||
<li>[New] Switched Version numbering system to build number</li>
|
||||
<li>[New] Update to fresher new icon courtesy of Allan Nyholm</li>
|
||||
<li>[Fix] Dragging out cursor images washes out color</li>
|
||||
<li>[Fix] Adding frames to animated cursor washes out color</li>
|
||||
</ul>
|
||||
]]>
|
||||
</description>
|
||||
<pubDate>Mon, 13 Jun 2020 20:38:11 +0800</pubDate>
|
||||
<enclosure url="https://github.com/alexzielenski/Mousecape/releases/download/1813/Mousecape_1813.zip" sparkle:version="1813" sparkle:shortVersionString="1813" length="4560238 " type="application/octet-stream" />
|
||||
</item>
|
||||
<item>
|
||||
<title>Version 0.0.6</title>
|
||||
<description>
|
||||
<![CDATA[
|
||||
<ul>
|
||||
<li>[New] We now have an icon! Courtesy of long-time user and artist Allan Nyholm Nielson</li>
|
||||
<li>[Fix] Change backgrounding type of helper tool causing problems with Catalina</li>
|
||||
<li>[Fix] Patch memory leak in helper tool when applying or restoring capes</li>
|
||||
</ul>
|
||||
]]>
|
||||
</description>
|
||||
<pubDate>Mon, 14 Oct 2019 20:38:11 +0800</pubDate>
|
||||
<enclosure url="https://github.com/alexzielenski/Mousecape/releases/download/0.0.6/Mousecape-0.0.6.zip" sparkle:version="1710" sparkle:shortVersionString="0.0.6" length="4387249" type="application/octet-stream" />
|
||||
</item>
|
||||
<item>
|
||||
<title>Version 0.0.5</title>
|
||||
<description>
|
||||
<![CDATA[
|
||||
<ul>
|
||||
<li>New information in read me on how to animate cursors</li>
|
||||
<li>[New] Ability to export cursors by holding the alt key when dragging from the edit window</li>
|
||||
<li>[New] Ability to dump currently applied cursors from Capes menu</li>
|
||||
<li>[Fix] Checking for existing identifiers already in library</li>
|
||||
<li>[Fix] Inaccurate hotspot dot in edit window</li>
|
||||
<li>[New] First image dragged in to edit window drop zone defines the cursor size</li>
|
||||
<li>[New] Drag in multiple images of the same size to animate</li>
|
||||
<li>[New] Holt alt key while dragging a cursor image in to add it as a frame</li>
|
||||
<li>[Fix] Adding a cursor to the library by opening it without the app open</li>
|
||||
<li>[Fix] Identifier renames not being saved</li>
|
||||
<li>[New] Sort cursors within a cape by name in library window</li>
|
||||
<li>[New] Preference for left-handed users that flips all pointer images</li>
|
||||
</ul>
|
||||
]]>
|
||||
</description>
|
||||
<pubDate>Sat, 26 Jul 2014 15:20:11 +0000</pubDate>
|
||||
<enclosure url="https://github.com/alexzielenski/Mousecape/releases/download/0.0.5/Mousecape.zip" sparkle:version="1579" sparkle:shortVersionString="0.0.5" length="269044" type="application/octet-stream" />
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
After Width: | Height: | Size: 580 KiB |