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 "GeneratorSetupDlg.h"
|
||||
#include "GeneratorSetup.h"
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#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),
|
||||
m_IniFile(new cIniFile())
|
||||
{
|
||||
// The generator name is in a separate form layout at the top, always present:
|
||||
m_cbGenerator = new QComboBox();
|
||||
m_cbGenerator->setMinimumWidth(300);
|
||||
m_cbGenerator->setMinimumWidth(120);
|
||||
for (size_t i = 0; i < ARRAYCOUNT(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->addLayout(nameLayout);
|
||||
m_MainLayout->addLayout(m_FormLayout);
|
||||
m_MainLayout->addStretch();
|
||||
setLayout(m_MainLayout);
|
||||
|
||||
// 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:
|
||||
{
|
||||
@ -78,7 +79,7 @@ void GeneratorSetupDlg::generatorChanged(const QString & a_NewName)
|
||||
|
||||
// Re-create the layout:
|
||||
m_FormLayout = new QFormLayout();
|
||||
m_MainLayout->addLayout(m_FormLayout);
|
||||
m_MainLayout->insertLayout(1, m_FormLayout);
|
||||
|
||||
// Recreate the INI file:
|
||||
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");
|
||||
if (keyID <= -1)
|
||||
@ -105,6 +106,8 @@ void GeneratorSetupDlg::updateFromIni()
|
||||
return;
|
||||
}
|
||||
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++)
|
||||
{
|
||||
AString itemName = m_IniFile->GetValueName(keyID, i);
|
||||
@ -114,6 +117,13 @@ void GeneratorSetupDlg::updateFromIni()
|
||||
// These special cases are not to be added
|
||||
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();
|
||||
edit->setText(QString::fromStdString(itemValue));
|
||||
m_FormLayout->addRow(new QLabel(QString::fromStdString(itemName)), edit);
|
@ -11,21 +11,25 @@
|
||||
|
||||
|
||||
class cIniFile;
|
||||
typedef std::shared_ptr<cIniFile> cIniFilePtr;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class GeneratorSetupDlg :
|
||||
public QDialog
|
||||
class GeneratorSetup :
|
||||
public QWidget
|
||||
{
|
||||
typedef QDialog super;
|
||||
typedef QWidget super;
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
/** Creates the dialog and loads the contents of the INI file, if not empty. */
|
||||
explicit GeneratorSetupDlg(const std::string & a_IniFileName, QWidget * parent = nullptr);
|
||||
/** Creates the widget and loads the contents of the INI file, if not empty. */
|
||||
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:
|
||||
|
||||
@ -39,7 +43,7 @@ protected:
|
||||
QVBoxLayout * m_MainLayout;
|
||||
QFormLayout * m_FormLayout;
|
||||
|
||||
std::unique_ptr<cIniFile> m_IniFile;
|
||||
cIniFilePtr m_IniFile;
|
||||
|
||||
int m_Seed;
|
||||
|
@ -12,19 +12,27 @@
|
||||
#include "Generating/BioGen.h"
|
||||
#include "StringCompression.h"
|
||||
#include "WorldStorage/FastNBT.h"
|
||||
#include "GeneratorSetupDlg.h"
|
||||
#include "GeneratorSetup.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MainWindow::MainWindow(QWidget * parent) :
|
||||
QMainWindow(parent)
|
||||
QMainWindow(parent),
|
||||
m_GeneratorSetup(nullptr),
|
||||
m_LineSeparator(nullptr)
|
||||
{
|
||||
initMinecraftPath();
|
||||
|
||||
m_BiomeView = new BiomeView(this);
|
||||
setCentralWidget(m_BiomeView);
|
||||
m_BiomeView = new 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();
|
||||
createMenus();
|
||||
@ -48,9 +56,7 @@ void MainWindow::newGenerator()
|
||||
// TODO
|
||||
|
||||
// (Re-)open the generator setup dialog:
|
||||
m_GeneratorSetupDlg.reset(new GeneratorSetupDlg(""));
|
||||
m_GeneratorSetupDlg->show();
|
||||
m_GeneratorSetupDlg->raise();
|
||||
openGeneratorSetup("");
|
||||
|
||||
// TODO
|
||||
}
|
||||
@ -69,9 +75,7 @@ void MainWindow::openGenerator()
|
||||
}
|
||||
|
||||
// (Re-)open the generator setup dialog:
|
||||
m_GeneratorSetupDlg.reset(new GeneratorSetupDlg(worldIni.toStdString()));
|
||||
m_GeneratorSetupDlg->show();
|
||||
m_GeneratorSetupDlg->raise();
|
||||
openGeneratorSetup(worldIni.toStdString());
|
||||
|
||||
// Set the chunk source:
|
||||
m_BiomeView->setChunkSource(std::shared_ptr<BioGenSource>(new BioGenSource(worldIni)));
|
||||
@ -92,11 +96,7 @@ void MainWindow::openWorld()
|
||||
}
|
||||
|
||||
// Remove the generator setup dialog, if open:
|
||||
if (m_GeneratorSetupDlg.get() != nullptr)
|
||||
{
|
||||
m_GeneratorSetupDlg->hide();
|
||||
m_GeneratorSetupDlg.reset(nullptr);
|
||||
}
|
||||
closeGeneratorSetup();
|
||||
|
||||
// Set the chunk source:
|
||||
m_BiomeView->setChunkSource(std::shared_ptr<AnvilSource>(new AnvilSource(regionFolder)));
|
||||
@ -117,11 +117,7 @@ void MainWindow::openVanillaWorld()
|
||||
}
|
||||
|
||||
// Remove the generator setup dialog, if open:
|
||||
if (m_GeneratorSetupDlg.get() != nullptr)
|
||||
{
|
||||
m_GeneratorSetupDlg->hide();
|
||||
m_GeneratorSetupDlg.reset(nullptr);
|
||||
}
|
||||
closeGeneratorSetup();
|
||||
|
||||
// Set the chunk source:
|
||||
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 <QList>
|
||||
#include <QMainWindow>
|
||||
#include <QHBoxLayout>
|
||||
#include "BiomeView.h"
|
||||
|
||||
|
||||
@ -10,7 +11,7 @@
|
||||
|
||||
|
||||
// fwd:
|
||||
class GeneratorSetupDlg;
|
||||
class GeneratorSetup;
|
||||
|
||||
|
||||
|
||||
@ -21,8 +22,6 @@ class MainWindow :
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
BiomeView * m_BiomeView;
|
||||
|
||||
public:
|
||||
MainWindow(QWidget * parent = nullptr);
|
||||
~MainWindow();
|
||||
@ -54,8 +53,17 @@ protected:
|
||||
/** Path to the vanilla folder. */
|
||||
QString m_MinecraftPath;
|
||||
|
||||
/** The dialog for setting up the generator. */
|
||||
std::unique_ptr<GeneratorSetupDlg> m_GeneratorSetupDlg;
|
||||
/** The pane for setting up the generator, available when visualising a generator. */
|
||||
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 */
|
||||
@ -73,6 +81,12 @@ protected:
|
||||
/** 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. */
|
||||
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/uncompr.c \
|
||||
../../lib/zlib/zutil.c \
|
||||
GeneratorSetupDlg.cpp
|
||||
GeneratorSetup.cpp
|
||||
|
||||
HEADERS += MainWindow.h \
|
||||
Globals.h \
|
||||
@ -80,7 +80,7 @@ HEADERS += MainWindow.h \
|
||||
../../lib/zlib/zconf.h \
|
||||
../../lib/zlib/zlib.h \
|
||||
../../lib/zlib/zutil.h \
|
||||
GeneratorSetupDlg.h
|
||||
GeneratorSetup.h
|
||||
|
||||
INCLUDEPATH += $$_PRO_FILE_PWD_ \
|
||||
$$_PRO_FILE_PWD_/../../src \
|
||||
|
Loading…
Reference in New Issue
Block a user