Beispiel #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;

                using var monitor = IdeApp.Workbench.ProgressMonitors.GetFigmaProgressMonitor(
                          $"Regenerating ‘{bundle.Manifest.DocumentTitle}’…",
                          $"‘{bundle.Manifest.DocumentTitle}’ regenerated successfully");

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

                    var codeRendererService = new NativeViewCodeService(fileProvider)
                    {
                        TranslationService = new Services.MonoDevelopTranslationService()
                    };
                    bundle.SaveAll(includeImages, fileProvider);
                });

                await currentFolder.Project.IncludeBundleAsync(monitor, bundle, includeImages)
                .ConfigureAwait(true);
            }
        }
Beispiel #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 ControlFileNodeProvider(localPath)
                {
                    File = filePath.FullPath
                };
                rendererService = new ControlViewRenderingService(fileProvider);

                //we generate a new file provider for embeded windows
                var tmpRemoteProvider = new FileNodeProvider(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 ControlFileNodeProvider(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);
        }