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

      Same thing in SU6.

      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

        That has always worked for me and still does. I typically use it to quickly reload a file:

        UI.menu('Plugins').add_item("Reload and Run") { load "my_file.rb"; do_method }

        Hi

        1 Reply Last reply Reply Quote 0
        • 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