Skip to content

Commit 66b4b45

Browse files
committed
Try to fix issues with sip casting collisions between layout and
compositions
1 parent d69290e commit 66b4b45

File tree

4 files changed

+135
-293
lines changed

4 files changed

+135
-293
lines changed

python/core/composer/qgscomposeritem.sip

Lines changed: 0 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -17,148 +17,6 @@ class QgsComposerItem: QgsComposerObject, QGraphicsRectItem
1717

1818
%TypeHeaderCode
1919
#include "qgscomposeritem.h"
20-
#include <qgscomposerarrow.h>
21-
#include <qgscomposerframe.h>
22-
#include <qgscomposeritemgroup.h>
23-
#include <qgscomposerlabel.h>
24-
#include <qgscomposerlegend.h>
25-
#include <qgscomposermap.h>
26-
#include <qgspaperitem.h>
27-
#include <qgscomposerpicture.h>
28-
#include <qgscomposerscalebar.h>
29-
#include <qgscomposershape.h>
30-
#include <qgscomposerpolygon.h>
31-
#include <qgscomposerpolyline.h>
32-
#include <qgscomposertexttable.h>
33-
#include "qgslayoutitemgroup.h"
34-
#include "qgslayoutitemmap.h"
35-
#include "qgslayoutitempicture.h"
36-
#include "qgslayoutitemlabel.h"
37-
#include "qgslayoutitemlegend.h"
38-
#include "qgslayoutitempolygon.h"
39-
#include "qgslayoutitempolyline.h"
40-
#include "qgslayoutitemscalebar.h"
41-
#include "qgslayoutframe.h"
42-
#include "qgslayoutitemshape.h"
43-
#include "qgslayoutitempage.h"
44-
%End
45-
%ConvertToSubClassCode
46-
// the conversions have to be static, because they're using multiple inheritance
47-
// (seen in PyQt4 .sip files for some QGraphicsItem classes)
48-
if ( dynamic_cast< QgsComposerItem * >( sipCpp ) )
49-
{
50-
switch ( sipCpp->type() )
51-
{
52-
case QgsComposerItem::ComposerItem:
53-
sipType = sipType_QgsComposerItem;
54-
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
55-
break;
56-
case QgsComposerItem::ComposerArrow:
57-
sipType = sipType_QgsComposerArrow;
58-
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
59-
break;
60-
case QgsComposerItem::ComposerItemGroup:
61-
sipType = sipType_QgsComposerItemGroup;
62-
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
63-
break;
64-
case QgsComposerItem::ComposerLabel:
65-
sipType = sipType_QgsComposerLabel;
66-
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
67-
break;
68-
case QgsComposerItem::ComposerLegend:
69-
sipType = sipType_QgsComposerLegend;
70-
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
71-
break;
72-
case QgsComposerItem::ComposerMap:
73-
sipType = sipType_QgsComposerMap;
74-
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
75-
break;
76-
case QgsComposerItem::ComposerPaper:
77-
sipType = sipType_QgsPaperItem;
78-
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
79-
break;
80-
case QgsComposerItem::ComposerPicture:
81-
sipType = sipType_QgsComposerPicture;
82-
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
83-
break;
84-
case QgsComposerItem::ComposerScaleBar:
85-
sipType = sipType_QgsComposerScaleBar;
86-
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
87-
break;
88-
case QgsComposerItem::ComposerShape:
89-
sipType = sipType_QgsComposerShape;
90-
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
91-
break;
92-
case QgsComposerItem::ComposerPolygon:
93-
sipType = sipType_QgsComposerPolygon;
94-
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
95-
break;
96-
case QgsComposerItem::ComposerPolyline:
97-
sipType = sipType_QgsComposerPolyline;
98-
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
99-
break;
100-
case QgsComposerItem::ComposerFrame:
101-
sipType = sipType_QgsComposerFrame;
102-
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
103-
break;
104-
default:
105-
sipType = 0;
106-
}
107-
}
108-
else
109-
{
110-
switch ( sipCpp->type() )
111-
{
112-
// really, these *should* use the constants from QgsLayoutItemRegistry, but sip doesn't like that!
113-
case QGraphicsItem::UserType + 101:
114-
sipType = sipType_QgsLayoutItemGroup;
115-
*sipCppRet = static_cast<QgsLayoutItemGroup *>( sipCpp );
116-
break;
117-
case QGraphicsItem::UserType + 102:
118-
sipType = sipType_QgsLayoutItemPage;
119-
*sipCppRet = static_cast<QgsLayoutItemPage *>( sipCpp );
120-
break;
121-
case QGraphicsItem::UserType + 103:
122-
sipType = sipType_QgsLayoutItemMap;
123-
*sipCppRet = static_cast<QgsLayoutItemMap *>( sipCpp );
124-
break;
125-
case QGraphicsItem::UserType + 104:
126-
sipType = sipType_QgsLayoutItemPicture;
127-
*sipCppRet = static_cast<QgsLayoutItemPicture *>( sipCpp );
128-
break;
129-
case QGraphicsItem::UserType + 105:
130-
sipType = sipType_QgsLayoutItemLabel;
131-
*sipCppRet = static_cast<QgsLayoutItemLabel *>( sipCpp );
132-
break;
133-
case QGraphicsItem::UserType + 106:
134-
sipType = sipType_QgsLayoutItemLegend;
135-
*sipCppRet = static_cast<QgsLayoutItemLegend *>( sipCpp );
136-
break;
137-
case QGraphicsItem::UserType + 107:
138-
sipType = sipType_QgsLayoutItemShape;
139-
*sipCppRet = static_cast<QgsLayoutItemShape *>( sipCpp );
140-
break;
141-
case QGraphicsItem::UserType + 108:
142-
sipType = sipType_QgsLayoutItemPolygon;
143-
*sipCppRet = static_cast<QgsLayoutItemPolygon *>( sipCpp );
144-
break;
145-
case QGraphicsItem::UserType + 109:
146-
sipType = sipType_QgsLayoutItemPolyline;
147-
*sipCppRet = static_cast<QgsLayoutItemPolyline *>( sipCpp );
148-
break;
149-
case QGraphicsItem::UserType + 110:
150-
sipType = sipType_QgsLayoutItemScaleBar;
151-
*sipCppRet = static_cast<QgsLayoutItemScaleBar *>( sipCpp );
152-
break;
153-
case QGraphicsItem::UserType + 111:
154-
sipType = sipType_QgsLayoutFrame;
155-
*sipCppRet = static_cast<QgsLayoutFrame *>( sipCpp );
156-
break;
157-
default:
158-
sipType = 0;
159-
}
160-
}
161-
16220
%End
16321
public:
16422

python/core/layout/qgslayoutitem.sip

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,79 @@ class QgsLayoutItem : QgsLayoutObject, QGraphicsRectItem, QgsLayoutUndoObjectInt
2929
#include "qgslayoutframe.h"
3030
#include "qgslayoutitemshape.h"
3131
#include "qgslayoutitempage.h"
32+
33+
#include "qgscomposerarrow.h"
34+
#include "qgscomposeritemgroup.h"
35+
#include "qgscomposerlabel.h"
36+
#include "qgscomposerlegend.h"
37+
#include "qgspaperitem.h"
38+
#include "qgscomposerscalebar.h"
39+
#include "qgscomposershape.h"
40+
#include "qgscomposerpolygon.h"
41+
#include "qgscomposerpolyline.h"
42+
43+
3244
%End
3345
%ConvertToSubClassCode
3446
// the conversions have to be static, because they're using multiple inheritance
3547
// (seen in PyQt4 .sip files for some QGraphicsItem classes)
3648
switch ( sipCpp->type() )
3749
{
50+
case QgsComposerItem::ComposerItem:
51+
sipType = sipType_QgsComposerItem;
52+
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
53+
break;
54+
case QgsComposerItem::ComposerArrow:
55+
sipType = sipType_QgsComposerArrow;
56+
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
57+
break;
58+
case QgsComposerItem::ComposerItemGroup:
59+
sipType = sipType_QgsComposerItemGroup;
60+
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
61+
break;
62+
case QgsComposerItem::ComposerLabel:
63+
sipType = sipType_QgsComposerLabel;
64+
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
65+
break;
66+
case QgsComposerItem::ComposerLegend:
67+
sipType = sipType_QgsComposerLegend;
68+
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
69+
break;
70+
case QgsComposerItem::ComposerMap:
71+
sipType = sipType_QgsComposerMap;
72+
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
73+
break;
74+
case QgsComposerItem::ComposerPaper:
75+
sipType = sipType_QgsPaperItem;
76+
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
77+
break;
78+
case QgsComposerItem::ComposerPicture:
79+
sipType = sipType_QgsComposerPicture;
80+
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
81+
break;
82+
case QgsComposerItem::ComposerScaleBar:
83+
sipType = sipType_QgsComposerScaleBar;
84+
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
85+
break;
86+
case QgsComposerItem::ComposerShape:
87+
sipType = sipType_QgsComposerShape;
88+
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
89+
break;
90+
case QgsComposerItem::ComposerPolygon:
91+
sipType = sipType_QgsComposerPolygon;
92+
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
93+
break;
94+
case QgsComposerItem::ComposerPolyline:
95+
sipType = sipType_QgsComposerPolyline;
96+
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
97+
break;
98+
case QgsComposerItem::ComposerFrame:
99+
sipType = sipType_QgsComposerFrame;
100+
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
101+
break;
102+
103+
104+
38105
// really, these *should* use the constants from QgsLayoutItemRegistry, but sip doesn't like that!
39106
case QGraphicsItem::UserType + 101:
40107
sipType = sipType_QgsLayoutItemGroup;

src/core/composer/qgscomposeritem.h

Lines changed: 1 addition & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -40,163 +40,13 @@ class QgsComposerEffect;
4040
*/
4141
class CORE_EXPORT QgsComposerItem: public QgsComposerObject, public QGraphicsRectItem
4242
{
43-
#ifdef SIP_RUN
44-
#include <qgscomposerarrow.h>
45-
#include <qgscomposerframe.h>
46-
#include <qgscomposeritemgroup.h>
47-
#include <qgscomposerlabel.h>
48-
#include <qgscomposerlegend.h>
49-
#include <qgscomposermap.h>
50-
#include <qgspaperitem.h>
51-
#include <qgscomposerpicture.h>
52-
#include <qgscomposerscalebar.h>
53-
#include <qgscomposershape.h>
54-
#include <qgscomposerpolygon.h>
55-
#include <qgscomposerpolyline.h>
56-
#include <qgscomposertexttable.h>
57-
#include "qgslayoutitemgroup.h"
58-
#include "qgslayoutitemmap.h"
59-
#include "qgslayoutitempicture.h"
60-
#include "qgslayoutitemlabel.h"
61-
#include "qgslayoutitemlegend.h"
62-
#include "qgslayoutitempolygon.h"
63-
#include "qgslayoutitempolyline.h"
64-
#include "qgslayoutitemscalebar.h"
65-
#include "qgslayoutframe.h"
66-
#include "qgslayoutitemshape.h"
67-
#include "qgslayoutitempage.h"
68-
#endif
69-
70-
71-
#ifdef SIP_RUN
72-
SIP_CONVERT_TO_SUBCLASS_CODE
73-
// the conversions have to be static, because they're using multiple inheritance
74-
// (seen in PyQt4 .sip files for some QGraphicsItem classes)
75-
if ( dynamic_cast< QgsComposerItem * >( sipCpp ) )
76-
{
77-
switch ( sipCpp->type() )
78-
{
79-
case QgsComposerItem::ComposerItem:
80-
sipType = sipType_QgsComposerItem;
81-
*sipCppRet = static_cast<QgsComposerItem *>( sipCpp );
82-
break;
83-
case QgsComposerItem::ComposerArrow:
84-
sipType = sipType_QgsComposerArrow;
85-
*sipCppRet = static_cast<QgsComposerArrow *>( sipCpp );
86-
break;
87-
case QgsComposerItem::ComposerItemGroup:
88-
sipType = sipType_QgsComposerItemGroup;
89-
*sipCppRet = static_cast<QgsComposerItemGroup *>( sipCpp );
90-
break;
91-
case QgsComposerItem::ComposerLabel:
92-
sipType = sipType_QgsComposerLabel;
93-
*sipCppRet = static_cast<QgsComposerLabel *>( sipCpp );
94-
break;
95-
case QgsComposerItem::ComposerLegend:
96-
sipType = sipType_QgsComposerLegend;
97-
*sipCppRet = static_cast<QgsComposerLegend *>( sipCpp );
98-
break;
99-
case QgsComposerItem::ComposerMap:
100-
sipType = sipType_QgsComposerMap;
101-
*sipCppRet = static_cast<QgsComposerMap *>( sipCpp );
102-
break;
103-
case QgsComposerItem::ComposerPaper:
104-
sipType = sipType_QgsPaperItem;
105-
*sipCppRet = static_cast<QgsPaperItem *>( sipCpp );
106-
break;
107-
case QgsComposerItem::ComposerPicture:
108-
sipType = sipType_QgsComposerPicture;
109-
*sipCppRet = static_cast<QgsComposerPicture *>( sipCpp );
110-
break;
111-
case QgsComposerItem::ComposerScaleBar:
112-
sipType = sipType_QgsComposerScaleBar;
113-
*sipCppRet = static_cast<QgsComposerScaleBar *>( sipCpp );
114-
break;
115-
case QgsComposerItem::ComposerShape:
116-
sipType = sipType_QgsComposerShape;
117-
*sipCppRet = static_cast<QgsComposerShape *>( sipCpp );
118-
break;
119-
case QgsComposerItem::ComposerPolygon:
120-
sipType = sipType_QgsComposerPolygon;
121-
*sipCppRet = static_cast<QgsComposerPolygon *>( sipCpp );
122-
break;
123-
case QgsComposerItem::ComposerPolyline:
124-
sipType = sipType_QgsComposerPolyline;
125-
*sipCppRet = static_cast<QgsComposerPolyline *>( sipCpp );
126-
break;
127-
case QgsComposerItem::ComposerFrame:
128-
sipType = sipType_QgsComposerFrame;
129-
*sipCppRet = static_cast<QgsComposerFrame *>( sipCpp );
130-
break;
131-
default:
132-
sipType = 0;
133-
}
134-
}
135-
else
136-
{
137-
switch ( sipCpp->type() )
138-
{
139-
// really, these *should* use the constants from QgsLayoutItemRegistry, but sip doesn't like that!
140-
case QGraphicsItem::UserType + 101:
141-
sipType = sipType_QgsLayoutItemGroup;
142-
*sipCppRet = static_cast<QgsLayoutItemGroup *>( sipCpp );
143-
break;
144-
case QGraphicsItem::UserType + 102:
145-
sipType = sipType_QgsLayoutItemPage;
146-
*sipCppRet = static_cast<QgsLayoutItemPage *>( sipCpp );
147-
break;
148-
case QGraphicsItem::UserType + 103:
149-
sipType = sipType_QgsLayoutItemMap;
150-
*sipCppRet = static_cast<QgsLayoutItemMap *>( sipCpp );
151-
break;
152-
case QGraphicsItem::UserType + 104:
153-
sipType = sipType_QgsLayoutItemPicture;
154-
*sipCppRet = static_cast<QgsLayoutItemPicture *>( sipCpp );
155-
break;
156-
case QGraphicsItem::UserType + 105:
157-
sipType = sipType_QgsLayoutItemLabel;
158-
*sipCppRet = static_cast<QgsLayoutItemLabel *>( sipCpp );
159-
break;
160-
case QGraphicsItem::UserType + 106:
161-
sipType = sipType_QgsLayoutItemLegend;
162-
*sipCppRet = static_cast<QgsLayoutItemLegend *>( sipCpp );
163-
break;
164-
case QGraphicsItem::UserType + 107:
165-
sipType = sipType_QgsLayoutItemShape;
166-
*sipCppRet = static_cast<QgsLayoutItemShape *>( sipCpp );
167-
break;
168-
case QGraphicsItem::UserType + 108:
169-
sipType = sipType_QgsLayoutItemPolygon;
170-
*sipCppRet = static_cast<QgsLayoutItemPolygon *>( sipCpp );
171-
break;
172-
case QGraphicsItem::UserType + 109:
173-
sipType = sipType_QgsLayoutItemPolyline;
174-
*sipCppRet = static_cast<QgsLayoutItemPolyline *>( sipCpp );
175-
break;
176-
case QGraphicsItem::UserType + 110:
177-
sipType = sipType_QgsLayoutItemScaleBar;
178-
*sipCppRet = static_cast<QgsLayoutItemScaleBar *>( sipCpp );
179-
break;
180-
case QGraphicsItem::UserType + 111:
181-
sipType = sipType_QgsLayoutFrame;
182-
*sipCppRet = static_cast<QgsLayoutFrame *>( sipCpp );
183-
break;
184-
default:
185-
sipType = 0;
186-
}
187-
}
188-
189-
SIP_END
190-
#endif
191-
192-
19343
Q_OBJECT
19444
public:
19545

19646
enum ItemType
19747
{
19848
// base class for the items
199-
ComposerItem = UserType + 100,
49+
ComposerItem = UserType + 10000,
20050

20151
// derived classes
20252
ComposerArrow,

0 commit comments

Comments
 (0)