Merged gui branch to master.
This commit is contained in:
parent
c6e8d61db3
commit
0953995ee3
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef COMMON_H
|
||||||
|
#define COMMON_H
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SHOW_ALL,
|
||||||
|
SHOW_STYLE,
|
||||||
|
SHOW_SECURITY,
|
||||||
|
SHOW_UNUSED,
|
||||||
|
SHOW_ERRORS,
|
||||||
|
SHOW_NONE
|
||||||
|
}
|
||||||
|
ShowTypes;
|
||||||
|
|
||||||
|
#endif
|
|
@ -34,6 +34,11 @@ MainWindow::MainWindow() :
|
||||||
mActionReCheck(tr("Recheck files"), this),
|
mActionReCheck(tr("Recheck files"), this),
|
||||||
mActionCheckDirectory(tr("Check &directory"), this),
|
mActionCheckDirectory(tr("Check &directory"), this),
|
||||||
mActionSettings(tr("&Settings"), this),
|
mActionSettings(tr("&Settings"), this),
|
||||||
|
mActionShowAll(tr("Show &more errors"), this),
|
||||||
|
mActionShowSecurity(tr("Show &security errors"), this),
|
||||||
|
mActionShowStyle(tr("Show s&tyle errors"), this),
|
||||||
|
mActionShowUnused(tr("Show errors on &unused functions"), this),
|
||||||
|
mActionShowErrors(tr("Show &common errors"), this),
|
||||||
mResults(mSettings)
|
mResults(mSettings)
|
||||||
{
|
{
|
||||||
QMenu *menu = menuBar()->addMenu(tr("&File"));
|
QMenu *menu = menuBar()->addMenu(tr("&File"));
|
||||||
|
@ -44,6 +49,19 @@ MainWindow::MainWindow() :
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
menu->addAction(&mActionExit);
|
menu->addAction(&mActionExit);
|
||||||
|
|
||||||
|
QMenu *menuview = menuBar()->addMenu(tr("&View"));
|
||||||
|
mActionShowAll.setCheckable(true);
|
||||||
|
mActionShowSecurity.setCheckable(true);
|
||||||
|
mActionShowStyle.setCheckable(true);
|
||||||
|
mActionShowUnused.setCheckable(true);
|
||||||
|
mActionShowErrors.setCheckable(true);
|
||||||
|
|
||||||
|
menuview->addAction(&mActionShowAll);
|
||||||
|
menuview->addAction(&mActionShowSecurity);
|
||||||
|
menuview->addAction(&mActionShowStyle);
|
||||||
|
menuview->addAction(&mActionShowUnused);
|
||||||
|
menuview->addAction(&mActionShowErrors);
|
||||||
|
|
||||||
QMenu *menuprogram = menuBar()->addMenu(tr("&Program"));
|
QMenu *menuprogram = menuBar()->addMenu(tr("&Program"));
|
||||||
menuprogram->addAction(&mActionSettings);
|
menuprogram->addAction(&mActionSettings);
|
||||||
|
|
||||||
|
@ -55,6 +73,13 @@ MainWindow::MainWindow() :
|
||||||
connect(&mActionCheckDirectory, SIGNAL(triggered()), this, SLOT(CheckDirectory()));
|
connect(&mActionCheckDirectory, SIGNAL(triggered()), this, SLOT(CheckDirectory()));
|
||||||
connect(&mActionSettings, SIGNAL(triggered()), this, SLOT(ProgramSettings()));
|
connect(&mActionSettings, SIGNAL(triggered()), this, SLOT(ProgramSettings()));
|
||||||
connect(&mActionClearResults, SIGNAL(triggered()), this, SLOT(ClearResults()));
|
connect(&mActionClearResults, SIGNAL(triggered()), this, SLOT(ClearResults()));
|
||||||
|
|
||||||
|
connect(&mActionShowAll, SIGNAL(toggled(bool)), this, SLOT(ShowAll(bool)));
|
||||||
|
connect(&mActionShowSecurity, SIGNAL(toggled(bool)), this, SLOT(ShowSecurity(bool)));
|
||||||
|
connect(&mActionShowStyle, SIGNAL(toggled(bool)), this, SLOT(ShowStyle(bool)));
|
||||||
|
connect(&mActionShowUnused, SIGNAL(toggled(bool)), this, SLOT(ShowUnused(bool)));
|
||||||
|
connect(&mActionShowErrors, SIGNAL(toggled(bool)), this, SLOT(ShowErrors(bool)));
|
||||||
|
|
||||||
connect(&mActionReCheck, SIGNAL(triggered()), this, SLOT(ReCheck()));
|
connect(&mActionReCheck, SIGNAL(triggered()), this, SLOT(ReCheck()));
|
||||||
connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
|
connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
@ -77,6 +102,18 @@ void MainWindow::LoadSettings()
|
||||||
resize(mSettings.value(tr("Window width"), 800).toInt(),
|
resize(mSettings.value(tr("Window width"), 800).toInt(),
|
||||||
mSettings.value(tr("Window height"), 600).toInt());
|
mSettings.value(tr("Window height"), 600).toInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mActionShowAll.setChecked(mSettings.value(tr("Show all"), true).toBool());
|
||||||
|
mActionShowSecurity.setChecked(mSettings.value(tr("Show security"), true).toBool());
|
||||||
|
mActionShowStyle.setChecked(mSettings.value(tr("Show style"), true).toBool());
|
||||||
|
mActionShowUnused.setChecked(mSettings.value(tr("Show unused"), true).toBool());
|
||||||
|
mActionShowErrors.setChecked(mSettings.value(tr("Show errors"), true).toBool());
|
||||||
|
|
||||||
|
mResults.ShowResults(SHOW_ALL, mActionShowAll.isChecked());
|
||||||
|
mResults.ShowResults(SHOW_ERRORS, mActionShowErrors.isChecked());
|
||||||
|
mResults.ShowResults(SHOW_SECURITY, mActionShowSecurity.isChecked());
|
||||||
|
mResults.ShowResults(SHOW_STYLE, mActionShowStyle.isChecked());
|
||||||
|
mResults.ShowResults(SHOW_UNUSED, mActionShowUnused.isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::SaveSettings()
|
void MainWindow::SaveSettings()
|
||||||
|
@ -84,6 +121,12 @@ void MainWindow::SaveSettings()
|
||||||
mSettings.setValue(tr("Window width"), size().width());
|
mSettings.setValue(tr("Window width"), size().width());
|
||||||
mSettings.setValue(tr("Window height"), size().height());
|
mSettings.setValue(tr("Window height"), size().height());
|
||||||
mSettings.setValue(tr("Window maximized"), isMaximized());
|
mSettings.setValue(tr("Window maximized"), isMaximized());
|
||||||
|
|
||||||
|
mSettings.setValue(tr("Show all"), mActionShowAll.isChecked());
|
||||||
|
mSettings.setValue(tr("Show security"), mActionShowSecurity.isChecked());
|
||||||
|
mSettings.setValue(tr("Show style"), mActionShowStyle.isChecked());
|
||||||
|
mSettings.setValue(tr("Show unused"), mActionShowUnused.isChecked());
|
||||||
|
mSettings.setValue(tr("Show errors"), mActionShowErrors.isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -224,3 +267,29 @@ void MainWindow::EnableCheckButtons(bool enable)
|
||||||
mActionCheckDirectory.setEnabled(enable);
|
mActionCheckDirectory.setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::ShowAll(bool checked)
|
||||||
|
{
|
||||||
|
mResults.ShowResults(SHOW_ALL, checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowSecurity(bool checked)
|
||||||
|
{
|
||||||
|
mResults.ShowResults(SHOW_SECURITY, checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowStyle(bool checked)
|
||||||
|
{
|
||||||
|
mResults.ShowResults(SHOW_STYLE, checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowUnused(bool checked)
|
||||||
|
{
|
||||||
|
mResults.ShowResults(SHOW_UNUSED, checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowErrors(bool checked)
|
||||||
|
{
|
||||||
|
mResults.ShowResults(SHOW_ERRORS, checked);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,12 @@ public slots:
|
||||||
void ReCheck();
|
void ReCheck();
|
||||||
void ClearResults();
|
void ClearResults();
|
||||||
|
|
||||||
|
void ShowAll(bool checked);
|
||||||
|
void ShowSecurity(bool checked);
|
||||||
|
void ShowStyle(bool checked);
|
||||||
|
void ShowUnused(bool checked);
|
||||||
|
void ShowErrors(bool checked);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Slot for check directory menu item
|
* @brief Slot for check directory menu item
|
||||||
*
|
*
|
||||||
|
@ -130,6 +136,13 @@ protected:
|
||||||
*/
|
*/
|
||||||
QAction mActionSettings;
|
QAction mActionSettings;
|
||||||
|
|
||||||
|
QAction mActionShowAll;
|
||||||
|
QAction mActionShowSecurity;
|
||||||
|
QAction mActionShowStyle;
|
||||||
|
QAction mActionShowUnused;
|
||||||
|
QAction mActionShowErrors;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Results for checking
|
* @brief Results for checking
|
||||||
|
|
|
@ -63,20 +63,33 @@ void ResultsTree::AddErrorItem(const QString &file,
|
||||||
if (realfile.isEmpty())
|
if (realfile.isEmpty())
|
||||||
realfile = "Undefined file";
|
realfile = "Undefined file";
|
||||||
|
|
||||||
QStandardItem *fileitem = FindFileItem(realfile);
|
ErrorItem item;
|
||||||
|
item.file = realfile;
|
||||||
|
item.type = SeverityToShowType(severity);
|
||||||
|
item.message = message;
|
||||||
|
item.files = files;
|
||||||
|
item.lines = lines;
|
||||||
|
mItems << item;
|
||||||
|
|
||||||
if (!fileitem)
|
if (mShowTypes[item.type])
|
||||||
{
|
{
|
||||||
//qDebug()<<"No previous error for file"<<realfile;
|
AddItem(mItems.size() - 1);
|
||||||
fileitem = CreateItem(realfile);
|
|
||||||
mModel.appendRow(fileitem);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QList<QStandardItem*> list;
|
|
||||||
list << CreateItem(severity);
|
ShowTypes ResultsTree::SeverityToShowType(const QString &severity)
|
||||||
list << CreateItem(QString("%1").arg(lines[0]));
|
{
|
||||||
list << CreateItem(message);
|
if (severity == "all")
|
||||||
fileitem->appendRow(list);
|
return SHOW_ALL;
|
||||||
|
if (severity == "error")
|
||||||
|
return SHOW_ERRORS;
|
||||||
|
if (severity == "style")
|
||||||
|
return SHOW_STYLE;
|
||||||
|
if (severity == "security")
|
||||||
|
return SHOW_SECURITY;
|
||||||
|
|
||||||
|
return SHOW_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStandardItem *ResultsTree::FindFileItem(const QString &name)
|
QStandardItem *ResultsTree::FindFileItem(const QString &name)
|
||||||
|
@ -90,6 +103,7 @@ QStandardItem *ResultsTree::FindFileItem(const QString &name)
|
||||||
void ResultsTree::Clear()
|
void ResultsTree::Clear()
|
||||||
{
|
{
|
||||||
mModel.removeRows(0, mModel.rowCount());
|
mModel.removeRows(0, mModel.rowCount());
|
||||||
|
mItems.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResultsTree::LoadSettings()
|
void ResultsTree::LoadSettings()
|
||||||
|
@ -110,3 +124,71 @@ void ResultsTree::SaveSettings()
|
||||||
mSettings.setValue(temp, columnWidth(i));
|
mSettings.setValue(temp, columnWidth(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResultsTree::ShowResults(ShowTypes type, bool show)
|
||||||
|
{
|
||||||
|
if (type != SHOW_NONE)
|
||||||
|
{
|
||||||
|
if (mShowTypes[type] != show)
|
||||||
|
{
|
||||||
|
mShowTypes[type] = show;
|
||||||
|
RefreshTree();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ResultsTree::RefreshTree()
|
||||||
|
{
|
||||||
|
mModel.removeRows(0, mModel.rowCount());
|
||||||
|
for (int i = 0;i < mItems.size();i++)
|
||||||
|
{
|
||||||
|
if (mShowTypes[mItems[i].type])
|
||||||
|
{
|
||||||
|
AddItem(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ResultsTree::ShowTypeToString(ShowTypes type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case SHOW_ALL:
|
||||||
|
return "all";
|
||||||
|
case SHOW_ERRORS:
|
||||||
|
return "error";
|
||||||
|
case SHOW_STYLE:
|
||||||
|
return "style";
|
||||||
|
case SHOW_SECURITY:
|
||||||
|
return "security";
|
||||||
|
case SHOW_UNUSED:
|
||||||
|
return "unused";
|
||||||
|
case SHOW_NONE:
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ResultsTree::AddItem(int index)
|
||||||
|
{
|
||||||
|
if (index >= 0 && index < mItems.size())
|
||||||
|
{
|
||||||
|
QStandardItem *fileitem = FindFileItem(mItems[index].file);
|
||||||
|
if (!fileitem)
|
||||||
|
{
|
||||||
|
//qDebug()<<"No previous error for file"<<realfile;
|
||||||
|
fileitem = CreateItem(mItems[index].file);
|
||||||
|
mModel.appendRow(fileitem);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QStandardItem*> list;
|
||||||
|
list << CreateItem(ShowTypeToString(mItems[index].type));
|
||||||
|
list << CreateItem(QString("%1").arg(mItems[index].lines[0]));
|
||||||
|
list << CreateItem(mItems[index].message);
|
||||||
|
fileitem->appendRow(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <QStandardItemModel>
|
#include <QStandardItemModel>
|
||||||
#include <QStandardItem>
|
#include <QStandardItem>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Cppcheck's results are shown in this tree
|
* @brief Cppcheck's results are shown in this tree
|
||||||
|
@ -55,7 +55,24 @@ public:
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
|
void ShowResults(ShowTypes type, bool show);
|
||||||
protected:
|
protected:
|
||||||
|
void AddItem(int index);
|
||||||
|
void RefreshTree();
|
||||||
|
ShowTypes SeverityToShowType(const QString &severity);
|
||||||
|
QString ShowTypeToString(ShowTypes type);
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
QString file;
|
||||||
|
ShowTypes type;
|
||||||
|
QString message;
|
||||||
|
QStringList files;
|
||||||
|
QList<int> lines;
|
||||||
|
}ErrorItem;
|
||||||
|
|
||||||
|
QList<ErrorItem> mItems;
|
||||||
/**
|
/**
|
||||||
* @brief Load all settings
|
* @brief Load all settings
|
||||||
* Colum widths
|
* Colum widths
|
||||||
|
@ -95,6 +112,8 @@ protected:
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
QSettings &mSettings;
|
QSettings &mSettings;
|
||||||
|
|
||||||
|
bool mShowTypes[SHOW_NONE];
|
||||||
private:
|
private:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -63,3 +63,8 @@ void ResultsView::Error(const QString &file,
|
||||||
{
|
{
|
||||||
mTree->AddErrorItem(file, severity, message, files, lines);
|
mTree->AddErrorItem(file, severity, message, files, lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResultsView::ShowResults(ShowTypes type, bool show)
|
||||||
|
{
|
||||||
|
mTree->ShowResults(type, show);
|
||||||
|
}
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include "../src/errorlogger.h"
|
#include "../src/errorlogger.h"
|
||||||
#include "resultstree.h"
|
#include "resultstree.h"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Widget to show cppcheck progressbar and result
|
* @brief Widget to show cppcheck progressbar and result
|
||||||
|
@ -35,9 +37,12 @@ class ResultsView : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ResultsView(QSettings &settings);
|
ResultsView(QSettings &settings);
|
||||||
virtual ~ResultsView();
|
virtual ~ResultsView();
|
||||||
|
|
||||||
|
void ShowResults(ShowTypes type, bool show);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Clear results
|
* @brief Clear results
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue