sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    What? No Menu?

    Scheduled Pinned Locked Moved Developers' Forum
    15 Posts 5 Posters 485 Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • thomthomT Offline
      thomthom
      last edited by

      Yes, UI.menu('Plugins').add_item('Hello') { puts "World" } works.

      But does
      x = UI.menu('Plugins') x.add_item('Hello') { puts "World" }
      work for you?

      Thomas Thomassen β€” SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • J Offline
        Jim
        last edited by

        No, but this does:

        x=UI.menu('Plugins');x.add_item("hi") { puts "hi" }

        (single line.)

        Hi

        1 Reply Last reply Reply Quote 0
        • thomthomT Offline
          thomthom
          last edited by

          ...

          This makes no sense...

          πŸ˜• ❓

          Thomas Thomassen β€” SketchUp Monkey & Coding addict
          List of my plugins and link to the CookieWare fund

          1 Reply Last reply Reply Quote 0
          • C Offline
            cjthompson
            last edited by

            I think it has something to do with the fact that UI.menu() returns a new object each time:

            UI.menu("Plugins")
            #<Sketchup;;Menu;0x5dbf1c0>
            UI.menu("Plugins")
            #<Sketchup;;Menu;0x5dbeff8>
            UI.menu("Plugins")
            #<Sketchup;;Menu;0x5dbee30>
            UI.menu("Plugins")
            #<Sketchup;;Menu;0x5dbec68>
            UI.menu("Plugins")
            #<Sketchup;;Menu;0x5dbeaa0>
            
            1 Reply Last reply Reply Quote 0
            • thomthomT Offline
              thomthom
              last edited by

              But still.... the exact same code saved as a .rb works.

              Thomas Thomassen β€” SketchUp Monkey & Coding addict
              List of my plugins and link to the CookieWare fund

              1 Reply Last reply Reply Quote 0
              • C Offline
                cjthompson
                last edited by

                That's because the code is executed all during one frame, which also explains why the one-liner works.

                My guess is that Sketchup creates a new menu , adds the items, and does the validation each frame, instead of just using one menu.

                1 Reply Last reply Reply Quote 0
                • J Offline
                  Jim
                  last edited by

                  frame?

                  Hi

                  1 Reply Last reply Reply Quote 0
                  • C Offline
                    cjthompson
                    last edited by

                    I suppose refresh is a better term. I was referring to a frame in animation.

                    1 Reply Last reply Reply Quote 0
                    • Dan RathbunD Offline
                      Dan Rathbun
                      last edited by

                      Thread may be a better word.

                      Examine the eval.c file in the Ruby source and you'll see that files are treated a bit differently.

                      I'm not here much anymore.

                      1 Reply Last reply Reply Quote 0
                      • snicoloS Offline
                        snicolo
                        last edited by

                        @cjthompson said:

                        That's because the code is executed all during one frame, which also explains why the one-liner works.

                        My guess is that Sketchup creates a new menu , adds the items, and does the validation each frame, instead of just using one menu.

                        This is exactly right. It depends on the context available when commands are executed.

                        Another way to specify multi-line commands in Ruby is to use ''
                        You could do:

                        x = UI.menu('Plugins') \
                        x.add_item('Hello') { puts "World" } \
                        x.add_item('Hello2') { puts "World2" } 
                        

                        and it would work and be all executed as a single command.

                        Simone Nicolo
                        QA Manager
                        http://www.sketchup.com

                        1 Reply Last reply Reply Quote 0
                        • 1 / 1
                        • First post
                          Last post
                        Buy SketchPlus
                        Buy SUbD
                        Buy WrapR
                        Buy eBook
                        Buy Modelur
                        Buy Vertex Tools
                        Buy SketchCuisine
                        Buy FormFonts

                        Advertisement