Skip to content

Commit

Permalink
Added the ability to add/remove/modify applications to open errors with.
Browse files Browse the repository at this point in the history
Only the list of applications added, errors cant be opened yet.
  • Loading branch information
vesap committed May 23, 2009
1 parent ae7fc7f commit 78d4318
Show file tree
Hide file tree
Showing 9 changed files with 470 additions and 15 deletions.
106 changes: 106 additions & 0 deletions gui/applicationdialog.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
* Leandro Penz, Kimmo Varis, Vesa Pikki
*
* 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 "applicationdialog.h"
#include <QVBoxLayout>
#include <QPushButton>
#include <QHBoxLayout>
#include <QLabel>
#include <QFileDialog>
#include <QDebug>

ApplicationDialog::ApplicationDialog(const QString &name,
const QString &path,
const QString &title)
{
QVBoxLayout *layout = new QVBoxLayout();
mName = new QLineEdit(name);
mPath = new QLineEdit(path);

QString guide = tr("Here you can add applications that can open error files.\n" \
"Specify a name for the application and the application to execute.\n\n" \
"The following texts are replaced with appriproate values when application is executed:\n" \
"(file) - Filename containing the error\n" \
"(line) - Line number containing the error\n" \
"(message) - Error message\n" \
"(severity) - Error severity\n" \
"\n" \
"Example opening a file with Kate and make Kate scroll to the corret line:\n" \
"kate -l(line) (file)");

layout->addWidget(new QLabel(guide));

layout->addWidget(new QLabel(tr("Application's name")));
layout->addWidget(mName);
layout->addWidget(new QLabel(tr("Application to execute")));
layout->addWidget(mPath);
QPushButton *browse = new QPushButton(tr("Browse"));
connect(browse,SIGNAL(clicked()), this, SLOT(Browse()));
layout->addWidget(browse);

QPushButton *cancel = new QPushButton(tr("Cancel"));
QPushButton *ok = new QPushButton(tr("Ok"));

//Add a layout for ok/cancel buttons
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addWidget(ok);
buttonLayout->addWidget(cancel);
layout->addLayout(buttonLayout);

//Connect OK buttons
connect(ok, SIGNAL(clicked()),
this, SLOT(accept()));
connect(cancel, SIGNAL(clicked()),
this, SLOT(reject()));
setLayout(layout);
setWindowTitle(title);
}


ApplicationDialog::~ApplicationDialog()
{
//dtor
}


void ApplicationDialog::Browse()
{
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFiles);

if (dialog.exec())
{
QStringList list = dialog.selectedFiles();
if (list.size() > 0)
{
mPath->setText(list[0]);
}
}
}

QString ApplicationDialog::GetName()
{
return mName->text();
}


QString ApplicationDialog::GetPath()
{
return mPath->text();
}
45 changes: 45 additions & 0 deletions gui/applicationdialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
* Leandro Penz, Kimmo Varis, Vesa Pikki
*
* 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/
*/

#ifndef APPLICATIONDIALOG_H
#define APPLICATIONDIALOG_H

#include <QDialog>
#include <QLineEdit>


class ApplicationDialog : public QDialog
{
Q_OBJECT
public:
ApplicationDialog(const QString &name,
const QString &path,
const QString &title);
virtual ~ApplicationDialog();
QString GetName();
QString GetPath();
protected slots:
void Browse();
protected:
QLineEdit *mName;
QLineEdit *mPath;
private:
};

#endif // APPLICATIONDIALOG_H
110 changes: 110 additions & 0 deletions gui/applicationlist.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
* Leandro Penz, Kimmo Varis, Vesa Pikki
*
* 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 "applicationlist.h"
#include <QStringList>

ApplicationList::ApplicationList()
{
//ctor
}

ApplicationList::~ApplicationList()
{
//dtor
}

void ApplicationList::LoadSettings(QSettings &programSettings)
{

QStringList names = programSettings.value(tr("Application names"), QStringList()).toStringList();
QStringList paths = programSettings.value(tr("Application paths"), QStringList()).toStringList();
if (names.size() == paths.size()) {
for(int i=0;i<names.size();i++) {
AddApplicationType(names[i],paths[i]);
}
}
}

void ApplicationList::SaveSettings(QSettings &programSettings)
{
QStringList names;
QStringList paths;

for(int i=0;i<GetApplicationCount();i++) {
names<<GetApplicationName(i);
paths<<GetApplicationPath(i);
}

programSettings.setValue(tr("Application names"),names);
programSettings.setValue(tr("Application paths"),paths);

}

int ApplicationList::GetApplicationCount()
{
return mApplications.size();
}

QString ApplicationList::GetApplicationName(const int index)
{
if (index >= 0 && index < mApplications.size())
{
return mApplications[index].Name;
}

return QString();
}

QString ApplicationList::GetApplicationPath(const int index)
{
if (index >= 0 && index < mApplications.size())
{
return mApplications[index].Path;
}

return QString();

}


void ApplicationList::SetApplicationType(const int index,
const QString &name,
const QString &path)
{
if (index >= 0 && index < mApplications.size())
{
mApplications[index].Name = name;
mApplications[index].Path = path;
}
}

void ApplicationList::AddApplicationType(const QString &name, const QString &path)
{
ApplicationType type;
type.Name = name;
type.Path = path;
mApplications<<type;
}

void ApplicationList::RemoveApplication(const int index)
{
mApplications.removeAt(index);
}

63 changes: 63 additions & 0 deletions gui/applicationlist.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Cppcheck - A tool for static C/C++ code analysis
* Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam,
* Leandro Penz, Kimmo Varis, Vesa Pikki
*
* 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/
*/

#ifndef APPLICATIONLIST_H
#define APPLICATIONLIST_H

#include <QObject>
#include <QSettings>


class ApplicationList : public QObject
{
public:
typedef struct
{
QString Name;
QString Path;
}ApplicationType;

ApplicationList();
virtual ~ApplicationList();

void LoadSettings(QSettings &programSettings);

void SaveSettings(QSettings &programSettings);

int GetApplicationCount();

QString GetApplicationName(const int index);

QString GetApplicationPath(const int index);

void SetApplicationType(const int index,
const QString &name,
const QString &path);

void AddApplicationType(const QString &name, const QString &path);

void RemoveApplication(const int index);
protected:


QList<ApplicationType> mApplications;
private:
};

#endif // APPLICATIONLIST_H
4 changes: 4 additions & 0 deletions gui/gui.pro
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ HEADERS += mainwindow.h \
settingsdialog.h \
threadresult.h \
threadhandler.h \
applicationlist.h \
applicationdialog.h \
../src/checkautovariables.h \
../src/checkdangerousfunctions.h \
../src/checkheaders.h \
Expand Down Expand Up @@ -50,6 +52,8 @@ SOURCES += main.cpp \
threadresult.cpp \
threadhandler.cpp \
settingsdialog.cpp \
applicationlist.cpp \
applicationdialog.cpp \
../src/checkautovariables.cpp \
../src/checkdangerousfunctions.cpp \
../src/checkmemoryleak.cpp \
Expand Down
4 changes: 3 additions & 1 deletion gui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ void MainWindow::LoadSettings()
mResults.ShowResults(SHOW_SECURITY, mActionShowSecurity.isChecked());
mResults.ShowResults(SHOW_STYLE, mActionShowStyle.isChecked());
mResults.ShowResults(SHOW_UNUSED, mActionShowUnused.isChecked());
mApplications.LoadSettings(mSettings);
}

void MainWindow::SaveSettings()
Expand All @@ -134,6 +135,7 @@ void MainWindow::SaveSettings()
mSettings.setValue(tr("Show style"), mActionShowStyle.isChecked());
mSettings.setValue(tr("Show unused"), mActionShowUnused.isChecked());
mSettings.setValue(tr("Show errors"), mActionShowErrors.isChecked());
mApplications.SaveSettings(mSettings);
}


Expand Down Expand Up @@ -247,7 +249,7 @@ void MainWindow::CheckDone()

void MainWindow::ProgramSettings()
{
SettingsDialog dialog(mSettings);
SettingsDialog dialog(mSettings,mApplications);
if (dialog.exec() == QDialog::Accepted)
{
dialog.SaveCheckboxValues();
Expand Down
2 changes: 2 additions & 0 deletions gui/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ protected slots:
*/
ThreadHandler mThread;

ApplicationList mApplications;

private:
};

Expand Down
Loading

0 comments on commit 78d4318

Please sign in to comment.