/* * Cppcheck - A tool for static C/C++ code analysis * Copyright (C) 2007-2011 Daniel Marjamäki and Cppcheck team. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <QString> #include <QWidget> #include <QDialog> #include <QFileDialog> #include <QDebug> #include <QMessageBox> #include "applicationdialog.h" ApplicationDialog::ApplicationDialog(const QString &name, const QString &path, const QString &title, QWidget *parent) : QDialog(parent) { mUI.setupUi(this); connect(mUI.mButtonBrowse, SIGNAL(clicked()), this, SLOT(Browse())); connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept())); connect(mUI.mButtons, SIGNAL(rejected()), this, SLOT(reject())); mUI.mPath->setText(path); mUI.mName->setText(name); setWindowTitle(title); } ApplicationDialog::~ApplicationDialog() { //dtor } void ApplicationDialog::Browse() { QString filter; #ifdef Q_WS_WIN // In Windows (almost) all executables have .exe extension // so it does not make sense to show everything. filter += tr("Executable files (*.exe);;All files(*.*)"); #endif // Q_WS_WIN QString selectedFile = QFileDialog::getOpenFileName(this, tr("Select viewer application"), QString(), filter); if (!selectedFile.isEmpty()) { QString path(QDir::toNativeSeparators(selectedFile)); // In Windows we must surround paths including spaces with quotation marks. #ifdef Q_WS_WIN if (path.indexOf(" ") > -1) { path.insert(0, "\""); path.append("\""); } #endif // Q_WS_WIN mUI.mPath->setText(path); } } QString ApplicationDialog::GetName() { return mUI.mName->text(); } QString ApplicationDialog::GetPath() { return mUI.mPath->text(); } void ApplicationDialog::Ok() { if (mUI.mName->text().isEmpty() || mUI.mPath->text().isEmpty()) { QMessageBox msg(QMessageBox::Warning, tr("Cppcheck"), tr("You must specify a name and a path for the application!"), QMessageBox::Ok, this); msg.exec(); } else { // Convert possible native (Windows) path to internal presentation format mUI.mPath->setText(QDir::fromNativeSeparators(mUI.mPath->text())); accept(); } }