95 lines
3.0 KiB
C#
95 lines
3.0 KiB
C#
#nullable enable
|
|
using ImGuiNET;
|
|
using T3.Core.SystemUi;
|
|
using T3.Editor.Gui.Graph.Dialogs;
|
|
using T3.Editor.Gui.Styling;
|
|
using T3.Editor.Gui.UiHelpers;
|
|
using T3.Editor.Gui.Windows.SymbolLib;
|
|
using T3.Editor.UiModel;
|
|
|
|
namespace T3.Editor.Gui.Dialogs;
|
|
|
|
internal sealed class RenameNamespaceDialog : ModalDialog
|
|
{
|
|
internal void Draw(NamespaceTreeNode subtreeNodeToRename)
|
|
{
|
|
if (BeginDialog("Move or rename namespace"))
|
|
{
|
|
if (ImGui.IsWindowAppearing())
|
|
{
|
|
_node = subtreeNodeToRename;
|
|
_nameSpace = _node.Namespace;
|
|
EditableSymbolProject.TryGetEditableProjectOfNamespace(_nameSpace, out _projectToCopyFrom);
|
|
_projectToCopyTo = _projectToCopyFrom;
|
|
}
|
|
|
|
var hasProjectToCopyFrom = _projectToCopyFrom != null;
|
|
if (hasProjectToCopyFrom)
|
|
{
|
|
SymbolModificationInputs.DrawProjectDropdown(ref _nameSpace, ref _projectToCopyTo);
|
|
|
|
if (_projectToCopyTo != null)
|
|
{
|
|
DrawRenameFields();
|
|
ImGui.SameLine();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ImGui.TextColored(UiColors.StatusError.Rgba, $"No source project found for namespace {_nameSpace}");
|
|
}
|
|
|
|
if (CustomComponents.DrawCtaButton("Cancel", Icon.None, CustomComponents.ButtonStates.Emphasized))
|
|
{
|
|
Close();
|
|
}
|
|
|
|
EndDialogContent();
|
|
}
|
|
|
|
EndDialog();
|
|
}
|
|
|
|
private static void DrawRenameFields()
|
|
{
|
|
if (ImGui.IsWindowAppearing())
|
|
ImGui.SetKeyboardFocusHere();
|
|
|
|
if (_projectToCopyTo == null || _node == null || _projectToCopyFrom == null)
|
|
{
|
|
ImGui.Text("invalid project data");
|
|
return;
|
|
}
|
|
|
|
_ = SymbolModificationInputs.DrawNamespaceInput(ref _nameSpace, _projectToCopyTo, false, out var namespaceValid);
|
|
|
|
CustomComponents.HelpText("Careful now. This operator might affect a lot of operator definitions");
|
|
|
|
if (CustomComponents.DrawCtaButton("Rename", namespaceValid))
|
|
{
|
|
if (EditableSymbolProject.RenameNameSpaces(_node, _projectToCopyFrom, _projectToCopyTo, _nameSpace, out var reason))
|
|
{
|
|
T3Ui.Save(false);
|
|
}
|
|
else
|
|
{
|
|
BlockingWindow.Instance.ShowMessageBox(reason, "Could not rename namespace");
|
|
}
|
|
|
|
Close();
|
|
}
|
|
}
|
|
|
|
private static void Close()
|
|
{
|
|
ImGui.CloseCurrentPopup();
|
|
_node = null;
|
|
_projectToCopyTo = null;
|
|
_projectToCopyFrom = null;
|
|
}
|
|
|
|
private static NamespaceTreeNode? _node;
|
|
private static string _nameSpace= string.Empty;
|
|
private static EditableSymbolProject? _projectToCopyFrom;
|
|
private static EditableSymbolProject? _projectToCopyTo;
|
|
} |