13 Commits

Author SHA1 Message Date
Alex Zielenski 63adfdb342 Merge remote-tracking branch 'origin/dev' 2014-07-31 04:59:36 -04:00
Alex Zielenski fa0764e04b use correct build number 2014-07-31 04:59:26 -04:00
Alex Zielenski e0c342c291 Merge remote-tracking branch 'origin/dev' 2014-07-31 04:58:17 -04:00
Alex Zielenski 200c323225 use a short version string in appcast 2014-07-31 04:57:59 -04:00
Alex Zielenski dc5974b1e5 Merge branch 'dev' 2014-07-31 04:55:33 -04:00
Alex Zielenski e1268114a9 use correct bundle version 2014-07-31 04:55:03 -04:00
Alex Zielenski 835d860546 Merge remote-tracking branch 'origin/dev' 2014-07-31 04:53:06 -04:00
Alex Zielenski ca2a0134d1 sparkle 2014-07-31 04:51:37 -04:00
Alex Zielenski 1a5286d567 bump version 2014-07-29 12:20:32 -04:00
Alex Zielenski c78b363aed fix prefs saving on application 2014-07-26 15:18:43 -04:00
Alex Zielenski 830628bb70 Merge branch 'master' of github.com:alexzielenski/Mousecape 2014-07-26 02:41:29 -04:00
Alex Zielenski 2e7b01e5d7 fix observation leak 2014-07-26 02:41:05 -04:00
Alex Zielenski 46d8ce7c57 Update README.md 2014-07-26 02:38:41 -04:00
15 changed files with 319 additions and 19 deletions
View File
@@ -55,6 +55,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 +92,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 +147,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;
@@ -218,6 +273,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 +316,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 */,
);
@@ -324,6 +381,7 @@
FAAEF8EE189EB32700145DF8 /* external */ = {
isa = PBXGroup;
children = (
FADF012E198A2C7400006228 /* Sparkle.xcodeproj */,
FA14DE8818CE596B00A73BF4 /* Rebel */,
FADBC14E18CE51C000B9510F /* DTScrollView */,
FA5107DD18A823BD00917185 /* MASPreferences */,
@@ -515,6 +573,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 +688,12 @@
FA359841189DAAF900288163 /* Build Number */,
FAE5D57D1952734F007620DE /* Copy Tool */,
FAE5D57F1952737F007620DE /* Copy Helper */,
FADF0146198A2CA600006228 /* Copy Frameworks */,
);
buildRules = (
);
dependencies = (
FADF0145198A2CA100006228 /* PBXTargetDependency */,
FA359847189DBEB700288163 /* PBXTargetDependency */,
);
name = Mousecape;
@@ -689,10 +761,50 @@
knownRegions = (
en,
Base,
ar,
ca,
cs,
cy,
da,
de,
el,
es,
fi,
fr,
he,
hu,
id,
is,
it,
ja,
ko,
nb,
nl,
no,
pl,
pt_BR,
pt_PT,
ro,
ru,
sk,
sl,
sv,
th,
tr,
uk,
zh_CN,
zh_TW,
English,
);
mainGroup = FAC69F58189D603C00BC829D;
productRefGroup = FAC69F62189D603C00BC829D /* Products */;
projectDirPath = "";
projectReferences = (
{
ProductGroup = FADF012F198A2C7400006228 /* Products */;
ProjectRef = FADF012E198A2C7400006228 /* Sparkle.xcodeproj */;
},
);
projectRoot = "";
targets = (
FAC69F60189D603C00BC829D /* Mousecape */,
@@ -702,6 +814,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;
@@ -827,6 +977,11 @@
target = FAC69FAC189D608900BC829D /* mousecloak */;
targetProxy = FA359846189DBEB700288163 /* PBXContainerItemProxy */;
};
FADF0145198A2CA100006228 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = Sparkle;
targetProxy = FADF0144198A2CA100006228 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
@@ -0,0 +1,96 @@
<?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 = "Release"
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>
@@ -4,6 +4,11 @@
<dict>
<key>SchemeUserState</key>
<dict>
<key>Mousecape Release.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
<key>Mousecape.xcscheme</key>
<dict>
<key>orderHint</key>
@@ -12,12 +17,12 @@
<key>mousecloak.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>2</integer>
</dict>
<key>mousecloakHelper.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
<integer>3</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
+1 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6185.11" 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="6185.11"/>
</dependencies>
+5 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6185.11" 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="6185.11"/>
</dependencies>
@@ -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"/>
@@ -423,5 +426,6 @@ CA
</connections>
</customObject>
<customObject id="420" customClass="NSFontManager"/>
<customObject id="1HC-av-0d2" customClass="SUUpdater"/>
</objects>
</document>
+6 -2
View File
@@ -36,11 +36,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.0.4</string>
<string>0.0.5</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1551</string>
<string>1581</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
@@ -51,6 +51,10 @@
<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>
@@ -10,5 +10,5 @@
#import "MMAnimatingImageView.h"
@interface MCCapePreviewItem : NSCollectionViewItem
@property (nonatomic, assign) IBOutlet MMAnimatingImageView *animatingImageView;
@property (nonatomic, weak) IBOutlet MMAnimatingImageView *animatingImageView;
@end
@@ -95,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 {
+4 -4
View File
@@ -18,11 +18,11 @@ extern NSString *MCPreferencesDoubleActionKey;
extern NSString *MCPreferencesHandednessKey;
extern NSString *MCSuppressDeleteLibraryConfirmationKey;
extern NSString *MCSuppressDeleteCursorConfirmationKey;
extern id MCDefaultFor(NSString *key);
#define MCDefault(key) MCDefaultFor(key)
extern id MCDefaultFor(NSString *key, NSString *user, NSString *host);
extern id MCDefault(NSString *key);
#define MCFlag(key) [MCDefault(key) boolValue]
extern void MCSetDefaultFor(id value, NSString *key);
#define MCSetDefault(value, key) MCSetDefaultFor(value, key)
extern void MCSetDefaultFor(id value, NSString *key, NSString *user, NSString *host);
#define MCSetDefault(value, key) MCSetDefaultFor(value, key, (__bridge NSString *)kCFPreferencesCurrentUser, (__bridge NSString *)kCFPreferencesCurrentHost)
#define MCSetFlag(value, key) MCSetDefault(@(value), key)
#endif
+9 -5
View File
@@ -15,13 +15,17 @@ NSString *MCPreferencesDoubleActionKey = @"MCDoubleAction";
NSString *MCPreferencesHandednessKey = @"MCHandedness";
NSString *MCSuppressDeleteLibraryConfirmationKey = @"MCSuppressDeleteLibraryConfirmationKey";
NSString *MCSuppressDeleteCursorConfirmationKey = @"MCSuppressDeleteCursorConfirmationKey";
id MCDefaultFor(NSString *key) {
NSString *value = (NSString *)CFPreferencesCopyAppValue((CFStringRef)key, (CFStringRef)kMCDomain);
id MCDefaultFor(NSString *key, NSString *user, NSString *host) {
NSString *value = (NSString *)CFPreferencesCopyValue((CFStringRef)key, (CFStringRef)kMCDomain, (CFStringRef)user, (CFStringRef)host);
return [value autorelease];
}
void MCSetDefaultFor(id value, NSString *key) {
CFPreferencesSetAppValue((CFStringRef)key, (CFPropertyListRef)value, (CFStringRef)kMCDomain);
// 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);
}
+1 -2
View File
@@ -16,8 +16,7 @@
NSString *appliedCapePathForUser(NSString *user) {
NSString *home = NSHomeDirectoryForUser(user);
#warning help
NSString *ident = MCDefaultFor(@"MCAppliedCursor");
NSString *ident = MCDefaultFor(@"MCAppliedCursor", user, (NSString *)kCFPreferencesCurrentHost);
NSString *appSupport = [home stringByAppendingPathComponent:@"Library/Application Support"];
return [[[appSupport stringByAppendingPathComponent:@"Mousecape/capes"] stringByAppendingPathComponent:ident] stringByAppendingPathExtension:@"cape"];
}
+1 -1
View File
@@ -29,7 +29,7 @@ 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.4**.
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
+32
View File
@@ -0,0 +1,32 @@
<?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 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>