Just wondering if someone could provide a basic example how to write script so that you can do Shift-Click to bring up a config window for the main script? For example, the config menu could have 2 tick boxes “item 1” and “item 2”. If you tick “item 1” in config menu, the main script will print out “item 1” when it runs, same with “item 2”. I tried to follow the Pick tool from pyRevit but the coding of that tool is quite advanced and I don’t really understand it. Thank you.
so after looking at the example, I’ve written a simple example script to just basically print “item 1” or “item 2” based on the selection in config menu. Here’s the script:
config.py
from pyrevit import forms
from pyrevit import script
my_config = script.get_config()
class FSCategoryItem(forms.TemplateListItem):
"""Wrapper class for frequently selected category list item"""
pass
def load_configs():
selection_config = my_config.get_option('selection_config',[])
return selection_config
def save_configs(selection_item):
my_config.selection_config = [x for x in selection_item]
script.save_config()
def config_menu():
prev_config = load_configs()
item_list = ["item 1", "item 2"]
selection_config = forms.SelectFromList.show([FSCategoryItem(x, checked = x in prev_config) for x in item_list], title = 'select',button_name = "Select Item", multiselect = True)
if selection_config:
save_configs(selection_config)
return selection_config
if __name__ == "__main__":
config_menu()
and here’s the main script script.py
import config
source_selection = config.load_configs()
if source_selection:
for item in source_selection:
print(item)
From the example from pyRevit tools, it seems like the config menu relies on the forms.SelectFromList in combination with [FSCategoryItem(x, checked = x in prev_config) for x in item_list] with FSCategoryItem is a class inherited from pyrevit TemplateListItem. Just wondering if it is a must to use SelectFromtList for config or this could be extended to other user interface like FlexForm from rpw too?