#nullable enable
using ImGuiNET;
using T3.Core.Operator;
using T3.Core.Operator.Slots;
using T3.Editor.Gui.Interaction;
namespace T3.Editor.UiModel;
///
/// Abstraction different graph views (I.e. legacy and magnetic)
///
internal interface IGraphView
{
bool Destroyed { get; set; }
ScalableCanvas Canvas { get; }
void FocusViewToSelection();
///
/// Notifies the view that the graph structure changed outside its own interactions
/// (e.g. a section added from the app menu), so it refreshes its layout model.
///
void FlagStructureAsChanged();
void OpenAndFocusInstance(IReadOnlyList path);
void OpenAndFocusSection(IReadOnlyList compositionPath, Guid sectionId);
void OpenAndFocusInputOrOutput(IReadOnlyList compositionPath, Guid ioId);
public CanvasScope GetTargetScope();
void BeginDraw(bool backgroundActive, bool bgHasInteractionFocus);
void DrawGraph(ImDrawListPtr drawList, float graphOpacity);
///
/// Should be active during actions like dragging a connection.
///
bool HasActiveInteraction { get; }
void Close();
void CreatePlaceHolderConnectedToInput(SymbolUi.Child symbolChildUi, Symbol.InputDefinition inputInputDefinition);
void StartDraggingFromInputSlot(SymbolUi.Child symbolChildUi, Symbol.InputDefinition inputInputDefinition);
void ExtractAsConnectedOperator(InputSlot inputSlot, SymbolUi.Child symbolChildUi, Symbol.Child.Input input);
}