1from PyObjCTools.TestSupport import *
2from AppKit import *
3from Quartz.CoreGraphics import *
4
5class TestNSWindowHelper (NSObject):
6    def windowShouldClose_(self, w): return 1
7    def windowWillResize_toSize_(self, w, a): return 1
8    def windowWillUseStandardFrame_defaultFrame_(self, w, a): return 1
9    def windowShouldZoom_toFrame_(self, w, a): return 1
10    def window_willPositionSheet_usingRect_(self, w, a, b): return 1
11    def window_shouldPopUpDocumentPathMenu_(self, w, a): return 1
12    def window_shouldDragDocumentWithEvent_from_withPasteboard_(self, w, a, b, c): return 1
13
14class TestNSWindow (TestCase):
15    def testConstants(self):
16        self.failUnlessEqual(NSBorderlessWindowMask, 0)
17        self.failUnlessEqual(NSTitledWindowMask, 1 << 0)
18        self.failUnlessEqual(NSClosableWindowMask, 1 << 1)
19        self.failUnlessEqual(NSMiniaturizableWindowMask, 1 << 2)
20        self.failUnlessEqual(NSResizableWindowMask, 1 << 3)
21
22        self.failUnlessEqual(NSTexturedBackgroundWindowMask, 1 << 8)
23
24        self.failUnlessEqual(NSUnscaledWindowMask, 1 << 11)
25
26        self.failUnlessEqual(NSUnifiedTitleAndToolbarWindowMask, 1 << 12)
27
28        self.failUnlessEqual(NSDisplayWindowRunLoopOrdering, 600000)
29        self.failUnlessEqual(NSResetCursorRectsRunLoopOrdering, 700000)
30
31        self.failUnlessEqual(NSWindowSharingNone, 0)
32        self.failUnlessEqual(NSWindowSharingReadOnly, 1)
33        self.failUnlessEqual(NSWindowSharingReadWrite, 2)
34
35        self.failUnlessEqual(NSWindowBackingLocationDefault, 0)
36        self.failUnlessEqual(NSWindowBackingLocationVideoMemory, 1)
37        self.failUnlessEqual(NSWindowBackingLocationMainMemory, 2)
38
39        self.failUnlessEqual(NSWindowCollectionBehaviorDefault, 0)
40        self.failUnlessEqual(NSWindowCollectionBehaviorCanJoinAllSpaces, 1 << 0)
41        self.failUnlessEqual(NSWindowCollectionBehaviorMoveToActiveSpace, 1 << 1)
42
43
44        self.failUnlessEqual(NSDirectSelection, 0)
45        self.failUnlessEqual(NSSelectingNext, 1)
46        self.failUnlessEqual(NSSelectingPrevious, 2)
47
48        self.failUnlessEqual(NSWindowCloseButton, 0)
49        self.failUnlessEqual(NSWindowMiniaturizeButton, 1)
50        self.failUnlessEqual(NSWindowZoomButton, 2)
51        self.failUnlessEqual(NSWindowToolbarButton, 3)
52        self.failUnlessEqual(NSWindowDocumentIconButton, 4)
53
54        self.failUnlessIsInstance(NSWindowDidBecomeKeyNotification, unicode)
55        self.failUnlessIsInstance(NSWindowDidBecomeMainNotification, unicode)
56        self.failUnlessIsInstance(NSWindowDidChangeScreenNotification, unicode)
57        self.failUnlessIsInstance(NSWindowDidDeminiaturizeNotification, unicode)
58        self.failUnlessIsInstance(NSWindowDidExposeNotification, unicode)
59        self.failUnlessIsInstance(NSWindowDidMiniaturizeNotification, unicode)
60        self.failUnlessIsInstance(NSWindowDidMoveNotification, unicode)
61        self.failUnlessIsInstance(NSWindowDidResignKeyNotification, unicode)
62        self.failUnlessIsInstance(NSWindowDidResignMainNotification, unicode)
63        self.failUnlessIsInstance(NSWindowDidResizeNotification, unicode)
64        self.failUnlessIsInstance(NSWindowDidUpdateNotification, unicode)
65        self.failUnlessIsInstance(NSWindowWillCloseNotification, unicode)
66        self.failUnlessIsInstance(NSWindowWillMiniaturizeNotification, unicode)
67        self.failUnlessIsInstance(NSWindowWillMoveNotification, unicode)
68        self.failUnlessIsInstance(NSWindowWillBeginSheetNotification, unicode)
69        self.failUnlessIsInstance(NSWindowDidEndSheetNotification, unicode)
70        self.failUnlessIsInstance(NSWindowDidChangeScreenProfileNotification, unicode)
71
72    def testMagicConstants(self):
73        self.failUnlessEqual(NSNormalWindowLevel, kCGNormalWindowLevel)
74        self.failUnlessEqual(NSFloatingWindowLevel, kCGFloatingWindowLevel)
75        self.failUnlessEqual(NSSubmenuWindowLevel, kCGTornOffMenuWindowLevel)
76        self.failUnlessEqual(NSTornOffMenuWindowLevel, kCGTornOffMenuWindowLevel)
77        self.failUnlessEqual(NSMainMenuWindowLevel, kCGMainMenuWindowLevel)
78        self.failUnlessEqual(NSStatusWindowLevel, kCGStatusWindowLevel)
79        self.failUnlessEqual(NSDockWindowLevel, kCGDockWindowLevel)
80        self.failUnlessEqual(NSModalPanelWindowLevel, kCGModalPanelWindowLevel)
81        self.failUnlessEqual(NSPopUpMenuWindowLevel, kCGPopUpMenuWindowLevel)
82        self.failUnlessEqual(NSScreenSaverWindowLevel, kCGScreenSaverWindowLevel)
83
84    def testMethods(self):
85        self.failUnlessArgIsBOOL(NSWindow.initWithContentRect_styleMask_backing_defer_, 3)
86        self.failUnlessArgIsBOOL(NSWindow.initWithContentRect_styleMask_backing_defer_screen_, 3)
87        self.failUnlessArgIsBOOL(NSWindow.setExcludedFromWindowsMenu_, 0)
88        self.failUnlessResultIsBOOL(NSWindow.isExcludedFromWindowsMenu)
89        self.failUnlessArgIsBOOL(NSWindow.fieldEditor_forObject_, 0)
90        self.failUnlessArgIsBOOL(NSWindow.setFrame_display_, 1)
91        self.failUnlessArgIsBOOL(NSWindow.setFrame_display_animate_, 1)
92        self.failUnlessArgIsBOOL(NSWindow.setFrame_display_animate_, 2)
93        self.failUnlessArgIsBOOL(NSWindow.setShowsResizeIndicator_, 0)
94        self.failUnlessResultIsBOOL(NSWindow.showsResizeIndicator)
95        self.failUnlessArgIsBOOL(NSWindow.useOptimizedDrawing_, 0)
96        self.failUnlessResultIsBOOL(NSWindow.isFlushWindowDisabled)
97        self.failUnlessResultIsBOOL(NSWindow.viewsNeedDisplay)
98        self.failUnlessArgIsBOOL(NSWindow.setViewsNeedDisplay_, 0)
99        self.failUnlessResultIsBOOL(NSWindow.isAutodisplay)
100        self.failUnlessArgIsBOOL(NSWindow.setAutodisplay_, 0)
101        self.failUnlessResultIsBOOL(NSWindow.preservesContentDuringLiveResize)
102        self.failUnlessArgIsBOOL(NSWindow.setPreservesContentDuringLiveResize_, 0)
103        self.failUnlessResultIsBOOL(NSWindow.makeFirstResponder_)
104        self.failUnlessArgIsBOOL(NSWindow.setReleasedWhenClosed_, 0)
105        self.failUnlessResultIsBOOL(NSWindow.isReleasedWhenClosed)
106        self.failUnlessResultIsBOOL(NSWindow.isZoomed)
107        self.failUnlessResultIsBOOL(NSWindow.isMiniaturized)
108        self.failUnlessResultIsBOOL(NSWindow.tryToPerform_with_)
109        self.failUnlessResultIsBOOL(NSWindow.isMovableByWindowBackground)
110        self.failUnlessArgIsBOOL(NSWindow.setMovableByWindowBackground_, 0)
111        self.failUnlessResultIsBOOL(NSWindow.hidesOnDeactivate)
112        self.failUnlessArgIsBOOL(NSWindow.setHidesOnDeactivate_, 0)
113        self.failUnlessResultIsBOOL(NSWindow.canHide)
114        self.failUnlessArgIsBOOL(NSWindow.setCanHide_, 0)
115        self.failUnlessResultIsBOOL(NSWindow.isDocumentEdited)
116        self.failUnlessArgIsBOOL(NSWindow.setDocumentEdited_, 0)
117        self.failUnlessResultIsBOOL(NSWindow.isDocumentEdited)
118        self.failUnlessResultIsBOOL(NSWindow.isVisible)
119        self.failUnlessResultIsBOOL(NSWindow.isKeyWindow)
120        self.failUnlessResultIsBOOL(NSWindow.isMainWindow)
121        self.failUnlessResultIsBOOL(NSWindow.canBecomeKeyWindow)
122        self.failUnlessResultIsBOOL(NSWindow.canBecomeMainWindow)
123        self.failUnlessResultIsBOOL(NSWindow.worksWhenModal)
124        self.failUnlessResultIsBOOL(NSWindow.isOneShot)
125        self.failUnlessArgIsBOOL(NSWindow.setOneShot_, 0)
126        self.failUnlessResultIsBOOL(NSWindow.areCursorRectsEnabled)
127        self.failUnlessArgIsBOOL(NSWindow.setAllowsToolTipsWhenApplicationIsInactive_, 0)
128        self.failUnlessResultIsBOOL(NSWindow.allowsToolTipsWhenApplicationIsInactive)
129        self.failUnlessArgIsBOOL(NSWindow.setDynamicDepthLimit_, 0)
130        self.failUnlessResultIsBOOL(NSWindow.hasDynamicDepthLimit)
131        self.failUnlessArgIsBOOL(NSWindow.setHasShadow_, 0)
132        self.failUnlessResultIsBOOL(NSWindow.hasShadow)
133        self.failUnlessResultIsBOOL(NSWindow.canStoreColor)
134        self.failUnlessArgIsBOOL(NSWindow.setOpaque_, 0)
135        self.failUnlessResultIsBOOL(NSWindow.isOpaque)
136        self.failUnlessArgIsBOOL(NSWindow.setDisplaysWhenScreenProfileChanges_, 0)
137        self.failUnlessResultIsBOOL(NSWindow.displaysWhenScreenProfileChanges)
138        self.failUnlessResultIsBOOL(NSWindow.setFrameUsingName_force_)
139        self.failUnlessArgIsBOOL(NSWindow.setFrameUsingName_force_, 1)
140        self.failUnlessResultIsBOOL(NSWindow.setFrameUsingName_)
141        self.failUnlessResultIsBOOL(NSWindow.setFrameAutosaveName_)
142        self.failUnlessArgIsBOOL(NSWindow.postEvent_atStart_, 1)
143        self.failUnlessResultIsBOOL(NSWindow.acceptsMouseMovedEvents)
144        self.failUnlessArgIsBOOL(NSWindow.setIgnoresMouseEvents_, 0)
145        self.failUnlessResultIsBOOL(NSWindow.ignoresMouseEvents)
146        self.failUnlessResultIsBOOL(NSWindow.isSheet)
147        self.failUnlessArgIsBOOL(NSWindow.setAutorecalculatesKeyViewLoop_, 0)
148        self.failUnlessResultIsBOOL(NSWindow.autorecalculatesKeyViewLoop)
149        self.failUnlessArgIsBOOL(NSWindow.setShowsToolbarButton_, 0)
150        self.failUnlessResultIsBOOL(NSWindow.showsToolbarButton)
151        self.failUnlessArgIsBOOL(NSWindow.dragImage_at_offset_event_pasteboard_source_slideBack_, 6)
152
153    @min_os_level('10.5')
154    def testMethods10_5(self):
155        self.failUnlessResultIsBOOL(NSWindow.autorecalculatesContentBorderThicknessForEdge_)
156        self.failUnlessArgIsBOOL(NSWindow.setAutorecalculatesContentBorderThickness_forEdge_, 0)
157        self.failUnlessArgIsBOOL(NSWindow.setCanBecomeVisibleWithoutLogin_, 0)
158        self.failUnlessResultIsBOOL(NSWindow.canBecomeVisibleWithoutLogin)
159        self.failUnlessResultIsBOOL(NSWindow.canBeVisibleOnAllSpaces)
160        self.failUnlessArgIsBOOL(NSWindow.setCanBeVisibleOnAllSpaces_, 0)
161
162    def testProtocols(self):
163        self.failUnlessResultIsBOOL(TestNSWindowHelper.windowShouldClose_)
164        self.failUnlessResultHasType(TestNSWindowHelper.windowWillResize_toSize_, NSSize.__typestr__)
165        self.failUnlessArgHasType(TestNSWindowHelper.windowWillResize_toSize_, 1, NSSize.__typestr__)
166        self.failUnlessResultHasType(TestNSWindowHelper.windowWillUseStandardFrame_defaultFrame_, NSRect.__typestr__)
167        self.failUnlessArgHasType(TestNSWindowHelper.windowWillUseStandardFrame_defaultFrame_, 1, NSRect.__typestr__)
168        self.failUnlessResultIsBOOL(TestNSWindowHelper.windowShouldZoom_toFrame_)
169        self.failUnlessArgHasType(TestNSWindowHelper.windowShouldZoom_toFrame_, 1, NSRect.__typestr__)
170        self.failUnlessResultHasType(TestNSWindowHelper.window_willPositionSheet_usingRect_, NSRect.__typestr__)
171        self.failUnlessArgHasType(TestNSWindowHelper.window_willPositionSheet_usingRect_, 2, NSRect.__typestr__)
172        self.failUnlessResultIsBOOL(TestNSWindowHelper.window_shouldPopUpDocumentPathMenu_)
173        self.failUnlessResultIsBOOL(TestNSWindowHelper.window_shouldDragDocumentWithEvent_from_withPasteboard_)
174        self.failUnlessArgHasType(TestNSWindowHelper.window_shouldDragDocumentWithEvent_from_withPasteboard_, 2, NSPoint.__typestr__)
175
176if __name__ == "__main__":
177    main()
178