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

    [concept] plugin launcher

    Scheduled Pinned Locked Moved Developers' Forum
    39 Posts 10 Posters 5.0k Views 10 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.
    • D Offline
      driven
      last edited by

      Hi Aerilius,

      thanks for replying

      I may have found a workaround for what I'm after using Fred's '000_AdditionalPluginFolders.rb' with 'on off.rb',

      I've made and registered some subfolders in SU, then when I launch with 'rubies OFF' and run '000_AdditionalPluginFolders.rb' I get asked which I want to instal, so I can choose 'Base Set', '2D', 'Fredo' or 'TIG', etc...

      This avoids having to look at or modify the rubies content at all and with a simple folder creator/sorter WebDialog this is almost doing what I want [on mac at least] and without any .rbs [but they can be accessed via a full startup].

      I'll keep digging
      john

      learn from the mistakes of others, you may not live long enough to make them all yourself...

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

        @aerilius said:

        but I haven't figured out how to call the proc.

        Once you have a reference to a proc, call call on it.

        pr = Proc.new { puts "Hi" } pr.call Hi

        Hi

        1 Reply Last reply Reply Quote 0
        • A Offline
          Aerilius
          last edited by

          But can I get the proc from Objectspace? I didn't get it to work...

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

            @aerilius said:

            But can I get the proc from Objectspace? I didn't get it to work...

            Oh yeah. You can get UI::Command objects from ObjectSpace, but you can't get a handle to a Command's associated Proc.

            You can get Proc objects from ObjectSpace

            ObjectSpace.each_object(Proc) {|pr| puts pr }

            But there is no handy way to know which command a Proc is associated with other than the String representation (which is the filename and line number where the command is created.)

            So no "good" solution. I have asked Google for a method to access the Proc of a Command. That would make things sooo much simpler.

            Hi

            1 Reply Last reply Reply Quote 0
            • dukejazzD Offline
              dukejazz
              last edited by

              Your idea of a launcher with a quick search, is something Im looking for. Type a search for any plugin/tool that you want to execute. If the plugin is not yet loaded, it will be loaded instantly.

              "The basic purpose is to keep only a small range of standard plugins (=> quicker start of SketchUp and uncluttered interface), but make it easy to load rarely used plugins when you need them. You don't have to bother anymore if a plugin is disabled/archived or not."

              You created a prototype. It uses an index file that contains a list of info.
              This is your primiss. I did tryed your plugin and its a qood ideal.

              There are several things your are worrying about:
              " 1) It should be at least techinically possible to load any existing plugin that is disabled"

              2)"But how to get the commands that should be executed, a proper name, icons, eventually keywords?" Well this is to much work for me?. I try to useing SUTool: a new way to manager your RB script but it dosn't load every thing. You have to double buffer everything "(since some plugins contain complex structures of classes and wrapper methods, not to speak of .rbs plugins)"
              SUTool:
              These were my ini files
              01file.txt
              02edit.txt
              03toolbars.txt
              04view.txt
              05camera.txt
              06draw.txt
              07tool.txt
              08plugins.txt
              09context.txt

              (Stage 1)
              Is there a better solution? yes window/preferences_shortcuts,a dummy key, with a macro.ank, it would give API access to all commands created with UI::Command,

              (Stage 2)
              pic_0042.jpg

              I will tell you how at My tips about running more than one sketchup
              http://forums.sketchucation.com/viewtopic.php?f=79&t=40254

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

                @jim said:

                @aerilius said:

                But can I get the proc from Objectspace? I didn't get it to work...

                Oh yeah. You can get UI::Command objects from ObjectSpace, but you can't get a handle to a Command's associated Proc.

                You can get Proc objects from ObjectSpace

                ObjectSpace.each_object(Proc) {|pr| puts pr }

                But there is no handy way to know which command a Proc is associated with other than the String representation (which is the filename and line number where the command is created.)

                So no "good" solution. I have asked Google for a method to access the Proc of a Command. That would make things sooo much simpler.

                I have a proof of concept that intercepts the creation of Command objects and make everything available. Even the procs. I hooked into menu and toolbars as well so I could traverse them in a tree structure. I was able to do a string search of the commands, much like the described concept of OP. But I haven't released it as it would need testing and a robust error handling.

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

                1 Reply Last reply Reply Quote 0
                • A Offline
                  Aerilius
                  last edited by

                  I had experimented with intercepting commands, but I found it too risky for me because I don't have enough Ruby experience. When there are two scripts intercepting the same methods, it would crash SketchUp.

                  Nice to see that this idea is becoming more common, it isn't really special. If only SketchUp made it's commands easierly accessible...
                  HUD.jpg
                  http://www.markshuttleworth.com/archives/939

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

                    One major problem: the menu_text is localized (or can be.)

                    We need a ruby_text attribute that is always English.

                    What I have been doing is attaching singleton methods for ruby_text to my individual command objects after instantiating them (to avoid changing the base class.)

                    It would be nice if extensions, menus and toolbars has this attribute also.

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • halroachH Offline
                      halroach
                      last edited by

                      Is this plugin still under development?
                      The menu works very nicely, finding all the right plugins I'm looking for. But it's not working yet, is it?

                      I've tried launchit plugin v1.4 and it just doesn't find all the plugins I have installed...

                      eagerly waiting! 😄

                      FlexTools - Super Quick Windows, Doors, Slats...

                      1 Reply Last reply Reply Quote 0
                      • A Offline
                        Aerilius
                        last edited by

                        LaunchUp has never been released as a finished version and it's currently paused until the SketchUp Ruby API adds the required methods (ie. not more than UI::Command.proc). There hasn't been a SketchUp major release for quite some time (over 2½ years) but is coming soon. I hope it contains finally some advances.

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          driven
                          last edited by

                          hi aerilius,

                          can Win32 get the 'menu items' by name and send 'click on name in menu' events?

                          I've got that working fully from 'osascript and in part from 'macRuby' in 'Ruby Console' so far, but curious if there's a PC equivalent.

                          john

                          learn from the mistakes of others, you may not live long enough to make them all yourself...

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

                            Should be possible with the Win32 API.

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

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              driven
                              last edited by

                              here's a 'mac' test in a Ui.messagebox, but it can work from a Toolbar button or a Webdialog, so LaunchUp can be populated with any/all of the available menu items, I can add a new 'plugin' then auto update the 'list' in use. I can harvest most images files grep-ing the menu name in it's host folder from the 'load paths' array.

                              if this type of 'thing' is possible with win32 API maybe someone wants to combine forces for a duel platform solution?

                               result = UI.messagebox "Do you want to Weld these edges?", MB_YESNO
                               if result == 6 # Yes
                                 runAppleScript=Thread.new{
                              `osascript <<EOF
                              activate application "Sketchup"
                              tell application "System Events"
                              	tell process "SketchUp"
                              		click menu item "Weld" of menu "Plugins" of menu bar 1
                              	end tell
                              end tell
                              EOF
                              `
                              }
                              runAppleScript.kill
                               end
                              

                              learn from the mistakes of others, you may not live long enough to make them all yourself...

                              1 Reply Last reply Reply Quote 0
                              • A Offline
                                Aerilius
                                last edited by

                                If your were interested in LaunchUp, don't miss that it is no an official plugin:
                                → LaunchUp – A Quick Launcher for SketchUp

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

                                Advertisement