]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/msw/clip_dnd.py
compilation fix for recent commit
[wxWidgets.git] / wxPython / src / msw / clip_dnd.py
1 # This file was created automatically by SWIG.
2 import clip_dndc
3
4 from misc import *
5
6 from gdi import *
7 import wx
8 class wxDataFormatPtr :
9 def __init__(self,this):
10 self.this = this
11 self.thisown = 0
12 def __del__(self,clip_dndc=clip_dndc):
13 if self.thisown == 1 :
14 clip_dndc.delete_wxDataFormat(self)
15 def SetType(self, *_args, **_kwargs):
16 val = apply(clip_dndc.wxDataFormat_SetType,(self,) + _args, _kwargs)
17 return val
18 def GetType(self, *_args, **_kwargs):
19 val = apply(clip_dndc.wxDataFormat_GetType,(self,) + _args, _kwargs)
20 return val
21 def GetId(self, *_args, **_kwargs):
22 val = apply(clip_dndc.wxDataFormat_GetId,(self,) + _args, _kwargs)
23 return val
24 def SetId(self, *_args, **_kwargs):
25 val = apply(clip_dndc.wxDataFormat_SetId,(self,) + _args, _kwargs)
26 return val
27 def __repr__(self):
28 return "<C wxDataFormat instance at %s>" % (self.this,)
29 class wxDataFormat(wxDataFormatPtr):
30 def __init__(self,*_args,**_kwargs):
31 self.this = apply(clip_dndc.new_wxDataFormat,_args,_kwargs)
32 self.thisown = 1
33
34
35
36
37 class wxDataObjectPtr :
38 Get = clip_dndc.wxDataObject_Get
39 Set = clip_dndc.wxDataObject_Set
40 Both = clip_dndc.wxDataObject_Both
41 def __init__(self,this):
42 self.this = this
43 self.thisown = 0
44 def __del__(self,clip_dndc=clip_dndc):
45 if self.thisown == 1 :
46 clip_dndc.delete_wxDataObject(self)
47 def GetPreferredFormat(self, *_args, **_kwargs):
48 val = apply(clip_dndc.wxDataObject_GetPreferredFormat,(self,) + _args, _kwargs)
49 if val: val = wxDataFormatPtr(val) ; val.thisown = 1
50 return val
51 def GetFormatCount(self, *_args, **_kwargs):
52 val = apply(clip_dndc.wxDataObject_GetFormatCount,(self,) + _args, _kwargs)
53 return val
54 def GetAllFormats(self, *_args, **_kwargs):
55 val = apply(clip_dndc.wxDataObject_GetAllFormats,(self,) + _args, _kwargs)
56 return val
57 def GetDataSize(self, *_args, **_kwargs):
58 val = apply(clip_dndc.wxDataObject_GetDataSize,(self,) + _args, _kwargs)
59 return val
60 def GetDataHere(self, *_args, **_kwargs):
61 val = apply(clip_dndc.wxDataObject_GetDataHere,(self,) + _args, _kwargs)
62 return val
63 def SetData(self, *_args, **_kwargs):
64 val = apply(clip_dndc.wxDataObject_SetData,(self,) + _args, _kwargs)
65 return val
66 def IsSupportedFormat(self, *_args, **_kwargs):
67 val = apply(clip_dndc.wxDataObject_IsSupportedFormat,(self,) + _args, _kwargs)
68 return val
69 def __repr__(self):
70 return "<C wxDataObject instance at %s>" % (self.this,)
71 class wxDataObject(wxDataObjectPtr):
72 def __init__(self,this):
73 self.this = this
74
75
76
77
78 class wxDataObjectSimplePtr(wxDataObjectPtr):
79 def __init__(self,this):
80 self.this = this
81 self.thisown = 0
82 def GetFormat(self, *_args, **_kwargs):
83 val = apply(clip_dndc.wxDataObjectSimple_GetFormat,(self,) + _args, _kwargs)
84 if val: val = wxDataFormatPtr(val)
85 return val
86 def SetFormat(self, *_args, **_kwargs):
87 val = apply(clip_dndc.wxDataObjectSimple_SetFormat,(self,) + _args, _kwargs)
88 return val
89 def __repr__(self):
90 return "<C wxDataObjectSimple instance at %s>" % (self.this,)
91 class wxDataObjectSimple(wxDataObjectSimplePtr):
92 def __init__(self,*_args,**_kwargs):
93 self.this = apply(clip_dndc.new_wxDataObjectSimple,_args,_kwargs)
94 self.thisown = 1
95
96
97
98
99 class wxPyDataObjectSimplePtr(wxDataObjectSimplePtr):
100 def __init__(self,this):
101 self.this = this
102 self.thisown = 0
103 def _setCallbackInfo(self, *_args, **_kwargs):
104 val = apply(clip_dndc.wxPyDataObjectSimple__setCallbackInfo,(self,) + _args, _kwargs)
105 return val
106 def __repr__(self):
107 return "<C wxPyDataObjectSimple instance at %s>" % (self.this,)
108 class wxPyDataObjectSimple(wxPyDataObjectSimplePtr):
109 def __init__(self,*_args,**_kwargs):
110 self.this = apply(clip_dndc.new_wxPyDataObjectSimple,_args,_kwargs)
111 self.thisown = 1
112 self._setCallbackInfo(self, wxPyDataObjectSimple)
113
114
115
116
117 class wxDataObjectCompositePtr(wxDataObjectPtr):
118 def __init__(self,this):
119 self.this = this
120 self.thisown = 0
121 def Add(self, *_args, **_kwargs):
122 val = apply(clip_dndc.wxDataObjectComposite_Add,(self,) + _args, _kwargs)
123 _args[0].thisown = 0
124 return val
125 def __repr__(self):
126 return "<C wxDataObjectComposite instance at %s>" % (self.this,)
127 class wxDataObjectComposite(wxDataObjectCompositePtr):
128 def __init__(self,*_args,**_kwargs):
129 self.this = apply(clip_dndc.new_wxDataObjectComposite,_args,_kwargs)
130 self.thisown = 1
131
132
133
134
135 class wxTextDataObjectPtr(wxDataObjectSimplePtr):
136 def __init__(self,this):
137 self.this = this
138 self.thisown = 0
139 def GetTextLength(self, *_args, **_kwargs):
140 val = apply(clip_dndc.wxTextDataObject_GetTextLength,(self,) + _args, _kwargs)
141 return val
142 def GetText(self, *_args, **_kwargs):
143 val = apply(clip_dndc.wxTextDataObject_GetText,(self,) + _args, _kwargs)
144 return val
145 def SetText(self, *_args, **_kwargs):
146 val = apply(clip_dndc.wxTextDataObject_SetText,(self,) + _args, _kwargs)
147 return val
148 def __repr__(self):
149 return "<C wxTextDataObject instance at %s>" % (self.this,)
150 class wxTextDataObject(wxTextDataObjectPtr):
151 def __init__(self,*_args,**_kwargs):
152 self.this = apply(clip_dndc.new_wxTextDataObject,_args,_kwargs)
153 self.thisown = 1
154
155
156
157
158 class wxPyTextDataObjectPtr(wxTextDataObjectPtr):
159 def __init__(self,this):
160 self.this = this
161 self.thisown = 0
162 def _setCallbackInfo(self, *_args, **_kwargs):
163 val = apply(clip_dndc.wxPyTextDataObject__setCallbackInfo,(self,) + _args, _kwargs)
164 return val
165 def __repr__(self):
166 return "<C wxPyTextDataObject instance at %s>" % (self.this,)
167 class wxPyTextDataObject(wxPyTextDataObjectPtr):
168 def __init__(self,*_args,**_kwargs):
169 self.this = apply(clip_dndc.new_wxPyTextDataObject,_args,_kwargs)
170 self.thisown = 1
171 self._setCallbackInfo(self, wxPyTextDataObject)
172
173
174
175
176 class wxBitmapDataObjectPtr(wxDataObjectSimplePtr):
177 def __init__(self,this):
178 self.this = this
179 self.thisown = 0
180 def GetBitmap(self, *_args, **_kwargs):
181 val = apply(clip_dndc.wxBitmapDataObject_GetBitmap,(self,) + _args, _kwargs)
182 if val: val = wxBitmapPtr(val) ; val.thisown = 1
183 return val
184 def SetBitmap(self, *_args, **_kwargs):
185 val = apply(clip_dndc.wxBitmapDataObject_SetBitmap,(self,) + _args, _kwargs)
186 return val
187 def __repr__(self):
188 return "<C wxBitmapDataObject instance at %s>" % (self.this,)
189 class wxBitmapDataObject(wxBitmapDataObjectPtr):
190 def __init__(self,*_args,**_kwargs):
191 self.this = apply(clip_dndc.new_wxBitmapDataObject,_args,_kwargs)
192 self.thisown = 1
193
194
195
196
197 class wxPyBitmapDataObjectPtr(wxBitmapDataObjectPtr):
198 def __init__(self,this):
199 self.this = this
200 self.thisown = 0
201 def _setCallbackInfo(self, *_args, **_kwargs):
202 val = apply(clip_dndc.wxPyBitmapDataObject__setCallbackInfo,(self,) + _args, _kwargs)
203 return val
204 def __repr__(self):
205 return "<C wxPyBitmapDataObject instance at %s>" % (self.this,)
206 class wxPyBitmapDataObject(wxPyBitmapDataObjectPtr):
207 def __init__(self,*_args,**_kwargs):
208 self.this = apply(clip_dndc.new_wxPyBitmapDataObject,_args,_kwargs)
209 self.thisown = 1
210 self._setCallbackInfo(self, wxPyBitmapDataObject)
211
212
213
214
215 class wxFileDataObjectPtr(wxDataObjectSimplePtr):
216 def __init__(self,this):
217 self.this = this
218 self.thisown = 0
219 def GetFilenames(self, *_args, **_kwargs):
220 val = apply(clip_dndc.wxFileDataObject_GetFilenames,(self,) + _args, _kwargs)
221 return val
222 def AddFile(self, *_args, **_kwargs):
223 val = apply(clip_dndc.wxFileDataObject_AddFile,(self,) + _args, _kwargs)
224 return val
225 def __repr__(self):
226 return "<C wxFileDataObject instance at %s>" % (self.this,)
227 class wxFileDataObject(wxFileDataObjectPtr):
228 def __init__(self,*_args,**_kwargs):
229 self.this = apply(clip_dndc.new_wxFileDataObject,_args,_kwargs)
230 self.thisown = 1
231
232
233
234
235 class wxCustomDataObjectPtr(wxDataObjectSimplePtr):
236 def __init__(self,this):
237 self.this = this
238 self.thisown = 0
239 def TakeData(self, *_args, **_kwargs):
240 val = apply(clip_dndc.wxCustomDataObject_TakeData,(self,) + _args, _kwargs)
241 return val
242 def SetData(self, *_args, **_kwargs):
243 val = apply(clip_dndc.wxCustomDataObject_SetData,(self,) + _args, _kwargs)
244 return val
245 def GetSize(self, *_args, **_kwargs):
246 val = apply(clip_dndc.wxCustomDataObject_GetSize,(self,) + _args, _kwargs)
247 return val
248 def GetData(self, *_args, **_kwargs):
249 val = apply(clip_dndc.wxCustomDataObject_GetData,(self,) + _args, _kwargs)
250 return val
251 def __repr__(self):
252 return "<C wxCustomDataObject instance at %s>" % (self.this,)
253 class wxCustomDataObject(wxCustomDataObjectPtr):
254 def __init__(self,*_args,**_kwargs):
255 self.this = apply(clip_dndc.new_wxCustomDataObject,_args,_kwargs)
256 self.thisown = 1
257
258
259
260
261 class wxURLDataObjectPtr(wxDataObjectCompositePtr):
262 def __init__(self,this):
263 self.this = this
264 self.thisown = 0
265 def GetURL(self, *_args, **_kwargs):
266 val = apply(clip_dndc.wxURLDataObject_GetURL,(self,) + _args, _kwargs)
267 return val
268 def SetURL(self, *_args, **_kwargs):
269 val = apply(clip_dndc.wxURLDataObject_SetURL,(self,) + _args, _kwargs)
270 return val
271 def __repr__(self):
272 return "<C wxURLDataObject instance at %s>" % (self.this,)
273 class wxURLDataObject(wxURLDataObjectPtr):
274 def __init__(self,*_args,**_kwargs):
275 self.this = apply(clip_dndc.new_wxURLDataObject,_args,_kwargs)
276 self.thisown = 1
277
278
279
280
281 class wxClipboardPtr(wxObjectPtr):
282 def __init__(self,this):
283 self.this = this
284 self.thisown = 0
285 def Open(self, *_args, **_kwargs):
286 val = apply(clip_dndc.wxClipboard_Open,(self,) + _args, _kwargs)
287 return val
288 def Close(self, *_args, **_kwargs):
289 val = apply(clip_dndc.wxClipboard_Close,(self,) + _args, _kwargs)
290 return val
291 def IsOpened(self, *_args, **_kwargs):
292 val = apply(clip_dndc.wxClipboard_IsOpened,(self,) + _args, _kwargs)
293 return val
294 def AddData(self, *_args, **_kwargs):
295 val = apply(clip_dndc.wxClipboard_AddData,(self,) + _args, _kwargs)
296 _args[0].thisown = 0
297 return val
298 def SetData(self, *_args, **_kwargs):
299 val = apply(clip_dndc.wxClipboard_SetData,(self,) + _args, _kwargs)
300 _args[0].thisown = 0
301 return val
302 def IsSupported(self, *_args, **_kwargs):
303 val = apply(clip_dndc.wxClipboard_IsSupported,(self,) + _args, _kwargs)
304 return val
305 def GetData(self, *_args, **_kwargs):
306 val = apply(clip_dndc.wxClipboard_GetData,(self,) + _args, _kwargs)
307 return val
308 def Clear(self, *_args, **_kwargs):
309 val = apply(clip_dndc.wxClipboard_Clear,(self,) + _args, _kwargs)
310 return val
311 def Flush(self, *_args, **_kwargs):
312 val = apply(clip_dndc.wxClipboard_Flush,(self,) + _args, _kwargs)
313 return val
314 def UsePrimarySelection(self, *_args, **_kwargs):
315 val = apply(clip_dndc.wxClipboard_UsePrimarySelection,(self,) + _args, _kwargs)
316 return val
317 def __repr__(self):
318 return "<C wxClipboard instance at %s>" % (self.this,)
319 class wxClipboard(wxClipboardPtr):
320 def __init__(self,*_args,**_kwargs):
321 self.this = apply(clip_dndc.new_wxClipboard,_args,_kwargs)
322 self.thisown = 1
323
324
325
326
327 class wxDropSourcePtr :
328 def __init__(self,this):
329 self.this = this
330 self.thisown = 0
331 def _setCallbackInfo(self, *_args, **_kwargs):
332 val = apply(clip_dndc.wxDropSource__setCallbackInfo,(self,) + _args, _kwargs)
333 return val
334 def __del__(self,clip_dndc=clip_dndc):
335 if self.thisown == 1 :
336 clip_dndc.delete_wxDropSource(self)
337 def SetData(self, *_args, **_kwargs):
338 val = apply(clip_dndc.wxDropSource_SetData,(self,) + _args, _kwargs)
339 return val
340 def GetDataObject(self, *_args, **_kwargs):
341 val = apply(clip_dndc.wxDropSource_GetDataObject,(self,) + _args, _kwargs)
342 if val: val = wxDataObjectPtr(val)
343 return val
344 def SetCursor(self, *_args, **_kwargs):
345 val = apply(clip_dndc.wxDropSource_SetCursor,(self,) + _args, _kwargs)
346 return val
347 def DoDragDrop(self, *_args, **_kwargs):
348 val = apply(clip_dndc.wxDropSource_DoDragDrop,(self,) + _args, _kwargs)
349 return val
350 def base_GiveFeedback(self, *_args, **_kwargs):
351 val = apply(clip_dndc.wxDropSource_base_GiveFeedback,(self,) + _args, _kwargs)
352 return val
353 def __repr__(self):
354 return "<C wxDropSource instance at %s>" % (self.this,)
355 class wxDropSource(wxDropSourcePtr):
356 def __init__(self,*_args,**_kwargs):
357 self.this = apply(clip_dndc.new_wxDropSource,_args,_kwargs)
358 self.thisown = 1
359 self._setCallbackInfo(self, wxDropSource, 0)
360
361
362
363
364 class wxDropTargetPtr :
365 def __init__(self,this):
366 self.this = this
367 self.thisown = 0
368 def __repr__(self):
369 return "<C wxDropTarget instance at %s>" % (self.this,)
370 class wxDropTarget(wxDropTargetPtr):
371 def __init__(self,this):
372 self.this = this
373
374
375
376
377 class wxPyDropTargetPtr(wxDropTargetPtr):
378 def __init__(self,this):
379 self.this = this
380 self.thisown = 0
381 def _setCallbackInfo(self, *_args, **_kwargs):
382 val = apply(clip_dndc.wxPyDropTarget__setCallbackInfo,(self,) + _args, _kwargs)
383 return val
384 def __del__(self,clip_dndc=clip_dndc):
385 if self.thisown == 1 :
386 clip_dndc.delete_wxPyDropTarget(self)
387 def GetDataObject(self, *_args, **_kwargs):
388 val = apply(clip_dndc.wxPyDropTarget_GetDataObject,(self,) + _args, _kwargs)
389 if val: val = wxDataObjectPtr(val)
390 return val
391 def SetDataObject(self, *_args, **_kwargs):
392 val = apply(clip_dndc.wxPyDropTarget_SetDataObject,(self,) + _args, _kwargs)
393 if _args:_args[0].thisown = 0
394 return val
395 def base_OnEnter(self, *_args, **_kwargs):
396 val = apply(clip_dndc.wxPyDropTarget_base_OnEnter,(self,) + _args, _kwargs)
397 return val
398 def base_OnDragOver(self, *_args, **_kwargs):
399 val = apply(clip_dndc.wxPyDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
400 return val
401 def base_OnLeave(self, *_args, **_kwargs):
402 val = apply(clip_dndc.wxPyDropTarget_base_OnLeave,(self,) + _args, _kwargs)
403 return val
404 def base_OnDrop(self, *_args, **_kwargs):
405 val = apply(clip_dndc.wxPyDropTarget_base_OnDrop,(self,) + _args, _kwargs)
406 return val
407 def GetData(self, *_args, **_kwargs):
408 val = apply(clip_dndc.wxPyDropTarget_GetData,(self,) + _args, _kwargs)
409 return val
410 def __repr__(self):
411 return "<C wxPyDropTarget instance at %s>" % (self.this,)
412 class wxPyDropTarget(wxPyDropTargetPtr):
413 def __init__(self,*_args,**_kwargs):
414 self.this = apply(clip_dndc.new_wxPyDropTarget,_args,_kwargs)
415 self.thisown = 1
416 if _args:_args[0].thisown = 0
417 self._setCallbackInfo(self, wxPyDropTarget)
418
419
420
421
422 class wxTextDropTargetPtr(wxPyDropTargetPtr):
423 def __init__(self,this):
424 self.this = this
425 self.thisown = 0
426 def _setCallbackInfo(self, *_args, **_kwargs):
427 val = apply(clip_dndc.wxTextDropTarget__setCallbackInfo,(self,) + _args, _kwargs)
428 return val
429 def base_OnEnter(self, *_args, **_kwargs):
430 val = apply(clip_dndc.wxTextDropTarget_base_OnEnter,(self,) + _args, _kwargs)
431 return val
432 def base_OnDragOver(self, *_args, **_kwargs):
433 val = apply(clip_dndc.wxTextDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
434 return val
435 def base_OnLeave(self, *_args, **_kwargs):
436 val = apply(clip_dndc.wxTextDropTarget_base_OnLeave,(self,) + _args, _kwargs)
437 return val
438 def base_OnDrop(self, *_args, **_kwargs):
439 val = apply(clip_dndc.wxTextDropTarget_base_OnDrop,(self,) + _args, _kwargs)
440 return val
441 def base_OnData(self, *_args, **_kwargs):
442 val = apply(clip_dndc.wxTextDropTarget_base_OnData,(self,) + _args, _kwargs)
443 return val
444 def __repr__(self):
445 return "<C wxTextDropTarget instance at %s>" % (self.this,)
446 class wxTextDropTarget(wxTextDropTargetPtr):
447 def __init__(self,*_args,**_kwargs):
448 self.this = apply(clip_dndc.new_wxTextDropTarget,_args,_kwargs)
449 self.thisown = 1
450 self._setCallbackInfo(self, wxTextDropTarget)
451
452
453
454
455 class wxFileDropTargetPtr(wxPyDropTargetPtr):
456 def __init__(self,this):
457 self.this = this
458 self.thisown = 0
459 def _setCallbackInfo(self, *_args, **_kwargs):
460 val = apply(clip_dndc.wxFileDropTarget__setCallbackInfo,(self,) + _args, _kwargs)
461 return val
462 def base_OnEnter(self, *_args, **_kwargs):
463 val = apply(clip_dndc.wxFileDropTarget_base_OnEnter,(self,) + _args, _kwargs)
464 return val
465 def base_OnDragOver(self, *_args, **_kwargs):
466 val = apply(clip_dndc.wxFileDropTarget_base_OnDragOver,(self,) + _args, _kwargs)
467 return val
468 def base_OnLeave(self, *_args, **_kwargs):
469 val = apply(clip_dndc.wxFileDropTarget_base_OnLeave,(self,) + _args, _kwargs)
470 return val
471 def base_OnDrop(self, *_args, **_kwargs):
472 val = apply(clip_dndc.wxFileDropTarget_base_OnDrop,(self,) + _args, _kwargs)
473 return val
474 def base_OnData(self, *_args, **_kwargs):
475 val = apply(clip_dndc.wxFileDropTarget_base_OnData,(self,) + _args, _kwargs)
476 return val
477 def __repr__(self):
478 return "<C wxFileDropTarget instance at %s>" % (self.this,)
479 class wxFileDropTarget(wxFileDropTargetPtr):
480 def __init__(self,*_args,**_kwargs):
481 self.this = apply(clip_dndc.new_wxFileDropTarget,_args,_kwargs)
482 self.thisown = 1
483 self._setCallbackInfo(self, wxFileDropTarget)
484
485
486
487
488
489
490 #-------------- FUNCTION WRAPPERS ------------------
491
492 def wxCustomDataFormat(*_args, **_kwargs):
493 val = apply(clip_dndc.wxCustomDataFormat,_args,_kwargs)
494 if val: val = wxDataFormatPtr(val); val.thisown = 1
495 return val
496
497 wxIsDragResultOk = clip_dndc.wxIsDragResultOk
498
499
500
501 #-------------- VARIABLE WRAPPERS ------------------
502
503 wxDF_INVALID = clip_dndc.wxDF_INVALID
504 wxDF_TEXT = clip_dndc.wxDF_TEXT
505 wxDF_BITMAP = clip_dndc.wxDF_BITMAP
506 wxDF_METAFILE = clip_dndc.wxDF_METAFILE
507 wxDF_SYLK = clip_dndc.wxDF_SYLK
508 wxDF_DIF = clip_dndc.wxDF_DIF
509 wxDF_TIFF = clip_dndc.wxDF_TIFF
510 wxDF_OEMTEXT = clip_dndc.wxDF_OEMTEXT
511 wxDF_DIB = clip_dndc.wxDF_DIB
512 wxDF_PALETTE = clip_dndc.wxDF_PALETTE
513 wxDF_PENDATA = clip_dndc.wxDF_PENDATA
514 wxDF_RIFF = clip_dndc.wxDF_RIFF
515 wxDF_WAVE = clip_dndc.wxDF_WAVE
516 wxDF_UNICODETEXT = clip_dndc.wxDF_UNICODETEXT
517 wxDF_ENHMETAFILE = clip_dndc.wxDF_ENHMETAFILE
518 wxDF_FILENAME = clip_dndc.wxDF_FILENAME
519 wxDF_LOCALE = clip_dndc.wxDF_LOCALE
520 wxDF_PRIVATE = clip_dndc.wxDF_PRIVATE
521 wxDF_MAX = clip_dndc.wxDF_MAX
522 cvar = clip_dndc.cvar
523 wxFormatInvalid = wxDataFormatPtr(clip_dndc.cvar.wxFormatInvalid)
524 wxTheClipboard = wxClipboardPtr(clip_dndc.cvar.wxTheClipboard)
525 wxDragError = clip_dndc.wxDragError
526 wxDragNone = clip_dndc.wxDragNone
527 wxDragCopy = clip_dndc.wxDragCopy
528 wxDragMove = clip_dndc.wxDragMove
529 wxDragLink = clip_dndc.wxDragLink
530 wxDragCancel = clip_dndc.wxDragCancel