#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); }