Skip to content

Commit

Permalink
Made Views and Toolbars sub-menu functional again
Browse files Browse the repository at this point in the history
Now it shows the dock widgets and tool bars of the currently active
editor.
  • Loading branch information
bjorn committed Aug 29, 2016
1 parent 230ecc9 commit 6e694a9
Show file tree
Hide file tree
Showing 9 changed files with 109 additions and 19 deletions.
8 changes: 8 additions & 0 deletions src/tiled/documentmanager.cpp
Expand Up @@ -182,6 +182,14 @@ void DocumentManager::deleteEditor(Document::DocumentType documentType)
delete editor;
}

Editor *DocumentManager::currentEditor() const
{
if (Document *document = currentDocument())
return editor(document->type());

return nullptr;
}

void DocumentManager::saveState()
{
QHashIterator<Document::DocumentType, Editor*> iterator(mEditorForType);
Expand Down
2 changes: 2 additions & 0 deletions src/tiled/documentmanager.h
Expand Up @@ -71,6 +71,8 @@ class DocumentManager : public QObject
Editor *editor(Document::DocumentType documentType) const;
void deleteEditor(Document::DocumentType documentType);

Editor *currentEditor() const;

void saveState();
void restoreState();

Expand Down
6 changes: 6 additions & 0 deletions src/tiled/editor.h
Expand Up @@ -23,6 +23,9 @@

#include <QObject>

class QToolBar;
class QDockWidget;

namespace Tiled {
namespace Internal {

Expand All @@ -45,6 +48,9 @@ class Editor : public QObject
virtual Document *currentDocument() const = 0;

virtual QWidget *editorWidget() const = 0;

virtual QList<QToolBar*> toolBars() const = 0;
virtual QList<QDockWidget*> dockWidgets() const = 0;
};

} // namespace Internal
Expand Down
49 changes: 36 additions & 13 deletions src/tiled/mainwindow.cpp
Expand Up @@ -84,6 +84,7 @@
#include <QSessionManager>
#include <QShortcut>
#include <QTextStream>
#include <QToolBar>
#include <QToolButton>
#include <QUndoGroup>
#include <QUndoStack>
Expand Down Expand Up @@ -145,16 +146,16 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags)
undoAction->setIcon(undoIcon);
connect(undoGroup, SIGNAL(cleanChanged(bool)), SLOT(updateWindowTitle()));

UndoDock *undoDock = new UndoDock(undoGroup, this);
mUndoDock = new UndoDock(undoGroup, this);
addDockWidget(Qt::BottomDockWidgetArea, mConsoleDock);
addDockWidget(Qt::LeftDockWidgetArea, undoDock);
addDockWidget(Qt::LeftDockWidgetArea, mUndoDock);

// tabifyDockWidget(undoDock, mMapsDock);
// tabifyDockWidget(tileStampsDock, undoDock);

// These dock widgets may not be immediately useful to many people, so
// they are hidden by default.
undoDock->setVisible(false);
mUndoDock->setVisible(false);
mConsoleDock->setVisible(false);

// mUi->actionNew->setShortcuts(QKeySequence::New);
Expand Down Expand Up @@ -370,7 +371,9 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags)

// Add the 'Views and Toolbars' submenu. This needs to happen after all
// the dock widgets and toolbars have been added to the main window.
mViewsAndToolbarsMenu = new QAction(tr("Views and Toolbars"), this);
mViewsAndToolbarsMenu = new QMenu(this);
mViewsAndToolbarsAction = new QAction(tr("Views and Toolbars"), this);
mViewsAndToolbarsAction->setMenu(mViewsAndToolbarsMenu);
mShowObjectTypesEditor = new QAction(tr("Object Types Editor"), this);
mShowObjectTypesEditor->setCheckable(true);
mShowTileAnimationEditor = new QAction(tr("Tile Animation Editor"), this);
Expand All @@ -379,15 +382,15 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags flags)
mShowTileCollisionEditor->setCheckable(true);
mShowTileCollisionEditor->setShortcut(tr("Ctrl+Shift+O"));
mShowTileCollisionEditor->setShortcutContext(Qt::ApplicationShortcut);
QMenu *popupMenu = createPopupMenu();
popupMenu->setParent(this);
mViewsAndToolbarsMenu->setMenu(popupMenu);
mUi->menuView->insertAction(mUi->actionShowGrid, mViewsAndToolbarsMenu);
mUi->menuView->insertAction(mUi->actionShowGrid, mViewsAndToolbarsAction);
mUi->menuView->insertAction(mUi->actionShowGrid, mShowObjectTypesEditor);
mUi->menuView->insertAction(mUi->actionShowGrid, mShowTileAnimationEditor);
mUi->menuView->insertAction(mUi->actionShowGrid, mShowTileCollisionEditor);
mUi->menuView->insertSeparator(mUi->actionShowGrid);

connect(mViewsAndToolbarsMenu, &QMenu::aboutToShow,
this, &MainWindow::updateViewsAndToolbarsMenu);

connect(mShowObjectTypesEditor, SIGNAL(toggled(bool)),
mObjectTypesEditor, SLOT(setVisible(bool)));
connect(mObjectTypesEditor, SIGNAL(closed()), SLOT(onObjectTypesEditorClosed()));
Expand Down Expand Up @@ -1453,19 +1456,39 @@ void MainWindow::updateRecentFiles()
QStringList files = recentFiles();
const int numRecentFiles = qMin(files.size(), (int) MaxRecentFiles);

for (int i = 0; i < numRecentFiles; ++i)
{
for (int i = 0; i < numRecentFiles; ++i) {
mRecentFiles[i]->setText(QFileInfo(files[i]).fileName());
mRecentFiles[i]->setData(files[i]);
mRecentFiles[i]->setVisible(true);
}
for (int j = numRecentFiles; j < MaxRecentFiles; ++j)
{
for (int j = numRecentFiles; j < MaxRecentFiles; ++j) {
mRecentFiles[j]->setVisible(false);
}
mUi->menuRecentFiles->setEnabled(numRecentFiles > 0);
}

void MainWindow::updateViewsAndToolbarsMenu()
{
mViewsAndToolbarsMenu->clear();

mViewsAndToolbarsMenu->addAction(mUndoDock->toggleViewAction());
mViewsAndToolbarsMenu->addAction(mConsoleDock->toggleViewAction());

if (Editor *editor = mDocumentManager->currentEditor()) {
mViewsAndToolbarsMenu->addSeparator();

const auto dockWidgets = editor->dockWidgets();
for (auto dockWidget : dockWidgets)
mViewsAndToolbarsMenu->addAction(dockWidget->toggleViewAction());

mViewsAndToolbarsMenu->addSeparator();

const auto toolBars = editor->toolBars();
for (auto toolBar : toolBars)
mViewsAndToolbarsMenu->addAction(toolBar->toggleViewAction());
}
}

void MainWindow::updateActions()
{
Document *document = mDocumentManager->currentDocument();
Expand Down Expand Up @@ -1606,7 +1629,7 @@ void MainWindow::retranslateUi()

// mRandomButton->setToolTip(tr("Random Mode"));
mLayerMenu->setTitle(tr("&Layer"));
mViewsAndToolbarsMenu->setText(tr("Views and Toolbars"));
mViewsAndToolbarsAction->setText(tr("Views and Toolbars"));
mShowTileAnimationEditor->setText(tr("Tile Animation Editor"));
mShowTileCollisionEditor->setText(tr("Tile Collision Editor"));
mActionHandler->retranslateUi();
Expand Down
6 changes: 5 additions & 1 deletion src/tiled/mainwindow.h
Expand Up @@ -192,12 +192,15 @@ private slots:
void setRecentFile(const QString &fileName);
void updateRecentFiles();

void updateViewsAndToolbarsMenu();

void retranslateUi();

Ui::MainWindow *mUi;
MapDocument *mMapDocument;
MapDocumentActionHandler *mActionHandler;
ConsoleDock *mConsoleDock;
QDockWidget *mUndoDock;
ObjectTypesEditor *mObjectTypesEditor;
QSettings mSettings;
QToolButton *mRandomButton;
Expand All @@ -207,7 +210,8 @@ private slots:
QAction *mRecentFiles[MaxRecentFiles];

QMenu *mLayerMenu;
QAction *mViewsAndToolbarsMenu;
QMenu *mViewsAndToolbarsMenu;
QAction *mViewsAndToolbarsAction;
QAction *mShowObjectTypesEditor;
QAction *mShowTileAnimationEditor;
QAction *mShowTileCollisionEditor;
Expand Down
30 changes: 26 additions & 4 deletions src/tiled/mapeditor.cpp
Expand Up @@ -264,7 +264,7 @@ MapEditor::MapEditor(QObject *parent)
mMainWindow->addToolBar(mToolsToolBar);

mPropertiesDock = new PropertiesDock(mMainWindow);
TileStampsDock *tileStampsDock = new TileStampsDock(mTileStampManager, mMainWindow);
mTileStampsDock = new TileStampsDock(mTileStampManager, mMainWindow);

mMainWindow->addDockWidget(Qt::RightDockWidgetArea, mLayerDock);
mMainWindow->addDockWidget(Qt::LeftDockWidgetArea, mPropertiesDock);
Expand All @@ -273,14 +273,14 @@ MapEditor::MapEditor(QObject *parent)
mMainWindow->addDockWidget(Qt::RightDockWidgetArea, mMiniMapDock);
mMainWindow->addDockWidget(Qt::RightDockWidgetArea, mTerrainDock);
mMainWindow->addDockWidget(Qt::RightDockWidgetArea, mTilesetDock);
mMainWindow->addDockWidget(Qt::LeftDockWidgetArea, tileStampsDock);
mMainWindow->addDockWidget(Qt::LeftDockWidgetArea, mTileStampsDock);

mMainWindow->tabifyDockWidget(mMiniMapDock, mObjectsDock);
mMainWindow->tabifyDockWidget(mObjectsDock, mLayerDock);
mMainWindow->tabifyDockWidget(mTerrainDock, mTilesetDock);

mMapsDock->setVisible(false);
tileStampsDock->setVisible(false);
mTileStampsDock->setVisible(false);

mLayerComboBox->setMinimumContentsLength(10);
mLayerComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
Expand All @@ -307,7 +307,7 @@ MapEditor::MapEditor(QObject *parent)
connect(mTerrainBrush, &TerrainBrush::terrainCaptured,
mTerrainDock, &TerrainDock::setCurrentTerrain);

connect(tileStampsDock, SIGNAL(setStamp(TileStamp)),
connect(mTileStampsDock, SIGNAL(setStamp(TileStamp)),
this, SLOT(setStamp(TileStamp)));

setSelectedTool(mToolManager->selectedTool());
Expand Down Expand Up @@ -495,6 +495,28 @@ QWidget *MapEditor::editorWidget() const
return mMainWindow;
}

QList<QToolBar *> MapEditor::toolBars() const
{
return QList<QToolBar*> {
mMainToolBar,
mToolsToolBar
};
}

QList<QDockWidget *> MapEditor::dockWidgets() const
{
return QList<QDockWidget*> {
mPropertiesDock,
mLayerDock,
mMapsDock,
mObjectsDock,
mTilesetDock,
mTerrainDock,
mMiniMapDock,
mTileStampsDock
};
}

MapView *MapEditor::viewForDocument(MapDocument *mapDocument) const
{
MapViewContainer *container = mWidgetForMap.value(mapDocument);
Expand Down
4 changes: 4 additions & 0 deletions src/tiled/mapeditor.h
Expand Up @@ -79,6 +79,9 @@ class MapEditor : public Editor

QWidget *editorWidget() const override;

QList<QToolBar *> toolBars() const override;
QList<QDockWidget *> dockWidgets() const override;

MapView *viewForDocument(MapDocument *mapDocument) const;
MapView *currentMapView() const;

Expand Down Expand Up @@ -129,6 +132,7 @@ private slots:
TilesetDock *mTilesetDock;
TerrainDock *mTerrainDock;
MiniMapDock* mMiniMapDock;
QDockWidget *mTileStampsDock;
QComboBox *mLayerComboBox;
Zoomable *mZoomable;
QComboBox *mZoomComboBox;
Expand Down
19 changes: 18 additions & 1 deletion src/tiled/tileseteditor.cpp
Expand Up @@ -105,6 +105,7 @@ class SetTerrainImage : public QUndoCommand
TilesetEditor::TilesetEditor(QObject *parent)
: Editor(parent)
, mMainWindow(new QMainWindow)
, mMainToolBar(new MainToolBar(mMainWindow))
, mWidgetStack(new QStackedWidget(mMainWindow))
, mAddTiles(new QAction(this))
, mRemoveTiles(new QAction(this))
Expand All @@ -125,7 +126,7 @@ TilesetEditor::TilesetEditor(QObject *parent)
#endif
mMainWindow->setDockNestingEnabled(true);
mMainWindow->setCentralWidget(mWidgetStack);
mMainWindow->addToolBar(new MainToolBar(mMainWindow));
mMainWindow->addToolBar(mMainToolBar);
mMainWindow->addDockWidget(Qt::LeftDockWidgetArea, mPropertiesDock);
mMainWindow->addDockWidget(Qt::RightDockWidgetArea, mTerrainDock);

Expand Down Expand Up @@ -273,6 +274,22 @@ QWidget *TilesetEditor::editorWidget() const
return mMainWindow;
}

QList<QToolBar *> TilesetEditor::toolBars() const
{
return QList<QToolBar*> {
mMainToolBar,
mTilesetToolBar
};
}

QList<QDockWidget *> TilesetEditor::dockWidgets() const
{
return QList<QDockWidget*> {
mPropertiesDock,
mTerrainDock
};
}

TilesetView *TilesetEditor::currentTilesetView() const
{
return static_cast<TilesetView*>(mWidgetStack->currentWidget());
Expand Down
4 changes: 4 additions & 0 deletions src/tiled/tileseteditor.h
Expand Up @@ -65,6 +65,9 @@ class TilesetEditor : public Editor

QWidget *editorWidget() const override;

QList<QToolBar *> toolBars() const override;
QList<QDockWidget *> dockWidgets() const override;

TilesetView *currentTilesetView() const;
Tileset *currentTileset() const;

Expand Down Expand Up @@ -101,6 +104,7 @@ private slots:
void retranslateUi();

QMainWindow *mMainWindow;
QToolBar *mMainToolBar;
QStackedWidget *mWidgetStack;
QToolBar *mTilesetToolBar;

Expand Down

0 comments on commit 6e694a9

Please sign in to comment.