Here’s a method to control whether or not to run a hook script:
Create a .smartbutton bundle and have it create and toggle an envvar. Then in the hook files, check that same envvar using get_envvar.
"""Toggles No Plot functionality"""
from pyrevit import script
def __selfinit__(script_cmp, ui_button_cmp, __rvt__):
script.set_envvar('NPLTstate', True)
state = script.get_envvar('NPLTstate')
script.toggle_icon(state)
if __name__ == '__main__':
state = script.get_envvar('NPLTstate')
new_state = not state
script.set_envvar('NPLTstate', new_state)
script.toggle_icon(new_state)
And in the hook script, at the top:
from pyrevit import script
if not script.get_envvar('NPLTstate'):
script.exit()
The one issue I’m having is that the initial call to toggle_icon, in the selfinit function, does not seem to go through - the icon is not loaded this way. Are there any pyrevit methods to get the icon to load?
Another potential issue is that the script.get_envvar method is always set to True on startup. This is ok for now, but I am curious how one would go about initializing a more permanent envvar?
I’m hoping that someone will find this method of controlling hook scripts useful! This way you don’t need to set up your own eventhandlers