]> git.cworth.org Git - apitrace/blob - gui/tracedialog.cpp
gui/tracedialog: Don't show warning when user cancel to browse.
[apitrace] / gui / tracedialog.cpp
1 #include "tracedialog.h"
2
3 #include <QDebug>
4 #include <QFileDialog>
5 #include <QMessageBox>
6
7 TraceDialog::TraceDialog(QWidget *parent)
8     : QDialog(parent)
9 {
10     setupUi(this);
11
12     apiComboBox->addItem("GL");
13 #ifdef Q_OS_WIN
14     apiComboBox->addItem("D3D7");
15     apiComboBox->addItem("D3D8");
16     apiComboBox->addItem("D3D9");
17     apiComboBox->addItem("D3D10");
18     apiComboBox->addItem("D3D10_1");
19     apiComboBox->addItem("D3D11");
20 #else
21     apiComboBox->addItem("EGL");
22 #endif
23
24     connect(browseButton, SIGNAL(clicked()),
25             this, SLOT(browse()));
26 }
27
28 QString TraceDialog::api() const
29 {
30     return apiComboBox->currentText().toLower();
31 }
32
33 QString TraceDialog::applicationPath() const
34 {
35     return applicationEdit->text();
36 }
37
38 QStringList TraceDialog::arguments() const
39 {
40     QStringList args =
41         argumentsEdit->text().split(';', QString::SkipEmptyParts);
42     return args;
43 }
44
45 void TraceDialog::browse()
46 {
47     QString fileName =
48         QFileDialog::getOpenFileName(
49             this,
50             tr("Find the application"),
51             QDir::currentPath());
52
53     if (!fileName.isEmpty() && isFileOk(fileName)) {
54         applicationEdit->setText(fileName);
55     }
56 }
57
58 void TraceDialog::accept()
59 {
60     if (isFileOk(applicationEdit->text())) {
61         QDialog::accept();
62     }
63 }
64
65 bool TraceDialog::isFileOk(const QString &fileName)
66 {
67     QFileInfo fi(fileName);
68
69     if (!fi.exists()) {
70         QMessageBox::warning(this, tr("File Missing"),
71                              tr("File '%1' doesn't exist.")
72                              .arg(fi.fileName()));
73         return false;
74     }
75     if (!fi.isExecutable()) {
76         QMessageBox::warning(this, tr("Application Not Runnable"),
77                              tr("File '%1' can't be executed.")
78                              .arg(fi.fileName()));
79         return false;
80     }
81
82     return true;
83 }
84
85 #include "tracedialog.moc"