Oops, forgot these two files. Part of cfsworks' patch

This commit is contained in:
rdb 2014-10-20 11:02:42 +00:00
parent a65b477734
commit 3ce705519d
2 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,61 @@
// Filename: graphicsWindow_ext.cxx
// Created by: CFSworks (11Oct14)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
#include "graphicsWindow_ext.h"
#ifdef HAVE_PYTHON
////////////////////////////////////////////////////////////////////
// Function: Extension<GraphicsWindow>::add_custom_event_handler
// Access: Published
// Description: Adds a python event handler to be called
// when a window event occurs.
////////////////////////////////////////////////////////////////////
void Extension<GraphicsWindow>::
add_python_event_handler(PyObject* handler, PyObject* name){
PythonGraphicsWindowProc* pgwp = new PythonGraphicsWindowProc(handler, name);
_this->_python_window_proc_classes.insert(pgwp);
_this->add_window_proc(pgwp);
}
////////////////////////////////////////////////////////////////////
// Function: Extension<GraphicsWindow>::remove_custom_event_handler
// Access: Published
// Description: Removes the specified python event handler.
////////////////////////////////////////////////////////////////////
void Extension<GraphicsWindow>::
remove_python_event_handler(PyObject* name){
list<PythonGraphicsWindowProc*> toRemove;
GraphicsWindow::PythonWinProcClasses::iterator iter;
for (iter = _this->_python_window_proc_classes.begin(); iter != _this->_python_window_proc_classes.end(); ++iter) {
PythonGraphicsWindowProc* pgwp = (PythonGraphicsWindowProc*)*iter;
if (PyObject_RichCompareBool(pgwp->get_name(), name, Py_EQ) == 1) {
toRemove.push_back(pgwp);
}
#if PY_MAJOR_VERSION < 3
else if (PyObject_Compare(pgwp->get_name(), name) == 0) {
toRemove.push_back(pgwp);
}
#endif
}
list<PythonGraphicsWindowProc*>::iterator iter2;
for (iter2 = toRemove.begin(); iter2 != toRemove.end(); ++iter2) {
PythonGraphicsWindowProc* pgwp = *iter2;
_this->remove_window_proc(pgwp);
_this->_python_window_proc_classes.erase(pgwp);
delete pgwp;
}
}
#endif // HAVE_PYTHON

View File

@ -0,0 +1,42 @@
// Filename: renderState_ext.h
// Created by: CFSworks (11Oct14)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University. All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license. You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
#ifndef GRAPHICSWINDOW_EXT_H
#define GRAPHICSWINDOW_EXT_H
#include "dtoolbase.h"
#ifdef HAVE_PYTHON
#include "extension.h"
#include "graphicsWindow.h"
#include "pythonGraphicsWindowProc.h"
#include "py_panda.h"
////////////////////////////////////////////////////////////////////
// Class : Extension<GraphicsWindow>
// Description : This class defines the extension methods for
// GraphicsWindow, which are called instead of
// any C++ methods with the same prototype.
////////////////////////////////////////////////////////////////////
template<>
class Extension<GraphicsWindow> : public ExtensionBase<GraphicsWindow> {
public:
void add_python_event_handler(PyObject* handler, PyObject* name);
void remove_python_event_handler(PyObject* name);
};
#endif // HAVE_PYTHON
#endif // GRAPHICSWINDOW_EXT_H