Compare commits
267 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f011ce2cb9 | ||
|
|
fe8dc36f90 | ||
|
|
db6f1e3306 | ||
|
|
d30a8672c3 | ||
|
|
afc9a7e10b | ||
|
|
a8a07b77f8 | ||
|
|
98be0df6a5 | ||
|
|
b2b14fe9b7 | ||
|
|
481ba5aa3e | ||
|
|
8ddbd3167b | ||
|
|
65d8f9fcef | ||
|
|
7b8d2925dd | ||
|
|
c78b4686a1 | ||
|
|
e76b2b76f5 | ||
|
|
2a634aea05 | ||
|
|
7bfbbf3cb7 | ||
|
|
aec20b21a5 | ||
|
|
ebeae9d084 | ||
|
|
31804c2adc | ||
|
|
c31c14cdfb | ||
|
|
879e4bb14d | ||
|
|
6575ac8d39 | ||
|
|
1af53541bf | ||
|
|
2a87b74bfe | ||
|
|
792504f978 | ||
|
|
7b04273736 | ||
|
|
30118e265d | ||
|
|
770c8bda73 | ||
|
|
16f4378fed | ||
|
|
80c02f16e5 | ||
|
|
b643a3f8ab | ||
|
|
8145f2a7e2 | ||
|
|
25638d3f80 | ||
|
|
3318a40ab1 | ||
|
|
ba062e1b89 | ||
|
|
3ee5bec244 | ||
|
|
ae0f62ed80 | ||
|
|
64bec138e1 | ||
|
|
1105a5be3a | ||
|
|
815fae961f | ||
|
|
8c1fbc3751 | ||
|
|
ad8992e9e0 | ||
|
|
41f1c30372 | ||
|
|
720a6f4cad | ||
|
|
48669462d0 | ||
|
|
66f4ccbe5d | ||
|
|
508e59c091 | ||
|
|
93bb5d777e | ||
|
|
e3814f27dd | ||
|
|
2f70b10471 | ||
|
|
e2524f6abb | ||
|
|
4985f114a3 | ||
|
|
791f70629c | ||
|
|
8160e529e2 | ||
|
|
45ad11e5be | ||
|
|
e031567fac | ||
|
|
e29d2e460b | ||
|
|
fbf3a8b07a | ||
|
|
dde75099f2 | ||
|
|
64ffc4f61b | ||
|
|
50bf9a570b | ||
|
|
b30e998e65 | ||
|
|
c230fad427 | ||
|
|
6fe19dbb88 | ||
|
|
8060e3ee87 | ||
|
|
b50186e9f3 | ||
|
|
4ba7cd90d6 | ||
|
|
f57d4d4dbc | ||
|
|
5c076e1c53 | ||
|
|
67d6455fa5 | ||
|
|
15ceed791f | ||
|
|
f55d088d44 | ||
|
|
07d0879700 | ||
|
|
2e1ff21938 | ||
|
|
0971ac7c4f | ||
|
|
0e8b50c9b0 | ||
|
|
b7f593d99e | ||
|
|
6acb5f9bc7 | ||
|
|
9f05c7dad5 | ||
|
|
6c47624e92 | ||
|
|
2683577b7a | ||
|
|
ed94eda798 | ||
|
|
620b46650a | ||
|
|
7202e2b8df | ||
|
|
1cefc09118 | ||
|
|
b841afdb5c | ||
|
|
401651e26c | ||
|
|
66d96ef4b6 | ||
|
|
c33a78cdd4 | ||
|
|
18383549d6 | ||
|
|
6869a49bc3 | ||
|
|
1874425448 | ||
|
|
de291d1d0f | ||
|
|
e90255bf7e | ||
|
|
676b2b579d | ||
|
|
f6c818b21d | ||
|
|
66a0bbf578 | ||
|
|
1f1fbfbfa8 | ||
|
|
d9dd319232 | ||
|
|
edaefbce48 | ||
|
|
75843bf45a | ||
|
|
1e29ab6592 | ||
|
|
a2cb6fe025 | ||
|
|
2e69baa4f5 | ||
|
|
009aef9f1b | ||
|
|
9e8916e111 | ||
|
|
b94ad1e4de | ||
|
|
2cec2a1186 | ||
|
|
6f777cd227 | ||
|
|
2db3d80e6c | ||
|
|
f367f0ada3 | ||
|
|
3a0b98ef4b | ||
|
|
d86765e535 | ||
|
|
846759b324 | ||
|
|
e92b601620 | ||
|
|
cf61c80588 | ||
|
|
a92a006fd9 | ||
|
|
f16a241b13 | ||
|
|
f7b0dca2cb | ||
|
|
bfcc30ab86 | ||
|
|
d29d9ad5ac | ||
|
|
b55ea7fd5e | ||
|
|
e9de49255b | ||
|
|
8e43e10f4e | ||
|
|
7ee30db078 | ||
|
|
9afe76796d | ||
|
|
08d202e824 | ||
|
|
700a4cf95c | ||
|
|
2487a08062 | ||
|
|
57b291fe66 | ||
|
|
6e6e7f528d | ||
|
|
a7e4ddb8ca | ||
|
|
f5f9c23c5f | ||
|
|
49ad2f9c1d | ||
|
|
1c4ebcbe8a | ||
|
|
24838672f0 | ||
|
|
d0decf40df | ||
|
|
b6068afc3e | ||
|
|
e59a9f833f | ||
|
|
5eda2f1365 | ||
|
|
01bd258e10 | ||
|
|
b3e839c1f8 | ||
|
|
e9b959ed8e | ||
|
|
d5b645d3ab | ||
|
|
65d4cf2be4 | ||
|
|
6e9b7ffd59 | ||
|
|
138d8c4268 | ||
|
|
f5a1baac2f | ||
|
|
34d424f89d | ||
|
|
544414cc03 | ||
|
|
c31c7c60da | ||
|
|
8492b69d33 | ||
|
|
84b0364b5d | ||
|
|
3da60153c0 | ||
|
|
4fdc15ef7f | ||
|
|
74e10eef63 | ||
|
|
88acbd47db | ||
|
|
14c00d3325 | ||
|
|
7b2c4242ad | ||
|
|
d00af325c6 | ||
|
|
bb68848f4a | ||
|
|
69d0627af3 | ||
|
|
8dd72c2630 | ||
|
|
2a26f35607 | ||
|
|
d2e1893762 | ||
|
|
00f51edd5b | ||
|
|
9f00c67682 | ||
|
|
f0ea617acb | ||
|
|
48015c2bdc | ||
|
|
3c7e551a99 | ||
|
|
8e1c2702f6 | ||
|
|
a17bf41305 | ||
|
|
e3502d00fc | ||
|
|
00bd60cfda | ||
|
|
247116d320 | ||
|
|
44c67274f0 | ||
|
|
bbf66078ea | ||
|
|
b633bd4c2e | ||
|
|
a87d114210 | ||
|
|
7942a9053d | ||
|
|
d44123b26e | ||
|
|
8270b38ecf | ||
|
|
b6a0810e70 | ||
|
|
5e08e864e7 | ||
|
|
44e1d257ec | ||
|
|
57894b73b7 | ||
|
|
a8e05ed6fe | ||
|
|
9a78c19fb8 | ||
|
|
40938ef366 | ||
|
|
a713e377bb | ||
|
|
fae2dfd9b1 | ||
|
|
d129ca02f6 | ||
|
|
8a81e8da21 | ||
|
|
6c8ad3b83f | ||
|
|
d771081005 | ||
|
|
609f6bc889 | ||
|
|
151111bde2 | ||
|
|
8d8c4cf308 | ||
|
|
d912655b5a | ||
|
|
c4994bc1ab | ||
|
|
09ef995719 | ||
|
|
035265df10 | ||
|
|
7a5d2e693b | ||
|
|
aa091e00ef | ||
|
|
fe4dd9d63f | ||
|
|
d68d90a144 | ||
|
|
75bf7f24b8 | ||
|
|
3482e2c114 | ||
|
|
7de55917c9 | ||
|
|
5922676bb1 | ||
|
|
9a8531bfd6 | ||
|
|
238222df8e | ||
|
|
dffc9a21ea | ||
|
|
6cd17da797 | ||
|
|
10269a2c32 | ||
|
|
3ab2d7b8c3 | ||
|
|
51dad59dc7 | ||
|
|
ec45601aa1 | ||
|
|
9dd8f98e73 | ||
|
|
a0566f9928 | ||
|
|
7eae54e157 | ||
|
|
81f264913e | ||
|
|
f10f4f70d4 | ||
|
|
5902ca2e66 | ||
|
|
0b6bafdd44 | ||
|
|
673a7d1bcc | ||
|
|
5d05c840bf | ||
|
|
e3539a09a8 | ||
|
|
ef45b5a924 | ||
|
|
cab3b37b78 | ||
|
|
b166a72ccf | ||
|
|
e37426c8c4 | ||
|
|
8ec6934396 | ||
|
|
6f872f484c | ||
|
|
304a265840 | ||
|
|
e6f0d69532 | ||
|
|
420cc076b3 | ||
|
|
f16324eb57 | ||
|
|
17e3d0da85 | ||
|
|
48a1b539a4 | ||
|
|
116a691516 | ||
|
|
d4760309b7 | ||
|
|
d454f8a12c | ||
|
|
6848e692ce | ||
|
|
c22e33a6c8 | ||
|
|
e9f082e83c | ||
|
|
f62ba98e88 | ||
|
|
9ef344629a | ||
|
|
794104582e | ||
|
|
dc5ef0b998 | ||
|
|
ae0e33ff72 | ||
|
|
c7385c45c4 | ||
|
|
b731b70fb2 | ||
|
|
09810443bf | ||
|
|
fa59041a97 | ||
|
|
f2cecb5697 | ||
|
|
f3d69f65d1 | ||
|
|
7d364bde65 | ||
|
|
0b5d8a1dec | ||
|
|
f43d92fab4 | ||
|
|
d82b8dbd8d | ||
|
|
da39716cc9 | ||
|
|
b6f38556bd | ||
|
|
7eb5694e17 | ||
|
|
b385e0c3ed | ||
|
|
0d0981309e | ||
|
|
1783db758c |
301 changed files with 7809 additions and 4268 deletions
|
|
@ -5,8 +5,7 @@ project(pysidebindings)
|
||||||
cmake_minimum_required(VERSION 2.6)
|
cmake_minimum_required(VERSION 2.6)
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Macros/
|
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Macros/
|
||||||
${CMAKE_MODULE_PATH})
|
${CMAKE_MODULE_PATH})
|
||||||
find_package(GeneratorRunner 0.6.11 REQUIRED)
|
find_package(Shiboken 1.1.1 REQUIRED)
|
||||||
find_package(Shiboken 1.0.4 REQUIRED)
|
|
||||||
find_package(Qt4 4.5.0 REQUIRED)
|
find_package(Qt4 4.5.0 REQUIRED)
|
||||||
find_file(GL_H "gl.h" PATH_SUFFIXES "GL")
|
find_file(GL_H "gl.h" PATH_SUFFIXES "GL")
|
||||||
include(FindQt4Extra)
|
include(FindQt4Extra)
|
||||||
|
|
@ -32,7 +31,7 @@ endif()
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- /GR /EHsc /DNOCOLOR /DWIN32 /D_WINDOWS /D_SCL_SECURE_NO_WARNINGS")
|
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- /GR /EHsc /DNOCOLOR /DWIN32 /D_WINDOWS /D_SCL_SECURE_NO_WARNINGS")
|
||||||
else()
|
else()
|
||||||
if(CMAKE_HOST_UNIX)
|
if(CMAKE_HOST_UNIX AND NOT CYGWIN)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden -Wno-strict-aliasing")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden -Wno-strict-aliasing")
|
||||||
endif()
|
endif()
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-g")
|
set(CMAKE_CXX_FLAGS_DEBUG "-g")
|
||||||
|
|
@ -62,8 +61,8 @@ endif()
|
||||||
|
|
||||||
set(BINDING_NAME PySide)
|
set(BINDING_NAME PySide)
|
||||||
set(BINDING_API_MAJOR_VERSION "1")
|
set(BINDING_API_MAJOR_VERSION "1")
|
||||||
set(BINDING_API_MINOR_VERSION "0")
|
set(BINDING_API_MINOR_VERSION "1")
|
||||||
set(BINDING_API_MICRO_VERSION "4")
|
set(BINDING_API_MICRO_VERSION "1")
|
||||||
set(BINDING_API_RELEASE_LEVEL "final") # alpha, beta, rc, or final
|
set(BINDING_API_RELEASE_LEVEL "final") # alpha, beta, rc, or final
|
||||||
set(BINDING_API_SERIAL 1) # leave as 0 when release level is final
|
set(BINDING_API_SERIAL 1) # leave as 0 when release level is final
|
||||||
set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version" FORCE)
|
set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version" FORCE)
|
||||||
|
|
@ -142,7 +141,7 @@ add_custom_target(dist
|
||||||
if (NOT SITE_PACKAGE)
|
if (NOT SITE_PACKAGE)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${SHIBOKEN_PYTHON_INTERPRETER} -c "from distutils import sysconfig; \\
|
COMMAND ${SHIBOKEN_PYTHON_INTERPRETER} -c "from distutils import sysconfig; \\
|
||||||
print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}')"
|
print(sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
|
||||||
OUTPUT_VARIABLE SITE_PACKAGE
|
OUTPUT_VARIABLE SITE_PACKAGE
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
if (NOT SITE_PACKAGE)
|
if (NOT SITE_PACKAGE)
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,6 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/global.h.in"
|
||||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in"
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY)
|
"${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY)
|
||||||
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/private.py"
|
|
||||||
"${CMAKE_BINARY_DIR}/PySide/private.py")
|
|
||||||
|
|
||||||
HAS_QT_MODULE(QT_QTCORE_FOUND QtCore)
|
HAS_QT_MODULE(QT_QTCORE_FOUND QtCore)
|
||||||
HAS_QT_MODULE(QT_QTGUI_FOUND QtGui)
|
HAS_QT_MODULE(QT_QTGUI_FOUND QtGui)
|
||||||
HAS_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork)
|
HAS_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork)
|
||||||
|
|
@ -34,7 +31,7 @@ HAS_QT_MODULE(QT_PHONON_FOUND phonon)
|
||||||
HAS_QT_MODULE(QT_QTDECLARATIVE_FOUND QtDeclarative)
|
HAS_QT_MODULE(QT_QTDECLARATIVE_FOUND QtDeclarative)
|
||||||
|
|
||||||
# install
|
# install
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/__init__.py" "${CMAKE_CURRENT_BINARY_DIR}/private.py"
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/__init__.py"
|
||||||
DESTINATION "${SITE_PACKAGE}/${BINDING_NAME}${pyside_SUFFIX}")
|
DESTINATION "${SITE_PACKAGE}/${BINDING_NAME}${pyside_SUFFIX}")
|
||||||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_templates.xml
|
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_templates.xml
|
||||||
DESTINATION share/PySide${pyside_SUFFIX}/typesystems)
|
DESTINATION share/PySide${pyside_SUFFIX}/typesystems)
|
||||||
|
|
|
||||||
|
|
@ -37,14 +37,12 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_WIN)
|
if(ENABLE_WIN)
|
||||||
set(QtCore_typesystem "typesystem_core_win.xml")
|
set(SPECIFIC_OS_FILES
|
||||||
set(QtCore_extra_SRC
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/msg_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/msg_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/point_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/point_wrapper.cpp
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(QtCore_typesystem "typesystem_core.xml")
|
set(SPECIFIC_OS_FILES "")
|
||||||
set(QtCore_extra_SRC "")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(QtCore_SRC
|
set(QtCore_SRC
|
||||||
|
|
@ -146,10 +144,14 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamreader_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamwriter_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamwriter_wrapper.cpp
|
||||||
${QtCore_46_SRC}
|
${QtCore_46_SRC}
|
||||||
${QtCore_47_SRC}
|
${QtCore_47_SRC}
|
||||||
${QtCore_extra_SRC}
|
${SPECIFIC_OS_FILES}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtCore_typesystem_path "")
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/typesystem_core.xml.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/typesystem_core.xml" @ONLY)
|
||||||
|
|
||||||
|
set(QtCore_typesystem_path "${QtCore_SOURCE_DIR}")
|
||||||
|
|
||||||
set(QtCore_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtCore_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/
|
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
@ -168,4 +170,4 @@ create_pyside_module(QtCore
|
||||||
QtCore_typesystem_path
|
QtCore_typesystem_path
|
||||||
QtCore_SRC
|
QtCore_SRC
|
||||||
QtCore_gluecode
|
QtCore_gluecode
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/${QtCore_typesystem})
|
${CMAKE_CURRENT_BINARY_DIR}/typesystem_core.xml)
|
||||||
|
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template <>
|
|
||||||
struct Converter<HWND__>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isConvertible(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
return PyCObject_Check(pyobj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline PyObject* toPython(void* cppobj)
|
|
||||||
{
|
|
||||||
// not supported
|
|
||||||
Q_ASSERT(true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(HWND__ cppobj)
|
|
||||||
{
|
|
||||||
return PyCObject_FromVoidPtr(&cppobj, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static HWND__ toCpp(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
return *((HWND__*) PyCObject_AsVoidPtr(pyobj));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -18,7 +18,7 @@ static Py_ssize_t SbkQByteArray_readbufferproc(PyObject* self, Py_ssize_t segmen
|
||||||
if (segment || !Shiboken::Object::isValid(self))
|
if (segment || !Shiboken::Object::isValid(self))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
QByteArray* cppSelf = Shiboken::Converter<QByteArray*>::toCpp(self);
|
QByteArray* cppSelf = %CONVERTTOCPP[QByteArray*](self);
|
||||||
*ptrptr = reinterpret_cast<void*>(cppSelf->data());
|
*ptrptr = reinterpret_cast<void*>(cppSelf->data());
|
||||||
return cppSelf->size();
|
return cppSelf->size();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ qreal PySideEasingCurveFunctor::operator()(qreal progress)
|
||||||
PyObject* result = PyObject_CallObject(m_func, args);
|
PyObject* result = PyObject_CallObject(m_func, args);
|
||||||
qreal cppResult = 0.0;
|
qreal cppResult = 0.0;
|
||||||
if (result) {
|
if (result) {
|
||||||
cppResult = Shiboken::Converter<qreal>::toCpp(result);
|
Shiboken::Conversions::pythonToCppCopy(Shiboken::Conversions::PrimitiveTypeConverter<qreal>(), result, &cppResult);
|
||||||
Py_DECREF(result);
|
Py_DECREF(result);
|
||||||
}
|
}
|
||||||
Py_DECREF(args);
|
Py_DECREF(args);
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,18 @@ static bool isDecorator(PyObject* method, PyObject* self)
|
||||||
reinterpret_cast<PyMethodObject*>(method)->im_func;
|
reinterpret_cast<PyMethodObject*>(method)->im_func;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool getReceiver(PyObject* callback, QObject** receiver, PyObject** self)
|
static bool getReceiver(QObject *source, const char* signal, PyObject* callback, QObject** receiver, PyObject** self, QByteArray* callbackSig)
|
||||||
{
|
{
|
||||||
bool forceGlobalReceiver = false;
|
bool forceGlobalReceiver = false;
|
||||||
if (PyMethod_Check(callback)) {
|
if (PyMethod_Check(callback)) {
|
||||||
*self = PyMethod_GET_SELF(callback);
|
*self = PyMethod_GET_SELF(callback);
|
||||||
if (Shiboken::Converter<QObject*>::checkType(*self))
|
if (%CHECKTYPE[QObject*](*self))
|
||||||
*receiver = Shiboken::Converter<QObject*>::toCpp(*self);
|
*receiver = %CONVERTTOCPP[QObject*](*self);
|
||||||
forceGlobalReceiver = isDecorator(callback, *self);
|
forceGlobalReceiver = isDecorator(callback, *self);
|
||||||
} else if (PyCFunction_Check(callback)) {
|
} else if (PyCFunction_Check(callback)) {
|
||||||
*self = PyCFunction_GET_SELF(callback);
|
*self = PyCFunction_GET_SELF(callback);
|
||||||
if (*self && Shiboken::Converter<QObject*>::checkType(*self))
|
if (*self && %CHECKTYPE[QObject*](*self))
|
||||||
*receiver = Shiboken::Converter<QObject*>::toCpp(*self);
|
*receiver = %CONVERTTOCPP[QObject*](*self);
|
||||||
} else if (PyCallable_Check(callback)) {
|
} else if (PyCallable_Check(callback)) {
|
||||||
// Ok, just a callable object
|
// Ok, just a callable object
|
||||||
*receiver = 0;
|
*receiver = 0;
|
||||||
|
|
@ -27,9 +27,20 @@ static bool getReceiver(PyObject* callback, QObject** receiver, PyObject** self)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool usingGlobalReceiver = !*receiver || forceGlobalReceiver;
|
bool usingGlobalReceiver = !*receiver || forceGlobalReceiver;
|
||||||
|
|
||||||
|
// Check if this callback is a overwrite of a non-virtual Qt slot.
|
||||||
|
if (!usingGlobalReceiver && receiver && self) {
|
||||||
|
*callbackSig = PySide::Signal::getCallbackSignature(signal, *receiver, callback, usingGlobalReceiver).toAscii();
|
||||||
|
const QMetaObject* metaObject = (*receiver)->metaObject();
|
||||||
|
int slotIndex = metaObject->indexOfSlot(callbackSig->constData());
|
||||||
|
if (slotIndex != -1 && slotIndex < metaObject->methodOffset() && PyMethod_Check(callback))
|
||||||
|
usingGlobalReceiver = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (usingGlobalReceiver) {
|
if (usingGlobalReceiver) {
|
||||||
PySide::SignalManager& signalManager = PySide::SignalManager::instance();
|
PySide::SignalManager& signalManager = PySide::SignalManager::instance();
|
||||||
*receiver = signalManager.globalReceiver();
|
*receiver = signalManager.globalReceiver(source, callback);
|
||||||
|
*callbackSig = PySide::Signal::getCallbackSignature(signal, *receiver, callback, usingGlobalReceiver).toAscii();
|
||||||
}
|
}
|
||||||
|
|
||||||
return usingGlobalReceiver;
|
return usingGlobalReceiver;
|
||||||
|
|
@ -59,40 +70,48 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject
|
||||||
return false;
|
return false;
|
||||||
signal++;
|
signal++;
|
||||||
|
|
||||||
if (!PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal))
|
int signalIndex = PySide::SignalManager::registerMetaMethodGetIndex(source, signal, QMetaMethod::Signal);
|
||||||
|
if (signalIndex == -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
int signalIndex = source->metaObject()->indexOfMethod(signal);
|
|
||||||
|
|
||||||
PySide::SignalManager& signalManager = PySide::SignalManager::instance();
|
PySide::SignalManager& signalManager = PySide::SignalManager::instance();
|
||||||
|
|
||||||
// Extract receiver from callback
|
// Extract receiver from callback
|
||||||
QObject* receiver = 0;
|
QObject* receiver = 0;
|
||||||
PyObject* self = 0;
|
PyObject* self = 0;
|
||||||
bool usingGlobalReceiver = getReceiver(callback, &receiver, &self);
|
QByteArray callbackSig;
|
||||||
|
bool usingGlobalReceiver = getReceiver(source, signal, callback, &receiver, &self, &callbackSig);
|
||||||
if (receiver == 0 && self == 0)
|
if (receiver == 0 && self == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const QMetaObject* metaObject = receiver->metaObject();
|
const QMetaObject* metaObject = receiver->metaObject();
|
||||||
const QByteArray callbackSig = PySide::Signal::getCallbackSignature(signal, receiver, callback, usingGlobalReceiver).toAscii();
|
|
||||||
const char* slot = callbackSig.constData();
|
const char* slot = callbackSig.constData();
|
||||||
int slotIndex = metaObject->indexOfSlot(slot);
|
int slotIndex = metaObject->indexOfSlot(slot);
|
||||||
|
|
||||||
if (slotIndex == -1) {
|
if (slotIndex == -1) {
|
||||||
if (!usingGlobalReceiver && self && !Shiboken::Object::hasCppWrapper((SbkObject*)self)) {
|
if (!usingGlobalReceiver && self && !Shiboken::Object::hasCppWrapper((SbkObject*)self)) {
|
||||||
qWarning() << "You can't add dynamic slots on an object originated from C++.";
|
qWarning() << "You can't add dynamic slots on an object originated from C++.";
|
||||||
|
if (usingGlobalReceiver)
|
||||||
|
signalManager.releaseGlobalReceiver(source, receiver);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (usingGlobalReceiver) {
|
|
||||||
signalManager.addGlobalSlot(slot, callback);
|
if (usingGlobalReceiver)
|
||||||
} else {
|
slotIndex = signalManager.globalReceiverSlotIndex(receiver, slot);
|
||||||
if (!PySide::SignalManager::registerMetaMethod(receiver, slot, QMetaMethod::Slot))
|
else
|
||||||
|
slotIndex = PySide::SignalManager::registerMetaMethodGetIndex(receiver, slot, QMetaMethod::Slot);
|
||||||
|
|
||||||
|
if (slotIndex == -1) {
|
||||||
|
if (usingGlobalReceiver)
|
||||||
|
signalManager.releaseGlobalReceiver(source, receiver);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
slotIndex = metaObject->indexOfSlot(slot);
|
|
||||||
}
|
}
|
||||||
if (QMetaObject::connect(source, signalIndex, receiver, slotIndex, type)) {
|
if (QMetaObject::connect(source, signalIndex, receiver, slotIndex, type)) {
|
||||||
if (usingGlobalReceiver)
|
if (usingGlobalReceiver)
|
||||||
signalManager.globalReceiverConnectNotify(source, slotIndex);
|
signalManager.notifyGlobalReceiver(receiver);
|
||||||
#ifndef AVOID_PROTECTED_HACK
|
#ifndef AVOID_PROTECTED_HACK
|
||||||
source->connectNotify(signal - 1);
|
source->connectNotify(signal - 1);
|
||||||
#else
|
#else
|
||||||
|
|
@ -103,6 +122,10 @@ static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (usingGlobalReceiver)
|
||||||
|
signalManager.releaseGlobalReceiver(source, receiver);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,27 +140,28 @@ static bool qobjectDisconnectCallback(QObject* source, const char* signal, PyObj
|
||||||
// Extract receiver from callback
|
// Extract receiver from callback
|
||||||
QObject* receiver = 0;
|
QObject* receiver = 0;
|
||||||
PyObject* self = 0;
|
PyObject* self = 0;
|
||||||
bool usingGlobalReceiver = getReceiver(callback, &receiver, &self);
|
QByteArray callbackSig;
|
||||||
|
bool usingGlobalReceiver = getReceiver(NULL, signal, callback, &receiver, &self, &callbackSig);
|
||||||
if (receiver == 0 && self == 0)
|
if (receiver == 0 && self == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const QMetaObject* metaObject = receiver->metaObject();
|
const QMetaObject* metaObject = receiver->metaObject();
|
||||||
const QByteArray callbackSig = PySide::Signal::getCallbackSignature(signal, receiver, callback, usingGlobalReceiver).toAscii();
|
int signalIndex = source->metaObject()->indexOfSignal(++signal);
|
||||||
QByteArray qtSlotName(callbackSig);
|
int slotIndex = -1;
|
||||||
qtSlotName = qtSlotName.prepend('1');
|
|
||||||
|
slotIndex = metaObject->indexOfSlot(callbackSig);
|
||||||
|
|
||||||
|
if (QMetaObject::disconnectOne(source, signalIndex, receiver, slotIndex)) {
|
||||||
|
if (usingGlobalReceiver)
|
||||||
|
signalManager.releaseGlobalReceiver(source, receiver);
|
||||||
|
|
||||||
if (QObject::disconnect(source, signal, receiver, qtSlotName.constData())) {
|
|
||||||
if (usingGlobalReceiver) {
|
|
||||||
int slotIndex = metaObject->indexOfSlot(callbackSig.constData());
|
|
||||||
signalManager.globalReceiverDisconnectNotify(source, slotIndex);
|
|
||||||
#ifndef AVOID_PROTECTED_HACK
|
#ifndef AVOID_PROTECTED_HACK
|
||||||
source->disconnectNotify(signal - 1);
|
source->disconnectNotify(callbackSig);
|
||||||
#else
|
#else
|
||||||
// Need to cast to QObjectWrapper* and call the public version of
|
// Need to cast to QObjectWrapper* and call the public version of
|
||||||
// connectNotify when avoiding the protected hack.
|
// connectNotify when avoiding the protected hack.
|
||||||
reinterpret_cast<QObjectWrapper*>(source)->disconnectNotify(signal - 1);
|
reinterpret_cast<QObjectWrapper*>(source)->disconnectNotify(callbackSig);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
QList<QByteArray> version = QByteArray(qVersion()).split('.');
|
|
||||||
PyObject *pyQtVersion = Shiboken::makeTuple(version[0].toInt(), version[1].toInt(), version[2].toInt());
|
|
||||||
|
|
||||||
PyModule_AddStringConstant(module, "__version__", qVersion());
|
|
||||||
PyModule_AddObject(module, "__version_info__", pyQtVersion);
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template <>
|
|
||||||
struct Converter<QBool> : public ValueTypeConverter<QBool>
|
|
||||||
{
|
|
||||||
using ValueTypeConverter<QBool>::toPython;
|
|
||||||
|
|
||||||
static PyObject* toPython(const QBool& cppobj)
|
|
||||||
{
|
|
||||||
return PyBool_FromLong((bool) cppobj);
|
|
||||||
}
|
|
||||||
static QBool toCpp(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
return QBool(pyobj == Py_True);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
inline bool Converter<QByteArray>::checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QByteArray>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Converter<QByteArray>::isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (ValueTypeConverter<QByteArray>::isConvertible(pyObj))
|
|
||||||
return true;
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType< ::QByteArray >());
|
|
||||||
return Shiboken::Converter<const char *>::checkType(pyObj)
|
|
||||||
|| (ObjectType::isExternalConvertible(shiboType, pyObj));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline QByteArray Converter<QByteArray>::toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (pyObj == Py_None)
|
|
||||||
return 0;
|
|
||||||
else if (PyObject_TypeCheck(pyObj, SbkType<QByteArray>()))
|
|
||||||
return *Converter<QByteArray*>::toCpp(pyObj);
|
|
||||||
else if (PyString_Check(pyObj))
|
|
||||||
return QByteArray(PyString_AS_STRING(pyObj), PyString_GET_SIZE(pyObj));
|
|
||||||
else
|
|
||||||
return ValueTypeConverter<QByteArray>::toCpp(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline PyObject* Converter<QByteArray>::toPython(const ::QByteArray& cppObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QByteArray>::toPython(cppObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct Converter<QChar>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return PyString_Check(pyObj) && (PyString_Size(pyObj) == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return (PyString_Check(pyObj) && (PyString_Size(pyObj) == 1))
|
|
||||||
|| pyObj == Py_None
|
|
||||||
|| PyInt_Check(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static QChar toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (PyString_Check(pyObj) && PyString_Size(pyObj) == 1)
|
|
||||||
return QChar(Shiboken::Converter<char >::toCpp(pyObj));
|
|
||||||
else if (PyInt_Check(pyObj))
|
|
||||||
return QChar(Shiboken::Converter<int >::toCpp(pyObj));
|
|
||||||
return QChar();
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(void* cppObj) { return toPython(*reinterpret_cast<QChar*>(cppObj)); }
|
|
||||||
static PyObject* toPython(const QChar& cppObj)
|
|
||||||
{
|
|
||||||
wchar_t c = (wchar_t)cppObj.unicode();
|
|
||||||
PyObject* pyObj = PyUnicode_FromWideChar(&c, 1);
|
|
||||||
return pyObj;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
inline bool Converter<QDate>::checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QDate>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline PyObject* Converter<QDate>::toPython(const ::QDate& cppObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QDate>::toPython(cppObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Converter<QDate>::isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (ValueTypeConverter<QDate>::isConvertible(pyObj))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType< ::QDate >());
|
|
||||||
return PyDate_Check(pyObj) || ObjectType::isExternalConvertible(shiboType, pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline QDate Converter<QDate>::toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
if (pyObj == Py_None) {
|
|
||||||
return QDate();
|
|
||||||
} else if (PyObject_TypeCheck(pyObj, SbkType<QDate>())) {
|
|
||||||
return *Converter<QDate*>::toCpp(pyObj);
|
|
||||||
} else if (PyDate_Check(pyObj)) {
|
|
||||||
int day = PyDateTime_GET_DAY(pyObj);
|
|
||||||
int month = PyDateTime_GET_MONTH(pyObj);
|
|
||||||
int year = PyDateTime_GET_YEAR(pyObj);
|
|
||||||
return QDate(year, month, day);
|
|
||||||
} else {
|
|
||||||
return ValueTypeConverter<QDate>::toCpp(pyObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
inline bool Converter<QDateTime>::checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QDateTime>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline PyObject* Converter<QDateTime>::toPython(const ::QDateTime& cppObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QDateTime>::toPython(cppObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Converter<QDateTime>::isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (ValueTypeConverter<QDateTime>::isConvertible(pyObj))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType< ::QDateTime >());
|
|
||||||
return PyDateTime_Check(pyObj) || ObjectType::isExternalConvertible(shiboType, pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline QDateTime Converter<QDateTime>::toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
if (pyObj == Py_None) {
|
|
||||||
return QDateTime();
|
|
||||||
} else if (PyObject_TypeCheck(pyObj, SbkType<QDateTime>())) {
|
|
||||||
return *Converter<QDateTime*>::toCpp(pyObj);
|
|
||||||
} else if (PyDateTime_Check(pyObj)) {
|
|
||||||
int day = PyDateTime_GET_DAY(pyObj);
|
|
||||||
int month = PyDateTime_GET_MONTH(pyObj);
|
|
||||||
int year = PyDateTime_GET_YEAR(pyObj);
|
|
||||||
int hour = PyDateTime_DATE_GET_HOUR(pyObj);
|
|
||||||
int min = PyDateTime_DATE_GET_MINUTE(pyObj);
|
|
||||||
int sec = PyDateTime_DATE_GET_SECOND(pyObj);
|
|
||||||
int usec = PyDateTime_DATE_GET_MICROSECOND(pyObj);
|
|
||||||
return QDateTime(QDate(year, month, day), QTime(hour, min, sec, usec/1000));
|
|
||||||
} else {
|
|
||||||
return ValueTypeConverter<QDateTime>::toCpp(pyObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename KT, typename VT>
|
|
||||||
struct Converter<QHash<KT, VT> > : QtDictConverter<QHash<KT, VT> > {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename T>
|
|
||||||
struct Converter<QList<T> > : StdListConverter<QList<T> > {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename KT, typename VT>
|
|
||||||
struct Converter<QMap<KT, VT> > : QtDictConverter<QMap<KT, VT> > {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename KT, typename VT>
|
|
||||||
struct Converter<QMultiMap<KT, VT> > : QtMultiMapConverter<QMap<KT, VT> > {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename FT, typename ST>
|
|
||||||
struct Converter<QPair<FT, ST> > : StdPairConverter<QPair<FT, ST> > {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename T>
|
|
||||||
struct Converter<QSet<T> > : QSequenceConverter<QSet<T> > {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename T>
|
|
||||||
struct Converter<QStack<T> > : StdListConverter<QStack<T> > {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
template<>
|
|
||||||
inline PyTypeObject* SbkType<QString>()
|
|
||||||
{
|
|
||||||
return &PyUnicode_Type;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct Converter<QString>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return PyString_Check(pyObj) || PyUnicode_Check(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return PyString_Check(pyObj)
|
|
||||||
|| PyUnicode_Check(pyObj)
|
|
||||||
|| pyObj == Py_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QString toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (PyUnicode_Check(pyObj)) {
|
|
||||||
Py_UNICODE* unicode = PyUnicode_AS_UNICODE(pyObj);
|
|
||||||
#if defined(Py_UNICODE_WIDE)
|
|
||||||
// cast as Py_UNICODE can be a different type
|
|
||||||
return QString::fromUcs4(reinterpret_cast<const uint*>(unicode));
|
|
||||||
#else
|
|
||||||
return QString::fromUtf16(unicode, PyUnicode_GET_SIZE(pyObj));
|
|
||||||
#endif
|
|
||||||
} else if (PyString_Check(pyObj)) {
|
|
||||||
return QString(Converter<const char * >::toCpp(pyObj));
|
|
||||||
}
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(void* cppObj) { return toPython(*reinterpret_cast<QString*>(cppObj)); }
|
|
||||||
static PyObject* toPython(const QString& cppObj)
|
|
||||||
{
|
|
||||||
const int N = cppObj.length();
|
|
||||||
wchar_t* str = new wchar_t[N];
|
|
||||||
cppObj.toWCharArray(str);
|
|
||||||
PyObject* pyObj = PyUnicode_FromWideChar(str, N);
|
|
||||||
delete[] str;
|
|
||||||
return pyObj;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
namespace Shiboken
|
|
||||||
{
|
|
||||||
template<>
|
|
||||||
struct Converter<QStringList> : StdListConverter<QStringList> {};
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct Converter<QStringRef> : public Converter<QString>
|
|
||||||
{
|
|
||||||
static PyObject* toPython(void* cppObj) { return toPython(*reinterpret_cast<QStringRef*>(cppObj)); }
|
|
||||||
|
|
||||||
static PyObject* toPython(const QStringRef& cppObj)
|
|
||||||
{
|
|
||||||
return Converter<QString>::toPython(cppObj.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
static QStringRef toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return QStringRef();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
inline bool Converter<QTime>::checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QTime>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline PyObject* Converter<QTime>::toPython(const ::QTime& cppObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QTime>::toPython(cppObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Converter<QTime>::isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (ValueTypeConverter<QTime>::isConvertible(pyObj))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType< ::QTime >());
|
|
||||||
return PyTime_Check(pyObj) || ObjectType::isExternalConvertible(shiboType, pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline QTime Converter<QTime>::toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
if (!PyDateTimeAPI)
|
|
||||||
PyDateTime_IMPORT;
|
|
||||||
|
|
||||||
if (pyObj == Py_None) {
|
|
||||||
return QTime();
|
|
||||||
} else if (PyObject_TypeCheck(pyObj, SbkType<QTime>())) {
|
|
||||||
return *Converter<QTime*>::toCpp(pyObj);
|
|
||||||
} else if (PyTime_Check(pyObj)) {
|
|
||||||
int hour = PyDateTime_TIME_GET_HOUR(pyObj);
|
|
||||||
int min = PyDateTime_TIME_GET_MINUTE(pyObj);
|
|
||||||
int sec = PyDateTime_TIME_GET_SECOND(pyObj);
|
|
||||||
int usec = PyDateTime_TIME_GET_MICROSECOND(pyObj);
|
|
||||||
return QTime(hour, min, sec, usec/1000);
|
|
||||||
} else {
|
|
||||||
return ValueTypeConverter<QTime>::toCpp(pyObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,216 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct Converter<QVariant>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return false; // lets avoid the chaos
|
|
||||||
}
|
|
||||||
|
|
||||||
// all types are convertible to QVariant
|
|
||||||
static bool isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char* resolveMetaType(PyTypeObject* type, int* typeId)
|
|
||||||
{
|
|
||||||
if (PyObject_TypeCheck(type, &SbkObjectType_Type)) {
|
|
||||||
SbkObjectType* sbkType = reinterpret_cast<SbkObjectType*>(type);
|
|
||||||
const char* typeName = Shiboken::ObjectType::getOriginalName(sbkType);
|
|
||||||
if (!typeName)
|
|
||||||
return 0;
|
|
||||||
bool valueType = '*' != typeName[qstrlen(typeName) - 1];
|
|
||||||
|
|
||||||
// Do not convert user type of value
|
|
||||||
if (valueType && Shiboken::ObjectType::isUserType(type))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
int obTypeId = QMetaType::type(typeName);
|
|
||||||
if (obTypeId) {
|
|
||||||
*typeId = obTypeId;
|
|
||||||
return typeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not resolve types to value type
|
|
||||||
if (valueType)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// find in base types
|
|
||||||
if (type->tp_base) {
|
|
||||||
return resolveMetaType(type->tp_base, typeId);
|
|
||||||
} else if (type->tp_bases) {
|
|
||||||
int size = PyTuple_GET_SIZE(type->tp_bases);
|
|
||||||
for(int i=0; i < size; i++){
|
|
||||||
const char* derivedName = resolveMetaType(reinterpret_cast<PyTypeObject*>(PyTuple_GET_ITEM(type->tp_bases, i)), typeId);
|
|
||||||
if (derivedName)
|
|
||||||
return derivedName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*typeId = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariant toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
using namespace Shiboken;
|
|
||||||
|
|
||||||
// Primitive types
|
|
||||||
if (Converter<bool>::checkType(pyObj)) {
|
|
||||||
// QVariant(bool)
|
|
||||||
return QVariant(Converter<bool>::toCpp(pyObj));
|
|
||||||
} else if (pyObj == Py_None) {
|
|
||||||
// QVariant()
|
|
||||||
return QVariant();
|
|
||||||
} else if (Converter<QString>::checkType(pyObj)) {
|
|
||||||
// QVariant(const char*)
|
|
||||||
return QVariant(Converter<QString>::toCpp(pyObj));
|
|
||||||
} else if (Converter<QByteArray>::checkType(pyObj)) {
|
|
||||||
// QVariant(QByteArray)
|
|
||||||
return QVariant(Converter<QByteArray>::toCpp(pyObj));
|
|
||||||
} else if (PyFloat_CheckExact(pyObj)) {
|
|
||||||
// QVariant(double)
|
|
||||||
return QVariant(Converter<double>::toCpp(pyObj));
|
|
||||||
} else if (PyInt_Check(pyObj)) {
|
|
||||||
// QVariant(int)
|
|
||||||
return QVariant(Converter<int>::toCpp(pyObj));
|
|
||||||
} else if (PyLong_CheckExact(pyObj)) {
|
|
||||||
// QVariant(qlonglong)
|
|
||||||
return QVariant(Converter<qlonglong>::toCpp(pyObj));
|
|
||||||
} else if (Shiboken::isShibokenEnum(pyObj)) {
|
|
||||||
// QVariant(enum)
|
|
||||||
return QVariant(Converter<int>::toCpp(pyObj));
|
|
||||||
} else if (Shiboken::Object::checkType(pyObj)) {
|
|
||||||
// a class supported by QVariant?
|
|
||||||
int typeCode;
|
|
||||||
const char* typeName = resolveMetaType(pyObj->ob_type, &typeCode);
|
|
||||||
if (typeCode && typeName) {
|
|
||||||
Shiboken::TypeResolver* tr = Shiboken::TypeResolver::get(typeName);
|
|
||||||
QVariant var(typeCode, (void*)0);
|
|
||||||
void* args[] = { var.data() };
|
|
||||||
tr->toCpp(pyObj, args);
|
|
||||||
return var;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//sequence and dictornay
|
|
||||||
if (PyDict_Check(pyObj)) {
|
|
||||||
QVariant ret = convertToVariantMap(pyObj);
|
|
||||||
if (ret.isValid())
|
|
||||||
return ret;
|
|
||||||
} else if (PySequence_Check(pyObj)) {
|
|
||||||
return convertToVariantList(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is a shiboken type not known by Qt
|
|
||||||
return QVariant::fromValue<PySide::PyObjectWrapper>(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(void* cppObj)
|
|
||||||
{
|
|
||||||
return toPython(*reinterpret_cast<QVariant*>(cppObj));
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(const QVariant& cppObj)
|
|
||||||
{
|
|
||||||
if (cppObj.isValid()) {
|
|
||||||
if (qstrcmp(cppObj.typeName(), "QVariantList") == 0)
|
|
||||||
return Converter<QList<QVariant> >::toPython(cppObj.value<QVariantList>());
|
|
||||||
|
|
||||||
if (qstrcmp(cppObj.typeName(), "QStringList") == 0)
|
|
||||||
return Converter<QList<QString> >::toPython(cppObj.value<QStringList>());
|
|
||||||
|
|
||||||
if (qstrcmp(cppObj.typeName(), "QVariantMap") == 0)
|
|
||||||
return Converter<QMap<QString, QVariant> >::toPython(cppObj.value<QVariantMap>());
|
|
||||||
|
|
||||||
Shiboken::TypeResolver* tr = Shiboken::TypeResolver::get(cppObj.typeName());
|
|
||||||
if (tr)
|
|
||||||
return tr->toPython(const_cast<void*>(cppObj.data()));
|
|
||||||
}
|
|
||||||
Py_RETURN_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariant convertToValueList(PyObject* list)
|
|
||||||
{
|
|
||||||
if (PySequence_Size(list) < 1)
|
|
||||||
return QVariant();
|
|
||||||
|
|
||||||
Shiboken::AutoDecRef element(PySequence_GetItem(list, 0));
|
|
||||||
int typeId;
|
|
||||||
const char* typeName = resolveMetaType(element.cast<PyTypeObject*>(), &typeId);
|
|
||||||
if (typeName) {
|
|
||||||
QByteArray listTypeName("QList<");
|
|
||||||
listTypeName += typeName;
|
|
||||||
listTypeName += '>';
|
|
||||||
typeId = QMetaType::type(listTypeName);
|
|
||||||
if (typeId > 0) {
|
|
||||||
Shiboken::TypeResolver* tr = Shiboken::TypeResolver::get(listTypeName);
|
|
||||||
if (!tr) {
|
|
||||||
qWarning() << "TypeResolver for :" << listTypeName << "not registered.";
|
|
||||||
} else {
|
|
||||||
QVariant var(typeId, (void*)0);
|
|
||||||
void* args[] = { var.data(), 0 };
|
|
||||||
tr->toCpp(list, args);
|
|
||||||
return var;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariant convertToVariantMap(PyObject* map)
|
|
||||||
{
|
|
||||||
PyObject *key, *value;
|
|
||||||
Py_ssize_t pos = 0;
|
|
||||||
AutoDecRef keys(PyDict_Keys(map));
|
|
||||||
bool keysIsString = isStringList(keys);
|
|
||||||
if (keysIsString) {
|
|
||||||
QMap<QString, QVariant> ret;
|
|
||||||
while (PyDict_Next(map, &pos, &key, &value))
|
|
||||||
ret.insert(Converter<QString>::toCpp(key), toCpp(value));
|
|
||||||
return QVariant(ret);
|
|
||||||
} else {
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isStringList(PyObject *list)
|
|
||||||
{
|
|
||||||
bool allString = true;
|
|
||||||
AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
|
|
||||||
Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
|
|
||||||
for(int i=0; i < size; i++) {
|
|
||||||
PyObject* item = PySequence_Fast_GET_ITEM(fast.object(), i);
|
|
||||||
if (!Converter<QString>::checkType(item)) {
|
|
||||||
allString = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return allString;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariant convertToVariantList(PyObject* list)
|
|
||||||
{
|
|
||||||
bool allString = isStringList(list);
|
|
||||||
if (allString) {
|
|
||||||
QStringList lst = Converter<QList<QString> >::toCpp(list);
|
|
||||||
return QVariant(lst);
|
|
||||||
} else {
|
|
||||||
QVariant valueList = convertToValueList(list);
|
|
||||||
if (valueList.isValid())
|
|
||||||
return valueList;
|
|
||||||
QList<QVariant> lst;
|
|
||||||
AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
|
|
||||||
Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
|
|
||||||
for(int i=0; i < size; i++) {
|
|
||||||
PyObject* item = PySequence_Fast_GET_ITEM(fast.object(), i);
|
|
||||||
lst.append(toCpp(item));
|
|
||||||
}
|
|
||||||
return QVariant(lst);
|
|
||||||
}
|
|
||||||
Q_ASSERT(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,87 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct Converter<QVariant::Type>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return pyObj == Py_None || PyType_Check(pyObj) || Converter<QString>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isConvertible(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static QVariant::Type toCpp(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
const char* typeName = 0;
|
|
||||||
if (pyObj == Py_None)
|
|
||||||
return QVariant::Invalid;
|
|
||||||
|
|
||||||
if (pyObj == reinterpret_cast<PyObject*>(&PyString_Type) || pyObj == reinterpret_cast<PyObject*>(&PyUnicode_Type))
|
|
||||||
typeName = "QString";
|
|
||||||
else if (pyObj == reinterpret_cast<PyObject*>(&PyFloat_Type))
|
|
||||||
typeName = "double"; // float is a UserType in QVariant.
|
|
||||||
else if (pyObj == reinterpret_cast<PyObject*>(&PyLong_Type))
|
|
||||||
typeName = "int"; // long is a UserType in QVariant.
|
|
||||||
else if (PyType_Check(pyObj)) {
|
|
||||||
if (pyObj->ob_type == &SbkObjectType_Type)
|
|
||||||
typeName = Shiboken::ObjectType::getOriginalName(reinterpret_cast<SbkObjectType*>(pyObj));
|
|
||||||
else
|
|
||||||
typeName = reinterpret_cast<PyTypeObject*>(pyObj)->tp_name;
|
|
||||||
}
|
|
||||||
else if (PyString_Check(pyObj))
|
|
||||||
typeName = PyString_AS_STRING(pyObj);
|
|
||||||
else if (PyUnicode_Check(pyObj))
|
|
||||||
typeName = PyString_AsString(pyObj);
|
|
||||||
else if (PyDict_Check(pyObj) && checkAllStringKeys(pyObj))
|
|
||||||
typeName = "QVariantMap";
|
|
||||||
else if (PySequence_Check(pyObj))
|
|
||||||
if (isStringList(pyObj))
|
|
||||||
typeName = "QStringList";
|
|
||||||
else
|
|
||||||
typeName = "QVariantList";
|
|
||||||
else
|
|
||||||
Q_ASSERT(false);
|
|
||||||
|
|
||||||
return QVariant::nameToType(typeName);
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(void* cppObj) { return toPython(*reinterpret_cast<QVariant::Type*>(cppObj)); }
|
|
||||||
static PyObject* toPython(const QVariant::Type& cppObj)
|
|
||||||
{
|
|
||||||
const char* typeName = QVariant::typeToName(cppObj);
|
|
||||||
PyObject* pyObj;
|
|
||||||
if (!typeName) {
|
|
||||||
pyObj = Py_None;
|
|
||||||
} else {
|
|
||||||
Shiboken::TypeResolver* tr = Shiboken::TypeResolver::get(typeName);
|
|
||||||
pyObj = tr ? reinterpret_cast<PyObject*>(tr->pythonType()) : Py_None;
|
|
||||||
}
|
|
||||||
Py_INCREF(pyObj);
|
|
||||||
return pyObj;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isStringList(PyObject* list)
|
|
||||||
{
|
|
||||||
bool allString = true;
|
|
||||||
AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
|
|
||||||
Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
|
|
||||||
for(int i=0; i < size; i++) {
|
|
||||||
PyObject* item = PySequence_Fast_GET_ITEM(fast.object(), i);
|
|
||||||
if (!Converter<QString>::checkType(item)) {
|
|
||||||
allString = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return allString;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkAllStringKeys(PyObject* dict)
|
|
||||||
{
|
|
||||||
AutoDecRef keys(PyDict_Keys(dict));
|
|
||||||
return isStringList(keys);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template<typename T>
|
|
||||||
struct Converter<QVector<T> > : StdListConverter<QVector<T> > {};
|
|
||||||
}
|
|
||||||
24
PySide/QtCore/typesystem_core.xml.in
Normal file
24
PySide/QtCore/typesystem_core.xml.in
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
This file is part of PySide project.
|
||||||
|
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
Contact: PySide team <contact@pyside.org>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
-->
|
||||||
|
<typesystem package="PySide.QtCore">
|
||||||
|
<load-typesystem name="typesystem_core_@AUTO_OS@.xml" generate="yes"/>
|
||||||
|
<load-typesystem name="typesystem_core_common.xml" generate="yes"/>
|
||||||
|
</typesystem>
|
||||||
File diff suppressed because it is too large
Load diff
23
PySide/QtCore/typesystem_core_mac.xml
Normal file
23
PySide/QtCore/typesystem_core_mac.xml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
This file is part of PySide project.
|
||||||
|
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
Contact: PySide team <contact@pyside.org>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
-->
|
||||||
|
<typesystem package="PySide.QtCore">
|
||||||
|
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject" />
|
||||||
|
</typesystem>
|
||||||
26
PySide/QtCore/typesystem_core_maemo.xml
Normal file
26
PySide/QtCore/typesystem_core_maemo.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
This file is part of PySide project.
|
||||||
|
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
Contact: PySide team <contact@pyside.org>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
-->
|
||||||
|
<typesystem package="PySide.QtCore">
|
||||||
|
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyLong">
|
||||||
|
<!-- FIXME APIExtractor or shiboken do not support multiple includes by primitive type -->
|
||||||
|
<include file-name="QTextDocument" location="global"/>
|
||||||
|
</primitive-type>
|
||||||
|
</typesystem>
|
||||||
|
|
@ -19,9 +19,33 @@
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
-->
|
-->
|
||||||
<typesystem package="PySide.QtCore">
|
<typesystem package="PySide.QtCore">
|
||||||
<primitive-type name="HWND__">
|
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject" />
|
||||||
<conversion-rule file="glue/hwnd_conversions.h"/>
|
<primitive-type name="HWND">
|
||||||
|
<conversion-rule>
|
||||||
|
<native-to-target>
|
||||||
|
#ifdef IS_PY3K
|
||||||
|
return PyCapsule_New(%in, 0, 0);
|
||||||
|
#else
|
||||||
|
return PyCObject_FromVoidPtr(%in, 0);
|
||||||
|
#endif
|
||||||
|
</native-to-target>
|
||||||
|
<target-to-native>
|
||||||
|
<add-conversion type="PyNone">
|
||||||
|
%out = 0;
|
||||||
|
</add-conversion>
|
||||||
|
<add-conversion check="checkPyCapsuleOrPyCObject(%in)" type="PyObject">
|
||||||
|
#ifdef IS_PY3K
|
||||||
|
%out = (%OUTTYPE)PyCapsule_GetPointer(%in, 0);
|
||||||
|
#else
|
||||||
|
%out = (%OUTTYPE)PyCObject_AsVoidPtr(%in);
|
||||||
|
#endif
|
||||||
|
</add-conversion>
|
||||||
|
</target-to-native>
|
||||||
|
</conversion-rule>
|
||||||
</primitive-type>
|
</primitive-type>
|
||||||
|
<inject-code class="native" position="beginning">
|
||||||
|
<insert-template name="checkPyCapsuleOrPyCObject_func"/>
|
||||||
|
</inject-code>
|
||||||
<value-type name="POINT">
|
<value-type name="POINT">
|
||||||
<include file-name="wtypes.h" location="global"/>
|
<include file-name="wtypes.h" location="global"/>
|
||||||
</value-type>
|
</value-type>
|
||||||
|
|
@ -30,6 +54,4 @@
|
||||||
</value-type>
|
</value-type>
|
||||||
<suppress-warning text="class 'MSG' inherits from unknown base class 'tagMSG'"/>
|
<suppress-warning text="class 'MSG' inherits from unknown base class 'tagMSG'"/>
|
||||||
<suppress-warning text="class not found for setup inheritance 'tagMSG'"/>
|
<suppress-warning text="class not found for setup inheritance 'tagMSG'"/>
|
||||||
<load-typesystem name="typesystem_core.xml" generate="yes"/>
|
|
||||||
</typesystem>
|
</typesystem>
|
||||||
|
|
||||||
|
|
|
||||||
26
PySide/QtCore/typesystem_core_x11.xml
Normal file
26
PySide/QtCore/typesystem_core_x11.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
This file is part of PySide project.
|
||||||
|
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
Contact: PySide team <contact@pyside.org>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
-->
|
||||||
|
<typesystem package="PySide.QtCore">
|
||||||
|
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyLong">
|
||||||
|
<!-- FIXME APIExtractor or shiboken do not support multiple includes by primitive type -->
|
||||||
|
<include file-name="QTextDocument" location="global"/>
|
||||||
|
</primitive-type>
|
||||||
|
</typesystem>
|
||||||
|
|
@ -23,7 +23,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeview_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qtdeclarative_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qtdeclarative_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtDeclarative_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtDeclarative_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtDeclarative_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtDeclarative_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
|
|
||||||
set(QtDeclarative_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtDeclarative_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -52,9 +52,7 @@ static void propListMetaCall(PySideProperty* pp, PyObject* self, QMetaObject::Ca
|
||||||
static PyObject* pyTypes[PYSIDE_MAX_QML_TYPES];
|
static PyObject* pyTypes[PYSIDE_MAX_QML_TYPES];
|
||||||
static void (*createFuncs[PYSIDE_MAX_QML_TYPES])(void*);
|
static void (*createFuncs[PYSIDE_MAX_QML_TYPES])(void*);
|
||||||
|
|
||||||
/// QDeclarativeItem will create objects using placement new then this pointer is non-null.
|
// Mutex used to avoid race condition on PySide::nextQObjectMemoryAddr
|
||||||
void* PySide::nextQmlElementMemoryAddr = 0;
|
|
||||||
// Mutex used to avoid race condition on PySide::nextQmlElementMemoryAddr
|
|
||||||
static QMutex nextQmlElementMutex;
|
static QMutex nextQmlElementMutex;
|
||||||
|
|
||||||
template<int N>
|
template<int N>
|
||||||
|
|
@ -63,12 +61,12 @@ struct ElementFactoryBase
|
||||||
static void createInto(void* memory)
|
static void createInto(void* memory)
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&nextQmlElementMutex);
|
QMutexLocker locker(&nextQmlElementMutex);
|
||||||
PySide::nextQmlElementMemoryAddr = memory;
|
PySide::setNextQObjectMemoryAddr(memory);
|
||||||
Shiboken::GilState state;
|
Shiboken::GilState state;
|
||||||
PyObject* obj = PyObject_CallObject(pyTypes[N], 0);
|
PyObject* obj = PyObject_CallObject(pyTypes[N], 0);
|
||||||
if (!obj || PyErr_Occurred())
|
if (!obj || PyErr_Occurred())
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
PySide::nextQmlElementMemoryAddr = 0;
|
PySide::setNextQObjectMemoryAddr(0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -95,8 +93,9 @@ int PySide::qmlRegisterType(PyObject* pyObj, const char* uri, int versionMajor,
|
||||||
{
|
{
|
||||||
using namespace Shiboken;
|
using namespace Shiboken;
|
||||||
|
|
||||||
static PyTypeObject* declarativeItemType = TypeResolver::get("QDeclarativeItem*")->pythonType();
|
static PyTypeObject* qobjectType = Shiboken::Conversions::getPythonTypeObject("QObject*");
|
||||||
assert(declarativeItemType);
|
static PyTypeObject* qdeclarativeType = Shiboken::Conversions::getPythonTypeObject("QDeclarativeItem*");
|
||||||
|
assert(qobjectType);
|
||||||
static int nextType = 0;
|
static int nextType = 0;
|
||||||
|
|
||||||
if (nextType >= PYSIDE_MAX_QML_TYPES) {
|
if (nextType >= PYSIDE_MAX_QML_TYPES) {
|
||||||
|
|
@ -104,29 +103,28 @@ int PySide::qmlRegisterType(PyObject* pyObj, const char* uri, int versionMajor,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PySequence_Contains(((PyTypeObject*)pyObj)->tp_mro, (PyObject*)declarativeItemType)) {
|
if (!PySequence_Contains(((PyTypeObject*)pyObj)->tp_mro, (PyObject*)qobjectType)) {
|
||||||
PyErr_Format(PyExc_TypeError, "A type inherited from %s expected, got %s.", declarativeItemType->tp_name, ((PyTypeObject*)pyObj)->tp_name);
|
PyErr_Format(PyExc_TypeError, "A type inherited from %s expected, got %s.", qobjectType->tp_name, ((PyTypeObject*)pyObj)->tp_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isDeclarativeType = PySequence_Contains(((PyTypeObject*)pyObj)->tp_mro, (PyObject*)qdeclarativeType);
|
||||||
|
|
||||||
QMetaObject* metaObject = reinterpret_cast<QMetaObject*>(ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType*>(pyObj)));
|
QMetaObject* metaObject = reinterpret_cast<QMetaObject*>(ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType*>(pyObj)));
|
||||||
Q_ASSERT(metaObject);
|
Q_ASSERT(metaObject);
|
||||||
|
|
||||||
|
// Inc ref the type object, don't worry about dec ref them because there's no way to unregister a QML type
|
||||||
|
Py_INCREF(pyObj);
|
||||||
|
|
||||||
// All ready... now the ugly code begins... :-)
|
// All ready... now the ugly code begins... :-)
|
||||||
pyTypes[nextType] = pyObj;
|
pyTypes[nextType] = pyObj;
|
||||||
|
|
||||||
// Init proxy object static meta object
|
// Init proxy object static meta object
|
||||||
QDeclarativePrivate::RegisterType type;
|
QDeclarativePrivate::RegisterType type;
|
||||||
type.version = 0;
|
type.version = 0;
|
||||||
|
if (isDeclarativeType) {
|
||||||
type.typeId = qMetaTypeId<QDeclarativeItem*>();
|
type.typeId = qMetaTypeId<QDeclarativeItem*>();
|
||||||
type.listId = qMetaTypeId<QDeclarativeListProperty<QDeclarativeItem> >();
|
type.listId = qMetaTypeId<QDeclarativeListProperty<QDeclarativeItem> >();
|
||||||
type.objectSize = sizeof(QDeclarativeItemWrapper);
|
|
||||||
type.create = createFuncs[nextType];
|
|
||||||
type.uri = uri;
|
|
||||||
type.versionMajor = versionMajor;
|
|
||||||
type.versionMinor = versionMinor;
|
|
||||||
type.elementName = qmlName;
|
|
||||||
type.metaObject = metaObject;
|
|
||||||
|
|
||||||
type.attachedPropertiesFunction = QDeclarativePrivate::attachedPropertiesFunc<QDeclarativeItem>();
|
type.attachedPropertiesFunction = QDeclarativePrivate::attachedPropertiesFunc<QDeclarativeItem>();
|
||||||
type.attachedPropertiesMetaObject = QDeclarativePrivate::attachedPropertiesMetaObject<QDeclarativeItem>();
|
type.attachedPropertiesMetaObject = QDeclarativePrivate::attachedPropertiesMetaObject<QDeclarativeItem>();
|
||||||
|
|
@ -134,6 +132,23 @@ int PySide::qmlRegisterType(PyObject* pyObj, const char* uri, int versionMajor,
|
||||||
type.parserStatusCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativeParserStatus>::cast();
|
type.parserStatusCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativeParserStatus>::cast();
|
||||||
type.valueSourceCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueSource>::cast();
|
type.valueSourceCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueSource>::cast();
|
||||||
type.valueInterceptorCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueInterceptor>::cast();
|
type.valueInterceptorCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueInterceptor>::cast();
|
||||||
|
} else {
|
||||||
|
type.typeId = qMetaTypeId<QObject*>();
|
||||||
|
type.listId = qMetaTypeId<QDeclarativeListProperty<QObject> >();
|
||||||
|
type.attachedPropertiesFunction = QDeclarativePrivate::attachedPropertiesFunc<QObject>();
|
||||||
|
type.attachedPropertiesMetaObject = QDeclarativePrivate::attachedPropertiesMetaObject<QObject>();
|
||||||
|
|
||||||
|
type.parserStatusCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativeParserStatus>::cast();
|
||||||
|
type.valueSourceCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativePropertyValueSource>::cast();
|
||||||
|
type.valueInterceptorCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativePropertyValueInterceptor>::cast();
|
||||||
|
}
|
||||||
|
type.objectSize = PySide::getSizeOfQObject(reinterpret_cast<SbkObjectType*>(pyObj));
|
||||||
|
type.create = createFuncs[nextType];
|
||||||
|
type.uri = uri;
|
||||||
|
type.versionMajor = versionMajor;
|
||||||
|
type.versionMinor = versionMinor;
|
||||||
|
type.elementName = qmlName;
|
||||||
|
type.metaObject = metaObject;
|
||||||
|
|
||||||
type.extensionObjectCreate = 0;
|
type.extensionObjectCreate = 0;
|
||||||
type.extensionMetaObject = 0;
|
type.extensionMetaObject = 0;
|
||||||
|
|
@ -185,12 +200,11 @@ void propListTpFree(void* self)
|
||||||
PySideProperty* pySelf = reinterpret_cast<PySideProperty*>(self);
|
PySideProperty* pySelf = reinterpret_cast<PySideProperty*>(self);
|
||||||
delete reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pySelf));
|
delete reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pySelf));
|
||||||
// calls base type constructor
|
// calls base type constructor
|
||||||
pySelf->ob_type->tp_base->tp_free(self);
|
Py_TYPE(pySelf)->tp_base->tp_free(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyTypeObject PropertyListType = {
|
PyTypeObject PropertyListType = {
|
||||||
PyObject_HEAD_INIT(0)
|
PyVarObject_HEAD_INIT(0, 0)
|
||||||
0, /*ob_size*/
|
|
||||||
"ListProperty", /*tp_name*/
|
"ListProperty", /*tp_name*/
|
||||||
sizeof(PySideProperty), /*tp_basicsize*/
|
sizeof(PySideProperty), /*tp_basicsize*/
|
||||||
0, /*tp_itemsize*/
|
0, /*tp_itemsize*/
|
||||||
|
|
@ -244,7 +258,10 @@ PyTypeObject PropertyListType = {
|
||||||
void propListAppender(QDeclarativeListProperty<QDeclarativeItem>* propList, QDeclarativeItem* item)
|
void propListAppender(QDeclarativeListProperty<QDeclarativeItem>* propList, QDeclarativeItem* item)
|
||||||
{
|
{
|
||||||
Shiboken::GilState state;
|
Shiboken::GilState state;
|
||||||
Shiboken::AutoDecRef args(Shiboken::makeTuple(propList->object, item));
|
|
||||||
|
Shiboken::AutoDecRef args(PyTuple_New(2));
|
||||||
|
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
|
||||||
|
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtDeclarativeTypes[SBK_QDECLARATIVEITEM_IDX], item));
|
||||||
|
|
||||||
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
||||||
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->append, args));
|
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->append, args));
|
||||||
|
|
@ -257,42 +274,50 @@ void propListAppender(QDeclarativeListProperty<QDeclarativeItem>* propList, QDec
|
||||||
int propListCount(QDeclarativeListProperty<QDeclarativeItem>* propList)
|
int propListCount(QDeclarativeListProperty<QDeclarativeItem>* propList)
|
||||||
{
|
{
|
||||||
Shiboken::GilState state;
|
Shiboken::GilState state;
|
||||||
Shiboken::AutoDecRef args(Shiboken::makeTuple(propList->object));
|
|
||||||
|
Shiboken::AutoDecRef args(PyTuple_New(1));
|
||||||
|
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
|
||||||
|
|
||||||
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
||||||
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->count, args));
|
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->count, args));
|
||||||
|
|
||||||
// Check return type
|
// Check return type
|
||||||
|
int cppResult = 0;
|
||||||
|
PythonToCppFunc pythonToCpp;
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
else if (Shiboken::Converter<int>::isConvertible(retVal))
|
else if ((pythonToCpp = Shiboken::Conversions::isPythonToCppConvertible(Shiboken::Conversions::PrimitiveTypeConverter<int>(), retVal)))
|
||||||
return Shiboken::Converter<int>::toCpp(retVal);
|
pythonToCpp(retVal, &cppResult);
|
||||||
|
return cppResult;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation of QDeclarativeListProperty<T>::AtFunction callback
|
// Implementation of QDeclarativeListProperty<T>::AtFunction callback
|
||||||
QDeclarativeItem* propListAt(QDeclarativeListProperty<QDeclarativeItem>* propList, int index)
|
QDeclarativeItem* propListAt(QDeclarativeListProperty<QDeclarativeItem>* propList, int index)
|
||||||
{
|
{
|
||||||
Shiboken::GilState state;
|
Shiboken::GilState state;
|
||||||
Shiboken::AutoDecRef args(Shiboken::makeTuple(propList->object, index));
|
|
||||||
|
Shiboken::AutoDecRef args(PyTuple_New(2));
|
||||||
|
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
|
||||||
|
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<int>(), &index));
|
||||||
|
|
||||||
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
||||||
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->at, args));
|
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->at, args));
|
||||||
|
|
||||||
|
QDeclarativeItem* result = 0;
|
||||||
if (PyErr_Occurred())
|
if (PyErr_Occurred())
|
||||||
PyErr_Print();
|
PyErr_Print();
|
||||||
else if (PyType_IsSubtype(Py_TYPE(retVal), data->type))
|
else if (PyType_IsSubtype(Py_TYPE(retVal), data->type))
|
||||||
return Shiboken::Converter<QDeclarativeItem*>::toCpp(retVal);
|
Shiboken::Conversions::pythonToCppPointer((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QDECLARATIVEITEM_IDX], retVal, &result);
|
||||||
|
return result;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation of QDeclarativeListProperty<T>::ClearFunction callback
|
// Implementation of QDeclarativeListProperty<T>::ClearFunction callback
|
||||||
void propListClear(QDeclarativeListProperty<QDeclarativeItem>* propList)
|
void propListClear(QDeclarativeListProperty<QDeclarativeItem>* propList)
|
||||||
{
|
{
|
||||||
Shiboken::GilState state;
|
Shiboken::GilState state;
|
||||||
Shiboken::AutoDecRef args(Shiboken::makeTuple(propList->object));
|
|
||||||
|
Shiboken::AutoDecRef args(PyTuple_New(1));
|
||||||
|
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
|
||||||
|
|
||||||
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
|
||||||
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->clear, args));
|
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->clear, args));
|
||||||
|
|
@ -308,7 +333,9 @@ static void propListMetaCall(PySideProperty* pp, PyObject* self, QMetaObject::Ca
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pp));
|
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pp));
|
||||||
QDeclarativeListProperty<QDeclarativeItem> declProp(Shiboken::Converter<QObject*>::toCpp(self), data, &propListAppender);
|
QObject* qobj;
|
||||||
|
Shiboken::Conversions::pythonToCppPointer((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], self, &qobj);
|
||||||
|
QDeclarativeListProperty<QDeclarativeItem> declProp(qobj, data, &propListAppender);
|
||||||
|
|
||||||
if (data->count)
|
if (data->count)
|
||||||
declProp.count = &propListCount;
|
declProp.count = &propListCount;
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,8 @@
|
||||||
</inject-documentation>
|
</inject-documentation>
|
||||||
|
|
||||||
<inject-code class="target">
|
<inject-code class="target">
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[int](PySide::qmlRegisterType(%1, %2, %3, %4, %5));
|
int %0 = PySide::qmlRegisterType(%ARGUMENT_NAMES);
|
||||||
|
%PYARG_0 = %CONVERTTOPYTHON[int](%0);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</add-function>
|
</add-function>
|
||||||
|
|
||||||
|
|
@ -59,7 +60,6 @@
|
||||||
</enum-type>
|
</enum-type>
|
||||||
|
|
||||||
<inject-code class="target" position="end">
|
<inject-code class="target" position="end">
|
||||||
Shiboken::TypeResolver::createValueTypeResolver< QList<QObject*> >("QList<QObject*>");
|
|
||||||
PySide::initQmlSupport(module);
|
PySide::initQmlSupport(module);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
|
|
||||||
|
|
@ -91,26 +91,44 @@
|
||||||
<parent index="this" action="add" />
|
<parent index="this" action="add" />
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
<modify-function signature="importPlugin(QString,QString,QString*)">
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument/>
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="return">
|
||||||
|
<replace-type modified-type="(ok, errorString)" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code class="target" position="beginning">
|
||||||
|
QString errorString;
|
||||||
|
%BEGIN_ALLOW_THREADS
|
||||||
|
%RETURN_TYPE ok_ = %CPPSELF.%FUNCTION_NAME(%1, %2, &errorString);
|
||||||
|
%END_ALLOW_THREADS
|
||||||
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](errorString));
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
<value-type name="QDeclarativeError" />
|
<value-type name="QDeclarativeError" />
|
||||||
<object-type name="QDeclarativeExpression" />
|
<object-type name="QDeclarativeExpression">
|
||||||
|
<modify-function signature="evaluate(bool*)">
|
||||||
|
<modify-argument index="1">
|
||||||
|
<remove-argument/>
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code class="target" position="beginning">
|
||||||
|
<insert-template name="fix_bool*"/>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
</object-type>
|
||||||
<object-type name="QDeclarativeExtensionPlugin" />
|
<object-type name="QDeclarativeExtensionPlugin" />
|
||||||
<object-type name="QDeclarativeImageProvider">
|
<object-type name="QDeclarativeImageProvider">
|
||||||
<enum-type name="ImageType" />
|
<enum-type name="ImageType" />
|
||||||
</object-type>
|
</object-type>
|
||||||
<object-type name="QDeclarativeItem" polymorphic-id-expression="qgraphicsitem_cast<QDeclarativeItem*>(%1)">
|
<object-type name="QDeclarativeItem">
|
||||||
<extra-includes>
|
<extra-includes>
|
||||||
<include file-name="pysideqmlregistertype.h" location="local"/>
|
<include file-name="pysideqmlregistertype.h" location="local"/>
|
||||||
</extra-includes>
|
</extra-includes>
|
||||||
<enum-type name="TransformOrigin" />
|
<enum-type name="TransformOrigin" />
|
||||||
<modify-function signature="QDeclarativeItem(QDeclarativeItem*)">
|
|
||||||
<inject-code class="target">
|
|
||||||
if (PySide::nextQmlElementMemoryAddr)
|
|
||||||
%0 = new (PySide::nextQmlElementMemoryAddr) ::QDeclarativePrivate::QDeclarativeElement<%TYPE>();
|
|
||||||
else
|
|
||||||
%0 = new %TYPE(%1);
|
|
||||||
</inject-code>
|
|
||||||
</modify-function>
|
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
||||||
<value-type name="QDeclarativeListReference" />
|
<value-type name="QDeclarativeListReference" />
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ if(ENABLE_X11)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
|
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
|
||||||
set(QtGui_46_SRC "")
|
set(QtGui_46_SRC "")
|
||||||
else()
|
else()
|
||||||
|
|
@ -60,6 +59,14 @@ else()
|
||||||
)
|
)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
|
||||||
|
set(QtGui_47_SRC "")
|
||||||
|
else()
|
||||||
|
set(QtGui_47_SRC
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpainter_pixmapfragment_wrapper.cpp
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(QtGui_OPTIONAL_SRC )
|
set(QtGui_OPTIONAL_SRC )
|
||||||
set(QtGui_DROPPED_ENTRIES )
|
set(QtGui_DROPPED_ENTRIES )
|
||||||
check_qt_class(QtGui QAbstractPageSetupDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
|
check_qt_class(QtGui QAbstractPageSetupDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
|
||||||
|
|
@ -398,13 +405,15 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qworkspace_wrapper.cpp
|
||||||
${SPECIFIC_OS_FILES}
|
${SPECIFIC_OS_FILES}
|
||||||
${QPYTEXTOBJECT_MOC}
|
${QPYTEXTOBJECT_MOC}
|
||||||
${QtGui_46_SRC}
|
${QtGui_46_SRC}
|
||||||
|
${QtGui_47_SRC}
|
||||||
${QtGui_OPTIONAL_SRC}
|
${QtGui_OPTIONAL_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/typesystem_gui.xml.in"
|
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/typesystem_gui.xml.in"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/typesystem_gui.xml" @ONLY)
|
"${CMAKE_CURRENT_BINARY_DIR}/typesystem_gui.xml" @ONLY)
|
||||||
|
|
||||||
set(QtGui_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}")
|
set(QtGui_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}")
|
||||||
|
|
||||||
set(QtGui_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtGui_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/
|
||||||
${pyside_SOURCE_DIR}
|
${pyside_SOURCE_DIR}
|
||||||
|
|
|
||||||
122
PySide/QtGui/glue/qlayout_help_functions.cpp
Normal file
122
PySide/QtGui/glue/qlayout_help_functions.cpp
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
void addLayoutOwnership(QLayout* layout, QLayoutItem* item);
|
||||||
|
void removeLayoutOwnership(QLayout* layout, QWidget* widget);
|
||||||
|
|
||||||
|
inline QByteArray retrieveObjectName(PyObject* obj)
|
||||||
|
{
|
||||||
|
Shiboken::AutoDecRef objName(PyObject_Str(obj));
|
||||||
|
return Shiboken::String::toCString(objName);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addLayoutOwnership(QLayout* layout, QWidget* widget)
|
||||||
|
{
|
||||||
|
//transfer ownership to parent widget
|
||||||
|
QWidget *lw = layout->parentWidget();
|
||||||
|
QWidget *pw = widget->parentWidget();
|
||||||
|
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
|
||||||
|
|
||||||
|
//Transfer parent to layout widget
|
||||||
|
if (pw && lw && pw != lw)
|
||||||
|
Shiboken::Object::setParent(0, pyChild);
|
||||||
|
|
||||||
|
if (!lw && !pw) {
|
||||||
|
//keep the reference while the layout is orphan
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout));
|
||||||
|
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
|
||||||
|
} else {
|
||||||
|
if (!lw)
|
||||||
|
lw = pw;
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](lw));
|
||||||
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addLayoutOwnership(QLayout* layout, QLayout* other)
|
||||||
|
{
|
||||||
|
//transfer all children widgets from other to layout parent widget
|
||||||
|
QWidget* parent = layout->parentWidget();
|
||||||
|
if (!parent) {
|
||||||
|
//keep the reference while the layout is orphan
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other));
|
||||||
|
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i=0, i_max=other->count(); i < i_max; i++) {
|
||||||
|
QLayoutItem* item = other->itemAt(i);
|
||||||
|
if (PyErr_Occurred() || !item)
|
||||||
|
return;
|
||||||
|
addLayoutOwnership(layout, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other));
|
||||||
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void addLayoutOwnership(QLayout* layout, QLayoutItem* item)
|
||||||
|
{
|
||||||
|
if (!item)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QWidget* w = item->widget();
|
||||||
|
if (w)
|
||||||
|
addLayoutOwnership(layout, w);
|
||||||
|
else {
|
||||||
|
QLayout* l = item->layout();
|
||||||
|
if (l)
|
||||||
|
addLayoutOwnership(layout, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item));
|
||||||
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void removeWidgetFromLayout(QLayout* layout, QWidget* widget)
|
||||||
|
{
|
||||||
|
QWidget* parent = widget->parentWidget();
|
||||||
|
|
||||||
|
if (!parent) {
|
||||||
|
//remove reference on layout
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout));
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
|
||||||
|
Shiboken::Object::removeReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild);
|
||||||
|
} else {
|
||||||
|
//give the ownership to parent
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
|
||||||
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void removeLayoutOwnership(QLayout* layout, QLayoutItem* item)
|
||||||
|
{
|
||||||
|
QWidget* w = item->widget();
|
||||||
|
if (w)
|
||||||
|
removeWidgetFromLayout(layout, w);
|
||||||
|
else {
|
||||||
|
QLayout* l = item->layout();
|
||||||
|
if (l)
|
||||||
|
removeLayoutOwnership(layout, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item));
|
||||||
|
Shiboken::Object::invalidate(pyChild);
|
||||||
|
Shiboken::Object::setParent(0, pyChild);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void removeLayoutOwnership(QLayout* layout, QWidget* widget)
|
||||||
|
{
|
||||||
|
if (!widget)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i=0, i_max=layout->count(); i < i_max; i++) {
|
||||||
|
QLayoutItem* item = layout->itemAt(i);
|
||||||
|
if (PyErr_Occurred() || !item)
|
||||||
|
return;
|
||||||
|
if (item->widget() == widget)
|
||||||
|
removeLayoutOwnership(layout, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
#ifndef QLAYOUT_HELP_FUNCTIONS
|
|
||||||
#define QLAYOUT_HELP_FUNCTIONS
|
|
||||||
|
|
||||||
void addLayoutOwnership(QLayout* layout, QLayoutItem* item);
|
|
||||||
|
|
||||||
inline QByteArray retrieveObjectName(PyObject* obj)
|
|
||||||
{
|
|
||||||
Shiboken::AutoDecRef objName(PyObject_Str(obj));
|
|
||||||
return PyString_AsString(objName);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void addLayoutOwnership(QLayout* layout, QWidget* widget)
|
|
||||||
{
|
|
||||||
//transfer ownership to parent widget
|
|
||||||
QWidget* parent = layout->parentWidget();
|
|
||||||
|
|
||||||
if (!parent) {
|
|
||||||
//keep the reference while the layout is orphan
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(layout));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
|
|
||||||
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
|
|
||||||
} else {
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
|
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void addLayoutOwnership(QLayout* layout, QLayout* other)
|
|
||||||
{
|
|
||||||
//transfer all children widgets from other to layout parent widget
|
|
||||||
QWidget* parent = layout->parentWidget();
|
|
||||||
if (!parent) {
|
|
||||||
//keep the reference while the layout is orphan
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
|
|
||||||
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i=0, i_max=other->count(); i < i_max; i++) {
|
|
||||||
QLayoutItem* item = other->itemAt(i);
|
|
||||||
if (PyErr_Occurred() || !item)
|
|
||||||
return;
|
|
||||||
|
|
||||||
addLayoutOwnership(layout, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
|
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void addLayoutOwnership(QLayout* layout, QLayoutItem* item)
|
|
||||||
{
|
|
||||||
QWidget* w = item->widget();
|
|
||||||
if (w)
|
|
||||||
addLayoutOwnership(layout, w);
|
|
||||||
else {
|
|
||||||
QLayout* l = item->layout();
|
|
||||||
if (l)
|
|
||||||
addLayoutOwnership(layout, l);
|
|
||||||
}
|
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayoutItem*>::toPython(item));
|
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut)
|
inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut)
|
||||||
{
|
{
|
||||||
QAction* act = new QAction(text, self);
|
QAction* act = new QAction(text, self);
|
||||||
|
|
@ -11,7 +10,7 @@ inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QSt
|
||||||
|
|
||||||
self->addAction(act);
|
self->addAction(act);
|
||||||
|
|
||||||
PyObject* pyAct = Shiboken::Converter<QAction*>::toPython(act);
|
PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act);
|
||||||
Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, SIGNAL(triggered()), callback));
|
Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, SIGNAL(triggered()), callback));
|
||||||
if (result.isNull()) {
|
if (result.isNull()) {
|
||||||
Py_DECREF(pyAct);
|
Py_DECREF(pyAct);
|
||||||
|
|
@ -5,7 +5,7 @@ addActionWithPyObject(QMenuBar* self, const QString& text, PyObject* callback)
|
||||||
|
|
||||||
self->addAction(act);
|
self->addAction(act);
|
||||||
|
|
||||||
PyObject* pyAct = Shiboken::Converter<QAction*>::toPython(act);
|
PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act);
|
||||||
PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct,
|
PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct,
|
||||||
SIGNAL(triggered(bool)), callback);
|
SIGNAL(triggered(bool)), callback);
|
||||||
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Init qApp macro to None.
|
// Init qApp macro to None.
|
||||||
if (qApp) {
|
if (qApp) {
|
||||||
PyObject* pyApp = Shiboken::Converter<QApplication*>::toPython(qApp);
|
PyObject* pyApp = %CONVERTTOPYTHON[QApplication*](qApp);
|
||||||
Py_INCREF(pyApp);
|
Py_INCREF(pyApp);
|
||||||
PyModule_AddObject(module, "qApp", pyApp);
|
PyModule_AddObject(module, "qApp", pyApp);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
static QString retrieveObjectName(PyObject *obj)
|
static QString retrieveObjectName(PyObject *obj)
|
||||||
{
|
{
|
||||||
Shiboken::AutoDecRef objName(PyObject_Str(obj));
|
Shiboken::AutoDecRef objName(PyObject_Str(obj));
|
||||||
return QString(PyString_AsString(objName));
|
return QString(Shiboken::String::toCString(objName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,7 +10,7 @@ static QString retrieveObjectName(PyObject *obj)
|
||||||
**/
|
**/
|
||||||
static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
|
static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
|
||||||
{
|
{
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
|
||||||
|
|
||||||
for (int i=0; i < layout->count(); i++) {
|
for (int i=0; i < layout->count(); i++) {
|
||||||
QLayoutItem* item = layout->itemAt(i);
|
QLayoutItem* item = layout->itemAt(i);
|
||||||
|
|
@ -21,7 +21,7 @@ static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
|
||||||
if (w) {
|
if (w) {
|
||||||
QWidget* pw = w->parentWidget();
|
QWidget* pw = w->parentWidget();
|
||||||
if (pw != parent) {
|
if (pw != parent) {
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(w));
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](w));
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -31,7 +31,7 @@ static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(layout));
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](layout));
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
Shiboken::Object::setParent(pyParent, pyChild);
|
||||||
//remove previous references
|
//remove previous references
|
||||||
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
|
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
|
||||||
|
|
@ -46,7 +46,7 @@ static inline void qwidgetSetLayout(QWidget *self, QLayout *layout)
|
||||||
if (oldParent && oldParent != self) {
|
if (oldParent && oldParent != self) {
|
||||||
if (oldParent->isWidgetType()) {
|
if (oldParent->isWidgetType()) {
|
||||||
// remove old parent policy
|
// remove old parent policy
|
||||||
Shiboken::AutoDecRef pyLayout(Shiboken::Converter<QLayout*>::toPython(layout));
|
Shiboken::AutoDecRef pyLayout(%CONVERTTOPYTHON[QLayout*](layout));
|
||||||
Shiboken::Object::setParent(Py_None, pyLayout);
|
Shiboken::Object::setParent(Py_None, pyLayout);
|
||||||
} else {
|
} else {
|
||||||
PyErr_Format(PyExc_RuntimeError, "QWidget::setLayout: Attempting to set QLayout \"%s\" on %s \"%s\", when the QLayout already has a parent",
|
PyErr_Format(PyExc_RuntimeError, "QWidget::setLayout: Attempting to set QLayout \"%s\" on %s \"%s\", when the QLayout already has a parent",
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
template <>
|
|
||||||
struct Converter<WId>
|
|
||||||
{
|
|
||||||
static bool checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool isConvertible(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
return PyCObject_Check(pyobj);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline PyObject* toPython(void* cppobj)
|
|
||||||
{
|
|
||||||
// not supported
|
|
||||||
Q_ASSERT(true);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject* toPython(WId cppobj)
|
|
||||||
{
|
|
||||||
return PyCObject_FromVoidPtr(cppobj, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static WId toCpp(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
return (WId) PyCObject_AsVoidPtr(pyobj);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
namespace Shiboken {
|
|
||||||
inline bool Converter<QPixmap>::checkType(PyObject* pyObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QPixmap>::checkType(pyObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool Converter<QPixmap>::isConvertible(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
if (ValueTypeConverter<QPixmap>::isConvertible(pyobj))
|
|
||||||
return true;
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType<QPixmap>());
|
|
||||||
bool isVariant = Shiboken::Converter<QVariant>::checkType(pyobj);
|
|
||||||
if (isVariant) {
|
|
||||||
QVariant var(Shiboken::Converter<QVariant>::toCpp(pyobj));
|
|
||||||
return var.type() == QVariant::Pixmap;
|
|
||||||
} else if (Shiboken::Converter<QSize>::checkType(pyobj) || Shiboken::Converter<QString>::checkType(pyobj)) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return Shiboken::ObjectType::isExternalConvertible(shiboType, pyobj);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
inline QPixmap Converter<QPixmap>::toCpp(PyObject* pyobj)
|
|
||||||
{
|
|
||||||
SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType<QPixmap>());
|
|
||||||
bool isVariant = Converter<QVariant>::checkType(pyobj);
|
|
||||||
if (isVariant) {
|
|
||||||
QVariant var(Converter<QVariant>::toCpp(pyobj));
|
|
||||||
return var.value<QPixmap>();
|
|
||||||
} else if (Converter<QSize>::checkType(pyobj)) {
|
|
||||||
return QPixmap(Shiboken::Converter<QSize >::toCpp(pyobj));
|
|
||||||
} else if (Converter<QString>::checkType(pyobj)) {
|
|
||||||
return QPixmap(Shiboken::Converter<QString >::toCpp(pyobj));
|
|
||||||
} else if (Shiboken::ObjectType::isExternalConvertible(shiboType, pyobj) && Shiboken::ObjectType::hasExternalCppConversions(shiboType)) {
|
|
||||||
QPixmap* cptr = reinterpret_cast<QPixmap*>(Shiboken::ObjectType::callExternalCppConversion(shiboType, pyobj));
|
|
||||||
std::auto_ptr<QPixmap> cptr_auto_ptr(cptr);
|
|
||||||
return *cptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return *Converter<QPixmap*>::toCpp(pyobj);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline PyObject* Converter<QPixmap>::toPython(const QPixmap& cppObj)
|
|
||||||
{
|
|
||||||
return ValueTypeConverter<QPixmap>::toPython(cppObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -19,9 +19,31 @@
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
-->
|
-->
|
||||||
<typesystem package="PySide.QtGui">
|
<typesystem package="PySide.QtGui">
|
||||||
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject" />
|
|
||||||
<primitive-type name="WId" target-lang-api-name="PyObject">
|
<primitive-type name="WId" target-lang-api-name="PyObject">
|
||||||
<conversion-rule file="glue/wid_conversions.h"/>
|
<conversion-rule>
|
||||||
|
<native-to-target>
|
||||||
|
#ifdef IS_PY3K
|
||||||
|
return PyCapsule_New(%in, 0, 0);
|
||||||
|
#else
|
||||||
|
return PyCObject_FromVoidPtr(%in, 0);
|
||||||
|
#endif
|
||||||
|
</native-to-target>
|
||||||
|
<target-to-native>
|
||||||
|
<add-conversion type="PyNone">
|
||||||
|
%out = 0;
|
||||||
|
</add-conversion>
|
||||||
|
<add-conversion check="checkPyCapsuleOrPyCObject(%in)" type="PyObject">
|
||||||
|
#ifdef IS_PY3K
|
||||||
|
%out = (%OUTTYPE)PyCapsule_GetPointer(%in, 0);
|
||||||
|
#else
|
||||||
|
%out = (%OUTTYPE)PyCObject_AsVoidPtr(%in);
|
||||||
|
#endif
|
||||||
|
</add-conversion>
|
||||||
|
</target-to-native>
|
||||||
|
</conversion-rule>
|
||||||
</primitive-type>
|
</primitive-type>
|
||||||
|
<inject-code class="native" position="beginning">
|
||||||
|
<insert-template name="checkPyCapsuleOrPyCObject_func"/>
|
||||||
|
</inject-code>
|
||||||
<enum-type name="QPixmap::HBitmapFormat" />
|
<enum-type name="QPixmap::HBitmapFormat" />
|
||||||
</typesystem>
|
</typesystem>
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,21 @@
|
||||||
<rejection class="" function-name="qt_x11_getX11InfoForWindow"/>
|
<rejection class="" function-name="qt_x11_getX11InfoForWindow"/>
|
||||||
<rejection class="QX11Info" field-name="x11data"/>
|
<rejection class="QX11Info" field-name="x11data"/>
|
||||||
<value-type name="QX11Info">
|
<value-type name="QX11Info">
|
||||||
<!-- ### Both methods return void pointers, for which particular cases no handling was discussed. -->
|
<add-function signature="display()" return-type="unsigned long" static="yes">
|
||||||
<modify-function signature="visual()const" remove="all"/>
|
<inject-code>
|
||||||
<modify-function signature="appVisual(int)" remove="all"/>
|
%PYARG_0 = PyLong_FromVoidPtr(%TYPE::%FUNCTION_NAME());
|
||||||
<!-- ### -->
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
<modify-function signature="visual()const">
|
||||||
|
<inject-code>
|
||||||
|
%PYARG_0 = PyLong_FromVoidPtr(%CPPSELF.%FUNCTION_NAME());
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
<modify-function signature="appVisual(int)">
|
||||||
|
<inject-code>
|
||||||
|
%PYARG_0 = PyLong_FromVoidPtr(%CPPSELF.%FUNCTION_NAME());
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
</value-type>
|
</value-type>
|
||||||
<object-type name="QX11EmbedContainer">
|
<object-type name="QX11EmbedContainer">
|
||||||
<enum-type name="Error"/>
|
<enum-type name="Error"/>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ set(QtHelp_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qthelp_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qthelp_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtHelp_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtHelp_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtHelp_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtHelp_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtHelp_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtHelp_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTGUI_INCLUDE_DIR}
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5valuebutton_wrapper.
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qtmaemo5_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qtmaemo5_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtMaemo5_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtMaemo5_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtMaemo5_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtMaemo5_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
|
|
||||||
# QT_QTMAEMO5_* variables are not defined by CMake
|
# QT_QTMAEMO5_* variables are not defined by CMake
|
||||||
if(NOT QT_QTMAEMO5_INCLUDE_DIR)
|
if(NOT QT_QTMAEMO5_INCLUDE_DIR)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ set(QtMultimedia_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideoframe_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideoframe_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
set(QtMultimedia_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtMultimedia_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
|
|
||||||
set(QtMultimedia_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtMultimedia_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@
|
||||||
<object-type name="QAbstractVideoBuffer">
|
<object-type name="QAbstractVideoBuffer">
|
||||||
<enum-type name="HandleType"/>
|
<enum-type name="HandleType"/>
|
||||||
<enum-type name="MapMode"/>
|
<enum-type name="MapMode"/>
|
||||||
|
<modify-function signature="map(QAbstractVideoBuffer::MapMode, int*, int*)" remove="all"/>
|
||||||
|
<!-- TODO: discuss a way to have this working with the virtual method.
|
||||||
<modify-function signature="map(QAbstractVideoBuffer::MapMode, int*, int*)">
|
<modify-function signature="map(QAbstractVideoBuffer::MapMode, int*, int*)">
|
||||||
<modify-argument index="0">
|
<modify-argument index="0">
|
||||||
<replace-type modified-type="PyObject"/>
|
<replace-type modified-type="PyObject"/>
|
||||||
|
|
@ -51,6 +53,7 @@
|
||||||
<insert-template name="fix_arg,int*,int*"/>
|
<insert-template name="fix_arg,int*,int*"/>
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
-->
|
||||||
</object-type>
|
</object-type>
|
||||||
<object-type name="QAbstractVideoSurface">
|
<object-type name="QAbstractVideoSurface">
|
||||||
<enum-type name="Error"/>
|
<enum-type name="Error"/>
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ ${QtNetwork_47_SRC}
|
||||||
${QtNetwork_OPTIONAL_SRC}
|
${QtNetwork_OPTIONAL_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtNetwork_typesystem_path "${QtCore_SOURCE_DIR}")
|
set(QtNetwork_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
|
||||||
set(QtNetwork_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtNetwork_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
PySide::AutoArrayPointer<char> data(%ARGUMENT_NAMES);
|
|
||||||
QHostAddress ha;
|
|
||||||
quint16 port;
|
|
||||||
|
|
||||||
%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(data, %ARGUMENT_NAMES, &ha, &port);
|
|
||||||
%PYARG_0 = Shiboken::makeTuple(QByteArray(data, retval), ha, port);
|
|
||||||
|
|
@ -53,10 +53,6 @@
|
||||||
<enum-type name="State"/>
|
<enum-type name="State"/>
|
||||||
<enum-type name="TransferMode"/>
|
<enum-type name="TransferMode"/>
|
||||||
<enum-type name="TransferType"/>
|
<enum-type name="TransferType"/>
|
||||||
<extra-includes>
|
|
||||||
<include file-name="autoarraypointer.h" location="global"/>
|
|
||||||
</extra-includes>
|
|
||||||
|
|
||||||
<modify-function signature="connectToHost(const QString&, quint16)" allow-thread="yes" />
|
<modify-function signature="connectToHost(const QString&, quint16)" allow-thread="yes" />
|
||||||
<modify-function signature="login(const QString&, const QString&)" allow-thread="yes" />
|
<modify-function signature="login(const QString&, const QString&)" allow-thread="yes" />
|
||||||
<modify-function signature="close()" allow-thread="yes" />
|
<modify-function signature="close()" allow-thread="yes" />
|
||||||
|
|
@ -88,10 +84,6 @@
|
||||||
<enum-type name="ConnectionMode"/>
|
<enum-type name="ConnectionMode"/>
|
||||||
<enum-type name="Error"/>
|
<enum-type name="Error"/>
|
||||||
<enum-type name="State"/>
|
<enum-type name="State"/>
|
||||||
<extra-includes>
|
|
||||||
<include file-name="autoarraypointer.h" location="global"/>
|
|
||||||
</extra-includes>
|
|
||||||
|
|
||||||
<modify-function signature="readAll()" allow-thread="yes"/>
|
<modify-function signature="readAll()" allow-thread="yes"/>
|
||||||
<modify-function signature="read(char*, qint64)" allow-thread="yes">
|
<modify-function signature="read(char*, qint64)" allow-thread="yes">
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
|
|
@ -129,10 +121,6 @@
|
||||||
<object-type name="QTcpSocket"/>
|
<object-type name="QTcpSocket"/>
|
||||||
<object-type name="QUdpSocket">
|
<object-type name="QUdpSocket">
|
||||||
<enum-type name="BindFlag" flags="BindMode"/>
|
<enum-type name="BindFlag" flags="BindMode"/>
|
||||||
<extra-includes>
|
|
||||||
<include file-name="autoarraypointer.h" location="global"/>
|
|
||||||
</extra-includes>
|
|
||||||
|
|
||||||
<modify-function signature="readDatagram(char*, qint64, QHostAddress*, quint16*)" allow-thread="yes">
|
<modify-function signature="readDatagram(char*, qint64, QHostAddress*, quint16*)" allow-thread="yes">
|
||||||
<modify-argument index="1">
|
<modify-argument index="1">
|
||||||
<remove-argument/>
|
<remove-argument/>
|
||||||
|
|
@ -148,7 +136,19 @@
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
<replace-type modified-type="(data, address, port)"/>
|
<replace-type modified-type="(data, address, port)"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code class="target" position="beginning" file="glue/qudpsocket_read_datagram_glue.cpp"/>
|
<inject-code class="target" position="beginning">
|
||||||
|
Shiboken::AutoArrayPointer<char> data(%ARGUMENT_NAMES);
|
||||||
|
QHostAddress ha;
|
||||||
|
quint16 port;
|
||||||
|
%BEGIN_ALLOW_THREADS
|
||||||
|
%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(data, %ARGUMENT_NAMES, &ha, &port);
|
||||||
|
%END_ALLOW_THREADS
|
||||||
|
QByteArray ba(data, retval);
|
||||||
|
%PYARG_0 = PyTuple_New(3);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QByteArray](ba));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QHostAddress](ha));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[quint16](port));
|
||||||
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
<modify-function signature="writeDatagram(const QByteArray&, const QHostAddress&, quint16)" allow-thread="yes"/>
|
<modify-function signature="writeDatagram(const QByteArray&, const QHostAddress&, quint16)" allow-thread="yes"/>
|
||||||
<!-- ### writeDatagram(QByteArray, ...) does the trick -->
|
<!-- ### writeDatagram(QByteArray, ...) does the trick -->
|
||||||
|
|
@ -185,6 +185,9 @@
|
||||||
<enum-type name="Operation"/>
|
<enum-type name="Operation"/>
|
||||||
<modify-function signature="createRequest(QNetworkAccessManager::Operation, const QNetworkRequest&, QIODevice *)">
|
<modify-function signature="createRequest(QNetworkAccessManager::Operation, const QNetworkRequest&, QIODevice *)">
|
||||||
<modify-argument index="3" invalidate-after-use="yes"/>
|
<modify-argument index="3" invalidate-after-use="yes"/>
|
||||||
|
<modify-argument index="return">
|
||||||
|
<define-ownership class="target" owner="default"/>
|
||||||
|
</modify-argument>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
<modify-function signature="get(const QNetworkRequest&)" allow-thread="yes"/>
|
<modify-function signature="get(const QNetworkRequest&)" allow-thread="yes"/>
|
||||||
<modify-function signature="post(const QNetworkRequest &, QIODevice *)" allow-thread="yes"/>
|
<modify-function signature="post(const QNetworkRequest &, QIODevice *)" allow-thread="yes"/>
|
||||||
|
|
@ -208,6 +211,7 @@
|
||||||
<!-- ### QHostAddress(QIPv6Address) does this -->
|
<!-- ### QHostAddress(QIPv6Address) does this -->
|
||||||
<modify-function signature="QHostAddress(quint8*)" remove="all" />
|
<modify-function signature="QHostAddress(quint8*)" remove="all" />
|
||||||
<!-- ### -->
|
<!-- ### -->
|
||||||
|
<modify-function signature="setAddress(quint8*)" remove="all" />
|
||||||
</value-type>
|
</value-type>
|
||||||
|
|
||||||
<value-type name="QHostInfo">
|
<value-type name="QHostInfo">
|
||||||
|
|
@ -251,11 +255,11 @@
|
||||||
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_i < 0)
|
if (_i < 0)
|
||||||
_i = 16 - qAbs(_i);
|
_i = 16 - qAbs(_i);
|
||||||
|
|
||||||
return %CONVERTTOPYTHON[uint](%CPPSELF->c[_i]);
|
uint item = %CPPSELF.c[_i];
|
||||||
|
return %CONVERTTOPYTHON[uint](item);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</add-function>
|
</add-function>
|
||||||
<add-function signature="__len__">
|
<add-function signature="__len__">
|
||||||
|
|
@ -269,12 +273,10 @@
|
||||||
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_i < 0)
|
if (_i < 0)
|
||||||
_i = 16 - qAbs(_i);
|
_i = 16 - qAbs(_i);
|
||||||
|
quint8 item = %CONVERTTOCPP[quint8](_value);
|
||||||
%CPPSELF->c[_i] = %CONVERTTOCPP[quint8](_value);
|
%CPPSELF.c[_i] = item;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</add-function>
|
</add-function>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ set(QtOpenGL_SRC
|
||||||
${QtOpenGL_47_SRC}
|
${QtOpenGL_47_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtOpenGL_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtOpenGL_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtOpenGL_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtOpenGL_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtOpenGL_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtOpenGL_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTGUI_INCLUDE_DIR}
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,21 @@
|
||||||
<typesystem package="PySide.QtOpenGL">
|
<typesystem package="PySide.QtOpenGL">
|
||||||
<load-typesystem name="typesystem_gui.xml" generate="no" />
|
<load-typesystem name="typesystem_gui.xml" generate="no" />
|
||||||
|
|
||||||
|
<primitive-type name="GLbitfield"/>
|
||||||
|
<primitive-type name="GLboolean"/>
|
||||||
|
<primitive-type name="GLbyte"/>
|
||||||
|
<primitive-type name="GLclampd"/>
|
||||||
|
<primitive-type name="GLclampf"/>
|
||||||
|
<primitive-type name="GLdouble"/>
|
||||||
|
<primitive-type name="GLenum"/>
|
||||||
|
<primitive-type name="GLfloat"/>
|
||||||
|
<primitive-type name="GLint"/>
|
||||||
|
<primitive-type name="GLshort"/>
|
||||||
|
<primitive-type name="GLsizei"/>
|
||||||
|
<primitive-type name="GLubyte"/>
|
||||||
|
<primitive-type name="GLuint"/>
|
||||||
|
<primitive-type name="GLushort"/>
|
||||||
|
|
||||||
<rejection class="QGLColormap::QGLColormapData"/>
|
<rejection class="QGLColormap::QGLColormapData"/>
|
||||||
<rejection class="QGLContext" field-name="currentCtx"/>
|
<rejection class="QGLContext" field-name="currentCtx"/>
|
||||||
|
|
||||||
|
|
@ -91,14 +106,568 @@
|
||||||
<object-type name="QGLShader" since="4.6">
|
<object-type name="QGLShader" since="4.6">
|
||||||
<enum-type name="ShaderTypeBit" flags="ShaderType"/>
|
<enum-type name="ShaderTypeBit" flags="ShaderType"/>
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
||||||
|
<template name="callArrayFunction">
|
||||||
|
int _size = PySequence_Size(%PYARG_2);
|
||||||
|
if (_size) {
|
||||||
|
$ATTR_TYPE *_list = new $ATTR_TYPE[_size];
|
||||||
|
if (_size) {
|
||||||
|
Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE."));
|
||||||
|
for(int i=0; i < _size; i++) {
|
||||||
|
PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
|
||||||
|
_list[i] = %CONVERTTOCPP[$ATTR_TYPE](pv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%CPPSELF.%FUNCTION_NAME(%1, _list, $ARG0);
|
||||||
|
delete[] _list;
|
||||||
|
} else {
|
||||||
|
%CPPSELF.%FUNCTION_NAME(%1, ($ATTR_TYPE*)NULL, $ARG1);
|
||||||
|
}
|
||||||
|
</template>
|
||||||
|
|
||||||
<object-type name="QGLShaderProgram" since="4.6">
|
<object-type name="QGLShaderProgram" since="4.6">
|
||||||
|
<!-- setAttributeArray -->
|
||||||
|
<modify-function signature="setAttributeArray(int, const QVector2D*, int)" rename="setAttributeArray2D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector2D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setAttributeArray(int, const QVector3D*, int)" rename="setAttributeArray3D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector3D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setAttributeArray(int, const QVector4D*, int)" rename="setAttributeArray4D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector4D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setAttributeArray(const char*, const QVector2D*, int)" rename="setAttributeArray2D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector2D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setAttributeArray(const char*, const QVector3D*, int)" rename="setAttributeArray3D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector3D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setAttributeArray(const char*, const QVector4D*, int)" rename="setAttributeArray4D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="%3" />
|
||||||
|
<replace from="$ARG1" to="%3" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector4D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<!-- setUniformValueArray -->
|
||||||
|
<modify-function signature="setUniformValueArray(int, const GLint*, int)" rename="setUniformValueArrayInt">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="GLint"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const GLuint*, int)" rename="setUniformValueArrayUint">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="GLuint"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QVector2D*, int)" rename="setUniformValueArray2D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector2D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QVector3D*, int)" rename="setUniformValueArray3D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector3D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QVector4D*, int)" rename="setUniformValueArray4D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector4D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(int, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const GLint*, int)" rename="setUniformValueArrayInt">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="GLint"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const GLuint*, int)" rename="setUniformValueArrayUint">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="GLuint"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QVector2D*, int)" rename="setUniformValueArray2D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector2D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QVector3D*, int)" rename="setUniformValueArray3D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector3D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QVector4D*, int)" rename="setUniformValueArray4D">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QVector4D"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix2x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix3x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x2"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x3"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
|
||||||
|
<modify-argument index="2" >
|
||||||
|
<replace-type modified-type="PySequence" />
|
||||||
|
</modify-argument>
|
||||||
|
<modify-argument index="3">
|
||||||
|
<remove-argument />
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="callArrayFunction">
|
||||||
|
<replace from="$ARG0" to="_size" />
|
||||||
|
<replace from="$ARG1" to="0" />
|
||||||
|
<replace from="$ATTR_TYPE" to="QMatrix4x4"/>
|
||||||
|
</insert-template>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<!-- ### TODO: must evaluate if anything other than removal should be done. -->
|
||||||
|
<modify-function signature="setAttributeArray(int,const GLfloat*,int,int)" remove="all" />
|
||||||
|
<modify-function signature="setAttributeArray(const char*,const GLfloat*,int,int)" remove="all" />
|
||||||
|
<modify-function signature="setUniformValueArray(int,const GLfloat*,int,int)" remove="all" />
|
||||||
|
<modify-function signature="setUniformValueArray(const char*,const GLfloat*,int,int)" remove="all" />
|
||||||
|
<!-- ### -->
|
||||||
|
|
||||||
<!-- ### Use QMatrixZxY overloads -->
|
<!-- ### Use QMatrixZxY overloads -->
|
||||||
<modify-function signature="setUniformValue(int,Array)" remove="all" />
|
<modify-function signature="setUniformValue(int,Array)" remove="all" />
|
||||||
<modify-function signature="setUniformValue(const char*,Array)" remove="all" />
|
<modify-function signature="setUniformValue(const char*,Array)" remove="all" />
|
||||||
<modify-function signature="setAttributeValue(int,const float*,int,int)" remove="all" />
|
<modify-function signature="setAttributeValue(int,const GLfloat*,int,int)" remove="all" />
|
||||||
<modify-function signature="setAttributeValue(const char*,const float*,int,int)" remove="all" />
|
<modify-function signature="setAttributeValue(const char*,const GLfloat*,int,int)" remove="all" />
|
||||||
<modify-function signature="setAttributeArray(int, uint, const void*, int, int)" remove="all" since="4.7" />
|
<modify-function signature="setAttributeArray(int, GLenum, const void*, int, int)" remove="all" since="4.7" />
|
||||||
<modify-function signature="setAttributeArray(const char*, uint, const void*, int, int)" remove="all" since="4.7" />
|
<modify-function signature="setAttributeArray(const char*, GLenum, const void*, int, int)" remove="all" since="4.7" />
|
||||||
<!-- ### -->
|
<!-- ### -->
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
||||||
|
|
@ -109,15 +678,13 @@
|
||||||
<enum-type name="UsagePattern" since="4.7"/>
|
<enum-type name="UsagePattern" since="4.7"/>
|
||||||
<modify-function signature="allocate(const void*, int)">
|
<modify-function signature="allocate(const void*, int)">
|
||||||
<modify-argument index="1">
|
<modify-argument index="1">
|
||||||
<replace-type modified-type="const QByteArray&"/>
|
<replace-type modified-type="QByteArray&"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="2">
|
<modify-argument index="2">
|
||||||
<replace-default-expression with="-1"/>
|
<replace-default-expression with="-1"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code class="target" position="beginning">
|
<inject-code class="target" position="beginning">
|
||||||
int size = %2;
|
int size = (%2 < 0) ? %1.size() : %2;
|
||||||
if (size < 0)
|
|
||||||
size = %1.size();
|
|
||||||
%CPPSELF.allocate((const void*) %1.data(), size);
|
%CPPSELF.allocate((const void*) %1.data(), size);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
@ -149,21 +716,21 @@
|
||||||
QByteArray ret;
|
QByteArray ret;
|
||||||
if (result)
|
if (result)
|
||||||
ret.append((const char*)data, %3);
|
ret.append((const char*)data, %3);
|
||||||
%PYARG_0 = Shiboken::makeTuple(result, ret);
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](result));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QByteArray](ret));
|
||||||
delete[] data;
|
delete[] data;
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
<modify-function signature="write(int, const void*, int)">
|
<modify-function signature="write(int, const void*, int)">
|
||||||
<modify-argument index="2">
|
<modify-argument index="2">
|
||||||
<replace-type modified-type="const QByteArray&"/>
|
<replace-type modified-type="QByteArray&"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="3">
|
<modify-argument index="3">
|
||||||
<replace-default-expression with="-1"/>
|
<replace-default-expression with="-1"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code class="target" position="beginning">
|
<inject-code class="target" position="beginning">
|
||||||
int size = %3;
|
int size = (%3 < 0) ? %2.size() : %3;
|
||||||
if (size < 0)
|
|
||||||
size = %2.size();
|
|
||||||
%CPPSELF.write(%1, (const void*) %2.data(), size);
|
%CPPSELF.write(%1, (const void*) %2.data(), size);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
project(QtScript)
|
project(QtScript)
|
||||||
|
|
||||||
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
|
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
|
||||||
set (QtCore_46_SRC )
|
set (QtScript_47_SRC )
|
||||||
else()
|
else()
|
||||||
set(QtScript_46_SRC
|
set(QtScript_47_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptprogram_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptprogram_wrapper.cpp
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -22,10 +22,10 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptextensionplugin_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptstring_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptstring_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalue_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalue_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalueiterator_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalueiterator_wrapper.cpp
|
||||||
${QtScript_46_SRC}
|
${QtScript_47_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtScript_typesystem_path "${QtCore_SOURCE_DIR}")
|
set(QtScript_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
|
||||||
set(QtScript_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtScript_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -40,16 +40,76 @@
|
||||||
<object-type name="QScriptEngine">
|
<object-type name="QScriptEngine">
|
||||||
<enum-type name="QObjectWrapOption" flags="QObjectWrapOptions"/>
|
<enum-type name="QObjectWrapOption" flags="QObjectWrapOptions"/>
|
||||||
<enum-type name="ValueOwnership"/>
|
<enum-type name="ValueOwnership"/>
|
||||||
|
<!-- Not supported BUG #957-->
|
||||||
|
<modify-function signature="scriptValueFromQMetaObject()" remove="all" />
|
||||||
</object-type>
|
</object-type>
|
||||||
<object-type name="QScriptExtensionInterface"/>
|
<object-type name="QScriptExtensionInterface"/>
|
||||||
<object-type name="QScriptExtensionPlugin"/>
|
<object-type name="QScriptExtensionPlugin"/>
|
||||||
<value-type name="QScriptProgram" since="4.7"/>
|
<value-type name="QScriptProgram" since="4.7"/>
|
||||||
<value-type name="QScriptString"/>
|
<value-type name="QScriptString">
|
||||||
|
<modify-function signature="toArrayIndex(bool*)const">
|
||||||
|
<modify-argument index="1">
|
||||||
|
<remove-argument/>
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code class="target" position="beginning">
|
||||||
|
<insert-template name="fix_bool*"/>
|
||||||
|
</inject-code>
|
||||||
|
</modify-function>
|
||||||
|
</value-type>
|
||||||
<value-type name="QScriptValue">
|
<value-type name="QScriptValue">
|
||||||
<enum-type name="PropertyFlag" flags="PropertyFlags"/>
|
<enum-type name="PropertyFlag" flags="PropertyFlags"/>
|
||||||
<enum-type name="ResolveFlag" flags="ResolveFlags"/>
|
<enum-type name="ResolveFlag" flags="ResolveFlags"/>
|
||||||
<enum-type name="SpecialValue"/>
|
<enum-type name="SpecialValue"/>
|
||||||
|
<add-function signature="__repr__" return-type="PyObject*">
|
||||||
|
<inject-code class="target" position="beginning">
|
||||||
|
if (%CPPSELF.isVariant() || %CPPSELF.isString()) {
|
||||||
|
QString format = QString().sprintf("%s(\"%s\")", ((PyObject*)%PYSELF)->ob_type->tp_name, qPrintable(%CPPSELF.toString()));
|
||||||
|
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
|
||||||
|
} else {
|
||||||
|
%PYARG_0 = Shiboken::String::fromCString(
|
||||||
|
((PyObject* )%PYSELF)->ob_type->tp_name);
|
||||||
|
}
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
<add-function signature="__mgetitem__">
|
||||||
|
<inject-code>
|
||||||
|
Shiboken::AutoDecRef key(PyObject_Str(_key));
|
||||||
|
QVariant res = %CPPSELF.property(Shiboken::String::toCString(key.object())).toVariant();
|
||||||
|
if (res.isValid()) {
|
||||||
|
return %CONVERTTOPYTHON[QVariant](res);
|
||||||
|
} else {
|
||||||
|
PyObject* errorType = PyInt_Check(_key) ? PyExc_IndexError : PyExc_KeyError;
|
||||||
|
PyErr_SetString(errorType, "Key not found.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
<add-function signature="__iter__()" return-type="PyObject*">
|
||||||
|
<inject-code>
|
||||||
|
%PYARG_0 = Shiboken::createWrapper(new QScriptValueIterator(*%CPPSELF), true, true);
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
</value-type>
|
</value-type>
|
||||||
<object-type name="QScriptValueIterator"/>
|
<object-type name="QScriptValueIterator">
|
||||||
|
<add-function signature="__iter__()" return-type="PyObject*">
|
||||||
|
<inject-code>
|
||||||
|
<insert-template name="__iter__" />
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
<add-function signature="__next__()" return-type="PyObject*">
|
||||||
|
<inject-code>
|
||||||
|
if (%CPPSELF.hasNext()) {
|
||||||
|
%CPPSELF.next();
|
||||||
|
QString name = %CPPSELF.name();
|
||||||
|
QVariant value = %CPPSELF.value().toVariant();
|
||||||
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QString](name));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QVariant](value));
|
||||||
|
} else {
|
||||||
|
PyErr_SetNone(PyExc_StopIteration);
|
||||||
|
}
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
</object-type>
|
||||||
</typesystem>
|
</typesystem>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ set(QtScriptTools_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScriptTools/qscriptenginedebugger_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScriptTools/qscriptenginedebugger_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtScriptTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtScript_SOURCE_DIR}${PATH_SEP}${QtScriptTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtScriptTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtScript_SOURCE_DIR}${PATH_SEP}${QtScriptTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
|
|
||||||
set(QtScriptTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtScriptTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ set(QtSql_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/qtsql_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/qtsql_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtSql_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtSql_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtSql_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtSql_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtSql_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtSql_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTGUI_INCLUDE_DIR}
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvgwidget_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qtsvg_module_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qtsvg_module_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtSvg_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtSvg_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtSvg_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtSvg_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qttest_module_wrapper.cpp
|
||||||
${QtTest_46_SRC}
|
${QtTest_46_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtTest_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtTest_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtTest_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtTest_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@
|
||||||
<rejection class="QTest" function-name="toString<uint>"/>
|
<rejection class="QTest" function-name="toString<uint>"/>
|
||||||
<rejection class="QTest" function-name="toString<ulong>"/>
|
<rejection class="QTest" function-name="toString<ulong>"/>
|
||||||
<rejection class="QTest" function-name="toString<ushort>"/>
|
<rejection class="QTest" function-name="toString<ushort>"/>
|
||||||
|
<rejection class="QTest" function-name="qt_snprintf"/>
|
||||||
|
|
||||||
<rejection class="QTest" function-name="compare_helper"/>
|
<rejection class="QTest" function-name="compare_helper"/>
|
||||||
<rejection class="QTest" function-name="touchEvent"/>
|
<rejection class="QTest" function-name="touchEvent"/>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ set(QtUiTools_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/quiloader_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/quiloader_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtUiTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtXml_SOURCE_DIR}${PATH_SEP}${QtUiTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtUiTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtXml_SOURCE_DIR}${PATH_SEP}${QtUiTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtUiTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtUiTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTGUI_INCLUDE_DIR}
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
|
@ -23,10 +23,10 @@ set(QtUiTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
set(QtUiTools_libraries pyside
|
set(QtUiTools_libraries pyside
|
||||||
uiplugin
|
uiplugin
|
||||||
${SHIBOKEN_PYTHON_LIBRARIES}
|
${SHIBOKEN_PYTHON_LIBRARIES}
|
||||||
${QT_QTCORE_LIBRARY}
|
${QT_QTUITOOLS_LIBRARY}
|
||||||
${QT_QTGUI_LIBRARY}
|
|
||||||
${QT_QTDESIGNER_LIBRARY}
|
${QT_QTDESIGNER_LIBRARY}
|
||||||
${QT_QTUITOOLS_LIBRARY})
|
${QT_QTCORE_LIBRARY}
|
||||||
|
${QT_QTGUI_LIBRARY})
|
||||||
set(QtUiTools_deps QtGui QtXml)
|
set(QtUiTools_deps QtGui QtXml)
|
||||||
create_pyside_module(QtUiTools
|
create_pyside_module(QtUiTools
|
||||||
QtUiTools_include_dirs
|
QtUiTools_include_dirs
|
||||||
|
|
|
||||||
|
|
@ -33,13 +33,13 @@ inline void registerCustomWidget(PyObject* obj)
|
||||||
if (plugin == 0) {
|
if (plugin == 0) {
|
||||||
foreach(QObject* o, QPluginLoader::staticInstances()) {
|
foreach(QObject* o, QPluginLoader::staticInstances()) {
|
||||||
plugin = qobject_cast<PyCustomWidgets*>(o);
|
plugin = qobject_cast<PyCustomWidgets*>(o);
|
||||||
if (o)
|
if (plugin)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!plugin)
|
if (!plugin)
|
||||||
qDebug() << "Fail to load uiloader plugin";
|
qDebug() << "Failed to load uiloader plugin.";
|
||||||
else
|
else
|
||||||
plugin->registerWidgetType(obj);
|
plugin->registerWidgetType(obj);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
52
PySide/QtUiTools/glue/uitools_loadui.cpp
Normal file
52
PySide/QtUiTools/glue/uitools_loadui.cpp
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Based on code provided by:
|
||||||
|
* Antonio Valentino <antonio.valentino at tiscali.it>
|
||||||
|
* Frédéric <frederic.mantegazza at gbiloba.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <shiboken.h>
|
||||||
|
#include <QUiLoader>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
|
static void createChildrenNameAttributes(PyObject* root, QObject* object)
|
||||||
|
{
|
||||||
|
foreach (QObject* child, object->children()) {
|
||||||
|
const QByteArray name = child->objectName().toLocal8Bit();
|
||||||
|
|
||||||
|
if (!name.isEmpty() && !name.startsWith("_") && !name.startsWith("qt_")) {
|
||||||
|
bool hasAttr = PyObject_HasAttrString(root, name.constData());
|
||||||
|
if (!hasAttr) {
|
||||||
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child));
|
||||||
|
PyObject_SetAttrString(root, name.constData(), pyChild);
|
||||||
|
}
|
||||||
|
createChildrenNameAttributes(root, child);
|
||||||
|
}
|
||||||
|
createChildrenNameAttributes(root, child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject* QUiLoadedLoadUiFromDevice(QUiLoader* self, QIODevice* dev, QWidget* parent)
|
||||||
|
{
|
||||||
|
QWidget* wdg = self->load(dev, parent);
|
||||||
|
|
||||||
|
if (wdg) {
|
||||||
|
PyObject* pyWdg = %CONVERTTOPYTHON[QWidget*](wdg);
|
||||||
|
createChildrenNameAttributes(pyWdg, wdg);
|
||||||
|
if (parent) {
|
||||||
|
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
|
||||||
|
Shiboken::Object::setParent(pyParent, pyWdg);
|
||||||
|
}
|
||||||
|
return pyWdg;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!PyErr_Occurred())
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "Unable to open/read ui device");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject* QUiLoaderLoadUiFromFileName(QUiLoader* self, const QString& uiFile, QWidget* parent)
|
||||||
|
{
|
||||||
|
QFile fd(uiFile);
|
||||||
|
return QUiLoadedLoadUiFromDevice(self, &fd, parent);
|
||||||
|
}
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
/*
|
|
||||||
* Based on code provided by:
|
|
||||||
* Antonio Valentino <antonio.valentino at tiscali.it>
|
|
||||||
* Frédéric <frederic.mantegazza at gbiloba.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <shiboken.h>
|
|
||||||
|
|
||||||
static void
|
|
||||||
_populate_parent(PyObject* pyParent, QObject *parent)
|
|
||||||
{
|
|
||||||
if (parent->children().isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
foreach(QObject *child, parent->children()) {
|
|
||||||
QString name(child->objectName());
|
|
||||||
if (!name.isEmpty() && !name.startsWith("_") && !name.startsWith("qt_")) {
|
|
||||||
bool has_attr = PyObject_HasAttrString(pyParent, qPrintable(name));
|
|
||||||
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QObject*>::toPython(child));
|
|
||||||
if (!has_attr)
|
|
||||||
PyObject_SetAttrString(pyParent, qPrintable(name), pyChild);
|
|
||||||
|
|
||||||
Shiboken::Object::setParent(pyParent, pyChild);
|
|
||||||
_populate_parent(pyChild, qobject_cast<QObject*>(child));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject*
|
|
||||||
quiloader_load_ui_from_device(QUiLoader* self, QIODevice* dev, QWidget *parent)
|
|
||||||
{
|
|
||||||
QWidget *w = self->load(dev, parent);
|
|
||||||
if (w) {
|
|
||||||
QObject* _parent = parent;
|
|
||||||
if (!_parent)
|
|
||||||
_parent = w;
|
|
||||||
|
|
||||||
if (parent && parent->layout())
|
|
||||||
parent->layout()->deleteLater();
|
|
||||||
|
|
||||||
PyObject* pyParent = Shiboken::Converter<QWidget*>::toPython(w);
|
|
||||||
_populate_parent(pyParent, _parent);
|
|
||||||
|
|
||||||
return pyParent;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!PyErr_Occurred())
|
|
||||||
PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyObject*
|
|
||||||
quiloader_load_ui(QUiLoader* self, const QString &ui_file, QWidget *parent)
|
|
||||||
{
|
|
||||||
QFile fd(ui_file);
|
|
||||||
|
|
||||||
if (fd.exists(ui_file) && fd.open(QFile::ReadOnly)) {
|
|
||||||
QWidget* w = self->load(&fd, parent);
|
|
||||||
fd.close();
|
|
||||||
if (w != 0) {
|
|
||||||
QObject *_parent = parent;
|
|
||||||
if (!_parent)
|
|
||||||
_parent = w;
|
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(_parent));
|
|
||||||
if (parent && parent->layout())
|
|
||||||
parent->layout()->deleteLater();
|
|
||||||
|
|
||||||
_populate_parent(pyParent, _parent);
|
|
||||||
|
|
||||||
return Shiboken::Converter<QWidget*>::toPython(w);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!PyErr_Occurred())
|
|
||||||
PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!--
|
<!--
|
||||||
This file is part of PySide project.
|
This file is part of PySide project.
|
||||||
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
|
Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
Contact: PySide team <contact@pyside.org>
|
Contact: PySide team <contact@pyside.org>
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
<extra-includes>
|
<extra-includes>
|
||||||
<include file-name="glue/plugins.h" location="local"/>
|
<include file-name="glue/plugins.h" location="local"/>
|
||||||
</extra-includes>
|
</extra-includes>
|
||||||
|
<inject-code class="native" position="beginning" file="glue/uitools_loadui.cpp"/>
|
||||||
<inject-code>
|
<inject-code>
|
||||||
Q_IMPORT_PLUGIN(uiplugin);
|
Q_IMPORT_PLUGIN(uiplugin);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
|
|
@ -90,41 +91,36 @@
|
||||||
<modify-function signature="createWidget(const QString&, QWidget*, const QString&)">
|
<modify-function signature="createWidget(const QString&, QWidget*, const QString&)">
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
<parent index="2" action="add"/>
|
<parent index="2" action="add"/>
|
||||||
|
<define-ownership class="target" owner="default"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
||||||
<modify-function signature="load(QIODevice*, QWidget*)">
|
<modify-function signature="load(QIODevice*, QWidget*)">
|
||||||
<extra-includes>
|
|
||||||
<include file-name="glue/uitools_loadui.h" location="local"/>
|
|
||||||
</extra-includes>
|
|
||||||
<modify-argument index="2">
|
<modify-argument index="2">
|
||||||
<replace-default-expression with="0" />
|
<replace-default-expression with="0" />
|
||||||
<rename to="parentWidget" />
|
<rename to="parentWidget" />
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
<parent index="2" action="add"/>
|
<define-ownership class="target" owner="target"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code>
|
<inject-code>
|
||||||
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
|
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
|
||||||
%PYARG_0 = quiloader_load_ui_from_device(%CPPSELF, %1, %2);
|
%PYARG_0 = QUiLoadedLoadUiFromDevice(%CPPSELF, %1, %2);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
||||||
<!-- Syntax sugar -->
|
<!-- Syntax sugar -->
|
||||||
<add-function signature="load(QString, QWidget*)" return-type="QWidget*">
|
<add-function signature="load(QString, QWidget*)" return-type="QWidget*">
|
||||||
<extra-includes>
|
|
||||||
<include file-name="glue/uitools_loadui.h" location="local"/>
|
|
||||||
</extra-includes>
|
|
||||||
<modify-argument index="2">
|
<modify-argument index="2">
|
||||||
<replace-default-expression with="0" />
|
<replace-default-expression with="0" />
|
||||||
<rename to="parentWidget" />
|
<rename to="parentWidget" />
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
<parent index="2" action="add"/>
|
<define-ownership class="target" owner="target"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code>
|
<inject-code>
|
||||||
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
|
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
|
||||||
%PYARG_0 = quiloader_load_ui(%CPPSELF, %1, %2);
|
%PYARG_0 = QUiLoaderLoadUiFromFileName(%CPPSELF, %1, %2);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</add-function>
|
</add-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/webcore_wrapper.cpp
|
||||||
${QtWebKit_46_SRC}
|
${QtWebKit_46_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtWebKit_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(QtWebKit_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(QtWebkit_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtWebkit_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebkit/
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebkit/
|
||||||
${QT_INCLUDE_DIR}
|
${QT_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,6 @@
|
||||||
|
|
||||||
<namespace-type name="WebCore"/>
|
<namespace-type name="WebCore"/>
|
||||||
|
|
||||||
<!-- unsuported property with type QList<MimeType> -->
|
|
||||||
<rejection class="QWebPluginFactory::Plugin" field-name="mimeTypes"/>
|
|
||||||
|
|
||||||
<object-type name="QWebView">
|
<object-type name="QWebView">
|
||||||
<modify-function signature="setPage(QWebPage*)">
|
<modify-function signature="setPage(QWebPage*)">
|
||||||
<modify-argument index="1">
|
<modify-argument index="1">
|
||||||
|
|
@ -84,6 +81,9 @@
|
||||||
<!-- Qt 4.6 -->
|
<!-- Qt 4.6 -->
|
||||||
<enum-type name="ErrorDomain" since="4.6"/>
|
<enum-type name="ErrorDomain" since="4.6"/>
|
||||||
<enum-type name="Extension"/>
|
<enum-type name="Extension"/>
|
||||||
|
<!-- Qt 4.8 -->
|
||||||
|
<enum-type name="Feature" since="4.8" revision="4800" />
|
||||||
|
<enum-type name="PermissionPolicy" since="4.8" revision="4800" />
|
||||||
|
|
||||||
<value-type name="ChooseMultipleFilesExtensionOption" />
|
<value-type name="ChooseMultipleFilesExtensionOption" />
|
||||||
<value-type name="ChooseMultipleFilesExtensionReturn" />
|
<value-type name="ChooseMultipleFilesExtensionReturn" />
|
||||||
|
|
@ -93,28 +93,31 @@
|
||||||
<value-type name="ExtensionReturn" />
|
<value-type name="ExtensionReturn" />
|
||||||
|
|
||||||
<modify-function signature="extension(QWebPage::Extension, const QWebPage::ExtensionOption*, QWebPage::ExtensionReturn*)">
|
<modify-function signature="extension(QWebPage::Extension, const QWebPage::ExtensionOption*, QWebPage::ExtensionReturn*)">
|
||||||
<modify-argument index="2" invalidate-after-use="yes">
|
<template name="qwebpage_extension_argument_conversion">
|
||||||
<conversion-rule class="target">
|
|
||||||
PyObject* %out = 0;
|
PyObject* %out = 0;
|
||||||
// Cast the parameters according to the extension type
|
// Cast the parameters according to the extension type
|
||||||
if (extension == QWebPage::ChooseMultipleFilesExtension)
|
if (extension == QWebPage::ChooseMultipleFilesExtension) {
|
||||||
%out = %CONVERTTOPYTHON[ChooseMultipleFilesExtensionOption*](reinterpret_cast<const ChooseMultipleFilesExtensionOption*>(option));
|
const ChooseMultipleFilesExtension$TYPE_SUFFIX* _in = reinterpret_cast<const ChooseMultipleFilesExtension$TYPE_SUFFIX*>(%in);
|
||||||
|
%out = %CONVERTTOPYTHON[const QWebPage::ChooseMultipleFilesExtension$TYPE_SUFFIX*](_in);
|
||||||
#if QT_VERSION >= 0x040600
|
#if QT_VERSION >= 0x040600
|
||||||
else if (extension == QWebPage::ErrorPageExtension)
|
} else if (extension == QWebPage::ErrorPageExtension) {
|
||||||
%out = %CONVERTTOPYTHON[ErrorPageExtensionOption*](reinterpret_cast<const ErrorPageExtensionOption*>(option));
|
const ErrorPageExtension$TYPE_SUFFIX* _in = reinterpret_cast<const ErrorPageExtension$TYPE_SUFFIX*>(%in);
|
||||||
|
%out = %CONVERTTOPYTHON[const QWebPage::ErrorPageExtension$TYPE_SUFFIX*](_in);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
</template>
|
||||||
|
<modify-argument index="2" invalidate-after-use="yes">
|
||||||
|
<conversion-rule class="target">
|
||||||
|
<insert-template name="qwebpage_extension_argument_conversion">
|
||||||
|
<replace from="$TYPE_SUFFIX" to="Option"/>
|
||||||
|
</insert-template>
|
||||||
</conversion-rule>
|
</conversion-rule>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="3" invalidate-after-use="yes">
|
<modify-argument index="3" invalidate-after-use="yes">
|
||||||
<conversion-rule class="target">
|
<conversion-rule class="target">
|
||||||
PyObject* %out = 0;
|
<insert-template name="qwebpage_extension_argument_conversion">
|
||||||
// Cast the parameters according to the extension type
|
<replace from="$TYPE_SUFFIX" to="Return"/>
|
||||||
if (extension == QWebPage::ChooseMultipleFilesExtension)
|
</insert-template>
|
||||||
%out = %CONVERTTOPYTHON[ChooseMultipleFilesExtensionReturn*](reinterpret_cast<const ChooseMultipleFilesExtensionReturn*>(output));
|
|
||||||
#if QT_VERSION >= 0x040600
|
|
||||||
else if (extension == QWebPage::ErrorPageExtension)
|
|
||||||
%out = %CONVERTTOPYTHON[ErrorPageExtensionReturn*](reinterpret_cast<const ErrorPageExtensionReturn*>(output));
|
|
||||||
#endif
|
|
||||||
</conversion-rule>
|
</conversion-rule>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
@ -141,21 +144,49 @@
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
||||||
<modify-function signature="javaScriptPrompt(QWebFrame*,const QString &,const QString &,QString*)">
|
<modify-function signature="javaScriptPrompt(QWebFrame*,const QString &,const QString &,QString*)">
|
||||||
<modify-argument index="return">
|
|
||||||
<replace-type modified-type="PyObject"/>
|
|
||||||
</modify-argument>
|
|
||||||
<modify-argument index="4">
|
<modify-argument index="4">
|
||||||
<remove-argument />
|
<remove-argument />
|
||||||
|
<conversion-rule class="native">
|
||||||
|
QString _local;
|
||||||
|
QString* %4 = &_local;
|
||||||
|
</conversion-rule>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<modify-argument index="return">
|
<modify-argument index="return">
|
||||||
<replace-type modified-type="(retval, result)"/>
|
<replace-type modified-type="PySequence"/>
|
||||||
|
<conversion-rule class="native">
|
||||||
|
Shiboken::AutoDecRef pyRes(PySequence_GetItem(%PYARG_0, 0));
|
||||||
|
Shiboken::AutoDecRef pyStr(PySequence_GetItem(%PYARG_0, 1));
|
||||||
|
%RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](pyRes);
|
||||||
|
*%4 = %CONVERTTOCPP[QString](pyStr);
|
||||||
|
</conversion-rule>
|
||||||
|
<conversion-rule class="target">
|
||||||
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](*%4));
|
||||||
|
</conversion-rule>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code class="target" position="end">
|
|
||||||
QString str;
|
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, &str);
|
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, str);
|
|
||||||
</inject-code>
|
|
||||||
</modify-function>
|
</modify-function>
|
||||||
|
|
||||||
|
<add-function signature="qt_metacall()">
|
||||||
|
<inject-code class="native">
|
||||||
|
static int _signalIndex = -1;
|
||||||
|
static QMetaMethod _m;
|
||||||
|
|
||||||
|
if (_signalIndex == -1) {
|
||||||
|
_signalIndex = QWebPage::staticMetaObject.indexOfSlot("shouldInterruptJavaScript()");
|
||||||
|
_m = QWebPage::staticMetaObject.method(_signalIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_signalIndex == id) {
|
||||||
|
Shiboken::GilState gil;
|
||||||
|
PyObject* self = (PyObject*)Shiboken::BindingManager::instance().retrieveWrapper(this);
|
||||||
|
if (self) {
|
||||||
|
Shiboken::AutoDecRef _pyMethod(PyObject_GetAttrString(self, "shouldInterruptJavaScript"));
|
||||||
|
return PySide::SignalManager::callPythonMetaMethod(_m, args, _pyMethod, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
<object-type name="QWebHistory"/>
|
<object-type name="QWebHistory"/>
|
||||||
<object-type name="QWebHistoryInterface"/>
|
<object-type name="QWebHistoryInterface"/>
|
||||||
|
|
@ -163,6 +194,12 @@
|
||||||
<enum-type name="Extension"/>
|
<enum-type name="Extension"/>
|
||||||
<value-type name="Plugin"/>
|
<value-type name="Plugin"/>
|
||||||
<value-type name="MimeType"/>
|
<value-type name="MimeType"/>
|
||||||
|
<modify-function signature="create(const QString &, const QUrl &, const QStringList &, const QStringList &) const">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<define-ownership class="native" owner="c++"/>
|
||||||
|
<define-ownership class="target" owner="target"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
<value-type name="QWebDatabase"/>
|
<value-type name="QWebDatabase"/>
|
||||||
<value-type name="QWebHistoryItem"/>
|
<value-type name="QWebHistoryItem"/>
|
||||||
|
|
@ -187,7 +224,8 @@
|
||||||
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
PyErr_SetString(PyExc_IndexError, "index out of bounds");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return %CONVERTTOPYTHON[QWebElement](%CPPSELF.at(_i));
|
QWebElement element = %CPPSELF.at(_i);
|
||||||
|
return %CONVERTTOPYTHON[QWebElement](element);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</add-function>
|
</add-function>
|
||||||
</value-type>
|
</value-type>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlreader_wrapper.cpp
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlsimplereader_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlsimplereader_wrapper.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(QtXml_typesystem_path "${QtCore_SOURCE_DIR}")
|
set(QtXml_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
|
||||||
set(QtXml_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtXml_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,14 @@
|
||||||
QString _errorMsg_;
|
QString _errorMsg_;
|
||||||
int _errorLine_ = 0;
|
int _errorLine_ = 0;
|
||||||
int _errorColumn_ = 0;
|
int _errorColumn_ = 0;
|
||||||
|
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
bool _ret_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &_errorMsg_, &_errorLine_, &_errorColumn_);
|
bool _ret_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &_errorMsg_, &_errorLine_, &_errorColumn_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(_ret_, _errorMsg_, _errorLine_, _errorColumn_);
|
%PYARG_0 = PyTuple_New(4);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](_ret_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](_errorMsg_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](_errorLine_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[int](_errorColumn_));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<value-type name="QDomDocument">
|
<value-type name="QDomDocument">
|
||||||
|
|
@ -270,12 +273,12 @@
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code class="target" position="end">
|
<inject-code class="target" position="end">
|
||||||
QXmlInputSource* _qxmlinputsource_arg_ = 0;
|
QXmlInputSource* _qxmlinputsource_arg_ = 0;
|
||||||
|
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
|
%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
|
%PYARG_0 = PyTuple_New(2);
|
||||||
%PYARG_0 = Shiboken::makeTuple(%0, _qxmlinputsource_arg_);
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QXmlInputSource*](_qxmlinputsource_arg_));
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
@ -300,7 +303,9 @@
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE %0 = %CPPSELF.%TYPE::%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
|
%RETURN_TYPE %0 = %CPPSELF.%TYPE::%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(%0, _qxmlinputsource_arg_);
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QXmlInputSource*](_qxmlinputsource_arg_));
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ set(QtXmlPatterns_SRC
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlserializer_wrapper.cpp
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlserializer_wrapper.cpp
|
||||||
${QtXmlPatterns_46_SRC}
|
${QtXmlPatterns_46_SRC}
|
||||||
)
|
)
|
||||||
set(QtXmlPatterns_typesystem_path "${QtCore_SOURCE_DIR}")
|
set(QtXmlPatterns_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
|
||||||
set(QtXmlPatterns_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(QtXmlPatterns_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTXMLPATTERNS_INCLUDE_DIR}
|
${QT_QTXMLPATTERNS_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,8 @@
|
||||||
<define-ownership owner="target"/>
|
<define-ownership owner="target"/>
|
||||||
</modify-argument>
|
</modify-argument>
|
||||||
<inject-code>
|
<inject-code>
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[QXmlSchema*](new QXmlSchema(%CPPSELF.schema()));
|
QXmlSchema* %0 = new QXmlSchema(%CPPSELF.schema());
|
||||||
|
%PYARG_0 = %CONVERTTOPYTHON[QXmlSchema*](%0);
|
||||||
</inject-code>
|
</inject-code>
|
||||||
</modify-function>
|
</modify-function>
|
||||||
</object-type>
|
</object-type>
|
||||||
|
|
@ -86,7 +87,11 @@
|
||||||
</value-type>
|
</value-type>
|
||||||
|
|
||||||
<value-type name="QXmlQuery">
|
<value-type name="QXmlQuery">
|
||||||
|
<!-- ### TODO: must evaluate if anything other than removal is needed. -->
|
||||||
<enum-type name="QueryLanguage" />
|
<enum-type name="QueryLanguage" />
|
||||||
|
<modify-function signature="evaluateTo(QStringList*)const" remove="all" />
|
||||||
|
<modify-function signature="evaluateTo(QString*)const" remove="all" />
|
||||||
|
<!-- ### -->
|
||||||
</value-type>
|
</value-type>
|
||||||
<object-type name="QXmlResultItems" />
|
<object-type name="QXmlResultItems" />
|
||||||
<object-type name="QXmlSerializer" />
|
<object-type name="QXmlSerializer" />
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit', 'QtScript']
|
__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit', 'QtScript']
|
||||||
import private
|
|
||||||
|
|
||||||
__version__ = "@BINDING_API_VERSION_FULL@"
|
__version__ = "@BINDING_API_VERSION_FULL@"
|
||||||
__version_info__ = (@BINDING_API_MAJOR_VERSION@, @BINDING_API_MINOR_VERSION@, @BINDING_API_MICRO_VERSION@, "@BINDING_API_RELEASE_LEVEL@", @BINDING_API_SERIAL@)
|
__version_info__ = (@BINDING_API_MAJOR_VERSION@, @BINDING_API_MINOR_VERSION@, @BINDING_API_MICRO_VERSION@, "@BINDING_API_RELEASE_LEVEL@", @BINDING_API_SERIAL@)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This file is part of PySide: Python for Qt
|
* This file is part of PySide: Python for Qt
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
|
* Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
*
|
*
|
||||||
* Contact: PySide team <contact@pyside.org>
|
* Contact: PySide team <contact@pyside.org>
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_backendcapabilities_notifierwra
|
||||||
${phonon_OPTIONAL_SRC}
|
${phonon_OPTIONAL_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(phonon_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${phonon_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
set(phonon_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${phonon_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
|
||||||
set(phonon_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
set(phonon_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${QT_QTCORE_INCLUDE_DIR}
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
${QT_QTGUI_INCLUDE_DIR}
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
import atexit
|
|
||||||
from QtCore import __moduleShutdown
|
|
||||||
|
|
||||||
atexit.register(__moduleShutdown)
|
|
||||||
|
|
@ -21,76 +21,89 @@
|
||||||
<typesystem>
|
<typesystem>
|
||||||
<template name="replace_child">
|
<template name="replace_child">
|
||||||
$CHILD_TYPE* oldChild = %CPPSELF.$FUNCTION_GET_OLD();
|
$CHILD_TYPE* oldChild = %CPPSELF.$FUNCTION_GET_OLD();
|
||||||
if (oldChild) {
|
if (oldChild && (oldChild != $CPPARG)) {
|
||||||
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[$CHILD_TYPE*](oldChild));
|
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[$CHILD_TYPE*](oldChild));
|
||||||
Shiboken::Object::setParent(NULL, pyChild);
|
Shiboken::Object::setParent(0, pyChild);
|
||||||
|
Shiboken::Object::releaseOwnership(pyChild);
|
||||||
}
|
}
|
||||||
Shiboken::Object::setParent(%PYSELF, $PYARG);
|
Shiboken::Object::setParent(%PYSELF, $PYARG);
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- Templates to fix bool* parameters -->
|
<!-- Templates to fix bool* parameters -->
|
||||||
|
<template name="tuple_retval_ok">
|
||||||
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[bool](ok_));
|
||||||
|
</template>
|
||||||
<template name="fix_bool*">
|
<template name="fix_bool*">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_args,bool*">
|
<template name="fix_args,bool*">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &ok_);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &ok_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_arg,bool*,arg">
|
<template name="fix_arg,bool*,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &ok_, %3);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &ok_, %3);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_bool*,arg">
|
<template name="fix_bool*,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_bool*,arg,arg">
|
<template name="fix_bool*,arg,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2, %3);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2, %3);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_bool*,arg,arg,arg">
|
<template name="fix_bool*,arg,arg,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2, %3, %4);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2, %3, %4);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
|
</template>
|
||||||
|
<template name="fix_bool*,arg,arg,arg,arg">
|
||||||
|
bool ok_;
|
||||||
|
%BEGIN_ALLOW_THREADS
|
||||||
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&ok_, %2, %3, %4, %5);
|
||||||
|
%END_ALLOW_THREADS
|
||||||
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg">
|
<template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &ok_, %9);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &ok_, %9);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg">
|
<template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &ok_, %8);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &ok_, %8);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="fix_arg,arg,arg,arg,arg,bool*,arg">
|
<template name="fix_arg,arg,arg,arg,arg,bool*,arg">
|
||||||
bool ok_;
|
bool ok_;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &ok_, %7);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &ok_, %7);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, ok_);
|
<insert-template name="tuple_retval_ok"/>
|
||||||
</template>
|
</template>
|
||||||
<template name="get_slice">
|
<template name="get_slice">
|
||||||
%TYPE* sequence;
|
%TYPE* sequence;
|
||||||
|
|
@ -139,23 +152,31 @@
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&val_);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&val_);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, val_);
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[char](val_));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template name="tuple_abcd_same_type">
|
||||||
|
%PYARG_0 = PyTuple_New(4);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
|
||||||
|
</template>
|
||||||
<template name="fix_number*,number*,number*,number*">
|
<template name="fix_number*,number*,number*,number*">
|
||||||
$TYPE a, b, c, d;
|
$TYPE a, b, c, d;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%CPPSELF->::%TYPE::%FUNCTION_NAME(&a, &b, &c, &d);
|
%CPPSELF->::%TYPE::%FUNCTION_NAME(&a, &b, &c, &d);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(a, b, c, d);
|
<insert-template name="tuple_abcd_same_type"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="fix_number*,number*,number*,number*,args">
|
<template name="fix_number*,number*,number*,number*,args">
|
||||||
$TYPE a, b, c, d;
|
$TYPE a, b, c, d;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%CPPSELF->::%TYPE::%FUNCTION_NAME(&a, &b, &c, &d, %ARGUMENT_NAMES);
|
%CPPSELF->::%TYPE::%FUNCTION_NAME(&a, &b, &c, &d, %ARGUMENT_NAMES);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(a, b, c, d);
|
<insert-template name="tuple_abcd_same_type"/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="fix_native_return_number*,number*,number*,number*">
|
<template name="fix_native_return_number*,number*,number*,number*">
|
||||||
|
|
@ -175,33 +196,26 @@
|
||||||
}
|
}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="fix_int*,int*,int*,int*,int*">
|
<template name="fix_number*,number*,number*,number*,number*">
|
||||||
int a, b, c, d, e;
|
$TYPE a, b, c, d, e;
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%CPPSELF.%FUNCTION_NAME(&a, &b, &c, &d, &e);
|
%CPPSELF.%FUNCTION_NAME(&a, &b, &c, &d, &e);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
|
%PYARG_0 = PyTuple_New(5);
|
||||||
</template>
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
|
||||||
<template name="fix_qreal*,qreal*,qreal*,qreal*,qreal*">
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
|
||||||
qreal a, b, c, d, e;
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
|
||||||
%CPPSELF.%FUNCTION_NAME(&a, &b, &c, &d, &e);
|
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
|
||||||
%PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
|
PyTuple_SET_ITEM(%PYARG_0, 4, %CONVERTTOPYTHON[$TYPE](e));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="read_wrapper">
|
<template name="read_wrapper">
|
||||||
PySide::AutoArrayPointer<char> _data(%2);
|
Shiboken::AutoArrayPointer<char> _data(%2);
|
||||||
qint64 _size = %CPPSELF.%FUNCTION_NAME(_data, %2);
|
qint64 _size = %CPPSELF.%FUNCTION_NAME(_data, %2);
|
||||||
|
QByteArray ba;
|
||||||
if (_size > 0)
|
if (_size > 0)
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[QByteArray](QByteArray(_data, _size));
|
ba = QByteArray(_data, _size);
|
||||||
else
|
%PYARG_0 = %CONVERTTOPYTHON[QByteArray](ba);
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[QByteArray](QByteArray());
|
|
||||||
</template>
|
|
||||||
<template name="fix_return_args,int*">
|
|
||||||
RETURNTYPE _ret;
|
|
||||||
int _arg;
|
|
||||||
%BEGIN_ALLOW_THREADS
|
|
||||||
_ret = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &_arg);
|
|
||||||
%END_ALLOW_THREADS
|
|
||||||
%PYARG_0 = Shiboken::makeTuple(_ret, _arg);
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="fix_args,number*,number*">
|
<template name="fix_args,number*,number*">
|
||||||
|
|
@ -209,7 +223,9 @@
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &a, &b);
|
%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &a, &b);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(a, b);
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="fix_virtual_method_return_value_and_bool*">
|
<template name="fix_virtual_method_return_value_and_bool*">
|
||||||
|
|
@ -225,7 +241,10 @@
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
_ret = %CPPSELF.%FUNCTION_NAME(%1, &a, &b);
|
_ret = %CPPSELF.%FUNCTION_NAME(%1, &a, &b);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(_ret, a, b);
|
%PYARG_0 = PyTuple_New(3);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](_ret));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](a));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](b));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="return_QString">
|
<template name="return_QString">
|
||||||
|
|
@ -236,24 +255,31 @@
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %RETURN_TYPE(%CPPSELF.%FUNCTION_NAME(%1, %2));
|
%RETURN_TYPE retval_ = %RETURN_TYPE(%CPPSELF.%FUNCTION_NAME(%1, %2));
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, %1, %2);
|
%PYARG_0 = PyTuple_New(3);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](%1));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[%ARG2_TYPE](%2));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="return_for_QFileDialog">
|
<template name="return_for_QFileDialog">
|
||||||
%BEGIN_ALLOW_THREADS
|
%BEGIN_ALLOW_THREADS
|
||||||
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, &%5, %6);
|
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, &%5, %6);
|
||||||
%END_ALLOW_THREADS
|
%END_ALLOW_THREADS
|
||||||
%PYARG_0 = Shiboken::makeTuple(retval_, %5);
|
%PYARG_0 = PyTuple_New(2);
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
|
||||||
|
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG5_TYPE](%5));
|
||||||
</template>
|
</template>
|
||||||
<template name="set_qapp_parent_for_orphan">
|
<template name="set_qapp_parent_for_orphan">
|
||||||
|
if (%PYARG_0 && (%PYARG_0 != Py_None)) {
|
||||||
SbkObject* _pySelf = reinterpret_cast<SbkObject*>(%PYARG_0);
|
SbkObject* _pySelf = reinterpret_cast<SbkObject*>(%PYARG_0);
|
||||||
if (!Shiboken::Object::hasParentInfo(_pySelf))
|
if (!Shiboken::Object::hasParentInfo(_pySelf))
|
||||||
Shiboken::Object::setParent(%CONVERTTOPYTHON[QApplication*](qApp), %PYARG_0);
|
Shiboken::Object::setParent(%CONVERTTOPYTHON[QApplication*](qApp), %PYARG_0);
|
||||||
|
}
|
||||||
</template>
|
</template>
|
||||||
<!-- templates for __repr__ -->
|
<!-- templates for __repr__ -->
|
||||||
<template name="repr_code">
|
<template name="repr_code">
|
||||||
QString format = QString().sprintf("%s(%REPR_FORMAT)", ((PyObject*)%PYSELF)->ob_type->tp_name, %REPR_ARGS);
|
QString format = QString().sprintf("%s(%REPR_FORMAT)", ((PyObject*)%PYSELF)->ob_type->tp_name, %REPR_ARGS);
|
||||||
%PYARG_0 = PyString_FromString(qPrintable(format));
|
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
|
||||||
</template>
|
</template>
|
||||||
<template name="repr_code_matrix">
|
<template name="repr_code_matrix">
|
||||||
QString format= QString("%1((").arg(((PyObject*)%PYSELF)->ob_type->tp_name);
|
QString format= QString("%1((").arg(((PyObject*)%PYSELF)->ob_type->tp_name);
|
||||||
|
|
@ -269,7 +295,7 @@
|
||||||
}
|
}
|
||||||
format += "))";
|
format += "))";
|
||||||
|
|
||||||
%PYARG_0 = PyString_FromString(qPrintable(format));
|
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="return_internal_pointer">
|
<template name="return_internal_pointer">
|
||||||
|
|
@ -325,7 +351,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="matrix_transposed_function">
|
<template name="matrix_transposed_function">
|
||||||
return %CONVERTTOPYTHON[%TRANSPOSED_TYPE](%CPPSELF.transposed());
|
%TRANSPOSED_TYPE transp = %CPPSELF.transposed();
|
||||||
|
return %CONVERTTOPYTHON[%TRANSPOSED_TYPE](transp);
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- Replace '#' for the argument number you want. -->
|
<!-- Replace '#' for the argument number you want. -->
|
||||||
|
|
@ -341,12 +368,15 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="__iter_parent__">
|
<template name="__iter_parent__">
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](%CPPSELF.begin());
|
%CPPSELF_TYPE _tmp = %CPPSELF.begin();
|
||||||
|
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](_tmp);
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="__next__">
|
<template name="__next__">
|
||||||
if (!%CPPSELF.atEnd())
|
if (!%CPPSELF.atEnd()) {
|
||||||
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE]((*%CPPSELF)++);
|
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](*%CPPSELF);
|
||||||
|
++(*%CPPSELF);
|
||||||
|
}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="convertFromMultiMap">
|
<template name="convertFromMultiMap">
|
||||||
|
|
@ -367,5 +397,32 @@
|
||||||
%PYARG_0 = Py_BuildValue("%TT_FORMAT", %TT_ARGS);
|
%PYARG_0 = Py_BuildValue("%TT_FORMAT", %TT_ARGS);
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</typesystem>
|
<template name="cpplist_to_pylist_convertion">
|
||||||
|
PyObject* %out = PyList_New((int) %in.size());
|
||||||
|
%INTYPE::const_iterator it = %in.begin();
|
||||||
|
for (int idx = 0; it != %in.end(); ++it, ++idx) {
|
||||||
|
%INTYPE_0 cppItem(*it);
|
||||||
|
PyList_SET_ITEM(%out, idx, %CONVERTTOPYTHON[%INTYPE_0](cppItem));
|
||||||
|
}
|
||||||
|
return %out;
|
||||||
|
</template>
|
||||||
|
<template name="pyseq_to_cpplist_convertion">
|
||||||
|
for (int i = 0; i < PySequence_Size(%in); i++) {
|
||||||
|
Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, i));
|
||||||
|
%OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
|
||||||
|
%out << cppItem;
|
||||||
|
}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="checkPyCapsuleOrPyCObject_func">
|
||||||
|
static bool checkPyCapsuleOrPyCObject(PyObject* pyObj)
|
||||||
|
{
|
||||||
|
#ifdef IS_PY3K
|
||||||
|
return PyCapsule_CheckExact(pyObj);
|
||||||
|
#else
|
||||||
|
return PyCObject_Check(pyObj);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</typesystem>
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ macro(create_pyside_module module_name module_include_dir module_libraries modul
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${${module_sources}}
|
add_custom_command(OUTPUT ${${module_sources}}
|
||||||
COMMAND ${GENERATORRUNNER_BINARY} ${GENERATOR_EXTRA_FLAGS}
|
COMMAND ${SHIBOKEN_BINARY} ${GENERATOR_EXTRA_FLAGS}
|
||||||
${pyside_BINARY_DIR}/pyside_global.h
|
${pyside_BINARY_DIR}/pyside_global.h
|
||||||
--include-paths=${pyside_SOURCE_DIR}${PATH_SEP}${QT_INCLUDE_DIR}
|
--include-paths=${pyside_SOURCE_DIR}${PATH_SEP}${QT_INCLUDE_DIR}
|
||||||
--typesystem-paths=${pyside_SOURCE_DIR}${PATH_SEP}${${module_typesystem_path}}
|
--typesystem-paths=${pyside_SOURCE_DIR}${PATH_SEP}${${module_typesystem_path}}
|
||||||
|
|
@ -39,7 +39,7 @@ macro(create_pyside_module module_name module_include_dir module_libraries modul
|
||||||
set_target_properties(${module_name} PROPERTIES SUFFIX ".pyd")
|
set_target_properties(${module_name} PROPERTIES SUFFIX ".pyd")
|
||||||
set(${module_name}_suffix ".pyd")
|
set(${module_name}_suffix ".pyd")
|
||||||
else()
|
else()
|
||||||
set(${module_name}_suffix ".so")
|
set(${module_name}_suffix ${CMAKE_SHARED_MODULE_SUFFIX})
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(${module_name} ${${module_libraries}})
|
target_link_libraries(${module_name} ${${module_libraries}})
|
||||||
if(${module_deps})
|
if(${module_deps})
|
||||||
|
|
@ -71,7 +71,7 @@ macro(check_qt_class module class optional_source_files dropped_entries)
|
||||||
endif ()
|
endif ()
|
||||||
string(TOLOWER ${class} _class)
|
string(TOLOWER ${class} _class)
|
||||||
string(TOUPPER ${module} _module)
|
string(TOUPPER ${module} _module)
|
||||||
if (${namespace})
|
if (_namespace)
|
||||||
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_namespace}_${_class}_wrapper.cpp)
|
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_namespace}_${_class}_wrapper.cpp)
|
||||||
else ()
|
else ()
|
||||||
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_class}_wrapper.cpp)
|
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_class}_wrapper.cpp)
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,14 @@ add_custom_target(qdoc3
|
||||||
COMMENT "Running qdoc3 against Qt source code..."
|
COMMENT "Running qdoc3 against Qt source code..."
|
||||||
SOURCE "pyside.qdocconf")
|
SOURCE "pyside.qdocconf")
|
||||||
|
|
||||||
|
|
||||||
|
find_program(SPHINX_BUILD NAMES sphinx-build)
|
||||||
|
if (${SPHINX_BUILD} MATCHES "SPHINX_BUILD-NOTFOUND")
|
||||||
|
message(FATAL_ERROR "sphinx-build command not found.")
|
||||||
|
endif()
|
||||||
add_custom_target(apidoc
|
add_custom_target(apidoc
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/rst
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/rst
|
||||||
COMMAND sphinx-build -b html ${CMAKE_CURRENT_BINARY_DIR}/rst html
|
COMMAND ${SHIBOKEN_PYTHON_INTERPRETER} ${SPHINX_BUILD} -b html ${CMAKE_CURRENT_BINARY_DIR}/rst html
|
||||||
)
|
)
|
||||||
|
|
||||||
# create conf.py based on conf.py.in
|
# create conf.py based on conf.py.in
|
||||||
|
|
@ -18,7 +23,7 @@ configure_file("conf.py.in" "rst/conf.py" @ONLY)
|
||||||
configure_file(typesystem_doc.xml.in typesystem_doc.xml @ONLY)
|
configure_file(typesystem_doc.xml.in typesystem_doc.xml @ONLY)
|
||||||
|
|
||||||
add_custom_target("docrsts"
|
add_custom_target("docrsts"
|
||||||
COMMAND ${GENERATORRUNNER_BINARY} --generator-set=qtdoc
|
COMMAND ${SHIBOKEN_BINARY} --generator-set=qtdoc
|
||||||
${pyside_BINARY_DIR}/pyside_global.h
|
${pyside_BINARY_DIR}/pyside_global.h
|
||||||
--include-paths="${QT_INCLUDE_DIR}${PATH_SEP}${pyside_SOURCE_DIR}"
|
--include-paths="${QT_INCLUDE_DIR}${PATH_SEP}${pyside_SOURCE_DIR}"
|
||||||
--api-version=${SUPPORTED_QT_VERSION}
|
--api-version=${SUPPORTED_QT_VERSION}
|
||||||
|
|
|
||||||
20
doc/_templates/index.html
vendored
20
doc/_templates/index.html
vendored
|
|
@ -11,11 +11,17 @@
|
||||||
|
|
||||||
<p>PySide is built using the <a href="http://www.pyside.org/docs/shiboken">Shiboken</a> binding generator.</p>
|
<p>PySide is built using the <a href="http://www.pyside.org/docs/shiboken">Shiboken</a> binding generator.</p>
|
||||||
|
|
||||||
<h2>Modules</h2>
|
<h2>Notes</h2>
|
||||||
|
|
||||||
<div class="admonition warning">
|
<h3>About 0 vs None</h3>
|
||||||
<strong>Note:</strong> The PySide class reference documentation is automatically generated from the original Qt documentation for C++, some parts were tuned to fit the Python world, however is not possible to rewrite all Qt docs as it would require a really huge effort, so if the documentation says you can use 0 on an QObject argument, interpret it as None.
|
|
||||||
</div>
|
<p>The PySide class reference documentation is automatically generated from the original Qt documentation for C++, some parts were tuned to fit the Python world. However, it's not possible to rewrite all Qt docs as it would require a really huge effort, so if the documentation says you can use 0 on an QObject argument, interpret it as None.</p>
|
||||||
|
|
||||||
|
<h3>About keyword arguments</h3>
|
||||||
|
|
||||||
|
<p>Only optional arguments can be used as keyword arguments.</p>
|
||||||
|
|
||||||
|
<h2>Modules</h2>
|
||||||
|
|
||||||
<table class="contentstable" align="center" ><tr>
|
<table class="contentstable" align="center" ><tr>
|
||||||
<td width="50%">
|
<td width="50%">
|
||||||
|
|
@ -59,5 +65,11 @@
|
||||||
|
|
||||||
<p>A collection of <a href="{{ pathto("tutorials/index") }}">tutorials</a> and "walkthrough" guides are provided with PySide to help new users get started with PySide development. These documents were ported from C++ to Python and cover a range of topics, from basic use of widgets to step-by-step <a href="{{ pathto("tutorials/index") }}">tutorials</a> that show how an application is put together.</p>
|
<p>A collection of <a href="{{ pathto("tutorials/index") }}">tutorials</a> and "walkthrough" guides are provided with PySide to help new users get started with PySide development. These documents were ported from C++ to Python and cover a range of topics, from basic use of widgets to step-by-step <a href="{{ pathto("tutorials/index") }}">tutorials</a> that show how an application is put together.</p>
|
||||||
|
|
||||||
|
<h2>Other stuff</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="pysideapi2.html">PySide API 2</a></li>
|
||||||
|
<li class="toctree-l1"><a class="reference internal" href="pysideversion.html">Getting PySide and Qt version</a></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
41
doc/_templates/layout.html
vendored
Normal file
41
doc/_templates/layout.html
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
{% extends "!layout.html" %}
|
||||||
|
|
||||||
|
# Invert sidebars
|
||||||
|
{%- block sidebar1 %}{{ sidebar() }}{%- endblock %}
|
||||||
|
{%- block sidebar2 %}{%- endblock %}
|
||||||
|
|
||||||
|
{%- block header %}
|
||||||
|
<div id="container">
|
||||||
|
<div class="header">
|
||||||
|
<div class="header_container">
|
||||||
|
<div class="logo"><a href="http://www.pyside.org"><img alt="PySide" src="{{ pathto('_static/pysidelogo.png', 1) }}" width="199" height="102" /></a></div>
|
||||||
|
<div class="related">
|
||||||
|
<ul>
|
||||||
|
{%- block rootrellink %}
|
||||||
|
<li><a href="{{ pathto( 'index' ) }}">{{ shorttitle|e }}</a></li>
|
||||||
|
{%- endblock %}
|
||||||
|
{%- for parent in parents %}
|
||||||
|
<li>{{ reldelim1 }} <a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a></li>
|
||||||
|
{%- endfor %}
|
||||||
|
{%- block relbaritems %} {% endblock %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{%- endblock -%}
|
||||||
|
|
||||||
|
{%- block footer %}
|
||||||
|
<div class="footer">
|
||||||
|
<a href="http://www.indt.org.br"><img src="{{ pathto('_static/logo_indt.jpg', 1) }}" alt="Indt" border="0" /></a>
|
||||||
|
<a href="http://www.openbossa.org"><img src="{{ pathto('_static/logo_openbossa.png', 1) }}" alt="Openbossa" border="0" /></a>
|
||||||
|
<a href="http://qt.nokia.com/"><img src="{{ pathto('_static/logo_qt.png', 1) }}" alt="Qt" border="0" /></a>
|
||||||
|
<a href="http://www.python.org"><img src="{{ pathto('_static/logo_python.jpg', 1) }}" alt="Python" border="0" /></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{%- endblock %}
|
||||||
|
|
||||||
|
# No top relbar.
|
||||||
|
{%- block relbar1 %}{%- endblock %}
|
||||||
|
|
||||||
|
# No bottom relbar.
|
||||||
|
{%- block relbar2 %}{%- endblock %}
|
||||||
26
doc/_themes/pysidedocs/defindex.html
vendored
26
doc/_themes/pysidedocs/defindex.html
vendored
|
|
@ -1,26 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Overview') %}
|
|
||||||
{% block body %}
|
|
||||||
<h1>{{ docstitle|e }}</h1>
|
|
||||||
<p>
|
|
||||||
Welcome! This is
|
|
||||||
{% block description %}the documentation for {{ project|e }}
|
|
||||||
{{ release|e }}{% if last_updated %}, last updated {{ last_updated|e }}{% endif %}{% endblock %}.
|
|
||||||
</p>
|
|
||||||
{% block tables %}
|
|
||||||
<p><strong>{{ _('Indices and tables:') }}</strong></p>
|
|
||||||
<table class="contentstable" align="center"><tr>
|
|
||||||
<td width="50%">
|
|
||||||
<p class="biglink"><a class="biglink" href="{{ pathto("contents") }}">{{ _('Complete Table of Contents') }}</a><br>
|
|
||||||
<span class="linkdescr">{{ _('lists all sections and subsections') }}</span></p>
|
|
||||||
<p class="biglink"><a class="biglink" href="{{ pathto("search") }}">{{ _('Search Page') }}</a><br>
|
|
||||||
<span class="linkdescr">{{ _('search this documentation') }}</span></p>
|
|
||||||
</td><td width="50%">
|
|
||||||
<p class="biglink"><a class="biglink" href="{{ pathto("modindex") }}">{{ _('Global Module Index') }}</a><br>
|
|
||||||
<span class="linkdescr">{{ _('quick access to all modules') }}</span></p>
|
|
||||||
<p class="biglink"><a class="biglink" href="{{ pathto("genindex") }}">{{ _('General Index') }}</a><br>
|
|
||||||
<span class="linkdescr">{{ _('all functions, classes, terms') }}</span></p>
|
|
||||||
</td></tr>
|
|
||||||
</table>
|
|
||||||
{% endblock %}
|
|
||||||
{% endblock %}
|
|
||||||
46
doc/_themes/pysidedocs/genindex-single.html
vendored
46
doc/_themes/pysidedocs/genindex-single.html
vendored
|
|
@ -1,46 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Index') %}
|
|
||||||
{% block body %}
|
|
||||||
|
|
||||||
<h1 id="index">{% trans key=key %}Index – {{ key }}{% endtrans %}</h1>
|
|
||||||
|
|
||||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
|
||||||
<dl>
|
|
||||||
{%- set breakat = count // 2 %}
|
|
||||||
{%- set numcols = 1 %}
|
|
||||||
{%- set numitems = 0 %}
|
|
||||||
{% for entryname, (links, subitems) in entries %}
|
|
||||||
<dt>{%- if links -%}<a href="{{ links[0] }}">{{ entryname|e }}</a>
|
|
||||||
{%- for link in links[1:] %}, <a href="{{ link }}">[{{ loop.index }}]</a>{% endfor -%}
|
|
||||||
{%- else -%}
|
|
||||||
{{ entryname|e }}
|
|
||||||
{%- endif -%}</dt>
|
|
||||||
{%- if subitems %}
|
|
||||||
<dd><dl>
|
|
||||||
{%- for subentryname, subentrylinks in subitems %}
|
|
||||||
<dt><a href="{{ subentrylinks[0] }}">{{ subentryname|e }}</a>
|
|
||||||
{%- for link in subentrylinks[1:] %}, <a href="{{ link }}">[{{ loop.index }}]</a>{% endfor -%}
|
|
||||||
</dt>
|
|
||||||
{%- endfor %}
|
|
||||||
</dl></dd>
|
|
||||||
{%- endif -%}
|
|
||||||
{%- set numitems = numitems + 1 + (subitems|length) -%}
|
|
||||||
{%- if numcols < 2 and numitems > breakat -%}
|
|
||||||
{%- set numcols = numcols+1 -%}
|
|
||||||
</dl></td><td width="33%" valign="top"><dl>
|
|
||||||
{%- endif -%}
|
|
||||||
{%- endfor %}
|
|
||||||
</dl></td></tr></table>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block sidebarrel %}
|
|
||||||
<h4>Index</h4>
|
|
||||||
<p>{% for key, dummy in genindexentries -%}
|
|
||||||
<a href="{{ pathto('genindex-' + key) }}"><strong>{{ key }}</strong></a>
|
|
||||||
{% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}</p>
|
|
||||||
|
|
||||||
<p><a href="{{ pathto('genindex-all') }}"><strong>{{ _('Full index on one page') }}</strong></a></p>
|
|
||||||
{{ super() }}
|
|
||||||
{% endblock %}
|
|
||||||
30
doc/_themes/pysidedocs/genindex-split.html
vendored
30
doc/_themes/pysidedocs/genindex-split.html
vendored
|
|
@ -1,30 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Index') %}
|
|
||||||
{% block body %}
|
|
||||||
|
|
||||||
<h1 id="index">{{ _('Index') }}</h1>
|
|
||||||
|
|
||||||
<p>{{ _('Index pages by letter') }}:</p>
|
|
||||||
|
|
||||||
<p>{% for key, dummy in genindexentries -%}
|
|
||||||
<a href="{{ pathto('genindex-' + key) }}"><strong>{{ key }}</strong></a>
|
|
||||||
{% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}</p>
|
|
||||||
|
|
||||||
<p><a href="{{ pathto('genindex-all') }}"><strong>{{ _('Full index on one page') }}</strong>
|
|
||||||
({{ _('can be huge') }})</a></p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block sidebarrel %}
|
|
||||||
{% if split_index %}
|
|
||||||
<h4>Index</h4>
|
|
||||||
<p>{% for key, dummy in genindexentries -%}
|
|
||||||
<a href="{{ pathto('genindex-' + key) }}"><strong>{{ key }}</strong></a>
|
|
||||||
{% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}</p>
|
|
||||||
|
|
||||||
<p><a href="{{ pathto('genindex-all') }}"><strong>{{ _('Full index on one page') }}</strong></a></p>
|
|
||||||
{% endif %}
|
|
||||||
{{ super() }}
|
|
||||||
{% endblock %}
|
|
||||||
57
doc/_themes/pysidedocs/genindex.html
vendored
57
doc/_themes/pysidedocs/genindex.html
vendored
|
|
@ -1,57 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Index') %}
|
|
||||||
{% block body %}
|
|
||||||
|
|
||||||
<h1 id="index">{{ _('Index') }}</h1>
|
|
||||||
|
|
||||||
{% for key, dummy in genindexentries -%}
|
|
||||||
<a href="#{{ key }}"><strong>{{ key }}</strong></a> {% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
{% for key, entries in genindexentries %}
|
|
||||||
<h2 id="{{ key }}">{{ key }}</h2>
|
|
||||||
<table width="100%" class="indextable"><tr><td width="33%" valign="top">
|
|
||||||
<dl>
|
|
||||||
{%- set breakat = genindexcounts[loop.index0] // 2 %}
|
|
||||||
{%- set numcols = 1 %}
|
|
||||||
{%- set numitems = 0 %}
|
|
||||||
{% for entryname, (links, subitems) in entries %}
|
|
||||||
<dt>{%- if links -%}<a href="{{ links[0] }}">{{ entryname|e }}</a>
|
|
||||||
{%- for link in links[1:] %}, <a href="{{ link }}">[{{ loop.index }}]</a>{% endfor -%}
|
|
||||||
{%- else -%}
|
|
||||||
{{ entryname|e }}
|
|
||||||
{%- endif -%}</dt>
|
|
||||||
{%- if subitems %}
|
|
||||||
<dd><dl>
|
|
||||||
{%- for subentryname, subentrylinks in subitems %}
|
|
||||||
<dt><a href="{{ subentrylinks[0] }}">{{ subentryname|e }}</a>
|
|
||||||
{%- for link in subentrylinks[1:] %}, <a href="{{ link }}">[{{ loop.index }}]</a>{% endfor -%}
|
|
||||||
</dt>
|
|
||||||
{%- endfor %}
|
|
||||||
</dl></dd>
|
|
||||||
{%- endif -%}
|
|
||||||
{%- set numitems = numitems + 1 + (subitems|length) -%}
|
|
||||||
{%- if numcols < 2 and numitems > breakat -%}
|
|
||||||
{%- set numcols = numcols+1 -%}
|
|
||||||
</dl></td><td width="33%" valign="top"><dl>
|
|
||||||
{%- endif -%}
|
|
||||||
{%- endfor %}
|
|
||||||
</dl></td></tr></table>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block sidebarrel %}
|
|
||||||
{% if split_index %}
|
|
||||||
<h4>{{ _('Index') }}</h4>
|
|
||||||
<p>{% for key, dummy in genindexentries -%}
|
|
||||||
<a href="{{ pathto('genindex-' + key) }}"><strong>{{ key }}</strong></a>
|
|
||||||
{% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}</p>
|
|
||||||
|
|
||||||
<p><a href="{{ pathto('genindex-all') }}"><strong>{{ _('Full index on one page') }}</strong></a></p>
|
|
||||||
{% endif %}
|
|
||||||
{{ super() }}
|
|
||||||
{% endblock %}
|
|
||||||
147
doc/_themes/pysidedocs/layout.html
vendored
147
doc/_themes/pysidedocs/layout.html
vendored
|
|
@ -1,147 +0,0 @@
|
||||||
{%- block doctype -%}
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
{%- endblock %}
|
|
||||||
{%- set reldelim1 = reldelim1 is not defined and ' »' or reldelim1 %}
|
|
||||||
{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
|
|
||||||
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
{{ metatags }}
|
|
||||||
<title>{{ title }} — {{ project }}</title>
|
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/pysidedocs.css', 1) }}" type="text/css" />
|
|
||||||
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
|
||||||
|
|
||||||
{%- if not embedded %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
var DOCUMENTATION_OPTIONS = {
|
|
||||||
URL_ROOT: '{{ pathto("", 1) }}',
|
|
||||||
VERSION: '{{ release|e }}',
|
|
||||||
COLLAPSE_MODINDEX: false,
|
|
||||||
FILE_SUFFIX: '{{ file_suffix }}',
|
|
||||||
HAS_SOURCE: {{ has_source|lower }}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
{%- for scriptfile in script_files %}
|
|
||||||
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
|
|
||||||
{%- endfor %}
|
|
||||||
{%- if pagename == "screenshots" %}
|
|
||||||
{%- endif %}
|
|
||||||
<!--[if lt IE 7]>
|
|
||||||
<style media="screen" type="text/css">
|
|
||||||
#container {
|
|
||||||
height:100%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<![endif]-->
|
|
||||||
|
|
||||||
{%- if use_opensearch %}
|
|
||||||
<link rel="search" type="application/opensearchdescription+xml"
|
|
||||||
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
|
|
||||||
href="{{ pathto('_static/opensearch.xml', 1) }}"/>
|
|
||||||
{%- endif %}
|
|
||||||
{%- if favicon %}
|
|
||||||
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
|
|
||||||
{%- endif %}
|
|
||||||
{%- endif %}
|
|
||||||
{%- block linktags %}
|
|
||||||
{%- if hasdoc('about') %}
|
|
||||||
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- if hasdoc('genindex') %}
|
|
||||||
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- if hasdoc('search') %}
|
|
||||||
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- if hasdoc('copyright') %}
|
|
||||||
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
|
|
||||||
{%- endif %}
|
|
||||||
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
|
|
||||||
{%- if parents %}
|
|
||||||
<link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- if next %}
|
|
||||||
<link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- if prev %}
|
|
||||||
<link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" />
|
|
||||||
{%- endif %}
|
|
||||||
{%- endblock %}
|
|
||||||
{%- block extrahead %} {% endblock %}
|
|
||||||
</head>
|
|
||||||
<body id="{{ pagename }}">
|
|
||||||
{%- block header %}{% endblock %}
|
|
||||||
|
|
||||||
<div id="container">
|
|
||||||
<div id="header">
|
|
||||||
<div id="header_container">
|
|
||||||
<div id="logo"><a href="http://www.pyside.org"><img alt="PySide" src="{{ pathto('_static/pysidelogo.png', 1) }}" width="199" height="102" /></a></div>
|
|
||||||
<ul id="relbar">
|
|
||||||
{%- for rellink in rellinks %}
|
|
||||||
<li class="right">
|
|
||||||
<a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags }}"
|
|
||||||
{{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
|
|
||||||
{%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
|
|
||||||
{%- endfor %}
|
|
||||||
{%- block rootrellink %}
|
|
||||||
<li><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a>{{ reldelim1 }}</li>
|
|
||||||
{%- endblock %}
|
|
||||||
{%- for parent in parents %}
|
|
||||||
<li><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a>{{ reldelim1 }}</li>
|
|
||||||
{%- endfor %}
|
|
||||||
{%- block relbaritems %} {% endblock %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="body" >
|
|
||||||
<div id="sidebar">
|
|
||||||
{%- block sidebartoc %}
|
|
||||||
{%- if display_toc %}
|
|
||||||
<h3><a href="{{ pathto(master_doc) }}">{{ _('Table Of Contents') }}</a></h3>
|
|
||||||
{{ toc }}
|
|
||||||
{%- endif %}
|
|
||||||
{%- endblock %}
|
|
||||||
{%- block sidebarrel %}
|
|
||||||
{%- if prev %}
|
|
||||||
<h3>{{ _('Previous topic') }}</h3>
|
|
||||||
<p class="topless"><a href="{{ prev.link|e }}"
|
|
||||||
title="{{ _('previous chapter') }}">{{ prev.title }}</a></p>
|
|
||||||
{%- endif %}
|
|
||||||
{%- if next %}
|
|
||||||
<h3>{{ _('Next topic') }}</h3>
|
|
||||||
<p class="topless"><a href="{{ next.link|e }}"
|
|
||||||
title="{{ _('next chapter') }}">{{ next.title }}</a></p>
|
|
||||||
{%- endif %}
|
|
||||||
{%- endblock %}
|
|
||||||
|
|
||||||
<div id="search_box">
|
|
||||||
<h3>Quick search</h3>
|
|
||||||
<form action="{{ pathto('search') }}" method="get">
|
|
||||||
<input type="text" name="q" id="q" />
|
|
||||||
<input type="submit" value="Go" id="search_button" />
|
|
||||||
<input type="hidden" name="check_keywords" value="yes" />
|
|
||||||
<input type="hidden" name="area" value="default" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{%- block document %}
|
|
||||||
{% block body %} {% endblock %}
|
|
||||||
{%- endblock %}
|
|
||||||
</div> <!-- container -->
|
|
||||||
|
|
||||||
{%- block footer %}
|
|
||||||
<div id="footer">
|
|
||||||
<a href="http://www.indt.org.br"><img src="{{ pathto('_static/logo_indt.jpg', 1) }}" alt="Indt" border="0" /></a>
|
|
||||||
<a href="http://www.openbossa.org"><img src="{{ pathto('_static/logo_openbossa.png', 1) }}" alt="Openbossa" border="0" /></a>
|
|
||||||
<a href="http://qt.nokia.com/"><img src="{{ pathto('_static/logo_qt.png', 1) }}" alt="Qt" border="0" /></a>
|
|
||||||
<a href="http://www.python.org"><img src="{{ pathto('_static/logo_python.jpg', 1) }}" alt="Python" border="0" /></a>
|
|
||||||
</div>
|
|
||||||
{%- endblock %}
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
40
doc/_themes/pysidedocs/modindex.html
vendored
40
doc/_themes/pysidedocs/modindex.html
vendored
|
|
@ -1,40 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Global Module Index') %}
|
|
||||||
{% block extrahead %}
|
|
||||||
{{ super() }}
|
|
||||||
{% if not embedded and collapse_modindex %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX = true;
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
|
||||||
{% block body %}
|
|
||||||
<div class="section">
|
|
||||||
<h1 id="global-module-index">{{ _('Global Module Index') }}</h1>
|
|
||||||
|
|
||||||
{%- for letter in letters %}
|
|
||||||
<a href="#cap-{{ letter }}"><strong>{{ letter }}</strong></a> {% if not loop.last %}| {% endif %}
|
|
||||||
{%- endfor %}
|
|
||||||
<hr/>
|
|
||||||
|
|
||||||
<table class="indextable" cellspacing="0" cellpadding="2">
|
|
||||||
{%- for modname, collapse, cgroup, indent, fname, synops, pform, dep, stripped in modindexentries %}
|
|
||||||
{%- if not modname -%}
|
|
||||||
{%- else -%}
|
|
||||||
<tr{% if indent %} class="cg-{{ cgroup }}"{% endif %}>
|
|
||||||
<td>{% if collapse -%}
|
|
||||||
<img src="{{ pathto('_static/minus.png', 1) }}" id="toggle-{{ cgroup }}"
|
|
||||||
class="toggler" style="display: none" alt="-" />
|
|
||||||
{%- endif %}</td>
|
|
||||||
<td>{% if indent %} {% endif %}
|
|
||||||
{% if fname %}<a href="{{ fname }}">{% endif -%}
|
|
||||||
<tt class="xref">{{ stripped|e }}{{ modname|e }}</tt>
|
|
||||||
{%- if fname %}</a>{% endif %}
|
|
||||||
{%- if pform and pform[0] %} <em>({{ pform|join(', ') }})</em>{% endif -%}
|
|
||||||
</td><td>{% if dep %}<strong>{{ _('Deprecated')}}:</strong>{% endif %}
|
|
||||||
<em>{{ synops|e }}</em></td></tr>
|
|
||||||
{%- endif -%}
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
</section>
|
|
||||||
{% endblock %}
|
|
||||||
10
doc/_themes/pysidedocs/opensearch.xml
vendored
10
doc/_themes/pysidedocs/opensearch.xml
vendored
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
|
||||||
<ShortName>{{ project|e }}</ShortName>
|
|
||||||
<Description>{% trans docstitle=docstitle|e %}Search {{ docstitle }}{% endtrans %}</Description>
|
|
||||||
<InputEncoding>utf-8</InputEncoding>
|
|
||||||
<Url type="text/html" method="get"
|
|
||||||
template="{{ use_opensearch }}/{{ pathto('search') }}?q={searchTerms}&check_keywords=yes&area=default"/>
|
|
||||||
<LongName>{{ docstitle|e }}</LongName>
|
|
||||||
{% block extra %} {# Put e.g. an <Image> element here. #} {% endblock %}
|
|
||||||
</OpenSearchDescription>
|
|
||||||
4
doc/_themes/pysidedocs/page.html
vendored
4
doc/_themes/pysidedocs/page.html
vendored
|
|
@ -1,4 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% block body %}
|
|
||||||
{{ body }}
|
|
||||||
{% endblock %}
|
|
||||||
26
doc/_themes/pysidedocs/search.html
vendored
26
doc/_themes/pysidedocs/search.html
vendored
|
|
@ -1,26 +0,0 @@
|
||||||
{% extends "layout.html" %}
|
|
||||||
{% set title = _('Search') %}
|
|
||||||
{% set script_files = script_files + ['_static/searchtools.js'] %}
|
|
||||||
{% block body %}
|
|
||||||
<div class="section">
|
|
||||||
<h1 id="search-documentation">Search Results</h1>
|
|
||||||
<div id="fallback" class="admonition warning">
|
|
||||||
<script type="text/javascript">$('#fallback').hide();</script>
|
|
||||||
<p>
|
|
||||||
{% trans %}Please activate JavaScript to enable the search
|
|
||||||
functionality.{% endtrans %}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
{% if search_performed %}
|
|
||||||
{% if not search_results %}
|
|
||||||
<p>{{ _('Your search did not match any results.') }}</p>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
<div id="search-results">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
||||||
{% block footer %}
|
|
||||||
{{ super() }}
|
|
||||||
<script type="text/javascript" src="searchindex.js"></script>
|
|
||||||
{% endblock %}
|
|
||||||
12
doc/_themes/pysidedocs/searchbox.html
vendored
Normal file
12
doc/_themes/pysidedocs/searchbox.html
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{%- if pagename != "search" %}
|
||||||
|
<div id="searchbox" style="display: none">
|
||||||
|
<h3>{{ _('Quick search') }}</h3>
|
||||||
|
<form class="search" action="{{ pathto('search') }}" method="get">
|
||||||
|
<input type="text" name="q" id="q" size="18" />
|
||||||
|
<input type="submit" value="{{ _('Go') }}" id="search_button" />
|
||||||
|
<input type="hidden" name="check_keywords" value="yes" />
|
||||||
|
<input type="hidden" name="area" value="default" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||||
|
{%- endif %}
|
||||||
3
doc/_themes/pysidedocs/static/.directory
vendored
3
doc/_themes/pysidedocs/static/.directory
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
[Dolphin]
|
|
||||||
ShowPreview=true
|
|
||||||
Timestamp=2009,10,13,10,27,39
|
|
||||||
247
doc/_themes/pysidedocs/static/doctools.js
vendored
247
doc/_themes/pysidedocs/static/doctools.js
vendored
|
|
@ -1,247 +0,0 @@
|
||||||
/*
|
|
||||||
* doctools.js
|
|
||||||
* ~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx JavaScript utilties for all documentation.
|
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* select a different prefix for underscore
|
|
||||||
*/
|
|
||||||
$u = _.noConflict();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make the code below compatible with browsers without
|
|
||||||
* an installed firebug like debugger
|
|
||||||
if (!window.console || !console.firebug) {
|
|
||||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
|
||||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
|
||||||
"profile", "profileEnd"];
|
|
||||||
window.console = {};
|
|
||||||
for (var i = 0; i < names.length; ++i)
|
|
||||||
window.console[names[i]] = function() {};
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urldecode strings
|
|
||||||
*/
|
|
||||||
jQuery.urldecode = function(x) {
|
|
||||||
return decodeURIComponent(x).replace(/\+/g, ' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small helper function to urlencode strings
|
|
||||||
*/
|
|
||||||
jQuery.urlencode = encodeURIComponent;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function returns the parsed url parameters of the
|
|
||||||
* current request. Multiple values per key are supported,
|
|
||||||
* it will always return arrays of strings for the value parts.
|
|
||||||
*/
|
|
||||||
jQuery.getQueryParameters = function(s) {
|
|
||||||
if (typeof s == 'undefined')
|
|
||||||
s = document.location.search;
|
|
||||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
|
||||||
var result = {};
|
|
||||||
for (var i = 0; i < parts.length; i++) {
|
|
||||||
var tmp = parts[i].split('=', 2);
|
|
||||||
var key = jQuery.urldecode(tmp[0]);
|
|
||||||
var value = jQuery.urldecode(tmp[1]);
|
|
||||||
if (key in result)
|
|
||||||
result[key].push(value);
|
|
||||||
else
|
|
||||||
result[key] = [value];
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* small function to check if an array contains
|
|
||||||
* a given item.
|
|
||||||
*/
|
|
||||||
jQuery.contains = function(arr, item) {
|
|
||||||
for (var i = 0; i < arr.length; i++) {
|
|
||||||
if (arr[i] == item)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight a given string on a jquery object by wrapping it in
|
|
||||||
* span elements with the given class name.
|
|
||||||
*/
|
|
||||||
jQuery.fn.highlightText = function(text, className) {
|
|
||||||
function highlight(node) {
|
|
||||||
if (node.nodeType == 3) {
|
|
||||||
var val = node.nodeValue;
|
|
||||||
var pos = val.toLowerCase().indexOf(text);
|
|
||||||
if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
|
|
||||||
var span = document.createElement("span");
|
|
||||||
span.className = className;
|
|
||||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
|
||||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
|
||||||
document.createTextNode(val.substr(pos + text.length)),
|
|
||||||
node.nextSibling));
|
|
||||||
node.nodeValue = val.substr(0, pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!jQuery(node).is("button, select, textarea")) {
|
|
||||||
jQuery.each(node.childNodes, function() {
|
|
||||||
highlight(this);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this.each(function() {
|
|
||||||
highlight(this);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Small JavaScript module for the documentation.
|
|
||||||
*/
|
|
||||||
var Documentation = {
|
|
||||||
|
|
||||||
init : function() {
|
|
||||||
this.fixFirefoxAnchorBug();
|
|
||||||
this.highlightSearchWords();
|
|
||||||
this.initIndexTable();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* i18n support
|
|
||||||
*/
|
|
||||||
TRANSLATIONS : {},
|
|
||||||
PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
|
|
||||||
LOCALE : 'unknown',
|
|
||||||
|
|
||||||
// gettext and ngettext don't access this so that the functions
|
|
||||||
// can safely bound to a different name (_ = Documentation.gettext)
|
|
||||||
gettext : function(string) {
|
|
||||||
var translated = Documentation.TRANSLATIONS[string];
|
|
||||||
if (typeof translated == 'undefined')
|
|
||||||
return string;
|
|
||||||
return (typeof translated == 'string') ? translated : translated[0];
|
|
||||||
},
|
|
||||||
|
|
||||||
ngettext : function(singular, plural, n) {
|
|
||||||
var translated = Documentation.TRANSLATIONS[singular];
|
|
||||||
if (typeof translated == 'undefined')
|
|
||||||
return (n == 1) ? singular : plural;
|
|
||||||
return translated[Documentation.PLURALEXPR(n)];
|
|
||||||
},
|
|
||||||
|
|
||||||
addTranslations : function(catalog) {
|
|
||||||
for (var key in catalog.messages)
|
|
||||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
|
||||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
|
||||||
this.LOCALE = catalog.locale;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add context elements like header anchor links
|
|
||||||
*/
|
|
||||||
addContextElements : function() {
|
|
||||||
$('div[id] > :header:first').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this headline')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
$('dt[id]').each(function() {
|
|
||||||
$('<a class="headerlink">\u00B6</a>').
|
|
||||||
attr('href', '#' + this.id).
|
|
||||||
attr('title', _('Permalink to this definition')).
|
|
||||||
appendTo(this);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* workaround a firefox stupidity
|
|
||||||
*/
|
|
||||||
fixFirefoxAnchorBug : function() {
|
|
||||||
if (document.location.hash && $.browser.mozilla)
|
|
||||||
window.setTimeout(function() {
|
|
||||||
document.location.href += '';
|
|
||||||
}, 10);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* highlight the search words provided in the url in the text
|
|
||||||
*/
|
|
||||||
highlightSearchWords : function() {
|
|
||||||
var params = $.getQueryParameters();
|
|
||||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
|
||||||
if (terms.length) {
|
|
||||||
var body = $('div.body');
|
|
||||||
window.setTimeout(function() {
|
|
||||||
$.each(terms, function() {
|
|
||||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
|
||||||
});
|
|
||||||
}, 10);
|
|
||||||
$('<li class="highlight-link"><a href="javascript:Documentation.' +
|
|
||||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
|
|
||||||
.appendTo($('.sidebar .this-page-menu'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* init the domain index toggle buttons
|
|
||||||
*/
|
|
||||||
initIndexTable : function() {
|
|
||||||
var togglers = $('img.toggler').click(function() {
|
|
||||||
var src = $(this).attr('src');
|
|
||||||
var idnum = $(this).attr('id').substr(7);
|
|
||||||
$('tr.cg-' + idnum).toggle();
|
|
||||||
if (src.substr(-9) == 'minus.png')
|
|
||||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
|
||||||
else
|
|
||||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
|
||||||
}).css('display', '');
|
|
||||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
|
||||||
togglers.click();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to hide the search marks again
|
|
||||||
*/
|
|
||||||
hideSearchWords : function() {
|
|
||||||
$('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
|
|
||||||
$('span.highlighted').removeClass('highlighted');
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* make the url absolute
|
|
||||||
*/
|
|
||||||
makeURL : function(relativeURL) {
|
|
||||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get the current relative url
|
|
||||||
*/
|
|
||||||
getCurrentURL : function() {
|
|
||||||
var path = document.location.pathname;
|
|
||||||
var parts = path.split(/\//);
|
|
||||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
|
||||||
if (this == '..')
|
|
||||||
parts.pop();
|
|
||||||
});
|
|
||||||
var url = parts.join('/');
|
|
||||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// quick alias for translations
|
|
||||||
_ = Documentation.gettext;
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
Documentation.init();
|
|
||||||
});
|
|
||||||
154
doc/_themes/pysidedocs/static/jquery.js
vendored
154
doc/_themes/pysidedocs/static/jquery.js
vendored
|
|
@ -1,154 +0,0 @@
|
||||||
/*!
|
|
||||||
* jQuery JavaScript Library v1.4.2
|
|
||||||
* http://jquery.com/
|
|
||||||
*
|
|
||||||
* Copyright 2010, John Resig
|
|
||||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
||||||
* http://jquery.org/license
|
|
||||||
*
|
|
||||||
* Includes Sizzle.js
|
|
||||||
* http://sizzlejs.com/
|
|
||||||
* Copyright 2010, The Dojo Foundation
|
|
||||||
* Released under the MIT, BSD, and GPL Licenses.
|
|
||||||
*
|
|
||||||
* Date: Sat Feb 13 22:33:48 2010 -0500
|
|
||||||
*/
|
|
||||||
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
|
|
||||||
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
|
|
||||||
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
|
|
||||||
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
|
|
||||||
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
|
|
||||||
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
|
|
||||||
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
|
|
||||||
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
|
|
||||||
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
|
|
||||||
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
|
|
||||||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
|
|
||||||
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
|
|
||||||
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
|
|
||||||
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
|
|
||||||
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
|
|
||||||
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
|
|
||||||
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
|
|
||||||
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
|
||||||
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
|
|
||||||
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
|
|
||||||
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
|
|
||||||
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
|
|
||||||
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
|
|
||||||
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
|
|
||||||
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
|
|
||||||
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
|
|
||||||
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
|
|
||||||
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
|
|
||||||
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
|
|
||||||
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
|
|
||||||
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
|
|
||||||
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
|
|
||||||
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
|
|
||||||
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
|
|
||||||
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
|
|
||||||
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
|
|
||||||
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
|
|
||||||
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
|
|
||||||
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
|
|
||||||
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
|
||||||
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
|
|
||||||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
|
|
||||||
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
|
|
||||||
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
|
|
||||||
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
|
|
||||||
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
|
|
||||||
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
|
|
||||||
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
|
|
||||||
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
|
|
||||||
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
|
|
||||||
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
|
|
||||||
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
|
|
||||||
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
|
|
||||||
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
|
|
||||||
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
|
||||||
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
|
|
||||||
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
|
|
||||||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
|
|
||||||
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
|
|
||||||
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
|
|
||||||
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
|
|
||||||
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
|
|
||||||
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
|
|
||||||
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
|
|
||||||
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
|
|
||||||
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
|
|
||||||
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
|
|
||||||
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
|
|
||||||
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
|
|
||||||
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
|
|
||||||
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
|
|
||||||
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
|
|
||||||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
|
|
||||||
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
|
|
||||||
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
|
|
||||||
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
|
|
||||||
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
|
|
||||||
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
|
|
||||||
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
|
|
||||||
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
|
|
||||||
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
|
|
||||||
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
|
|
||||||
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
|
|
||||||
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
|
|
||||||
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
|
|
||||||
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
|
|
||||||
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
|
|
||||||
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
|
|
||||||
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
|
|
||||||
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
|
|
||||||
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
|
|
||||||
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
|
|
||||||
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
|
|
||||||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
|
|
||||||
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
|
|
||||||
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
|
|
||||||
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
|
|
||||||
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
|
|
||||||
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
|
|
||||||
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
|
|
||||||
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
|
|
||||||
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
|
|
||||||
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
|
|
||||||
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
|
|
||||||
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
|
|
||||||
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
|
|
||||||
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
|
|
||||||
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
|
|
||||||
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
|
|
||||||
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
|
|
||||||
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
|
|
||||||
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
|
|
||||||
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
|
|
||||||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
|
|
||||||
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
|
|
||||||
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
|
|
||||||
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
|
|
||||||
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
|
|
||||||
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
|
|
||||||
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
|
|
||||||
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
|
|
||||||
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
|
|
||||||
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
|
|
||||||
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
|
|
||||||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
|
|
||||||
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
|
|
||||||
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
|
|
||||||
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
|
|
||||||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
|
|
||||||
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
|
|
||||||
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
|
|
||||||
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
|
|
||||||
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
|
|
||||||
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
|
|
||||||
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
|
|
||||||
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
|
|
||||||
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
|
|
||||||
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
|
|
||||||
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
|
|
||||||
103
doc/_themes/pysidedocs/static/pysidedocs.css
vendored
103
doc/_themes/pysidedocs/static/pysidedocs.css
vendored
|
|
@ -19,7 +19,7 @@ strong {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#body {
|
.document {
|
||||||
padding-bottom: 90px;
|
padding-bottom: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ strong {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer {
|
.footer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0px;
|
bottom: 0px;
|
||||||
margin-top: 50px;
|
margin-top: 50px;
|
||||||
|
|
@ -43,40 +43,40 @@ strong {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#footer img {
|
.footer img {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar {
|
.sphinxsidebar {
|
||||||
float: left;
|
float: left;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
padding: 0px 10px 0px 10px;
|
padding: 0px 10px 0px 10px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar ul {
|
.sphinxsidebar ul {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
list-style-position: inside;
|
list-style-position: inside;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar > ul {
|
.sphinxsidebar > ul {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar ul li {
|
.sphinxsidebar ul li {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar h3, #sidebar h3 a {
|
.sphinxsidebar h3, .sphinxsidebar h3 a {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
#body > div.section {
|
.documentwrapper {
|
||||||
margin-left: 270px;
|
margin-left: 270px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
|
|
@ -92,7 +92,7 @@ h1 {
|
||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
border-bottom: 1px solid #c2c2c2;
|
border-bottom: 1px solid #c2c2c2;
|
||||||
text-transform:uppercase;
|
/* text-transform:uppercase; */
|
||||||
margin-right: -100px;
|
margin-right: -100px;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: -50px;
|
left: -50px;
|
||||||
|
|
@ -138,7 +138,6 @@ pre * {
|
||||||
|
|
||||||
.pre {
|
.pre {
|
||||||
font: 100% monospace;
|
font: 100% monospace;
|
||||||
color: black;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.headerlink {
|
.headerlink {
|
||||||
|
|
@ -266,24 +265,24 @@ hr {
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************* TOPO *****************************/
|
/******************* TOPO *****************************/
|
||||||
#header {
|
.header {
|
||||||
background-image: url(bg_topo.jpg);
|
background-image: url(bg_topo.jpg);
|
||||||
background-repeat: repeat-x;
|
background-repeat: repeat-x;
|
||||||
height: 147px;
|
height: 147px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#header_container {
|
.header_container {
|
||||||
background-image: url(bg_header.png);
|
background-image: url(bg_header.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 100px 0px;
|
background-position: 100px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#logo {
|
.logo {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#search_box {
|
#searchbox {
|
||||||
border-top: 1px solid #989898;
|
border-top: 1px solid #989898;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
margin-left: -10px;
|
margin-left: -10px;
|
||||||
|
|
@ -351,31 +350,39 @@ em {
|
||||||
|
|
||||||
/******** REL bar *********/
|
/******** REL bar *********/
|
||||||
|
|
||||||
#relbar {
|
.related {
|
||||||
padding: 0px 10px 0px 10px;
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.related ul {
|
||||||
|
padding: 0px 0px 0px 10px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
background-image: url(relbar_bg.png);
|
background-image: url(relbar_bg.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
#relbar li {
|
.related li {
|
||||||
display: inline;
|
display: inline;
|
||||||
color: white;
|
color: white;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#relbar li a {
|
.related li a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
line-height: 35px;
|
line-height: 35px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
#relbar li.right {
|
.related li.right {
|
||||||
float: right;
|
float: right;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.related h3 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.align-center {
|
.align-center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
@ -414,13 +421,57 @@ table.footnote {
|
||||||
}
|
}
|
||||||
|
|
||||||
tt.descname {
|
tt.descname {
|
||||||
|
font-size: 120%;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
dl.method {
|
#functions ul, #virtual-functions ul, #slots ul, #signals ul, #static-functions ul {
|
||||||
border-top: 1px solid #c2c2c2;
|
list-style: none;
|
||||||
margin-right: -100px;
|
margin: 0px;
|
||||||
position: relative;
|
padding: 10px;
|
||||||
left: -50px;
|
border: 1px solid #ddd;
|
||||||
padding: 10px 50px 0px 50px;
|
background-color: #f4f4f4;
|
||||||
|
-moz-border-radius:10px;
|
||||||
|
-webkit-border-radius:10px;
|
||||||
|
-khtml-border-radius:10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#synopsis span.pre {
|
||||||
|
color: #009491;
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
#detailed-description .class dt, #detailed-description .method dt, #detailed-description .attribute dt {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
-moz-border-radius:10px;
|
||||||
|
-webkit-border-radius:10px;
|
||||||
|
-khtml-border-radius:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pysidetoc ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pysidetoc em {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pysidetoc strong {
|
||||||
|
display: block;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
-moz-border-radius:6px;
|
||||||
|
-webkit-border-radius:6px;
|
||||||
|
-khtml-border-radius:6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
518
doc/_themes/pysidedocs/static/searchtools.js
vendored
518
doc/_themes/pysidedocs/static/searchtools.js
vendored
|
|
@ -1,518 +0,0 @@
|
||||||
/*
|
|
||||||
* searchtools.js
|
|
||||||
* ~~~~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx JavaScript utilties for the full-text search.
|
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* helper function to return a node containing the
|
|
||||||
* search summary for a given text. keywords is a list
|
|
||||||
* of stemmed words, hlwords is the list of normal, unstemmed
|
|
||||||
* words. the first one is used to find the occurance, the
|
|
||||||
* latter for highlighting it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
jQuery.makeSearchSummary = function(text, keywords, hlwords) {
|
|
||||||
var textLower = text.toLowerCase();
|
|
||||||
var start = 0;
|
|
||||||
$.each(keywords, function() {
|
|
||||||
var i = textLower.indexOf(this.toLowerCase());
|
|
||||||
if (i > -1)
|
|
||||||
start = i;
|
|
||||||
});
|
|
||||||
start = Math.max(start - 120, 0);
|
|
||||||
var excerpt = ((start > 0) ? '...' : '') +
|
|
||||||
$.trim(text.substr(start, 240)) +
|
|
||||||
((start + 240 - text.length) ? '...' : '');
|
|
||||||
var rv = $('<div class="context"></div>').text(excerpt);
|
|
||||||
$.each(hlwords, function() {
|
|
||||||
rv = rv.highlightText(this, 'highlighted');
|
|
||||||
});
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Porter Stemmer
|
|
||||||
*/
|
|
||||||
var PorterStemmer = function() {
|
|
||||||
|
|
||||||
var step2list = {
|
|
||||||
ational: 'ate',
|
|
||||||
tional: 'tion',
|
|
||||||
enci: 'ence',
|
|
||||||
anci: 'ance',
|
|
||||||
izer: 'ize',
|
|
||||||
bli: 'ble',
|
|
||||||
alli: 'al',
|
|
||||||
entli: 'ent',
|
|
||||||
eli: 'e',
|
|
||||||
ousli: 'ous',
|
|
||||||
ization: 'ize',
|
|
||||||
ation: 'ate',
|
|
||||||
ator: 'ate',
|
|
||||||
alism: 'al',
|
|
||||||
iveness: 'ive',
|
|
||||||
fulness: 'ful',
|
|
||||||
ousness: 'ous',
|
|
||||||
aliti: 'al',
|
|
||||||
iviti: 'ive',
|
|
||||||
biliti: 'ble',
|
|
||||||
logi: 'log'
|
|
||||||
};
|
|
||||||
|
|
||||||
var step3list = {
|
|
||||||
icate: 'ic',
|
|
||||||
ative: '',
|
|
||||||
alize: 'al',
|
|
||||||
iciti: 'ic',
|
|
||||||
ical: 'ic',
|
|
||||||
ful: '',
|
|
||||||
ness: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
var c = "[^aeiou]"; // consonant
|
|
||||||
var v = "[aeiouy]"; // vowel
|
|
||||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
|
||||||
var V = v + "[aeiou]*"; // vowel sequence
|
|
||||||
|
|
||||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
|
||||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
|
||||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
|
||||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
|
||||||
|
|
||||||
this.stemWord = function (w) {
|
|
||||||
var stem;
|
|
||||||
var suffix;
|
|
||||||
var firstch;
|
|
||||||
var origword = w;
|
|
||||||
|
|
||||||
if (w.length < 3)
|
|
||||||
return w;
|
|
||||||
|
|
||||||
var re;
|
|
||||||
var re2;
|
|
||||||
var re3;
|
|
||||||
var re4;
|
|
||||||
|
|
||||||
firstch = w.substr(0,1);
|
|
||||||
if (firstch == "y")
|
|
||||||
w = firstch.toUpperCase() + w.substr(1);
|
|
||||||
|
|
||||||
// Step 1a
|
|
||||||
re = /^(.+?)(ss|i)es$/;
|
|
||||||
re2 = /^(.+?)([^s])s$/;
|
|
||||||
|
|
||||||
if (re.test(w))
|
|
||||||
w = w.replace(re,"$1$2");
|
|
||||||
else if (re2.test(w))
|
|
||||||
w = w.replace(re2,"$1$2");
|
|
||||||
|
|
||||||
// Step 1b
|
|
||||||
re = /^(.+?)eed$/;
|
|
||||||
re2 = /^(.+?)(ed|ing)$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
re = new RegExp(mgr0);
|
|
||||||
if (re.test(fp[1])) {
|
|
||||||
re = /.$/;
|
|
||||||
w = w.replace(re,"");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (re2.test(w)) {
|
|
||||||
var fp = re2.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
re2 = new RegExp(s_v);
|
|
||||||
if (re2.test(stem)) {
|
|
||||||
w = stem;
|
|
||||||
re2 = /(at|bl|iz)$/;
|
|
||||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
|
||||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
|
||||||
if (re2.test(w))
|
|
||||||
w = w + "e";
|
|
||||||
else if (re3.test(w)) {
|
|
||||||
re = /.$/;
|
|
||||||
w = w.replace(re,"");
|
|
||||||
}
|
|
||||||
else if (re4.test(w))
|
|
||||||
w = w + "e";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 1c
|
|
||||||
re = /^(.+?)y$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
re = new RegExp(s_v);
|
|
||||||
if (re.test(stem))
|
|
||||||
w = stem + "i";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 2
|
|
||||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
suffix = fp[2];
|
|
||||||
re = new RegExp(mgr0);
|
|
||||||
if (re.test(stem))
|
|
||||||
w = stem + step2list[suffix];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 3
|
|
||||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
suffix = fp[2];
|
|
||||||
re = new RegExp(mgr0);
|
|
||||||
if (re.test(stem))
|
|
||||||
w = stem + step3list[suffix];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 4
|
|
||||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
|
||||||
re2 = /^(.+?)(s|t)(ion)$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
re = new RegExp(mgr1);
|
|
||||||
if (re.test(stem))
|
|
||||||
w = stem;
|
|
||||||
}
|
|
||||||
else if (re2.test(w)) {
|
|
||||||
var fp = re2.exec(w);
|
|
||||||
stem = fp[1] + fp[2];
|
|
||||||
re2 = new RegExp(mgr1);
|
|
||||||
if (re2.test(stem))
|
|
||||||
w = stem;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 5
|
|
||||||
re = /^(.+?)e$/;
|
|
||||||
if (re.test(w)) {
|
|
||||||
var fp = re.exec(w);
|
|
||||||
stem = fp[1];
|
|
||||||
re = new RegExp(mgr1);
|
|
||||||
re2 = new RegExp(meq1);
|
|
||||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
|
||||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
|
||||||
w = stem;
|
|
||||||
}
|
|
||||||
re = /ll$/;
|
|
||||||
re2 = new RegExp(mgr1);
|
|
||||||
if (re.test(w) && re2.test(w)) {
|
|
||||||
re = /.$/;
|
|
||||||
w = w.replace(re,"");
|
|
||||||
}
|
|
||||||
|
|
||||||
// and turn initial Y back to y
|
|
||||||
if (firstch == "y")
|
|
||||||
w = firstch.toLowerCase() + w.substr(1);
|
|
||||||
return w;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Search Module
|
|
||||||
*/
|
|
||||||
var Search = {
|
|
||||||
|
|
||||||
_index : null,
|
|
||||||
_queued_query : null,
|
|
||||||
_pulse_status : -1,
|
|
||||||
|
|
||||||
init : function() {
|
|
||||||
var params = $.getQueryParameters();
|
|
||||||
if (params.q) {
|
|
||||||
var query = params.q[0];
|
|
||||||
$('input[name="q"]')[0].value = query;
|
|
||||||
this.performSearch(query);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
loadIndex : function(url) {
|
|
||||||
$.ajax({type: "GET", url: url, data: null, success: null,
|
|
||||||
dataType: "script", cache: true});
|
|
||||||
},
|
|
||||||
|
|
||||||
setIndex : function(index) {
|
|
||||||
var q;
|
|
||||||
this._index = index;
|
|
||||||
if ((q = this._queued_query) !== null) {
|
|
||||||
this._queued_query = null;
|
|
||||||
Search.query(q);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
hasIndex : function() {
|
|
||||||
return this._index !== null;
|
|
||||||
},
|
|
||||||
|
|
||||||
deferQuery : function(query) {
|
|
||||||
this._queued_query = query;
|
|
||||||
},
|
|
||||||
|
|
||||||
stopPulse : function() {
|
|
||||||
this._pulse_status = 0;
|
|
||||||
},
|
|
||||||
|
|
||||||
startPulse : function() {
|
|
||||||
if (this._pulse_status >= 0)
|
|
||||||
return;
|
|
||||||
function pulse() {
|
|
||||||
Search._pulse_status = (Search._pulse_status + 1) % 4;
|
|
||||||
var dotString = '';
|
|
||||||
for (var i = 0; i < Search._pulse_status; i++)
|
|
||||||
dotString += '.';
|
|
||||||
Search.dots.text(dotString);
|
|
||||||
if (Search._pulse_status > -1)
|
|
||||||
window.setTimeout(pulse, 500);
|
|
||||||
};
|
|
||||||
pulse();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* perform a search for something
|
|
||||||
*/
|
|
||||||
performSearch : function(query) {
|
|
||||||
// create the required interface elements
|
|
||||||
this.out = $('#search-results');
|
|
||||||
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
|
|
||||||
this.dots = $('<span></span>').appendTo(this.title);
|
|
||||||
this.status = $('<p style="display: none"></p>').appendTo(this.out);
|
|
||||||
this.output = $('<ul class="search"/>').appendTo(this.out);
|
|
||||||
|
|
||||||
$('#search-progress').text(_('Preparing search...'));
|
|
||||||
this.startPulse();
|
|
||||||
|
|
||||||
// index already loaded, the browser was quick!
|
|
||||||
if (this.hasIndex())
|
|
||||||
this.query(query);
|
|
||||||
else
|
|
||||||
this.deferQuery(query);
|
|
||||||
},
|
|
||||||
|
|
||||||
query : function(query) {
|
|
||||||
var stopwords = ['and', 'then', 'into', 'it', 'as', 'are', 'in',
|
|
||||||
'if', 'for', 'no', 'there', 'their', 'was', 'is',
|
|
||||||
'be', 'to', 'that', 'but', 'they', 'not', 'such',
|
|
||||||
'with', 'by', 'a', 'on', 'these', 'of', 'will',
|
|
||||||
'this', 'near', 'the', 'or', 'at'];
|
|
||||||
|
|
||||||
// stem the searchterms and add them to the correct list
|
|
||||||
var stemmer = new PorterStemmer();
|
|
||||||
var searchterms = [];
|
|
||||||
var excluded = [];
|
|
||||||
var hlterms = [];
|
|
||||||
var tmp = query.split(/\s+/);
|
|
||||||
var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null;
|
|
||||||
for (var i = 0; i < tmp.length; i++) {
|
|
||||||
if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
|
|
||||||
tmp[i] == "") {
|
|
||||||
// skip this "word"
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// stem the word
|
|
||||||
var word = stemmer.stemWord(tmp[i]).toLowerCase();
|
|
||||||
// select the correct list
|
|
||||||
if (word[0] == '-') {
|
|
||||||
var toAppend = excluded;
|
|
||||||
word = word.substr(1);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var toAppend = searchterms;
|
|
||||||
hlterms.push(tmp[i].toLowerCase());
|
|
||||||
}
|
|
||||||
// only add if not already in the list
|
|
||||||
if (!$.contains(toAppend, word))
|
|
||||||
toAppend.push(word);
|
|
||||||
};
|
|
||||||
var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
|
|
||||||
|
|
||||||
// console.debug('SEARCH: searching for:');
|
|
||||||
// console.info('required: ', searchterms);
|
|
||||||
// console.info('excluded: ', excluded);
|
|
||||||
|
|
||||||
// prepare search
|
|
||||||
var filenames = this._index.filenames;
|
|
||||||
var titles = this._index.titles;
|
|
||||||
var terms = this._index.terms;
|
|
||||||
var objects = this._index.objects;
|
|
||||||
var objtypes = this._index.objtypes;
|
|
||||||
var objnames = this._index.objnames;
|
|
||||||
var fileMap = {};
|
|
||||||
var files = null;
|
|
||||||
// different result priorities
|
|
||||||
var importantResults = [];
|
|
||||||
var objectResults = [];
|
|
||||||
var regularResults = [];
|
|
||||||
var unimportantResults = [];
|
|
||||||
$('#search-progress').empty();
|
|
||||||
|
|
||||||
// lookup as object
|
|
||||||
if (object != null) {
|
|
||||||
for (var prefix in objects) {
|
|
||||||
for (var name in objects[prefix]) {
|
|
||||||
var fullname = (prefix ? prefix + '.' : '') + name;
|
|
||||||
if (fullname.toLowerCase().indexOf(object) > -1) {
|
|
||||||
match = objects[prefix][name];
|
|
||||||
descr = objnames[match[1]] + _(', in ') + titles[match[0]];
|
|
||||||
// XXX the generated anchors are not generally correct
|
|
||||||
// XXX there may be custom prefixes
|
|
||||||
result = [filenames[match[0]], fullname, '#'+fullname, descr];
|
|
||||||
switch (match[2]) {
|
|
||||||
case 1: objectResults.push(result); break;
|
|
||||||
case 0: importantResults.push(result); break;
|
|
||||||
case 2: unimportantResults.push(result); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort results descending
|
|
||||||
objectResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
importantResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
unimportantResults.sort(function(a, b) {
|
|
||||||
return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// perform the search on the required terms
|
|
||||||
for (var i = 0; i < searchterms.length; i++) {
|
|
||||||
var word = searchterms[i];
|
|
||||||
// no match but word was a required one
|
|
||||||
if ((files = terms[word]) == null)
|
|
||||||
break;
|
|
||||||
if (files.length == undefined) {
|
|
||||||
files = [files];
|
|
||||||
}
|
|
||||||
// create the mapping
|
|
||||||
for (var j = 0; j < files.length; j++) {
|
|
||||||
var file = files[j];
|
|
||||||
if (file in fileMap)
|
|
||||||
fileMap[file].push(word);
|
|
||||||
else
|
|
||||||
fileMap[file] = [word];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// now check if the files don't contain excluded terms
|
|
||||||
for (var file in fileMap) {
|
|
||||||
var valid = true;
|
|
||||||
|
|
||||||
// check if all requirements are matched
|
|
||||||
if (fileMap[file].length != searchterms.length)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// ensure that none of the excluded terms is in the
|
|
||||||
// search result.
|
|
||||||
for (var i = 0; i < excluded.length; i++) {
|
|
||||||
if (terms[excluded[i]] == file ||
|
|
||||||
$.contains(terms[excluded[i]] || [], file)) {
|
|
||||||
valid = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we have still a valid result we can add it
|
|
||||||
// to the result list
|
|
||||||
if (valid)
|
|
||||||
regularResults.push([filenames[file], titles[file], '', null]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete unused variables in order to not waste
|
|
||||||
// memory until list is retrieved completely
|
|
||||||
delete filenames, titles, terms;
|
|
||||||
|
|
||||||
// now sort the regular results descending by title
|
|
||||||
regularResults.sort(function(a, b) {
|
|
||||||
var left = a[1].toLowerCase();
|
|
||||||
var right = b[1].toLowerCase();
|
|
||||||
return (left > right) ? -1 : ((left < right) ? 1 : 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// combine all results
|
|
||||||
var results = unimportantResults.concat(regularResults)
|
|
||||||
.concat(objectResults).concat(importantResults);
|
|
||||||
|
|
||||||
// print the results
|
|
||||||
var resultCount = results.length;
|
|
||||||
function displayNextItem() {
|
|
||||||
// results left, load the summary and display it
|
|
||||||
if (results.length) {
|
|
||||||
var item = results.pop();
|
|
||||||
var listItem = $('<li style="display:none"></li>');
|
|
||||||
if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
|
|
||||||
// dirhtml builder
|
|
||||||
var dirname = item[0] + '/';
|
|
||||||
if (dirname.match(/\/index\/$/)) {
|
|
||||||
dirname = dirname.substring(0, dirname.length-6);
|
|
||||||
} else if (dirname == 'index/') {
|
|
||||||
dirname = '';
|
|
||||||
}
|
|
||||||
listItem.append($('<a/>').attr('href',
|
|
||||||
DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
|
|
||||||
highlightstring + item[2]).html(item[1]));
|
|
||||||
} else {
|
|
||||||
// normal html builders
|
|
||||||
listItem.append($('<a/>').attr('href',
|
|
||||||
item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
|
|
||||||
highlightstring + item[2]).html(item[1]));
|
|
||||||
}
|
|
||||||
if (item[3]) {
|
|
||||||
listItem.append($('<span> (' + item[3] + ')</span>'));
|
|
||||||
Search.output.append(listItem);
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
|
|
||||||
$.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
|
|
||||||
item[0] + '.txt', function(data) {
|
|
||||||
if (data != '') {
|
|
||||||
listItem.append($.makeSearchSummary(data, searchterms, hlterms));
|
|
||||||
Search.output.append(listItem);
|
|
||||||
}
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// no source available, just display title
|
|
||||||
Search.output.append(listItem);
|
|
||||||
listItem.slideDown(5, function() {
|
|
||||||
displayNextItem();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// search finished, update title and status message
|
|
||||||
else {
|
|
||||||
Search.stopPulse();
|
|
||||||
Search.title.text(_('Search Results'));
|
|
||||||
if (!resultCount)
|
|
||||||
Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
|
|
||||||
else
|
|
||||||
Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
|
|
||||||
Search.status.fadeIn(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
displayNextItem();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
Search.init();
|
|
||||||
});
|
|
||||||
16
doc/_themes/pysidedocs/static/underscore.js
vendored
16
doc/_themes/pysidedocs/static/underscore.js
vendored
|
|
@ -1,16 +0,0 @@
|
||||||
(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
|
|
||||||
a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
|
|
||||||
var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
|
|
||||||
d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
|
|
||||||
function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
|
|
||||||
function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
|
|
||||||
0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
|
|
||||||
e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
|
|
||||||
a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
|
|
||||||
return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
|
|
||||||
var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
|
|
||||||
if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
|
|
||||||
0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
|
|
||||||
a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
|
|
||||||
" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
|
|
||||||
o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue