aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2010-03-23 16:02:31 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-03-23 17:23:37 -0300
commite7ec7cf9d5e69f30552bcc79e891bf06cfdb3d16 (patch)
treebcefe6edfdd749f0a9a820f47a4d5c3cf8d4e0c9
parent09d40d5b0e33019acaabe5bd66a3874ea103cab8 (diff)
Updates QMenuBar type system and adds custom code for addAction method.
-rw-r--r--PySide/QtGui/glue/qmenubar_glue.h20
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml17
2 files changed, 36 insertions, 1 deletions
diff --git a/PySide/QtGui/glue/qmenubar_glue.h b/PySide/QtGui/glue/qmenubar_glue.h
new file mode 100644
index 000000000..9568fa87c
--- /dev/null
+++ b/PySide/QtGui/glue/qmenubar_glue.h
@@ -0,0 +1,20 @@
+inline PyObject*
+addActionWithPyObject(QMenuBar* self, const QString& text, PyObject* callback)
+{
+ QAction* act = new QAction(text, self);
+
+ self->addAction(act);
+
+ PyObject* pyAct = Shiboken::Converter<QAction*>::toPython(act);
+ PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct,
+ SIGNAL(triggered(bool)), callback);
+
+ if (result == 0 || result == Py_False) {
+ if (result)
+ Py_DECREF(result);
+ Py_DECREF(pyAct);
+ return 0;
+ }
+
+ return pyAct;
+}
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml
index 42293461a..08efe3db5 100644
--- a/PySide/QtGui/typesystem_gui_common.xml
+++ b/PySide/QtGui/typesystem_gui_common.xml
@@ -1797,12 +1797,27 @@
</object-type>
<object-type name="QMenuBar">
+ <extra-includes>
+ <include file-name="glue/qmenubar_glue.h" location="local"/>
+ </extra-includes>
<modify-function signature="addAction(const QString&amp;)">
<modify-argument index="return">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
- <modify-function signature="addAction(QString,const QObject*,const char*)" remove="all"/>
+ <modify-function signature="addAction(QString,const QObject*,const char*)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="addAction(const QString&amp;, PyObject*)">
+ <inject-code class="target" position="beginning">
+ %PYARG_0 = addActionWithPyObject(%CPPSELF, %1, %2);
+ </inject-code>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </add-function>
<modify-function signature="addMenu(QMenu*)">
<modify-argument index="return">
<parent index="1" action="add"/>