@@ -89,7 +89,6 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
89
89
orderingToolButton->setPopupMode ( QToolButton::InstantPopup );
90
90
orderingToolButton->setAutoRaise ( true );
91
91
orderingToolButton->setToolButtonStyle ( Qt::ToolButtonIconOnly );
92
-
93
92
orderingToolButton->addAction ( mActionRaiseItems );
94
93
orderingToolButton->addAction ( mActionLowerItems );
95
94
orderingToolButton->addAction ( mActionMoveItemsToTop );
@@ -111,6 +110,17 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
111
110
alignToolButton->setDefaultAction ( mActionAlignLeft );
112
111
toolBar->addWidget ( alignToolButton );
113
112
113
+ QToolButton* shapeToolButton = new QToolButton ( toolBar );
114
+ shapeToolButton->setCheckable ( true );
115
+ shapeToolButton->setPopupMode ( QToolButton::InstantPopup );
116
+ shapeToolButton->setAutoRaise ( true );
117
+ shapeToolButton->setToolButtonStyle ( Qt::ToolButtonIconOnly );
118
+ shapeToolButton->addAction ( mActionAddRectangle );
119
+ shapeToolButton->addAction ( mActionAddTriangle );
120
+ shapeToolButton->addAction ( mActionAddEllipse );
121
+ shapeToolButton->setDefaultAction ( mActionAddEllipse );
122
+ toolBar->insertWidget ( mActionAddArrow , shapeToolButton );
123
+
114
124
QActionGroup* toggleActionGroup = new QActionGroup ( this );
115
125
toggleActionGroup->addAction ( mActionMoveItemContent );
116
126
toggleActionGroup->addAction ( mActionAddNewMap );
@@ -119,19 +129,21 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
119
129
toggleActionGroup->addAction ( mActionAddNewScalebar );
120
130
toggleActionGroup->addAction ( mActionAddImage );
121
131
toggleActionGroup->addAction ( mActionSelectMoveItem );
122
- toggleActionGroup->addAction ( mActionAddBasicShape );
132
+ toggleActionGroup->addAction ( mActionAddRectangle );
133
+ toggleActionGroup->addAction ( mActionAddTriangle );
134
+ toggleActionGroup->addAction ( mActionAddEllipse );
123
135
toggleActionGroup->addAction ( mActionAddArrow );
124
136
toggleActionGroup->addAction ( mActionAddTable );
125
137
toggleActionGroup->setExclusive ( true );
126
138
139
+
127
140
mActionAddNewMap ->setCheckable ( true );
128
141
mActionAddNewLabel ->setCheckable ( true );
129
142
mActionAddNewLegend ->setCheckable ( true );
130
143
mActionSelectMoveItem ->setCheckable ( true );
131
144
mActionAddNewScalebar ->setCheckable ( true );
132
145
mActionAddImage ->setCheckable ( true );
133
146
mActionMoveItemContent ->setCheckable ( true );
134
- mActionAddBasicShape ->setCheckable ( true );
135
147
mActionAddArrow ->setCheckable ( true );
136
148
137
149
#ifdef Q_WS_MAC
@@ -172,7 +184,7 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
172
184
layoutMenu->addAction ( mActionAddImage );
173
185
layoutMenu->addAction ( mActionSelectMoveItem );
174
186
layoutMenu->addAction ( mActionMoveItemContent );
175
- layoutMenu-> addAction ( mActionAddBasicShape );
187
+
176
188
layoutMenu->addAction ( mActionAddArrow );
177
189
layoutMenu->addAction ( mActionAddTable );
178
190
layoutMenu->addSeparator ();
@@ -201,7 +213,6 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
201
213
QgsDebugMsg ( " entered." );
202
214
203
215
setMouseTracking ( true );
204
- // mSplitter->setMouseTracking(true);
205
216
mViewFrame ->setMouseTracking ( true );
206
217
207
218
// create composer view
@@ -224,23 +235,40 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
224
235
mComposition ->setParent ( mView );
225
236
mView ->setComposition ( mComposition );
226
237
227
- QgsCompositionWidget* compositionWidget = new QgsCompositionWidget ( mCompositionOptionsFrame , mComposition );
228
- QObject::connect ( mComposition , SIGNAL ( paperSizeChanged () ), compositionWidget, SLOT ( displayCompositionWidthHeight () ) );
229
- compositionWidget->show ();
238
+ setTabPosition ( Qt::AllDockWidgetAreas, QTabWidget::North);
239
+ mGeneralDock = new QDockWidget (tr (" Composition" ),this );
240
+ mGeneralDock ->setObjectName ( " CompositionDock" );
241
+ mItemDock = new QDockWidget (tr (" Item Properties" ));
242
+ mItemDock ->setObjectName ( " ItemDock" );
243
+ mUndoDock = new QDockWidget (tr (" Command history" ),this );
244
+ mUndoDock ->setObjectName ( " CommandDock" );
230
245
231
- mCompositionOptionsLayout = new QGridLayout ( mCompositionOptionsFrame );
232
- mCompositionOptionsLayout ->setMargin ( 0 );
233
- mCompositionOptionsLayout ->addWidget ( compositionWidget );
234
246
235
- QGridLayout *l = new QGridLayout ( mViewFrame );
236
- l->setMargin ( 0 );
237
- l->addWidget ( mView , 0 , 0 );
238
247
239
- mCompositionNameComboBox ->insertItem ( 0 , tr ( " Map 1" ) );
248
+ QgsCompositionWidget* compositionWidget = new QgsCompositionWidget ( mGeneralDock , mComposition );
249
+ connect ( mComposition , SIGNAL ( paperSizeChanged () ), compositionWidget, SLOT ( displayCompositionWidthHeight () ) );
250
+ mGeneralDock ->setWidget ( compositionWidget );
240
251
241
252
// undo widget
242
253
mUndoView = new QUndoView ( mComposition ->undoStack (), this );
243
- mOptionsTabWidget ->addTab ( mUndoView , tr ( " Command history" ) );
254
+ mUndoDock ->setWidget ( mUndoView );
255
+
256
+ addDockWidget ( Qt::RightDockWidgetArea, mItemDock );
257
+ addDockWidget ( Qt::RightDockWidgetArea, mGeneralDock );
258
+ addDockWidget ( Qt::RightDockWidgetArea, mUndoDock );
259
+
260
+ mItemDock ->show ();
261
+ mGeneralDock ->show ();
262
+ mUndoDock ->hide ();
263
+
264
+ tabifyDockWidget (mGeneralDock , mUndoDock );
265
+ tabifyDockWidget (mGeneralDock , mItemDock );
266
+
267
+ mGeneralDock ->raise ();
268
+
269
+ QGridLayout *l = new QGridLayout ( mViewFrame );
270
+ l->setMargin ( 0 );
271
+ l->addWidget ( mView , 0 , 0 );
244
272
245
273
// Create size grip (needed by Mac OS X for QMainWindow if QStatusBar is not visible)
246
274
mSizeGrip = new QSizeGrip ( this );
@@ -286,7 +314,9 @@ void QgsComposer::setupTheme()
286
314
mActionAddNewLabel ->setIcon ( QgisApp::getThemeIcon ( " /mActionLabel.png" ) );
287
315
mActionAddNewLegend ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddLegend.png" ) );
288
316
mActionAddNewScalebar ->setIcon ( QgisApp::getThemeIcon ( " /mActionScaleBar.png" ) );
289
- mActionAddBasicShape ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
317
+ mActionAddRectangle ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
318
+ mActionAddTriangle ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
319
+ mActionAddEllipse ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddBasicShape.png" ) );
290
320
mActionAddArrow ->setIcon ( QgisApp::getThemeIcon ( " /mActionAddArrow.png" ) );
291
321
mActionAddTable ->setIcon ( QgisApp::getThemeIcon ( " /mActionOpenTable.png" ) );
292
322
mActionSelectMoveItem ->setIcon ( QgisApp::getThemeIcon ( " /mActionSelectPan.png" ) );
@@ -396,21 +426,13 @@ void QgsComposer::setTitle( const QString& title )
396
426
}
397
427
}
398
428
399
- void QgsComposer::showCompositionOptions ( QWidget *w )
400
- {
401
- QWidget* currentWidget = mItemStackedWidget ->currentWidget ();
402
- mItemStackedWidget ->removeWidget ( currentWidget );
403
- mItemStackedWidget ->addWidget ( w );
404
- }
405
-
406
429
void QgsComposer::showItemOptions ( QgsComposerItem* item )
407
430
{
408
- QWidget* currentWidget = mItemStackedWidget -> currentWidget ();
431
+ QWidget* currentWidget = mItemDock -> widget ();
409
432
410
433
if ( !item )
411
434
{
412
- mItemStackedWidget ->removeWidget ( currentWidget );
413
- mItemStackedWidget ->setCurrentWidget ( 0 );
435
+ mItemDock ->setWidget ( 0 );
414
436
return ;
415
437
}
416
438
@@ -427,10 +449,7 @@ void QgsComposer::showItemOptions( QgsComposerItem* item )
427
449
return ;
428
450
}
429
451
430
- mItemStackedWidget ->removeWidget ( currentWidget );
431
- mItemStackedWidget ->addWidget ( newWidget );
432
- mItemStackedWidget ->setCurrentWidget ( newWidget );
433
- // newWidget->show();
452
+ mItemDock ->setWidget ( newWidget );
434
453
}
435
454
436
455
QgsMapCanvas *QgsComposer::mapCanvas ( void )
@@ -848,11 +867,27 @@ void QgsComposer::on_mActionAddImage_triggered()
848
867
}
849
868
}
850
869
851
- void QgsComposer::on_mActionAddBasicShape_triggered ()
870
+ void QgsComposer::on_mActionAddRectangle_triggered ()
871
+ {
872
+ if ( mView )
873
+ {
874
+ mView ->setCurrentTool ( QgsComposerView::AddRectangle );
875
+ }
876
+ }
877
+
878
+ void QgsComposer::on_mActionAddTriangle_triggered ()
852
879
{
853
880
if ( mView )
854
881
{
855
- mView ->setCurrentTool ( QgsComposerView::AddShape );
882
+ mView ->setCurrentTool ( QgsComposerView::AddTriangle );
883
+ }
884
+ }
885
+
886
+ void QgsComposer::on_mActionAddEllipse_triggered ()
887
+ {
888
+ if ( mView )
889
+ {
890
+ mView ->setCurrentTool ( QgsComposerView::AddEllipse );
856
891
}
857
892
}
858
893
@@ -1064,6 +1099,12 @@ void QgsComposer::on_mActionRedo_triggered()
1064
1099
}
1065
1100
}
1066
1101
1102
+ void QgsComposer::closeEvent (QCloseEvent *e)
1103
+ {
1104
+ Q_UNUSED ( e );
1105
+ saveWindowState ();
1106
+ }
1107
+
1067
1108
void QgsComposer::moveEvent ( QMoveEvent *e )
1068
1109
{
1069
1110
Q_UNUSED ( e );
@@ -1108,24 +1149,18 @@ void QgsComposer::saveWindowState()
1108
1149
{
1109
1150
QSettings settings;
1110
1151
settings.setValue ( " /Composer/geometry" , saveGeometry () );
1111
- // settings.setValue("/Composer/splitterState", mSplitter->saveState());
1152
+ // store the toolbar/dock widget settings using Qt4 settings API
1153
+ settings.setValue ( " /ComposerUI/state" , saveState () );
1112
1154
}
1113
1155
1114
1156
void QgsComposer::restoreWindowState ()
1115
1157
{
1116
1158
QSettings settings;
1117
- restoreGeometry ( settings.value ( " /Composer/geometry" ).toByteArray () );
1118
- QVariant splitterState = settings.value ( " /Composer/splitterState" );
1119
- if ( !splitterState.isNull () )
1159
+ if (! restoreState ( settings.value ( " /ComposerUI/state" ).toByteArray () ))
1120
1160
{
1121
- // mSplitter->restoreState(settings.value("/Composer/splitterState").toByteArray());
1122
- }
1123
- else
1124
- {
1125
- QList<int > defaultSize;
1126
- defaultSize << 300 << 100 ; // page display 300 pixels, details pane 100 pixels
1127
- // mSplitter->setSizes(defaultSize);
1161
+ QgsDebugMsg (" RESTORE STATE FAILED!!" );
1128
1162
}
1163
+ restoreGeometry ( settings.value ( " /Composer/geometry" ).toByteArray () );
1129
1164
}
1130
1165
1131
1166
void QgsComposer::writeXML ( QDomDocument& doc )
@@ -1218,7 +1253,7 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
1218
1253
delete ( *it );
1219
1254
}
1220
1255
// delete composition widget
1221
- QgsCompositionWidget* oldCompositionWidget = qobject_cast<QgsCompositionWidget *>( mCompositionOptionsFrame -> children (). at ( 0 ) );
1256
+ QgsCompositionWidget* oldCompositionWidget = qobject_cast<QgsCompositionWidget *>( mGeneralDock -> widget ( ) );
1222
1257
delete oldCompositionWidget;
1223
1258
delete mCompositionOptionsLayout ;
1224
1259
mCompositionOptionsLayout = 0 ;
@@ -1241,13 +1276,13 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
1241
1276
l->addWidget ( mView , 0 , 0 );
1242
1277
1243
1278
// create compositionwidget
1244
- QgsCompositionWidget* compositionWidget = new QgsCompositionWidget ( mCompositionOptionsFrame , mComposition );
1245
- QObject::connect ( mComposition , SIGNAL ( paperSizeChanged () ), compositionWidget, SLOT ( displayCompositionWidthHeight () ) );
1246
- compositionWidget->show ();
1279
+ // QgsCompositionWidget* compositionWidget = new QgsCompositionWidget( mCompositionOptionsFrame, mComposition );
1280
+ // QObject::connect( mComposition, SIGNAL( paperSizeChanged() ), compositionWidget, SLOT( displayCompositionWidthHeight() ) );
1281
+ // compositionWidget->show();
1247
1282
1248
- mCompositionOptionsLayout = new QGridLayout ( mCompositionOptionsFrame );
1249
- mCompositionOptionsLayout ->setMargin ( 0 );
1250
- mCompositionOptionsLayout ->addWidget ( compositionWidget );
1283
+ // mCompositionOptionsLayout = new QGridLayout( mCompositionOptionsFrame );
1284
+ // mCompositionOptionsLayout->setMargin( 0 );
1285
+ // mCompositionOptionsLayout->addWidget( compositionWidget );
1251
1286
1252
1287
// read and restore all the items
1253
1288
if ( mComposition )
0 commit comments