~mapeditor.org/tiled/master

« back to all changes in this revision

Viewing changes to src/tiled/tilecollisiondock.cpp

  • Committer: Thorbjørn Lindeijer
  • Date: 2019-01-14 11:28:45 UTC
  • Revision ID: git-v1:3c14e2eeb8efc5e8bad6daa3337e7ee0ab49ebcb
Tile Collision Editor: Added objects list

Also added shortcut Ctrl+A for selecting all objects.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
#include "mapview.h"
39
39
#include "objectgroup.h"
40
40
#include "objectselectiontool.h"
 
41
#include "objectsview.h"
41
42
#include "tile.h"
42
43
#include "tilelayer.h"
43
44
#include "tileset.h"
47
48
#include "zoomable.h"
48
49
 
49
50
#include <QCloseEvent>
 
51
#include <QComboBox>
50
52
#include <QCoreApplication>
51
 
#include <QComboBox>
 
53
#include <QShortcut>
 
54
#include <QSplitter>
52
55
#include <QStatusBar>
53
56
#include <QToolBar>
54
57
#include <QUndoStack>
62
65
    , mTilesetDocument(nullptr)
63
66
    , mMapScene(new MapScene(this))
64
67
    , mMapView(new MapView(this, MapView::NoStaticContents))
 
68
    , mObjectsView(new ObjectsView(this))
65
69
    , mToolManager(new ToolManager(this))
66
70
    , mApplyingChanges(false)
67
71
    , mSynchronizing(false)
75
79
    mMapView->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
76
80
    mMapView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
77
81
 
 
82
    mObjectsView->setRootIsDecorated(false);
 
83
 
78
84
    CreateObjectTool *rectangleObjectsTool = new CreateRectangleObjectTool(this);
79
85
    CreateObjectTool *pointObjectsTool = new CreatePointObjectTool(this);
80
86
    CreateObjectTool *ellipseObjectsTool = new CreateEllipseObjectTool(this);
96
102
    toolBar->addAction(mToolManager->registerTool(polygonObjectsTool));
97
103
    toolBar->addAction(mToolManager->registerTool(templatesTool));
98
104
 
 
105
    mActionMoveUp = new QAction(this);
 
106
    mActionMoveUp->setIcon(QIcon(QLatin1String(":/images/16x16/go-up.png")));
 
107
    mActionMoveUp->setEnabled(false);
 
108
    mActionMoveDown = new QAction(this);
 
109
    mActionMoveDown->setIcon(QIcon(QLatin1String(":/images/16x16/go-down.png")));
 
110
    mActionMoveDown->setEnabled(false);
 
111
 
 
112
    Utils::setThemeIcon(mActionMoveUp, "go-up");
 
113
    Utils::setThemeIcon(mActionMoveDown, "go-down");
 
114
 
 
115
    QToolBar *objectsToolBar = new QToolBar(this);
 
116
    objectsToolBar->setMovable(false);
 
117
    objectsToolBar->setFloatable(false);
 
118
    objectsToolBar->setIconSize(Utils::smallIconSize());
 
119
    objectsToolBar->addAction(mActionMoveUp);
 
120
    objectsToolBar->addAction(mActionMoveDown);
 
121
 
 
122
    auto objectsWidget = new QWidget;
 
123
    auto objectsVertical = new QVBoxLayout(objectsWidget);
 
124
    objectsVertical->setSpacing(0);
 
125
    objectsVertical->setMargin(0);
 
126
    objectsVertical->addWidget(mObjectsView);
 
127
    objectsVertical->addWidget(objectsToolBar);
 
128
 
99
129
    auto widget = new QWidget(this);
100
130
    auto vertical = new QVBoxLayout(widget);
101
131
    vertical->setSpacing(0);
102
132
    vertical->setMargin(0);
103
133
 
104
 
    auto horizontal = new QHBoxLayout();
 
134
    auto horizontal = new QHBoxLayout;
105
135
    horizontal->addWidget(toolBar, 1);
106
136
 
 
137
    auto splitter = new QSplitter;
 
138
    splitter->addWidget(mMapView);
 
139
    splitter->addWidget(objectsWidget);
 
140
 
107
141
    vertical->addLayout(horizontal);
108
 
    vertical->addWidget(mMapView);
 
142
    vertical->addWidget(splitter);
109
143
 
110
144
    setWidget(widget);
111
145
 
121
155
    Zoomable *zoomable = mMapView->zoomable();
122
156
    zoomable->setComboBox(zoomComboBox);
123
157
 
 
158
    auto selectAllShortcut = new QShortcut(Qt::CTRL + Qt::Key_A, this, nullptr, nullptr, Qt::WidgetWithChildrenShortcut);
 
159
    connect(selectAllShortcut, &QShortcut::activated, this, &TileCollisionDock::selectAll);
 
160
 
 
161
    connect(mActionMoveUp, &QAction::triggered, this, &TileCollisionDock::moveObjectsUp);
 
162
    connect(mActionMoveDown, &QAction::triggered, this, &TileCollisionDock::moveObjectsDown);
 
163
 
124
164
    retranslateUi();
125
165
}
126
166
 
189
229
        mDummyMapDocument->setCurrentLayer(objectGroup);
190
230
 
191
231
        mMapScene->setMapDocument(mDummyMapDocument.data());
 
232
        mObjectsView->setMapDocument(mDummyMapDocument.data());
 
233
        mObjectsView->setRootIndex(mObjectsView->layerViewIndex(objectGroup));
192
234
        mToolManager->setMapDocument(mDummyMapDocument.data());
193
235
 
194
236
        mMapScene->enableSelectedTool();
202
244
    } else {
203
245
        mDummyMapDocument.clear();
204
246
        mMapScene->setMapDocument(nullptr);
 
247
        mObjectsView->setMapDocument(nullptr);
205
248
        mToolManager->setMapDocument(nullptr);
206
249
    }
207
250
 
 
251
 
208
252
    emit dummyMapDocumentChanged(mDummyMapDocument.data());
209
253
 
210
254
    setHasSelectedObjects(false);
350
394
void TileCollisionDock::selectedObjectsChanged()
351
395
{
352
396
    setHasSelectedObjects(!mDummyMapDocument->selectedObjects().isEmpty());
 
397
    mActionMoveUp->setEnabled(hasSelectedObjects());
 
398
    mActionMoveDown->setEnabled(hasSelectedObjects());
353
399
}
354
400
 
355
401
void TileCollisionDock::setHasSelectedObjects(bool hasSelectedObjects)
360
406
    }
361
407
}
362
408
 
 
409
void TileCollisionDock::selectAll()
 
410
{
 
411
    if (!mDummyMapDocument)
 
412
        return;
 
413
 
 
414
    ObjectGroup *objectGroup = static_cast<ObjectGroup*>(mDummyMapDocument->map()->layerAt(1));
 
415
    mDummyMapDocument->setSelectedObjects(objectGroup->objects());
 
416
}
 
417
 
 
418
void TileCollisionDock::moveObjectsUp()
 
419
{
 
420
    if (mDummyMapDocument)
 
421
        mDummyMapDocument->moveObjectsUp(mDummyMapDocument->selectedObjects());
 
422
}
 
423
 
 
424
void TileCollisionDock::moveObjectsDown()
 
425
{
 
426
    if (mDummyMapDocument)
 
427
        mDummyMapDocument->moveObjectsDown(mDummyMapDocument->selectedObjects());
 
428
}
 
429
 
363
430
void TileCollisionDock::changeEvent(QEvent *e)
364
431
{
365
432
    QDockWidget::changeEvent(e);
375
442
void TileCollisionDock::retranslateUi()
376
443
{
377
444
    setWindowTitle(QCoreApplication::translate("Tiled::MainWindow", "Tile Collision Editor"));
 
445
 
 
446
    mActionMoveUp->setToolTip(tr("Move Objects Up"));
 
447
    mActionMoveDown->setToolTip(tr("Move Objects Down"));
378
448
}
379
449
 
380
450
} // namespace Tiled