got rid of DropBox syncing, will add iCloud support later

This commit is contained in:
Gennadiy Potapov 2016-04-03 13:18:10 +08:00
parent c4d1d38b90
commit d44887e790
33 changed files with 90 additions and 477 deletions

View file

@ -13,7 +13,6 @@
#import "SRKeyCodeTransformer.h"
#import "JumpcutStore.h"
#import "SGHotKey.h"
#import "DBSyncPromptDelegate.h"
@class SGHotKey;
@ -66,13 +65,8 @@
NSDictionary *standardPreferences;
int jcDisplayNum;
BOOL issuedRememberResizeWarning;
BOOL dropboxSync;
IBOutlet NSButtonCell * dropboxCheckbox;
}
//@property(retain, nonatomic) IBOutlet NSButtonCell * dropboxCheckbox;
// Basic functionality
-(void) pollPB:(NSTimer *)timer;
-(BOOL) addClipToPasteboardFromCount:(int)indexInt;
@ -111,9 +105,6 @@
-(IBAction) processMenuClippingSelection:(id)sender;
-(IBAction) activateAndOrderFrontStandardAboutPanel:(id)sender;
-(BOOL) dropboxSync;
-(void)setDropboxSync:(BOOL)enable;
// Preference related
-(IBAction) showPreferencePanel:(id)sender;
-(IBAction) setRememberNumPref:(id)sender;

View file

@ -15,7 +15,6 @@
#import "UKLoginItemRegistry.h"
#import "NSWindow+TrueCenter.h"
#import "NSWindow+ULIZoomEffect.h"
#import "DBUserDefaults.h"
#define _DISPLENGTH 40
@ -23,7 +22,7 @@
- (id)init
{
[[DBUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:10],
@"displayNum",
[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSNumber numberWithInt:9],[NSNumber numberWithLong:1179648],nil] forKeys:[NSArray arrayWithObjects:@"keyCode",@"modifierFlags",nil]],
@ -86,17 +85,17 @@
[self buildAppearancesPreferencePanel];
// We no longer get autosave from ShortcutRecorder, so let's set the recorder by hand
if ( [[DBUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] ) {
[mainRecorder setKeyCombo:SRMakeKeyCombo([[[[DBUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] objectForKey:@"keyCode"] intValue],
[[[[DBUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] objectForKey:@"modifierFlags"] intValue] )
if ( [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] ) {
[mainRecorder setKeyCombo:SRMakeKeyCombo([[[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] objectForKey:@"keyCode"] intValue],
[[[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"ShortcutRecorder mainHotkey"] objectForKey:@"modifierFlags"] intValue] )
];
};
// Initialize the JumpcutStore
clippingStore = [[JumpcutStore alloc] initRemembering:[[DBUserDefaults standardUserDefaults] integerForKey:@"rememberNum"]
displaying:[[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"]
clippingStore = [[JumpcutStore alloc] initRemembering:[[NSUserDefaults standardUserDefaults] integerForKey:@"rememberNum"]
displaying:[[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"]
withDisplayLength:_DISPLENGTH];
favoritesStore = [[JumpcutStore alloc] initRemembering:[[DBUserDefaults standardUserDefaults] integerForKey:@"favoritesRememberNum"]
displaying:[[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"]
favoritesStore = [[JumpcutStore alloc] initRemembering:[[NSUserDefaults standardUserDefaults] integerForKey:@"favoritesRememberNum"]
displaying:[[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"]
withDisplayLength:_DISPLENGTH];
stashedStore = NULL;
[bezel setColor:NO];
@ -118,7 +117,7 @@
statusItem = [[[NSStatusBar systemStatusBar]
statusItemWithLength:NSVariableStatusItemLength] retain];
[statusItem setHighlightMode:YES];
[self switchMenuIconTo: [[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"]];
[self switchMenuIconTo: [[NSUserDefaults standardUserDefaults] integerForKey:@"menuIcon"]];
[statusItem setMenu:jcMenu];
[jcMenu setDelegate:self];
jcMenuBaseItemsCount = [[[[jcMenu itemArray] reverseObjectEnumerator] allObjects] count];
@ -126,7 +125,7 @@
// If our preferences indicate that we are saving, load the dictionary from the saved plist
// and use it to get everything set up.
if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
if ( [[NSUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
[self loadEngineFromPList];
}
// Build our listener timer
@ -151,22 +150,15 @@
// This can take five seconds, perhaps more, so do it in the background instead of holding up opening of the preference panel.
int checkLoginRegistry = [UKLoginItemRegistry indexForLoginItemWithPath:[[NSBundle mainBundle] bundlePath]];
if ( checkLoginRegistry >= 1 ) {
[[DBUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES]
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES]
forKey:@"loadOnStartup"];
} else {
[[DBUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:NO]
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:NO]
forKey:@"loadOnStartup"];
}
});
[[NSNotificationCenter defaultCenter] addObserverForName:@"DBSyncPromptUserDidCancelNotification"
object:nil queue:nil usingBlock:^(NSNotification *notification) {
[self setDropboxSync:NO];
//[[DBUserDefaults standardUserDefaults] setDropboxSyncEnabled:NO];
}];
[NSApp activateIgnoringOtherApps: YES];
[NSApp activateIgnoringOtherApps: YES];
}
-(void)menuWillOpen:(NSMenu *)menu
@ -305,13 +297,13 @@
-(IBAction) setupBezel:(id)sender
{
NSRect windowFrame = NSMakeRect(0, 0,
[[DBUserDefaults standardUserDefaults] floatForKey:@"bezelWidth"],
[[DBUserDefaults standardUserDefaults] floatForKey:@"bezelHeight"]);
[[NSUserDefaults standardUserDefaults] floatForKey:@"bezelWidth"],
[[NSUserDefaults standardUserDefaults] floatForKey:@"bezelHeight"]);
bezel = [[BezelWindow alloc] initWithContentRect:windowFrame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
showSource:[[DBUserDefaults standardUserDefaults] boolForKey:@"displayClippingSource"]];
showSource:[[NSUserDefaults standardUserDefaults] boolForKey:@"displayClippingSource"]];
[bezel trueCenter];
[bezel setDelegate:self];
@ -345,25 +337,25 @@
int newRemember = [sender intValue];
if ( newRemember < [clippingStore jcListCount] &&
! issuedRememberResizeWarning &&
! [[DBUserDefaults standardUserDefaults] boolForKey:@"stifleRememberResizeWarning"]
! [[NSUserDefaults standardUserDefaults] boolForKey:@"stifleRememberResizeWarning"]
) {
choice = NSRunAlertPanel(@"Resize Stack",
@"Resizing the stack to a value below its present size will cause clippings to be lost.",
@"Resize", @"Cancel", @"Don't Warn Me Again");
if ( choice == NSAlertAlternateReturn ) {
[[DBUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:[clippingStore jcListCount]]
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:[clippingStore jcListCount]]
forKey:@"rememberNum"];
[self updateMenu];
return;
} else if ( choice == NSAlertOtherReturn ) {
[[DBUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES]
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES]
forKey:@"stifleRememberResizeWarning"];
} else {
issuedRememberResizeWarning = YES;
}
}
if ( newRemember < [[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"] ) {
[[DBUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:newRemember]
if ( newRemember < [[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"] ) {
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithInt:newRemember]
forKey:@"displayNum"];
}
[clippingStore setRememberNum:newRemember];
@ -480,7 +472,7 @@
-(void)setBinding:(NSString*)binding forKey:(NSString*)keyPath andOrAction:(SEL)action on:(NSControl*)newControl
{
[newControl bind:binding
toObject:[DBUserDefaults standardUserDefaults]
toObject:[NSUserDefaults standardUserDefaults]
withKeyPath:keyPath
options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:@"NSContinuouslyUpdatesValue"]];
@ -571,7 +563,7 @@
}
-(IBAction)toggleLoadOnStartup:(id)sender {
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"loadOnStartup"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"loadOnStartup"] ) {
[UKLoginItemRegistry addLoginItemWithPath:[[NSBundle mainBundle] bundlePath] hideIt:NO];
} else {
[UKLoginItemRegistry removeLoginItemWithPath:[[NSBundle mainBundle] bundlePath]];
@ -653,7 +645,7 @@
{
if ( clippingStore != favoritesStore && [clippingStore jcListCount] > stackPosition ) {
if ( [favoritesStore rememberNum] == [favoritesStore jcListCount]
&& [[[DBUserDefaults standardUserDefaults] valueForKey:@"saveForgottenFavorites"] boolValue] )
&& [[[NSUserDefaults standardUserDefaults] valueForKey:@"saveForgottenFavorites"] boolValue] )
{
// favoritesStore is full, so save the last entry before it gets lost.
[self switchToFavoritesStore];
@ -691,13 +683,13 @@
NSString* search = [searchBox stringValue];
if ( nil != search && 0 != search.length )
{
NSArray *mapping = [clippingStore previousIndexes:[[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"] containing:search];
NSArray *mapping = [clippingStore previousIndexes:[[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"] containing:search];
position = [mapping[position] intValue];
}
[self addClipToPasteboardFromCount:position];
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"pasteMovesToTop"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"pasteMovesToTop"] ) {
[clippingStore clippingMoveToTop:position];
stackPosition = 0;
[self updateMenu];
@ -779,18 +771,18 @@
NSString *type = [jcPasteboard availableTypeFromArray:[NSArray arrayWithObject:NSStringPboardType]];
// Check to see if we are skipping passwords based on length and characters.
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPasswordFields"] )
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"skipPasswordFields"] )
{
// Check to see if they want a little help figuring out what types to enter.
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"revealPasteboardTypes"] )
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"revealPasteboardTypes"] )
[clippingStore addClipping:type ofType:type fromAppLocalizedName:@"Flycut" fromAppBundleURL:nil atTimestamp:0];
__block bool skipClipping = NO;
// Check the array of types to skip.
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPboardTypes"] )
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"skipPboardTypes"] )
{
NSArray *typesArray = [[[[DBUserDefaults standardUserDefaults] stringForKey:@"skipPboardTypesList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
NSArray *typesArray = [[[[NSUserDefaults standardUserDefaults] stringForKey:@"skipPboardTypesList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
[typesArray enumerateObjectsUsingBlock:^(id typeString, NSUInteger idx, BOOL *stop)
{
if ( [type isEqualToString:typeString] )
@ -804,10 +796,10 @@
return YES;
// Check the array of lengths to skip for suspicious strings.
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"skipPasswordLengths"] )
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"skipPasswordLengths"] )
{
int contentsLength = [contents length];
NSArray *lengthsArray = [[[[DBUserDefaults standardUserDefaults] stringForKey:@"skipPasswordLengthsList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
NSArray *lengthsArray = [[[[NSUserDefaults standardUserDefaults] stringForKey:@"skipPasswordLengthsList"] stringByReplacingOccurrencesOfString:@" " withString:@""] componentsSeparatedByString: @","];
[lengthsArray enumerateObjectsUsingBlock:^(id lengthString, NSUInteger idx, BOOL *stop)
{
if ( [lengthString integerValue] == contentsLength )
@ -879,7 +871,7 @@
&& ! [pbCount isEqualTo:pbBlockCount] ) {
if ( [clippingStore rememberNum] == [clippingStore jcListCount]
&& [[[DBUserDefaults standardUserDefaults] valueForKey:@"saveForgottenClippings"] boolValue] )
&& [[[NSUserDefaults standardUserDefaults] valueForKey:@"saveForgottenClippings"] boolValue] )
{
// clippingStore is full, so save the last entry before it gets lost.
// Set to last item, save, and restore position.
@ -898,7 +890,7 @@
// if ( [clippingStore jcListCount] > 1 ) stackPosition++;
stackPosition = 0;
[self updateMenu];
if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 2 )
if ( [[NSUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 2 )
[self saveEngine];
}
}
@ -1049,7 +1041,7 @@
bezel.frame.size.height) display:YES];
if ([bezel respondsToSelector:@selector(setCollectionBehavior:)])
[bezel setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
if ([[DBUserDefaults standardUserDefaults] boolForKey:@"popUpAnimation"])
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"popUpAnimation"])
[bezel makeKeyAndOrderFrontWithPopEffect];
else [bezel makeKeyAndOrderFront:self];
isBezelDisplayed = YES;
@ -1079,7 +1071,7 @@
{
if ( ! isBezelDisplayed ) {
[NSApp activateIgnoringOtherApps:YES];
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"stickyBezel"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"stickyBezel"] ) {
isBezelPinned = YES;
}
[self showBezel];
@ -1118,7 +1110,7 @@
[self restoreStashedStore]; // Only clear the clipping store. Never the favorites.
[clippingStore clearList];
[self updateMenu];
if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
if ( [[NSUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
[self saveEngine];
}
[bezel setText:@""];
@ -1140,7 +1132,7 @@
- (void)updateMenuContaining:(NSString*)search {
[jcMenu setMenuChangedMessagesEnabled:NO];
NSArray *returnedDisplayStrings = [clippingStore previousDisplayStrings:[[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"] containing:search];
NSArray *returnedDisplayStrings = [clippingStore previousDisplayStrings:[[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"] containing:search];
NSArray *menuItems = [[[jcMenu itemArray] reverseObjectEnumerator] allObjects];
@ -1186,7 +1178,7 @@
int index=[[sender menu] indexOfItem:sender];
[self pasteIndex:index];
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"menuSelectionPastes"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"menuSelectionPastes"] ) {
[self performSelector:@selector(hideApp) withObject:nil];
[self performSelector:@selector(fakeCommandV) withObject:nil afterDelay:0.2];
}
@ -1233,7 +1225,7 @@
-(void) loadEngineFromPList
{
NSDictionary *loadDict = [[[DBUserDefaults standardUserDefaults] dictionaryForKey:@"store"] copy];
NSDictionary *loadDict = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"store"] copy];
NSArray *savedJCList;
NSRange loadRange;
@ -1244,7 +1236,7 @@
savedJCList = [loadDict objectForKey:@"jcList"];
if ( [savedJCList isKindOfClass:[NSArray class]] ) {
int rememberNumPref = [[DBUserDefaults standardUserDefaults]
int rememberNumPref = [[NSUserDefaults standardUserDefaults]
integerForKey:@"rememberNum"];
// There's probably a nicer way to prevent the range from going out of bounds, but this works.
rangeCap = [savedJCList count] < rememberNumPref ? [savedJCList count] : rememberNumPref;
@ -1260,7 +1252,7 @@
// Now for the favorites, same thing.
savedJCList =[loadDict objectForKey:@"favoritesList"];
if ( [savedJCList isKindOfClass:[NSArray class]] ) {
rememberNumPref = [[DBUserDefaults standardUserDefaults]
rememberNumPref = [[NSUserDefaults standardUserDefaults]
integerForKey:@"favoritesRememberNum"];
rangeCap = [savedJCList count] < rememberNumPref ? [savedJCList count] : rememberNumPref;
loadRange = NSMakeRange(0, rangeCap);
@ -1285,7 +1277,7 @@
if ( [clippingStore jcListCount] > stackPosition ) {
[self fillBezel];
} else {
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"wraparoundBezel"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"wraparoundBezel"] ) {
stackPosition = 0;
[self fillBezel];
} else {
@ -1317,7 +1309,7 @@
{
stackPosition--;
if ( stackPosition < 0 ) {
if ( [[DBUserDefaults standardUserDefaults] boolForKey:@"wraparoundBezel"] ) {
if ( [[NSUserDefaults standardUserDefaults] boolForKey:@"wraparoundBezel"] ) {
stackPosition = [clippingStore jcListCount] - 1;
[self fillBezel];
} else {
@ -1360,25 +1352,25 @@
NSMutableDictionary *saveDict;
saveDict = [NSMutableDictionary dictionaryWithCapacity:3];
[saveDict setObject:@"0.7" forKey:@"version"];
[saveDict setObject:[NSNumber numberWithInt:[[DBUserDefaults standardUserDefaults] integerForKey:@"rememberNum"]]
[saveDict setObject:[NSNumber numberWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"rememberNum"]]
forKey:@"rememberNum"];
[saveDict setObject:[NSNumber numberWithInt:[[DBUserDefaults standardUserDefaults] integerForKey:@"favoritesRememberNum"]]
[saveDict setObject:[NSNumber numberWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"favoritesRememberNum"]]
forKey:@"favoritesRememberNum"];
[saveDict setObject:[NSNumber numberWithInt:_DISPLENGTH]
forKey:@"displayLen"];
[saveDict setObject:[NSNumber numberWithInt:[[DBUserDefaults standardUserDefaults] integerForKey:@"displayNum"]]
[saveDict setObject:[NSNumber numberWithInt:[[NSUserDefaults standardUserDefaults] integerForKey:@"displayNum"]]
forKey:@"displayNum"];
[self saveStore:clippingStore toKey:@"jcList" onDict:saveDict];
[self saveStore:favoritesStore toKey:@"favoritesList" onDict:saveDict];
[[DBUserDefaults standardUserDefaults] setObject:saveDict forKey:@"store"];
[[DBUserDefaults standardUserDefaults] synchronize];
[[NSUserDefaults standardUserDefaults] setObject:saveDict forKey:@"store"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)setHotKeyPreferenceForRecorder:(SRRecorderControl *)aRecorder {
if (aRecorder == mainRecorder) {
[[DBUserDefaults standardUserDefaults] setObject:
[[NSUserDefaults standardUserDefaults] setObject:
[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[NSNumber numberWithInt:[mainRecorder keyCombo].code],[NSNumber numberWithInt:[mainRecorder keyCombo].flags],nil] forKeys:[NSArray arrayWithObjects:@"keyCode",@"modifierFlags",nil]]
forKey:@"ShortcutRecorder mainHotkey"];
}
@ -1396,27 +1388,15 @@
NSLog(@"code: %ld, flags: %lu", (long)newKeyCombo.code, (unsigned long)newKeyCombo.flags);
}
- (IBAction)toggleDropboxSync:(NSButtonCell*)sender {
DBUserDefaults * defaults = [DBUserDefaults standardUserDefaults];
// First, let's check to make sure Dropbox is available on this machine
if (sender.state == 1) {
if([DBUserDefaults isDropboxAvailable])
[defaults promptDropboxUnavailable];
else [[DBUserDefaults standardUserDefaults] setDropboxSyncEnabled:YES];
} else [[DBUserDefaults standardUserDefaults] setDropboxSyncEnabled:NO];
}
- (void)applicationWillTerminate:(NSNotification *)notification {
if ( [[DBUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
if ( [[NSUserDefaults standardUserDefaults] integerForKey:@"savePreference"] >= 1 ) {
NSLog(@"Saving on exit");
[self saveEngine];
} else {
// Remove clips from store
[[DBUserDefaults standardUserDefaults] setValue:[NSDictionary dictionary] forKey:@"store"];
[[NSUserDefaults standardUserDefaults] setValue:[NSDictionary dictionary] forKey:@"store"];
NSLog(@"Saving preferences on exit");
[[DBUserDefaults standardUserDefaults] synchronize];
[[NSUserDefaults standardUserDefaults] synchronize];
}
//Unregister our hot key (not required)
[[SGHotKeyCenter sharedCenter] unregisterHotKey: mainHotKey];
@ -1433,21 +1413,6 @@
object:nil];
}
-(BOOL) dropboxSync {
return [DBUserDefaults isDropboxSyncEnabled];
}
-(void)setDropboxSync:(BOOL)enable {
DBUserDefaults * defaults = [DBUserDefaults standardUserDefaults];
if (enable) {
if([DBUserDefaults isDropboxAvailable])
[defaults promptDropboxUnavailable];
else [[DBUserDefaults standardUserDefaults] setDropboxSyncEnabled:YES];
} else {
[[DBUserDefaults standardUserDefaults] setDropboxSyncEnabled:NO];
[dropboxCheckbox setState:NSOffState];
}
}
- (void) dealloc {
[bezel release];
[srTransformer release];

View file

@ -1 +0,0 @@
Versions/Current/DBUserDefaults

View file

@ -1 +0,0 @@
Versions/Current/Headers

View file

@ -1 +0,0 @@
Versions/Current/Resources

View file

@ -1,59 +0,0 @@
// License Agreement for Source Code provided by Mizage LLC
//
// This software is supplied to you by Mizage LLC in consideration of your
// agreement to the following terms, and your use, installation, modification
// or redistribution of this software constitutes acceptance of these terms. If
// you do not agree with these terms, please do not use, install, modify or
// redistribute this software.
//
// In consideration of your agreement to abide by the following terms, and
// subject to these terms, Mizage LLC grants you a personal, non-exclusive
// license, to use, reproduce, modify and redistribute the software, with or
// without modifications, in source and/or binary forms; provided that if you
// redistribute the software in its entirety and without modifications, you
// must retain this notice and the following text and disclaimers in all such
// redistributions of the software, and that in all cases attribution of Mizage
// LLC as the original author of the source code shall be included in all such
// resulting software products or distributions. Neither the name, trademarks,
// service marks or logos of Mizage LLC may be used to endorse or promote
// products derived from the software without specific prior written permission
// from Mizage LLC. Except as expressly stated in this notice, no other rights
// or licenses, express or implied, are granted by Mizage LLC herein, including
// but not limited to any patent rights that may be infringed by your
// derivative works or by other works in which the software may be
// incorporated.
//
// The software is provided by Mizage LLC on an "AS IS" basis. MIZAGE LLC MAKES
// NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
// WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
// COMBINATION WITH YOUR PRODUCTS.
//
// IN NO EVENT SHALL MIZAGE LLC BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION
// AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY
// OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE,
// EVEN IF MIZAGE LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Foundation/Foundation.h>
// The options available for a sync prompt
typedef enum DBSyncPromptOption_
{
DBSyncPromptOptionLocal = 0,
DBSyncPromptOptionDropbox
} DBSyncPromptOption;
// Used to inform the delegate of actions taken in the sync prompt window
@protocol DBSyncPromptDelegate <NSObject>
- (void)syncPromptDidSelectOption:(DBSyncPromptOption)option;
@optional
- (void)syncPromptDidCancel;
@end

View file

@ -1,114 +0,0 @@
// License Agreement for Source Code provided by Mizage LLC
//
// This software is supplied to you by Mizage LLC in consideration of your
// agreement to the following terms, and your use, installation, modification
// or redistribution of this software constitutes acceptance of these terms. If
// you do not agree with these terms, please do not use, install, modify or
// redistribute this software.
//
// In consideration of your agreement to abide by the following terms, and
// subject to these terms, Mizage LLC grants you a personal, non-exclusive
// license, to use, reproduce, modify and redistribute the software, with or
// without modifications, in source and/or binary forms; provided that if you
// redistribute the software in its entirety and without modifications, you
// must retain this notice and the following text and disclaimers in all such
// redistributions of the software, and that in all cases attribution of Mizage
// LLC as the original author of the source code shall be included in all such
// resulting software products or distributions. Neither the name, trademarks,
// service marks or logos of Mizage LLC may be used to endorse or promote
// products derived from the software without specific prior written permission
// from Mizage LLC. Except as expressly stated in this notice, no other rights
// or licenses, express or implied, are granted by Mizage LLC herein, including
// but not limited to any patent rights that may be infringed by your
// derivative works or by other works in which the software may be
// incorporated.
//
// The software is provided by Mizage LLC on an "AS IS" basis. MIZAGE LLC MAKES
// NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
// WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
// COMBINATION WITH YOUR PRODUCTS.
//
// IN NO EVENT SHALL MIZAGE LLC BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION
// AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY
// OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE,
// EVEN IF MIZAGE LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Foundation/Foundation.h>
#import "DBSyncPromptDelegate.h"
@class DBSyncPrompt;
// Fired any time the user defaults change.
extern NSString* const DBUserDefaultsDidChangeNotification;
// Fired when the preferences are updated from Dropbox. You should use this
// notification to reapply all the preferences in your application.
extern NSString* const DBUserDefaultsDidSyncNotification;
// DBUserDefaults is a class that gives you a partial replacement for
// NSUserDefaults that synchronizes data to a folder on Dropbox. This allows
// a user to have consistent settings for their application across all their
// Macs.
@interface DBUserDefaults : NSUserDefaults <DBSyncPromptDelegate>
{
NSLock* deadbolt_; //Used to lock access to the defaults dictionary
NSMutableDictionary* defaults_; //Stores the user data
}
// Determines if Dropbox sync is possible
+ (BOOL)isDropboxAvailable;
// Determies if Dropbox sync is enabled
+ (BOOL)isDropboxSyncEnabled;
// Informs the user that Dropbox is not installed
- (void)promptDropboxUnavailable;
// Sets the status of the Dropbox sync
- (void)setDropboxSyncEnabled:(BOOL)enabled;
@end
@interface DBUserDefaults (NSUserDefaultsPartialReplacement)
#pragma mark - NSUserDefaults (Partial) Replacement
+ (DBUserDefaults*)standardUserDefaults;
+ (void)resetStandardUserDefaults;
- (id)objectForKey:(NSString*)defaultName;
- (void)setObject:(id)value forKey:(NSString*)defaultName;
- (void)removeObjectForKey:(NSString*)defaultName;
- (NSString*)stringForKey:(NSString*)defaultName;
- (NSArray*)arrayForKey:(NSString*)defaultName;
- (NSDictionary*)dictionaryForKey:(NSString*)defaultName;
- (NSData*)dataForKey:(NSString*)defaultName;
- (NSArray*)stringArrayForKey:(NSString*)defaultName;
- (NSInteger)integerForKey:(NSString*)defaultName;
- (float)floatForKey:(NSString*)defaultName;
- (double)doubleForKey:(NSString*)defaultName;
- (BOOL)boolForKey:(NSString*)defaultName;
- (NSURL*)URLForKey:(NSString*)defaultName AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER;
- (void)setInteger:(NSInteger)value forKey:(NSString*)defaultName;
- (void)setFloat:(float)value forKey:(NSString*)defaultName;
- (void)setDouble:(double)value forKey:(NSString*)defaultName;
- (void)setBool:(BOOL)value forKey:(NSString*)defaultName;
- (void)setURL:(NSURL*)url forKey:(NSString*)defaultName AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER;
- (void)registerDefaults:(NSDictionary*)registrationDictionary;
- (NSDictionary*)dictionaryRepresentation;
- (BOOL)synchronize;
@end

View file

@ -1,42 +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>BuildMachineOSBuild</key>
<string>10K549</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>DBUserDefaults</string>
<key>CFBundleIdentifier</key>
<string>com.mizage.DBUserDefaults</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>DBUserDefaults</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>10M2518</string>
<key>DTPlatformVersion</key>
<string>PG</string>
<key>DTSDKBuild</key>
<string>10M2518</string>
<key>DTSDKName</key>
<string>macosx10.6</string>
<key>DTXcode</key>
<string>0400</string>
<key>DTXcodeBuild</key>
<string>10M2518</string>
<key>NSHumanReadableCopyright</key>
<string>See included License.txt file</string>
</dict>
</plist>

View file

@ -1,38 +0,0 @@
License Agreement for Source Code provided by Mizage LLC
This software is supplied to you by Mizage LLC in consideration of your
agreement to the following terms, and your use, installation, modification
or redistribution of this software constitutes acceptance of these terms. If
you do not agree with these terms, please do not use, install, modify or
redistribute this software.
In consideration of your agreement to abide by the following terms, and
subject to these terms, Mizage LLC grants you a personal, non-exclusive
license, to use, reproduce, modify and redistribute the software, with or
without modifications, in source and/or binary forms; provided that if you
redistribute the software in its entirety and without modifications, you
must retain this notice and the following text and disclaimers in all such
redistributions of the software, and that in all cases attribution of Mizage
LLC as the original author of the source code shall be included in all such
resulting software products or distributions. Neither the name, trademarks,
service marks or logos of Mizage LLC may be used to endorse or promote
products derived from the software without specific prior written permission
from Mizage LLC. Except as expressly stated in this notice, no other rights
or licenses, express or implied, are granted by Mizage LLC herein, including
but not limited to any patent rights that may be infringed by your
derivative works or by other works in which the software may be
incorporated.
The software is provided by Mizage LLC on an "AS IS" basis. MIZAGE LLC MAKES
NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
COMBINATION WITH YOUR PRODUCTS.
IN NO EVENT SHALL MIZAGE LLC BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION
AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY
OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE,
EVEN IF MIZAGE LLC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -1 +0,0 @@
A

View file

@ -1,14 +0,0 @@
// Created by Gennadiy Potapov
#import <Foundation/Foundation.h>
#import <AppKit/NSUserDefaultsController.h>
@interface DBUserDefaultsController : NSUserDefaultsController {
@private
}
- (NSUserDefaults *)defaults;
@end

View file

@ -1,28 +0,0 @@
// Created by Gennadiy Potapov
#import "DBUserDefaultsController.h"
#import "DBUserDefaults.h"
@implementation DBUserDefaultsController
- (id)init
{
self = [super init];
if (self) {
}
return self;
}
- (NSUserDefaults *)defaults {
return [DBUserDefaults standardUserDefaults];
}
- (void)dealloc
{
[super dealloc];
}
@end

View file

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10116" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment version="1050" identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/>
<development version="6300" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10116"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@ -94,7 +95,6 @@
<customObject id="213" userLabel="AppController" customClass="AppController">
<connections>
<outlet property="appearancePanel" destination="EFy-pc-aKl" id="NYD-Y7-bfQ"/>
<outlet property="dropboxCheckbox" destination="858" id="896"/>
<outlet property="jcMenu" destination="206" id="215"/>
<outlet property="mainRecorder" destination="555" id="556"/>
<outlet property="prefsPanel" destination="218" id="220"/>
@ -123,14 +123,14 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<box title="Box" boxType="oldStyle" borderType="none" titlePosition="noTitle" id="387">
<rect key="frame" x="-3" y="111" width="555" height="374"/>
<rect key="frame" x="-3" y="136" width="555" height="349"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView">
<rect key="frame" x="0.0" y="0.0" width="555" height="374"/>
<rect key="frame" x="0.0" y="0.0" width="555" height="349"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button toolTip="The bezel must be manually dismissed using the &quot;escape&quot; or &quot;return&quot; keys." id="390">
<rect key="frame" x="14" y="344" width="97" height="18"/>
<rect key="frame" x="14" y="319" width="97" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Sticky bezel" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="750">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -141,7 +141,7 @@
</connections>
</button>
<popUpButton verticalHuggingPriority="750" id="392">
<rect key="frame" x="79" y="202" width="189" height="26"/>
<rect key="frame" x="79" y="199" width="189" height="26"/>
<autoresizingMask key="autoresizingMask"/>
<popUpButtonCell key="cell" type="push" title="On exit" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="394" id="751">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
@ -159,7 +159,7 @@
</connections>
</popUpButton>
<button id="398">
<rect key="frame" x="14" y="283" width="204" height="18"/>
<rect key="frame" x="14" y="258" width="204" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Launch Flycut on login" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="753">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -170,19 +170,8 @@
<binding destination="808" name="value" keyPath="values.loadOnStartup" id="820"/>
</connections>
</button>
<button id="857">
<rect key="frame" x="14" y="263" width="247" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Dropbox Sync (settings &amp; clippings)" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="858">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="213" name="value" keyPath="self.dropboxSync" id="895"/>
</connections>
</button>
<button id="897">
<rect key="frame" x="14" y="146" width="247" height="18"/>
<rect key="frame" x="14" y="143" width="247" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Don't copy from password fields" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="898">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -193,7 +182,7 @@
</connections>
</button>
<button id="903">
<rect key="frame" x="14" y="64" width="247" height="18"/>
<rect key="frame" x="14" y="61" width="247" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Remove duplicates" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="904">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -204,7 +193,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750" id="416">
<rect key="frame" x="13" y="230" width="76" height="23"/>
<rect key="frame" x="13" y="227" width="76" height="23"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="754">
<font key="font" metaFont="system"/>
@ -215,7 +204,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="418">
<rect key="frame" x="13" y="208" width="33" height="14"/>
<rect key="frame" x="13" y="205" width="33" height="14"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="755">
<font key="font" metaFont="smallSystem"/>
@ -226,7 +215,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="419">
<rect key="frame" x="13" y="182" width="62" height="14"/>
<rect key="frame" x="13" y="179" width="62" height="14"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="756">
<font key="font" metaFont="smallSystem"/>
@ -237,7 +226,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="420">
<rect key="frame" x="134" y="182" width="95" height="14"/>
<rect key="frame" x="134" y="179" width="95" height="14"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Display in menu" id="757">
<font key="font" metaFont="smallSystem"/>
@ -246,7 +235,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="470">
<rect key="frame" x="79" y="177" width="25" height="22"/>
<rect key="frame" x="79" y="174" width="25" height="22"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="758">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator=" " id="483">
@ -265,7 +254,7 @@
</connections>
</textField>
<textField verticalHuggingPriority="750" id="471">
<rect key="frame" x="224" y="177" width="24" height="22"/>
<rect key="frame" x="224" y="174" width="24" height="22"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="759">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator=" " id="484">
@ -284,7 +273,7 @@
</connections>
</textField>
<stepper toolTip="Controls how many clippings Jumpcut stores in its stack" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="472">
<rect key="frame" x="104" y="175" width="19" height="27"/>
<rect key="frame" x="104" y="172" width="19" height="27"/>
<autoresizingMask key="autoresizingMask"/>
<stepperCell key="cell" continuous="YES" alignment="left" minValue="10" maxValue="99" doubleValue="10" valueWraps="YES" id="760"/>
<connections>
@ -293,7 +282,7 @@
</connections>
</stepper>
<stepper toolTip="Controls how many clippings Jumpcut shows in the menu" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="473">
<rect key="frame" x="249" y="175" width="19" height="27"/>
<rect key="frame" x="249" y="172" width="19" height="27"/>
<autoresizingMask key="autoresizingMask"/>
<stepperCell key="cell" continuous="YES" alignment="left" minValue="5" maxValue="99" doubleValue="5" valueWraps="YES" id="761"/>
<connections>
@ -303,7 +292,7 @@
</connections>
</stepper>
<button toolTip="In the bezel, moving down from the last item takes you to the top and moving up from the first item takes you to the bottom." id="692">
<rect key="frame" x="14" y="324" width="162" height="18"/>
<rect key="frame" x="14" y="299" width="162" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Wraparound bezel" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="762">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -314,7 +303,7 @@
</connections>
</button>
<button toolTip="Selecting a clipping from the menu causes it to be pasted instead of copied back onto the pasteboard." id="694">
<rect key="frame" x="14" y="304" width="162" height="18"/>
<rect key="frame" x="14" y="279" width="162" height="18"/>
<autoresizingMask key="autoresizingMask"/>
<buttonCell key="cell" type="check" title="Menu selection pastes" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="763">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -325,7 +314,7 @@
</connections>
</button>
<button id="914">
<rect key="frame" x="14" y="44" width="230" height="18"/>
<rect key="frame" x="14" y="41" width="230" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Move pasted item to top of stack" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="915">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -336,7 +325,7 @@
</connections>
</button>
<button id="LLh-vf-2Q3">
<rect key="frame" x="246" y="24" width="87" height="18"/>
<rect key="frame" x="246" y="21" width="87" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Clippings" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="oLu-XL-Wuo">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -347,7 +336,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750" id="Ubt-DS-zHf">
<rect key="frame" x="280" y="182" width="62" height="14"/>
<rect key="frame" x="280" y="179" width="62" height="14"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Favorites" id="2L6-OM-5rx">
<font key="font" metaFont="smallSystem"/>
@ -356,7 +345,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" id="dM5-eN-Zvt">
<rect key="frame" x="346" y="177" width="25" height="22"/>
<rect key="frame" x="346" y="174" width="25" height="22"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" id="nes-6O-e5R">
<numberFormatter key="formatter" formatterBehavior="10_0" positiveFormat="#" negativeFormat="-#" hasThousandSeparators="NO" thousandSeparator="," id="aqt-p2-eya">
@ -375,7 +364,7 @@
</connections>
</textField>
<stepper toolTip="Controls how many clippings Jumpcut stores in its stack" horizontalHuggingPriority="750" verticalHuggingPriority="750" id="wZv-HJ-VdW">
<rect key="frame" x="371" y="175" width="19" height="27"/>
<rect key="frame" x="371" y="172" width="19" height="27"/>
<autoresizingMask key="autoresizingMask"/>
<stepperCell key="cell" continuous="YES" alignment="left" minValue="10" maxValue="99" doubleValue="10" valueWraps="YES" id="gUi-gl-RH6"/>
<connections>
@ -384,7 +373,7 @@
</connections>
</stepper>
<button id="pDS-jE-9jb">
<rect key="frame" x="32" y="126" width="133" height="18"/>
<rect key="frame" x="32" y="123" width="133" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Pasteboard types:" bezelStyle="regularSquare" imagePosition="left" inset="2" id="tzh-NM-RSb">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -395,7 +384,7 @@
</connections>
</button>
<button id="Bxp-pI-XMk">
<rect key="frame" x="32" y="105" width="356" height="18"/>
<rect key="frame" x="32" y="102" width="356" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Detect with Upper, Lower, Digit, and Symbol lengths:" bezelStyle="regularSquare" imagePosition="left" inset="2" id="aAK-L0-EHa">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -406,7 +395,7 @@
</connections>
</button>
<button toolTip="For identifying types to include in Pasteboard Types above." id="mka-NZ-Esg">
<rect key="frame" x="32" y="85" width="279" height="18"/>
<rect key="frame" x="32" y="82" width="279" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Include pasteboard types in clippings list" bezelStyle="regularSquare" imagePosition="left" inset="2" id="9Vi-RY-G0b">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -417,7 +406,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750" id="RYj-wx-tTx">
<rect key="frame" x="394" y="103" width="108" height="22"/>
<rect key="frame" x="394" y="100" width="108" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" title="12, 20, 32" drawsBackground="YES" id="aqQ-SR-BmT">
<font key="font" metaFont="system"/>
@ -429,7 +418,7 @@
</connections>
</textField>
<textField verticalHuggingPriority="750" id="x34-dK-wxl">
<rect key="frame" x="171" y="124" width="331" height="22"/>
<rect key="frame" x="171" y="121" width="331" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" title="PasswordPboardType" drawsBackground="YES" id="kTZ-dC-s1q">
<font key="font" metaFont="system"/>
@ -441,7 +430,7 @@
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="FNU-zj-OIm">
<rect key="frame" x="32" y="25" width="211" height="17"/>
<rect key="frame" x="32" y="22" width="211" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Save forgotten items to Desktop:" id="ksy-al-FbE">
<font key="font" metaFont="system"/>
@ -450,7 +439,7 @@
</textFieldCell>
</textField>
<button id="cGj-g9-2Dm">
<rect key="frame" x="337" y="24" width="157" height="18"/>
<rect key="frame" x="337" y="21" width="157" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Favorites" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="vC2-Ch-UPQ">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -554,7 +543,7 @@
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textView editable="NO" importsGraphics="NO" richText="NO" usesRuler="YES" usesFontPanel="YES" verticallyResizable="YES" spellingCorrection="YES" smartInsertDelete="YES" id="357">
<rect key="frame" x="0.0" y="0.0" width="398" height="406"/>
<rect key="frame" x="0.0" y="0.0" width="474" height="344"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>

Binary file not shown.

View file

@ -65,12 +65,6 @@
8D2E28891B0669F500AE62C8 /* com.generalarcade.flycut.xout.32.png in Resources */ = {isa = PBXBuildFile; fileRef = 8D2E28851B0669F500AE62C8 /* com.generalarcade.flycut.xout.32.png */; };
AABE497C09FF9CD000A6A239 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = AABE497B09FF9CD000A6A239 /* AppController.m */; };
AAFAC85F0A1BD9DD00DC6025 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AAFAC84A0A1BD9DD00DC6025 /* Carbon.framework */; };
DB46BEEB143466ED0025EA0E /* DBUserDefaults.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB46BEEA143466ED0025EA0E /* DBUserDefaults.framework */; };
DB46BEEF14346A7C0025EA0E /* DBUserDefaultsController.h in Headers */ = {isa = PBXBuildFile; fileRef = DB46BEED14346A7C0025EA0E /* DBUserDefaultsController.h */; };
DB46BEF014346A7C0025EA0E /* DBUserDefaultsController.m in Sources */ = {isa = PBXBuildFile; fileRef = DB46BEEE14346A7C0025EA0E /* DBUserDefaultsController.m */; };
DB46BEF114346B2F0025EA0E /* DBUserDefaults.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB46BEEA143466ED0025EA0E /* DBUserDefaults.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
DB46BEF314346C660025EA0E /* DBSyncPromptDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DB46BEF214346C660025EA0E /* DBSyncPromptDelegate.h */; };
DB46BEF514346C6D0025EA0E /* DBUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = DB46BEF414346C6D0025EA0E /* DBUserDefaults.h */; };
DBEB0C9C1442F2AE0080D24E /* NSWindow+ULIZoomEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = DBEB0C9A1442F2AE0080D24E /* NSWindow+ULIZoomEffect.h */; };
DBEB0C9D1442F2AE0080D24E /* NSWindow+ULIZoomEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = DBEB0C9B1442F2AE0080D24E /* NSWindow+ULIZoomEffect.m */; };
/* End PBXBuildFile section */
@ -100,7 +94,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
DB46BEF114346B2F0025EA0E /* DBUserDefaults.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -174,11 +167,6 @@
AABE497A09FF9CD000A6A239 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; };
AABE497B09FF9CD000A6A239 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; };
AAFAC84A0A1BD9DD00DC6025 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
DB46BEEA143466ED0025EA0E /* DBUserDefaults.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DBUserDefaults.framework; sourceTree = "<group>"; };
DB46BEED14346A7C0025EA0E /* DBUserDefaultsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DBUserDefaultsController.h; sourceTree = "<group>"; };
DB46BEEE14346A7C0025EA0E /* DBUserDefaultsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DBUserDefaultsController.m; sourceTree = "<group>"; };
DB46BEF214346C660025EA0E /* DBSyncPromptDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DBSyncPromptDelegate.h; path = ../DBUserDefaults.framework/Headers/DBSyncPromptDelegate.h; sourceTree = "<group>"; };
DB46BEF414346C6D0025EA0E /* DBUserDefaults.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DBUserDefaults.h; path = ../DBUserDefaults.framework/Headers/DBUserDefaults.h; sourceTree = "<group>"; };
DBEB0C9A1442F2AE0080D24E /* NSWindow+ULIZoomEffect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSWindow+ULIZoomEffect.h"; sourceTree = "<group>"; };
DBEB0C9B1442F2AE0080D24E /* NSWindow+ULIZoomEffect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSWindow+ULIZoomEffect.m"; sourceTree = "<group>"; };
/* End PBXFileReference section */
@ -190,7 +178,6 @@
files = (
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
AAFAC85F0A1BD9DD00DC6025 /* Carbon.framework in Frameworks */,
DB46BEEB143466ED0025EA0E /* DBUserDefaults.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -200,7 +187,6 @@
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
DB46BEEC14346A7C0025EA0E /* DBUserDefaultsController */,
AABE497A09FF9CD000A6A239 /* AppController.h */,
AABE497B09FF9CD000A6A239 /* AppController.m */,
7761C89B139BDF12000FB3AB /* ShortcutRecorder */,
@ -216,7 +202,6 @@
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
DB46BEEA143466ED0025EA0E /* DBUserDefaults.framework */,
AAFAC84A0A1BD9DD00DC6025 /* Carbon.framework */,
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
);
@ -379,17 +364,6 @@
path = SGHotKeysLib;
sourceTree = "<group>";
};
DB46BEEC14346A7C0025EA0E /* DBUserDefaultsController */ = {
isa = PBXGroup;
children = (
DB46BEED14346A7C0025EA0E /* DBUserDefaultsController.h */,
DB46BEEE14346A7C0025EA0E /* DBUserDefaultsController.m */,
DB46BEF214346C660025EA0E /* DBSyncPromptDelegate.h */,
DB46BEF414346C6D0025EA0E /* DBUserDefaults.h */,
);
path = DBUserDefaultsController;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@ -397,8 +371,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
DB46BEF314346C660025EA0E /* DBSyncPromptDelegate.h in Headers */,
DB46BEF514346C6D0025EA0E /* DBUserDefaults.h in Headers */,
77A4F3AD139BD72300F39666 /* SGHotKey.h in Headers */,
77A4F3AF139BD72300F39666 /* SGHotKeyCenter.h in Headers */,
77A4F3B1139BD72300F39666 /* SGKeyCodeTranslator.h in Headers */,
@ -417,7 +389,6 @@
7761C8B0139BDF12000FB3AB /* SRRecorderControl.h in Headers */,
7761C8B2139BDF12000FB3AB /* SRValidator.h in Headers */,
773ABFB113E9AA1A00AE3969 /* NSWindow+TrueCenter.h in Headers */,
DB46BEEF14346A7C0025EA0E /* DBUserDefaultsController.h in Headers */,
DBEB0C9C1442F2AE0080D24E /* NSWindow+ULIZoomEffect.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -554,7 +525,6 @@
7761C8B1139BDF12000FB3AB /* SRRecorderControl.m in Sources */,
7761C8B3139BDF12000FB3AB /* SRValidator.m in Sources */,
773ABFB213E9AA1A00AE3969 /* NSWindow+TrueCenter.m in Sources */,
DB46BEF014346A7C0025EA0E /* DBUserDefaultsController.m in Sources */,
DBEB0C9D1442F2AE0080D24E /* NSWindow+ULIZoomEffect.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

View file

@ -26,7 +26,6 @@
#import "JumpcutStore.h"
#import "JumpcutClipping.h"
#import "DBUserDefaults.h"
@implementation JumpcutStore
@ -70,7 +69,7 @@
}
-(void) addClipping:(JumpcutClipping*) clipping{
if ([jcList containsObject:clipping] && [[[DBUserDefaults standardUserDefaults] valueForKey:@"removeDuplicates"] boolValue]) {
if ([jcList containsObject:clipping] && [[[NSUserDefaults standardUserDefaults] valueForKey:@"removeDuplicates"] boolValue]) {
[jcList removeObject:clipping];
}
// Push it onto our recent clippings stack

View file

@ -15,7 +15,6 @@
#import "SRRecorderControl.h"
#import "SRKeyCodeTransformer.h"
#import "SRValidator.h"
#import "DBUserDefaultsController.h"
@interface SRRecorderCell (Private)
- (void)_privateInit;
@ -1186,7 +1185,7 @@
if (defaultsKey != nil && [defaultsKey length])
{
id values = [[DBUserDefaultsController sharedUserDefaultsController] values];
id values = [[NSUserDefaultsController sharedUserDefaultsController] values];
NSDictionary *defaultsValue = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithShort: keyCombo.code], @"keyCode",
@ -1213,7 +1212,7 @@
if (defaultsKey != nil && [defaultsKey length])
{
id values = [[DBUserDefaultsController sharedUserDefaultsController] values];
id values = [[NSUserDefaultsController sharedUserDefaultsController] values];
NSDictionary *savedCombo = [values valueForKey: [self _defaultsKeyForAutosaveName: defaultsKey]];
NSInteger keyCode = [[savedCombo valueForKey: @"keyCode"] shortValue];

View file

@ -9,7 +9,6 @@
// at <http://jumpcut.sourceforge.net/> for details.
#import "BezelWindow.h"
#import "DBUserDefaults.h"
static const float lineHeight = 16;
@ -184,7 +183,7 @@ static const float lineHeight = 16;
-(NSColor*) backgroundColor
{
return [self sizedBezelBackgroundWithRadius:25.0 withAlpha:[[DBUserDefaults standardUserDefaults] floatForKey:@"bezelAlpha"]];
return [self sizedBezelBackgroundWithRadius:25.0 withAlpha:[[NSUserDefaults standardUserDefaults] floatForKey:@"bezelAlpha"]];
}
- (void) setAlpha:(float)newValue