Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        //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();
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
        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();
        }
Esempio n. 10
0
        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;
        }
Esempio n. 11
0
        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();
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 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);
        }