add file state for graphs

Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
chcurran
2021-11-04 15:58:19 -07:00
parent 12b52044d3
commit ea5eba6e3f
15 changed files with 99 additions and 93 deletions
@@ -105,6 +105,44 @@ namespace ScriptCanvasEditor
return nullptr;
}
AZStd::optional<GraphTabMetadata> GraphTabBar::GetTabData(int tabIndex) const
{
if (tabIndex < count())
{
if (QVariant tabDataVariant = tabData(tabIndex); tabDataVariant.isValid())
{
return tabDataVariant.value<GraphTabMetadata>();
}
}
return AZStd::nullopt;
}
AZStd::optional<GraphTabMetadata> GraphTabBar::GetTabData(ScriptCanvasEditor::SourceHandle assetId) const
{
return GetTabData(FindTab(assetId));
}
void GraphTabBar::SetTabData(const GraphTabMetadata& metadata, int tabIndex)
{
if (tabIndex < count())
{
setTabData(tabIndex, QVariant::fromValue(metadata));
}
}
void GraphTabBar::SetTabData(const GraphTabMetadata& metadata, ScriptCanvasEditor::SourceHandle assetId)
{
auto index = FindTab(assetId);
auto replacement = GetTabData(assetId);
if (index >= 0 && replacement)
{
replacement->m_assetId = assetId;
SetTabData(metadata, index);
}
}
int GraphTabBar::InsertGraphTab(int tabIndex, ScriptCanvasEditor::SourceHandle assetId)
{
if (!SelectTab(assetId))
@@ -119,6 +157,7 @@ namespace ScriptCanvasEditor
AZStd::string tabName;
AzFramework::StringFunc::Path::GetFileName(assetId.Path().c_str(), tabName);
metaData.m_name = tabName.c_str();
// #sc_editor_asset filestate
Tracker::ScriptCanvasFileState fileState = Tracker::ScriptCanvasFileState::INVALID;
@@ -381,6 +420,23 @@ namespace ScriptCanvasEditor
Q_EMIT TabRemoved(index);
}
void GraphTabBar::UpdateFileState(const ScriptCanvasEditor::SourceHandle& assetId, Tracker::ScriptCanvasFileState fileState)
{
auto tabData = GetTabData(assetId);
if (tabData && tabData->m_fileState != fileState)
{
int index = FindTab(assetId);
tabData->m_fileState = fileState;
SetTabData(*tabData, assetId);
SetTabText(index, tabData->m_name, fileState);
if (index == currentIndex())
{
Q_EMIT OnActiveFileStateChanged();
}
}
}
void GraphTabBar::currentChangedTab(int index)
{
if (index < 0)
@@ -406,25 +462,6 @@ namespace ScriptCanvasEditor
}
}
void GraphTabBar::SetFileState(ScriptCanvasEditor::SourceHandle, Tracker::ScriptCanvasFileState )
{
// #sc_editor_asset
// int index = FindTab(assetId);
// if (index >= 0 && index < count())
// {
// QVariant tabdata = tabData(index);
// if (tabdata.isValid())
// {
// auto tabAssetId = tabdata.value<GraphTabMetadata>();
//
// AZStd::string tabName;
// AssetTrackerRequestBus::BroadcastResult(tabName, &AssetTrackerRequests::GetTabName, tabAssetId);
// SetTabText(index, tabName.c_str(), fileState);
// }
// }
}
#include <Editor/View/Widgets/moc_GraphTabBar.cpp>
}
}
@@ -35,6 +35,7 @@ namespace ScriptCanvasEditor
QWidget* m_hostWidget = nullptr;
CanvasWidget* m_canvasWidget = nullptr;
Tracker::ScriptCanvasFileState m_fileState = Tracker::ScriptCanvasFileState::INVALID;
QString m_name;
};
class GraphTabBar
@@ -48,6 +49,11 @@ namespace ScriptCanvasEditor
GraphTabBar(QWidget* parent = nullptr);
~GraphTabBar() override = default;
AZStd::optional<GraphTabMetadata> GetTabData(int index) const;
AZStd::optional<GraphTabMetadata> GetTabData(ScriptCanvasEditor::SourceHandle assetId) const;
void SetTabData(const GraphTabMetadata& data, int index);
void SetTabData(const GraphTabMetadata& data, ScriptCanvasEditor::SourceHandle assetId);
void AddGraphTab(ScriptCanvasEditor::SourceHandle assetId);
void CloseTab(int index);
void CloseAllTabs();
@@ -78,6 +84,8 @@ namespace ScriptCanvasEditor
// The host widget field of the tabMetadata is not used and will not overwrite the tab data
void SetTabText(int tabIndex, const QString& path, Tracker::ScriptCanvasFileState fileState = Tracker::ScriptCanvasFileState::INVALID);
void UpdateFileState(const ScriptCanvasEditor::SourceHandle& assetId, Tracker::ScriptCanvasFileState fileState);
Q_SIGNALS:
void TabInserted(int index);
void TabRemoved(int index);
@@ -101,8 +109,6 @@ namespace ScriptCanvasEditor
// Called when the selected tab changes
void currentChangedTab(int index);
void SetFileState(ScriptCanvasEditor::SourceHandle, Tracker::ScriptCanvasFileState fileState);
int m_signalSaveOnChangeTo = -1;
};
}
@@ -716,10 +716,7 @@ namespace ScriptCanvasEditor
void GraphVariablesModel::SetActiveScene(const ScriptCanvas::ScriptCanvasId& scriptCanvasId)
{
ScriptCanvas::GraphVariableManagerNotificationBus::Handler::BusDisconnect();
m_assetType = AZ::Data::AssetType::CreateNull();
ScriptCanvas::GraphRequestBus::EventResult(m_assetType, scriptCanvasId, &ScriptCanvas::GraphRequests::GetAssetType);
m_assetType = azrtti_typeid<ScriptCanvasAsset>();
m_scriptCanvasId = scriptCanvasId;
if (m_scriptCanvasId.IsValid())