bge.logic.keyboard.getClipboard() and .setClipboard methods

the idea of using methods instead of attributes is to avoid users abusing of the system calls.

Thanks Campbell Barton for reviewing and small corrections
This commit is contained in:
Dalai Felinto
2012-06-27 21:57:33 +00:00
parent a09feb7386
commit 7016538974
4 changed files with 37 additions and 1 deletions

View File

@@ -72,6 +72,20 @@ Game Types (bge.types)
:type: dictionary {:ref:`keycode<keyboard-keys>`::ref:`status<input-status>`, ...}
.. function:: getClipboard()
Gets the clipboard text.
:rtype: string
.. function:: setClipboard(text)
Sets the clipboard text.
:arg text: New clipboard text
:type text: string
.. class:: SCA_PythonMouse(PyObjectPlus)
The current mouse.

View File

@@ -32,6 +32,7 @@ set(INC
../../../intern/container
../../../intern/moto/include
../../../intern/string
../../../intern/ghost
)
set(INC_SYS

View File

@@ -28,6 +28,8 @@
#include "SCA_PythonKeyboard.h"
#include "SCA_IInputDevice.h"
#include "GHOST_C-api.h"
/* ------------------------------------------------------------------------- */
/* Native functions */
/* ------------------------------------------------------------------------- */
@@ -55,6 +57,23 @@ SCA_PythonKeyboard::~SCA_PythonKeyboard()
/* Python functions */
/* ------------------------------------------------------------------------- */
/* clipboard */
static PyObject* gPyGetClipboard(PyObject* args, PyObject* kwds)
{
char *buf = (char *)GHOST_getClipboard(0);
return PyUnicode_FromString(buf?buf:"");
}
static PyObject* gPySetClipboard(PyObject* args, PyObject* value)
{
char* buf;
if (!PyArg_ParseTuple(value,"s:setClipboard",&buf))
Py_RETURN_NONE;
GHOST_putClipboard((GHOST_TInt8 *)buf, 0);
Py_RETURN_NONE;
}
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_PythonKeyboard::Type = {
PyVarObject_HEAD_INIT(NULL, 0)
@@ -79,6 +98,8 @@ PyTypeObject SCA_PythonKeyboard::Type = {
};
PyMethodDef SCA_PythonKeyboard::Methods[] = {
{"getClipboard", (PyCFunction) gPyGetClipboard, METH_VARARGS, "getCliboard doc"},
{"setClipboard", (PyCFunction) gPySetClipboard, METH_VARARGS, "setCliboard doc"},
{NULL,NULL} //Sentinel
};

View File

@@ -3,7 +3,7 @@ Import ('env')
sources = env.Glob('*.cpp') + env.Glob('Joystick/*.cpp')
incs = '. #/intern/string #intern/container'
incs = '. #/intern/string #intern/container #intern/ghost'
incs += ' #/source/gameengine/Expressions #/intern/moto/include'
incs += ' #/source/gameengine/Rasterizer #/source/gameengine/SceneGraph'
incs += ' #/source/blender/blenlib'