1from PyObjCTools.TestSupport import *
2from AppKit import *
3
4try:
5    unicode
6except NameError:
7    unicode = str
8
9try:
10    from Quartz.CoreGraphics import *
11    have_Quartz = 1
12except ImportError:
13    have_Quartz = 0
14
15class TestNSWindowHelper (NSObject):
16    def window_willUseFullScreenContentSize_(self, a, b): pass
17    def window_willUseFullScreenPresentationOptions_(self, a, b): pass
18    def window_startCustomAnimationToEnterFullScreenWithDuration_(self, a, b): pass
19    def window_startCustomAnimationToExitFullScreenWithDuration_(self, a, b): pass
20    def window_willResizeForVersionBrowserWithMaxPreferredSize_maxAllowedSize_(self, a, b, c): pass
21    def windowShouldClose_(self, w): return 1
22    def windowWillResize_toSize_(self, w, a): return 1
23    def windowWillUseStandardFrame_defaultFrame_(self, w, a): return 1
24    def windowShouldZoom_toFrame_(self, w, a): return 1
25    def window_willPositionSheet_usingRect_(self, w, a, b): return 1
26    def window_shouldPopUpDocumentPathMenu_(self, w, a): return 1
27    def window_shouldDragDocumentWithEvent_from_withPasteboard_(self, w, a, b, c): return 1
28
29class TestNSWindow (TestCase):
30    def testConstants(self):
31        self.assertEqual(NSBorderlessWindowMask, 0)
32        self.assertEqual(NSTitledWindowMask, 1 << 0)
33        self.assertEqual(NSClosableWindowMask, 1 << 1)
34        self.assertEqual(NSMiniaturizableWindowMask, 1 << 2)
35        self.assertEqual(NSResizableWindowMask, 1 << 3)
36
37        self.assertEqual(NSTexturedBackgroundWindowMask, 1 << 8)
38
39        self.assertEqual(NSUnscaledWindowMask, 1 << 11)
40
41        self.assertEqual(NSUnifiedTitleAndToolbarWindowMask, 1 << 12)
42
43        self.assertEqual(NSDisplayWindowRunLoopOrdering, 600000)
44        self.assertEqual(NSResetCursorRectsRunLoopOrdering, 700000)
45
46        self.assertEqual(NSWindowSharingNone, 0)
47        self.assertEqual(NSWindowSharingReadOnly, 1)
48        self.assertEqual(NSWindowSharingReadWrite, 2)
49
50        self.assertEqual(NSWindowBackingLocationDefault, 0)
51        self.assertEqual(NSWindowBackingLocationVideoMemory, 1)
52        self.assertEqual(NSWindowBackingLocationMainMemory, 2)
53
54        self.assertEqual(NSWindowCollectionBehaviorDefault, 0)
55        self.assertEqual(NSWindowCollectionBehaviorCanJoinAllSpaces, 1 << 0)
56        self.assertEqual(NSWindowCollectionBehaviorMoveToActiveSpace, 1 << 1)
57
58
59        self.assertEqual(NSDirectSelection, 0)
60        self.assertEqual(NSSelectingNext, 1)
61        self.assertEqual(NSSelectingPrevious, 2)
62
63        self.assertEqual(NSWindowCloseButton, 0)
64        self.assertEqual(NSWindowMiniaturizeButton, 1)
65        self.assertEqual(NSWindowZoomButton, 2)
66        self.assertEqual(NSWindowToolbarButton, 3)
67        self.assertEqual(NSWindowDocumentIconButton, 4)
68
69        self.assertIsInstance(NSWindowDidBecomeKeyNotification, unicode)
70        self.assertIsInstance(NSWindowDidBecomeMainNotification, unicode)
71        self.assertIsInstance(NSWindowDidChangeScreenNotification, unicode)
72        self.assertIsInstance(NSWindowDidDeminiaturizeNotification, unicode)
73        self.assertIsInstance(NSWindowDidExposeNotification, unicode)
74        self.assertIsInstance(NSWindowDidMiniaturizeNotification, unicode)
75        self.assertIsInstance(NSWindowDidMoveNotification, unicode)
76        self.assertIsInstance(NSWindowDidResignKeyNotification, unicode)
77        self.assertIsInstance(NSWindowDidResignMainNotification, unicode)
78        self.assertIsInstance(NSWindowDidResizeNotification, unicode)
79        self.assertIsInstance(NSWindowDidUpdateNotification, unicode)
80        self.assertIsInstance(NSWindowWillCloseNotification, unicode)
81        self.assertIsInstance(NSWindowWillMiniaturizeNotification, unicode)
82        self.assertIsInstance(NSWindowWillMoveNotification, unicode)
83        self.assertIsInstance(NSWindowWillBeginSheetNotification, unicode)
84        self.assertIsInstance(NSWindowDidEndSheetNotification, unicode)
85        self.assertIsInstance(NSWindowDidChangeScreenProfileNotification, unicode)
86
87
88    @min_os_level('10.6')
89    def testConstants10_6(self):
90        self.assertEqual(NSAppKitVersionNumberWithDeferredWindowDisplaySupport, 1019.0)
91
92        self.assertEqual(NSWindowCollectionBehaviorManaged, 1<<2)
93        self.assertEqual(NSWindowCollectionBehaviorTransient, 1<<3)
94        self.assertEqual(NSWindowCollectionBehaviorStationary, 1<<4)
95        self.assertEqual(NSWindowCollectionBehaviorParticipatesInCycle, 1<<5)
96        self.assertEqual(NSWindowCollectionBehaviorIgnoresCycle, 1<<6)
97        self.assertEqual(NSWindowNumberListAllApplications, 1<<0)
98        self.assertEqual(NSWindowNumberListAllSpaces, 1<<4)
99
100        self.assertIsInstance(NSWindowWillStartLiveResizeNotification, unicode)
101        self.assertIsInstance(NSWindowDidEndLiveResizeNotification, unicode)
102
103    @min_os_level('10.7')
104    def testConstants10_7(self):
105        self.assertEqual(NSFullScreenWindowMask, 1<<14)
106        self.assertEqual(NSWindowCollectionBehaviorFullScreenPrimary, 1<<7)
107        self.assertEqual(NSWindowCollectionBehaviorFullScreenAuxiliary, 1<<8)
108        self.assertEqual(NSWindowAnimationBehaviorDefault, 0)
109        self.assertEqual(NSWindowAnimationBehaviorNone, 2)
110        self.assertEqual(NSWindowAnimationBehaviorDocumentWindow, 3)
111        self.assertEqual(NSWindowAnimationBehaviorUtilityWindow, 4)
112        self.assertEqual(NSWindowAnimationBehaviorAlertPanel, 5)
113        self.assertEqual(NSWindowDocumentVersionsButton, 6)
114        self.assertEqual(NSWindowFullScreenButton, 7)
115
116        self.assertIsInstance(NSWindowDidChangeBackingPropertiesNotification, unicode)
117        self.assertIsInstance(NSBackingPropertyOldScaleFactorKey, unicode)
118        self.assertIsInstance(NSBackingPropertyOldColorSpaceKey, unicode)
119        self.assertIsInstance(NSWindowWillEnterFullScreenNotification, unicode)
120        self.assertIsInstance(NSWindowDidEnterFullScreenNotification, unicode)
121        self.assertIsInstance(NSWindowWillExitFullScreenNotification, unicode)
122        self.assertIsInstance(NSWindowDidExitFullScreenNotification, unicode)
123        self.assertIsInstance(NSWindowWillEnterVersionBrowserNotification, unicode)
124        self.assertIsInstance(NSWindowDidEnterVersionBrowserNotification, unicode)
125        self.assertIsInstance(NSWindowWillExitVersionBrowserNotification, unicode)
126        self.assertIsInstance(NSWindowDidExitVersionBrowserNotification, unicode)
127
128    @onlyIf(have_Quartz)
129    def testMagicConstants(self):
130        self.assertEqual(NSNormalWindowLevel, kCGNormalWindowLevel)
131        self.assertEqual(NSFloatingWindowLevel, kCGFloatingWindowLevel)
132        self.assertEqual(NSSubmenuWindowLevel, kCGTornOffMenuWindowLevel)
133        self.assertEqual(NSTornOffMenuWindowLevel, kCGTornOffMenuWindowLevel)
134        self.assertEqual(NSMainMenuWindowLevel, kCGMainMenuWindowLevel)
135        self.assertEqual(NSStatusWindowLevel, kCGStatusWindowLevel)
136        self.assertEqual(NSDockWindowLevel, kCGDockWindowLevel)
137        self.assertEqual(NSModalPanelWindowLevel, kCGModalPanelWindowLevel)
138        self.assertEqual(NSPopUpMenuWindowLevel, kCGPopUpMenuWindowLevel)
139        self.assertEqual(NSScreenSaverWindowLevel, kCGScreenSaverWindowLevel)
140
141    def testMethods(self):
142        self.assertArgIsBOOL(NSWindow.initWithContentRect_styleMask_backing_defer_, 3)
143        self.assertArgIsBOOL(NSWindow.initWithContentRect_styleMask_backing_defer_screen_, 3)
144        self.assertArgIsBOOL(NSWindow.setExcludedFromWindowsMenu_, 0)
145        self.assertResultIsBOOL(NSWindow.isExcludedFromWindowsMenu)
146        self.assertArgIsBOOL(NSWindow.fieldEditor_forObject_, 0)
147        self.assertArgIsBOOL(NSWindow.setFrame_display_, 1)
148        self.assertArgIsBOOL(NSWindow.setFrame_display_animate_, 1)
149        self.assertArgIsBOOL(NSWindow.setFrame_display_animate_, 2)
150        self.assertArgIsBOOL(NSWindow.setShowsResizeIndicator_, 0)
151        self.assertResultIsBOOL(NSWindow.showsResizeIndicator)
152        self.assertArgIsBOOL(NSWindow.useOptimizedDrawing_, 0)
153        self.assertResultIsBOOL(NSWindow.isFlushWindowDisabled)
154        self.assertResultIsBOOL(NSWindow.viewsNeedDisplay)
155        self.assertArgIsBOOL(NSWindow.setViewsNeedDisplay_, 0)
156        self.assertResultIsBOOL(NSWindow.isAutodisplay)
157        self.assertArgIsBOOL(NSWindow.setAutodisplay_, 0)
158        self.assertResultIsBOOL(NSWindow.preservesContentDuringLiveResize)
159        self.assertArgIsBOOL(NSWindow.setPreservesContentDuringLiveResize_, 0)
160        self.assertResultIsBOOL(NSWindow.makeFirstResponder_)
161        self.assertArgIsBOOL(NSWindow.setReleasedWhenClosed_, 0)
162        self.assertResultIsBOOL(NSWindow.isReleasedWhenClosed)
163        self.assertResultIsBOOL(NSWindow.isZoomed)
164        self.assertResultIsBOOL(NSWindow.isMiniaturized)
165        self.assertResultIsBOOL(NSWindow.tryToPerform_with_)
166        self.assertResultIsBOOL(NSWindow.isMovableByWindowBackground)
167        self.assertArgIsBOOL(NSWindow.setMovableByWindowBackground_, 0)
168        self.assertResultIsBOOL(NSWindow.hidesOnDeactivate)
169        self.assertArgIsBOOL(NSWindow.setHidesOnDeactivate_, 0)
170        self.assertResultIsBOOL(NSWindow.canHide)
171        self.assertArgIsBOOL(NSWindow.setCanHide_, 0)
172        self.assertResultIsBOOL(NSWindow.isDocumentEdited)
173        self.assertArgIsBOOL(NSWindow.setDocumentEdited_, 0)
174        self.assertResultIsBOOL(NSWindow.isDocumentEdited)
175        self.assertResultIsBOOL(NSWindow.isVisible)
176        self.assertResultIsBOOL(NSWindow.isKeyWindow)
177        self.assertResultIsBOOL(NSWindow.isMainWindow)
178        self.assertResultIsBOOL(NSWindow.canBecomeKeyWindow)
179        self.assertResultIsBOOL(NSWindow.canBecomeMainWindow)
180        self.assertResultIsBOOL(NSWindow.worksWhenModal)
181        self.assertResultIsBOOL(NSWindow.isOneShot)
182        self.assertArgIsBOOL(NSWindow.setOneShot_, 0)
183        self.assertResultIsBOOL(NSWindow.areCursorRectsEnabled)
184        self.assertArgIsBOOL(NSWindow.setAllowsToolTipsWhenApplicationIsInactive_, 0)
185        self.assertResultIsBOOL(NSWindow.allowsToolTipsWhenApplicationIsInactive)
186        self.assertArgIsBOOL(NSWindow.setDynamicDepthLimit_, 0)
187        self.assertResultIsBOOL(NSWindow.hasDynamicDepthLimit)
188        self.assertArgIsBOOL(NSWindow.setHasShadow_, 0)
189        self.assertResultIsBOOL(NSWindow.hasShadow)
190        self.assertResultIsBOOL(NSWindow.canStoreColor)
191        self.assertArgIsBOOL(NSWindow.setOpaque_, 0)
192        self.assertResultIsBOOL(NSWindow.isOpaque)
193        self.assertArgIsBOOL(NSWindow.setDisplaysWhenScreenProfileChanges_, 0)
194        self.assertResultIsBOOL(NSWindow.displaysWhenScreenProfileChanges)
195        self.assertResultIsBOOL(NSWindow.setFrameUsingName_force_)
196        self.assertArgIsBOOL(NSWindow.setFrameUsingName_force_, 1)
197        self.assertResultIsBOOL(NSWindow.setFrameUsingName_)
198        self.assertResultIsBOOL(NSWindow.setFrameAutosaveName_)
199        self.assertArgIsBOOL(NSWindow.postEvent_atStart_, 1)
200        self.assertResultIsBOOL(NSWindow.acceptsMouseMovedEvents)
201        self.assertArgIsBOOL(NSWindow.setIgnoresMouseEvents_, 0)
202        self.assertResultIsBOOL(NSWindow.ignoresMouseEvents)
203        self.assertResultIsBOOL(NSWindow.isSheet)
204        self.assertArgIsBOOL(NSWindow.setAutorecalculatesKeyViewLoop_, 0)
205        self.assertResultIsBOOL(NSWindow.autorecalculatesKeyViewLoop)
206        self.assertArgIsBOOL(NSWindow.setShowsToolbarButton_, 0)
207        self.assertResultIsBOOL(NSWindow.showsToolbarButton)
208        self.assertArgIsBOOL(NSWindow.dragImage_at_offset_event_pasteboard_source_slideBack_, 6)
209
210    @min_os_level('10.5')
211    def testMethods10_5(self):
212        self.assertResultIsBOOL(NSWindow.autorecalculatesContentBorderThicknessForEdge_)
213        self.assertArgIsBOOL(NSWindow.setAutorecalculatesContentBorderThickness_forEdge_, 0)
214        self.assertArgIsBOOL(NSWindow.setCanBecomeVisibleWithoutLogin_, 0)
215        self.assertResultIsBOOL(NSWindow.canBecomeVisibleWithoutLogin)
216        self.assertResultIsBOOL(NSWindow.canBeVisibleOnAllSpaces)
217        self.assertArgIsBOOL(NSWindow.setCanBeVisibleOnAllSpaces_, 0)
218
219    @min_os_level('10.6')
220    def testMethods10_6(self):
221        self.assertResultIsBOOL(NSWindow.inLiveResize)
222        self.assertResultIsBOOL(NSWindow.isOnActiveSpace)
223        self.assertResultIsBOOL(NSWindow.isMovable)
224        self.assertArgIsBOOL(NSWindow.setMovable_, 0)
225        self.assertResultIsBOOL(NSWindow.preventsApplicationTerminationWhenModal)
226        self.assertArgIsBOOL(NSWindow.setPreventsApplicationTerminationWhenModal_, 0)
227        self.assertResultIsBOOL(NSWindow.allowsConcurrentViewDrawing)
228        self.assertArgIsBOOL(NSWindow.setAllowsConcurrentViewDrawing_, 0)
229
230        self.assertArgHasType(NSWindow.windowNumberAtPoint_belowWindowWithWindowNumber_, 0, NSPoint.__typestr__)
231
232    def testProtocols(self):
233        self.assertResultIsBOOL(TestNSWindowHelper.windowShouldClose_)
234        self.assertResultHasType(TestNSWindowHelper.windowWillResize_toSize_, NSSize.__typestr__)
235        self.assertArgHasType(TestNSWindowHelper.windowWillResize_toSize_, 1, NSSize.__typestr__)
236        self.assertResultHasType(TestNSWindowHelper.windowWillUseStandardFrame_defaultFrame_, NSRect.__typestr__)
237        self.assertArgHasType(TestNSWindowHelper.windowWillUseStandardFrame_defaultFrame_, 1, NSRect.__typestr__)
238        self.assertResultIsBOOL(TestNSWindowHelper.windowShouldZoom_toFrame_)
239        self.assertArgHasType(TestNSWindowHelper.windowShouldZoom_toFrame_, 1, NSRect.__typestr__)
240        self.assertResultHasType(TestNSWindowHelper.window_willPositionSheet_usingRect_, NSRect.__typestr__)
241        self.assertArgHasType(TestNSWindowHelper.window_willPositionSheet_usingRect_, 2, NSRect.__typestr__)
242        self.assertResultIsBOOL(TestNSWindowHelper.window_shouldPopUpDocumentPathMenu_)
243        self.assertResultIsBOOL(TestNSWindowHelper.window_shouldDragDocumentWithEvent_from_withPasteboard_)
244        self.assertArgHasType(TestNSWindowHelper.window_shouldDragDocumentWithEvent_from_withPasteboard_, 2, NSPoint.__typestr__)
245
246    @min_os_level('10.7')
247    def testProtocols10_7(self):
248        self.assertArgHasType(TestNSWindowHelper.window_willUseFullScreenContentSize_, 1, NSSize.__typestr__)
249        self.assertArgHasType(TestNSWindowHelper.window_willUseFullScreenPresentationOptions_, 1, objc._C_NSUInteger)
250        self.assertResultHasType(TestNSWindowHelper.window_willUseFullScreenPresentationOptions_, objc._C_NSUInteger)
251        self.assertArgHasType(TestNSWindowHelper.window_startCustomAnimationToEnterFullScreenWithDuration_, 1, objc._C_DBL)
252        self.assertArgHasType(TestNSWindowHelper.window_startCustomAnimationToExitFullScreenWithDuration_, 1, objc._C_DBL)
253        self.assertResultHasType(TestNSWindowHelper.window_willResizeForVersionBrowserWithMaxPreferredSize_maxAllowedSize_, NSSize.__typestr__)
254        self.assertArgHasType(TestNSWindowHelper.window_willResizeForVersionBrowserWithMaxPreferredSize_maxAllowedSize_, 1, NSSize.__typestr__)
255        self.assertArgHasType(TestNSWindowHelper.window_willResizeForVersionBrowserWithMaxPreferredSize_maxAllowedSize_, 2, NSSize.__typestr__)
256
257
258if __name__ == "__main__":
259    main()
260