src/mainwindow.cpp

Sat, 08 Apr 2023 16:41:40 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Sat, 08 Apr 2023 16:41:40 +0300
changeset 354
91053052bb28
parent 201
5d201ee4a9c3
child 355
e81f4ad53efd
permissions
-rw-r--r--

Readd the MainWindow class and renderstyle button handling to it

#include "mainwindow.h"

static constexpr MemberData<MainWindow, QAction*, gl::RenderStyle> renderStyleButtons[] = {
	{ offsetof(MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal },
	{ offsetof(MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen },
	{ offsetof(MainWindow, actionRenderStyleRandom), gl::RenderStyle::RandomColors },
	{ offsetof(MainWindow, actionRenderStylePickScene), gl::RenderStyle::PickScene },
};

MainWindow::MainWindow(QWidget *parent)
: QMainWindow{parent}
{
	this->setupUi(this);
	for (const auto& memberData : ::renderStyleButtons)
	{
		QAction* action = memberData.memberInstance(this);
		const gl::RenderStyle newStyle = memberData.payload;
		QObject::connect(action, &QAction::triggered, [this, newStyle]{
			Q_EMIT this->renderStyleSelected(newStyle);
			this->setRenderStyle(newStyle);
		});
	}
}

void MainWindow::setRenderStyle(gl::RenderStyle style)
{
	for (const auto& memberData : ::renderStyleButtons)
	{
		QAction* const action = memberData.memberInstance(this);
		const gl::RenderStyle buttonRenderStyle = memberData.payload;
		action->setChecked(style == buttonRenderStyle);
	}
}

mercurial