X-Git-Url: http://git.ithinksw.org/ITKit.git/blobdiff_plain/78553c25bacdbd190fd14591420cf4f7fa578617..e873f11d0bb398c460817aa1dd4061572f5a1d09:/Showcase/Controller.m diff --git a/Showcase/Controller.m b/Showcase/Controller.m index 8998a38..80fc5f1 100755 --- a/Showcase/Controller.m +++ b/Showcase/Controller.m @@ -1,6 +1,12 @@ #import "Controller.h" #import "ITTransientStatusWindow.h" #import "ITTextField.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 @@ -8,6 +14,7 @@ #define SW_BORDER 32.0 #define SW_IMAGE @"Library" + @interface Controller (ITStatusItemSupport) - (void)createStatusItem; - (void)removeStatusItem; @@ -20,8 +27,14 @@ { [self createStatusItem]; [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]; + } /*************************************************************************/ @@ -186,6 +199,8 @@ textWidth, textHeight); textField = [[[ITTextField alloc] initWithFrame:textRect] autorelease]; + [textField setEditable:NO]; + [textField setSelectable:NO]; [textField setBordered:NO]; [textField setDrawsBackground:NO]; [textField setFont:[NSFont fontWithName:@"Lucida Grande Bold" size:18]]; @@ -197,61 +212,110 @@ [[statusWindow contentView] setNeedsDisplay:YES]; } -/* -- (IBAction)foo:(id)sender +- (IBAction)toggleStatusWindow:(id)sender { + if ( ([statusWindow visibilityState] == ITWindowHiddenState) || + ([statusWindow visibilityState] == ITWindowVanishingState) ) { + [[statusWindow contentView] setNeedsDisplay:YES]; + [statusWindow appear:self]; + } else { + [statusWindow vanish:self]; + } +} - maxLineHeight = ( ( maxLineHeight > [cdImage size].height ) ? maxLineHeight : [cdImage size].height ); +- (IBAction)changeWindowSetting:(id)sender +{ + 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 ) { - totalWidth = ( ITTSWPADDING + [cdImage size].width + ITTSWSPACING + maxLineWidth + ITTSWPADDING ); - totalHeight = ( ITTSWPADDING + maxLineHeight + ITTSWPADDING ); + 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]]; - totalWidth = ( ( totalWidth > ITTSWMINW ) ? totalWidth : ITTSWMINW ); + } +} - [statusWindow setFrame:NSMakeRect(72.0, 72.0, totalWidth, totalHeight) - display:YES]; +/*************************************************************************/ +#pragma mark - +#pragma mark ITTabView SUPPORT +/*************************************************************************/ - textField = [[[ITTextField alloc] initWithFrame: - NSMakeRect((24.0 + [cdImage size].width + 32.0), 24.0, maxLineWidth, maxLineHeight)] autorelease]; - [[statusWindow contentView] addSubview:textField]; - [textField setBordered:NO]; - [textField setDrawsBackground:NO]; - [textField setFont:[NSFont fontWithName:@"Lucida Grande Bold" size:18]]; - [textField setTextColor:[NSColor whiteColor]]; - [textField setCastsShadow:YES]; - [textField setStringValue:text]; +- (IBAction)toggleTabDragging:(id)sender +{ + if ([sender state] == NSOnState) { + [tabView setAllowsDragging:YES]; + } else { + [tabView setAllowsDragging:NO]; + } +} +- (IBAction)toggleCommandDragging:(id)sender +{ + if ([sender state] == NSOnState) { + [tabView setRequiredModifiers:NSCommandKeyMask]; + } else { + [tabView setRequiredModifiers:0]; + } +} - [[statusWindow contentView] lockFocus]; - [cdImage compositeToPoint:NSMakePoint(ITTSWPADDING, ( ITTSWPADDING + ((maxLineHeight - [cdImage size].height) / ITTSWPADDING)) ) - operation:NSCompositeSourceOver]; - [[statusWindow contentView] unlockFocus]; +- (IBAction)toggleControlDragging:(id)sender +{ } -*/ -- (IBAction)showStatusWindow:(id)sender +- (IBAction)toggleOptionDragging:(id)sender { -// [[statusWindow contentView] setNeedsDisplay:YES]; - [statusWindow setFrame:NSMakeRect( (0.0 - NSWidth([statusWindow frame])), - SW_BORDER, - NSWidth([statusWindow frame]), - NSHeight([statusWindow frame]) ) - display:YES]; - [statusWindow orderFront:self]; - [statusWindow setFrame:NSMakeRect( SW_BORDER, - SW_BORDER, - NSWidth([statusWindow frame]), - NSHeight([statusWindow frame]) ) - display:YES - animate:YES]; } -- (IBAction)hideStatusWindow:(id)sender +- (IBAction)toggleShiftDragging:(id)sender { - [statusWindow orderOut:self]; } + /*************************************************************************/ #pragma mark - #pragma mark NSWindow DELEGATE METHODS