blob: 7444659b0bd206caec994949bde45a306b165e3d [file] [log] [blame]
#include "tracedialog.h"
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
TraceDialog::TraceDialog(QWidget *parent)
: QDialog(parent)
{
setupUi(this);
apiComboBox->addItem("GL");
#ifdef Q_OS_WIN
apiComboBox->addItem("D3D7");
apiComboBox->addItem("D3D8");
apiComboBox->addItem("D3D9");
apiComboBox->addItem("D3D10");
apiComboBox->addItem("D3D10_1");
apiComboBox->addItem("D3D11");
#else
apiComboBox->addItem("EGL");
#endif
connect(browseButton, SIGNAL(clicked()),
this, SLOT(browseApplication()));
connect(browseWorkingDirButton, SIGNAL(clicked()),
this, SLOT(browseWorkingDir()));
}
void TraceDialog::setApi(const QString &api)
{
int index = apiComboBox->findText(api);
if(index >= 0)
apiComboBox->setCurrentIndex(index);
}
QString TraceDialog::api() const
{
return apiComboBox->currentText().toLower();
}
void TraceDialog::setApplicationPath(const QString &path)
{
applicationEdit->setText(path);
}
QString TraceDialog::applicationPath() const
{
return applicationEdit->text();
}
void TraceDialog::setWorkingDirPath(const QString &path)
{
workingDirEdit->setText(path);
}
QString TraceDialog::workingDirPath() const
{
QString workingDir = workingDirEdit->text();
if(workingDir.isEmpty()) {
return QDir::currentPath();
}
return workingDir;
}
void TraceDialog::setArguments(const QStringList &args)
{
QString argsStr = args.join(";");
argumentsEdit->setText(argsStr);
}
QStringList TraceDialog::arguments() const
{
QStringList args =
argumentsEdit->text().split(';', QString::SkipEmptyParts);
return args;
}
void TraceDialog::browseApplication()
{
QString fileName =
QFileDialog::getOpenFileName(
this,
tr("Find the application"),
QDir::currentPath());
if (!fileName.isEmpty() && isFileOk(fileName)) {
applicationEdit->setText(fileName);
}
}
void TraceDialog::browseWorkingDir()
{
QString path =
QFileDialog::getExistingDirectory(
this,
tr("Choose working directory"),
workingDirPath());
if(!path.isEmpty() && isDirOk(path)) {
workingDirEdit->setText(path);
}
}
void TraceDialog::accept()
{
if (isFileOk(applicationEdit->text())
&& isDirOk(workingDirPath())) {
QDialog::accept();
}
}
bool TraceDialog::isFileOk(const QString &fileName)
{
QFileInfo fi(fileName);
if (!fi.exists()) {
QMessageBox::warning(this, tr("File Missing"),
tr("File '%1' doesn't exist.")
.arg(fi.fileName()));
return false;
}
if (!fi.isExecutable()) {
QMessageBox::warning(this, tr("Application Not Runnable"),
tr("File '%1' can't be executed.")
.arg(fi.fileName()));
return false;
}
return true;
}
bool TraceDialog::isDirOk(const QString &path)
{
QFileInfo fi(path);
if(!fi.exists()) {
QMessageBox::warning(this, tr("Directory Does Not Exist"),
tr("Directory '%1' doesn't exist.").
arg(fi.fileName()));
return false;
}
if(!fi.isDir()) {
QMessageBox::warning(this, tr("Directory Does Not Exist"),
tr("Path '%1' is not a directory").
arg(fi.fileName()));
return false;
}
return true;
}
#include "tracedialog.moc"