- enhancement: don't show folders that doesn't contain files in the project view
work save: - enhancement: redesigned new project unit dialog
This commit is contained in:
parent
01662a95d1
commit
2e0357e652
2
NEWS.md
2
NEWS.md
|
@ -10,6 +10,8 @@ Red Panda C++ Version 1.0.3
|
||||||
- fix: don't show tips in the editor, when selecting by mouse
|
- fix: don't show tips in the editor, when selecting by mouse
|
||||||
- fix: auto syntax check doesn't work for new files
|
- fix: auto syntax check doesn't work for new files
|
||||||
- change: don't auto jump to the first syntax error location when compile
|
- change: don't auto jump to the first syntax error location when compile
|
||||||
|
- enhancement: don't show folders that doesn't contain files in the project view
|
||||||
|
- enhancement: redesigned new project unit dialog
|
||||||
|
|
||||||
Red Panda C++ Version 1.0.2
|
Red Panda C++ Version 1.0.2
|
||||||
- enhancement: press tab in column mode won't exit column mode
|
- enhancement: press tab in column mode won't exit column mode
|
||||||
|
|
|
@ -175,6 +175,7 @@ SOURCES += \
|
||||||
widgets/newclassdialog.cpp \
|
widgets/newclassdialog.cpp \
|
||||||
widgets/newheaderdialog.cpp \
|
widgets/newheaderdialog.cpp \
|
||||||
widgets/newprojectdialog.cpp \
|
widgets/newprojectdialog.cpp \
|
||||||
|
widgets/newprojectunitdialog.cpp \
|
||||||
widgets/ojproblempropertywidget.cpp \
|
widgets/ojproblempropertywidget.cpp \
|
||||||
widgets/ojproblemsetmodel.cpp \
|
widgets/ojproblemsetmodel.cpp \
|
||||||
widgets/qconsole.cpp \
|
widgets/qconsole.cpp \
|
||||||
|
@ -321,6 +322,7 @@ HEADERS += \
|
||||||
widgets/newclassdialog.h \
|
widgets/newclassdialog.h \
|
||||||
widgets/newheaderdialog.h \
|
widgets/newheaderdialog.h \
|
||||||
widgets/newprojectdialog.h \
|
widgets/newprojectdialog.h \
|
||||||
|
widgets/newprojectunitdialog.h \
|
||||||
widgets/ojproblempropertywidget.h \
|
widgets/ojproblempropertywidget.h \
|
||||||
widgets/ojproblemsetmodel.h \
|
widgets/ojproblemsetmodel.h \
|
||||||
widgets/qconsole.h \
|
widgets/qconsole.h \
|
||||||
|
@ -384,6 +386,7 @@ FORMS += \
|
||||||
widgets/newclassdialog.ui \
|
widgets/newclassdialog.ui \
|
||||||
widgets/newheaderdialog.ui \
|
widgets/newheaderdialog.ui \
|
||||||
widgets/newprojectdialog.ui \
|
widgets/newprojectdialog.ui \
|
||||||
|
widgets/newprojectunitdialog.ui \
|
||||||
widgets/ojproblempropertywidget.ui \
|
widgets/ojproblempropertywidget.ui \
|
||||||
widgets/searchdialog.ui \
|
widgets/searchdialog.ui \
|
||||||
widgets/signalmessagedialog.ui
|
widgets/signalmessagedialog.ui
|
||||||
|
|
|
@ -79,7 +79,8 @@
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
#include "cpprefacter.h"
|
#include "cpprefacter.h"
|
||||||
|
|
||||||
#include <widgets/searchdialog.h>
|
#include "widgets/newprojectunitdialog.h"
|
||||||
|
#include "widgets/searchdialog.h"
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
@ -5934,31 +5935,59 @@ void MainWindow::newProjectUnitFile()
|
||||||
if (current.isValid()) {
|
if (current.isValid()) {
|
||||||
node = static_cast<ProjectModelNode*>(current.internalPointer());
|
node = static_cast<ProjectModelNode*>(current.internalPointer());
|
||||||
}
|
}
|
||||||
QString newFileName;
|
PProjectModelNode pNode = mProject->pointerToNode(node);
|
||||||
do {
|
|
||||||
newFileName = tr("untitled")+QString("%1").arg(getNewFileNumber());
|
|
||||||
if (mProject->options().isCpp) {
|
|
||||||
newFileName+=".cpp";
|
|
||||||
} else {
|
|
||||||
newFileName+=".c";
|
|
||||||
}
|
|
||||||
} while (fileExists(QDir(mProject->directory()).absoluteFilePath(newFileName)));
|
|
||||||
|
|
||||||
newFileName = QInputDialog::getText(
|
while (pNode && pNode->unitIndex>0) {
|
||||||
this,
|
pNode = pNode->parent.lock();
|
||||||
tr("New Project File Name"),
|
|
||||||
tr("File Name:"),
|
|
||||||
QLineEdit::Normal,
|
|
||||||
newFileName);
|
|
||||||
if (newFileName.isEmpty())
|
|
||||||
return;
|
|
||||||
if (fileExists(QDir(mProject->directory()).absoluteFilePath(newFileName))) {
|
|
||||||
QMessageBox::critical(this,tr("File Already Exists!"),
|
|
||||||
tr("File '%1' already exists!").arg(newFileName));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
PProjectUnit newUnit = mProject->newUnit(
|
|
||||||
mProject->pointerToNode(node),newFileName);
|
if (!pNode) {
|
||||||
|
pNode = mProject->rootNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString newFileName;
|
||||||
|
PProjectUnit newUnit;
|
||||||
|
if (mProject->modelType() == ProjectModelType::FileSystem) {
|
||||||
|
NewProjectUnitDialog newProjectUnitDialog;
|
||||||
|
QString folder = mProject->fileSystemNodeFolderPath(pNode);
|
||||||
|
newProjectUnitDialog.setFolder(folder);
|
||||||
|
switch (pNode->folderNodeType) {
|
||||||
|
case ProjectSpecialFolderNode::HEADERS:
|
||||||
|
newProjectUnitDialog.setSuffix("h");
|
||||||
|
break;
|
||||||
|
case ProjectSpecialFolderNode::SOURCES:
|
||||||
|
if (mProject->options().isCpp)
|
||||||
|
newProjectUnitDialog.setSuffix("cpp");
|
||||||
|
else
|
||||||
|
newProjectUnitDialog.setSuffix("c");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
newProjectUnitDialog.setSuffix("");
|
||||||
|
}
|
||||||
|
if (newProjectUnitDialog.exec()!=QDialog::Accepted) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
newFileName=newProjectUnitDialog.filename();
|
||||||
|
if (newFileName.isEmpty())
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
newFileName = QInputDialog::getText(
|
||||||
|
this,
|
||||||
|
tr("New Project File Name"),
|
||||||
|
tr("File Name:"),
|
||||||
|
QLineEdit::Normal,
|
||||||
|
newFileName);
|
||||||
|
if (newFileName.isEmpty())
|
||||||
|
return;
|
||||||
|
if (fileExists(QDir(mProject->directory()).absoluteFilePath(newFileName))) {
|
||||||
|
QMessageBox::critical(this,tr("File Already Exists!"),
|
||||||
|
tr("File '%1' already exists!").arg(newFileName));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newUnit = mProject->newUnit(
|
||||||
|
pNode,newFileName);
|
||||||
|
|
||||||
mProject->rebuildNodes();
|
mProject->rebuildNodes();
|
||||||
mProject->saveAll();
|
mProject->saveAll();
|
||||||
updateProjectView();
|
updateProjectView();
|
||||||
|
|
|
@ -370,6 +370,7 @@ void Project::rebuildNodes()
|
||||||
mUnits[idx]->node()->unitIndex = idx;
|
mUnits[idx]->node()->unitIndex = idx;
|
||||||
mUnits[idx]->node()->priority = mUnits[idx]->priority();
|
mUnits[idx]->node()->priority = mUnits[idx]->priority();
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1290,31 +1291,58 @@ void Project::createFolderNodes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void addFolderRecursively(QSet<QString>& folders, QString folder) {
|
||||||
|
if (folder.isEmpty())
|
||||||
|
return;
|
||||||
|
folders.insert(excludeTrailingPathDelimiter(folder));
|
||||||
|
QString parentFolder = QFileInfo(folder).absolutePath();
|
||||||
|
if (parentFolder==folder)
|
||||||
|
return;
|
||||||
|
addFolderRecursively(folders, parentFolder);
|
||||||
|
}
|
||||||
|
|
||||||
void Project::createFileSystemFolderNodes()
|
void Project::createFileSystemFolderNodes()
|
||||||
{
|
{
|
||||||
|
QSet<QString> headerFolders;
|
||||||
|
QSet<QString> sourceFolders;
|
||||||
|
QSet<QString> otherFolders;
|
||||||
|
for (int idx=0;idx<mUnits.count();idx++) {
|
||||||
|
QFileInfo fileInfo(mUnits[idx]->fileName());
|
||||||
|
if (isHFile(fileInfo.fileName())) {
|
||||||
|
addFolderRecursively(headerFolders,fileInfo.absolutePath());
|
||||||
|
} else if (isCFile(fileInfo.fileName())) {
|
||||||
|
addFolderRecursively(sourceFolders,fileInfo.absolutePath());
|
||||||
|
} else {
|
||||||
|
addFolderRecursively(otherFolders,fileInfo.absolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
PProjectModelNode node = makeNewFileNode(tr("Headers"),true,mRootNode);
|
PProjectModelNode node = makeNewFileNode(tr("Headers"),true,mRootNode);
|
||||||
node->folderNodeType = ProjectSpecialFolderNode::HEADERS;
|
node->folderNodeType = ProjectSpecialFolderNode::HEADERS;
|
||||||
node->priority = 1000;
|
node->priority = 1000;
|
||||||
createFileSystemFolderNode(ProjectSpecialFolderNode::HEADERS,folder(),node);
|
createFileSystemFolderNode(ProjectSpecialFolderNode::HEADERS,folder(),node, headerFolders);
|
||||||
mFolderNodes.append(node);
|
mFolderNodes.append(node);
|
||||||
mSpecialNodes.insert(ProjectSpecialFolderNode::HEADERS,node);
|
mSpecialNodes.insert(ProjectSpecialFolderNode::HEADERS,node);
|
||||||
|
|
||||||
node = makeNewFileNode(tr("Sources"),true,mRootNode);
|
node = makeNewFileNode(tr("Sources"),true,mRootNode);
|
||||||
node->folderNodeType = ProjectSpecialFolderNode::SOURCES;
|
node->folderNodeType = ProjectSpecialFolderNode::SOURCES;
|
||||||
node->priority = 900;
|
node->priority = 900;
|
||||||
createFileSystemFolderNode(ProjectSpecialFolderNode::SOURCES,folder(),node);
|
createFileSystemFolderNode(ProjectSpecialFolderNode::SOURCES,folder(),node, sourceFolders);
|
||||||
mFolderNodes.append(node);
|
mFolderNodes.append(node);
|
||||||
mSpecialNodes.insert(ProjectSpecialFolderNode::SOURCES,node);
|
mSpecialNodes.insert(ProjectSpecialFolderNode::SOURCES,node);
|
||||||
|
|
||||||
node = makeNewFileNode(tr("Others"),true,mRootNode);
|
node = makeNewFileNode(tr("Others"),true,mRootNode);
|
||||||
node->folderNodeType = ProjectSpecialFolderNode::OTHERS;
|
node->folderNodeType = ProjectSpecialFolderNode::OTHERS;
|
||||||
node->priority = 800;
|
node->priority = 800;
|
||||||
createFileSystemFolderNode(ProjectSpecialFolderNode::OTHERS,folder(),node);
|
createFileSystemFolderNode(ProjectSpecialFolderNode::OTHERS,folder(),node, otherFolders);
|
||||||
mFolderNodes.append(node);
|
mFolderNodes.append(node);
|
||||||
mSpecialNodes.insert(ProjectSpecialFolderNode::OTHERS,node);
|
mSpecialNodes.insert(ProjectSpecialFolderNode::OTHERS,node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Project::createFileSystemFolderNode(ProjectSpecialFolderNode folderType, const QString &folderName, PProjectModelNode parent)
|
void Project::createFileSystemFolderNode(
|
||||||
|
ProjectSpecialFolderNode folderType,
|
||||||
|
const QString &folderName,
|
||||||
|
PProjectModelNode parent,
|
||||||
|
const QSet<QString>& validFolders)
|
||||||
{
|
{
|
||||||
QDirIterator iter(folderName);
|
QDirIterator iter(folderName);
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
|
@ -1322,10 +1350,10 @@ void Project::createFileSystemFolderNode(ProjectSpecialFolderNode folderType, co
|
||||||
QFileInfo fileInfo = iter.fileInfo();
|
QFileInfo fileInfo = iter.fileInfo();
|
||||||
if (fileInfo.isHidden() || fileInfo.fileName().startsWith('.'))
|
if (fileInfo.isHidden() || fileInfo.fileName().startsWith('.'))
|
||||||
continue;
|
continue;
|
||||||
if (fileInfo.isDir()) {
|
if (fileInfo.isDir() && validFolders.contains(fileInfo.absoluteFilePath())) {
|
||||||
PProjectModelNode node = makeNewFileNode(fileInfo.fileName(),true,parent);
|
PProjectModelNode node = makeNewFileNode(fileInfo.fileName(),true,parent);
|
||||||
mFileSystemFolderNodes.insert(QString("%1/%2").arg((int)folderType).arg(fileInfo.absoluteFilePath()),node);
|
mFileSystemFolderNodes.insert(QString("%1/%2").arg((int)folderType).arg(fileInfo.absoluteFilePath()),node);
|
||||||
createFileSystemFolderNode(folderType,fileInfo.absoluteFilePath(), node);
|
createFileSystemFolderNode(folderType,fileInfo.absoluteFilePath(), node, validFolders);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,7 +244,7 @@ private:
|
||||||
void checkProjectFileForUpdate(SimpleIni& ini);
|
void checkProjectFileForUpdate(SimpleIni& ini);
|
||||||
void createFolderNodes();
|
void createFolderNodes();
|
||||||
void createFileSystemFolderNodes();
|
void createFileSystemFolderNodes();
|
||||||
void createFileSystemFolderNode(ProjectSpecialFolderNode folderType, const QString& folderName, PProjectModelNode parent);
|
void createFileSystemFolderNode(ProjectSpecialFolderNode folderType, const QString& folderName, PProjectModelNode parent, const QSet<QString>& validFolders);
|
||||||
PProjectModelNode getParentFolderNode(const QString& filename);
|
PProjectModelNode getParentFolderNode(const QString& filename);
|
||||||
PProjectModelNode findFolderNode(const QString& folderPath, ProjectSpecialFolderNode nodeType);
|
PProjectModelNode findFolderNode(const QString& folderPath, ProjectSpecialFolderNode nodeType);
|
||||||
PProjectModelNode folderNodeFromName(const QString& name);
|
PProjectModelNode folderNodeFromName(const QString& name);
|
||||||
|
|
|
@ -33,8 +33,9 @@ CompilerSetDirectoriesWidget::CompilerSetDirectoriesWidget(QWidget *parent) :
|
||||||
connect(ui->listView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
connect(ui->listView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
||||||
this, &CompilerSetDirectoriesWidget::selectionChanged);
|
this, &CompilerSetDirectoriesWidget::selectionChanged);
|
||||||
ui->listView->setSelectionMode(QAbstractItemView::SingleSelection);
|
ui->listView->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
onUpdateIcons();
|
||||||
connect(pIconsManager, &IconsManager::actionIconsUpdated,
|
connect(pIconsManager, &IconsManager::actionIconsUpdated,
|
||||||
this, &CompilerSetDirectoriesWidget::updateIcons);
|
this, &CompilerSetDirectoriesWidget::onUpdateIcons);
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilerSetDirectoriesWidget::~CompilerSetDirectoriesWidget()
|
CompilerSetDirectoriesWidget::~CompilerSetDirectoriesWidget()
|
||||||
|
@ -103,7 +104,7 @@ void CompilerSetDirectoriesWidget::on_btnRemoveInvalid_pressed()
|
||||||
setDirList(lst);
|
setDirList(lst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompilerSetDirectoriesWidget::updateIcons()
|
void CompilerSetDirectoriesWidget::onUpdateIcons()
|
||||||
{
|
{
|
||||||
pIconsManager->setIcon(ui->btnAdd,IconsManager::ACTION_MISC_ADD);
|
pIconsManager->setIcon(ui->btnAdd,IconsManager::ACTION_MISC_ADD);
|
||||||
pIconsManager->setIcon(ui->btnDelete, IconsManager::ACTION_MISC_REMOVE);
|
pIconsManager->setIcon(ui->btnDelete, IconsManager::ACTION_MISC_REMOVE);
|
||||||
|
|
|
@ -50,7 +50,7 @@ private slots:
|
||||||
|
|
||||||
void on_btnRemoveInvalid_pressed();
|
void on_btnRemoveInvalid_pressed();
|
||||||
|
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CompilerSetDirectoriesWidget *ui;
|
Ui::CompilerSetDirectoriesWidget *ui;
|
||||||
|
|
|
@ -15,7 +15,7 @@ GitRemoteDialog::GitRemoteDialog(const QString& folder, QWidget *parent) :
|
||||||
mRemotes = manager.listRemotes(folder);
|
mRemotes = manager.listRemotes(folder);
|
||||||
ui->lstRemotes->addItems(mRemotes);
|
ui->lstRemotes->addItems(mRemotes);
|
||||||
connect(pIconsManager, &IconsManager::actionIconsUpdated,
|
connect(pIconsManager, &IconsManager::actionIconsUpdated,
|
||||||
this, &GitRemoteDialog::updateIcons);
|
this, &GitRemoteDialog::onUpdateIcons);
|
||||||
ui->btnRemove->setEnabled(false);
|
ui->btnRemove->setEnabled(false);
|
||||||
ui->pnlProcess->setVisible(false);
|
ui->pnlProcess->setVisible(false);
|
||||||
ui->grpDetail->setEnabled(false);
|
ui->grpDetail->setEnabled(false);
|
||||||
|
@ -42,7 +42,7 @@ QString GitRemoteDialog::chooseRemote()
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
void GitRemoteDialog::updateIcons()
|
void GitRemoteDialog::onUpdateIcons()
|
||||||
{
|
{
|
||||||
ui->btnAdd->setIcon(pIconsManager->getIcon(IconsManager::ACTION_MISC_ADD));
|
ui->btnAdd->setIcon(pIconsManager->getIcon(IconsManager::ACTION_MISC_ADD));
|
||||||
ui->btnRemove->setIcon(pIconsManager->getIcon(IconsManager::ACTION_MISC_REMOVE));
|
ui->btnRemove->setIcon(pIconsManager->getIcon(IconsManager::ACTION_MISC_REMOVE));
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
QString chooseRemote();
|
QString chooseRemote();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
void onRemotesSelectionChanged();
|
void onRemotesSelectionChanged();
|
||||||
void checkDetails();
|
void checkDetails();
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
|
@ -68,9 +68,9 @@ CPUDialog::CPUDialog(QWidget *parent) :
|
||||||
sizes[1] = std::max(1,totalSize - sizes[0]);
|
sizes[1] = std::max(1,totalSize - sizes[0]);
|
||||||
ui->splitter->setSizes(sizes);
|
ui->splitter->setSizes(sizes);
|
||||||
|
|
||||||
updateIcons();
|
onUpdateIcons();
|
||||||
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
||||||
this, &CPUDialog::updateIcons);
|
this, &CPUDialog::onUpdateIcons);
|
||||||
}
|
}
|
||||||
|
|
||||||
CPUDialog::~CPUDialog()
|
CPUDialog::~CPUDialog()
|
||||||
|
@ -192,7 +192,7 @@ void CPUDialog::on_btnStepIntoInstruction_clicked()
|
||||||
pMainWindow->debugger()->sendCommand("-exec-step-instruction","");
|
pMainWindow->debugger()->sendCommand("-exec-step-instruction","");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPUDialog::updateIcons()
|
void CPUDialog::onUpdateIcons()
|
||||||
{
|
{
|
||||||
pIconsManager->setIcon(ui->btnStepIntoInstruction, IconsManager::ACTION_RUN_STEP_INTO_INSTRUCTION);
|
pIconsManager->setIcon(ui->btnStepIntoInstruction, IconsManager::ACTION_RUN_STEP_INTO_INSTRUCTION);
|
||||||
pIconsManager->setIcon(ui->btnStepOverInstruction, IconsManager::ACTION_RUN_STEP_OVER_INSTRUCTION);
|
pIconsManager->setIcon(ui->btnStepOverInstruction, IconsManager::ACTION_RUN_STEP_OVER_INSTRUCTION);
|
||||||
|
|
|
@ -51,7 +51,7 @@ private slots:
|
||||||
void on_chkBlendMode_stateChanged(int arg1);
|
void on_chkBlendMode_stateChanged(int arg1);
|
||||||
void on_btnStepOverInstruction_clicked();
|
void on_btnStepOverInstruction_clicked();
|
||||||
void on_btnStepIntoInstruction_clicked();
|
void on_btnStepIntoInstruction_clicked();
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CPUDIALOG_H
|
#endif // CPUDIALOG_H
|
||||||
|
|
|
@ -11,7 +11,9 @@ NewClassDialog::NewClassDialog(QWidget *parent) :
|
||||||
setWindowFlag(Qt::WindowContextHelpButtonHint,false);
|
setWindowFlag(Qt::WindowContextHelpButtonHint,false);
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
resize(pSettings->ui().newClassDialogWidth(),pSettings->ui().newClassDialogHeight());
|
resize(pSettings->ui().newClassDialogWidth(),pSettings->ui().newClassDialogHeight());
|
||||||
updateIcons();
|
onUpdateIcons();
|
||||||
|
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
||||||
|
this, &NewClassDialog::onUpdateIcons);
|
||||||
ui->txtClassName->setFocus();
|
ui->txtClassName->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +67,7 @@ void NewClassDialog::on_btnCreate_clicked()
|
||||||
this->accept();
|
this->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NewClassDialog::updateIcons()
|
void NewClassDialog::onUpdateIcons()
|
||||||
{
|
{
|
||||||
pIconsManager->setIcon(ui->btnBrowsePath, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
pIconsManager->setIcon(ui->btnBrowsePath, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ private:
|
||||||
Ui::NewClassDialog *ui;
|
Ui::NewClassDialog *ui;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
|
|
||||||
// QWidget interface
|
// QWidget interface
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -12,7 +12,9 @@ NewHeaderDialog::NewHeaderDialog(QWidget *parent) :
|
||||||
setWindowFlag(Qt::WindowContextHelpButtonHint,false);
|
setWindowFlag(Qt::WindowContextHelpButtonHint,false);
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
resize(pSettings->ui().newHeaderDialogWidth(),pSettings->ui().newHeaderDialogHeight());
|
resize(pSettings->ui().newHeaderDialogWidth(),pSettings->ui().newHeaderDialogHeight());
|
||||||
updateIcons();
|
onUpdateIcons();
|
||||||
|
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
||||||
|
this, &NewHeaderDialog::onUpdateIcons);
|
||||||
ui->txtHeader->setFocus();
|
ui->txtHeader->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +38,7 @@ void NewHeaderDialog::setPath(const QString &location)
|
||||||
ui->txtPath->setText(location);
|
ui->txtPath->setText(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NewHeaderDialog::updateIcons()
|
void NewHeaderDialog::onUpdateIcons()
|
||||||
{
|
{
|
||||||
pIconsManager->setIcon(ui->btnBrowse, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
pIconsManager->setIcon(ui->btnBrowse, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ private:
|
||||||
Ui::NewHeaderDialog *ui;
|
Ui::NewHeaderDialog *ui;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
|
|
||||||
// QWidget interface
|
// QWidget interface
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -61,6 +61,10 @@ NewProjectDialog::NewProjectDialog(QWidget *parent) :
|
||||||
this,
|
this,
|
||||||
&NewProjectDialog::updateProjectLocation);
|
&NewProjectDialog::updateProjectLocation);
|
||||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
|
||||||
|
|
||||||
|
onUpdateIcons();
|
||||||
|
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
||||||
|
this, &NewProjectDialog::onUpdateIcons);
|
||||||
}
|
}
|
||||||
|
|
||||||
NewProjectDialog::~NewProjectDialog()
|
NewProjectDialog::~NewProjectDialog()
|
||||||
|
@ -242,7 +246,7 @@ void NewProjectDialog::on_btnBrowse_clicked()
|
||||||
}
|
}
|
||||||
QString dir = QFileDialog::getExistingDirectory(
|
QString dir = QFileDialog::getExistingDirectory(
|
||||||
this,
|
this,
|
||||||
"Choose directory",
|
tr("Choose directory"),
|
||||||
dirPath
|
dirPath
|
||||||
);
|
);
|
||||||
if (!dir.isEmpty()) {
|
if (!dir.isEmpty()) {
|
||||||
|
@ -254,7 +258,7 @@ void NewProjectDialog::on_btnBrowse_clicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NewProjectDialog::updateIcons()
|
void NewProjectDialog::onUpdateIcons()
|
||||||
{
|
{
|
||||||
pIconsManager->setIcon(ui->btnBrowse, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
pIconsManager->setIcon(ui->btnBrowse, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ private slots:
|
||||||
|
|
||||||
void on_lstTemplates_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
|
void on_lstTemplates_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
|
||||||
void on_btnBrowse_clicked();
|
void on_btnBrowse_clicked();
|
||||||
void updateIcons();
|
void onUpdateIcons();
|
||||||
|
|
||||||
void on_btnOk_clicked();
|
void on_btnOk_clicked();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,113 @@
|
||||||
|
#include "newprojectunitdialog.h"
|
||||||
|
#include "ui_newprojectunitdialog.h"
|
||||||
|
#include "../iconsmanager.h"
|
||||||
|
#include "../utils.h"
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
|
||||||
|
NewProjectUnitDialog::NewProjectUnitDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::NewProjectUnitDialog),
|
||||||
|
mSuffix("cpp")
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
onUpdateIcons();
|
||||||
|
connect(pIconsManager,&IconsManager::actionIconsUpdated,
|
||||||
|
this, &NewProjectUnitDialog::onUpdateIcons);
|
||||||
|
}
|
||||||
|
|
||||||
|
NewProjectUnitDialog::~NewProjectUnitDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString NewProjectUnitDialog::folder() const
|
||||||
|
{
|
||||||
|
return ui->txtFolder->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::setFolder(const QString &folderName)
|
||||||
|
{
|
||||||
|
if (folderName!=folder()) {
|
||||||
|
ui->txtFolder->setText(folderName);
|
||||||
|
QDir dir(folder());
|
||||||
|
if (dir.exists(filename()) || filename().isEmpty()) {
|
||||||
|
//todo change filename
|
||||||
|
QString newFileName;
|
||||||
|
QString ext;
|
||||||
|
if (filename().isEmpty()) {
|
||||||
|
ext = mSuffix;
|
||||||
|
} else {
|
||||||
|
ext = QFileInfo(filename()).suffix();
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
newFileName = tr("untitled")+QString("%1").arg(getNewFileNumber());
|
||||||
|
if (!ext.isEmpty())
|
||||||
|
newFileName += "." + ext;
|
||||||
|
} while (dir.exists(newFileName));
|
||||||
|
setFilename(newFileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::onUpdateIcons()
|
||||||
|
{
|
||||||
|
pIconsManager->setIcon(ui->btnBrowse, IconsManager::ACTION_FILE_OPEN_FOLDER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::on_btnBrowse_clicked()
|
||||||
|
{
|
||||||
|
QString dir = QFileDialog::getExistingDirectory(
|
||||||
|
this,
|
||||||
|
tr("Choose directory"),
|
||||||
|
folder()
|
||||||
|
);
|
||||||
|
if (!dir.isEmpty()) {
|
||||||
|
setFolder(dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::on_btnOk_clicked()
|
||||||
|
{
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::on_btnCancel_clicked()
|
||||||
|
{
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::on_txtFilename_textChanged(const QString &/*arg1*/)
|
||||||
|
{
|
||||||
|
updateBtnOkStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::updateBtnOkStatus()
|
||||||
|
{
|
||||||
|
ui->btnOk->setEnabled(!ui->txtFilename->text().isEmpty()
|
||||||
|
&& QFileInfo(ui->txtFolder->text()).isDir());
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::closeEvent(QCloseEvent *event)
|
||||||
|
{
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NewProjectUnitDialog::suffix() const
|
||||||
|
{
|
||||||
|
return mSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::setSuffix(bool newSuffix)
|
||||||
|
{
|
||||||
|
mSuffix = newSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewProjectUnitDialog::on_txtFolder_textChanged(const QString &/*arg1*/)
|
||||||
|
{
|
||||||
|
updateBtnOkStatus();
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef NEWPROJECTUNITDIALOG_H
|
||||||
|
#define NEWPROJECTUNITDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class NewProjectUnitDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class NewProjectUnitDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit NewProjectUnitDialog(QWidget *parent = nullptr);
|
||||||
|
~NewProjectUnitDialog();
|
||||||
|
|
||||||
|
QString folder() const;
|
||||||
|
void setFolder(const QString& folderName);
|
||||||
|
|
||||||
|
QString filename() const;
|
||||||
|
void setFilename(const QString& filename);
|
||||||
|
|
||||||
|
bool suffix() const;
|
||||||
|
void setSuffix(bool newSuffix);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onUpdateIcons();
|
||||||
|
void on_btnBrowse_clicked();
|
||||||
|
|
||||||
|
void on_btnOk_clicked();
|
||||||
|
|
||||||
|
void on_btnCancel_clicked();
|
||||||
|
|
||||||
|
void on_txtFilename_textChanged(const QString &arg1);
|
||||||
|
void on_txtFolder_textChanged(const QString &arg1);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateBtnOkStatus();
|
||||||
|
private:
|
||||||
|
Ui::NewProjectUnitDialog *ui;
|
||||||
|
private:
|
||||||
|
bool mSuffix;
|
||||||
|
|
||||||
|
// QWidget interface
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NEWPROJECTUNITDIALOG_H
|
|
@ -0,0 +1,119 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>NewProjectUnitDialog</class>
|
||||||
|
<widget class="QDialog" name="NewProjectUnitDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Folder</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="txtFolder">
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Filename</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QToolButton" name="btnBrowse">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Browse</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Browse</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../icons.qrc">
|
||||||
|
<normaloff>:/icons/images/newlook24/053-open.png</normaloff>:/icons/images/newlook24/053-open.png</iconset>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" colspan="2">
|
||||||
|
<widget class="QLineEdit" name="txtFilename"/>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0" colspan="3">
|
||||||
|
<widget class="QWidget" name="widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<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="btnOk">
|
||||||
|
<property name="text">
|
||||||
|
<string>Ok</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="btnCancel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Cancel</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../icons.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in New Issue