1
0

QtBiomeVisualiser: Added reloading.

This commit is contained in:
Mattes D 2014-09-15 17:29:34 +02:00
parent 84947a22ad
commit 21b70f17c2
6 changed files with 49 additions and 4 deletions

View File

@ -131,6 +131,21 @@ void BiomeView::chunkAvailable(int a_ChunkX, int a_ChunkZ)
void BiomeView::reload()
{
if (!hasData())
{
return;
}
m_Cache.reload();
redraw();
}
void BiomeView::drawChunk(int a_ChunkX, int a_ChunkZ) void BiomeView::drawChunk(int a_ChunkX, int a_ChunkZ)
{ {
if (!hasData()) if (!hasData())

View File

@ -33,6 +33,9 @@ public slots:
/** A specified chunk has become available, redraw it. */ /** A specified chunk has become available, redraw it. */
void chunkAvailable(int a_ChunkX, int a_ChunkZ); void chunkAvailable(int a_ChunkX, int a_ChunkZ);
/** Reloads the current chunk source and redraws the entire workspace. */
void reload();
protected: protected:
double m_X, m_Z; double m_X, m_Z;
double m_Zoom; double m_Zoom;

View File

@ -76,6 +76,22 @@ void ChunkCache::setChunkSource(std::shared_ptr<ChunkSource> a_ChunkSource)
void ChunkCache::reload()
{
assert(m_ChunkSource.get() != nullptr);
// Reload the chunk source:
m_ChunkSource->reload();
// Clear the cache:
QMutexLocker lock(&m_Mtx);
m_Cache.clear();
}
void ChunkCache::gotChunk(int a_ChunkX, int a_ChunkZ) void ChunkCache::gotChunk(int a_ChunkX, int a_ChunkZ)
{ {
emit chunkAvailable(a_ChunkX, a_ChunkZ); emit chunkAvailable(a_ChunkX, a_ChunkZ);

View File

@ -36,7 +36,10 @@ public:
void setChunkSource(std::shared_ptr<ChunkSource> a_ChunkSource); void setChunkSource(std::shared_ptr<ChunkSource> a_ChunkSource);
/** Returns true iff the chunk source has been initialized. */ /** Returns true iff the chunk source has been initialized. */
bool hasData(void) const { return (m_ChunkSource.get() != nullptr); } bool hasData() const { return (m_ChunkSource.get() != nullptr); }
/** Reloads the current chunk source. */
void reload();
signals: signals:
void chunkAvailable(int a_ChunkX, int a_ChunkZ); void chunkAvailable(int a_ChunkX, int a_ChunkZ);

View File

@ -16,11 +16,11 @@
MainWindow::MainWindow(QWidget * parent) : MainWindow::MainWindow(QWidget * parent) :
QMainWindow(parent) QMainWindow(parent)
{ {
createActions();
createMenus();
m_BiomeView = new BiomeView(this); m_BiomeView = new BiomeView(this);
setCentralWidget(m_BiomeView); setCentralWidget(m_BiomeView);
createActions();
createMenus();
} }
@ -68,6 +68,11 @@ void MainWindow::createActions()
m_actOpen->setStatusTip(tr("Open an existing world and display its biomes")); m_actOpen->setStatusTip(tr("Open an existing world and display its biomes"));
connect(m_actOpen, SIGNAL(triggered()), this, SLOT(open())); connect(m_actOpen, SIGNAL(triggered()), this, SLOT(open()));
m_actReload = new QAction(tr("&Reload"), this);
m_actReload->setShortcut(tr("F5"));
m_actReload->setStatusTip(tr("Open an existing world and display its biomes"));
connect(m_actReload, SIGNAL(triggered()), m_BiomeView, SLOT(reload()));
m_actExit = new QAction(tr("E&xit"), this); m_actExit = new QAction(tr("E&xit"), this);
m_actExit->setShortcut(tr("Alt+X")); m_actExit->setShortcut(tr("Alt+X"));
m_actExit->setStatusTip(tr("Exit %1").arg(QApplication::instance()->applicationName())); m_actExit->setStatusTip(tr("Exit %1").arg(QApplication::instance()->applicationName()));
@ -84,6 +89,8 @@ void MainWindow::createMenus()
mFile->addAction(m_actGen); mFile->addAction(m_actGen);
mFile->addAction(m_actOpen); mFile->addAction(m_actOpen);
mFile->addSeparator(); mFile->addSeparator();
mFile->addAction(m_actReload);
mFile->addSeparator();
mFile->addAction(m_actExit); mFile->addAction(m_actExit);
} }

View File

@ -29,6 +29,7 @@ protected:
// Actions: // Actions:
QAction * m_actGen; QAction * m_actGen;
QAction * m_actOpen; QAction * m_actOpen;
QAction * m_actReload;
QAction * m_actExit; QAction * m_actExit;