Beispiel #1
0
        static void LoadLoginDialog(FigmaViewRendererService rendererService, FigmaViewRendererServiceOptions options)
        {
            mainWindow.Size = new Size(720, 467);
            var customConverters = new FigmaViewConverter[] {
                new DoThisLaterButtonConverter(),
                new SignInMicrosoftButtonConverter(),
                //new CreateAccountLinkConverter (),
                //new WhySignInLinkConverter (),
            };

            rendererService.CustomConverters.AddRange(customConverters);

            var signInDialog = rendererService.RenderByName <IView>(LoginDialog, options);

            signInDialog.CornerRadius    = 5;
            signInDialog.BackgroundColor = new Color(0.27f, 0.15f, 0.41f);
            SetContentDialog(signInDialog);

            foreach (var viewConverter in customConverters)
            {
                rendererService.CustomConverters.Remove(viewConverter);
            }

            //logic
            var signInButton = rendererService.FindViewByName <IButton>(SignInMicrosoftButtonConverter.SignInMicrosoftButtonName);

            signInButton.Focus();
            signInButton.Clicked += (s, e) =>
            {
                if (signInButton is IViewTransitable figmaTransition)
                {
                    ProcessTransitionNodeID(figmaTransition.TransitionNodeID, rendererService, options);
                }
            };

            var doThisLaterButton = rendererService.FindViewByName <IButton>(DoThisLaterButtonConverter.DoThisLaterButtonName);

            doThisLaterButton.Clicked += (s, e) =>
            {
                if (doThisLaterButton is IViewTransitable figmaTransition)
                {
                    ProcessTransitionNodeID(figmaTransition.TransitionNodeID, rendererService, options);
                }
            };
        }
Beispiel #2
0
        static void LoadRecentItemsDialog(FigmaViewRendererService rendererService, FigmaViewRendererServiceOptions options)
        {
            mainWindow.Size = new Size(720, 467);

            var customConverters = new FigmaViewConverter[] {
                new SearchFilterConverter(),
            };

            rendererService.CustomConverters.AddRange(customConverters);

            //new SearchFilterConverter ()
            var dialog = rendererService.RenderByName <IView>("RecentItemsDialog", options);

            dialog.CornerRadius    = 5;
            dialog.BackgroundColor = Color.White;

            SetContentDialog(dialog);

            foreach (var viewConverter in customConverters)
            {
                rendererService.CustomConverters.Remove(viewConverter);
            }

            var searchBox = dialog.Children
                            .OfType <ISearchBox>()
                            .FirstOrDefault();

            searchBox.Focus();

            var closeButton = dialog.Children
                              .OfType <IImageButton>()
                              .FirstOrDefault();

            closeButton.Clicked += (s, e) =>
            {
                NSRunningApplication.CurrentApplication.Terminate();
            };
        }
Beispiel #3
0
 public PlatformCustomViewConverter(string platform, FigmaViewConverter converter)
 {
     Platform  = platform;
     Converter = converter;
 }
        public void GetCode(StringBuilder builder, FigmaCodeNode node, FigmaCodeNode parent = null, FigmaCodeRendererServiceOptions currentRendererOptions = null)
        {
            //in first level we clear all identifiers
            if (parent == null)
            {
                if (MainNode == null)
                {
                    //clear all nodes
                    Nodes.Clear();

                    identifiers.Clear();
                    OnStartGetCode();

                    //we initialize
                    CurrentRendererOptions = currentRendererOptions ?? new FigmaCodeRendererServiceOptions();

                    //we store our main node
                    MainNode       = node;
                    ParentMainNode = parent;
                }
            }

            if (node != null)
            {
                Nodes.Add(node);
            }

            FigmaCodeNode      calculatedParentNode = null;
            FigmaViewConverter converter            = null;

            var isNodeSkipped = IsNodeSkipped(node);

            //on node skipped we don't render
            if (!isNodeSkipped)
            {
                //if (figmaProvider.RendersProperties (node)) {
                converter = GetConverter(node, customConverters);
                //bool navigateChild = true;
                if (converter == null)
                {
                    converter = GetConverter(node, figmaConverters);
                }

                if (converter != null)
                {
                    if (!node.HasName)
                    {
                        if (!TryGetCodeViewName(node, parent, converter, out string identifier))
                        {
                            identifier = DefaultViewName;
                        }

                        //we store our name to don't generate dupplicates
                        var lastIndex = GetLastInsertedIndex(identifier);
                        if (lastIndex >= 0)
                        {
                            identifiers.Remove(identifier);
                        }
                        lastIndex++;

                        node.Name = identifier;
                        if (lastIndex > 0)
                        {
                            node.Name += lastIndex;
                        }
                        identifiers.Add(identifier, lastIndex);
                    }

                    builder.AppendLine();
                    builder.AppendLine($"// View:     {node.Name}");
                    builder.AppendLine($"// NodeName: {node.Node.name}");
                    builder.AppendLine($"// NodeType: {node.Node.type}");
                    builder.AppendLine($"// NodeId:   {node.Node.id}");

                    OnPreConvertToCode(builder, node, parent, converter, codePropertyConverter);
                    //we generate our code and replace node name

                    var code = converter.ConvertToCode(node, parent, this);
                    builder.AppendLineIfValue(code.Replace(Resources.Ids.Conversion.NameIdentifier, node.Name));
                    OnPostConvertToCode(builder, node, parent, converter, codePropertyConverter);


                    if (RendersAddChild(node, parent, this))
                    {
                        builder.AppendLineIfValue(codePropertyConverter.ConvertToCode(CodeProperties.AddChild, node, parent, this));
                        OnChildAdded(builder, node, parent, converter, codePropertyConverter);
                    }

                    if (RendersSize(node, parent, this))
                    {
                        builder.AppendLineIfValue(codePropertyConverter.ConvertToCode(CodeProperties.Frame, node, parent, this));
                        OnFrameSet(builder, node, parent, converter, codePropertyConverter);
                    }

                    if (RendersConstraints(node, parent, this))
                    {
                        builder.AppendLineIfValue(codePropertyConverter.ConvertToCode(CodeProperties.Constraints, node, parent, this));
                    }

                    calculatedParentNode = node;
                }
                else
                {
                    //without a converter we don't have any view created, we need to attach to the parent view
                    calculatedParentNode = parent;
                }
            }

            //without converter we scan the children automatically
            var navigateChild = converter?.ScanChildren(node.Node) ?? true;

            if (navigateChild && HasChildrenToRender(node))
            {
                foreach (var item in GetChildrenToRender(node))
                {
                    var figmaNode = new FigmaCodeNode(item, parent: node);
                    GetCode(builder, figmaNode, calculatedParentNode);
                }
            }

            if (MainNode == node)
            {
                //first loop
                Clear();
            }
        }
        protected virtual bool TryGetCodeViewName(FigmaCodeNode node, FigmaCodeNode parent, FigmaViewConverter converter, out string identifier)
        {
            try {
                identifier = converter.GetType().Name;
                if (identifier.StartsWith(init))
                {
                    identifier = identifier.Substring(init.Length);
                }

                if (identifier.EndsWith(end))
                {
                    identifier = identifier.Substring(0, identifier.Length - end.Length);
                }

                identifier = char.ToLower(identifier[0]) + identifier.Substring(1) + ViewIdentifier;

                return(true);
            } catch (Exception) {
                identifier = null;
                return(false);
            }
        }
 protected virtual void OnFrameSet(StringBuilder builder, FigmaCodeNode node, FigmaCodeNode parent, FigmaViewConverter converter, FigmaCodePropertyConverterBase codePropertyConverter)
 {
 }