diff --git a/gui/projectfile.ui b/gui/projectfile.ui
index 6cc570c31..aa82ad1cc 100644
--- a/gui/projectfile.ui
+++ b/gui/projectfile.ui
@@ -6,8 +6,8 @@
0
0
- 400
- 159
+ 467
+ 313
@@ -15,99 +15,152 @@
-
-
-
-
-
-
- Project:
-
-
- mEditProjectRoot
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- Paths:
-
-
- mEditPaths
-
-
-
- -
-
-
- -
-
-
- Browse...
-
-
-
-
-
- -
-
-
-
-
-
- Include paths:
-
-
- mEditIncludePaths
-
-
-
- -
-
-
- -
-
-
- Browse...
-
-
-
-
-
- -
-
-
-
-
-
- Defines:
-
-
- mEditDefines
-
-
-
- -
-
-
-
-
- -
-
-
- Qt::Vertical
+
+
+ 1
-
-
- 20
- 40
-
-
-
+
+
+ Project
+
+
+
-
+
+
-
+
+
+ Project:
+
+
+ mEditProjectRoot
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ Paths:
+
+
+ mEditPaths
+
+
+
+ -
+
+
+ -
+
+
+ Browse...
+
+
+
+
+
+ -
+
+
-
+
+
+ Defines:
+
+
+ mEditDefines
+
+
+
+ -
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ Includes
+
+
+ -
+
+
+ Include directories:
+
+
+
+ -
+
+
-
+
+
+ QAbstractItemView::SelectRows
+
+
+
+ -
+
+
-
+
+
+ Add...
+
+
+
+ -
+
+
+ Edit
+
+
+
+ -
+
+
+ Remove
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+
+
-
@@ -122,13 +175,16 @@
+ mButtons
+ tabWidget
mEditProjectRoot
mEditPaths
mBtnBrowsePaths
- mEditIncludePaths
- mBtnBrowseIncludes
mEditDefines
- mButtons
+ mListIncludeDirs
+ mBtnAddInclude
+ mBtnEditInclude
+ mBtnRemoveInclude
diff --git a/gui/projectfiledialog.cpp b/gui/projectfiledialog.cpp
index 2eaddf2d3..26a5889f4 100644
--- a/gui/projectfiledialog.cpp
+++ b/gui/projectfiledialog.cpp
@@ -37,8 +37,20 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
setWindowTitle(title);
connect(mUI.mButtons, SIGNAL(accepted()), this, SLOT(accept()));
- connect(mUI.mBtnBrowseIncludes, SIGNAL(clicked()), this, SLOT(BrowseIncludes()));
+ connect(mUI.mBtnAddInclude, SIGNAL(clicked()), this, SLOT(AddIncludeDir()));
connect(mUI.mBtnBrowsePaths, SIGNAL(clicked()), this, SLOT(BrowsePaths()));
+ connect(mUI.mBtnEditInclude, SIGNAL(clicked()), this, SLOT(EditIncludeDir()));
+ connect(mUI.mBtnRemoveInclude, SIGNAL(clicked()), this, SLOT(RemoveIncludeDir()));
+}
+
+void ProjectFileDialog::AddIncludeDir(const QString &dir)
+{
+ if (dir.isNull() || dir.isEmpty())
+ return;
+
+ QListWidgetItem *item = new QListWidgetItem(dir);
+ item->setFlags(item->flags() | Qt::ItemIsEditable);
+ mUI.mListIncludeDirs->addItem(item);
}
QString ProjectFileDialog::GetRootPath() const
@@ -50,18 +62,14 @@ QString ProjectFileDialog::GetRootPath() const
QStringList ProjectFileDialog::GetIncludePaths() const
{
- QString include = mUI.mEditIncludePaths->text();
- QStringList includes;
- if (!include.isEmpty())
+ const int count = mUI.mListIncludeDirs->count();
+ QStringList includePaths;
+ for (int i = 0; i < count; i++)
{
- include = include.trimmed();
- include = QDir::fromNativeSeparators(include);
- if (include.indexOf(';') != -1)
- includes = include.split(";");
- else
- includes.append(include);
+ QListWidgetItem *item = mUI.mListIncludeDirs->item(i);
+ includePaths << item->text();
}
- return includes;
+ return includePaths;
}
QStringList ProjectFileDialog::GetDefines() const
@@ -102,18 +110,11 @@ void ProjectFileDialog::SetRootPath(const QString &root)
void ProjectFileDialog::SetIncludepaths(const QStringList &includes)
{
- QString includestr;
QString dir;
foreach(dir, includes)
{
- includestr += dir;
- includestr += ";";
+ AddIncludeDir(dir);
}
- // Remove ; from the end of the string
- if (includestr.endsWith(';'))
- includestr = includestr.left(includestr.length() - 1);
- includestr = QDir::toNativeSeparators(includestr);
- mUI.mEditIncludePaths->setText(includestr);
}
void ProjectFileDialog::SetDefines(const QStringList &defines)
@@ -147,7 +148,7 @@ void ProjectFileDialog::SetPaths(const QStringList &paths)
mUI.mEditPaths->setText(pathstr);
}
-void ProjectFileDialog::BrowseIncludes()
+void ProjectFileDialog::AddIncludeDir()
{
QString selectedDir = QFileDialog::getExistingDirectory(this,
tr("Select include directory"),
@@ -155,7 +156,7 @@ void ProjectFileDialog::BrowseIncludes()
if (!selectedDir.isEmpty())
{
- AppendDirname(mUI.mEditIncludePaths, selectedDir);
+ AddIncludeDir(selectedDir);
}
}
@@ -180,3 +181,16 @@ void ProjectFileDialog::AppendDirname(QLineEdit *edit, const QString &dir)
wholeText += QDir::separator();
edit->setText(wholeText);
}
+
+void ProjectFileDialog::RemoveIncludeDir()
+{
+ const int row = mUI.mListIncludeDirs->currentRow();
+ QListWidgetItem *item = mUI.mListIncludeDirs->takeItem(row);
+ delete item;
+}
+
+void ProjectFileDialog::EditIncludeDir()
+{
+ QListWidgetItem *item = mUI.mListIncludeDirs->currentItem();
+ mUI.mListIncludeDirs->editItem(item);
+}
diff --git a/gui/projectfiledialog.h b/gui/projectfiledialog.h
index acfd45667..6c4e75692 100644
--- a/gui/projectfiledialog.h
+++ b/gui/projectfiledialog.h
@@ -93,16 +93,33 @@ public:
protected slots:
/**
* @brief Browse for include directory.
- * Allow user to choose new include directory.
+ * Allow user to add new include directory to the list.
*/
- void BrowseIncludes();
+ void AddIncludeDir();
/**
* @brief Browse for checked directory.
* Allow user to choose new checked directory.
*/
void BrowsePaths();
+ /**
+ * @brief Remove include directory from the list.
+ */
+ void RemoveIncludeDir();
+
+ /**
+ * @brief Edit include directory in the list.
+ */
+ void EditIncludeDir();
+
protected:
+
+ /**
+ * @brief Add new indlude directory.
+ * @param dir Directory to add.
+ */
+ void AddIncludeDir(const QString &dir);
+
/**
* @brief Append new path to the edit control.
* @param edit Edit control to modify.