[nostalgia/studio] Add PathExistsValidator
This commit is contained in:
		@@ -15,12 +15,26 @@
 | 
				
			|||||||
#include <QPushButton>
 | 
					#include <QPushButton>
 | 
				
			||||||
#include <QVBoxLayout>
 | 
					#include <QVBoxLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "context.hpp"
 | 
				
			||||||
 | 
					#include "project.hpp"
 | 
				
			||||||
#include "plugin.hpp"
 | 
					#include "plugin.hpp"
 | 
				
			||||||
#include "wizard.hpp"
 | 
					#include "wizard.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace nostalgia::studio {
 | 
					namespace nostalgia::studio {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using std::function;
 | 
					PathExistsValidator::PathExistsValidator(const Context *ctx, QString pathTemplate, bool shouldExist) {
 | 
				
			||||||
 | 
						m_ctx = ctx;
 | 
				
			||||||
 | 
						m_pathTemplate = pathTemplate;
 | 
				
			||||||
 | 
						m_shouldExist = shouldExist;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QValidator::State PathExistsValidator::validate(QString &input, int&) const {
 | 
				
			||||||
 | 
						auto path = m_pathTemplate.arg(input);
 | 
				
			||||||
 | 
						if (m_ctx->project->exists(path) == m_shouldExist) {
 | 
				
			||||||
 | 
							return QValidator::Acceptable;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return QValidator::Invalid;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WizardSelect::WizardSelect() {
 | 
					WizardSelect::WizardSelect() {
 | 
				
			||||||
	m_listWidget = new QListWidget(this);
 | 
						m_listWidget = new QListWidget(this);
 | 
				
			||||||
@@ -203,7 +217,7 @@ QComboBox *WizardFormPage::addComboBox(QString displayName, QString fieldName, Q
 | 
				
			|||||||
	return cb;
 | 
						return cb;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QLineEdit *WizardFormPage::addLineEdit(QString displayName, QString fieldName, QString defaultVal, function<int(QString)> validator) {
 | 
					QLineEdit *WizardFormPage::addLineEdit(QString displayName, QString fieldName, QString defaultVal, std::function<int(QString)> validator) {
 | 
				
			||||||
	auto lbl = new QLabel(displayName, this);
 | 
						auto lbl = new QLabel(displayName, this);
 | 
				
			||||||
	auto le = new QLineEdit(this);
 | 
						auto le = new QLineEdit(this);
 | 
				
			||||||
	lbl->setBuddy(le);
 | 
						lbl->setBuddy(le);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@
 | 
				
			|||||||
#include <QLineEdit>
 | 
					#include <QLineEdit>
 | 
				
			||||||
#include <QListWidget>
 | 
					#include <QListWidget>
 | 
				
			||||||
#include <QMap>
 | 
					#include <QMap>
 | 
				
			||||||
 | 
					#include <QValidator>
 | 
				
			||||||
#include <QVector>
 | 
					#include <QVector>
 | 
				
			||||||
#include <QWizard>
 | 
					#include <QWizard>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,6 +26,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace nostalgia::studio {
 | 
					namespace nostalgia::studio {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PathExistsValidator: public QValidator {
 | 
				
			||||||
 | 
					    private:
 | 
				
			||||||
 | 
					        const class Context *m_ctx = nullptr;
 | 
				
			||||||
 | 
					        QString m_pathTemplate;
 | 
				
			||||||
 | 
					        bool m_shouldExist = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public:
 | 
				
			||||||
 | 
					        PathExistsValidator(const class Context *ctx, QString pathTemplate, bool shouldExist);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        QValidator::State validate(QString &input, int &pos) const override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct NOSTALGIASTUDIO_EXPORT WizardMaker {
 | 
					struct NOSTALGIASTUDIO_EXPORT WizardMaker {
 | 
				
			||||||
	QString name;
 | 
						QString name;
 | 
				
			||||||
	std::function<QVector<QWizardPage*>()> make;
 | 
						std::function<QVector<QWizardPage*>()> make;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user