示例#1
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);
        }
示例#2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            scrollViewWrapper = new ScrollViewWrapper(scrollview);
            outlinePanel      = new OutlinePanel();

            var converters = FigmaSharp.AppContext.Current.GetFigmaConverters();

            //we load all the services
            fileProvider        = new FigmaManifestFileProvider(this.GetType().Assembly);
            rendererService     = new FigmaFileRendererService(fileProvider, converters);
            distributionService = new FigmaViewRendererDistributionService(rendererService);

            designerDelegate = new FigmaDesignerDelegate();

            //figma session handles
            session         = new FigmaDesignerSession(fileProvider, rendererService, distributionService);
            designerSurface = new FigmaDesignerSurface(designerDelegate, session);

            // we set to our surface current window to listen changes on it
            var window = NSApplication.SharedApplication.DangerousWindows
                         .FirstOrDefault(s => s is WindowWrapper) as WindowWrapper;

            designerSurface.SetWindow(window);

            //time to reload a figma document in the current session
            session.Reload(scrollViewWrapper, "FigmaStoryboard.figma", new FigmaViewRendererServiceOptions());

            //
            designerSurface.StartHoverSelection();

            var second = new NSWindow(new CGRect(0, 0, 300, 600), NSWindowStyle.Titled | NSWindowStyle.Resizable | NSWindowStyle.Closable, NSBackingStore.Buffered, false);

            window.AddChildWindow(second, NSWindowOrderingMode.Above);

            //propertyPanel = new FigmaPropertyPanel();
            //second.ContentView = propertyPanel.View;
            //propertyPanel.Initialize();

            //surface.FocusedViewChanged += (sender, e) =>
            //{
            //    var model = session.GetModel(e);
            //    propertyPanel.Select(model);
            //};

            //propertyPanel.Select(session.MainViews[0].FigmaNode);
        }
示例#3
0
        protected override async Task OnInitialize(ModelDescriptor modelDescriptor, Properties status)
        {
            if (!(modelDescriptor is FileDescriptor fileDescriptor))
            {
                throw new InvalidOperationException();
            }

            if (session == null)
            {
                Owner         = fileDescriptor.Owner;
                fileName      = fileDescriptor.FilePath;
                DocumentTitle = fileDescriptor.FilePath.FileName;

                figmaDelegate = new FigmaDesignerDelegate();
                var converters = FigmaSharp.AppContext.Current.GetFigmaConverters();

                fileProvider        = new FigmaManifestFileProvider(this.GetType().Assembly);
                rendererService     = new FigmaFileRendererService(fileProvider, converters);
                distributionService = new FigmaViewRendererDistributionService(rendererService);

                session = new FigmaDesignerSession(fileProvider, rendererService, distributionService);
                //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;
            }

            if (fileDescriptor.Owner is DotNetProject project)
            {
                session.Reload(scrollViewWrapper, fileName, new FigmaViewRendererServiceOptions());
            }
            await base.OnInitialize(modelDescriptor, status);
        }
 internal void GenerateTree(FigmaDocument document, IFigmaDesignerDelegate figmaDelegate)
 {
     data = new FigmaNodeView(document);
     figmaDelegate.ConvertToNodes(document, data);
     outlinePanel.GenerateTree(data);
 }