]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/_display.i
Patch from Andrea: fixes no page chang* events with mouse right click,
[wxWidgets.git] / wxPython / src / _display.i
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: _display.i
3 // Purpose: SWIG interface for wxVideoMode and wxDisplay
4 //
5 // Author: Robin Dunn
6 //
7 // Created: 9-Mar-2004
8 // RCS-ID: $Id$
9 // Copyright: (c) 2004 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
12
13 // Not a %module
14
15
16 //---------------------------------------------------------------------------
17
18 %{
19 #include <wx/display.h>
20 %}
21
22
23 //---------------------------------------------------------------------------
24 %newgroup
25
26
27 DocStr(wxVideoMode,
28 "A simple struct containing video mode parameters for a display", "");
29
30 struct wxVideoMode
31 {
32 wxVideoMode(int width = 0, int height = 0, int depth = 0, int freq = 0);
33 ~wxVideoMode();
34
35 DocDeclStr(
36 bool , Matches(const wxVideoMode& other) const,
37 "Returns True if this mode matches the other one in the sense that all
38 non-zero fields of the other mode have the same value in this
39 one (except for refresh which is allowed to have a greater value)", "");
40
41 DocDeclStr(
42 int , GetWidth() const,
43 "Returns the screen width in pixels (e.g. 640*480), 0 means unspecified", "");
44
45 DocDeclStr(
46 int , GetHeight() const,
47 "Returns the screen height in pixels (e.g. 640*480), 0 means unspecified", "");
48
49 DocDeclStr(
50 int , GetDepth() const,
51 "Returns the screen's bits per pixel (e.g. 32), 1 is monochrome and 0
52 means unspecified/known", "");
53
54
55 DocDeclStr(
56 bool , IsOk() const,
57 "returns true if the object has been initialized", "");
58
59
60 %pythoncode { def __nonzero__(self): return self.IsOk() }
61 %extend {
62 bool __eq__(const wxVideoMode* other) { return other ? (*self == *other) : false; }
63 bool __ne__(const wxVideoMode* other) { return other ? (*self != *other) : true; }
64 }
65
66
67 // the screen size in pixels (e.g. 640*480), 0 means unspecified
68 int w, h;
69
70 // bits per pixel (e.g. 32), 1 is monochrome and 0 means unspecified/known
71 int bpp;
72
73 // refresh frequency in Hz, 0 means unspecified/unknown
74 int refresh;
75
76 %property(Depth, GetDepth, doc="See `GetDepth`");
77 %property(Height, GetHeight, doc="See `GetHeight`");
78 %property(Width, GetWidth, doc="See `GetWidth`");
79 };
80
81
82 %{
83 #if !wxUSE_DISPLAY
84 const wxVideoMode wxDefaultVideoMode;
85 #endif
86 %}
87
88 %immutable;
89 const wxVideoMode wxDefaultVideoMode;
90 %mutable;
91
92
93 //---------------------------------------------------------------------------
94
95
96
97 DocStr(wxDisplay,
98 "Represents a display/monitor attached to the system", "");
99 class wxDisplay
100 {
101 public:
102 DocCtorStr(
103 wxDisplay(unsigned index = 0),
104 "Set up a Display instance with the specified display. The displays
105 are numbered from 0 to GetCount() - 1, 0 is always the primary display
106 and the only one which is always supported", "");
107
108 ~wxDisplay();
109
110 DocDeclStr(
111 static unsigned , GetCount(),
112 "Return the number of available displays.", "");
113
114 DocDeclStr(
115 static int , GetFromPoint(const wxPoint& pt),
116 "Find the display where the given point lies, return wx.NOT_FOUND if it
117 doesn't belong to any display", "");
118
119 DocStr(GetFromWindow,
120 "Find the display where the given window lies, return wx.NOT_FOUND if
121 it is not shown at all.", "");
122
123 static int GetFromWindow(wxWindow *window);
124
125
126 DocDeclStr(
127 bool , IsOk() const,
128 "Return true if the object was initialized successfully", "");
129 %pythoncode { def __nonzero__(self): return self.IsOk() }
130
131 DocDeclStr(
132 wxRect , GetGeometry() const,
133 "Returns the bounding rectangle of the display whose index was passed
134 to the constructor.", "");
135
136 DocDeclStr(
137 wxRect , GetClientArea() const,
138 "Returns the bounding rectangle the client area of the display,
139 i.e., without taskbars and such.", "");
140
141 DocDeclStr(
142 wxString , GetName() const,
143 "Returns the display's name. A name is not available on all platforms.", "");
144
145 DocDeclStr(
146 bool , IsPrimary() const,
147 "Returns True if the display is the primary display. The primary
148 display is the one whose index is 0.", "");
149
150
151 %extend
152 {
153 DocAStr(GetModes,
154 "GetModes(VideoMode mode=DefaultVideoMode) -> [videoMode...]",
155 "Enumerate all video modes supported by this display matching the given
156 one (in the sense of VideoMode.Match()).
157
158 As any mode matches the default value of the argument and there is
159 always at least one video mode supported by display, the returned
160 array is only empty for the default value of the argument if this
161 function is not supported at all on this platform.", "");
162
163 PyObject* GetModes(const wxVideoMode& mode = wxDefaultVideoMode)
164 {
165 %#if wxUSE_DISPLAY
166 PyObject* pyList = NULL;
167 wxArrayVideoModes arr = self->GetModes(mode);
168 wxPyBlock_t blocked = wxPyBeginBlockThreads();
169 pyList = PyList_New(0);
170 for (size_t i=0; i < arr.GetCount(); i++)
171 {
172 wxVideoMode* m = new wxVideoMode(arr.Item(i));
173 PyObject* pyObj = wxPyConstructObject(m, wxT("wxVideoMode"), true);
174 PyList_Append(pyList, pyObj);
175 Py_DECREF(pyObj);
176 }
177 wxPyEndBlockThreads(blocked);
178 return pyList;
179 %#else
180 wxPyRaiseNotImplemented();
181 return NULL;
182 %#endif
183 }
184
185 DocStr(GetCurrentMode,
186 "Get the current video mode.", "");
187 wxVideoMode GetCurrentMode() const
188 {
189 %#if wxUSE_DISPLAY
190 return self->GetCurrentMode();
191 %#else
192 wxPyRaiseNotImplemented();
193 return wxDefaultVideoMode;
194 %#endif
195 }
196
197
198 DocStr(
199 ChangeMode,
200 "Changes the video mode of this display to the mode specified in the
201 mode parameter.
202
203 If wx.DefaultVideoMode is passed in as the mode parameter, the defined
204 behaviour is that wx.Display will reset the video mode to the default
205 mode used by the display. On Windows, the behavior is normal.
206 However, there are differences on other platforms. On Unix variations
207 using X11 extensions it should behave as defined, but some
208 irregularities may occur.
209
210 On wxMac passing in wx.DefaultVideoMode as the mode parameter does
211 nothing. This happens because Carbon no longer has access to
212 DMUseScreenPrefs, an undocumented function that changed the video mode
213 to the system default by using the system's 'scrn' resource.
214
215 Returns True if succeeded, False otherwise", "");
216
217 bool ChangeMode(const wxVideoMode& mode = wxDefaultVideoMode)
218 {
219 %#if wxUSE_DISPLAY
220 return self->ChangeMode(mode);
221 %#else
222 wxPyRaiseNotImplemented();
223 return false;
224 %#endif
225 }
226
227
228 DocStr(
229 ResetMode,
230 "Restore the default video mode (just a more readable synonym)", "");
231 void ResetMode()
232 {
233 %#if wxUSE_DISPLAY
234 self->ResetMode();
235 %#else
236 wxPyRaiseNotImplemented();
237 %#endif
238 }
239
240 } // end of %extend
241
242 %property(ClientArea, GetClientArea, doc="See `GetClientArea`");
243 %property(CurrentMode, GetCurrentMode, doc="See `GetCurrentMode`");
244 %property(Geometry, GetGeometry, doc="See `GetGeometry`");
245 %property(Modes, GetModes, doc="See `GetModes`");
246 %property(Name, GetName, doc="See `GetName`");
247
248 };
249
250 //---------------------------------------------------------------------------