Exemplo n.º 1
0
        protected async override void OnRun()
        {
            if (IdeApp.ProjectOperations.CurrentSelectedItem is ProjectFolder currentFolder && currentFolder.IsDocumentDirectoryBundle())
            {
                var bundle = FigmaBundle.FromDirectoryPath(currentFolder.Path.FullPath);
                if (bundle == null)
                {
                    return;
                }
                var includeImages = true;

                IdeApp.Workbench.StatusBar.AutoPulse = true;
                IdeApp.Workbench.StatusBar.BeginProgress($"Regenerating ‘{bundle.Manifest.DocumentTitle}’…");

                await Task.Run(() => {
                    //we need to ask to figma server to get nodes as demmand
                    var fileProvider = new FigmaLocalFileProvider(bundle.ResourcesDirectoryPath);
                    fileProvider.Load(bundle.DocumentFilePath);
                    bundle.Reload();

                    var codeRendererService = new NativeViewCodeService(fileProvider);
                    bundle.SaveAll(includeImages);
                });

                IdeApp.Workbench.StatusBar.EndProgress();
                IdeApp.Workbench.StatusBar.AutoPulse = false;

                await currentFolder.Project.IncludeBundleAsync(bundle, includeImages)
                .ConfigureAwait(true);
            }
        }
Exemplo n.º 2
0
        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 FigmaLocalFileProvider(localPath)
                {
                    File = filePath.FullPath
                };
                rendererService = new NativeViewRenderingService(fileProvider);

                //we generate a new file provider for embeded windows
                var tmpRemoteProvider = new FigmaLocalFileProvider(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);
        }
Exemplo n.º 3
0
        async Task <List <ValueData> > FetchDataAsync()
        {
            var test = new List <ValueData>();

            //we iterate over all the bundles

            foreach (var figmaBundle in project.GetFigmaPackages())
            {
                var fileProvider = new FigmaLocalFileProvider(figmaBundle.ResourcesDirectoryPath);
                await fileProvider.LoadAsync(figmaBundle.DocumentFilePath);

                var mainFigmaNodes = fileProvider.GetMainGeneratedLayers();
                foreach (var figmaNode in mainFigmaNodes)
                {
                    var document = figmaBundle.GetFigmaFileView(figmaNode);
                    test.Add(new ValueData(document, fileProvider));
                }
            }
            return(test);
        }
Exemplo n.º 4
0
 public override void InitializeFigmaComponent()
 {
     InternalInitializeComponent();
     FileProvider    = new FigmaLocalFileProvider("Resources");
     RendererService = new FigmaViewRendererService(FileProvider, GetFigmaViewConverters());
 }