Update of /cvsroot/pywin32/pywin32/com/win32com/src/extensions
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25558/extensions
Added Files:
PyIDropSource.cpp PyIDropTarget.cpp
Log Message:
Add IDropSource and IDropTarget interfaces.
--- NEW FILE: PyIDropTarget.cpp ---
// This file implements the IDropTarget Interface and Gateway for Python.
// Generated by makegw.py
// @doc
#include "stdafx.h"
#include "PythonCOM.h"
#include "PythonCOMServer.h"
#include "PyIDropTarget.h"
static BOOL PyObject_AsPOINTL(PyObject *ob, POINTL *pp)
{
return PyArg_ParseTuple(ob, "ll", &pp->x, &pp->y);
}
static PyObject *PyObject_FromPOINTL(POINTL &p)
{
return Py_BuildValue("ii", p.x, p.y);
}
// @doc - This file contains autoduck documentation
// ---------------------------------------------------
//
// Interface Implementation
PyIDropTarget::PyIDropTarget(IUnknown *pdisp):
PyIUnknown(pdisp)
{
ob_type = &type;
}
PyIDropTarget::~PyIDropTarget()
{
}
/* static */ IDropTarget *PyIDropTarget::GetI(PyObject *self)
{
return (IDropTarget *)PyIUnknown::GetI(self);
}
// @pymethod |PyIDropTarget|DragEnter|Description of DragEnter.
PyObject *PyIDropTarget::DragEnter(PyObject *self, PyObject *args)
{
IDropTarget *pIDT = GetI(self);
if ( pIDT == NULL )
return NULL;
// @pyparm <o PyIDataObject *>|pDataObj||Description for pDataObj
// @pyparm int|grfKeyState||Description for grfKeyState
POINTL pt;
PyObject *obpt;
// @pyparm (int, int)|pt||Description for pt
PyObject *obpDataObj;
IDataObject *pDataObj;
DWORD grfKeyState;
DWORD dwEffect;
// @pyparm int|pdwEffect||Description for pdwEffect
if ( !PyArg_ParseTuple(args, "OlOl:DragEnter", &obpDataObj, &grfKeyState, &obpt, &dwEffect) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpDataObj, IID_IDataObject, (void **)&pDataObj, TRUE /* bNoneOK */))
bPythonIsHappy = FALSE;
if (bPythonIsHappy && !PyObject_AsPOINTL( obpt, &pt )) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDT->DragEnter( pDataObj, grfKeyState, pt, &dwEffect );
if (pDataObj) pDataObj->Release();
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDT, IID_IDropTarget );
return PyInt_FromLong(dwEffect);
}
// @pymethod |PyIDropTarget|DragOver|Description of DragOver.
PyObject *PyIDropTarget::DragOver(PyObject *self, PyObject *args)
{
IDropTarget *pIDT = GetI(self);
if ( pIDT == NULL )
return NULL;
// @pyparm int|grfKeyState||Description for grfKeyState
POINTL pt;
PyObject *obpt;
// @pyparm (int, int)|pt||Description for pt
DWORD dwEffect;
// @pyparm int|pdwEffect||Description for pdwEffect
DWORD grfKeyState;
if ( !PyArg_ParseTuple(args, "lOl:DragOver", &grfKeyState, &obpt, &dwEffect) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyObject_AsPOINTL( obpt, &pt )) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDT->DragOver( grfKeyState, pt, &dwEffect );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDT, IID_IDropTarget );
return PyInt_FromLong(dwEffect);
}
// @pymethod |PyIDropTarget|DragLeave|Description of DragLeave.
PyObject *PyIDropTarget::DragLeave(PyObject *self, PyObject *args)
{
IDropTarget *pIDT = GetI(self);
if ( pIDT == NULL )
return NULL;
if ( !PyArg_ParseTuple(args, ":DragLeave") )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDT->DragLeave( );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDT, IID_IDropTarget );
Py_INCREF(Py_None);
return Py_None;
}
// @pymethod |PyIDropTarget|Drop|Description of Drop.
PyObject *PyIDropTarget::Drop(PyObject *self, PyObject *args)
{
IDropTarget *pIDT = GetI(self);
if ( pIDT == NULL )
return NULL;
// @pyparm <o PyIDataObject *>|pDataObj||Description for pDataObj
// @pyparm int|grfKeyState||Description for grfKeyState
POINTL pt;
PyObject *obpt;
// @pyparm (int, int)|pt||Description for pt
DWORD dwEffect;
// @pyparm int|dwEffect||Description for dwEffect
PyObject *obpDataObj;
IDataObject * pDataObj;
DWORD grfKeyState;
if ( !PyArg_ParseTuple(args, "OlOi:Drop", &obpDataObj, &grfKeyState, &obpt, &dwEffect) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(obpDataObj, IID_IDataObject, (void **)&pDataObj, TRUE /* bNoneOK */))
bPythonIsHappy = FALSE;
if (bPythonIsHappy && !PyObject_AsPOINTL( obpt, &pt )) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDT->Drop( pDataObj, grfKeyState, pt, &dwEffect );
if (pDataObj) pDataObj->Release();
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDT, IID_IDropTarget );
return PyInt_FromLong(dwEffect);
}
// @object PyIDropTarget|Description of the interface
static struct PyMethodDef PyIDropTarget_methods[] =
{
{ "DragEnter", PyIDropTarget::DragEnter, 1 }, // @pymeth DragEnter|Description of DragEnter
{ "DragOver", PyIDropTarget::DragOver, 1 }, // @pymeth DragOver|Description of DragOver
{ "DragLeave", PyIDropTarget::DragLeave, 1 }, // @pymeth DragLeave|Description of DragLeave
{ "Drop", PyIDropTarget::Drop, 1 }, // @pymeth Drop|Description of Drop
{ NULL }
};
PyComTypeObject PyIDropTarget::type("PyIDropTarget",
&PyIUnknown::type,
sizeof(PyIDropTarget),
PyIDropTarget_methods,
GET_PYCOM_CTOR(PyIDropTarget));
// ---------------------------------------------------
//
// Gateway Implementation
STDMETHODIMP PyGDropTarget::DragEnter(
/* [unique][in] */ IDataObject * pDataObj,
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ DWORD * pdwEffect)
{
PY_GATEWAY_METHOD;
PyObject *obpt = PyObject_FromPOINTL(pt);
if (obpt==NULL) return PyCom_HandlePythonFailureToCOM();
PyObject *obpDataObj;
obpDataObj = PyCom_PyObjectFromIUnknown(pDataObj, IID_IDataObject, TRUE);
PyObject *result;
HRESULT hr=InvokeViaPolicy("DragEnter", &result, "OlOl", obpDataObj, grfKeyState, obpt, *pdwEffect);
Py_XDECREF(obpDataObj);
Py_DECREF(obpt);
if (FAILED(hr)) return hr;
if (result && PyInt_Check(result))
*pdwEffect = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
STDMETHODIMP PyGDropTarget::DragOver(
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ DWORD * pdwEffect)
{
PY_GATEWAY_METHOD;
PyObject *obpt = PyObject_FromPOINTL(pt);
if (obpt==NULL) return PyCom_HandlePythonFailureToCOM();
PyObject *result;
HRESULT hr=InvokeViaPolicy("DragOver", &result, "lOl", grfKeyState, obpt, *pdwEffect);
Py_DECREF(obpt);
if (FAILED(hr)) return hr;
if (result && PyInt_Check(result))
*pdwEffect = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
STDMETHODIMP PyGDropTarget::DragLeave(
void)
{
PY_GATEWAY_METHOD;
HRESULT hr=InvokeViaPolicy("DragLeave", NULL);
return hr;
}
STDMETHODIMP PyGDropTarget::Drop(
/* [unique][in] */ IDataObject * pDataObj,
/* [in] */ DWORD grfKeyState,
/* [in] */ POINTL pt,
/* [out][in] */ DWORD * pdwEffect)
{
PY_GATEWAY_METHOD;
PyObject *obpt = PyObject_FromPOINTL(pt);
if (obpt==NULL) return PyCom_HandlePythonFailureToCOM();
PyObject *obpDataObj;
obpDataObj = PyCom_PyObjectFromIUnknown(pDataObj, IID_IDataObject, TRUE);
PyObject *result;
HRESULT hr=InvokeViaPolicy("Drop", &result, "OlOl", obpDataObj, grfKeyState, obpt, *pdwEffect);
Py_XDECREF(obpDataObj);
Py_DECREF(obpt);
if (FAILED(hr)) return hr;
if (result && PyInt_Check(result))
*pdwEffect = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
--- NEW FILE: PyIDropSource.cpp ---
// This file implements the IDropSource Interface and Gateway for Python.
// Generated by makegw.py
#include "stdafx.h"
#include "PythonCOM.h"
#include "PythonCOMServer.h"
#include "PyIDropSource.h"
// @doc - This file contains autoduck documentation
// ---------------------------------------------------
//
// Interface Implementation
PyIDropSource::PyIDropSource(IUnknown *pdisp):
PyIUnknown(pdisp)
{
ob_type = &type;
}
PyIDropSource::~PyIDropSource()
{
}
/* static */ IDropSource *PyIDropSource::GetI(PyObject *self)
{
return (IDropSource *)PyIUnknown::GetI(self);
}
// @pymethod |PyIDropSource|QueryContinueDrag|Description of QueryContinueDrag.
PyObject *PyIDropSource::QueryContinueDrag(PyObject *self, PyObject *args)
{
IDropSource *pIDS = GetI(self);
if ( pIDS == NULL )
return NULL;
// @pyparm int|fEscapePressed||Description for fEscapePressed
// @pyparm int|grfKeyState||Description for grfKeyState
BOOL fEscapePressed;
DWORD grfKeyState;
if ( !PyArg_ParseTuple(args, "il:QueryContinueDrag", &fEscapePressed, &grfKeyState) )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDS->QueryContinueDrag( fEscapePressed, grfKeyState );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDS, IID_IDropSource );
Py_INCREF(Py_None);
return Py_None;
}
// @pymethod |PyIDropSource|GiveFeedback|Description of GiveFeedback.
PyObject *PyIDropSource::GiveFeedback(PyObject *self, PyObject *args)
{
IDropSource *pIDS = GetI(self);
if ( pIDS == NULL )
return NULL;
// @pyparm int|dwEffect||Description for dwEffect
DWORD dwEffect;
if ( !PyArg_ParseTuple(args, "l:GiveFeedback", &dwEffect) )
return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pIDS->GiveFeedback( dwEffect );
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pIDS, IID_IDropSource );
Py_INCREF(Py_None);
return Py_None;
}
// @object PyIDropSource|Description of the interface
static struct PyMethodDef PyIDropSource_methods[] =
{
{ "QueryContinueDrag", PyIDropSource::QueryContinueDrag, 1 }, // @pymeth QueryContinueDrag|Description of QueryContinueDrag
{ "GiveFeedback", PyIDropSource::GiveFeedback, 1 }, // @pymeth GiveFeedback|Description of GiveFeedback
{ NULL }
};
PyComTypeObject PyIDropSource::type("PyIDropSource",
&PyIUnknown::type,
sizeof(PyIDropSource),
PyIDropSource_methods,
GET_PYCOM_CTOR(PyIDropSource));
// ---------------------------------------------------
//
// Gateway Implementation
STDMETHODIMP PyGDropSource::QueryContinueDrag(
/* [in] */ BOOL fEscapePressed,
/* [in] */ DWORD grfKeyState)
{
PY_GATEWAY_METHOD;
PyObject *result;
HRESULT hr=InvokeViaPolicy("QueryContinueDrag", &result, "il", fEscapePressed, grfKeyState);
if (FAILED(hr)) return hr;
if (PyInt_Check(result))
hr = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
STDMETHODIMP PyGDropSource::GiveFeedback(
/* [in] */ DWORD dwEffect)
{
PY_GATEWAY_METHOD;
PyObject *result;
HRESULT hr=InvokeViaPolicy("GiveFeedback", &result, "l", dwEffect);
if (FAILED(hr)) return hr;
if (PyInt_Check(result))
hr = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
|