forked from qt-creator/qt-creator
ProjectExplorer: Allow users to quickly expand the project tree
... by adding an "Expand All" action to accompany the existing "Collapse All" one. Fixes: QTCREATORBUG-17243 Change-Id: I84e185562ee4c62ede7d0dc40f0d296020c4f0ea Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -217,6 +217,7 @@ const char DELETEFILE[] = "ProjectExplorer.DeleteFile";
|
|||||||
const char DIFFFILE[] = "ProjectExplorer.DiffFile";
|
const char DIFFFILE[] = "ProjectExplorer.DiffFile";
|
||||||
const char SETSTARTUP[] = "ProjectExplorer.SetStartup";
|
const char SETSTARTUP[] = "ProjectExplorer.SetStartup";
|
||||||
const char PROJECTTREE_COLLAPSE_ALL[] = "ProjectExplorer.CollapseAll";
|
const char PROJECTTREE_COLLAPSE_ALL[] = "ProjectExplorer.CollapseAll";
|
||||||
|
const char PROJECTTREE_EXPAND_ALL[] = "ProjectExplorer.ExpandAll";
|
||||||
|
|
||||||
const char SELECTTARGET[] = "ProjectExplorer.SelectTarget";
|
const char SELECTTARGET[] = "ProjectExplorer.SelectTarget";
|
||||||
const char SELECTTARGETQUICK[] = "ProjectExplorer.SelectTargetQuick";
|
const char SELECTTARGETQUICK[] = "ProjectExplorer.SelectTargetQuick";
|
||||||
@@ -439,6 +440,7 @@ public:
|
|||||||
QAction *m_diffFileAction;
|
QAction *m_diffFileAction;
|
||||||
QAction *m_openFileAction;
|
QAction *m_openFileAction;
|
||||||
QAction *m_projectTreeCollapseAllAction;
|
QAction *m_projectTreeCollapseAllAction;
|
||||||
|
QAction *m_projectTreeExpandAllAction;
|
||||||
QAction *m_searchOnFileSystem;
|
QAction *m_searchOnFileSystem;
|
||||||
QAction *m_showInGraphicalShell;
|
QAction *m_showInGraphicalShell;
|
||||||
QAction *m_openTerminalHere;
|
QAction *m_openTerminalHere;
|
||||||
@@ -1197,21 +1199,22 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
cmd->setDescription(dd->m_setStartupProjectAction->text());
|
cmd->setDescription(dd->m_setStartupProjectAction->text());
|
||||||
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_FIRST);
|
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_FIRST);
|
||||||
|
|
||||||
// Collapse All.
|
// Collapse & Expand.
|
||||||
dd->m_projectTreeCollapseAllAction = new QAction(tr("Collapse All"), this);
|
|
||||||
cmd = ActionManager::registerAction(dd->m_projectTreeCollapseAllAction, Constants::PROJECTTREE_COLLAPSE_ALL,
|
|
||||||
projecTreeContext);
|
|
||||||
const Id treeGroup = Constants::G_PROJECT_TREE;
|
const Id treeGroup = Constants::G_PROJECT_TREE;
|
||||||
mfileContextMenu->addSeparator(treeGroup);
|
dd->m_projectTreeCollapseAllAction = new QAction(tr("Collapse All"), this);
|
||||||
mfileContextMenu->addAction(cmd, treeGroup);
|
Command * const collapseCmd = ActionManager::registerAction(
|
||||||
msubProjectContextMenu->addSeparator(treeGroup);
|
dd->m_projectTreeCollapseAllAction, Constants::PROJECTTREE_COLLAPSE_ALL,
|
||||||
msubProjectContextMenu->addAction(cmd, treeGroup);
|
projecTreeContext);
|
||||||
mfolderContextMenu->addSeparator(treeGroup);
|
dd->m_projectTreeExpandAllAction = new QAction(tr("Expand All"), this);
|
||||||
mfolderContextMenu->addAction(cmd, treeGroup);
|
Command * const expandCmd = ActionManager::registerAction(
|
||||||
mprojectContextMenu->addSeparator(treeGroup);
|
dd->m_projectTreeExpandAllAction, Constants::PROJECTTREE_EXPAND_ALL,
|
||||||
mprojectContextMenu->addAction(cmd, treeGroup);
|
projecTreeContext);
|
||||||
msessionContextMenu->addSeparator(treeGroup);
|
for (Core::ActionContainer * const ac : {mfileContextMenu, msubProjectContextMenu,
|
||||||
msessionContextMenu->addAction(cmd, treeGroup);
|
mfolderContextMenu, mprojectContextMenu, msessionContextMenu}) {
|
||||||
|
ac->addSeparator(treeGroup);
|
||||||
|
ac->addAction(collapseCmd, treeGroup);
|
||||||
|
ac->addAction(expandCmd, treeGroup);
|
||||||
|
}
|
||||||
|
|
||||||
// target selector
|
// target selector
|
||||||
dd->m_projectSelectorAction = new QAction(this);
|
dd->m_projectSelectorAction = new QAction(this);
|
||||||
@@ -1441,6 +1444,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
dd, &ProjectExplorerPluginPrivate::handleSetStartupProject);
|
dd, &ProjectExplorerPluginPrivate::handleSetStartupProject);
|
||||||
connect(dd->m_projectTreeCollapseAllAction, &QAction::triggered,
|
connect(dd->m_projectTreeCollapseAllAction, &QAction::triggered,
|
||||||
ProjectTree::instance(), &ProjectTree::collapseAll);
|
ProjectTree::instance(), &ProjectTree::collapseAll);
|
||||||
|
connect(dd->m_projectTreeExpandAllAction, &QAction::triggered,
|
||||||
|
ProjectTree::instance(), &ProjectTree::expandAll);
|
||||||
|
|
||||||
connect(this, &ProjectExplorerPlugin::updateRunActions,
|
connect(this, &ProjectExplorerPlugin::updateRunActions,
|
||||||
dd, &ProjectExplorerPluginPrivate::slotUpdateRunActions);
|
dd, &ProjectExplorerPluginPrivate::slotUpdateRunActions);
|
||||||
|
|||||||
@@ -277,6 +277,12 @@ void ProjectTree::collapseAll()
|
|||||||
w->collapseAll();
|
w->collapseAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProjectTree::expandAll()
|
||||||
|
{
|
||||||
|
if (auto w = Utils::findOrDefault(s_instance->m_projectTreeWidgets, &ProjectTree::hasFocus))
|
||||||
|
w->expandAll();
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectTree::updateExternalFileWarning()
|
void ProjectTree::updateExternalFileWarning()
|
||||||
{
|
{
|
||||||
auto document = qobject_cast<Core::IDocument *>(sender());
|
auto document = qobject_cast<Core::IDocument *>(sender());
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public:
|
|||||||
static Node *nodeForFile(const Utils::FileName &fileName);
|
static Node *nodeForFile(const Utils::FileName &fileName);
|
||||||
|
|
||||||
void collapseAll();
|
void collapseAll();
|
||||||
|
void expandAll();
|
||||||
|
|
||||||
// for nodes to emit signals, do not call unless you are a node
|
// for nodes to emit signals, do not call unless you are a node
|
||||||
static void emitSubtreeChanged(FolderNode *node);
|
static void emitSubtreeChanged(FolderNode *node);
|
||||||
|
|||||||
@@ -413,6 +413,11 @@ void ProjectTreeWidget::collapseAll()
|
|||||||
m_view->collapseAll();
|
m_view->collapseAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProjectTreeWidget::expandAll()
|
||||||
|
{
|
||||||
|
m_view->expandAll();
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectTreeWidget::editCurrentItem()
|
void ProjectTreeWidget::editCurrentItem()
|
||||||
{
|
{
|
||||||
m_delayedRename.clear();
|
m_delayedRename.clear();
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ public:
|
|||||||
void toggleAutoSynchronization();
|
void toggleAutoSynchronization();
|
||||||
void editCurrentItem();
|
void editCurrentItem();
|
||||||
void collapseAll();
|
void collapseAll();
|
||||||
|
void expandAll();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setProjectFilter(bool filter);
|
void setProjectFilter(bool filter);
|
||||||
|
|||||||
Reference in New Issue
Block a user