SipGetInfo() is a Python specific function in the CE glue module.

it's defined in win32gui.i, and here's the code fragment.

It looks to me like SipGetInfo is a real win32 function as well, defined in 
sipapi.h in the 
windows ce toolkit.

--

/// FUNCTIONS FROM SIPAPI.H

DWORD SipStatus();

#define SIP_STATUS_UNAVAILABLE  SIP_STATUS_UNAVAILABLE
#define SIP_STATUS_AVAILABLE    SIP_STATUS_AVAILABLE

// BOOL SipSetDefaultRect(RECT *rect); // couldn't convert this
BOOLAPI SipRegisterNotification(HWND hwnd);

BOOLAPI SipShowIM(DWORD tf);

#define SIPF_OFF        SIPF_OFF
#define SIPF_ON         SIPF_ON
#define SIPF_DOCKED     SIPF_DOCKED
#define SIPF_LOCKED     SIPF_LOCKED

#define SPI_SETCOMPLETIONINFO   SPI_SETCOMPLETIONINFO
#define SPI_SETSIPINFO                  SPI_SETSIPINFO                  
#define SPI_GETSIPINFO                  SPI_GETSIPINFO                  
#define SPI_SETCURRENTIM        SPI_SETCURRENTIM        
#define SPI_GETCURRENTIM        SPI_GETCURRENTIM        

%{

// SIPINFO object

class PySIPINFO : public PyObject {
public:
        PySIPINFO(void);
        ~PySIPINFO();

        SIPINFO m_sipInfo;
        /* Python support */
        static PyObject *meth_SetDialogProc(PyObject *self, PyObject *args);

        static void deallocFunc(PyObject *ob);

        static PyObject *getattr(PyObject *self, char *name);
        static int setattr(PyObject *self, char *name, PyObject *v);
#pragma warning( disable : 4251 )
        static struct memberlist memberlist[];
#pragma warning( default : 4251 )

};

#define PySIPINFO_Check(ob)             ((ob)->ob_type == &PySIPINFOType)

// @object PySIPINFO|A Python object representing a SIPINFO structure

PyTypeObject PySIPINFOType = 
{
        PyObject_HEAD_INIT(&PyType_Type)
        0,
        "PySIPINFO",
        sizeof(PySIPINFO),
        0,
        PySIPINFO::deallocFunc,         /* tp_dealloc */
        0,              /* tp_print */
        PySIPINFO::getattr,                             /* tp_getattr */
        PySIPINFO::setattr,                             /* tp_setattr */
        0,                                              /* tp_compare */
        0,                                              /* tp_repr */
        0,                                              /* tp_as_number */
        0,      /* tp_as_sequence */
        0,                                              /* tp_as_mapping */
        0,
        0,                                              /* tp_call */
        0,              /* tp_str */
};

#undef OFF
#define OFF(e) offsetof(PySIPINFO, e)

/*static*/ struct memberlist PySIPINFO::memberlist[] = {
        {"fdwFlags",            T_INT,  OFF(m_sipInfo.fdwFlags)}, // @prop 
integer|fdwFlags|
        {"rcVisibleDesktop",    T_OBJECT, OFF(m_sipInfo.rcVisibleDesktop)}, // 
@prop PyRECT|rcVisibleDesktop
        {"rcSipRect",               T_OBJECT, OFF(m_sipInfo.rcSipRect)},        
// @prop PyRECT|rcSipRect
        {NULL}
};


PySIPINFO::PySIPINFO(void)
{
        ob_type = &PySIPINFOType;
        _Py_NewReference(this);
        memset(&m_sipInfo, 0, sizeof(m_sipInfo));
        m_sipInfo.cbSize = sizeof(m_sipInfo);
}

PySIPINFO::~PySIPINFO(void)
{

}

PyObject *PySIPINFO::getattr(PyObject *self, char *name)
{
//      PyObject *ret = Py_FindMethod(PyWNDCLASS_methods, self, name);
//      if (ret != NULL)
//              return ret;
//      PyErr_Clear();
        PySIPINFO *pW = (PySIPINFO *)self;
        if (strcmp("rcVisibleDesktop", name)==0) {
            PyObject *o;
                o = Py_BuildValue("llll", pW->m_sipInfo.rcVisibleDesktop.left, 
pW->m_sipInfo.rcVisibleDesktop.top, 
                        pW->m_sipInfo.rcVisibleDesktop.right, 
pW->m_sipInfo.rcVisibleDesktop.bottom);

                return o;
        }
        return PyMember_Get((char *)self, memberlist, name);
}

int PySIPINFO::setattr(PyObject *self, char *name, PyObject *v)
{
        if (v == NULL) {
                PyErr_SetString(PyExc_AttributeError, "can't delete SIPINFO 
attributes");
                return -1;
        }
        PySIPINFO *pW = (PySIPINFO *)self;
        if (strcmp("rcVisibleDesktop", name)==0) {
                RECT r;
                if (PyTuple_Check(v) && PyArg_ParseTuple(v, "llll", &r.left, 
&r.top, &r.right, &r.bottom)) {
                        pW->m_sipInfo.rcVisibleDesktop = r;
                        return 0;
                }

                PyErr_SetString(PyExc_TypeError, "rcVisibleDesktop: This param 
must be a tuple of four integers");
                return -1;
        }
        return PyMember_Set((char *)self, memberlist, name, v);
}

/*static*/ void PySIPINFO::deallocFunc(PyObject *ob)
{
        delete (PySIPINFO *)ob;
}

static PyObject *MakeSIPINFO(PyObject *self, PyObject *args)
{
        if (!PyArg_ParseTuple(args, ""))
                return NULL;
        return new PySIPINFO();
}

%}
%native (SIPINFO) MakeSIPINFO;

%{
// @pyswig int|SipGetInfo|Get SIP Info
static PyObject *PySipGetInfo(PyObject *self, PyObject *args)
{
        PyObject *obwc;

        // @pyparm <o PySIPINFO>|SipInfo||The SIPInfo object
        if (!PyArg_ParseTuple(args, "O", &obwc))
                return NULL;
        if (!PySIPINFO_Check(obwc)) {
                PyErr_SetString(PyExc_TypeError, "The object must be a SIPINFO 
object");
                return NULL;
        }
        int bres = SipGetInfo(&((PySIPINFO *)obwc)->m_sipInfo);
        PyObject *res = PyInt_FromLong(bres);
        return res;
}

// @pyswig int|SipSetInfo|Set SIP Info
static PyObject *PySipSetInfo(PyObject *self, PyObject *args)
{
        PyObject *obwc;

        // @pyparm <o PySIPINFO>|SipInfo||The SIPInfo object
        if (!PyArg_ParseTuple(args, "O", &obwc))
                return NULL;
        if (!PySIPINFO_Check(obwc)) {
                PyErr_SetString(PyExc_TypeError, "The object must be a SIPINFO 
object");
                return NULL;
        }
        int bres = SipSetInfo(&((PySIPINFO *)obwc)->m_sipInfo);
        PyObject *res = PyInt_FromLong(bres);
        return res;
}

%}

%native (SipGetInfo) PySipGetInfo;
%native (SipSetInfo) PySipSetInfo;


-- 
Brad Clements,                [EMAIL PROTECTED]   (315)268-1000
http://www.murkworks.com                          (315)268-9812 Fax
http://www.wecanstopspam.org/                   AOL-IM: BKClements

_______________________________________________
PythonCE mailing list
[EMAIL PROTECTED]
http://mail.python.org/mailman/listinfo/pythonce

Reply via email to