I think, I can answer my own question. But only with respect to the _reason_ for this behaviour. I have to admit, that I don't like this behaviour:

The problem is the "namespace ui". Because OnyxDialog is defined in that namespace, it has to be referred to as ui::OnyxDialog in "message_dialog.sip", even though it's being referred to in the very same namespace.

What I don't like about that revelation: It seems like there is no way to teach SIP to cut off the "ui" from the namespace. In Python, I will always have to refer to the classes via PyOnyx.ui.ui.MessageDialog. Of course, that alone is not the problem. But the problem is, that I can do things like "from PyOnyx.ui import ui", but not something like "from PyOnyx.ui.ui import *". And later, when I have a namespace called "sys", this is even going to conflict with the Python module of the same name.

I would love to have a module called "PyOnyx.ui" and the classes "MessageDialog" and "OnyxDialog" as direct parts of that module. Is there any possibility to achieve this with SIP 4.12.2?

Am 01.05.2012 00:32, schrieb tuxor1...@web.de:
Hi all,

maybe somebody can help me with this. I'm using SIP 4.12.2.

My configure.py script is executing the following sip command line:

/opt/python/bin/sip -c . -b ui/ui.sbf -I /opt/python/share/sip/PyQt4 -x
PyQt_Accessibility -x PyQt_Cursor -x PyQt_ImageFormat_JPEG -x
PyQt_Picture -x PyQt_PrintDialog -x PyQt_Printer -x PyQt_ProgressDialog
-x PyQt_QWS_Cursor -x PyQt_SessionManager -x PyQt_Sound -x VendorID -t
WS_QWS -x PyQt_Accessibility -x PyQt_SessionManager -x PyQt_PrintDialog
-x PyQt_Printer -x PyQt_PrintPreviewDialog -x PyQt_PrintPreviewWidget -x
PyQt_NoPrintRangeBug -x PyQt_qreal_double -t Qt_4_7_2 -x Py_v3 -g
ui/uimod.sip

... which looks okay to me.

But it fails with this error message:

sip: OnyxDialog has not been defined

The sip-file "ui/uimod.sip" looks like this:

############################
%Module PyOnyx.ui

%Include onyx_dialog.sip
%Include message_dialog.sip
############################

The error is obviously related to the file "message_dialog.sip", because
when I leave out that file, everything is fine.

################## message_dialog.sip ########################
%Import QtGui/QtGuimod.sip

namespace ui
{

class MessageDialog : OnyxDialog
{

%TypeHeaderCode
#include "onyx/ui/message_dialog.h"
%End

public:
MessageDialog(QMessageBox::Icon icon,
const QString & title,
const QString & text,
QMessageBox::StandardButtons buttons = QMessageBox::NoButton,
QWidget * parent = 0);
~MessageDialog();

public:
int exec();
void updateInformation(const QString & text);
};

};
################## End: message_dialog.sip ################


################## onyx_dialog.sip ########################
%Import QtGui/QtGuimod.sip

namespace ui
{

class OnyxDialog : QDialog
{

%TypeHeaderCode
#include "onyx/ui/onyx_dialog.h"
%End

public:
OnyxDialog(QWidget *parent, bool show_shadow = true);
~OnyxDialog();
};

};
################## End: onyx_dialog.sip ####################
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to