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); } }
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); }
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); }
public override void InitializeFigmaComponent() { InternalInitializeComponent(); FileProvider = new FigmaLocalFileProvider("Resources"); RendererService = new FigmaViewRendererService(FileProvider, GetFigmaViewConverters()); }