#include <cassert>
#include <string>
#include <boost/regex.hpp>
#include "dialogabout.h"
#include "dialogmain.h"
#include "ui_dialogmain.h"
DialogMain::DialogMain(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogMain)
{
ui->setupUi(this);
QObject::connect(ui->edit_line,SIGNAL(textEdited(QString)),this,SLOT(onAnyChange()));
QObject::connect(ui->edit_regex,SIGNAL(textEdited(QString)),this,SLOT(onAnyChange()));
QObject::connect(ui->button_about,SIGNAL(clicked()),this,SLOT(onAboutClick()));
ui->edit_line->setText("'1234 AB' is a valid Dutch zip code");
ui->edit_regex->setText("\\d{4}\\s[A-Z]{2}");
this->onAnyChange();
}
DialogMain::~DialogMain()
{
delete ui;
}
void DialogMain::changeEvent(QEvent *e)
{
QDialog::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void DialogMain::onAnyChange()
{
const std::string regex_string = ui->edit_regex->text().toStdString();
//Check if regex input is valid
try
{
const boost::regex regex_temp(regex_string);
}
catch (boost::regex_error& e)
{
ui->label_regex_valid->setText("Regex valid: no");
ui->label_regex_match->setText("Regex matches line: n/a");
ui->label_regex_found->setText("Regex found in line: n/a");
return;
}
ui->label_regex_valid->setText("Regex valid: yes");
const boost::regex r(regex_string);
const std::string s = ui->edit_line->text().toStdString();
ui->label_regex_match->setText("Regex matches line: "
+ QString(boost::regex_match(s,r) ? "yes" : "no"));
ui->label_regex_found->setText("Regex found in line: "
+ QString(boost::regex_search(s,r) ? "yes" : "no"));
}
void DialogMain::onAboutClick()
{
DialogAbout d;
d.exec();
}
|