[Plugin]ContextMenuOptimizer v2.8 (menu gray-out issue fix)
-
Overview:
When you use context menu or each command of menu "Edit" any way (including via hot key), this launches all procedural objects initialized by the UI.add_context_menu_handler method.
As a rule, this procedural objects initialize new objects by Sketchup::Menu.add_item method and UI::Command objects.
UI::Command objects, unfortunately, cannot be deleted by GC.
Eventually the menu buffer overflows and all new UI::Command objects, and objects created by Sketchup::Menu.add_item method, stop working correctly.
And you can see context menu is gray .
Only restarting Sketchup will fix the issue.I think the solution to this is to redefine the methods UI::Command.new and Sketchup::Menu.add_item temporarily at the time of using the Edit menu option. The redefined methods filter their arguments and prevent the initialization of new UI::Command objects, and objects creating by Sketchup::Menu.add_item method, if any have already been initialized.
My solution was to create an universal buffer for UI::Command objects (UI::COMMANDS, Hash), where each object-command has its extra methods.
The overflow of the buffer doesn't occures, because we use the same set of the universal object-commands (UI::Command) in the process of work .
By default plugin runs automatically and
requires no user intervention in his work.
When using plugin is not required to overwrite previously
created scripts that use the context menu.The plugin control exercises in menu:
"File" -> "โข AT โข Utilites" -> "Context Menu Optimizer".
It includes 2 parameters:
1)on/off plugin run,
2)on/off display debug info in Sketchup Ruby Console.
INSTALLATION:
The ContextMenuOptimizer plugin works
for Sketchup versions 5, 6 and 7 (Free and Pro).
To install the ContextMenuOptimizer plugin, you should unzip
the file you downloaded (ContextMenuOptimizer.zip in principle)
into the Sketchup Plugins folder.
This operation should:
โข Copy one script file !!!ContextMenuOptimizer_loader.rb
to the Sketchup Plugins folder.
โข Create a sub-folder ArchTools, containing the main script files.IMPORTANT: Don't rename files!
-
That's might interesting.
But has anyone experienced any other than Fredo's old plugins to cause the greyouts? After updating his tools I've not experienced this issue any more.
-
@thomthom said:
That's might interesting.
But has anyone experienced any other than Fredo's old plugins to cause the greyouts? After updating his tools I've not experienced this issue any more.Not only Fredo's old plugins is cause the problem.
-
@thomthom said:
That's might interesting.
But has anyone experienced any other than Fredo's old plugins to cause the greyouts? After updating his tools I've not experienced this issue any more.
Yes, I had the greyouts after installing Fredo's new plugin. However, I had just about every plugin there was. So I removed all plugins, loaded only the one I really wanted. Tried to elimate all plugins that called the content menu if I could. I even removed the content menu selection from some plugins. And plugins that had a toolbar and also listed in the plugin or contents menu selections, I would remove these two choice and only use the toolbar.
So far I have not had the trouble happen. Note, that I don't have 1/2 the menu's that I had before.
Ken
-
Alex, this debug mode: can that help Ken work out which plugin greys out the menus?
-
@thomthom said:
Alex, this debug mode: can that help Ken work out which plugin greys out the menus?
Debugging is for informational purposes and shows the number of objects (Sketchup::Menu, UI::Command) available in the current object space.
Default debug info is off.
I think my plugin will solve the Ken's problem. -
thomthom, I am still having the problem after updating Fredo's plugins. I do have quite a large collection of plugins that I use so I have learned to live with the context menu gray-out by going to the selection menu under Edit (not sure what this menu is actually called - Edit context menu? - so see 1st screen shot).
Can go here instead of right-click context menu if it is grayed out
Alex, your plugin is installed properly and is runningAlex, I installed your plugin, it is running (see second screen shot) but I am still having the context menu gray-out issue, at least in part (see third screen shot). Most of the options I use such as "Explode" are grayed out.
Right-click context menu is still grayed out to some degreeI'll keep using the Edit menu for now. Just thought you might appreciate the feedback. Thank you for all the hard work! I hope this annoying problem goes away along with toolbar migration.
-
@alexmozg said:
@thomthom said:
Alex, this debug mode: can that help Ken work out which plugin greys out the menus?
Debugging is for informational purposes and shows the number of objects (Sketchup::Menu, UI::Command) available in the current object space.
Default debug info is off.
I think my plugin will solve the Ken's problem.Note: I haven't had the problem since I reload only the plugins I wish to use. I am no longer a plugin groupie. I am being careful, not to have multi plugins for the same purpose. So here is hoping I have solved my problem just by not being a plugin in hog.
Tom thanks for the help and Alex thanks for the plugin. If I have a re-occurrence of the problem, I know where I will head.
Ken
-
The menu buffer overflows anyway if the number of objects UI::Command becomes more then 500-600!
And unfortunately, the predefined context menu commands
(such as Explode, Hide, Erace etc.)
are not amenable to correction ,
but the commands of other plugins should always work .
craigbic
In your case, you can only limit the number of plugins which you use. -
@alexmozg said:
The menu buffer overflows anyway if the number of objects UI::Command becomes more then 500-600!
So it's not really the fixed 1000 that Google said?
-
@alexmozg said:
The menu buffer overflows anyway if the number of objects UI::Command becomes more then 500-600!
And unfortunately, the predefined context menu commands
(such as Explode, Hide, Erace etc.)
are not amenable to correction ,
but the commands of other plugins should always work .
craigbic
In your case, you can only limit the number of plugins which you use.Limit plugins? NEVER! Not a big deal - just an annoyance really. Thank you for the explanation and the plugin! Good work!
-
@thomthom said:
...
So it's not really the fixed 1000 that Google said?Maybe...
500-600 for Sketchup 5, I have been tested it. -
Thom, i'm quite sure the selection toys are causing the issue on my pc - so the google fix is not working after all
when i remove S.T. the menu does not grey out even after hours of working
-
That is very odd. I can not reproduce it. Nor does it have the code that Google said caused this.
How many plugins had you got installed? I wonder if one might run into this if one just has many menu items - Selection Toys has quite a few. Have you tried disabling some of the menu items?
-
thanks that's a good idea, might just be it...well hope so.. after all together there must be something like 500 or 600 plugins in there by now..
-
@cadfather said:
thanks that's a good idea, might just be it...well hope so.. after all together there must be something like 500 or 600 plugins in there by now..
Well - that might very likely be the cause. Google said their limit of Command objects where at about 1000 - if you ahve that many you might hit some limit even without some leak like Fredo's tools.What would be interesting is if you could install one more. (No worries no menus or anything )
Then open your Ruby Console and type instats
- see what it reports.
Then do some right clicks and see what it reports afterwards.
-
well, 600 was my very quick estimate of all the commands in the folder from didier's spray comps to su2kt
but the stats gives this: (cool thing) - UI:Command objects: 283 of 1000 (28.30%)
so i guess that's still not too greedy..
-
Does it increase during usage? After right-clicking for instance?
-
not for the moment - i think it needs more work-time - i'll put it through the paces this afternoon though.
to be continued..
-
Then it can't be the same issue, because you should see increase immediately. (However, you might get different results from what you right click on, Edge,Face,Group,Component.)
Advertisement