Skip to content

Commit

Permalink
Adding file selection dialog for project generation.
Browse files Browse the repository at this point in the history
  • Loading branch information
fpoussin committed Dec 10, 2015
1 parent 86a8b2a commit d44477c
Show file tree
Hide file tree
Showing 6 changed files with 209 additions and 12 deletions.
16 changes: 15 additions & 1 deletion doxygen.cpp
Expand Up @@ -20,6 +20,7 @@
**/

#include "doxygen.h"
#include "doxygenfilesdialog.h"

#include <QObject>
#include <plugins/cppeditor/cppeditorconstants.h>
Expand Down Expand Up @@ -552,7 +553,20 @@ uint Doxygen::documentProject(ProjectExplorer::Project *p, const DoxygenSettings

uint count = 0;
Core::EditorManager *editorManager = Core::EditorManager::instance();
QStringList files = p->files(ProjectExplorer::Project::ExcludeGeneratedFiles);
QStringList allFiles = p->files(ProjectExplorer::Project::ExcludeGeneratedFiles);
QStringList files;

allFiles = allFiles.filter(QRegExp("\\.(h|hpp|c|cpp)$"));
DoxygenFilesDialog *dialog = new DoxygenFilesDialog(allFiles, NULL);

if (dialog->result() != QDialog::Accepted)
{
delete dialog;
return 0;
}
dialog->getFilesList(&files);
delete dialog;

QProgressDialog progress("Processing files...", "Cancel", 0, files.size());
progress.setWindowModality(Qt::WindowModal);

Expand Down
9 changes: 6 additions & 3 deletions doxygen.pro
Expand Up @@ -6,18 +6,21 @@ SOURCES += doxygenplugin.cpp \
doxygensettings.cpp \
doxygensettingsstruct.cpp \
doxygensettingswidget.cpp \
doxygen.cpp
doxygen.cpp \
doxygenfilesdialog.cpp

HEADERS += doxygenplugin.h \
doxygen_global.h \
doxygenconstants.h \
doxygensettings.h \
doxygensettingsstruct.h \
doxygensettingswidget.h \
doxygen.h
doxygen.h \
doxygenfilesdialog.h

FORMS += \
doxygensettingswidget.ui
doxygensettingswidget.ui \
doxygenfilesdialog.ui

RESOURCES += doxygen.qrc

Expand Down
65 changes: 65 additions & 0 deletions doxygenfilesdialog.cpp
@@ -0,0 +1,65 @@
#include "doxygenfilesdialog.h"
#include "ui_doxygenfilesdialog.h"

#include <QListWidget>
#include <QListWidgetItem>

DoxygenFilesDialog::DoxygenFilesDialog(const QStringList &in, QWidget *parent) :
QDialog(parent),
ui(new Ui::DoxygenFilesDialog)
{
ui->setupUi(this);

QStringListIterator it(in);

while (it.hasNext())
{
QListWidgetItem *listItem = new QListWidgetItem(it.next());
listItem->setCheckState(Qt::Checked);
ui->listWidget->addItem(listItem);
}

connect(ui->b_all, SIGNAL(clicked(bool)), this, SLOT(checkAll()));
connect(ui->b_none, SIGNAL(clicked(bool)), this, SLOT(checkNone()));
connect(ui->b_cancel, SIGNAL(clicked(bool)), this, SLOT(reject()));
connect(ui->b_ok, SIGNAL(clicked(bool)), this, SLOT(accept()));

this->exec();
}

DoxygenFilesDialog::~DoxygenFilesDialog()
{
delete ui;
}

uint DoxygenFilesDialog::getFilesList(QStringList *out)
{
uint count = 0;
for (int i=0; i< ui->listWidget->count(); i++)
{
if (ui->listWidget->item(i)->checkState() == Qt::Checked)
{
out->append(ui->listWidget->item(i)->text());
count++;
}
}
return count;
}

void DoxygenFilesDialog::checkAll()
{
for (int i=0; i< ui->listWidget->count(); i++)
{
if (ui->listWidget->item(i)->checkState() == Qt::Unchecked)
ui->listWidget->item(i)->setCheckState(Qt::Checked);
}
}

void DoxygenFilesDialog::checkNone()
{
for (int i=0; i< ui->listWidget->count(); i++)
{
if (ui->listWidget->item(i)->checkState() == Qt::Checked)
ui->listWidget->item(i)->setCheckState(Qt::Unchecked);
}
}
27 changes: 27 additions & 0 deletions doxygenfilesdialog.h
@@ -0,0 +1,27 @@
#ifndef DOXYGENFILESDIALOG_H
#define DOXYGENFILESDIALOG_H

#include <QDialog>

namespace Ui {
class DoxygenFilesDialog;
}

class DoxygenFilesDialog : public QDialog
{
Q_OBJECT

public:
explicit DoxygenFilesDialog(const QStringList &in, QWidget *parent = 0);
~DoxygenFilesDialog();
uint getFilesList(QStringList *out);

private:
Ui::DoxygenFilesDialog *ui;

private slots:
void checkAll();
void checkNone();
};

#endif // DOXYGENFILESDIALOG_H
93 changes: 93 additions & 0 deletions doxygenfilesdialog.ui
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DoxygenFilesDialog</class>
<widget class="QDialog" name="DoxygenFilesDialog">
<property name="windowModality">
<enum>Qt::ApplicationModal</enum>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Select files to document</string>
</property>
<property name="modal">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QListWidget" name="listWidget">
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="minimumSize">
<size>
<width>0</width>
<height>50</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="b_all">
<property name="text">
<string>Select All</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_none">
<property name="text">
<string>Select None</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="b_ok">
<property name="text">
<string>Ok</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_cancel">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
11 changes: 3 additions & 8 deletions doxygenplugin.cpp
Expand Up @@ -222,14 +222,9 @@ void DoxygenPlugin::documentSpecificProject()

void DoxygenPlugin::documentCurrentProject()
{
if (QMessageBox::question((QWidget*)this->parent(),
"Doxygen", "Document current project?",
QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
{
uint count = Doxygen::instance()->documentCurrentProject(settings());
QString msg;
this->externalString(msg.sprintf("Doxygen blocs generated: %u", count));
}
uint count = Doxygen::instance()->documentCurrentProject(settings());
QString msg;
this->externalString(msg.sprintf("Doxygen blocs generated: %u", count));
}

bool DoxygenPlugin::buildDocumentation() // TODO: refactor
Expand Down

0 comments on commit d44477c

Please sign in to comment.