Question about palettes
-
ok thanks TIG, it's going to be a full afternoon trying to get that in my head, but that example helps a lot!
but if i get this right, there is no way to have just one button to fully show or fully hide the palette..
in previous versions it was easier..
-
Yes there is.
You start the script running with a variable that persists across usages so to set it if the tools never been used yet...
When the user clicks the button the tool has these tests...
At the start@open
isnil
so use
` if @open==1 ### it WAS clicked ON earlier, so it's probably ONnow check if it's open and close it if it is.
'close code'
but if it's already been closed [manually?] do nothing but this...
@open=0
else ### it's either been clicked OFF, or it has not yet been clicked at allnow check if it's closed and open it if it is.
'open code'
but if it's already open do nothing but this...
@open=1
end`
-
wow...didn't know what i was asking...!
I shall study it veery slowly.. Thanks TIG - you basically wrote it yourself..
-
wow, this is terrible... just when i think i 'understand'...
this is the code:
def togz name='Scenes' if @open==1 ### it WAS clicked ON earlier, so it's probably ON toggleRollUp(name) if isRolledUp(name) ### now check if it's open and close it if it is. closeWindow(name) ### 'close code' ### but if it's already been closed [manually?] do nothing but this... @open=0 else ### it's either been clicked OFF, or it has not yet been clicked at all togglecloseWindow(name) if iscloseWindow(name) ### now check if it's closed and open it if it is. Sketchup.send_action 21354 ### 'open code' ### but if it's already open do nothing but this... @open=1 end end #def
and this is the error when i type togz into the ruby console...
Error: #<NoMethodError: undefined method `iscloseWindow' for main:Object>
C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/- - togz.rb:14
(eval):155i have placed both toggleWindows.rb and win32api.so in the plugins folder (and i saw there is a def called closeWindow in toggleWindows.rb)
-
I've added a 'windowIsVisible(name)' test to the toggleWindows code.toggleWindows.rb This code below does what you want...
require 'toggleWindows.rb' def toggleLayersWindow() if @toggle==1 if windowIsVisible('Layers') closeWindow('Layers') else Sketchup.send_action(21354) end @toggle=0 else if windowIsVisible('Layers') if not @toggle ### 1st go if isRolledUp('Layers') toggleRollUp('Layers') else closeWindow('Layers') end else closeWindow('Layers') end else Sketchup.send_action(21354) end @toggle=1 end#if end#def
-
Along with a
require 'toggleWindows.rb'
to ensure it's loaded before accessing the code. -
that's not fair TIG - you're hacking your own code!
i'll give it a spin..
ok folks, seriously what the heck have you got in those brains...i'm thinking of early retirement..
Thank You
-
Ain't no backing out now!
-
you must be joking, i'm going out for a drink to forget!
-
You'll be drinking binary
-
Note that TIG's current example works on English Sketchup only. It needs a bit of work to retrieve the localized window titles from the exe's resources, in order to work for all language locale editions.
-
that's true.. it works fine, but it greys out many context commands on starting SU...
-
How are you making the commands? - make one only attached to the toolbar.
The reason for the grey-outs is 'too many commands'.
It's possible to accidentally create a new command every time it's used... -
i went through most plugins commands, numbered them all differently (e.g. cmd1, cmd2, etc)
also got rid of some plugins - right now it works - but i'm keeping an eye...
many thanks again TIG... i owe you quite a few pints!
-
ok, updated version with better commands and icons. works fine on my pc
-
yes, maybe i'm better at it after a few guinness...
meantime here's the result - i don't have a mac so do not know whether it works there.
only thing is that upon reopening, the windows always dock at the bottom of the stack..
Cheers
Advertisement