Re: [PyQt] [SIP] is there a Qt5 example for SIP?

2013-07-07 Thread brett
 On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote:
 Hi Phil,

 I am trying to see if SIP will help me with a task I'm trying to solve.
 I
 started out by trying the More Complex C++ Example in the docs.
 However,
 I'm using Qt5, and the example is for Qt4.

 I see the pyqtconfig is part of Qt4, but not Qt5.  No problem, except
 pyqtconfig is pretty integrated into the example, and as a beginner, I'm
 not sure how to take pyqtconfig out.

 Is there a Qt5 example for SIP?

 Look at the configure.py for PyQt5. A minimal build system would just be a
 shell script that invoked sip then the C++ compiler then the linker. The
 only thing you need to consider is to use the right -t flags to sip and
 these can be found by introspecting current versions of PyQt.

 Phil


Thanks for the pointers.  I've got the example working.  But now I'm
having trouble extending the example.

I've got a bunch of enums I need to make available, some of which have
overlapping names.  I've been handling this by putting them in different
namespaces.  But sip is complaining about that.  I saw an old mailing list
question on the topic
(http://www.riverbankcomputing.com/pipermail/pyqt/2007-August/016847.html),
but no solution was posted.

My .h file is:
// Define the interface to the hello library.

#include qlabel.h
#include qwidget.h
#include qstring.h

#if defined HELLO_DLL
#  define HELLO_DLLSPEC  Q_DECL_EXPORT
#else
#  define HELLO_DLLSPEC Q_DECL_IMPORT
#endif

namespace MyNamespace { enum MyEnum { No=0, Yes=1}; };

class HELLO_DLLSPEC Hello : public QLabel {
// This is needed by the Qt Meta-Object Compiler.
Q_OBJECT

public:
Hello(QWidget *parent = 0);

private:
// Prevent instances from being copied.
Hello(const Hello );
Hello operator=(const Hello );
};

#if !defined(Q_OS_WIN)
void setDefault(const QString def);
#endif

My .sip file is:
// Define the SIP wrapper to the hello library.

%Module hello

%Import QtGui/QtGuimod.sip
%Import QtWidgets/QtWidgetsmod.sip

%If (Qt_5_0_0 -)

namespace MyNamespace
{
%TypeHeaderCode
#include hello.h
%End
enum MyEnum { No=0, Yes=1};
};

class Hello : public QLabel {

%TypeHeaderCode
#include hello.h
%End

public:
Hello(QWidget *parent /TransferThis/ = 0);

private:
Hello(const Hello );
};

%If (!WS_WIN)
void setDefault(const QString def);
%End

%End

The compiler (linker, actually) is complaining about missing symbols:
   Creating library release\hello.lib and object release\hello.exp
siphellocmodule.obj : error LNK2001: unresolved external symbol struct
_pyqt4ClassTypeDef sipTypeDef_hello_MyNamespace
(?sipTypeDef_hello_MyNamespace@@3U_pyqt4ClassTypeDef@@A)
release\hello.dll : fatal error LNK1120: 1 unresolved externals

What's the proper way to describe this to sip?

Thanks!

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] [SIP] is there a Qt5 example for SIP?

2013-07-07 Thread Mathias . Born
On 07.07.2013, 13:46:02 br...@stottlemyer.com wrote:
 On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote:
 Hi Phil,

 I am trying to see if SIP will help me with a task I'm trying to solve.
 I
 started out by trying the More Complex C++ Example in the docs.
 However,
 I'm using Qt5, and the example is for Qt4.

 I see the pyqtconfig is part of Qt4, but not Qt5.  No problem, except
 pyqtconfig is pretty integrated into the example, and as a beginner, I'm
 not sure how to take pyqtconfig out.

 Is there a Qt5 example for SIP?

 Look at the configure.py for PyQt5. A minimal build system would just be a
 shell script that invoked sip then the C++ compiler then the linker. The
 only thing you need to consider is to use the right -t flags to sip and
 these can be found by introspecting current versions of PyQt.

 Phil


 Thanks for the pointers.  I've got the example working.  But now I'm
 having trouble extending the example.

 I've got a bunch of enums I need to make available, some of which have
 overlapping names.  I've been handling this by putting them in different
 namespaces.  But sip is complaining about that.  I saw an old mailing list
 question on the topic
 (http://www.riverbankcomputing.com/pipermail/pyqt/2007-August/016847.html),
 but no solution was posted.

 My .h file is:
 // Define the interface to the hello library.

 #include qlabel.h
 #include qwidget.h
 #include qstring.h

 #if defined HELLO_DLL
 #  define HELLO_DLLSPEC  Q_DECL_EXPORT
 #else
 #  define HELLO_DLLSPEC Q_DECL_IMPORT
 #endif

 namespace MyNamespace { enum MyEnum { No=0, Yes=1}; };

 class HELLO_DLLSPEC Hello : public QLabel {
 // This is needed by the Qt Meta-Object Compiler.
 Q_OBJECT

 public:
 Hello(QWidget *parent = 0);

 private:
 // Prevent instances from being copied.
 Hello(const Hello );
 Hello operator=(const Hello );
 };

 #if !defined(Q_OS_WIN)
 void setDefault(const QString def);
 #endif

 My .sip file is:
 // Define the SIP wrapper to the hello library.

 %Module hello

 %Import QtGui/QtGuimod.sip
 %Import QtWidgets/QtWidgetsmod.sip

 %If (Qt_5_0_0 -)

 namespace MyNamespace
 {
 %TypeHeaderCode
 #include hello.h
 %End
 enum MyEnum { No=0, Yes=1};
 };

 class Hello : public QLabel {

 %TypeHeaderCode
 #include hello.h
 %End

 public:
 Hello(QWidget *parent /TransferThis/ = 0);

 private:
 Hello(const Hello );
 };

 %If (!WS_WIN)
 void setDefault(const QString def);
 %End

 %End

 The compiler (linker, actually) is complaining about missing symbols:
Creating library release\hello.lib and object release\hello.exp
 siphellocmodule.obj : error LNK2001: unresolved external symbol struct
 _pyqt4ClassTypeDef sipTypeDef_hello_MyNamespace
 (?sipTypeDef_hello_MyNamespace@@3U_pyqt4ClassTypeDef@@A)
 release\hello.dll : fatal error LNK1120: 1 unresolved externals

 What's the proper way to describe this to sip?

Hi,

Are you really compiling and linking all C++ files generated by SIP?

Best Regards,
Mathias Born


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] [SIP] is there a Qt5 example for SIP?

2013-07-07 Thread brett
...

 Hi,

 Are you really compiling and linking all C++ files generated by SIP?

D'oh!  No I wasn't.  Thanks for pointing me in the right direction (and
ending the trail of random stuff I was trying).


___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


[PyQt] [SIP] is there a Qt5 example for SIP?

2013-07-06 Thread brett
Hi Phil,

I am trying to see if SIP will help me with a task I'm trying to solve.  I
started out by trying the More Complex C++ Example in the docs.  However,
I'm using Qt5, and the example is for Qt4.

I see the pyqtconfig is part of Qt4, but not Qt5.  No problem, except
pyqtconfig is pretty integrated into the example, and as a beginner, I'm
not sure how to take pyqtconfig out.

Is there a Qt5 example for SIP?

Thanks!
Brett

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] [SIP] is there a Qt5 example for SIP?

2013-07-06 Thread Phil Thompson
On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote:
 Hi Phil,
 
 I am trying to see if SIP will help me with a task I'm trying to solve. 
I
 started out by trying the More Complex C++ Example in the docs. 
However,
 I'm using Qt5, and the example is for Qt4.
 
 I see the pyqtconfig is part of Qt4, but not Qt5.  No problem, except
 pyqtconfig is pretty integrated into the example, and as a beginner, I'm
 not sure how to take pyqtconfig out.
 
 Is there a Qt5 example for SIP?

Look at the configure.py for PyQt5. A minimal build system would just be a
shell script that invoked sip then the C++ compiler then the linker. The
only thing you need to consider is to use the right -t flags to sip and
these can be found by introspecting current versions of PyQt.

Phil
___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt