Created own geometry widget to keep code simple and clean

Currently its proof of concept, wich may work not right.
The goal is, that mainwindow only have to call set(geometry) and the geometry widget detects and select the correct dropdown entry and fills in the data into the spin boxes.
Also  mainwindow only needs to call getGeometry() to get the geometryString for generating the map and save in profile settings
master
adrido 2015-07-02 15:11:29 +02:00
parent 18ee90f0ed
commit df6b7b6325
6 changed files with 1204 additions and 97 deletions

View File

@ -15,12 +15,15 @@ TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
colorlineedit.cpp
colorlineedit.cpp \
geometrywidget.cpp
HEADERS += mainwindow.h \
colorlineedit.h
colorlineedit.h \
geometrywidget.h
FORMS += mainwindow.ui
FORMS += mainwindow.ui \
geometrywidget.ui
RESOURCES += \
minetestmappergui.qrc

398
geometrywidget.cpp Normal file
View File

@ -0,0 +1,398 @@
#include "geometrywidget.h"
#include "ui_geometrywidget.h"
QMap<Geometry::Format, QString> Geometry::geometryIdNameMap;
QMap<QString, Geometry::Format> Geometry::geometryNameIdMap;
bool Geometry::set(const char *s)
{
char sign[2];
if (4 == sscanf_s(s," %d , %d : %d , %d", corner[0]+0, corner[0]+1, corner[1]+0, corner[1]+1)) {
adjustCorners();
// Order is important here!
computeDimensions();
computeCenter();
//GeometryWidget::setFormat(Corners);
//todo select correct dropdown entry in widget
}
else if (4 == sscanf_s(s," %d , %d : %d x %d", center+0, center+1, dimension+0, dimension+1)) {
computeCorner0();
computeCorner1();
if (adjustCorners()) {
// Order is important here!
computeDimensions();
computeCenter();
}
//GeometryWidget::setFormat(CornerDimensions);
//todo select correct dropdown entry in widget
}
else if (4 == sscanf_s(s," %d , %d %c %d %c %d", corner[0]+0, corner[0]+1, sign+0, dimension+0, sign+1, dimension+1)) {
for (int i = 0; i < 2; i++)
if (sign[i] == '-') dimension[i] = -dimension[i];
computeCenter();
computeCorner1();
if (adjustCorners()) {
// Order is important here!
computeDimensions();
computeCenter();
}
//GeometryWidget::setFormat(CornerDimensions);
//todo select correct dropdown entry in widget
}
else if (4 == sscanf_s(s," %d x %d %c %d %c %d", dimension+0, dimension+1, sign+0, corner[0]+0, sign+1, corner[0]+1)) {
for (int i = 0; i < 2; i++)
if (sign[i] == '-') corner[0][i] = -corner[0][i];
computeCenter();
computeCorner1();
if (adjustCorners()) {
// Order is important here!
computeDimensions();
computeCenter();
}
//GeometryWidget::setFormat(CornerDimensions);
//todo select correct dropdown entry in widget
}
else if (2 == sscanf_s(s," %d x %d", dimension+0, dimension+1)) {
center[0] = 0;
center[1] = 0;
computeCorner0();
computeCorner1();
if (adjustCorners()) {
// Order is important here!
computeDimensions();
computeCenter();
}
//GeometryWidget::setFormat(CenterDimensions);
//todo select correct dropdown entry in widget
}
else {
//GeometryWidget::setFormat(FormatNone);
//todo
return false;
}
return true;
}
void Geometry::setMax(void)
{
for (int i=0; i<2; i++) {
center[i] = 0;
dimension[i] = 65536;
}
computeCorner0();
computeCorner1();
}
bool Geometry::adjustCorners(void)
{
bool adjusted = false;
for (int j = 0; j < 2; j++) {
for (int i = 0; i < 2; i++) {
if (corner[j][i] < -32768) {
corner[j][i] = -32768;
adjusted = true;
}
if (corner[j][i] > 32767) {
corner[j][i] = 32767;
adjusted = true;
}
}
}
return adjusted;
}
void Geometry::setCenterDimensions(int cx, int cy, int dx, int dy)
{
center[0] = cx;
center[1] = cy;
dimension[0] = dx;
dimension[1] = dy;
computeCorner0();
computeCorner1();
}
void Geometry::setCornerDimensions(int cx, int cy, int dx, int dy)
{
corner[0][0] = cx;
corner[0][1] = cy;
dimension[0] = dx;
dimension[1] = dy;
computeCenter();
computeCorner1();
}
void Geometry::setCorners(int c0x, int c0y, int c1x, int c1y)
{
corner[0][0] = c0x;
corner[0][1] = c0y;
corner[1][0] = c1x;
corner[1][1] = c1y;
computeDimensions();
computeCenter();
}
QString Geometry::getString(Geometry::Format format)
{
#define BUFSIZE 1024
char buffer[BUFSIZE];
buffer[0] = '\0';
int n = -1;
switch (format) {
case CenterDimensions:
n = _snprintf_s(buffer, BUFSIZE, "%d,%d:%dx%d", center[0], center[1], dimension[0], dimension[1]);
//search alternative for snptintf
break;
case CornerDimensions:
n = _snprintf_s(buffer, BUFSIZE, "%d,%d+%d+%d", corner[0][0], corner[0][1], dimension[0], dimension[1]);
//search alternative for snptintf
break;
case Corners:
default:
n = _snprintf_s(buffer, BUFSIZE, "%d,%d:%d,%d", corner[0][0], corner[0][1], corner[1][0], corner[1][1]);
//search alternative for snptintf
break;
}
if (n > 0 && n < BUFSIZE)
return QString(buffer);
else
return QString();
#undef BUFSIZE
}
void Geometry::computeCorner0(void)
{
for (int i = 0; i < 2; i++) {
if (dimension[i] < 0)
corner[0][i] = center[i] + (-dimension[i]) / 2;
else
corner[0][i] = center[i] - dimension[i] / 2;
}
}
void Geometry::computeCorner1(void)
{
for (int i = 0; i < 2; i++) {
if (dimension[i] < 0)
corner[1][i] = corner[0][i] + dimension[i] + 1;
else
corner[1][i] = corner[0][i] + dimension[i] - 1;
}
}
void Geometry::computeCenter(void)
{
for (int i = 0; i < 2; i++) {
if (corner[0][i] > corner[1][i])
center[i] = corner[0][i] - (-dimension[i]) / 2;
else
center[i] = corner[0][i] + dimension[i] / 2;
}
}
void Geometry::computeDimensions(void)
{
for (int i = 0; i < 2; i++) {
if (corner[0][i] > corner[1][i])
dimension[i] = corner[1][i] - corner[0][i] - 1;
else
dimension[i] = corner[1][i] - corner[0][i] + 1;
}
}
template<class Q, class V>
static void setQWidgetValue(Q *object, V value)
{
object->blockSignals(true);
object->setValue(value);
object->blockSignals(false);
}
GeometryWidget::GeometryWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::GeometryWidget)
{
ui->setupUi(this);
m_ui_stack = ui->geometryStackedWidget;
m_ui_CD_center[0] = ui->geometry_CD_CenterX;
m_ui_CD_center[1] = ui->geometry_CD_CenterY;
m_ui_CD_dimension[0] = ui->geometry_CD_DimensionX;
m_ui_CD_dimension[1] = ui->geometry_CD_DimensionY;
m_ui_C0D_corner[0] = ui->geometry_C0D_CornerX;
m_ui_C0D_corner[1] = ui->geometry_C0D_CornerY;
m_ui_C0D_dimension[0] = ui->geometry_C0D_DimensionX;
m_ui_C0D_dimension[1] = ui->geometry_C0D_DimensionY;
m_ui_C01_corner[0][0] = ui->geometry_C01_Corner1X;
m_ui_C01_corner[0][1] = ui->geometry_C01_Corner1Y;
m_ui_C01_corner[1][0] = ui->geometry_C01_Corner2X;
m_ui_C01_corner[1][1] = ui->geometry_C01_Corner2Y;
}
GeometryWidget::~GeometryWidget()
{
delete ui;
}
void GeometryWidget::set(const QString gstr)
{
Geometry g;
if (gstr=="") {
g.setMax();
}
else if (!g.set(gstr)) {
QMessageBox::warning(this, tr("Failure Loading Settings"),
tr("WARNING: Failed to parse the geometry string<br>"
"geometry string: <i>%1</i>").arg(gstr));
g.setMax();
}
for (int i=0; i<2; i++) {
setQWidgetValue(m_ui_CD_center[i], g.center[i]);
setQWidgetValue(m_ui_CD_dimension[i], g.dimension[i]);
setQWidgetValue(m_ui_C0D_corner[i], g.corner[0][i]);
setQWidgetValue(m_ui_C0D_dimension[i], g.dimension[i]);
setQWidgetValue(m_ui_C01_corner[0][i], g.corner[0][i]);
setQWidgetValue(m_ui_C01_corner[1][i], g.corner[1][i]);
}
}
QString GeometryWidget::getGeometry()
{
Geometry geometry;
int format = m_ui_stack->currentIndex();
switch (format) {
case Geometry::FormatNone:
case Geometry::CenterDimensions:
geometry.setCenterDimensions(
m_ui_CD_center[0]->value(),
m_ui_CD_center[1]->value(),
m_ui_CD_dimension[0]->value(),
m_ui_CD_dimension[1]->value());
break;
case Geometry::CornerDimensions:
geometry.setCornerDimensions(
m_ui_C0D_corner[0]->value(),
m_ui_C0D_corner[1]->value(),
m_ui_C0D_dimension[0]->value(),
m_ui_C0D_dimension[1]->value());
break;
case Geometry::Corners:
geometry.setCorners(
m_ui_C01_corner[0][0]->value(),
m_ui_C01_corner[0][1]->value(),
m_ui_C01_corner[1][0]->value(),
m_ui_C01_corner[1][1]->value());
break;
default:
//exception ?
break;
}
return geometry.getString();
}
void GeometryWidget::setFormat(Geometry::Format format)
{
if (format < Geometry::FormatNone || format >= Geometry::FormatMax)
{} //Exception ???
Geometry::Format prevFormat = static_cast<Geometry::Format>(m_ui_stack->currentIndex());
if (format != prevFormat) {
set(getGeometry());
m_ui_stack->setCurrentIndex(format);
}
}
Geometry::Format GeometryWidget::getFormat(void)
{
Geometry::Format format = static_cast<Geometry::Format>(m_ui_stack->currentIndex());
if (format < 0 || format >= Geometry::FormatMax)
format = Geometry::FormatUnknown;
return format;
}
void GeometryWidget::on_geometryFormat_currentIndexChanged(int index)
{
setFormat(index);
}
void GeometryWidget::on_geometry_CD_CenterX_editingFinished()
{
int center = ui->geometry_CD_CenterX->value();
int dimension = ui->geometry_CD_DimensionX->value();
if (center + dimension/2 > 32767)
ui->geometry_CD_DimensionX->setValue(65536 - 2 * center);
else if (center + (dimension - 1)/2 < -32768)
ui->geometry_CD_DimensionX->setValue(65536 + 2 * (center - 1));
}
void GeometryWidget::on_geometry_CD_CenterY_editingFinished()
{
int center = ui->geometry_CD_CenterY->value();
int dimension = ui->geometry_CD_DimensionY->value();
if (center + dimension/2 > 32767)
ui->geometry_CD_DimensionY->setValue(65536 - 2 * center);
else if (center + (dimension - 1)/2 < -32768)
ui->geometry_CD_DimensionY->setValue(65536 + 2 * (center - 1));
}
void GeometryWidget::on_geometry_CD_DimensionX_editingFinished()
{
int dimension = ui->geometry_CD_DimensionX->value();
int center = ui->geometry_CD_CenterX->value();
if (center + dimension/2 > 32767)
ui->geometry_CD_DimensionX->setValue(65536 - 2 * center);
else if (center + (dimension - 1)/2 < -32768)
ui->geometry_CD_DimensionX->setValue(65536 + 2 * (center - 1));
}
void GeometryWidget::on_geometry_CD_DimensionY_editingFinished()
{
int dimension = ui->geometry_CD_DimensionY->value();
int center = ui->geometry_CD_CenterY->value();
if (center + dimension/2 > 32767)
ui->geometry_CD_DimensionY->setValue(65536 - 2 * center);
else if (center + (dimension - 1)/2 < -32768)
ui->geometry_CD_DimensionY->setValue(65536 + 2 * (center - 1));
}
void GeometryWidget::on_geometry_C0D_CornerX_editingFinished()
{
int corner = ui->geometry_C0D_CornerX->value();
int dimension = ui->geometry_C0D_DimensionX->value();
if (corner + dimension - 1 > 32767)
ui->geometry_C0D_DimensionX->setValue(32767 + 1 - corner);
else if (corner + dimension - 1 < -32768)
ui->geometry_C0D_DimensionX->setValue(-32768 + 1 - corner);
}
void GeometryWidget::on_geometry_C0D_CornerY_editingFinished()
{
int corner = ui->geometry_C0D_CornerY->value();
int dimension = ui->geometry_C0D_DimensionY->value();
if (corner + dimension - 1 > 32767)
ui->geometry_C0D_DimensionY->setValue(32767 + 1 - corner);
else if (corner + dimension - 1 < -32768)
ui->geometry_C0D_DimensionY->setValue(-32768 + 1 - corner);
}
void GeometryWidget::on_geometry_C0D_DimensionX_editingFinished()
{
int dimension = ui->geometry_C0D_DimensionX->value();
int corner = ui->geometry_C0D_CornerX->value();
if (corner + dimension - 1 > 32767)
ui->geometry_C0D_DimensionX->setValue(32767 + 1 - corner);
else if (corner + dimension - 1 < -32768)
ui->geometry_C0D_DimensionX->setValue(-32768 + 1 - corner);
}
void GeometryWidget::on_geometry_C0D_DimensionY_editingFinished()
{
int dimension = ui->geometry_C0D_DimensionY->value();
int corner = ui->geometry_C0D_CornerY->value();
if (corner + dimension - 1 > 32767)
ui->geometry_C0D_DimensionY->setValue(32767 + 1 - corner);
else if (corner + dimension - 1 < -32768)
ui->geometry_C0D_DimensionY->setValue(-32768 + 1 - corner);
}

91
geometrywidget.h Normal file
View File

@ -0,0 +1,91 @@
#ifndef GEOMETRYWIDGET_H
#define GEOMETRYWIDGET_H
#include <QWidget>
#include <QtWidgets>
class Geometry;
class GeometryWidget;
namespace Ui {
class GeometryWidget;
}
class Geometry
{
public:
enum Format {
FormatUnknown = -1,
FormatNone = 0,
CenterDimensions = 1,
CornerDimensions = 2,
Corners = 3,
FormatMax
};
static QMap<Geometry::Format, QString> geometryIdNameMap;
static QMap<QString, Geometry::Format> geometryNameIdMap;
static const QString &formatName(Geometry::Format id);
static Geometry::Format formatId(const QString &name);
int center[2];
int dimension[2];
int corner[2][2];
Geometry(void) { setMax(); }
Geometry(const char *s) { set(s); }
Geometry(const QString &s) { set(s); }
Geometry(const Geometry &g);
bool set(const char *s);
bool set(const QString &s) { return set(s.toStdString().c_str()); }
void setMax(void);
void setCenterDimensions(int cx, int cy, int dx, int dy);
void setCornerDimensions(int cx, int cy, int dx, int dy);
void setCorners(int c0x, int c0y, int c1x, int c1y);
QString getString(Geometry::Format format = Geometry::FormatNone);
private:
bool adjustCorners(void);
void computeCorner0(void);
void computeCorner1(void);
void computeCenter(void); // Depends dimensions to be correct !
void computeDimensions(void);
};
class GeometryWidget : public QWidget
{
Q_OBJECT
public:
explicit GeometryWidget(QWidget *parent = 0);
~GeometryWidget();
void set(const QString gstr);
void setFormat(int i) { setFormat(static_cast<Geometry::Format>(i)); }
void setFormat(Geometry::Format t);
void setFormat(QString s) { setFormat(Geometry::formatId(s)); }
Geometry::Format getFormat(void);
QString getFormatStr(void) { return Geometry::formatName(getFormat()); }
QString getGeometry();
private slots:
void on_geometryFormat_currentIndexChanged(int index);
void on_geometry_C0D_CornerX_editingFinished();
void on_geometry_C0D_DimensionX_editingFinished();
void on_geometry_C0D_DimensionY_editingFinished();
void on_geometry_C0D_CornerY_editingFinished();
void on_geometry_CD_CenterX_editingFinished();
void on_geometry_CD_CenterY_editingFinished();
void on_geometry_CD_DimensionX_editingFinished();
void on_geometry_CD_DimensionY_editingFinished();
private:
Ui::GeometryWidget *ui;
QStackedWidget *m_ui_stack;
QSpinBox *m_ui_CD_center[2];
QSpinBox *m_ui_CD_dimension[2];
QSpinBox *m_ui_C0D_corner[2];
QSpinBox *m_ui_C0D_dimension[2];
QSpinBox *m_ui_C01_corner[2][2];
};
#endif // GEOMETRYWIDGET_H

592
geometrywidget.ui Normal file
View File

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GeometryWidget</class>
<widget class="QWidget" name="GeometryWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>412</width>
<height>58</height>
</rect>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="geometryFormat">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>No geometry specified (include all existing parts of the world)</string>
</property>
</item>
<item>
<property name="text">
<string>Center &amp; Dimensions</string>
</property>
</item>
<item>
<property name="text">
<string>Corner &amp; Dimensions</string>
</property>
</item>
<item>
<property name="text">
<string>Two Corners</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="geometryStackedWidget">
<widget class="QWidget" name="page_0"/>
<widget class="QWidget" name="page_1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_35">
<property name="text">
<string>Center:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_29">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_CD_CenterX">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_30">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_CD_CenterY">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_36">
<property name="text">
<string>Dimensions:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_25">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_CD_DimensionX">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-65536</number>
</property>
<property name="maximum">
<number>65536</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_24">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_CD_DimensionY">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-65536</number>
</property>
<property name="maximum">
<number>65536</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_41">
<property name="text">
<string>Corner</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_31">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C0D_CornerX">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="accelerated">
<bool>true</bool>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_32">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C0D_CornerY">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="accelerated">
<bool>true</bool>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_42">
<property name="text">
<string>Dimensions:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_26">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C0D_DimensionX">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="accelerated">
<bool>true</bool>
</property>
<property name="minimum">
<number>-65536</number>
</property>
<property name="maximum">
<number>65536</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_27">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C0D_DimensionY">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="accelerated">
<bool>true</bool>
</property>
<property name="minimum">
<number>-65536</number>
</property>
<property name="maximum">
<number>65536</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="page_3">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="Label_39">
<property name="text">
<string>Corner 1</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C01_Corner1X">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C01_Corner1Y">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="Label_40">
<property name="text">
<string>Corner 2</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_23">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>X:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C01_Corner2X">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_28">
<property name="minimumSize">
<size>
<width>10</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Y:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="geometry_C01_Corner2Y">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>-32768</number>
</property>
<property name="maximum">
<number>32767</number>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>8</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>geometryFormat</sender>
<signal>currentIndexChanged(int)</signal>
<receiver>geometryStackedWidget</receiver>
<slot>setCurrentIndex(int)</slot>
<hints>
<hint type="sourcelabel">
<x>159</x>
<y>14</y>
</hint>
<hint type="destinationlabel">
<x>155</x>
<y>38</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -745,10 +745,11 @@ void MainWindow::readProfile(QString profile)
ui->path_World->setText(settings.value("path_World",QDir::homePath()).toString());
ui->path_OutputImage->setText(settings.value("path_OutputImage",QDir::homePath().append("/map.png")).toString());
ui->backend->setCurrentIndex(settings.value("backend",0).toInt());
//on_path_OutputImage_textChanged();
//tab2 Area
ui->scalefactor->setCurrentIndex(settings.value("scalefactor",0).toInt());
ui->geometry->setText(settings.value("geometry").toString());
ui->geometryWidget->set(settings.value("geometry","").toString());
ui->checkBox_maxY->setChecked(settings.value("checkBox_maxY",false).toBool());
ui->checkBox_minY->setChecked(settings.value("checkBox_minY",false).toBool());
ui->maxY->setValue(settings.value("maxY",0).toInt());

View File

@ -198,7 +198,7 @@
<string>Map-Limit</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<item row="11" column="4">
<item row="13" column="4">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -211,96 +211,7 @@
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox_minY">
<property name="text">
<string>min-Y</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkBox_maxY">
<property name="statusTip">
<string>Specify the upper height limit for the map</string>
</property>
<property name="text">
<string>max-Y</string>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QSpinBox" name="minY">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Any nodes below this level will not be drawn.</string>
</property>
<property name="statusTip">
<string>Specify the lower height limit for the map</string>
</property>
<property name="minimum">
<number>-30000</number>
</property>
<property name="maximum">
<number>30000</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>geometry</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QComboBox" name="scalefactor">
<property name="currentText">
<string notr="true">1:1</string>
</property>
<item>
<property name="text">
<string notr="true">1:1</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:2</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:4</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:8</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:16</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>scalefactor</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>geometrymode</string>
</property>
</widget>
</item>
<item row="5" column="4">
<item row="7" column="4">
<widget class="QSpinBox" name="maxY">
<property name="enabled">
<bool>false</bool>
@ -319,7 +230,26 @@
</property>
</widget>
</item>
<item row="6" column="4" rowspan="2">
<item row="6" column="4">
<widget class="QSpinBox" name="minY">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Any nodes below this level will not be drawn.</string>
</property>
<property name="statusTip">
<string>Specify the lower height limit for the map</string>
</property>
<property name="minimum">
<number>-30000</number>
</property>
<property name="maximum">
<number>30000</number>
</property>
</widget>
</item>
<item row="8" column="4" rowspan="2">
<layout class="QGridLayout" name="gridLayout_10">
<item row="1" column="0">
<widget class="QRadioButton" name="geometrymode_auto">
@ -416,7 +346,14 @@
</item>
</layout>
</item>
<item row="1" column="4">
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>geometry</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLineEdit" name="geometry">
<property name="text">
<string notr="true"/>
@ -426,6 +363,85 @@
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="checkBox_minY">
<property name="text">
<string>min-Y</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkBox_maxY">
<property name="statusTip">
<string>Specify the upper height limit for the map</string>
</property>
<property name="text">
<string>max-Y</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QComboBox" name="scalefactor">
<property name="currentText">
<string notr="true">1:1</string>
</property>
<item>
<property name="text">
<string notr="true">1:1</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:2</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:4</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:8</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">1:16</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>scalefactor</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>geometrymode</string>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="4" rowspan="2">
<widget class="GeometryWidget" name="geometryWidget" native="true"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_heightmap">
@ -2542,6 +2558,12 @@ p, li { white-space: pre-wrap; }
<slot>selectColor()</slot>
</slots>
</customwidget>
<customwidget>
<class>GeometryWidget</class>
<extends>QWidget</extends>
<header>geometrywidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="minetestmappergui.qrc"/>