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(); }
public static async Task UpdateFigmaFilesAsync(this Project sender, IEnumerable <ProjectFile> projectFiles, FigmaBundle figmaBundle, FigmaFileVersion version, bool translateStrings) { var includeImages = true; var fileProvider = new FigmaRemoteFileProvider() { Version = version }; await fileProvider.LoadAsync(figmaBundle.FileId); Console.WriteLine($"[Done] Loaded Remote File provider for Version {version?.id ?? "Current"}"); var codeRendererService = new NativeViewCodeService(fileProvider); await Task.Run(() => { figmaBundle.Update(version, includeImages: includeImages); }); await sender.IncludeBundleAsync(figmaBundle, includeImages : includeImages); foreach (var designerFile in projectFiles) { if (designerFile.TryGetFigmaNode(fileProvider, out var figmaNode)) { var fileView = figmaBundle.GetFigmaFileView(figmaNode); fileView.GeneratePartialDesignerClass(codeRendererService, designerFile.FilePath.ParentDirectory, figmaBundle.Namespace, translateStrings); } } }
static void Example2() { var document = "b05oGrcu9WI9txiHqdhCUyE4"; mainWindow.Size = new Size(720, 467); mainWindow.Center(); //windows properties mainWindow.Content.BackgroundColor = Color.Transparent; mainWindow.Borderless = true; mainWindow.Resizable = false; mainWindow.BackgroundColor = Color.Transparent; //we add the control converters var converters = Resources.GetConverters() .Union(FigmaSharp.AppContext.Current.GetFigmaConverters()) .ToArray(); fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load(document); var rendererService = new FigmaViewRendererService(fileProvider, converters); var options = new FigmaViewRendererServiceOptions { ScanChildrenFromFigmaInstances = false }; var figmaCanvas = fileProvider.Nodes .OfType <FigmaCanvas>() .FirstOrDefault(); rendererService.CustomConverters.Add(new CloseButtonConverter()); ProcessTransitionNodeID(figmaCanvas.prototypeStartNodeID, rendererService, options); }
static void Example1() { const string fileName = "EGTUYgwUC9rpHmm4kJwZQXq4"; var converters = Resources.GetConverters() .Union(FigmaSharp.AppContext.Current.GetFigmaConverters()) .ToArray(); fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load(fileName); var rendererService = new FigmaViewRendererService(fileProvider, converters); var rendererOptions = new FigmaViewRendererServiceOptions() { ScanChildrenFromFigmaInstances = false }; rendererService.RenderInWindow(mainWindow, rendererOptions, "1.0. Bundle Figma Document"); mainWindow.Resizable = false; mainWindow.Center(); var urlTextField = rendererService.FindViewByName <TextBox>("FigmaUrlTextField"); var bundleButton = rendererService.FindViewByName <Button>("BundleButton"); var cancelButton = rendererService.FindViewByName <Button>("CancelButton"); if (cancelButton != null) { cancelButton.Clicked += (s, e) => { if (urlTextField != null) { urlTextField.Text = "You pressed cancel"; } }; } if (bundleButton != null) { bundleButton.Clicked += (s, e) => { if (urlTextField != null) { urlTextField.Text = "You pressed bundle"; } }; } //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) { mainWindow.BackgroundColor = canvas.backgroundColor; } }
//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(); }
static void Main(string[] args) { FigmaApplication.Init(Environment.GetEnvironmentVariable("TOKEN")); NSApplication.Init(); NSApplication.SharedApplication.ActivationPolicy = NSApplicationActivationPolicy.Regular; var stackView = new StackView() { Orientation = LayoutOrientation.Vertical }; scrollView = new ScrollView(); var mainWindow = new Window(new Rectangle(0, 0, 540, 800)) { Content = scrollView }; mainWindow.Closing += delegate { NSRunningApplication.CurrentApplication.Terminate(); }; //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) var 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 FigmaViewRendererService(fileProvider); rendererService.Start(fileName, scrollView.ContentView); //now we have all the views processed and the relationship we can distribute all the views into the desired base view var layoutManager = new StoryboardLayoutManager(); layoutManager.Run(scrollView.ContentView, rendererService); //NOTE: some toolkits requires set the real size of the content of the scrollview before position layers scrollView.AdjustToContent(); mainWindow.Show(); //mainWindow.Title = manager.WindowTitle; NSApplication.SharedApplication.ActivateIgnoringOtherApps(true); NSApplication.SharedApplication.Run(); }
void RefreshTree(string docId) { var converters = NativeControlsContext.Current.GetConverters(); fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load(docId); var codePropertyConverter = NativeControlsContext.Current.GetCodePropertyConverter(); codeRenderer = new NativeViewCodeService(fileProvider, converters, codePropertyConverter); data = new FigmaNodeView(fileProvider.Response.document); figmaDelegate.ConvertToNodes(fileProvider.Response.document, data); outlinePanel.GenerateTree(data); ((NSTextView)logTextField.DocumentView).Value = string.Empty; }
public GameWindow(Rectangle rect) : base(rect) { Resizable = false; //we get the default basic view converters from the current loaded toolkit var converters = FigmaSharp.AppContext.Current.GetFigmaConverters(); //in this case we want use a remote file provider (figma url from our document) var fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load("Jv8kwhoRsrmtJDsSHcTgWGYu"); //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 FigmaViewRendererService(fileProvider, converters); //play background music backgroundMusic = new MusicPlayer("Background", "mp3"); backgroundMusic.Play(-1); coinSound = new MusicPlayer("Coin", "mp3"); gameOverSound = new MusicPlayer("GameOver", "mp3"); //we want load the entire level 1 IView view = rendererService.RenderByName <IView>("Level1"); Content = view; playerTile = rendererService.FindViewStartsWith <IImageView>("Player"); startingPoint = playerTile.Allocation.Origin; pointsLabel = rendererService.FindViewByName <ILabel>("Points"); gemsTiles = rendererService.FindViewsStartsWith <IImageView>("Gem") .ToList(); wallTiles = rendererService.FindViewsStartsWith <IImageView>("Tile") .ToArray(); spikesTiles = rendererService.FindViewsStartsWith <IImageView>("Spikes") .ToArray(); heartTiles = rendererService.FindViewsStartsWith <IImageView>("Heart") .OrderBy(s => s.Allocation.X) .ToList(); WorldUpdate(); }
async Task GenerateBundle(string fileId, FigmaFileVersion version, string namesSpace, bool includeImages, bool translateLabels) { IdeApp.Workbench.StatusBar.AutoPulse = true; IdeApp.Workbench.StatusBar.BeginProgress($"Adding package ‘{fileId}’…"); //we need to ask to figma server to get nodes as demmand var fileProvider = new FigmaRemoteFileProvider(); await fileProvider.LoadAsync(fileId); //bundle generation var currentBundle = await Task.Run(() => { var bundle = currentProject.CreateBundle(fileId, version, fileProvider, namesSpace); bundle.SaveAll(includeImages); return(bundle); }); //now we need to add to Monodevelop all the stuff await currentProject.IncludeBundleAsync(currentBundle, includeImages, savesInProject : false); //to generate all layers we need a code renderer var codeRendererService = new NativeViewCodeService(fileProvider); var mainFigmaNodes = fileProvider.GetMainGeneratedLayers(); foreach (var figmaNode in mainFigmaNodes) { if (!(figmaNode is FigmaFrame) || (figmaNode is FigmaGroup)) { continue; } var figmaBundleView = currentBundle.GetFigmaFileView(figmaNode); figmaBundleView.Generate(codeRendererService, writePublicClassIfExists: false, namesSpace: currentBundle.Namespace, translateLabels); await currentProject.AddFigmaBundleViewAsync(figmaBundleView, savesInProject : false); } await IdeApp.ProjectOperations.SaveAsync(currentProject); IdeApp.Workbench.StatusBar.EndProgress(); IdeApp.Workbench.StatusBar.AutoPulse = false; }
static void Example1() { const string fileName = "FwVa4JS5QsohRhNEnEBKslFk"; var fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load(fileName); var rendererService = new NativeViewRenderingService(fileProvider); //we want to include some special converters to handle windows like normal view containers rendererService.CustomConverters.Add(new EmbededSheetDialogConverter(fileProvider)); rendererService.CustomConverters.Add(new EmbededWindowConverter(fileProvider)); rendererService.RenderInWindow(mainWindow); new StoryboardLayoutManager() .Run(mainWindow.Content, rendererService); mainWindow.Center(); }
public override void ViewDidLoad() { base.ViewDidLoad(); // Do any additional setup after loading the view. outlinePanel = new OutlinePanel(); var scrollView = outlinePanel.EnclosingScrollView; outlinePanel.RaiseFirstResponder += OutlinePanel_RaiseFirstResponder; treeHierarchyContainer.AddSubview(scrollView); treeHierarchyContainer.TranslatesAutoresizingMaskIntoConstraints = false; scrollView.TranslatesAutoresizingMaskIntoConstraints = false; scrollView.TopAnchor.ConstraintEqualToAnchor(treeHierarchyContainer.TopAnchor).Active = true; scrollView.BottomAnchor.ConstraintEqualToAnchor(treeHierarchyContainer.BottomAnchor).Active = true; scrollView.LeftAnchor.ConstraintEqualToAnchor(treeHierarchyContainer.LeftAnchor).Active = true; scrollView.RightAnchor.ConstraintEqualToAnchor(treeHierarchyContainer.RightAnchor).Active = true; figmaDelegate = new FigmaDesignerDelegate(); var converters = FigmaSharp.AppContext.Current.GetFigmaConverters() .Union(Resources.GetConverters()) .ToArray(); fileProvider = new FigmaRemoteFileProvider(); fileProvider.Load("CobaSo7LmEYsuGZB0ED0ewSs"); var addChildConverter = new FigmaCodeAddChildConverter(); var positionConverter = new FigmaCodePositionConverter(); codeRenderer = new FigmaCodeRendererService(fileProvider, converters, positionConverter, addChildConverter); data = new FigmaNodeView(fileProvider.Response.document); figmaDelegate.ConvertToNodes(fileProvider.Response.document, data); outlinePanel.GenerateTree(data); }
public override void InitializeFigmaComponent() { InternalInitializeComponent(); FileProvider = new FigmaRemoteFileProvider(); RendererService = new FigmaViewRendererService(FileProvider, GetFigmaViewConverters()); }
async void Load(FigmaFileVersion version = null, int pageIndex = 0) { if (string.IsNullOrEmpty(DocumentID)) { return; } windowController.EnableButtons(false); if (response == null) { windowController.Title = string.Format("Opening “{0}”…", DocumentID); } FigmaSharp.AppContext.Current.SetAccessToken(Token); if (response == null || version != null) { fileProvider = new FigmaRemoteFileProvider() { File = DocumentID, Version = version }; fileProvider.ImageLinksProcessed += (sender, e) => { InvokeOnMainThread(() => { windowController.ToggleToolbarSpinner(toggle_on: false); }); }; var embeddedSheetConverter = new EmbededSheetDialogConverter(fileProvider); var embeddedWindowConverter = new EmbededWindowConverter(fileProvider); rendererService = new NativeViewRenderingService(fileProvider); rendererService.CustomConverters.Add(embeddedSheetConverter); rendererService.CustomConverters.Add(embeddedWindowConverter); embeddedWindowConverter.LivePreviewLoading += (s, e) => windowController.ToggleToolbarSpinner(true); embeddedWindowConverter.LivePreviewLoaded += (s, e) => windowController.ToggleToolbarSpinner(false); } var scrollView = CreateScrollView(); await rendererService.StartAsync(DocumentID, scrollView.ContentView, new FigmaViewRendererServiceOptions() { StartPage = pageIndex }); windowController.ToggleToolbarSpinner(toggle_on: true); new StoryboardLayoutManager().Run(scrollView.ContentView, rendererService); response = fileProvider.Response; NativeScrollView.RemoveFromSuperview(); MainScrollView = scrollView; NativeScrollView = (NSScrollView)scrollView.NativeObject; View.AddSubview(NativeScrollView); windowController.Window.Title = windowController.Title = response.name; windowController.Window.BackgroundColor = NativeScrollView.BackgroundColor; windowController.UpdatePagesPopupButton(response.document, pageIndex); await windowController.UpdateVersionMenu(DocumentID); windowController.EnableButtons(true); RecentStore.SharedRecentStore.AddRecent(DocumentID, windowController.Window.Title); ToggleSpinner(toggle_on: false); }