wxWidgets/wxPython/include/wx/wxPython/pytree.h
Robin Dunn da32eb53cb Changed (again) how the GIL is aquired and the tstate restored. This
time it's simpler, better, and handles the case where there is a wx
calback/event while the GIL has been released by a non-wxPython
extension module.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-03-24 23:09:59 +00:00

52 lines
1.2 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: pytree.h
// Purpose: Common declarations of tree stuff for wxTreeCtrl in the core
// and wxTreeListCtrl in gizmos
//
// Author: Robin Dunn
//
// Created: 30-April-2003
// RCS-ID: $Id$
// Copyright: (c) 2003 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef __pytree_h__
#define __pytree_h__
class wxPyTreeItemData : public wxTreeItemData {
public:
wxPyTreeItemData(PyObject* obj = NULL) {
if (obj == NULL)
obj = Py_None;
Py_INCREF(obj);
m_obj = obj;
}
~wxPyTreeItemData() {
bool blocked = wxPyBeginBlockThreads();
Py_DECREF(m_obj);
wxPyEndBlockThreads(blocked);
}
PyObject* GetData() {
Py_INCREF(m_obj);
return m_obj;
}
void SetData(PyObject* obj) {
bool blocked = wxPyBeginBlockThreads();
Py_DECREF(m_obj);
wxPyEndBlockThreads(blocked);
m_obj = obj;
Py_INCREF(obj);
}
PyObject* m_obj;
};
#endif