protected override async Task OnInitialize(ModelDescriptor modelDescriptor, Properties status) { if (!(modelDescriptor is FileDescriptor fileDescriptor)) { throw new InvalidOperationException(); } if (session == null) { Owner = fileDescriptor.Owner; filePath = fileDescriptor.FilePath; DocumentTitle = fileDescriptor.FilePath.FileName; figmaDelegate = new FigmaDesignerDelegate(); var localPath = Path.Combine(filePath.ParentDirectory.FullPath, FigmaBundle.ResourcesDirectoryName); fileProvider = new ControlFileNodeProvider(localPath) { File = filePath.FullPath }; rendererService = new ControlViewRenderingService(fileProvider); //we generate a new file provider for embeded windows var tmpRemoteProvider = new FileNodeProvider(localPath) { File = filePath.FullPath }; rendererService.CustomConverters.Add(new EmbededWindowConverter(tmpRemoteProvider) { LiveButtonAlwaysVisible = false }); rendererService.CustomConverters.Add(new EmbededSheetDialogConverter(tmpRemoteProvider)); layoutManager = new StoryboardLayoutManager(); session = new FigmaDesignerSession(fileProvider, rendererService, layoutManager); //session.ModifiedChanged += HandleModifiedChanged; session.ReloadFinished += Session_ReloadFinished; surface = new FigmaDesignerSurface(figmaDelegate, session) { Session = session }; surface.FocusedViewChanged += Surface_FocusedViewChanged; var window = NSApplication.SharedApplication.MainWindow; surface.SetWindow(new WindowInternalWrapper(window)); surface.StartHoverSelection(); //IdeApp.Workbench.ActiveDocumentChanged += OnActiveDocumentChanged; IdeApp.Workbench.DocumentOpened += OnDocumentOpened; } await RefreshAll(); await base.OnInitialize(modelDescriptor, status); }
public override void ViewDidLoad() { base.ViewDidLoad(); scrollViewWrapper = new ScrollViewWrapper(scrollview); outlinePanel = new OutlinePanel(); var converters = FigmaSharp.AppContext.Current.GetFigmaConverters(); //we load all the services fileProvider = new FigmaManifestFileProvider(this.GetType().Assembly); rendererService = new FigmaFileRendererService(fileProvider, converters); distributionService = new FigmaViewRendererDistributionService(rendererService); designerDelegate = new FigmaDesignerDelegate(); //figma session handles session = new FigmaDesignerSession(fileProvider, rendererService, distributionService); designerSurface = new FigmaDesignerSurface(designerDelegate, session); // we set to our surface current window to listen changes on it var window = NSApplication.SharedApplication.DangerousWindows .FirstOrDefault(s => s is WindowWrapper) as WindowWrapper; designerSurface.SetWindow(window); //time to reload a figma document in the current session session.Reload(scrollViewWrapper, "FigmaStoryboard.figma", new FigmaViewRendererServiceOptions()); // designerSurface.StartHoverSelection(); var second = new NSWindow(new CGRect(0, 0, 300, 600), NSWindowStyle.Titled | NSWindowStyle.Resizable | NSWindowStyle.Closable, NSBackingStore.Buffered, false); window.AddChildWindow(second, NSWindowOrderingMode.Above); //propertyPanel = new FigmaPropertyPanel(); //second.ContentView = propertyPanel.View; //propertyPanel.Initialize(); //surface.FocusedViewChanged += (sender, e) => //{ // var model = session.GetModel(e); // propertyPanel.Select(model); //}; //propertyPanel.Select(session.MainViews[0].FigmaNode); }
protected override async Task OnInitialize(ModelDescriptor modelDescriptor, Properties status) { if (!(modelDescriptor is FileDescriptor fileDescriptor)) { throw new InvalidOperationException(); } if (session == null) { Owner = fileDescriptor.Owner; fileName = fileDescriptor.FilePath; DocumentTitle = fileDescriptor.FilePath.FileName; figmaDelegate = new FigmaDesignerDelegate(); var converters = FigmaSharp.AppContext.Current.GetFigmaConverters(); fileProvider = new FigmaManifestFileProvider(this.GetType().Assembly); rendererService = new FigmaFileRendererService(fileProvider, converters); distributionService = new FigmaViewRendererDistributionService(rendererService); session = new FigmaDesignerSession(fileProvider, rendererService, distributionService); //session.ModifiedChanged += HandleModifiedChanged; session.ReloadFinished += Session_ReloadFinished; surface = new FigmaDesignerSurface(figmaDelegate, session) { Session = session }; surface.FocusedViewChanged += Surface_FocusedViewChanged; var window = NSApplication.SharedApplication.MainWindow; surface.SetWindow(new WindowInternalWrapper(window)); surface.StartHoverSelection(); //IdeApp.Workbench.ActiveDocumentChanged += OnActiveDocumentChanged; IdeApp.Workbench.DocumentOpened += OnDocumentOpened; } if (fileDescriptor.Owner is DotNetProject project) { session.Reload(scrollViewWrapper, fileName, new FigmaViewRendererServiceOptions()); } await base.OnInitialize(modelDescriptor, status); }
internal void GenerateTree(FigmaDocument document, IFigmaDesignerDelegate figmaDelegate) { data = new FigmaNodeView(document); figmaDelegate.ConvertToNodes(document, data); outlinePanel.GenerateTree(data); }