e069896bd6adb1daed7a14cc491a553ff5f16f91
[vlc.git] / extras / MacOSX / VLC_app / Sources / VLCAppAdditions.h
1 /*****************************************************************************
2  * VLCAppAdditions.m: Helpful additions to NS* classes
3  *****************************************************************************
4  * Copyright (C) 2007 Pierre d'Herbemont
5  * Copyright (C) 2007 the VideoLAN team
6  * $Id$
7  *
8  * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
9  *          Felix Kühne <fkuehne at videolan dot org>
10  *          Jérôme Decoodt <djc at videolan dot org>
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
25  *****************************************************************************/
26
27 #import <Cocoa/Cocoa.h>
28
29 /*****************************************************************************
30  * NSIndexPath (VLCAppAddition)
31  *****************************************************************************/
32 @interface NSIndexPath (VLCAppAddition)
33 - (NSIndexPath *)indexPathByRemovingFirstIndex;
34 - (NSUInteger)lastIndex;
35 @end
36
37 /*****************************************************************************
38  * NSArray (VLCAppAddition)
39  *****************************************************************************/
40 @interface NSArray (VLCAppAddition)
41 - (id)objectAtIndexPath:(NSIndexPath *)path withNodeKeyPath:(NSString *)nodeKeyPath;
42 @end
43
44 /*****************************************************************************
45  * NSView (VLCAppAdditions)
46  *****************************************************************************/
47 @interface NSView (VLCAppAdditions)
48 - (void)moveSubviewsToVisible;
49 @end
50
51 /*****************************************************************************
52  * VLCOneSplitView
53  *
54  *  Missing functionality to a one-split view
55  *****************************************************************************/
56 @interface VLCOneSplitView : NSSplitView
57 {
58     BOOL fixedCursorDuringResize;
59 }
60 @property (assign) BOOL fixedCursorDuringResize;
61 - (float)sliderPosition;
62 - (void)setSliderPosition:(float)newPosition;
63 @end
64
65 /*****************************************************************************
66  * NSScreen (VLCAdditions)
67  *
68  *  Missing extension to NSScreen
69  *****************************************************************************/
70
71 @interface NSScreen (VLCAdditions)
72
73 + (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID;
74 - (BOOL)isMainScreen;
75 - (BOOL)isScreen: (NSScreen*)screen;
76 - (CGDirectDisplayID)displayID;
77 - (void)blackoutOtherScreens;
78 + (void)unblackoutScreens;
79 @end
80
81 /*****************************************************************************
82  * VLCWindow
83  *
84  *  Missing extension to NSWindow (Used only when needing setCanBecomeKeyWindow)
85  *****************************************************************************/
86
87 @interface VLCWindow : NSWindow
88 {
89     BOOL canBecomeKeyWindow;
90     BOOL isset_canBecomeKeyWindow;
91 }
92 - (void)setCanBecomeKeyWindow: (BOOL)canBecomeKey;
93 @end
94
95
96 /*****************************************************************************
97  * VLCImageCustomizedSlider
98  *
99  *  Slider personalized by backgroundImage and knobImage
100  *****************************************************************************/
101
102 @interface VLCImageCustomizedSlider : NSSlider
103 {
104     NSImage * knobImage;
105     NSImage * backgroundImage;
106 }
107 @property (retain) NSImage * knobImage;
108 @property (retain) NSImage * backgroundImage;
109
110 - (void)drawKnobInRect: (NSRect)knobRect;
111 - (void)drawBackgroundInRect: (NSRect)knobRect;
112
113 - (void)drawRect: (NSRect)rect;
114 @end
115
116 /*****************************************************************************
117  * NSImageView (VLCAppAdditions)
118  *
119  *  Make the image view move the window by mouse down by default
120  *****************************************************************************/
121
122 @interface NSImageView (VLCAppAdditions)
123 - (void)mouseDownCanMoveWindow;
124 @end