GUI: Show authors list and license in simple text file view dialog.
Add "Authors" and "License" items to the Help-menu. When selected, these items open simple text file viewer dialog. The AUTHORS and COPYING files are embedded to the executable and shown in the dialog.
This commit is contained in:
parent
4286fdbabb
commit
801a241e0b
|
@ -0,0 +1,96 @@
|
||||||
|
/*
|
||||||
|
* Cppcheck - A tool for static C/C++ code analysis
|
||||||
|
* Copyright (C) 2007-2009 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 <QDialog>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QTextEdit>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include "fileviewdialog.h"
|
||||||
|
|
||||||
|
FileViewDialog::FileViewDialog(const QString &file, QWidget *parent)
|
||||||
|
: QDialog(parent)
|
||||||
|
{
|
||||||
|
QString title = FormatTitle(file);
|
||||||
|
setWindowTitle(title);
|
||||||
|
|
||||||
|
QVBoxLayout *mainLayout = new QVBoxLayout();
|
||||||
|
QHBoxLayout *btnLayout = new QHBoxLayout();
|
||||||
|
QPushButton *quit = new QPushButton(tr("Close"));
|
||||||
|
QTextEdit *edit = new QTextEdit();
|
||||||
|
edit->setReadOnly(true);
|
||||||
|
|
||||||
|
mainLayout->addWidget(edit);
|
||||||
|
mainLayout->addLayout(btnLayout);
|
||||||
|
btnLayout->addStretch();
|
||||||
|
btnLayout->addWidget(quit);
|
||||||
|
setLayout(mainLayout);
|
||||||
|
|
||||||
|
connect(quit, SIGNAL(clicked()), this, SLOT(close()));
|
||||||
|
|
||||||
|
LoadTextFile(file, edit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileViewDialog::LoadTextFile(const QString &filename, QTextEdit *edit)
|
||||||
|
{
|
||||||
|
QFile file(filename);
|
||||||
|
if (!file.exists())
|
||||||
|
{
|
||||||
|
QString msg(tr("Could not find the file:\n"));
|
||||||
|
msg += filename;
|
||||||
|
QMessageBox msgbox(QMessageBox::Critical,
|
||||||
|
tr("Cppcheck"),
|
||||||
|
msg,
|
||||||
|
QMessageBox::Ok,
|
||||||
|
this);
|
||||||
|
msgbox.exec();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||||
|
if (!file.isReadable())
|
||||||
|
{
|
||||||
|
QString msg(tr("Could not read the file:\n"));
|
||||||
|
msg += filename;
|
||||||
|
QMessageBox msgbox(QMessageBox::Critical,
|
||||||
|
tr("Cppcheck"),
|
||||||
|
msg,
|
||||||
|
QMessageBox::Ok,
|
||||||
|
this);
|
||||||
|
msgbox.exec();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QByteArray filedata = file.readAll();
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
QString filestringdata(filedata);
|
||||||
|
edit->setPlainText(filestringdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString FileViewDialog::FormatTitle(const QString &filename)
|
||||||
|
{
|
||||||
|
QString title(filename);
|
||||||
|
if (title.startsWith(":"))
|
||||||
|
{
|
||||||
|
title.remove(0, 1);
|
||||||
|
}
|
||||||
|
return title;
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Cppcheck - A tool for static C/C++ code analysis
|
||||||
|
* Copyright (C) 2007-2009 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/
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _FILEVIEW_DIALOG_H_
|
||||||
|
#define _FILEVIEW_DIALOG_H_
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
class QWidget;
|
||||||
|
class QTextEdit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief File view -dialog.
|
||||||
|
* This dialog shows text files. It is used for showing the license file and
|
||||||
|
* the authors list.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class FileViewDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
FileViewDialog(const QString &file, QWidget *parent = 0);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Load text file contents to edit control.
|
||||||
|
*
|
||||||
|
* @param filename File to load.
|
||||||
|
* @param edit Control where to load the file contents.
|
||||||
|
*/
|
||||||
|
void LoadTextFile(const QString &filename, QTextEdit *edit);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Format dialog title from filename.
|
||||||
|
*
|
||||||
|
* @param filename File to load.
|
||||||
|
*/
|
||||||
|
QString FormatTitle(const QString &filename);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _FILEVIEW_DIALOG_H_
|
|
@ -26,6 +26,7 @@ HEADERS += mainwindow.h \
|
||||||
applicationdialog.h \
|
applicationdialog.h \
|
||||||
aboutdialog.h \
|
aboutdialog.h \
|
||||||
common.h \
|
common.h \
|
||||||
|
fileviewdialog.h \
|
||||||
../src/checkautovariables.h \
|
../src/checkautovariables.h \
|
||||||
../src/checkdangerousfunctions.h \
|
../src/checkdangerousfunctions.h \
|
||||||
../src/checkheaders.h \
|
../src/checkheaders.h \
|
||||||
|
@ -60,6 +61,7 @@ SOURCES += main.cpp \
|
||||||
applicationlist.cpp \
|
applicationlist.cpp \
|
||||||
applicationdialog.cpp \
|
applicationdialog.cpp \
|
||||||
aboutdialog.cpp \
|
aboutdialog.cpp \
|
||||||
|
fileviewdialog.cpp \
|
||||||
../src/checkautovariables.cpp \
|
../src/checkautovariables.cpp \
|
||||||
../src/checkdangerousfunctions.cpp \
|
../src/checkdangerousfunctions.cpp \
|
||||||
../src/checkmemoryleak.cpp \
|
../src/checkmemoryleak.cpp \
|
||||||
|
|
|
@ -12,5 +12,8 @@
|
||||||
<file>images/process-stop.png</file>
|
<file>images/process-stop.png</file>
|
||||||
<file>images/text-x-generic.png</file>
|
<file>images/text-x-generic.png</file>
|
||||||
<file>images/view-refresh.png</file>
|
<file>images/view-refresh.png</file>
|
||||||
|
|
||||||
|
<file alias="COPYING">../COPYING</file>
|
||||||
|
<file alias="AUTHORS">../AUTHORS</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <QToolBar>
|
#include <QToolBar>
|
||||||
#include <QKeySequence>
|
#include <QKeySequence>
|
||||||
#include "aboutdialog.h"
|
#include "aboutdialog.h"
|
||||||
|
#include "fileviewdialog.h"
|
||||||
#include "../src/filelister.h"
|
#include "../src/filelister.h"
|
||||||
#include "../src/cppcheckexecutor.h"
|
#include "../src/cppcheckexecutor.h"
|
||||||
|
|
||||||
|
@ -47,6 +48,8 @@ MainWindow::MainWindow() :
|
||||||
mActionShowCollapseAll(tr("Collapse all"), this),
|
mActionShowCollapseAll(tr("Collapse all"), this),
|
||||||
mActionShowExpandAll(tr("Expand all"), this),
|
mActionShowExpandAll(tr("Expand all"), this),
|
||||||
mActionAbout(tr("About"), this),
|
mActionAbout(tr("About"), this),
|
||||||
|
mActionShowLicense(tr("License..."), this),
|
||||||
|
mActionShowAuthors(tr("Authors..."), this),
|
||||||
mActionStop(tr("Stop checking"), this),
|
mActionStop(tr("Stop checking"), this),
|
||||||
mActionSave(tr("Save results to a file"), this),
|
mActionSave(tr("Save results to a file"), this),
|
||||||
mResults(mSettings, mApplications)
|
mResults(mSettings, mApplications)
|
||||||
|
@ -84,6 +87,9 @@ MainWindow::MainWindow() :
|
||||||
menuprogram->addAction(&mActionSettings);
|
menuprogram->addAction(&mActionSettings);
|
||||||
|
|
||||||
QMenu *menuHelp = menuBar()->addMenu(tr("&Help"));
|
QMenu *menuHelp = menuBar()->addMenu(tr("&Help"));
|
||||||
|
menuHelp->addAction(&mActionShowLicense);
|
||||||
|
menuHelp->addAction(&mActionShowAuthors);
|
||||||
|
menuHelp->addSeparator();
|
||||||
menuHelp->addAction(&mActionAbout);
|
menuHelp->addAction(&mActionAbout);
|
||||||
|
|
||||||
setCentralWidget(&mResults);
|
setCentralWidget(&mResults);
|
||||||
|
@ -110,6 +116,8 @@ MainWindow::MainWindow() :
|
||||||
connect(&mActionSave, SIGNAL(triggered()), this, SLOT(Save()));
|
connect(&mActionSave, SIGNAL(triggered()), this, SLOT(Save()));
|
||||||
|
|
||||||
connect(&mActionAbout, SIGNAL(triggered()), this, SLOT(About()));
|
connect(&mActionAbout, SIGNAL(triggered()), this, SLOT(About()));
|
||||||
|
connect(&mActionShowLicense, SIGNAL(triggered()), this, SLOT(ShowLicense()));
|
||||||
|
connect(&mActionShowAuthors, SIGNAL(triggered()), this, SLOT(ShowAuthors()));
|
||||||
connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
|
connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
|
||||||
connect(&mResults, SIGNAL(GotResults()), this, SLOT(ResultsAdded()));
|
connect(&mResults, SIGNAL(GotResults()), this, SLOT(ResultsAdded()));
|
||||||
|
|
||||||
|
@ -434,9 +442,20 @@ void MainWindow::About()
|
||||||
version.replace("Cppcheck ", "");
|
version.replace("Cppcheck ", "");
|
||||||
|
|
||||||
AboutDialog *dlg = new AboutDialog(version, this);
|
AboutDialog *dlg = new AboutDialog(version, this);
|
||||||
dlg->show();
|
dlg->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowLicense()
|
||||||
|
{
|
||||||
|
FileViewDialog *dlg = new FileViewDialog(":COPYING", this);
|
||||||
|
dlg->exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowAuthors()
|
||||||
|
{
|
||||||
|
FileViewDialog *dlg = new FileViewDialog(":AUTHORS", this);
|
||||||
|
dlg->exec();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::Save()
|
void MainWindow::Save()
|
||||||
{
|
{
|
||||||
|
|
|
@ -119,6 +119,17 @@ public slots:
|
||||||
*/
|
*/
|
||||||
void About();
|
void About();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Slot to to show license text
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void ShowLicense();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Slot to to show authors list
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void ShowAuthors();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Slot to stop processing files
|
* @brief Slot to stop processing files
|
||||||
|
@ -230,7 +241,6 @@ protected:
|
||||||
*/
|
*/
|
||||||
QAction mActionReCheck;
|
QAction mActionReCheck;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Menu action to check a directory
|
* @brief Menu action to check a directory
|
||||||
*
|
*
|
||||||
|
@ -298,11 +308,23 @@ protected:
|
||||||
QAction mActionShowExpandAll;
|
QAction mActionShowExpandAll;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Action show about dialog
|
* @brief Action to show about dialog
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
QAction mActionAbout;
|
QAction mActionAbout;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Action to show license text
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
QAction mActionShowLicense;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Action to show authors list
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
QAction mActionShowAuthors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Action stop checking files
|
* @brief Action stop checking files
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue