projectexplorer: added functionality for opening a folder in another tab/window

This commit is contained in:
itsmattkc
2020-04-19 01:11:50 +10:00
parent 93e5e7c0c1
commit 55dcf0f5fd
11 changed files with 146 additions and 30 deletions
+41
View File
@@ -176,6 +176,33 @@ void MainWindow::SetTaskbarButtonProgress(int value, int max)
}
#endif
void MainWindow::FolderOpen(Project *p, Item *i, bool floating)
{
ProjectPanel* panel = PanelManager::instance()->CreatePanel<ProjectPanel>(this);
panel->set_project(p);
panel->set_root(i);
// Tabify with source project panel
foreach (ProjectPanel* proj_panel, project_panels_) {
if (proj_panel->project() == p) {
tabifyDockWidget(proj_panel, panel);
break;
}
}
panel->setFloating(floating);
panel->show();
panel->raise();
// If the panel is closed, just destroy it
panel->SetSignalInsteadOfClose(true);
connect(panel, &ProjectPanel::CloseRequested, this, &MainWindow::FolderCloseRequested);
folder_panels_.append(panel);
}
void MainWindow::SetFullscreen(bool fullscreen)
{
if (fullscreen) {
@@ -251,6 +278,12 @@ void MainWindow::ProjectClose(Project *p)
}
}
foreach (ProjectPanel* panel, folder_panels_) {
if (panel->project() == p) {
panel->close();
}
}
// Close any open sequences from project
QList<ItemPtr> open_sequences = p->get_items_of_type(Item::kSequence);
@@ -326,6 +359,14 @@ void MainWindow::ProjectCloseRequested()
Core::instance()->CloseProject(p, true);
}
void MainWindow::FolderCloseRequested()
{
ProjectPanel* panel = static_cast<ProjectPanel*>(sender());
folder_panels_.removeOne(panel);
panel->deleteLater();
}
TimelinePanel* MainWindow::AppendTimelinePanel()
{
TimelinePanel* panel = AppendPanelInternal<TimelinePanel>(timeline_panels_);