public ExampleViewManager(IScrollView scrollView) { //we get the default basic view converters from the current loaded toolkit var converters = FigmaSharp.AppContext.Current.GetFigmaConverters(); //TIP: the render consist in 2 steps: //1) generate all the views, decorating and calculate sizes //2) with this views we generate the hierarchy and position all the views based in the //native toolkit positioning system //in this case we want use a remote file provider (figma url from our document) fileProvider = new FigmaRemoteFileProvider(); //we initialize our renderer service, this uses all the converters passed //and generate a collection of NodesProcessed which is basically contains <FigmaModel, IView, FigmaParentModel> var rendererService = new FigmaFileRendererService(fileProvider, converters); rendererService.Start(fileName, scrollView); //now we have all the views processed and the relationship we can distribute all the views into the desired base view var distributionService = new FigmaViewRendererDistributionService(rendererService); distributionService.Start(); //We want know the background color of the figma camvas and apply to our scrollview var canvas = fileProvider.Nodes.OfType <FigmaCanvas>().FirstOrDefault(); if (canvas != null) { scrollView.BackgroundColor = canvas.backgroundColor; } //NOTE: some toolkits requires set the real size of the content of the scrollview before position layers scrollView.AdjustToContent(); }
public ExampleViewManager(IScrollView scrollView, FigmaViewConverter[] converters) { fileProvider = new FigmaRemoteFileProvider(); RendererService = new FigmaFileRendererService(fileProvider, converters); var options = new FigmaViewRendererServiceOptions() { ScanChildrenFromFigmaInstances = false }; RendererService.Start(fileName, scrollView.ContentView, options); distributionService = new FigmaViewRendererDistributionService(RendererService); distributionService.Start(); //We want know the background color of the figma camvas and apply to our scrollview var canvas = fileProvider.Nodes.OfType <FigmaCanvas>().FirstOrDefault(); if (canvas != null) { scrollView.BackgroundColor = canvas.backgroundColor; } scrollView.AdjustToContent(); }
//NSProgressIndicator progressIndicator; void Load(string version_id, string page_id) { if (string.IsNullOrEmpty(Link_ID)) { return; } windowController.Title = string.Format("Opening “{0}”…", Link_ID); ToggleSpinnerState(toggle_on: true); windowController.EnableButtons(false); scrollview.ClearSubviews(); new Thread(() => { this.InvokeOnMainThread(() => { AppContext.Current.SetAccessToken(Token); var converters = AppContext.Current.GetFigmaConverters(); Console.WriteLine("TOKEN: " + Token); var fileProvider = new FigmaRemoteFileProvider(); var rendererService = new FigmaFileRendererService(fileProvider, converters); rendererService.Start(Link_ID, scrollview); var distributionService = new FigmaViewRendererDistributionService(rendererService); distributionService.Start(); fileProvider.ImageLinksProcessed += (s, e) => { // done }; //We want know the background color of the figma camvas and apply to our scrollview var canvas = fileProvider.Nodes.OfType <FigmaCanvas>().FirstOrDefault(); if (canvas != null) { scrollview.BackgroundColor = canvas.backgroundColor; } ////NOTE: some toolkits requires set the real size of the content of the scrollview before position layers scrollview.AdjustToContent(); windowController.Title = Link_ID; windowController.UpdateVersionMenu(); windowController.UpdatePagesPopupButton(); windowController.EnableButtons(true); ToggleSpinnerState(toggle_on: false); }); }).Start(); }
/// <summary> /// Initializes a new instance of the <see cref="T:FigmaSharp.FigmaFile"/> class. /// </summary> /// <param name="file">File.</param> /// <param name="figmaViewConverters">Figma view converters.</param> public FigmaFile(string file, FigmaViewConverter[] figmaViewConverters) { this.file = file; ContentView = AppContext.Current.CreateEmptyView(); FigmaImages = new List <IImageView>(); var assembly = System.Reflection.Assembly.GetCallingAssembly(); figmaLocalFileProvider = new FigmaManifestFileProvider(assembly); fileService = new FigmaFileRendererService(figmaLocalFileProvider, figmaViewConverters); rendererService = new FigmaViewRendererDistributionService(fileService); }
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); }
public FigmaDesignerSession(IFigmaFileProvider figmaFileProvider, FigmaFileRendererService figmaViewRendererService, FigmaViewRendererDistributionService figmaViewRendererDistributionService) { fileProvider = figmaFileProvider; rendererService = figmaViewRendererService; distributionService = figmaViewRendererDistributionService; }
void Load(string version_id, string page_id) { Title = string.Format("Opening “{0}”…", Link_ID); (Window.ContentViewController as DocumentViewController).ToggleSpinnerState(toggle_on: true); RefreshButton.Enabled = false; CodeButton.Enabled = false; AppContext.Current.SetAccessToken(Token); var converters = AppContext.Current.GetFigmaConverters(); my_scroll_view = new NSScrollView(); ScrollViewWrapper wrapper = new ScrollViewWrapper(my_scroll_view); new Thread(() => { this.InvokeOnMainThread(() => { fileProvider = new FigmaRemoteFileProvider(); var rendererService = new FigmaFileRendererService(fileProvider, converters); rendererService.Start(Link_ID, wrapper); var distributionService = new FigmaViewRendererDistributionService(rendererService); distributionService.Start(); fileProvider.ImageLinksProcessed += (s, e) => { this.InvokeOnMainThread(() => { Console.WriteLine("LOADING DONE"); if (fileProvider.Response == null) { (Window.ContentViewController as DocumentViewController).ToggleSpinnerState(toggle_on: false); ShowError(); return; } FigmaCanvas canvas; if (!string.IsNullOrEmpty(page_id)) { canvas = (FigmaCanvas)fileProvider.Nodes.First(x => x.name == page_id); } else { canvas = (FigmaCanvas)fileProvider.Nodes.OfType <FigmaCanvas>().FirstOrDefault(); } wrapper.BackgroundColor = canvas.backgroundColor; wrapper.AdjustToContent(); // TODO: scroll to middle var scroll = (NSScrollView)wrapper.NativeObject; scroll.ScrollerStyle = NSScrollerStyle.Overlay; scroll.AutohidesScrollers = true; Window.ContentView.AddSubview(scroll); scroll.Frame = Window.ContentView.Bounds; Title = fileProvider.Response.name; Window.Title = fileProvider.Response.name; UpdateVersionMenu(); UpdatePagesPopupButton(); RefreshButton.Enabled = true; CodeButton.Enabled = true; PagePopUpButton.Enabled = true; (Window.ContentViewController as DocumentViewController).ToggleSpinnerState(toggle_on: false); }); }; }); }).Start(); }