mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Try to fix sip item casting clashing between composer items and layout items
Add a temporary hack to QgsComposerItem subclassing to handle this for now.
This commit is contained in:
parent
28281ee896
commit
cdb0ace28e
@ -31,68 +31,87 @@ class QgsComposerItem: QgsComposerObject, QGraphicsRectItem
|
||||
#include <qgscomposerpolygon.h>
|
||||
#include <qgscomposerpolyline.h>
|
||||
#include <qgscomposertexttable.h>
|
||||
#include <qgslayoutitemshape.h>
|
||||
#include <qgslayoutitempage.h>
|
||||
%End
|
||||
|
||||
%ConvertToSubClassCode
|
||||
// the conversions have to be static, because they're using multiple inheritance
|
||||
// (seen in PyQt4 .sip files for some QGraphicsItem classes)
|
||||
switch ( sipCpp->type() )
|
||||
if ( dynamic_cast< QgsComposerItem * >( sipCpp ) )
|
||||
{
|
||||
case QgsComposerItem::ComposerItem:
|
||||
sipType = sipType_QgsComposerItem;
|
||||
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerArrow:
|
||||
sipType = sipType_QgsComposerArrow;
|
||||
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerItemGroup:
|
||||
sipType = sipType_QgsComposerItemGroup;
|
||||
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLabel:
|
||||
sipType = sipType_QgsComposerLabel;
|
||||
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLegend:
|
||||
sipType = sipType_QgsComposerLegend;
|
||||
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerMap:
|
||||
sipType = sipType_QgsComposerMap;
|
||||
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPaper:
|
||||
sipType = sipType_QgsPaperItem;
|
||||
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPicture:
|
||||
sipType = sipType_QgsComposerPicture;
|
||||
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerScaleBar:
|
||||
sipType = sipType_QgsComposerScaleBar;
|
||||
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerShape:
|
||||
sipType = sipType_QgsComposerShape;
|
||||
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolygon:
|
||||
sipType = sipType_QgsComposerPolygon;
|
||||
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolyline:
|
||||
sipType = sipType_QgsComposerPolyline;
|
||||
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerFrame:
|
||||
sipType = sipType_QgsComposerFrame;
|
||||
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
switch ( sipCpp->type() )
|
||||
{
|
||||
case QgsComposerItem::ComposerItem:
|
||||
sipType = sipType_QgsComposerItem;
|
||||
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerArrow:
|
||||
sipType = sipType_QgsComposerArrow;
|
||||
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerItemGroup:
|
||||
sipType = sipType_QgsComposerItemGroup;
|
||||
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLabel:
|
||||
sipType = sipType_QgsComposerLabel;
|
||||
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLegend:
|
||||
sipType = sipType_QgsComposerLegend;
|
||||
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerMap:
|
||||
sipType = sipType_QgsComposerMap;
|
||||
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPaper:
|
||||
sipType = sipType_QgsPaperItem;
|
||||
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPicture:
|
||||
sipType = sipType_QgsComposerPicture;
|
||||
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerScaleBar:
|
||||
sipType = sipType_QgsComposerScaleBar;
|
||||
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerShape:
|
||||
sipType = sipType_QgsComposerShape;
|
||||
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolygon:
|
||||
sipType = sipType_QgsComposerPolygon;
|
||||
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolyline:
|
||||
sipType = sipType_QgsComposerPolyline;
|
||||
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerFrame:
|
||||
sipType = sipType_QgsComposerFrame;
|
||||
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( sipCpp->type() )
|
||||
{
|
||||
// really, these *should* use the constants from QgsLayoutItemRegistry, but sip doesn't like that!
|
||||
case QGraphicsItem::UserType + 101:
|
||||
sipType = sipType_QgsLayoutItemPage;
|
||||
*sipCppRet = static_cast<QgsLayoutItemPage *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
%End
|
||||
public:
|
||||
|
||||
|
@ -53,6 +53,8 @@ class CORE_EXPORT QgsComposerItem: public QgsComposerObject, public QGraphicsRec
|
||||
#include <qgscomposerpolygon.h>
|
||||
#include <qgscomposerpolyline.h>
|
||||
#include <qgscomposertexttable.h>
|
||||
#include <qgslayoutitemshape.h>
|
||||
#include <qgslayoutitempage.h>
|
||||
#endif
|
||||
|
||||
|
||||
@ -60,63 +62,80 @@ class CORE_EXPORT QgsComposerItem: public QgsComposerObject, public QGraphicsRec
|
||||
SIP_CONVERT_TO_SUBCLASS_CODE
|
||||
// the conversions have to be static, because they're using multiple inheritance
|
||||
// (seen in PyQt4 .sip files for some QGraphicsItem classes)
|
||||
switch ( sipCpp->type() )
|
||||
if ( dynamic_cast< QgsComposerItem * >( sipCpp ) )
|
||||
{
|
||||
case QgsComposerItem::ComposerItem:
|
||||
sipType = sipType_QgsComposerItem;
|
||||
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerArrow:
|
||||
sipType = sipType_QgsComposerArrow;
|
||||
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerItemGroup:
|
||||
sipType = sipType_QgsComposerItemGroup;
|
||||
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLabel:
|
||||
sipType = sipType_QgsComposerLabel;
|
||||
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLegend:
|
||||
sipType = sipType_QgsComposerLegend;
|
||||
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerMap:
|
||||
sipType = sipType_QgsComposerMap;
|
||||
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPaper:
|
||||
sipType = sipType_QgsPaperItem;
|
||||
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPicture:
|
||||
sipType = sipType_QgsComposerPicture;
|
||||
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerScaleBar:
|
||||
sipType = sipType_QgsComposerScaleBar;
|
||||
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerShape:
|
||||
sipType = sipType_QgsComposerShape;
|
||||
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolygon:
|
||||
sipType = sipType_QgsComposerPolygon;
|
||||
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolyline:
|
||||
sipType = sipType_QgsComposerPolyline;
|
||||
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerFrame:
|
||||
sipType = sipType_QgsComposerFrame;
|
||||
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
switch ( sipCpp->type() )
|
||||
{
|
||||
case QgsComposerItem::ComposerItem:
|
||||
sipType = sipType_QgsComposerItem;
|
||||
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerArrow:
|
||||
sipType = sipType_QgsComposerArrow;
|
||||
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerItemGroup:
|
||||
sipType = sipType_QgsComposerItemGroup;
|
||||
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLabel:
|
||||
sipType = sipType_QgsComposerLabel;
|
||||
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerLegend:
|
||||
sipType = sipType_QgsComposerLegend;
|
||||
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerMap:
|
||||
sipType = sipType_QgsComposerMap;
|
||||
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPaper:
|
||||
sipType = sipType_QgsPaperItem;
|
||||
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPicture:
|
||||
sipType = sipType_QgsComposerPicture;
|
||||
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerScaleBar:
|
||||
sipType = sipType_QgsComposerScaleBar;
|
||||
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerShape:
|
||||
sipType = sipType_QgsComposerShape;
|
||||
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolygon:
|
||||
sipType = sipType_QgsComposerPolygon;
|
||||
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerPolyline:
|
||||
sipType = sipType_QgsComposerPolyline;
|
||||
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
|
||||
break;
|
||||
case QgsComposerItem::ComposerFrame:
|
||||
sipType = sipType_QgsComposerFrame;
|
||||
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch ( sipCpp->type() )
|
||||
{
|
||||
// really, these *should* use the constants from QgsLayoutItemRegistry, but sip doesn't like that!
|
||||
case QGraphicsItem::UserType + 101:
|
||||
sipType = sipType_QgsLayoutItemPage;
|
||||
*sipCppRet = static_cast<QgsLayoutItemPage *>( sipCpp );
|
||||
break;
|
||||
default:
|
||||
sipType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
SIP_END
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user