Flycut/ShortcutRecorder/SRRecorderCell.h
2011-06-10 00:30:07 +08:00

138 lines
3.3 KiB
Objective-C

//
// SRRecorderCell.h
// ShortcutRecorder
//
// Copyright 2006-2007 Contributors. All rights reserved.
//
// License: BSD
//
// Contributors:
// David Dauer
// Jesper
// Jamie Kirkpatrick
#import <Cocoa/Cocoa.h>
#import "SRCommon.h"
#define SRMinWidth 50
#define SRMaxHeight 22
#define SRTransitionFPS 30.0f
#define SRTransitionDuration 0.35f
//#define SRTransitionDuration 2.35
#define SRTransitionFrames (SRTransitionFPS*SRTransitionDuration)
#define SRAnimationAxisIsY YES
#define ShortcutRecorderNewStyleDrawing
#define SRAnimationOffsetRect(X,Y) (SRAnimationAxisIsY ? NSOffsetRect(X,0.0f,-NSHeight(Y)) : NSOffsetRect(X,NSWidth(Y),0.0f))
@class SRRecorderControl, SRValidator;
enum SRRecorderStyle {
SRGradientBorderStyle = 0,
SRGreyStyle = 1
};
typedef enum SRRecorderStyle SRRecorderStyle;
@interface SRRecorderCell : NSActionCell <NSCoding>
{
NSGradient *recordingGradient;
NSString *autosaveName;
BOOL isRecording;
BOOL mouseInsideTrackingArea;
BOOL mouseDown;
SRRecorderStyle style;
BOOL isAnimating;
CGFloat transitionProgress;
BOOL isAnimatingNow;
BOOL isAnimatingTowardsRecording;
BOOL comboJustChanged;
NSTrackingRectTag removeTrackingRectTag;
NSTrackingRectTag snapbackTrackingRectTag;
KeyCombo keyCombo;
BOOL hasKeyChars;
NSString *keyChars;
NSString *keyCharsIgnoringModifiers;
NSUInteger allowedFlags;
NSUInteger requiredFlags;
NSUInteger recordingFlags;
BOOL allowsKeyOnly;
BOOL escapeKeysRecord;
NSSet *cancelCharacterSet;
SRValidator *validator;
IBOutlet id delegate;
BOOL globalHotKeys;
void *hotKeyModeToken;
}
- (void)resetTrackingRects;
#pragma mark *** Aesthetics ***
+ (BOOL)styleSupportsAnimation:(SRRecorderStyle)style;
- (BOOL)animates;
- (void)setAnimates:(BOOL)an;
- (SRRecorderStyle)style;
- (void)setStyle:(SRRecorderStyle)nStyle;
#pragma mark *** Delegate ***
- (id)delegate;
- (void)setDelegate:(id)aDelegate;
#pragma mark *** Responder Control ***
- (BOOL)becomeFirstResponder;
- (BOOL)resignFirstResponder;
#pragma mark *** Key Combination Control ***
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent;
- (void)flagsChanged:(NSEvent *)theEvent;
- (NSUInteger)allowedFlags;
- (void)setAllowedFlags:(NSUInteger)flags;
- (NSUInteger)requiredFlags;
- (void)setRequiredFlags:(NSUInteger)flags;
- (BOOL)allowsKeyOnly;
- (void)setAllowsKeyOnly:(BOOL)nAllowsKeyOnly escapeKeysRecord:(BOOL)nEscapeKeysRecord;
- (BOOL)escapeKeysRecord;
- (BOOL)canCaptureGlobalHotKeys;
- (void)setCanCaptureGlobalHotKeys:(BOOL)inState;
- (KeyCombo)keyCombo;
- (void)setKeyCombo:(KeyCombo)aKeyCombo;
#pragma mark *** Autosave Control ***
- (NSString *)autosaveName;
- (void)setAutosaveName:(NSString *)aName;
// Returns the displayed key combination if set
- (NSString *)keyComboString;
- (NSString *)keyChars;
- (NSString *)keyCharsIgnoringModifiers;
@end
// Delegate Methods
@interface NSObject (SRRecorderCellDelegate)
- (BOOL)shortcutRecorderCell:(SRRecorderCell *)aRecorderCell isKeyCode:(NSInteger)keyCode andFlagsTaken:(NSUInteger)flags reason:(NSString **)aReason;
- (void)shortcutRecorderCell:(SRRecorderCell *)aRecorderCell keyComboDidChange:(KeyCombo)newCombo;
@end