Update of /cvsroot/pywin32/pywin32/com/win32comext/shell/src
In directory sc8-pr-cvs1:/tmp/cvs-serv19672/src
Modified Files:
shell.cpp
Added Files:
PyICopyHook.cpp PyICopyHook.h
Log Message:
Support ICopyHook
--- NEW FILE: PyICopyHook.cpp ---
// This file implements the ICopyHook Interface and Gateway for Python.
// Generated by makegw.py
#include "shell_pch.h"
#include "PyICopyHook.h"
// @doc - This file contains autoduck documentation
// ---------------------------------------------------
//
// Interface Implementation
PyICopyHook::PyICopyHook(IUnknown *pdisp):
PyIUnknown(pdisp)
{
ob_type = &type;
}
PyICopyHook::~PyICopyHook()
{
}
/* static */ ICopyHook *PyICopyHook::GetI(PyObject *self)
{
return (ICopyHook *)PyIUnknown::GetI(self);
}
// @pymethod |PyICopyHook|CopyCallback|Description of CopyCallback.
PyObject *PyICopyHook::CopyCallback(PyObject *self, PyObject *args)
{
ICopyHook *pICH = GetI(self);
if ( pICH == NULL )
return NULL;
// @pyparm HWND|hwnd||Description for hwnd
// @pyparm int|wFunc||Description for wFunc
// @pyparm int|wFlags||Description for wFlags
// @pyparm string/<o unicode>|srcFile||Description for srcFile
// @pyparm int|srcAttribs||Description for srcAttribs
// @pyparm string/<o unicode>|destFile||Description for destFile
// @pyparm int|destAttribs||Description for destAttribs
PyObject *obsrcFile;
PyObject *obdestFile;
HWND hwnd;
UINT wFunc;
UINT wFlags;
LPTSTR srcFile;
DWORD srcAttribs;
LPTSTR destFile;
DWORD destAttribs;
if ( !PyArg_ParseTuple(args, "liiOlOl:CopyCallback", &hwnd, &wFunc, &wFlags, &obsrcFile, &srcAttribs, &obdestFile, &destAttribs) )
return NULL;
BOOL bPythonIsHappy = TRUE;
if (bPythonIsHappy && !PyWinObject_AsTCHAR(obsrcFile, &srcFile)) bPythonIsHappy = FALSE;
if (bPythonIsHappy && !PyWinObject_AsTCHAR(obdestFile, &destFile)) bPythonIsHappy = FALSE;
if (!bPythonIsHappy) return NULL;
HRESULT hr;
PY_INTERFACE_PRECALL;
hr = pICH->CopyCallback( hwnd, wFunc, wFlags, srcFile, srcAttribs, destFile, destAttribs );
PyWinObject_FreeTCHAR(srcFile);
PyWinObject_FreeTCHAR(destFile);
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
return PyCom_BuildPyException(hr, pICH, IID_IShellCopyHook );
Py_INCREF(Py_None);
return Py_None;
}
// @object PyICopyHook|Description of the interface
static struct PyMethodDef PyICopyHook_methods[] =
{
{ "CopyCallback", PyICopyHook::CopyCallback, 1 }, // @pymeth CopyCallback|Description of CopyCallback
{ NULL }
};
PyComTypeObject PyICopyHook::type("PyICopyHook",
&PyIUnknown::type,
sizeof(PyICopyHook),
PyICopyHook_methods,
GET_PYCOM_CTOR(PyICopyHook));
// ---------------------------------------------------
//
// Gateway Implementation
STDMETHODIMP_(UINT) PyGCopyHook::CopyCallback(
/* [unique][in] */ HWND hwnd,
/* [unique][in] */ UINT wFunc,
/* [unique][in] */ UINT wFlags,
/* [unique][in] */ LPCTSTR srcFile,
/* [unique][in] */ DWORD srcAttribs,
/* [unique][in] */ LPCTSTR destFile,
/* [unique][in] */ DWORD destAttribs)
{
PY_GATEWAY_METHOD;
PyObject *obsrcFile;
PyObject *obdestFile;
obsrcFile = PyWinObject_FromTCHAR((LPTSTR)srcFile);
obdestFile = PyWinObject_FromTCHAR((LPTSTR)destFile);
PyObject *result;
HRESULT hr=InvokeViaPolicy("CopyCallback", &result, "liiOlOl", hwnd, wFunc, wFlags, obsrcFile, srcAttribs, obdestFile, destAttribs);
Py_XDECREF(obsrcFile);
Py_XDECREF(obdestFile);
if (FAILED(hr)) return hr;
if (!PyInt_Check(result) || !PyLong_Check(result)) {
PyErr_Format(PyExc_TypeError, "CopyCallBack should return an int, not a '%s'", result->ob_type->tp_name);
hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/);
} else
hr = PyInt_AsLong(result);
Py_DECREF(result);
return hr;
}
--- NEW FILE: PyICopyHook.h ---
// This file declares the ICopyHook Interface and Gateway for Python.
// Generated by makegw.py
// ---------------------------------------------------
//
// Interface Declaration
class PyICopyHook : public PyIUnknown
{
public:
MAKE_PYCOM_CTOR(PyICopyHook);
static ICopyHook *GetI(PyObject *self);
static PyComTypeObject type;
// The Python methods
static PyObject *CopyCallback(PyObject *self, PyObject *args);
protected:
PyICopyHook(IUnknown *pdisp);
~PyICopyHook();
};
// ---------------------------------------------------
//
// Gateway Declaration
class PyGCopyHook : public PyGatewayBase, public ICopyHook
{
protected:
PyGCopyHook(PyObject *instance) : PyGatewayBase(instance) { ; }
PYGATEWAY_MAKE_SUPPORT2(PyGCopyHook, ICopyHook, IID_IShellCopyHook, PyGatewayBase)
// ICopyHook
STDMETHOD_(UINT, CopyCallback)(
HWND hwnd,
UINT wFunc,
UINT wFlags,
LPCTSTR srcFile,
DWORD srcAttribs,
LPCTSTR destFile,
DWORD destAttribs);
};
Index: shell.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/shell/src/shell.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** shell.cpp 7 Oct 2003 02:31:08 -0000 1.7
--- shell.cpp 7 Oct 2003 05:13:22 -0000 1.8
***************
*** 20,23 ****
--- 20,24 ----
#include "PyIShellFolder.h"
#include "PyIEnumIDList.h"
+ #include "PyICopyHook.h"
#include "PythonCOMRegister.h" // For simpler registration of IIDs etc.
***************
*** 669,672 ****
--- 670,676 ----
PYCOM_INTERFACE_FULL(ShellFolder),
PYCOM_INTERFACE_FULL(EnumIDList),
+ // IID_ICopyHook doesn't exist - hack it up
+ { &IID_IShellCopyHook, "IShellCopyHook", "IID_IShellCopyHook", &PyICopyHook::type, GET_PYGATEWAY_CTOR(PyGCopyHook) },
+ { &IID_IShellCopyHook, "ICopyHook", "IID_ICopyHook", NULL, NULL },
};
|