tools/templates/mainform.cpp
author sheepluva
Sun, 06 Feb 2011 11:39:11 +0100
changeset 4929 3dca560e6510
parent 1774 3627ba6099ca
child 8442 535a00ca0d35
permissions -rw-r--r--
I need this export in order to not have the wrapper.c fail to find Game() on linux From this point on compilation and usage of library should work on linux, at least does for me :P

#include <QGridLayout>
#include <QImage>
#include <QPixmap>
#include <QMessageBox>
#include <QFile>
#include <QTextStream>
#include <QRegExp>
#include <QDebug>
#include "mainform.h"

MyWindow::MyWindow(QWidget * parent, Qt::WFlags flags)
		: QMainWindow(parent, flags)

{
	QWidget * centralWidget = new QWidget(this);
	QGridLayout * mainlayout = new QGridLayout(centralWidget);
	mainlayout->setMargin(1);
	mainlayout->setSpacing(1);

	sa_xy = new QScrollArea(centralWidget);
	xy = new PixLabel();
	xy->setFixedSize(1024, 512);
	sa_xy->setWidget(xy);

	mainlayout->addWidget(sa_xy, 0, 0, 1, 4);

	setCentralWidget(centralWidget);

	buttAdd = new QPushButton(centralWidget);
	buttAdd->setText(tr("Add"));
	mainlayout->addWidget(buttAdd, 1, 0);

	buttCode = new QPushButton(centralWidget);
	buttCode->setText(tr("Code"));
	mainlayout->addWidget(buttCode, 1, 1);

	buttSave = new QPushButton(centralWidget);
	buttSave->setText(tr("Save"));
	mainlayout->addWidget(buttSave, 1, 3);

	buttLoad = new QPushButton(centralWidget);
	buttLoad->setText(tr("Load"));
	mainlayout->addWidget(buttLoad, 1, 2);

	connect(buttAdd, SIGNAL(clicked()), xy, SLOT(AddRect()));
	connect(buttCode, SIGNAL(clicked()), this, SLOT(Code()));
	connect(buttSave, SIGNAL(clicked()), this, SLOT(Save()));
	connect(buttLoad, SIGNAL(clicked()), this, SLOT(Load()));
}

void MyWindow::Code()
{
	if (xy->rects.size())
	{
		QFile f("template.pas");
		if (!f.open(QIODevice::WriteOnly))
		{
			QMessageBox::information(this, tr("Error"),
						tr("Cannot save"));
			return ;
		}

		QTextStream stream(&f);
		stream << QString("const Template0Points: array[0..%1] of TSDL_Rect =").arg(xy->rects.size() - 1) << endl;
		stream << "      (" << endl;
		for(int i = 0; i < xy->rects.size(); i++)
		{
			QRect r = xy->rects[i].normalized();
			stream << QString("       (x: %1; y: %2; w: %3; h: %4),").
					arg(r.x() * 4, 4).arg(r.y() * 4, 4).arg(r.width() * 4, 4).arg(r.height() * 4, 4) << endl;
		}
		stream << "      );" << endl;
		f.close();
	}
}

void MyWindow::Save()
{
	Code();
}

void MyWindow::Load()
{
	QFile f("template.pas");
	if (!f.open(QIODevice::ReadOnly))
	{
		QMessageBox::information(this, tr("Error"),
					tr("Cannot open file"));
		return ;
	}

	QTextStream stream(&f);
	QStringList sl;
	while (!stream.atEnd())
	{
		sl << stream.readLine();
	}
	xy->rects.clear();
	for (int i = 0; i < sl.size(); ++i)
	{
		QRegExp re("x:\\s+(\\d+);\\sy:\\s+(\\d+);\\sw:\\s+(\\d+);\\sh:\\s+(\\d+)");
		re.indexIn(sl.at(i));
		QStringList coords = re.capturedTexts();
		qDebug() << sl.at(i) << coords;
		if ((coords.size() == 5) && (coords[0].size()))
			xy->rects.push_back(QRect(coords[1].toInt() / 4, coords[2].toInt() / 4, coords[3].toInt() / 4, coords[4].toInt() / 4));
	}
	f.close();
	xy->repaint();
}