Hugo Parente Lima wrote:
On Monday 29 March 2010 14:31:13 Josh wrote:
Hugo Parente Lima wrote:
On Monday 29 March 2010 14:09:56 Josh wrote:
Hi all,
I'm trying to build a binding for my Qt C++ widget using shiboken.
Here's my shiboken command:
shiboken ../data/global.h \
--include-paths=../../VideoPlayerWidget:-I/home/josh/videoWidget/target
fs-
base/include/QtCore:-I/home/josh/videoWidget/targetfs-base/include:/usr/
inc lude
--typesystem-paths=../data:/home/josh/videoWidget/targetfs-base/binding
s --output-directory=.. ../data/typesystem_VideoPlayerWidget.xml
Make fails with the error:
make: *** No rule to make target
`VideoPlayerWidget_globals_wrapper.cpp', needed by `compile'. Stop.
Indeed, there is no "VideoPlayerWidget_globals_wrapper.cpp". Is shiboken
supposed to generate one?
Then, I noticed that it did generate
"videoplayerwidget_module_wrapper.cpp" and "videoplayerwidget_python.h".
However, these names are formatted incorrectly. In the Makefile the
values are camel-capped, ie. they should be:
"VideoPlayerWidget_globals_wrapper.cpp"
"VideoPlayerWidget_module_wrapper.cpp"
"VideoPlayerWidget_wrapper.cpp"
So, is shiboken doing something wrong or have I screwed something up?
The full shiboken output ends with:
...
... ( hundreds of similar warnings snipped out for brevity)
WARNING :: type 'QFrame' is specified in typesystem, but not defined.
This could potentially lead to compilation errors.
WARNING :: type 'QCDEStyle' is specified in typesystem, but not defined.
This could potentially lead to compilation errors.
WARNING :: type 'QGraphicsColorizeEffect' is specified in typesystem,
but not defined. This could potentially lead to compilation errors.
WARNING :: type 'QIconEngine' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QGraphicsScene' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QItemEditorFactory' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QAbstractPageSetupDialog' is specified in typesystem,
but not defined. This could potentially lead to compilation errors.
WARNING :: type 'QLCDNumber' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QXmlStreamEntityDeclaration' is specified in
typesystem, but not defined. This could potentially lead to compilation
errors.
WARNING :: type 'QActionGroup' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QTextCodec::ConverterState' is specified in typesystem,
but not defined. This could potentially lead to compilation errors.
[-] (1094/1094) Detecting inconsistencies in typesystem for
QTextCodec::ConverterState
Done, 485 warnings (1 known issues)
make: *** No rule to make target
`AwareVideoPlayerWidget_module_wrapper.cpp', needed by `compile'. Stop.
Are you including QtCore and QtGui typesystem in your typesystem file?
Yes. Here's my typesystem file:
<?xml version="1.0"?>
<typesystem package="VideoPlayerWidget">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_opengl.xml" generate="no"/>
<load-typesystem name="typesystem_gui_common.xml" generate="no"/>
<load-typesystem name="typesystem_gui.xml" generate="no"/>
<object-type name="VideoPlayerWidget"/>
</typesystem>
See the log files generated by ApiExtractor, they can give some clue on
what's wrong.
The only thing out of the ordinary was in mjb_rejected_classes.log
The typesystem is ok, just make sure that you get typesystem_gui.xml from the
pyside build directory, not just renamed typesystem_gui.xml.in.
Yup, all my typesystem*.xml files are from my original pyside build.
************************************************************************
Type redefined to not be a class
- VideoPlayerWidget
************************************************************************
There's some typedef or something else on the declaration of VideoPlayerWidget
class?
Well, I stripped all the extraneous macros and typedefs from the header
in an attempt to get it to at least build something.
The shiboken warnings start with:
WARNING :: Duplicate type entry: 'VideoPlayerWidget'
WARNING :: type 'QFontDialog' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QAbstractProxyModel' is specified in typesystem,
but not defined. This could potentially lead to compilation errors.
... hundreds of similar warnings....
WARNING :: type 'QActionGroup' is specified in typesystem, but not
defined. This could potentially lead to compilation errors.
WARNING :: type 'QTextCodec::ConverterState' is specified in
typesystem, but not defined. This could potentially lead to
compilation errors.
WARNING :: Cyclic dependency found!
[-] (1093/1093) Detecting inconsistencies in typesystem for
QTextCodec::ConverterState
No C++ classes found!
My header file looks like this:
#ifndef VIDEO_PLAYER_WIDGET_HPP
#define VIDEO_PLAYER_WIDGET_HPP
#include <QGLWidget>
class VideoPlayerWidget : public QGLWidget
{
Q_OBJECT;
public:
VideoPlayerWidget(QWidget *parent = 0);
~VideoPlayerWidget();
QSize minimumSizeHint() const;
QSize sizeHint() const;
void setClearColor(const QColor &color);
void updateFrame(unsigned int w, unsigned int h,
GLenum format, unsigned char *data);
void designerMode(bool usingDesigner = true);
bool showGroundPlane() { return m_showGroundPlane; }
void setShowGroundPlane(bool show) { m_showGroundPlane = show; }
double groundPlaneAlpha() { return m_groundPlaneAlpha; }
void setGroundPlaneAlpha(double alpha);
bool waypointsVisible() { return m_waypointsVisible; }
signals:
void clicked(QPoint, QSize);
protected:
void initializeGL();
void paintGL();
void mouseReleaseEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *);
public slots:
void updateRobotPosition(QPointF, double);
void addWaypoint(long int, QPointF);
void removeWaypoint(long int);
void moveWaypoint(long int, QPointF);
void removeAllWaypoints();
void setGroundPlaneVisible(bool);
void setWaypointsVisible(bool);
private:
void renderWaypoint(long int id, QPointF location);
QColor m_clearColor;
QPoint m_lastPos;
GLuint m_texture;
unsigned int m_usingDesigner;
unsigned int m_width;
unsigned int m_height;
bool m_showGroundPlane;
double m_groundPlaneAlpha;
bool m_waypointsVisible;
QMap<long int, QPointF> m_waypoints;
QPointF m_robotPosition;
double m_robotTheta;
};
#endif // VIDEO_PLAYER_WIDGET_HPP
So still stuck, and kinda lost. All help apprecieated! ;)
Josh
_______________________________________________
PySide mailing list
[email protected]
http://lists.openbossa.org/listinfo/pyside