QtBiomeVisualiser: Moved the generator setup into a side-pane.
This commit is contained in:
parent
5f823fd18d
commit
10c5d50566
@ -1,5 +1,5 @@
|
|||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "GeneratorSetupDlg.h"
|
#include "GeneratorSetup.h"
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include "Generating/BioGen.h"
|
#include "Generating/BioGen.h"
|
||||||
@ -23,13 +23,13 @@ static const QString s_GeneratorNames[] =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
GeneratorSetupDlg::GeneratorSetupDlg(const AString & a_IniFileName, QWidget * a_Parent) :
|
GeneratorSetup::GeneratorSetup(const AString & a_IniFileName, QWidget * a_Parent) :
|
||||||
super(a_Parent),
|
super(a_Parent),
|
||||||
m_IniFile(new cIniFile())
|
m_IniFile(new cIniFile())
|
||||||
{
|
{
|
||||||
// The generator name is in a separate form layout at the top, always present:
|
// The generator name is in a separate form layout at the top, always present:
|
||||||
m_cbGenerator = new QComboBox();
|
m_cbGenerator = new QComboBox();
|
||||||
m_cbGenerator->setMinimumWidth(300);
|
m_cbGenerator->setMinimumWidth(120);
|
||||||
for (size_t i = 0; i < ARRAYCOUNT(s_GeneratorNames); i++)
|
for (size_t i = 0; i < ARRAYCOUNT(s_GeneratorNames); i++)
|
||||||
{
|
{
|
||||||
m_cbGenerator->addItem(s_GeneratorNames[i]);
|
m_cbGenerator->addItem(s_GeneratorNames[i]);
|
||||||
@ -44,6 +44,7 @@ GeneratorSetupDlg::GeneratorSetupDlg(const AString & a_IniFileName, QWidget * a_
|
|||||||
m_MainLayout = new QVBoxLayout();
|
m_MainLayout = new QVBoxLayout();
|
||||||
m_MainLayout->addLayout(nameLayout);
|
m_MainLayout->addLayout(nameLayout);
|
||||||
m_MainLayout->addLayout(m_FormLayout);
|
m_MainLayout->addLayout(m_FormLayout);
|
||||||
|
m_MainLayout->addStretch();
|
||||||
setLayout(m_MainLayout);
|
setLayout(m_MainLayout);
|
||||||
|
|
||||||
// Load the INI file, if specified, otherwise set defaults:
|
// Load the INI file, if specified, otherwise set defaults:
|
||||||
@ -68,7 +69,7 @@ GeneratorSetupDlg::GeneratorSetupDlg(const AString & a_IniFileName, QWidget * a_
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GeneratorSetupDlg::generatorChanged(const QString & a_NewName)
|
void GeneratorSetup::generatorChanged(const QString & a_NewName)
|
||||||
{
|
{
|
||||||
// Clear the current contents of the form layout by assigning it to a stack temporary:
|
// Clear the current contents of the form layout by assigning it to a stack temporary:
|
||||||
{
|
{
|
||||||
@ -78,7 +79,7 @@ void GeneratorSetupDlg::generatorChanged(const QString & a_NewName)
|
|||||||
|
|
||||||
// Re-create the layout:
|
// Re-create the layout:
|
||||||
m_FormLayout = new QFormLayout();
|
m_FormLayout = new QFormLayout();
|
||||||
m_MainLayout->addLayout(m_FormLayout);
|
m_MainLayout->insertLayout(1, m_FormLayout);
|
||||||
|
|
||||||
// Recreate the INI file:
|
// Recreate the INI file:
|
||||||
m_IniFile->Clear();
|
m_IniFile->Clear();
|
||||||
@ -97,7 +98,7 @@ void GeneratorSetupDlg::generatorChanged(const QString & a_NewName)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void GeneratorSetupDlg::updateFromIni()
|
void GeneratorSetup::updateFromIni()
|
||||||
{
|
{
|
||||||
int keyID = m_IniFile->FindKey("Generator");
|
int keyID = m_IniFile->FindKey("Generator");
|
||||||
if (keyID <= -1)
|
if (keyID <= -1)
|
||||||
@ -105,6 +106,8 @@ void GeneratorSetupDlg::updateFromIni()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int numItems = m_IniFile->GetNumValues(keyID);
|
int numItems = m_IniFile->GetNumValues(keyID);
|
||||||
|
AString generatorName = m_IniFile->GetValue("Generator", "BiomeGen");
|
||||||
|
size_t generatorNameLen = generatorName.length();
|
||||||
for (int i = 0; i < numItems; i++)
|
for (int i = 0; i < numItems; i++)
|
||||||
{
|
{
|
||||||
AString itemName = m_IniFile->GetValueName(keyID, i);
|
AString itemName = m_IniFile->GetValueName(keyID, i);
|
||||||
@ -114,6 +117,13 @@ void GeneratorSetupDlg::updateFromIni()
|
|||||||
// These special cases are not to be added
|
// These special cases are not to be added
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove the generator name prefix from the item name, for clarity purposes:
|
||||||
|
if (NoCaseCompare(itemName.substr(0, generatorNameLen), generatorName) == 0)
|
||||||
|
{
|
||||||
|
itemName.erase(0, generatorNameLen);
|
||||||
|
}
|
||||||
|
|
||||||
QLineEdit * edit = new QLineEdit();
|
QLineEdit * edit = new QLineEdit();
|
||||||
edit->setText(QString::fromStdString(itemValue));
|
edit->setText(QString::fromStdString(itemValue));
|
||||||
m_FormLayout->addRow(new QLabel(QString::fromStdString(itemName)), edit);
|
m_FormLayout->addRow(new QLabel(QString::fromStdString(itemName)), edit);
|
@ -11,21 +11,25 @@
|
|||||||
|
|
||||||
|
|
||||||
class cIniFile;
|
class cIniFile;
|
||||||
|
typedef std::shared_ptr<cIniFile> cIniFilePtr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class GeneratorSetupDlg :
|
class GeneratorSetup :
|
||||||
public QDialog
|
public QWidget
|
||||||
{
|
{
|
||||||
typedef QDialog super;
|
typedef QWidget super;
|
||||||
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/** Creates the dialog and loads the contents of the INI file, if not empty. */
|
/** Creates the widget and loads the contents of the INI file, if not empty. */
|
||||||
explicit GeneratorSetupDlg(const std::string & a_IniFileName, QWidget * parent = nullptr);
|
explicit GeneratorSetup(const std::string & a_IniFileName, QWidget * parent = nullptr);
|
||||||
|
|
||||||
|
/** Returns the cIniFile instance that is being edited by this widget. */
|
||||||
|
cIniFilePtr getIniFile() { return m_IniFile; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
@ -39,7 +43,7 @@ protected:
|
|||||||
QVBoxLayout * m_MainLayout;
|
QVBoxLayout * m_MainLayout;
|
||||||
QFormLayout * m_FormLayout;
|
QFormLayout * m_FormLayout;
|
||||||
|
|
||||||
std::unique_ptr<cIniFile> m_IniFile;
|
cIniFilePtr m_IniFile;
|
||||||
|
|
||||||
int m_Seed;
|
int m_Seed;
|
||||||
|
|
@ -12,19 +12,27 @@
|
|||||||
#include "Generating/BioGen.h"
|
#include "Generating/BioGen.h"
|
||||||
#include "StringCompression.h"
|
#include "StringCompression.h"
|
||||||
#include "WorldStorage/FastNBT.h"
|
#include "WorldStorage/FastNBT.h"
|
||||||
#include "GeneratorSetupDlg.h"
|
#include "GeneratorSetup.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget * parent) :
|
MainWindow::MainWindow(QWidget * parent) :
|
||||||
QMainWindow(parent)
|
QMainWindow(parent),
|
||||||
|
m_GeneratorSetup(nullptr),
|
||||||
|
m_LineSeparator(nullptr)
|
||||||
{
|
{
|
||||||
initMinecraftPath();
|
initMinecraftPath();
|
||||||
|
|
||||||
m_BiomeView = new BiomeView(this);
|
m_BiomeView = new BiomeView();
|
||||||
setCentralWidget(m_BiomeView);
|
m_MainLayout = new QHBoxLayout();
|
||||||
|
m_MainLayout->addWidget(m_BiomeView);
|
||||||
|
m_MainLayout->setMenuBar(menuBar());
|
||||||
|
m_MainLayout->setMargin(0);
|
||||||
|
QWidget * central = new QWidget();
|
||||||
|
central->setLayout(m_MainLayout);
|
||||||
|
setCentralWidget(central);
|
||||||
|
|
||||||
createActions();
|
createActions();
|
||||||
createMenus();
|
createMenus();
|
||||||
@ -48,9 +56,7 @@ void MainWindow::newGenerator()
|
|||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
// (Re-)open the generator setup dialog:
|
// (Re-)open the generator setup dialog:
|
||||||
m_GeneratorSetupDlg.reset(new GeneratorSetupDlg(""));
|
openGeneratorSetup("");
|
||||||
m_GeneratorSetupDlg->show();
|
|
||||||
m_GeneratorSetupDlg->raise();
|
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
@ -69,9 +75,7 @@ void MainWindow::openGenerator()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// (Re-)open the generator setup dialog:
|
// (Re-)open the generator setup dialog:
|
||||||
m_GeneratorSetupDlg.reset(new GeneratorSetupDlg(worldIni.toStdString()));
|
openGeneratorSetup(worldIni.toStdString());
|
||||||
m_GeneratorSetupDlg->show();
|
|
||||||
m_GeneratorSetupDlg->raise();
|
|
||||||
|
|
||||||
// Set the chunk source:
|
// Set the chunk source:
|
||||||
m_BiomeView->setChunkSource(std::shared_ptr<BioGenSource>(new BioGenSource(worldIni)));
|
m_BiomeView->setChunkSource(std::shared_ptr<BioGenSource>(new BioGenSource(worldIni)));
|
||||||
@ -92,11 +96,7 @@ void MainWindow::openWorld()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove the generator setup dialog, if open:
|
// Remove the generator setup dialog, if open:
|
||||||
if (m_GeneratorSetupDlg.get() != nullptr)
|
closeGeneratorSetup();
|
||||||
{
|
|
||||||
m_GeneratorSetupDlg->hide();
|
|
||||||
m_GeneratorSetupDlg.reset(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the chunk source:
|
// Set the chunk source:
|
||||||
m_BiomeView->setChunkSource(std::shared_ptr<AnvilSource>(new AnvilSource(regionFolder)));
|
m_BiomeView->setChunkSource(std::shared_ptr<AnvilSource>(new AnvilSource(regionFolder)));
|
||||||
@ -117,11 +117,7 @@ void MainWindow::openVanillaWorld()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove the generator setup dialog, if open:
|
// Remove the generator setup dialog, if open:
|
||||||
if (m_GeneratorSetupDlg.get() != nullptr)
|
closeGeneratorSetup();
|
||||||
{
|
|
||||||
m_GeneratorSetupDlg->hide();
|
|
||||||
m_GeneratorSetupDlg.reset(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the chunk source:
|
// Set the chunk source:
|
||||||
m_BiomeView->setChunkSource(std::shared_ptr<AnvilSource>(new AnvilSource(action->data().toString())));
|
m_BiomeView->setChunkSource(std::shared_ptr<AnvilSource>(new AnvilSource(action->data().toString())));
|
||||||
@ -276,3 +272,36 @@ QString MainWindow::getWorldName(const AString & a_Path)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::openGeneratorSetup(const AString & a_IniFileName)
|
||||||
|
{
|
||||||
|
// Close any previous editor:
|
||||||
|
closeGeneratorSetup();
|
||||||
|
|
||||||
|
// Open up a new editor:
|
||||||
|
m_GeneratorSetup = new GeneratorSetup(a_IniFileName);
|
||||||
|
m_LineSeparator = new QWidget();
|
||||||
|
m_LineSeparator->setFixedWidth(2);
|
||||||
|
m_LineSeparator->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
|
||||||
|
m_LineSeparator->setStyleSheet(QString("background-color: #c0c0c0;"));
|
||||||
|
m_MainLayout->addWidget(m_LineSeparator);
|
||||||
|
m_MainLayout->addWidget(m_GeneratorSetup);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::closeGeneratorSetup()
|
||||||
|
{
|
||||||
|
delete m_MainLayout->takeAt(2);
|
||||||
|
delete m_MainLayout->takeAt(1);
|
||||||
|
delete m_GeneratorSetup;
|
||||||
|
delete m_LineSeparator;
|
||||||
|
m_GeneratorSetup = nullptr;
|
||||||
|
m_LineSeparator = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QHBoxLayout>
|
||||||
#include "BiomeView.h"
|
#include "BiomeView.h"
|
||||||
|
|
||||||
|
|
||||||
@ -10,7 +11,7 @@
|
|||||||
|
|
||||||
|
|
||||||
// fwd:
|
// fwd:
|
||||||
class GeneratorSetupDlg;
|
class GeneratorSetup;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -21,8 +22,6 @@ class MainWindow :
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
BiomeView * m_BiomeView;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainWindow(QWidget * parent = nullptr);
|
MainWindow(QWidget * parent = nullptr);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
@ -54,8 +53,17 @@ protected:
|
|||||||
/** Path to the vanilla folder. */
|
/** Path to the vanilla folder. */
|
||||||
QString m_MinecraftPath;
|
QString m_MinecraftPath;
|
||||||
|
|
||||||
/** The dialog for setting up the generator. */
|
/** The pane for setting up the generator, available when visualising a generator. */
|
||||||
std::unique_ptr<GeneratorSetupDlg> m_GeneratorSetupDlg;
|
GeneratorSetup * m_GeneratorSetup;
|
||||||
|
|
||||||
|
/** The main biome display widget. */
|
||||||
|
BiomeView * m_BiomeView;
|
||||||
|
|
||||||
|
/** The layout for the window. */
|
||||||
|
QHBoxLayout * m_MainLayout;
|
||||||
|
|
||||||
|
/** The separator line between biome view and generator setup. */
|
||||||
|
QWidget * m_LineSeparator;
|
||||||
|
|
||||||
|
|
||||||
/** Initializes the m_MinecraftPath based on the proper MC path */
|
/** Initializes the m_MinecraftPath based on the proper MC path */
|
||||||
@ -73,6 +81,12 @@ protected:
|
|||||||
/** Returns the name of the vanilla world in the specified path.
|
/** Returns the name of the vanilla world in the specified path.
|
||||||
Reads the level.dat file for the name. Returns an empty string on failure. */
|
Reads the level.dat file for the name. Returns an empty string on failure. */
|
||||||
QString getWorldName(const AString & a_Path);
|
QString getWorldName(const AString & a_Path);
|
||||||
|
|
||||||
|
/** Opens the generator setup pane, if not already open, and loads the specified INI file to it. */
|
||||||
|
void openGeneratorSetup(const AString & a_IniFileName);
|
||||||
|
|
||||||
|
/** Closes and destroys the generator setup pane, if there is one. */
|
||||||
|
void closeGeneratorSetup();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ SOURCES += main.cpp\
|
|||||||
../../lib/zlib/trees.c \
|
../../lib/zlib/trees.c \
|
||||||
../../lib/zlib/uncompr.c \
|
../../lib/zlib/uncompr.c \
|
||||||
../../lib/zlib/zutil.c \
|
../../lib/zlib/zutil.c \
|
||||||
GeneratorSetupDlg.cpp
|
GeneratorSetup.cpp
|
||||||
|
|
||||||
HEADERS += MainWindow.h \
|
HEADERS += MainWindow.h \
|
||||||
Globals.h \
|
Globals.h \
|
||||||
@ -80,7 +80,7 @@ HEADERS += MainWindow.h \
|
|||||||
../../lib/zlib/zconf.h \
|
../../lib/zlib/zconf.h \
|
||||||
../../lib/zlib/zlib.h \
|
../../lib/zlib/zlib.h \
|
||||||
../../lib/zlib/zutil.h \
|
../../lib/zlib/zutil.h \
|
||||||
GeneratorSetupDlg.h
|
GeneratorSetup.h
|
||||||
|
|
||||||
INCLUDEPATH += $$_PRO_FILE_PWD_ \
|
INCLUDEPATH += $$_PRO_FILE_PWD_ \
|
||||||
$$_PRO_FILE_PWD_/../../src \
|
$$_PRO_FILE_PWD_/../../src \
|
||||||
|
Loading…
Reference in New Issue
Block a user