follows: ITTransientStatusWindow is now feature complete except for positioning. All
currently planned effects work, and you can use the Showcase to play with them.
- Renamed the visibility state constants, removing the string "StatusWindow" from
them, since window visibility is a protocol not limited to ITTSW.
- Implemented ITSlideHorizontallyWindowEffect and ITSlideVerticallyWindowEffect.
This completes the 1.0 planned suite.
- Implemented a heuristic for effects to be able to release themselves when idle,
so that an effect can finish a transition smoothly, and release gracefully,
instead of crashing.
- Made all effects return the window to normal after vanish, so that they don't
have to worry about doing so when they appear. Some do anyway.
- Implemented timed exit, and the various logic to make the two exit modes work
seamlessly.
- Modified the Showcase Controller and nib to allow use and testing of all ITTSW's
features. Unavailable features are disabled. Removed the switch/case block and
used an if/else block instead. Switch/case sucks. Hard.
- Decided against a separate cancelVanishEffect. I like our way better, and I
think it's a better UE than Apple's, so... fuck Apple. Fuck them in their stupid
asses.
REMAINING:
----------
- Positioning
- MT Status Window Controller.
Should be able to complete at least one of those tomorrow. Positioning comes first.
- (void)performAppear
{
[_window orderFront:self];
- [self setWindowVisibility:ITTransientStatusWindowVisibleState];
+ [self setWindowVisibility:ITWindowVisibleState];
}
- (void)cancelAppear
- (void)performVanish
{
[_window orderOut:self];
- [self setWindowVisibility:ITTransientStatusWindowHiddenState];
+ [self setWindowVisibility:ITWindowHiddenState];
}
- (void)cancelVanish
- (void)performAppear
{
- [self setWindowVisibility:ITTransientStatusWindowAppearingState];
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowAppearingState];
[self performAppearFromProgress:0.0 effectTime:_effectTime];
}
{
[_effectTimer invalidate];
_effectTimer = nil;
- [self setWindowVisibility:ITTransientStatusWindowVisibleState];
+ [self setWindowVisibility:ITWindowVisibleState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelAppear
{
- [self setWindowVisibility:ITTransientStatusWindowVanishingState];
+ [self setWindowVisibility:ITWindowVanishingState];
[_effectTimer invalidate];
_effectTimer = nil;
- (void)performVanish
{
- [self setWindowVisibility:ITTransientStatusWindowVanishingState];
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowVanishingState];
[self performVanishFromProgress:1.0 effectTime:_effectTime];
}
_effectTimer = nil;
[_window orderOut:self];
[_window setAlphaValue:1.0];
- [self setWindowVisibility:ITTransientStatusWindowHiddenState];
+ [self setWindowVisibility:ITWindowHiddenState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelVanish
{
- [self setWindowVisibility:ITTransientStatusWindowVanishingState];
+ [self setWindowVisibility:ITWindowVanishingState];
[_effectTimer invalidate];
_effectTimer = nil;
- (void)performAppear
{
- [self setWindowVisibility:ITTransientStatusWindowAppearingState];
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowAppearingState];
[self performAppearFromProgress:0.0 effectTime:_effectTime];
}
{
[_effectTimer invalidate];
_effectTimer = nil;
- [self setWindowVisibility:ITTransientStatusWindowVisibleState];
+ [self setWindowVisibility:ITWindowVisibleState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelAppear
{
- [self setWindowVisibility:ITTransientStatusWindowVanishingState];
+ [self setWindowVisibility:ITWindowVanishingState];
[_effectTimer invalidate];
_effectTimer = nil;
- (void)performVanish
{
- [self setWindowVisibility:ITTransientStatusWindowVanishingState];
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowVanishingState];
[self performVanishFromProgress:1.0 effectTime:_effectTime];
}
_effectTimer = nil;
[_window orderOut:self];
[_window setAlphaValue:1.0];
- [self setWindowVisibility:ITTransientStatusWindowHiddenState];
+ [self setPivot:0.0];
+ [self setWindowVisibility:ITWindowHiddenState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelVanish
{
- [self setWindowVisibility:ITTransientStatusWindowAppearingState];
+ [self setWindowVisibility:ITWindowAppearingState];
[_effectTimer invalidate];
_effectTimer = nil;
#import "ITSlideHorizontallyWindowEffect.h"
+#import "ITCoreGraphicsHacks.h"
+#import "ITTransientStatusWindow.h"
+
+
+@interface ITSlideHorizontallyWindowEffect (Private)
+- (void)performAppearFromProgress:(float)progress effectTime:(float)time;
+- (void)appearStep;
+- (void)appearFinish;
+- (void)performVanishFromProgress:(float)progress effectTime:(float)time;
+- (void)vanishStep;
+- (void)vanishFinish;
+- (void)setSlide:(float)distance;
+@end
@implementation ITSlideHorizontallyWindowEffect
+/*************************************************************************/
+#pragma mark -
+#pragma mark APPEAR METHODS
+/*************************************************************************/
+
- (void)performAppear
{
- NSLog(@"ITSlideHorizontallyWindowEffect does not implement performAppear.");
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowAppearingState];
+ [self performAppearFromProgress:0.0 effectTime:_effectTime];
}
-- (void)performVanish
+- (void)performAppearFromProgress:(float)progress effectTime:(float)time
{
- NSLog(@"ITSlideHorizontallyWindowEffect does not implement performVanish.");
+ [_window setEffectProgress:progress];
+ _effectSpeed = (1.0 / (EFFECT_FPS * time));
+
+ if ( progress == 0.0 ) {
+ [_window setAlphaValue:0.0];
+ }
+
+ [_window orderFront:self];
+ _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS)
+ target:self
+ selector:@selector(appearStep)
+ userInfo:nil
+ repeats:YES];
+}
+
+- (void)appearStep
+{
+ float interSlide = 0.0;
+ [_window setEffectProgress:([_window effectProgress] + _effectSpeed)];
+ [_window setEffectProgress:( ([_window effectProgress] < 1.0) ? [_window effectProgress] : 1.0)];
+ interSlide = (( sin(([_window effectProgress] * pi) - (pi / 2)) + 1 ) / 2);
+ [self setSlide:( [_window frame].size.width - (interSlide * [_window frame].size.width) )];
+ [_window setAlphaValue:interSlide];
+
+ if ( [_window effectProgress] >= 1.0 ) {
+ [self appearFinish];
+ }
+}
+
+- (void)appearFinish
+{
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+ [self setWindowVisibility:ITWindowVisibleState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelAppear
{
- NSLog(@"ITSlideHorizontallyWindowEffect does not implement cancelAppear.");
+ [self setWindowVisibility:ITWindowVanishingState];
+
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+
+ [self performVanishFromProgress:[_window effectProgress] effectTime:(_effectTime / 4.0)];
+}
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark VANISH METHODS
+/*************************************************************************/
+
+- (void)performVanish
+{
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowVanishingState];
+ [self performVanishFromProgress:1.0 effectTime:_effectTime];
+}
+
+- (void)performVanishFromProgress:(float)progress effectTime:(float)time
+{
+ [_window setEffectProgress:progress];
+ _effectSpeed = (1.0 / (EFFECT_FPS * time));
+ if ( progress == 1.0 ) {
+ [_window setAlphaValue:1.0];
+ }
+
+ [_window orderFront:self];
+ _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS)
+ target:self
+ selector:@selector(vanishStep)
+ userInfo:nil
+ repeats:YES];
+}
+
+- (void)vanishStep
+{
+ float interSlide = 1.0;
+ [_window setEffectProgress:([_window effectProgress] - _effectSpeed)];
+ [_window setEffectProgress:( ([_window effectProgress] > 0.0) ? [_window effectProgress] : 0.0)];
+ interSlide = (( sin(([_window effectProgress] * pi) - (pi / 2)) + 1 ) / 2);
+ [self setSlide:( [_window frame].size.width - (interSlide * [_window frame].size.width) )];
+ [_window setAlphaValue:interSlide];
+
+ if ( [_window effectProgress] <= 0.0 ) {
+ [self vanishFinish];
+ }
+}
+
+- (void)vanishFinish
+{
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+ [_window orderOut:self];
+ [_window setAlphaValue:1.0];
+ [self setSlide:0.0];
+ [self setWindowVisibility:ITWindowHiddenState];
+
+ __idle =YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelVanish
{
- NSLog(@"ITSlideHorizontallyWindowEffect does not implement cancelVanish.");
+ [self setWindowVisibility:ITWindowAppearingState];
+
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+
+ [self performAppearFromProgress:[_window effectProgress] effectTime:(_effectTime / 4.0)];
}
+- (void)setSlide:(float)distance
+{
+ CGAffineTransform transform = CGAffineTransformMakeTranslation((distance - 32.0),
+ -( [[_window screen] frame].size.height - ( [_window frame].size.height + 32.0) ) );
+ CGSSetWindowTransform([NSApp contextID],
+ (CGSWindowID)[_window windowNumber],
+ transform);
+}
@end
#import "ITSlideVerticallyWindowEffect.h"
+#import "ITCoreGraphicsHacks.h"
+#import "ITTransientStatusWindow.h"
+
+
+@interface ITSlideVerticallyWindowEffect (Private)
+- (void)performAppearFromProgress:(float)progress effectTime:(float)time;
+- (void)appearStep;
+- (void)appearFinish;
+- (void)performVanishFromProgress:(float)progress effectTime:(float)time;
+- (void)vanishStep;
+- (void)vanishFinish;
+- (void)setSlide:(float)distance;
+@end
@implementation ITSlideVerticallyWindowEffect
+/*************************************************************************/
+#pragma mark -
+#pragma mark APPEAR METHODS
+/*************************************************************************/
+
- (void)performAppear
{
- NSLog(@"ITSlideVerticallyWindowEffect does not implement performAppear.");
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowAppearingState];
+ [self performAppearFromProgress:0.0 effectTime:_effectTime];
}
-- (void)performVanish
+- (void)performAppearFromProgress:(float)progress effectTime:(float)time
+{
+ [_window setEffectProgress:progress];
+ _effectSpeed = (1.0 / (EFFECT_FPS * time));
+
+ if ( progress == 0.0 ) {
+ [_window setAlphaValue:0.0];
+ }
+
+ [_window orderFront:self];
+ _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS)
+ target:self
+ selector:@selector(appearStep)
+ userInfo:nil
+ repeats:YES];
+}
+
+- (void)appearStep
{
- NSLog(@"ITSlideVerticallyWindowEffect does not implement performVanish.");
+ float interSlide = 0.0;
+ [_window setEffectProgress:([_window effectProgress] + _effectSpeed)];
+ [_window setEffectProgress:( ([_window effectProgress] < 1.0) ? [_window effectProgress] : 1.0)];
+ interSlide = (( sin(([_window effectProgress] * pi) - (pi / 2)) + 1 ) / 2);
+ [self setSlide:(interSlide * [_window frame].size.height)];
+ [_window setAlphaValue:interSlide];
+
+ if ( [_window effectProgress] >= 1.0 ) {
+ [self appearFinish];
+ }
+}
+
+- (void)appearFinish
+{
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+ [self setWindowVisibility:ITWindowVisibleState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
- (void)cancelAppear
{
- NSLog(@"ITSlideVerticallyWindowEffect does not implement cancelAppear.");
+ [self setWindowVisibility:ITWindowVanishingState];
+
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+
+ [self performVanishFromProgress:[_window effectProgress] effectTime:(_effectTime / 4.0)];
}
-- (void)cancelVanish
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark VANISH METHODS
+/*************************************************************************/
+
+- (void)performVanish
+{
+ __idle = NO;
+
+ [self setWindowVisibility:ITWindowVanishingState];
+ [self performVanishFromProgress:1.0 effectTime:_effectTime];
+}
+
+- (void)performVanishFromProgress:(float)progress effectTime:(float)time
+{
+ [_window setEffectProgress:progress];
+ _effectSpeed = (1.0 / (EFFECT_FPS * time));
+ if ( progress == 1.0 ) {
+ [_window setAlphaValue:1.0];
+ }
+
+ [_window orderFront:self];
+ _effectTimer = [NSTimer scheduledTimerWithTimeInterval:(1.0 / EFFECT_FPS)
+ target:self
+ selector:@selector(vanishStep)
+ userInfo:nil
+ repeats:YES];
+}
+
+- (void)vanishStep
+{
+ float interSlide = 1.0;
+ [_window setEffectProgress:([_window effectProgress] - _effectSpeed)];
+ [_window setEffectProgress:( ([_window effectProgress] > 0.0) ? [_window effectProgress] : 0.0)];
+ interSlide = (( sin(([_window effectProgress] * pi) - (pi / 2)) + 1 ) / 2);
+ [self setSlide:(interSlide * [_window frame].size.height)];
+ [_window setAlphaValue:interSlide];
+
+ if ( [_window effectProgress] <= 0.0 ) {
+ [self vanishFinish];
+ }
+}
+
+- (void)vanishFinish
{
- NSLog(@"ITSlideVerticallyWindowEffect does not implement cancelVanish.");
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+ [_window orderOut:self];
+ [_window setAlphaValue:1.0];
+ [self setSlide:[_window frame].size.height];
+ [self setWindowVisibility:ITWindowHiddenState];
+
+ __idle = YES;
+
+ if ( __shouldReleaseWhenIdle ) {
+ [self release];
+ }
}
+- (void)cancelVanish
+{
+ [self setWindowVisibility:ITWindowAppearingState];
+
+ [_effectTimer invalidate];
+ _effectTimer = nil;
+
+ [self performAppearFromProgress:[_window effectProgress] effectTime:(_effectTime / 4.0)];
+}
+- (void)setSlide:(float)distance
+{
+ CGAffineTransform transform = CGAffineTransformMakeTranslation( -32.0,
+ -( [[_window screen] frame].size.height - ( distance + 32.0) ) );
+
+ CGSSetWindowTransform([NSApp contextID],
+ (CGSWindowID)[_window windowNumber],
+ transform);
+}
@end
BOOL _reallyIgnoresEvents;
- NSTimer *_delayTimer;
+ NSTimer *_exitTimer;
// NSView *_contentSubView;
}
backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType;
- (void)rebuildWindow;
- (void)startVanishTimer;
+- (void)stopVanishTimer;
@end
backing:NSBackingStoreBuffered
defer:NO] ) ) {
- _visibilityState = ITTransientStatusWindowHiddenState;
+ _visibilityState = ITWindowHiddenState;
_exitMode = exitMode;
_exitDelay = DEFAULT_EXIT_DELAY;
_backgroundType = backgroundType;
_entryEffect = nil;
_exitEffect = nil;
_reallyIgnoresEvents = YES;
- _delayTimer = nil;
+ _exitTimer = nil;
// if ( _backgroundType == ITTransientStatusWindowRounded ) {
// _contentSubView = contentView;
- (IBAction)appear:(id)sender
{
- if ( _visibilityState == ITTransientStatusWindowHiddenState ) {
+ if ( _visibilityState == ITWindowHiddenState ) {
// Window is hidden. Appear as normal, and start the timer.
[_entryEffect performAppear];
- } else if ( _visibilityState == ITTransientStatusWindowVisibleState ) {
+ } else if ( _visibilityState == ITWindowVisibleState ) {
// Window is completely visible. Simply reset the timer.
[self startVanishTimer];
- } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) {
+ } else if ( _visibilityState == ITWindowAppearingState ) {
// Window is on its way in. Do nothing.
- } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) {
+ } else if ( _visibilityState == ITWindowVanishingState ) {
// Window is on its way out. Cancel the vanish.
[_exitEffect cancelVanish];
}
- (IBAction)vanish:(id)sender
{
- if ( _visibilityState == ITTransientStatusWindowVisibleState ) {
+ if ( _visibilityState == ITWindowVisibleState ) {
// Window is totally visible. Perform exit effect.
[_exitEffect performVanish];
- } else if ( _visibilityState == ITTransientStatusWindowHiddenState ) {
+ } else if ( _visibilityState == ITWindowHiddenState ) {
// Window is hidden. Do nothing.
- } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) {
+ } else if ( _visibilityState == ITWindowAppearingState ) {
// Window is on its way in. Cancel appear.
[_entryEffect cancelAppear];
- } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) {
+ } else if ( _visibilityState == ITWindowVanishingState ) {
// Window is on its way out. Do nothing.
}
}
{
_visibilityState = newState;
- if ( _visibilityState == ITTransientStatusWindowVisibleState ) {
+ if ( _visibilityState == ITWindowVisibleState ) {
[self startVanishTimer];
}
}
- (void)setExitMode:(ITTransientStatusWindowExitMode)newMode
{
_exitMode = newMode;
+
+ if ( _visibilityState == ITWindowVisibleState ) {
+ if ( _exitMode == ITTransientStatusWindowExitOnCommand ) {
+ [self stopVanishTimer];
+ } else if ( _exitMode == ITTransientStatusWindowExitAfterDelay ) {
+ [self startVanishTimer];
+ }
+ }
}
- (float)exitDelay
- (void)setEntryEffect:(ITWindowEffect *)newEffect
{
- [_entryEffect autorelease];
+ [_entryEffect releaseWhenIdle];
_entryEffect = [newEffect retain];
}
- (void)setExitEffect:(ITWindowEffect *)newEffect
{
- [_exitEffect autorelease];
+ [_exitEffect releaseWhenIdle];
_exitEffect = [newEffect retain];
}
- (void)startVanishTimer
{
- // start timer, if appropriate
- // if timer already exists, restart it.
+ if ( _exitMode == ITTransientStatusWindowExitAfterDelay) {
+ [self stopVanishTimer];
+ _exitTimer = [NSTimer scheduledTimerWithTimeInterval:_exitDelay
+ target:self
+ selector:@selector(doDelayedExit)
+ userInfo:nil
+ repeats:NO];
+ }
+}
+
+- (void)doDelayedExit
+{
+ [self vanish:self];
+ _exitTimer = nil;
+}
+
+- (void)stopVanishTimer
+{
+ if ( _exitTimer ) {
+ [_exitTimer invalidate];
+ _exitTimer = nil;
+ }
}
@end
typedef enum {
- ITTransientStatusWindowHiddenState,
- ITTransientStatusWindowAppearingState,
- ITTransientStatusWindowVisibleState,
- ITTransientStatusWindowVanishingState
+ ITWindowHiddenState,
+ ITWindowAppearingState,
+ ITWindowVisibleState,
+ ITWindowVanishingState
} ITWindowVisibilityState;
ITVerticalWindowPosition _verticalPosition;
ITHorizontalWindowPosition _horizontalPosition;
NSTimer *_effectTimer;
+ BOOL __idle;
+ BOOL __shouldReleaseWhenIdle;
}
// Designated initializer
- (float)effectTime;
- (void)setEffectTime:(float)newTime;
+- (void)releaseWhenIdle;
+
@end
{
if ( (self = [super init]) ) {
- _window = [window retain];
- _effectTime = DEFAULT_EFFECT_TIME;
- _effectTimer = nil;
+ _window = [window retain];
+ _effectTime = DEFAULT_EFFECT_TIME;
+ _effectTimer = nil;
+ __shouldReleaseWhenIdle = NO;
+ __idle = YES;
if ( [window conformsToProtocol:@protocol(ITWindowPositioning)] ) {
// Casts so the compiler won't gripe
NSLog(@"ITWindowEffect does not implement cancelVanish.");
}
+- (void)releaseWhenIdle;
+{
+ if ( __idle ) {
+ [self release];
+ } else {
+ __shouldReleaseWhenIdle = YES;
+ }
+}
+
- (void)dealloc
{
[_window release];
IBOutlet NSPopUpButton *swBackgroundTypePopup;
IBOutlet NSPopUpButton *swDefinedPositionPopup;
IBOutlet NSTextField *swVanishDelay;
+ IBOutlet NSSlider *swSpeedSlider;
}
// ITStatusItem Support
#import "Controller.h"
#import "ITTransientStatusWindow.h"
#import "ITTextField.h"
-#import "ITPivotWindowEffect.h"
-#import "ITDissolveWindowEffect.h"
#import "ITCutWindowEffect.h"
+#import "ITDissolveWindowEffect.h"
+#import "ITSlideHorizontallyWindowEffect.h"
+#import "ITSlideVerticallyWindowEffect.h"
+#import "ITPivotWindowEffect.h"
+
#define SW_PAD 24.0
#define SW_SPACE 24.0
#define SW_BORDER 32.0
#define SW_IMAGE @"Library"
+
@interface Controller (ITStatusItemSupport)
- (void)createStatusItem;
- (void)removeStatusItem;
[testTextField setCastsShadow:YES];
[tabView setAllowsDragging:YES];
statusWindow = [ITTransientStatusWindow sharedWindow];
+ [statusWindow setEntryEffect:[[ITCutWindowEffect alloc] initWithWindow:statusWindow]];
+ [statusWindow setExitEffect:[[ITDissolveWindowEffect alloc] initWithWindow:statusWindow]];
+ [[statusWindow entryEffect] setEffectTime:[swSpeedSlider floatValue]];
+ [[statusWindow exitEffect] setEffectTime:[swSpeedSlider floatValue]];
// [tabView setAllowsDragging:YES];
+
}
/*************************************************************************/
[[statusWindow contentView] addSubview:textField];
[[statusWindow contentView] setNeedsDisplay:YES];
-
-// [statusWindow setEntryEffect:[[ITPivotWindowEffect alloc] initWithWindow:statusWindow]];
-// [statusWindow setExitEffect:[[ITPivotWindowEffect alloc] initWithWindow:statusWindow]];
- [statusWindow setEntryEffect:[[ITCutWindowEffect alloc] initWithWindow:statusWindow]];
- [statusWindow setExitEffect: [[ITDissolveWindowEffect alloc] initWithWindow:statusWindow]];
}
- (IBAction)toggleStatusWindow:(id)sender
{
- if ( ([statusWindow visibilityState] == ITTransientStatusWindowHiddenState) ||
- ([statusWindow visibilityState] == ITTransientStatusWindowVanishingState) ) {
+ if ( ([statusWindow visibilityState] == ITWindowHiddenState) ||
+ ([statusWindow visibilityState] == ITWindowVanishingState) ) {
[[statusWindow contentView] setNeedsDisplay:YES];
[statusWindow appear:self];
} else {
- (IBAction)changeWindowSetting:(id)sender
{
- switch ( [sender tag] )
- {
- case 3010: // Not yet supported.
- break;
- case 3020: // Not yet supported.
- break;
- case 3030: // Change vanish delay
- [statusWindow setExitDelay:[sender floatValue]];
- break;
- case 3040: // Change vertical position
- [statusWindow setVerticalPosition:[sender indexOfSelectedItem]];
- break;
- case 3050: // Change horizontal position
- [statusWindow setHorizontalPosition:[sender indexOfSelectedItem]];
- break;
- case 3060: // Change effect speed
- [[statusWindow entryEffect] setEffectTime:[sender floatValue]];
- [[statusWindow exitEffect] setEffectTime:[sender floatValue]];
- break;
- case 3070: // Change entry effect
- break;
- case 3080: // Change exit effect
- break;
+ if ( [sender tag] == 3010 ) {
+
+ if ( [sender indexOfSelectedItem] == 0) {
+ [statusWindow setExitMode:ITTransientStatusWindowExitAfterDelay];
+ } else if ( [sender indexOfSelectedItem] == 1) {
+ [statusWindow setExitMode:ITTransientStatusWindowExitOnCommand];
+ }
+
+ } else if ( [sender tag] == 3020 ) {
+ // Not yet supported
+ } else if ( [sender tag] == 3030 ) {
+ [statusWindow setExitDelay:[sender floatValue]];
+ } else if ( [sender tag] == 3040 ) {
+ [statusWindow setVerticalPosition:[sender indexOfSelectedItem]];
+ } else if ( [sender tag] == 3050 ) {
+ [statusWindow setHorizontalPosition:[sender indexOfSelectedItem]];
+ } else if ( [sender tag] == 3060 ) {
+ [[statusWindow entryEffect] setEffectTime:[sender floatValue]];
+ [[statusWindow exitEffect] setEffectTime:[sender floatValue]];
+ } else if ( [sender tag] == 3070 ) {
+
+ if ( [sender indexOfSelectedItem] == 0 ) {
+ [statusWindow setEntryEffect:[[[ITCutWindowEffect alloc] initWithWindow:statusWindow] autorelease]];
+ } else if ( [sender indexOfSelectedItem] == 1 ) {
+ [statusWindow setEntryEffect:[[[ITDissolveWindowEffect alloc] initWithWindow:statusWindow] autorelease]];
+ } else if ( [sender indexOfSelectedItem] == 2 ) {
+ [statusWindow setEntryEffect:[[[ITSlideVerticallyWindowEffect alloc] initWithWindow:statusWindow] autorelease]];
+ } else if ( [sender indexOfSelectedItem] == 3 ) {
+ [statusWindow setEntryEffect:[[[ITSlideHorizontallyWindowEffect alloc] initWithWindow:statusWindow] autorelease]];
+ } else if ( [sender indexOfSelectedItem] == 4 ) {
+ [statusWindow setEntryEffect:[[[ITPivotWindowEffect alloc] initWithWindow:statusWindow] autorelease]];
+ }
+
+ [[statusWindow entryEffect] setEffectTime:[swSpeedSlider floatValue]];
+
+ } else if ( [sender tag] == 3080 ) {
+
+ if ( [sender indexOfSelectedItem] == 0 ) {
+ [statusWindow setExitEffect:[[ITCutWindowEffect alloc] initWithWindow:statusWindow]];
+ } else if ( [sender indexOfSelectedItem] == 1 ) {
+ [statusWindow setExitEffect:[[ITDissolveWindowEffect alloc] initWithWindow:statusWindow]];
+ } else if ( [sender indexOfSelectedItem] == 2 ) {
+ [statusWindow setExitEffect:[[ITSlideVerticallyWindowEffect alloc] initWithWindow:statusWindow]];
+ } else if ( [sender indexOfSelectedItem] == 3 ) {
+ [statusWindow setExitEffect:[[ITSlideHorizontallyWindowEffect alloc] initWithWindow:statusWindow]];
+ } else if ( [sender indexOfSelectedItem] == 4 ) {
+ [statusWindow setExitEffect:[[ITPivotWindowEffect alloc] initWithWindow:statusWindow]];
+ }
+
+ [[statusWindow exitEffect] setEffectTime:[swSpeedSlider floatValue]];
+
}
}
swBackgroundTypePopup = NSPopUpButton;
swDefinedPositionPopup = NSPopUpButton;
swSampleTextView = NSTextView;
+ swSpeedSlider = NSSlider;
swVanishDelay = NSTextField;
swVanishModePopup = NSPopUpButton;
tabView = ITTabView;