本文整理汇总了C++中TilesetView类的典型用法代码示例。如果您正苦于以下问题:C++ TilesetView类的具体用法?C++ TilesetView怎么用?C++ TilesetView使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TilesetView类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: tilesetViewAt
void TilesetDock::deleteTilesetView(int index)
{
TilesetDocument *tilesetDocument = mTilesetDocuments.at(index);
tilesetDocument->disconnect(this);
Tileset *tileset = tilesetDocument->tileset().data();
TilesetView *view = tilesetViewAt(index);
QString path = QLatin1String("TilesetDock/TilesetScale/") + tileset->name();
QSettings *settings = Preferences::instance()->settings();
if (view->scale() != 1.0)
settings->setValue(path, view->scale());
else
settings->remove(path);
mTilesets.remove(index);
mTilesetDocuments.removeAt(index);
delete view; // view needs to go before the tab
mTabBar->removeTab(index);
// Make sure we don't reference this tileset anymore
if (mCurrentTiles && mCurrentTiles->referencesTileset(tileset)) {
TileLayer *cleaned = mCurrentTiles->clone();
cleaned->removeReferencesToTileset(tileset);
setCurrentTiles(cleaned);
}
if (mCurrentTile && mCurrentTile->tileset() == tileset)
setCurrentTile(nullptr);
}
开发者ID:Shorttail,项目名称:tiled,代码行数:29,代码来源:tilesetdock.cpp
示例2: updateActions
void TilesetDock::updateActions()
{
bool external = false;
TilesetView *view = nullptr;
Tileset *tileset = nullptr;
const int index = mTabBar->currentIndex();
if (index > -1) {
view = tilesetViewAt(index);
tileset = mTilesets.at(index).data();
if (view) {
if (!view->model()) // Lazily set up the model
setupTilesetModel(view, tileset);
mViewStack->setCurrentIndex(index);
external = tileset->isExternal();
}
}
const bool tilesetIsDisplayed = view != nullptr;
const auto map = mMapDocument ? mMapDocument->map() : nullptr;
mEmbedTileset->setEnabled(tilesetIsDisplayed && external);
mExportTileset->setEnabled(tilesetIsDisplayed && !external);
mEditTileset->setEnabled(tilesetIsDisplayed);
mDeleteTileset->setEnabled(tilesetIsDisplayed && map && contains(map->tilesets(), tileset));
}
开发者ID:Shorttail,项目名称:tiled,代码行数:28,代码来源:tilesetdock.cpp
示例3: createTilesetView
void TilesetDock::createTilesetView(int index, TilesetDocument *tilesetDocument)
{
auto tileset = tilesetDocument->tileset();
mTilesets.insert(index, tileset);
mTilesetDocuments.insert(index, tilesetDocument);
TilesetView *view = new TilesetView;
view->setZoomable(mZoomable);
// Insert view before the tab to make sure it is there when the tab index
// changes (happens when first tab is inserted).
mViewStack->insertWidget(index, view);
mTabBar->insertTab(index, tileset->name());
connect(tilesetDocument, &TilesetDocument::tilesetNameChanged,
this, &TilesetDock::tilesetNameChanged);
connect(tilesetDocument, &TilesetDocument::fileNameChanged,
this, &TilesetDock::updateActions);
connect(tilesetDocument, &TilesetDocument::tilesetChanged,
this, &TilesetDock::tilesetChanged);
connect(tilesetDocument, &TilesetDocument::tileImageSourceChanged,
this, &TilesetDock::tileImageSourceChanged);
connect(tilesetDocument, &TilesetDocument::tileAnimationChanged,
this, &TilesetDock::tileAnimationChanged);
}
开发者ID:nobody-special666,项目名称:tiled,代码行数:26,代码来源:tilesetdock.cpp
示例4: tilesetViewAt
/**
* Synchronizes the selection with the given stamp. Ignored when the stamp is
* changing because of a selection change in the TilesetDock.
*/
void TilesetDock::selectTilesInStamp(const TileStamp &stamp)
{
if (mEmittingStampCaptured)
return;
QSet<Tile*> processed;
QMap<QItemSelectionModel*, QItemSelection> selections;
for (const TileStampVariation &variation : stamp.variations()) {
const TileLayer &tileLayer = *variation.tileLayer();
for (const Cell &cell : tileLayer) {
if (Tile *tile = cell.tile) {
if (processed.contains(tile))
continue;
processed.insert(tile); // avoid spending time on duplicates
Tileset *tileset = tile->tileset();
int tilesetIndex = mTilesets.indexOf(tileset->sharedPointer());
if (tilesetIndex != -1) {
TilesetView *view = tilesetViewAt(tilesetIndex);
if (!view->model()) // Lazily set up the model
setupTilesetModel(view, tileset);
const TilesetModel *model = view->tilesetModel();
const QModelIndex modelIndex = model->tileIndex(tile);
QItemSelectionModel *selectionModel = view->selectionModel();
selections[selectionModel].select(modelIndex, modelIndex);
}
}
}
}
if (!selections.isEmpty()) {
mSynchronizingSelection = true;
// Mark captured tiles as selected
for (auto i = selections.constBegin(); i != selections.constEnd(); ++i) {
QItemSelectionModel *selectionModel = i.key();
const QItemSelection &selection = i.value();
selectionModel->select(selection, QItemSelectionModel::SelectCurrent);
}
// Show/edit properties of all captured tiles
mMapDocument->setSelectedTiles(processed.toList());
// Update the current tile (useful for animation and collision editors)
auto first = selections.begin();
QItemSelectionModel *selectionModel = first.key();
const QItemSelection &selection = first.value();
const QModelIndex currentIndex = selection.first().topLeft();
if (selectionModel->currentIndex() != currentIndex)
selectionModel->setCurrentIndex(currentIndex, QItemSelectionModel::NoUpdate);
else
currentChanged(currentIndex);
mSynchronizingSelection = false;
}
}
开发者ID:AbelS95,项目名称:tiled,代码行数:63,代码来源:tilesetdock.cpp
示例5: currentTilesetView
void TilesetEditor::currentWangSetChanged(WangSet *wangSet)
{
TilesetView *view = currentTilesetView();
if (!view)
return;
view->setWangSet(wangSet);
}
开发者ID:zilluss,项目名称:tiled,代码行数:8,代码来源:tileseteditor.cpp
示例6: GetExecutor
void BrushState::OnTilesetViewRender() {
TilesetView* tsv = GetExecutor()->GetTilesetView();
Tileset* ts = GetExecutor()->GetTileset();
int tileWidth = ts->Width() + (tsv->IsPadded() ? 1 : 0);
int tileHeight = ts->Height() + (tsv->IsPadded() ? 1 : 0);
Rect selected = tsv->GetBrushSelection();
int ywin = tsv->GetYWin();
tsv->DrawSelectRect(selected.left * tileWidth, selected.top * tileHeight - ywin, tileWidth * (selected.Width() + 1), tileHeight * (selected.Height() + 1), RGBA(127, 255, 255));
}
开发者ID:andyfriesen,项目名称:ika,代码行数:11,代码来源:brushstate.cpp
示例7: getSelectedTileset
TileSet* TilesetDock::getSelectedTileset() {
TilesetView *currentView;
TilesetScene *currentScene;
currentView = (TilesetView*) tabWidget->currentWidget();
if(currentView == NULL) return NULL;
currentScene = (TilesetScene*) currentView->scene();
return currentScene->tileSet;
}
开发者ID:slumki,项目名称:Gameka,代码行数:11,代码来源:tilesetdock.cpp
示例8: TilesetView
void TilesetDock::insertTilesetView(int index, Tileset *tileset)
{
TilesetView *view = new TilesetView(mMapDocument);
view->setModel(new TilesetModel(tileset, view));
connect(view->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
SLOT(updateCurrentTiles()));
mTabBar->insertTab(index, tileset->name());
mViewStack->insertWidget(index, view);
}
开发者ID:Bananattack,项目名称:tiled,代码行数:12,代码来源:tilesetdock.cpp
示例9: currentTilesetView
void TilesetDock::removeTiles()
{
TilesetView *view = currentTilesetView();
if (!view)
return;
if (!view->selectionModel()->hasSelection())
return;
const QModelIndexList indexes = view->selectionModel()->selectedIndexes();
const TilesetModel *model = view->tilesetModel();
QList<Tile*> tiles;
for (const QModelIndex &index : indexes)
if (Tile *tile = model->tileAt(index))
tiles.append(tile);
auto matchesAnyTile = [&tiles] (const Cell &cell) {
if (Tile *tile = cell.tile)
return tiles.contains(tile);
return false;
};
const bool inUse = hasTileReferences(mMapDocument, matchesAnyTile);
// If the tileset is in use, warn the user and confirm removal
if (inUse) {
QMessageBox warning(QMessageBox::Warning,
tr("Remove Tiles"),
tr("One or more of the tiles to be removed are "
"still in use by the map!"),
QMessageBox::Yes | QMessageBox::No,
this);
warning.setDefaultButton(QMessageBox::Yes);
warning.setInformativeText(tr("Remove all references to these tiles?"));
if (warning.exec() != QMessageBox::Yes)
return;
}
QUndoStack *undoStack = mMapDocument->undoStack();
undoStack->beginMacro(tr("Remove Tiles"));
if (inUse)
removeTileReferences(mMapDocument, matchesAnyTile);
Tileset *tileset = view->tilesetModel()->tileset();
undoStack->push(new RemoveTiles(mMapDocument, tileset, tiles));
undoStack->endMacro();
// Clear the current tiles, will be referencing the removed tiles
setCurrentTiles(nullptr);
setCurrentTile(nullptr);
}
开发者ID:AbelS95,项目名称:tiled,代码行数:53,代码来源:tilesetdock.cpp
示例10: tilesetAdded
void TilesetDock::tilesetAdded(int index, Tileset *tileset)
{
TilesetView *view = new TilesetView;
view->setMapDocument(mMapDocument);
view->setZoomable(mZoomable);
mTilesets.insert(index, tileset->sharedPointer());
mTabBar->insertTab(index, tileset->name());
mViewStack->insertWidget(index, view);
updateActions();
}
开发者ID:AbelS95,项目名称:tiled,代码行数:12,代码来源:tilesetdock.cpp
示例11: indexOf
void TilesetDock::tilesetChanged(Tileset *tileset)
{
// Update the affected tileset model, if it exists
const int index = indexOf(mTilesets, tileset);
if (index < 0)
return;
TilesetView *view = tilesetViewAt(index);
if (TilesetModel *model = view->tilesetModel()) {
view->updateBackgroundColor();
model->tilesetChanged();
}
}
开发者ID:Shorttail,项目名称:tiled,代码行数:14,代码来源:tilesetdock.cpp
示例12: TilesetView
void TilesetDock::insertTilesetView(int index, Tileset *tileset)
{
TilesetView *view = new TilesetView(mMapDocument);
view->setModel(new TilesetModel(tileset, view));
connect(view->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
SLOT(updateCurrentTiles()));
mViewStack->insertWidget(index, view);
QVariant userdata = QVariant::fromValue(view);
mDropDown->addItem(tileset->name(), userdata);
mDropDown->model()->sort(0);
mDropDown->setCurrentIndex(mDropDown->findData(userdata));
}
开发者ID:ChicoTeam,项目名称:tiled,代码行数:15,代码来源:tilesetdock.cpp
示例13: TilesetView
void TilesetDock::insertTilesetView(int index, Tileset *tileset)
{
TilesetView *view = new TilesetView(mMapDocument);
view->setModel(new TilesetModel(tileset, view));
connect(view->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
SLOT(updateCurrentTiles()));
connect(view, SIGNAL(deleteRequested(TilesetView*)),
SLOT(deleteRequested(TilesetView*)));
mViewStack->insertWidget(index, view);
mDropDown->insertItem(index, QIcon(), tileset->name());
mDropDown->setCurrentIndex(index);
}
开发者ID:Zeitmaus,项目名称:tiled,代码行数:15,代码来源:tilesetdock.cpp
示例14: updateActions
void TilesetDock::updateActions()
{
bool external = false;
TilesetView *view = 0;
const int index = mTabBar->currentIndex();
if (index > -1) {
view = tilesetViewAt(index);
if (view) {
mViewStack->setCurrentWidget(view);
external = view->tilesetModel()->tileset()->isExternal();
}
}
mRenameTileset->setEnabled(view && !external);
mImportTileset->setEnabled(view && external);
mExportTileset->setEnabled(view && !external);
mPropertiesTileset->setEnabled(view && !external);
mDeleteTileset->setEnabled(view);
}
开发者ID:Fourth-Doug-Coders,项目名称:4dquest,代码行数:19,代码来源:tilesetdock.cpp
示例15: Q_ASSERT
void TilesetEditor::removeDocument(Document *document)
{
TilesetDocument *tilesetDocument = qobject_cast<TilesetDocument*>(document);
Q_ASSERT(tilesetDocument);
Q_ASSERT(mViewForTileset.contains(tilesetDocument));
tilesetDocument->disconnect(this);
TilesetView *view = mViewForTileset.take(tilesetDocument);
QString path = QLatin1String("TilesetEditor/TilesetScale/") +
tilesetDocument->tileset()->name();
QSettings *settings = Preferences::instance()->settings();
if (view->scale() != 1.0)
settings->setValue(path, view->scale());
else
settings->remove(path);
// remove first, to keep it valid while the current widget changes
mWidgetStack->removeWidget(view);
delete view;
}
开发者ID:zilluss,项目名称:tiled,代码行数:22,代码来源:tileseteditor.cpp
示例16: QLatin1String
void TilesetDock::createTilesetView(int index, TilesetDocument *tilesetDocument)
{
auto tileset = tilesetDocument->tileset();
mTilesets.insert(index, tileset);
mTilesetDocuments.insert(index, tilesetDocument);
TilesetView *view = new TilesetView;
// Insert view before the tab to make sure it is there when the tab index
// changes (happens when first tab is inserted).
mViewStack->insertWidget(index, view);
mTabBar->insertTab(index, tileset->name());
mTabBar->setTabToolTip(index, tileset->fileName());
QString path = QLatin1String("TilesetDock/TilesetScale/") + tileset->name();
qreal scale = Preferences::instance()->settings()->value(path, 1).toReal();
view->zoomable()->setScale(scale);
connect(tilesetDocument, &TilesetDocument::tilesetNameChanged,
this, &TilesetDock::tilesetNameChanged);
connect(tilesetDocument, &TilesetDocument::fileNameChanged,
this, &TilesetDock::tilesetFileNameChanged);
connect(tilesetDocument, &TilesetDocument::tilesetChanged,
this, &TilesetDock::tilesetChanged);
connect(tilesetDocument, &TilesetDocument::tileImageSourceChanged,
this, &TilesetDock::tileImageSourceChanged);
connect(tilesetDocument, &TilesetDocument::tileAnimationChanged,
this, &TilesetDock::tileAnimationChanged);
connect(view, &TilesetView::clicked,
this, &TilesetDock::updateCurrentTiles);
connect(view, &TilesetView::swapTilesRequested,
this, &TilesetDock::swapTiles);
connect(view, &TilesetView::changeSelectedMapObjectsTileRequested,
this, &TilesetDock::changeSelectedMapObjectsTile);
}
开发者ID:Shorttail,项目名称:tiled,代码行数:37,代码来源:tilesetdock.cpp
示例17: updateActions
void TilesetDock::updateActions()
{
bool external = false;
bool isCollection = false;
bool hasSelection = false;
TilesetView *view = nullptr;
const int index = mTabBar->currentIndex();
if (index > -1) {
view = tilesetViewAt(index);
if (view) {
Tileset *tileset = mTilesets.at(index).data();
if (!view->model()) // Lazily set up the model
setupTilesetModel(view, tileset);
mViewStack->setCurrentIndex(index);
external = tileset->isExternal();
isCollection = tileset->isCollection();
hasSelection = view->selectionModel()->hasSelection();
}
}
const bool tilesetIsDisplayed = view != nullptr;
const bool mapIsDisplayed = mMapDocument != nullptr;
mNewTileset->setEnabled(mapIsDisplayed);
mImportTileset->setEnabled(tilesetIsDisplayed && external);
mExportTileset->setEnabled(tilesetIsDisplayed && !external);
mPropertiesTileset->setEnabled(tilesetIsDisplayed);
mDeleteTileset->setEnabled(tilesetIsDisplayed);
mEditTerrain->setEnabled(tilesetIsDisplayed && !external);
mAddTiles->setEnabled(tilesetIsDisplayed && isCollection && !external);
mRemoveTiles->setEnabled(tilesetIsDisplayed && isCollection
&& hasSelection && !external);
}
开发者ID:AbelS95,项目名称:tiled,代码行数:36,代码来源:tilesetdock.cpp
示例18: widget
void TilesetDock::setMapDocument(MapDocument *mapDocument)
{
if (mMapDocument == mapDocument)
return;
// Hide while we update the tab bar, to avoid repeated layouting
widget()->hide();
setCurrentTiles(0);
if (mMapDocument) {
// Remember the last visible tileset for this map
const QString tilesetName = mTabBar->tabText(mTabBar->currentIndex());
mCurrentTilesets.insert(mMapDocument, tilesetName);
}
// Clear previous content
while (mTabBar->count())
mTabBar->removeTab(0);
while (mViewStack->count())
delete mViewStack->widget(0);
mTilesets.clear();
// Clear all connections to the previous document
if (mMapDocument)
mMapDocument->disconnect(this);
mMapDocument = mapDocument;
if (mMapDocument) {
mTilesets = mMapDocument->map()->tilesets();
foreach (Tileset *tileset, mTilesets) {
TilesetView *view = new TilesetView;
view->setMapDocument(mMapDocument);
view->setZoomable(mZoomable);
mTabBar->addTab(tileset->name());
mViewStack->addWidget(view);
}
connect(mMapDocument, SIGNAL(tilesetAdded(int,Tileset*)),
SLOT(tilesetAdded(int,Tileset*)));
connect(mMapDocument, SIGNAL(tilesetRemoved(Tileset*)),
SLOT(tilesetRemoved(Tileset*)));
connect(mMapDocument, SIGNAL(tilesetMoved(int,int)),
SLOT(tilesetMoved(int,int)));
connect(mMapDocument, SIGNAL(tilesetNameChanged(Tileset*)),
SLOT(tilesetNameChanged(Tileset*)));
connect(mMapDocument, SIGNAL(tilesetFileNameChanged(Tileset*)),
SLOT(updateActions()));
QString cacheName = mCurrentTilesets.take(mMapDocument);
for (int i = 0; i < mTabBar->count(); ++i) {
if (mTabBar->tabText(i) == cacheName) {
mTabBar->setCurrentIndex(i);
break;
}
}
}
开发者ID:leisong,项目名称:tiled,代码行数:61,代码来源:tilesetdock.cpp
示例19: widget
void TilesetDock::setMapDocument(MapDocument *mapDocument)
{
if (mMapDocument == mapDocument)
return;
// Hide while we update the tab bar, to avoid repeated layouting
// But, this causes problems on OS X (issue #1055)
#ifndef Q_OS_OSX
widget()->hide();
#endif
setCurrentTiles(nullptr);
setCurrentTile(nullptr);
if (mMapDocument) {
// Remember the last visible tileset for this map
const QString tilesetName = mTabBar->tabText(mTabBar->currentIndex());
mCurrentTilesets.insert(mMapDocument, tilesetName);
}
// Clear previous content
while (mTabBar->count())
mTabBar->removeTab(0);
while (mViewStack->count())
delete mViewStack->widget(0);
mTilesets.clear();
// Clear all connections to the previous document
if (mMapDocument)
mMapDocument->disconnect(this);
mMapDocument = mapDocument;
if (mMapDocument) {
mTilesets = mMapDocument->map()->tilesets();
for (const SharedTileset &tileset : mTilesets) {
TilesetView *view = new TilesetView;
view->setMapDocument(mMapDocument);
view->setZoomable(mZoomable);
mTabBar->addTab(tileset->name());
mViewStack->addWidget(view);
}
connect(mMapDocument, &MapDocument::tilesetAdded,
this, &TilesetDock::tilesetAdded);
connect(mMapDocument, &MapDocument::tilesetRemoved,
this, &TilesetDock::tilesetRemoved);
connect(mMapDocument, &MapDocument::tilesetMoved,
this, &TilesetDock::tilesetMoved);
connect(mMapDocument, &MapDocument::tilesetReplaced,
this, &TilesetDock::tilesetReplaced);
connect(mMapDocument, &MapDocument::tilesetNameChanged,
this, &TilesetDock::tilesetNameChanged);
connect(mMapDocument, &MapDocument::tilesetFileNameChanged,
this, &TilesetDock::updateActions);
connect(mMapDocument, &MapDocument::tilesetChanged,
this, &TilesetDock::tilesetChanged);
connect(mMapDocument, &MapDocument::tileImageSourceChanged,
this, &TilesetDock::tileImageSourceChanged);
connect(mMapDocument, &MapDocument::tileAnimationChanged,
this, &TilesetDock::tileAnimationChanged);
QString cacheName = mCurrentTilesets.take(mMapDocument);
for (int i = 0; i < mTabBar->count(); ++i) {
if (mTabBar->tabText(i) == cacheName) {
mTabBar->setCurrentIndex(i);
break;
}
}
if (Object *object = mMapDocument->currentObject())
if (object->typeId() == Object::TileType)
setCurrentTile(static_cast<Tile*>(object));
}
updateActions();
#ifndef Q_OS_OSX
widget()->show();
#endif
}
开发者ID:AbelS95,项目名称:tiled,代码行数:84,代码来源:tilesetdock.cpp
注:本文中的TilesetView类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论