various: implemented multiple project support
This required various changes to various parts of the infrastructure (mostly using paths to finding the "root project" of any given object throughout). Now theoretically infinite projects can be opened and accounted for at any given time.
This commit is contained in:
@@ -82,6 +82,7 @@ void ProjectPanel::set_project(Project *p)
|
||||
if (project()) {
|
||||
disconnect(project(), &Project::NameChanged, this, &ProjectPanel::UpdateSubtitle);
|
||||
disconnect(project(), &Project::NameChanged, this, &ProjectPanel::ProjectNameChanged);
|
||||
disconnect(project(), &Project::ModifiedChanged, this, &ProjectPanel::setWindowModified);
|
||||
}
|
||||
|
||||
explorer_->set_project(p);
|
||||
@@ -89,9 +90,16 @@ void ProjectPanel::set_project(Project *p)
|
||||
if (project()) {
|
||||
connect(project(), &Project::NameChanged, this, &ProjectPanel::UpdateSubtitle);
|
||||
connect(project(), &Project::NameChanged, this, &ProjectPanel::ProjectNameChanged);
|
||||
connect(project(), &Project::ModifiedChanged, this, &ProjectPanel::setWindowModified);
|
||||
}
|
||||
|
||||
UpdateSubtitle();
|
||||
|
||||
if (p) {
|
||||
setWindowModified(p->is_modified());
|
||||
} else {
|
||||
setWindowModified(false);
|
||||
}
|
||||
}
|
||||
|
||||
QList<Item *> ProjectPanel::SelectedItems()
|
||||
@@ -182,7 +190,7 @@ void ProjectPanel::UpdateSubtitle()
|
||||
if (project() == nullptr) {
|
||||
SetSubtitle(tr("(none)"));
|
||||
} else {
|
||||
SetSubtitle(project()->name());
|
||||
SetSubtitle(QStringLiteral("[*]%1").arg(project()->name()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,7 @@
|
||||
OLIVE_NAMESPACE_ENTER
|
||||
|
||||
TimelinePanel::TimelinePanel(QWidget *parent) :
|
||||
TimeBasedPanel(parent),
|
||||
signal_instead_of_close_(false)
|
||||
TimeBasedPanel(parent)
|
||||
{
|
||||
// FIXME: This won't work if there's ever more than one of this panel
|
||||
setObjectName("TimelinePanel");
|
||||
@@ -168,11 +167,6 @@ void TimelinePanel::OverwriteFootageAtPlayhead(const QList<Footage *> &footage)
|
||||
static_cast<TimelineWidget*>(GetTimeBasedWidget())->OverwriteFootageAtPlayhead(footage);
|
||||
}
|
||||
|
||||
void TimelinePanel::SetSignalInsteadOfClose(bool e)
|
||||
{
|
||||
signal_instead_of_close_ = e;
|
||||
}
|
||||
|
||||
void TimelinePanel::Retranslate()
|
||||
{
|
||||
TimeBasedPanel::Retranslate();
|
||||
@@ -180,14 +174,4 @@ void TimelinePanel::Retranslate()
|
||||
SetTitle(tr("Timeline"));
|
||||
}
|
||||
|
||||
void TimelinePanel::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
if (signal_instead_of_close_) {
|
||||
event->ignore();
|
||||
emit CloseRequested();
|
||||
} else {
|
||||
PanelWidget::closeEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
@@ -83,21 +83,12 @@ public:
|
||||
|
||||
void OverwriteFootageAtPlayhead(const QList<Footage *> &footage);
|
||||
|
||||
void SetSignalInsteadOfClose(bool e);
|
||||
|
||||
protected:
|
||||
virtual void Retranslate() override;
|
||||
|
||||
virtual void closeEvent(QCloseEvent* event) override;
|
||||
|
||||
signals:
|
||||
void SelectionChanged(const QList<Node*>& selected_blocks);
|
||||
|
||||
void CloseRequested();
|
||||
|
||||
private:
|
||||
bool signal_instead_of_close_;
|
||||
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
Reference in New Issue
Block a user