Rebekah Rowe 6c4b2e9186
Implement GPL3+ and Apache2.0 Dual License.
Commit is being made to allow additions of GPL3+ code previously
un-addable. With these changes, contributions back to cuberite are
possible with the backporting exemtion, as well as adding stuff in
minetest with minetest code properly being read through and implimented
to upgrade it to GPL3 from GPL2.

project still has Apache2.0 license and credits to all its contributers, but now has the freedom of GPL3+ and all the code that can be implimented and shared with it.
2023-03-20 11:49:56 -04:00

144 lines
3.6 KiB
C++

/*
* Copyright 2011-2022 Cuberite Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <memory>
#include <QList>
#include <QMainWindow>
#include <QHBoxLayout>
#include <QLabel>
#include "BiomeView.h"
// fwd:
class GeneratorSetup;
class MainWindow :
public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget * parent = nullptr);
~MainWindow();
private slots:
/** Creates a generator definition from scratch, lets user modify generator params in realtime. */
void newGenerator();
/** Opens a generator definition and generates the biomes based on that. */
void openGenerator();
/** Opens an existing world and displays the loaded biomes. */
void openWorld();
/** Opens a vanilla world that is specified by the calling action. */
void openVanillaWorld();
/** Moves the view to the map's center. */
void centerView();
/** Sets the zoom level specified in the triggering action. */
void setViewZoom();
/** Sets a zoom level one step larger than current, if allowed. */
void increaseZoom();
/** Sets a zoom level one step smaller than current, if allowed. */
void decreaseZoom();
/** Updates the statusbar for the specified info about the current block under the cursor. */
void hoverChanged(int a_BlockX, int a_BlockZ, int a_Biome);
protected:
/** The zoom levels */
static const double m_ViewZooms[10];
// Actions:
QAction * m_actNewGen;
QAction * m_actOpenGen;
QAction * m_actOpenWorld;
QAction * m_actReload;
QAction * m_actExit;
QAction * m_actViewCenter;
QAction * m_actViewZoom[ARRAYCOUNT(m_ViewZooms)];
/** List of actions that open the specific vanilla world. */
QList<QAction *> m_WorldActions;
/** Path to the vanilla folder. */
QString m_MinecraftPath;
/** 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 status bar that displays the current hover information. */
QStatusBar * m_StatusBar;
QLabel * m_StatusBlockX;
QLabel * m_StatusBlockZ;
QLabel * m_StatusBiome;
/** The separator line between biome view and generator setup. */
QWidget * m_LineSeparator;
/** Index into m_ViewZooms[] for the current zoom level. */
size_t m_CurrentZoomLevel;
/** Initializes the m_MinecraftPath based on the proper MC path */
void initMinecraftPath();
/** Creates the actions that the UI supports. */
void createActions();
/** Creates the actions that open a specific vanilla world. Iterates over the minecraft saves folder. */
void createWorldActions();
/** Creates the menu bar and connects its events. */
void createMenus();
/** 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();
};